软件详细设计报告文档

第一篇:软件详细设计报告文档

       软件详细设计报告文档模板

       1.引言

       1.1 编写目的

       说明编写详细设计方案的主要目的。

       说明书编制的目的是说明一个软件系统各个层次中的每个程序(每个模块或子程序)和数据库系统的设计考虑,为程序员编码提供依据。

       如果一个软件系统比较简单,层次很少,本文件可以不单独编写,和概要设计说明书中不重复部分合并编写。

       方案重点是模块的执行流程和数据库系统详细设计的描述。

       1.2 背景

       应包含以下几个方面的内容: A.待开发软件系统名称;

       B.该系统基本概念,如该系统的类型、从属地位等; C.开发项目组名称。

       1.3 参考资料

       列出详细设计报告引用的文献或资料,资料的、标题、出版单位和出版日期等信息,必要时说明如何得到这些资料。

       1.4 术语定义及说明

       列出本文档中用到的可能会引起混淆的专门术语、定义和缩写词的原文。

       2.设计概述

       2.1 任务和目标

       说明详细设计的任务及详细设计所要达到的目标。1.1.1 需求概述

       对所开发软件的概要描述, 包括主要的业务需求、输入、输出、主要功能、性能等,尤其需要描述系统性能需求。1.1.2 运行环境概述

       对本系统所依赖于运行的硬件,包括操作系统、数据库系统、中间件、接口软件、可能的性能监控与分析等软件环境的描述,及配置要求。1.1.3 条件与限制

       详细描述系统所受的内部和外部条件的约束和限制说明。包括业务和技术方面的条件与限制以及进度、管理等方面的限制。1.1.4 详细设计方法和工具

       简要说明详细设计所采用的方法和使用的工具。如HIPO图方法、IDEF(I2DEF)方法、E-R图,数据流程图、业务流程图、选用的CASE工具等,尽量采用标准规范和辅助工具。

       3.系统详细需求分析

       主要对系统级的需求进行分析。首先应对需求分析提出的企业需求进一步确认,并对由于情况变化而带来的需求变化进行较为详细的分析。

       3.1 详细需求分析

       包括:

        详细功能需求分析  详细性能需求分析  详细资源需求分析

        详细系统运行环境及限制条件分析

       3.2 详细系统运行环境及限制条件分析接口需求分析

       包括:

        系统接口需求分析

        现有硬、软件资源接口需求分析  引进硬、软件资源接口需求分析

       4.总体方案确认

       着重解决系统总体结构确认及界面划分问题。

       4.1 系统总体结构确认

       对系统组成、逻辑结构及层次进行确认,对应用系统、支撑系统及各自实现的功能进行确认,细化集成设计及系统工作流程,特别要注意因软件的引进造成的系统本身结构和公司其他系统的结构变化。包括:

        系统组成、逻辑结构及层次确认  应用系统结构确认  支撑系统结构确认  系统集成确认  系统工作流程确认

       4.2

       系统详细界面划分

       1.1.5 应用系统与支撑系统的详细界面划分

       应用系统与支撑系统之间的界面包括系统主服务器与其他服务器的服务范围及访问方式,网络及数据库对应用系统的支撑方式,全局数据的管理与存取方式等。1.1.6 系统内部详细界面划分

       系统各功能之间的界面包括覆盖范围,模块间功能调用涉及到的系统模块及方法,全局数据格式,系统性能要求等。

       5.系统详细设计

       5.1 系统结构设计及子系统划分

       对系统的组成及逻辑结构进行设计前确认。

       划分系统功能模块或子系统(如果有或者有必要,特别是大型的软件系统)。

       5.2 系统功能模块详细设计

       按结构化设计方法,在系统功能逐层分解的基础上,对系统各功能模块或子系统进行设计。此为详细设计的主要部分之一。

       用层次图描述系统的总体结构、功能分解及各个模块之间的相互调用关系和信息交互,用IPO图或其他方法描述各模块完成的功能。以上建议采用HIPO图进行功能分解与模块描述,更高的要求建议采用IDEF0方法进行功能模型设计。

       详细设计应用系统的各个构成模块完成的功能及其相互之间的关系,用IPO或结构图描述各模块的组成结构、算法、模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系。

       每个模块的描述说明可参照以下格式: 模块编号: 模块名称: 输入: 处理: 算法描述: 输出:

       其中处理和算法描述部分主要采用伪码或具体的程序语言完成。对详细设计更高的要求建议用IDEF0图进行各功能模块的设计。

       如果对软件需进行二次开发(包括功能扩展、功能改造、用户界面改造等),则相应的设计工作应该设立子课题完成。

       5.3 系统界面详细设计

       系统界面说明应用系统软件的各种接口。整个系统的其他接口(如系统硬件接口、通讯接口等)在相应的部分说明。1.1.7 外部界面设计

       根据系统界面划分进行系统外部界面设计,对系统的所有外部接口(包括功能和数据接口)进行设计。1.1.8 内部界面设计

       设计系统内部各功能模块间的调用关系和数据接口。1.1.9 用户界面设计

       规定人机界面的内容、界面风格、调用方式等,包括所谓的表单设计、报表设计和用户需要的打印输出等设计。此部分内容可能比较多。

       6.数据库系统设计

       此数据库设计可单独成册,尤其对大型的数据库应用系统,即有一个单独的《数据库设计说明书》。

       6.1 6.1设计要求 6.2 6.2 信息模型设计

       确定系统信息的类型(实体或视图),确定系统信息实体的属性、关键字及实体之间的联系,详细描述数据库和结构设计,数据元素及属性定义,数据关系模式,数据约束和限制。

       6.3 数据库设计

       1.1.10

       设计依据

       说明数据被访问的频度和流量,最大数据存储量,数据增长量,存储时间等数据库设计依据。

       1.1.1

       1数据库种类及特点

       说明系统内应用的数据库种类、各自的特点、数量及如何实现互联,数据如何传递。1.1.1

       2数据库逻辑结构

       说明数据库概念模式向逻辑模式转换所采用的方法论及工具,完成数据库概念模式向逻辑模式的转换。详细列出所使用的数据结构中每个数据项、记录和文件的标识、定义、长度及它们之间的相互关系。此节内容为数据库设计的主要部分。1.1.1

       3物理结构设计

       列出所使用的数据结构中每个数据项的存储要求、访问方法、存取单位和存取物理关系等。建立系统程序员视图,包括:

        数据在内存中的安排,包括对索引区、缓冲区的设计;

        所使用的外存设备及外存空间的组织,包括索引区、数据块的组织与划分;  访问数据的方式方法。1.1.1

       4数据库安全

       说明数据的共享方式,如何保证数据的安全性及保密性。1.1.1

       5数据字典

       编写详细的数据字典。对数据库设计中涉及到的各种项目,如数据项、记录、系、文卷模式、子模式等一般要建立起数据字典,以说明它们的标识符、同义名及有关信息。

       7.信息编码设计

       7.1 代码结构设计

       确认信息分类编码总体方案,进行分类代码结构设计。

       7.2 代码编制

       按代码结构编制信息代码

第二篇:软件详细设计说明书

       详细设计说明书(Procedural Kesign Specification)

       一、引言

       1.编写目的(阐明编写详细设计说明书的目的,指是读者对象)2.项目背景(应包括项目的来源和主管部门等)

       3.定义(列出文档中用到的专门术语定义和缩写启的原意。)

       4.参考资料(列出这些资料的、标题、编号、发表日期、出版单位或资料来源,可包括:(1)项目的计划任务书,合同或批文;(2)项目开发计划;(3)需求规格说明书;(4)概要设计说明书;(5)测试计划(初稿);(6)文档所引用的其他资料、软件开发标准或规范。)

       二、总体设计 1.需求概述

       2.软件结构(如给出软件系统的结果图)

       三、程序描述(逐个模块给出以下的说明)1.功能 2.性能 3.输入项目 4.输出项目

       5.算法(模块所选用的算法)

       6.程序逻辑(详细描述模块实现的算法,可采用:(1)标准流程图(2)PDL语言(3)N-S图(4)PAD(5)判定表等描述算法的图表。)7.接口 8.存储分配 9.限制条件

       10.测试要点(给出测试的模块的主要测试要求)

第三篇:软件详细设计说明书 学生信息管理系统

       XXXX大学

       软件详细设计说明书

       项目名称: 学生信息管理系统

       年 级:

       专 业:

       班 级:

       学 号:

       姓 名: 指导教师:

       日期: 年 月 日

       目 录 引言......................................................................1 1.1编写目的.............................................................1 1.2 项目背景.............................................................1 1.3 定义.................................................................1 1.4 参考资料.............................................................1 2 总体设计...................................................................1 2.1 需求概述.............................................................1 2.2 软件结构.............................................................1 3 程序描述...................................................................1 3.1 下面对各模块的功能,性能,输入,输出进行具体描述.....................1 3.2 算法.................................................................6 3.3 程序逻辑.............................................................7 3.4 接口.................................................................7 3.5测试要点.............................................................7

       引言

       1.1编写目的

       软件详细设计说明书是对系统架构进行详细直观描述,从而完成详细设计,作为软件实现的基础。预期的读者为本项目开发人员和将来对本项目进行扩展和维护的人员。1.2 项目背景

       项目的委托单位: 主管部门:学校教务处

       该软件系统与其他系统的关系:与学生管理相关联 1.3 定义

       在该概要设计说明书中的专门术语有:总体设计、接口设计、数据结构设计、运行设计、出错设计,具体的概念与含义在文档后将会解释。

       1.4 参考资料

       《软件工程导论(第6版)》----张海藩,牟永敏 编著 出版社: 清华大学出版社 总体设计

       2.1 需求概述 2.2 软件结构

       1、总体结构

       2、用户管理模块结构

       3、学生档案管理模块结构

       4、成绩管理模块结构 程序描述

       3.1 下面对各模块的功能,性能,输入,输出进行具体描述

       1、登录模块

       ● 功能:接受用户登录请求,验证用户输入的用户名、密码和用户类型,转到管理页面。● 性能:对用户登录请求在1-2秒钟之内做出响应。

       ● 输入项目:用户名:字符串型

       密码:字符串型 ● 输出项目:合法:进入管理界面。

       非法:重新登陆。

       2、总体结构

       ● 功能:接收登陆模块传过来的用户名,验证用户名的类型。

       ● 性能:界面的状态栏显示:联系方式、登陆时间、当前操作用户名和用户类型。● 输入项目:用户名:字符串型。

       ● 输出项目:用户名:字符串型(在状态栏)

       用户类型:字符串型(在状态栏)

       登陆时间:字符串型(在状态栏)

       3、系统管理模块

       ● 功能:

       1、添加新的用户名、密码;

       2、修改任何用户(包括学生)密码。

       ● 性能:

       1、用户名、密码和密码确认和用户类型(单选按钮);

       2、旧密码,新密码和新密码确认。

       ● 输入项目:

       1、用户名、密码和密码确认和用户类型(单选按钮);

       2、旧密码,新密码和新密码确认。

       ● 输出项目:

       1、(对话框)添加成功,跳转到详细信息添加页面;

       2、(对话框)密码修改成功,请重新登陆;跳转到登陆页面。

       4、用户管理模块

       ● 功能:

       1、向数据库中添加新用户信息;

       2、用户信息的管理,包括:修改、删除、查询;

       3、查询用户信息,包括:精确查询、模糊查询。● 性能:

       1、没有添加新用户,不能添加用户信息;

       其它无特殊要求。

       ● 输入项目:

       1、用户名:字符型(新添加用户时传过来的,不能更改,本页也不能添

       加)

       姓名:文本型 所学专业:文本型

       性别:文本型 政治面貌:文本型 学历:文本型 身份证号:字符型

       职称:文本型 所在院系:文本型

       民族:文本型 电子邮箱:字符型

       学位:文本型 固定电话:字符型

       职位:文本型 移动电话:字符型

       备注:文本型 所教专业:文本型

       工作时间:日期型 教师资格证书号:数值型

       2、与1相同

       3、精确查找 用户名:文本型

       4、模糊查找

       姓名:文本型 所在院系:文本型

       性别:单选按钮

       ● 输出项目:合法:显示出用户信息管理页面 非法:重新添加、查询

       5、院系管理模块

       6、学生档案管理模块

       ● 功能:

       1、向数据库中添加学生信息;

       2、学生信息管理,包括:修改、删除、查询;

       3、学生信息查询,包括:精确查询、模糊查询。

       ● 性能:无特殊要求。

       ● 输入项目:

       1、学生档案添加

       姓名:文本型 初始密码:字符型

       学号:数值型(数据库自动增加)政治面貌:文本型 性别:文本型 出生日期:日期型

       民族:文本型 毕业院校:文本型

       邮编:数值型 家庭住址:文本型

       身份证号:字符型 入学时间:日期型

       固定电话:字符型 移动电话:字符型

       备注:文本型 所在班级:文本型

       2、学生档案管理

       与1相同

       3、精确查找

       学号:数值型

       4、模糊查找

       姓名:文本型 性别:单选按钮

       ● 输出项目:合法:显示出学生信息管理页面

       非法:重新添加、查询

       7、课程管理模块

       ● 功能:

       1、向数据库中添加基本课程信息;

       2、基本课程管理,包括:修改、删除、查询;

       3、向数据库中添加班级选课信息;

       4、班级选课管理,包括:修改、删除、查询;

       5、课程查询,包括:基本课程查询(精确查询和模糊查询)、班级选课查询(精 确查询和模糊查询)。● 性能:无特殊要求。

       ● 输入项目:1.1、基本课程设置

       基本课程编号ID:数值型 课程名称:文本型

       任课老师ID:文本型 学分:数值型

       课程类型:文本型 年级:文本型

       课程学期:日期型 专业ID:数值型

       院系ID:数值型 备注:文本型

       1.2、基本课程管理

       与1.1输入相同

       2.1、班级选课设置

       选课ID:数值型 课程名:文本型

       班级ID:数值型 班级名:文本型

       备注:文本型 任课老师ID(用户名):字符型 2.2、班级选课管理

       与2.1输入相同

       3.1、基本课程查询 3.1.1、精确查找

       基本课程ID:数值型

       3.1.2、模糊查找

       任课老师:文本型 课程名:文本型

       3.2、班级选课查询 3.2.1、精确查找

       基本课程ID:数值型

       3.2.2、模糊查找

       任课老师:文本型 课程名:文本型

       ● 输出项目:合法:显示出基本课程管理或班级选课管理界面 非法:重新添加、查询

       8、成绩管理模块

       ● 功能:

       1、向数据库中添加课程成绩信息;

       2、课程成绩管理,包括:修改、删除、查询;

       3、课程查询,包括:精确查询(按学号查找和按课程号查找)和模糊查询(按

       姓名查找和按课程名查找)。

       ● 性能: 无特殊要求。● 输入项目:

       1、学生成绩添加

       学号:数值型 课程ID:数值型

       分数:数值型 课程类型:文本型

       考试时间:日期型

       2、学生成绩管理

       与1相同

       3、学生成绩查询

       3.1、精确查找

       按学号查找 学号:数值型 按课程号查找 课程号ID:数值型

       3.2、模糊查找

       按姓名查询 姓名:文本型 性别:单选按钮选择

       按课程名查询 课程名:文本型

       ● 输出项目:合法:显示出课程成绩管理界面

       非法:重新添加、查询 3.2 算法

       登录模块:表示层接收数据传到业务逻辑层,业务逻辑层与数据库中的数据做比较。总体结构

       系统管理模块:

       1、表示层接收数据传到业务逻辑层,业务逻辑层将数据存入数据库中;

       2、表示层接收数据传到业务逻辑层,业务逻辑层将数据判断后存入数 据库中。

       用户管理模块:

       1、表示层接收数据传到业务逻辑层,业务逻辑层将数据存入数据库中;

       2、表示层接收数据传到业务逻辑层,业务逻辑层将数据的用户名与数

       据库中的比较后进行管理操作;

       3、表示层接收数据传到业务逻辑层,业务逻辑层按要去进行数据查询。

       院系管理模块

       学生档案管理模块:

       1、表示层接收数据传到业务逻辑层,业务逻辑层将数据存入数据

       库中;

       2、表示层接收数据传到业务逻辑层,业务逻辑层将数据的学号与

       数据库中的比较后进行管理操作;

       3、表示层接收数据传到业务逻辑层,业务逻辑层按要去进行数据

       查询。

       课程管理模块:

       1、表示层接收数据传到业务逻辑层,业务逻辑层将数据存入数据库中;

       2、表示层接收数据传到业务逻辑层,业务逻辑层将数据的课程ID与数

       据库中的比较后进行管理操作;

       3、表示层接收数据传到业务逻辑层,业务逻辑层按要去进行数据查询。

       成绩管理模块:

       1、表示层接收数据传到业务逻辑层,业务逻辑层将数据存入数据库中;

       2、表示层接收数据传到业务逻辑层,业务逻辑层将数据的学号与数据 库中的比较后进行管理操作;

       3、表示层接收数据传到业务逻辑层,业务逻辑层按要去进行数据查询。3.3 程序逻辑

       登录模块

       总体结构

       系统管理模块 用户管理模块 院系管理模块

       学生档案管理模块 课程管理模块

       成绩管理模块 3.4 接口

       ● 存储分配

       ● 限制条件

       1、软件资源:Window xp操作系统或更高以上操作系统, VS.net编程软件和SQL数据开发维护软件。

       2、硬件资源:具有VS.net应用软件计算机三到五台,具有SQL应用软件运行服务器一台。3.5测试要点

       测试工件为四个阶段:单元测试、组装测试、确认测试、系统测试。单元测试:采用白盒法和黑盒法相结合的方法,对于逻辑结构复杂的模块采用白盒法,对于以输入、输出为主的模块采用黑盒法测试,以提高测试的效率。

       组装测试:自底向上的增式测试。

       确认测试:由用户参与按需求规格说明书验收。系统测试:采用人工测试方法。

       (1)系统环境模块测试。为了检测系统环境模块,数据连接是否正确,数据能否正确,并进行仔细核对。

       (2)基本信息模块测试。因为基本信息模块是本系统的一个重要模块,本模块能否正确运行关系到系统设计成败的关键,所以有必要专门对这个之模块进行严格的测试,以弥补设计过程中的不足,及早发现和修改问题。

       (3)查询模块测试。因为所有的数据库管理软件设计的目的之一都是为了人们提供快捷方便的数据查询功能,查询设计的是否合理和正确是系统的又一关键之所在。

第四篇:线路板设计软件(PCB设计软件)详细综述

       线路板设计软件(PCB设计软件)详细综述

       随着电子技术的高速发展,对电子产品的要求越来越高,功能越来越多,虽然蕊片的集成度越来越高,但是,对于线路板的设计要求,也是越来越高的.线路板设计,也叫PCB设计,因为线路板在英文的全称为Printed circuit board,简写为PCB,所以线路板设计也叫PCB设计;线路板设计,从开始的手工绘制到现在越大规模元件库,、强大自动布局布线等功能,越来越方便我们工程师进行线路板设计工作。

       一名合格的电子工程师,从事PCB设计工作,必须掌握一种以上的线路板设计软件.我们一直致力于PCB软件的教学工作,努力为各位准备进入电子行业的人员提供各种线路板设计软件的教学资料,现在我们推出了PCB软件的视频教程,包括CAM350视频教程以及Protel 99se视频教程两大系列。

       线路板设计工作的开展,是一项十分漫长的工作,因为,我们在进行线路板设计时,必需选择一种合适自己的线路板设计工作,我们PCB资源网的这一篇文章,将给大家介绍线路板设计的工具,在大家选择的时候,看哪一种适合自己,当然,在自己日常的使用当中,对不同的工作任务,选择不同不同的线路板设计软件,是很有必要的,无论哪一种线路板设计软件,都不是尽善尽美的,关健是大家找到一种合作自己的工具,能很快、很方便的完成自己的线路板设计工作。

       线路板的设计,具体的可以分为几个部分的,即原理图设计、PCB设计、电路模拟仿真、CAM工程软件、抄板软件等。在本文当中,我们主要讲的线路板设计软件,指的是原理图设计和PCB设计这两部分。

       线路板设计软件,一般都包含了原理图设计和PCB设计两大模块,主流强大的线路板设计软件,甚至都包括以上的模块了,现在主流的线路板设计软件分别是Protel、OrCAD、Viewlogic、PowerPCB、Cadence PSD、MentorGraphices的Expedition PCB、Zuken CadStart、Winboard/Windraft/Ivex-SPICE、PCB Studio、TANGO、PCBWizard(与LiveWire配套的PCB制作软件包)、ultiBOARD7(与multiSIM2022配套的PCB制作软件包)等等。

       Protel软件在我国应用最为广泛,但是,目前应用pads的用户也在不断的增多,下边分别介绍这两个线路板设计软件Altium Protel 系列 Protel是PROTEL(现为Altium)公司在20世纪80年代末推出的线路板设计软件,从最初的Protel fo DXS,再升级为Protel for Windows,然后在1998年,推出protel98,在1999年推出了划时代的protel 99及其升级版protel 99se,目前,使用Protel 99se进行PCB设计工作的人员,数量还相当巨大,protel 99se对线路板设计行业的贡献相当巨大.进入21世纪,autium公司也顺应发展,推出了DXP,DXP2022等版本,在2022年,altium推出了protel的最新版本Altium Designer 6.0,即目前的最新版本,版本号为Altium Designer 6.7.

第五篇:详细设计文档

       详细设计文档

       文档编号 V1.0 版本 密级

       研发生产中心 项目名称 报表审批发布功能 项目来源

       报表审批发布功能 详细设计说明书

       2022-03-26 编 写: 范屹 日 期: 检 查: 日 期: 审 核: 日 期: 批 准: 日 期: 版权所有 不得复制 文档变更记录

       序号 变更( /-)说明 版本号 日期 批准 1 新建文档 范屹 V1.0 2022-03-26 2 目 录 1.引言..............................................................................................................................................4 1.1 编写目的和范围................................................................................................................4 1.2 术语表................................................................................................................................4 1.3 使用的文字处理和绘图工具............................................................................................4 1.4 定义....................................................................................................................................4 1.5 BI系统总体架构(基于已有的BI系统上进行开发)..................................................4 2.模块设计......................................................................................................................................6 2.1 用例图................................................................................................................................6 2.2 功能设计说明....................................................................................................................8 3.数据库设计................................................................................................................................30......................................................................................................30 3.1 表................................3.2 视图..................................................................................................................................32 4.系统出错处理............................................................................................................................34 1.引言

       1.1 编写目的和范围

       企业内部的各类报表指标为是需要上报给上级领导进行查看,企业的掌舵者对企业将来发展的决策都是根据这些报表指标来进行的,尤其是企业内部的财务和资金数据更不能有一丝一毫的偏差。因此这些指标数据如果发生错误,将会对企业将来的发展造成很大影响,所

       以对于此类数据,需要通过层层审批、确认正确后才能进行展示。本详细设计说明书编写的目的是说明程序模块的设计考虑,包括程序描述、输入/输出、算法和流程逻辑等,为软件编程和系统维护提供基础。本说明书的预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。1.2 术语表

       序号 术语或缩略语 说明性定义 1 DW 数据仓库(Data Warehouse)2 BI 商业智能(Business Intelligence)1.3 使用的文字处理和绘图工具 文字处理软件:WPS Office 2022 绘图工具:Visio 1.4 定义

       AJAX:AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并

       Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开非缩写词,而是由

       发技术。

       1.5 BI系统总体架构(个人对BI系统理解)

       2.模块设计 2.1 用例图

       2.2 报表指标管理处理流程图

       2.3 审核操作处理流程图

       2.4 功能设计说明 用例名称:查看报表模块 用例标识号:101 参与者:操作人员 简要说明: 操作人员在相关主题树状菜单中选择需要查看的报表 前置条件: 操作人员已经成功登录M1BI系统。基本事件流: 1(操作人员鼠标点击某主题树形菜单中的报表

       2(如果报表审核能过,则可以正常显示

       3(如果报表未能被审核能过,则不会显示报表,且显示提示信息

       4(用例终止 其他事件流A1: 异常事件流: 后置条件: 操作人员可以查看所需要的报表 主要程序代码清单: 清单1:是否有特权可以访问报表

       private boolean isExtraPrivilege(TreeNode node,TDmGyUser User)throws Exception{ //获取报表负责人所在的单位 因为不通过报表数据的维度来看这个问题而是通过报表对象来看这个问题

       String gnDm = this.pzgl.getReportUserOrg(node.getNodeid());//取出当前登录用户所在的组织和节点信息

       UserOrgMapping mapping = this.pzgl.getOrgMappingByUser(User.getMc());if(mapping!= null){ //如果当前 的登录用户是报表负责人的上级,则也可以 查看此报表 if(isMyBoss(mapping.getGnDm(),gnDm)){ return true;}else{ //如果当前查看用户(或者 是登录用户)已经被授过权了,则也能查看些报表 List matchUsers = this.pzgl.getCanViewThisReportUsers(node.getNodeid());if(matchUsers.contains(User.getMc())){ return true;}else{ return false;} } }else{ return false;} } 清单2:判断是否能显示报

       public boolean canDisplayReport(TreeNode node)throws Exception{ int count = 0;//判断当前报表是下属子公司 是否都 已经审核发布完成 count = this.pzgl.countNotPubAudit(node.getNodeid());if(count > 0){ return false;}else{ //判断当前报表是否存在一个指标,此指标也同时存在于其它未发布的报表中的

       count = this.pzgl.countNotPubWithIndex(node.getNodeid());if(count > 0){ return false;}else{ //判断是否当前报表中的指标是否都被审核过了

       count = this.pzgl.countReportNotAudit(node.getNodeid());if(count > 0){ return false;}else{ //判断当前报表中是否还有没有审核通过的指标

       count = this.pzgl.countReportIndexNotAudit(node.getNodeid());if(count > 0){ return false;}else{ return true;} } } } } 清单3:通过回逆的方法,判断当前登录用户是不是报表创建者的组织的上级 如果是就返回true,如果不是就返回false public boolean isMyBoss(String my,String comparator)throws Exception{ OrgInfo info = this.pzgl.getOrgInfo(comparator);if(my.trim().equals(info.getSjgnDm().trim())){ return true;}else{ if(“0”.equals(info.getSjgnDm().trim())){ return false;}else{ return isMyBoss(my,info.getSjgnDm());} } } 用例名称:报表展现页面审核操作 用例标识号:102 参与者:操作人员 简要说明: 在报表展现页面内提供页面的审核操作

       由于目前存在上级公司可以查看下级公司的未审核通过的报表,或者授过权的用户也可以直接查看未经审核的报表。

       前置条件: 操作人员已经成功登录M1BI系统。

       查看的报表,报表本身及内部指标必须经过审核

       如果未能通过审核,当且仅当登录用户必须属于上级公司人员或者已授权用户才能正常访问报表

       基本事件流: 1(如果是已经发布的报表,可以点击报表顶部的反发布按钮

       2(点击“反发布”按钮后,则报表进入待审核状态,则报表顶部会出现当然的报表状态,以及“审核”,“打回”二个操作按钮

       3(当点击“审核”操作按钮,则报表状态变更为已审核,则会出现“发布”及“反审核”操作按钮

       4(点击“反审核”后,报表状态变更为待审核状态,页面可参照第2步骤

       5、点击“发布”按钮后,报表状态变更为发布状态,页面可参照第1步骤

       6、接第2步骤,如果点击“打回”操作按钮,则报表状态变更为未审核状态,页面会出现“审核”操作按钮

       其他事件流A1: 状态变更图:

       后置条件: 如果进行报表展现页面审核操作后

       如果报表状态为发布,则操作人员可以正常访问报表

       如果未能通过审核,当且仅当登录用户必须属于上级公司人员或者已授权用户才能查看报表,反之不能正常访问报表 主要程序代码清单: 清单1:AJAX调用的js方法,处理页面展现时的审核操作 function handlerAudit(userid,nodeid,operation){ //alert(operation);var returnValue = xmlhttpsend(“${appPath}/changeAuditStatus.action”,“&NodeID=” nodeid “&operation=” operation);var str = “";var buttonStr = ”“;if(returnValue!=null && returnValue!=”“){ if(returnValue == ”1“){ str = ”未审批“;buttonStr = ”

       onclick=“javascript:handlerAudit('” userid “','” nodeid “','audit');” />“;}else if(returnValue == ”2“){ str = ”待审批“;buttonStr = ”

       onclick=“javascript:handlerAudit('” userid “','” nodeid “','tbd');” />“;buttonStr = ”

       onclick=“javascript:handlerAudit('” userid “','” nodeid “','audit');” />“;}else if(returnValue == ”3“){ str = ”已审批“;buttonStr = ”

       onclick=“javascript:handlerAudit('” userid “','” nodeid “','publish');” />“;buttonStr = ”

       核 onclick=“javascript:handlerAudit('” userid “','” nodeid “','reverseAudit');” />“;}else if(returnValue == ”4“){ str = ”已发布“;buttonStr = ”

       布 onclick=“javascript:handlerAudit('” userid “','” nodeid “','reversePublish');” />“;}else{ str = ”审批 操作有误“;} document.getElementById(”ajaxHandlerResult“).innerHTML = str;document.getElementById(”ajaxTakeIn“).innerHTML = buttonStr;} 清单2:报表审核状态的枚举类 public enum ReportAuditStatus { NOAUDIT(”1“),//未审核 WAITAUDIT(”2“),//待审核 AUDITED(”3“),//审核过 PUBLISHED(”4“);//发布 private String value;private ReportAuditStatus(String value){ this.value = value;} public String getValue(){ return value;} } 用例名称:报表数据组织检索(审核管理)用例标识号:103 参与者:操作人员 简要说明: 每个报表下面存在着多个不同的数据组织,我们需要根据状态及数据组织名称(也就是公司

       名称)进行检查 前置条件: 操作人员已经成功登录M1BI系统,且必须有审核管理权限 基本事件流: 1(点击“系统管理”下面的“审核管理”菜单项

       2(然后选择右边的树状菜单项中的具体报表

       3(在右边的查询页面,选则过滤条件,然后点击查询按钮,然后会出现查询结果。查询字段

       中会出现“审批公司”,“状态”信息项以及操作铵钮s

       4(用例终止 其他事件流A1: 异常事件流: 后置条件: 操作人员可以查看所需要的报表数据组织 主要程序代码清单: 清单1:审核管理页面查询

       public String shglQuery()throws Exception{ //公共属性 start ActionContext ctx = ActionContext.getContext();HttpServletRequest request =(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpSession session = request.getSession();TDmGyUser users =(TDmGyUser)session.getAttribute(USER);HttpServletResponse response =(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);//end //审核状态 String status=request.getParameter(”status“);//报表中文名称

       String Text=request.getParameter(”Text“);//审核公司名称

       String company=request.getParameter(”company“);//报表节点ID String NodeID=request.getParameter(”NodeID“);//如果报表节点ID不存在,则直接返回 if(StringUtils.isBlank(NodeID)){ return ”“;} List list = pzgl.getAuditUnit(NodeID, status, company);if(list!= null &&!list.isEmpty()){ UserOrgMapping mapping = this.pzgl.getOrgMappingByUser(users.getMc());for(int index=0;index

       集团数据当前状态为未审核。

       2(如果点击通过按钮后,则页面相应变更,而且查询结果会聚集到物产集团数据上,方便操

       作人员查看

       3(如果点击发布操作按钮,则页面变更为

       4(具体操作可以参照用例202.5、用例结束 其他事件流A1: 异常事件流: 后置条件: 主要程序代码清单: 清单1:是否有特权可以访问报表

       public void getAjaxInfo()throws Exception{ //公共属性 start ActionContext ctx = ActionContext.getContext();HttpServletRequest request =(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpServletResponse response =(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);//end String appPath=(String)request.getSession().getAttribute(”appPath“);if(appPath==null){ appPath=”/M1BI“;} response.setCharacterEncoding(”utf-8“);response.setContentType(”text/xml“);response.setHeader(”Cache-Control“, ”no-cache“);TDmGyUser User=(TDmGyUser)request.getSession().getAttribute(”USER“);String userid=User.getMc();//获取USERID PrintWriter out = null;String nodeId = request.getParameter(”NodeID“);try { UserOrgMapping mapping = this.pzgl.getOrgMappingByUser(userid);StringBuffer sb = new StringBuffer(”“);String status = this.pzgl.getOrgCurrentAuditStatus(mapping.getOrgMc(), nodeId);if(ReportAuditStatus.NOAUDIT.getValue().equals(status)){ sb.append(”“);}else if(ReportAuditStatus.WAITAUDIT.getValue().equals(status)){ sb.append(”“);sb.append(”“);}else if(ReportAuditStatus.AUDITED.getValue().equals(status)){ sb.append(”“);sb.append(”

       onclick=“javascript:handlerAudit('” userid “','” nodeId “','reverseAudit');” />“);}else if(ReportAuditStatus.PUBLISHED.getValue().equals(status)){ sb.append(”

       onclick=“javascript:handlerAudit('” userid “','” nodeId “','reversePublish');” />“);}else{ sb.append(”“);} out = response.getWriter();out.write(sb.toString());out.close();} catch(Exception e){ LogWritter.sysDebug(e.getMessage());} } 用例名称:查询报表指标 用例标识号:105 参与者:操作人员 简要说明: 操作人员可以查看相关报表的所包含指标 前置条件: 操作人员已经成功登录M1BI系统,且拥有指标管理的权限 基本事件流: 1(操作人员鼠标点击系统管理下面的指标管理

       2(然后选择右边的树状菜单项中的具体报表

       3(然后就会显示此报表所包含指标

       4(用例终止 其他事件流A1: 异常事件流: 后置条件: 操作人员可以从指标字典中引用指标,并审核指标状态 用例名称:报表指标引用指标设置 用例标识号:106 参与者:操作人员 简要说明: 操作人员在指标管理页面中引用指标字典中的指标。并对报表中的指标进行审核。

       前置条件: 操作人员已经成功登录M1BI系统,且有指标管理的权限 基本事件流: 1(接用例205,点击指标引用操作的修改按钮

       2(报表选择窗口中,操作人员可以在输入框中进行指标名称的模糊查询。

       3(选择你所需要的指标项后,点击选择按钮,引用指标就显示刚刚选择的指标了

       4(如果指标项没有被审核通过,则会显示未通过审核,并能进行审核操作

       5(如果报表其中有没有审核通过的指标,则报表是不能被正常访问,操作人员可以点击审核

       按钮来审核此指标

       5(用例结束 其他事件流A1: 异常事件流: 后置条件: 主要程序代码清单: 清单1:报表指标管理方法

       public void indexManage()throws Exception{ ActionContext ctx = ActionContext.getContext();HttpServletRequest request =(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpServletResponse response =(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);//end String appPath=(String)request.getSession().getAttribute(”appPath“);if(appPath==null){ appPath=”/M1BI“;} response.setCharacterEncoding(”utf-8“);response.setContentType(”text/xml“);response.setHeader(”Cache-Control“, ”no-cache“);TDmGyUser User=(TDmGyUser)request.getSession().getAttribute(”USER“);String userid=User.getMc();//获取USERID PrintWriter out = null;String likeStr = request.getParameter(”likeStr“);StringBuffer sb = new StringBuffer(”“);try { List list = this.pzgl.queryReportIndex(likeStr);if(list!= null &&!list.isEmpty()){ for(ReportIndex index : list){ sb.append(”“ index.getDescription() ”
“);} sb.append(”

“);} } catch(Exception e){ LogWritter.sysDebug(e.getMessage());} out = response.getWriter();out.write(sb.toString());out.close();} 清单2:AJAX实现的,指标审核页面生成方法 public void insertIndexHTML()throws Exception{ ActionContext ctx = ActionContext.getContext();HttpServletRequest request =(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpServletResponse response =(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);//end String appPath=(String)request.getSession().getAttribute(”appPath“);if(appPath==null){ appPath=”/M1BI“;} response.setCharacterEncoding(”utf-8“);response.setContentType(”text/xml“);response.setHeader(”Cache-Control“, ”no-cache“);TDmGyUser User=(TDmGyUser)request.getSession().getAttribute(”USER“);String userid=User.getMc();//获取USERID PrintWriter out = null;String NodeID = request.getParameter(”NodeID“);StringBuffer sb = new StringBuffer(”“);try { List list = this.pzgl.queryReportIndexByNodeId(NodeID);if(list!= null &&!list.isEmpty()){ sb.append(”“);sb.append(”指标代码指标详细描述引用指标指标引

       用操作状态“);int ii = 0;for(ReportIndex index : list){ sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);String str = index.getRefIndexDesc()==null ? ”“ : index.getRefIndexDesc();sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);sb.append(”“);if(StringUtils.isBlank(index.getStatus())|| ”1“.equals(index.getStatus())){ sb.append(”“);}else{ sb.append(”“);} sb.append(”“);sb.append(”“);ii ;} sb.append(”");} } catch(Exception e){ LogWritter.sysDebug(e.getMessage());} out = response.getWriter();out.write(sb.toString());out.close();} 3.数据库设计 3.1 表

       T_XT_REPORT_JG 数据表名称 中文名 报表机构数据审核表

       RPT_DM 关键字段 索引字段 设计者 范屹 简要说明 描述报表中机构数据审核情况

       表关联

       字段名称 中文名 类型 长度 允许null 说明 报表的功能代RPT_DM 报表代码 字符型 码

       JG 机构名称 字符型 报表机构名称

       机构数据审核机构数据审核STATUS 字符型 null 状态 状态 JG_DM 机构代码 字符型 null 报表机构代码 T_XT_REPORT_GRANT 数据表名称 中文名 报表授权表

       NODEID 关键字段 索引字段 设计者 范屹 简要说明 描述报表查看权限被授于相关人员

       表关联

       字段名称 中文名 类型 长度 允许null 说明 NODEID 节点标识 字符型 报表节点功能id 被授权查看此USERMC 人员名称 字符型 报表的用户名 称

       T_XT_REPORT_INDEX 数据表名称 中文名 报表指标表

       RPT_DM 关键字段 索引字段 设计者 范屹 简要说明 描述报表中包含了哪些商业指标

       表关联

       字段名称 中文名 类型 长度 允许null 说明 报表的功能代RPT_DM 报表代码 字符型 码

       报表的指标代IMDEX_DM 指标代码 字符型

       码 INDEX_DESC 指标描述 字符型 null 指标描述 REF_RPT 指标状态 字符型 null 指标审核状态

       报表的指标字REF_INDEX 外部引用指标 字符型 null 典引用外码

       REF_INDEX_DESC 外部指标描述 字符型 null 外部指标描述 T_XT_REPORT_CREATOR 数据表名称 中文名 报表创建人关系表

       NODEID 关键字段 索引字段 设计者 范屹 简要说明 提供报表与创建人(归属者)的关系维护

       表关联

       字段名称 中文名 类型 长度 允许null 说明 NODEID 节点标识 字符型 报表节点功能id 报表所属人或CREATOR 创建人 字符型 者报表创建人 3.2 视图

       T_USER_ORG_MAPPING 数据表名称 中文名 人员组织对应表 USER_ID 关键字段 索引字段 设计者 简要说明 描述人员与组织的一一对应关系 表关联

       字段名称 中文名 类型 长度 允许null 说明 USER_ID 用户标识 字符型 用户标识 USER_MC 用户名称 字符型 用户名称 USER_NAME 用户姓名 字符型 用户姓名 JS_DM 角色代码 字符型 角色代码 JS_MC 角色名称 字符型 角色名称 GN_DM 功能代码 字符型 功能代码 ORG_MC 组织名称 字符型 组织名称 ORG_ID 组织标识 字符型 组织标识

       CODETYPE 代码类型 字符型 代码类型 T_USER_ORG_MAPPING视图代码 CREATE OR REPLACE VIEW T_USER_ORG_MAPPING(user_id, user_mc, user_name, js_dm, js_mc, gn_dm, org_mc, org_id, codetype)AS SELECT F, G, H, D, E, A, B, O, CT FROM(SELECT DISTINCT T1.GN_DM A, T1.MC B, T1.SJGN_DM C, T1.CODETYPE CT, T1.ORGID O, T3.JS_DM D, T3.MC E, T6.USER_DM F, T6.MC G, T6.USER_NAME H FROM T_XT_GNS T1, T_XT_JS_GNS T2, T_XT_JS T3, T_XT_USER_JGGW T5, T_DM_GY_USER T6, T_XT_JS_GW T7 WHERE T1.GN_DM = T2.GN_DM AND T2.JS_DM = T3.JS_DM AND T1.CODETYPE = '1'--以人力树为模板--AND T1.CODETYPE!= '0'--考虑多组织结构树情况 AND T3.JSLX!= '0'--查找数据级角色 AND T7.JS_DM = T2.JS_DM AND T7.JS_DM = T3.JS_DM AND T7.GW_DM = T5.GW_DM AND T5.SWRY_DM = T6.USER_DM)A1 WHERE NOT EXISTS(SELECT 1 FROM(SELECT DISTINCT T1.GN_DM, T1.MC, T1.SJGN_DM, T3.JS_DM, T3.MC, T6.USER_DM, T6.MC, T6.USER_NAME FROM T_XT_GNS T1, T_XT_JS_GNS T2, T_XT_JS T3, T_XT_USER_JGGW T5, T_DM_GY_USER T6, T_XT_JS_GW T7 WHERE T1.GN_DM = T2.GN_DM AND T2.JS_DM = T3.JS_DM AND T1.CODETYPE = '1'--以人力树为模板--AND T1.CODETYPE!='0'--考虑多组织结构树情况 AND T3.JSLX!= '0'--查找数据级角色 AND T7.JS_DM = T2.JS_DM AND T7.JS_DM = T3.JS_DM AND T7.GW_DM = T5.GW_DM AND T5.SWRY_DM = T6.USER_DM)A2 WHERE A2.GN_DM = A1.C AND A2.USER_DM = A1.F)UNION SELECT 'administrator','administrator','BOE管理员','2891','系统管理员-数据角色 ','51000034','物产集团','10000000','1' FROM DUAL 4.系统出错处理

       通过log4j,进行错误日志输出 配置代码如下: log4j.rootLogger=info, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c]message log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c]-%m%n 5.与原有需求的区别 需求 原有需求 目前实现 原因 开发工期短,如有实

       现报表数据层面上的操作对象 报表数据及指标 报表及指标 操作需要重构系统,开发工作量极大 由于目前实现的部门 在不同的主题间是相报表查看权限是否同需要在不同的主题间只在驾驶舱中实现审通的,所以只需求实主题 对报表进行审核查看 核查看 现一个主题就可以说

       明问题 报表查看权限是否同需求区别组织是否为没有引入是否为上市开发工作量的问题 上市公司 上市公司 公司这个概念