对功能的一般性规定武汉理工大学.docx
- 文档编号:8245689
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:22
- 大小:1.13MB
对功能的一般性规定武汉理工大学.docx
《对功能的一般性规定武汉理工大学.docx》由会员分享,可在线阅读,更多相关《对功能的一般性规定武汉理工大学.docx(22页珍藏版)》请在冰豆网上搜索。
对功能的一般性规定武汉理工大学
数字化企业模拟管理系统开发
系统开发标准
报告书
项目完成单位:
管理学院
项目负责人:
刘勇军
完成日期:
2016-10-10
武汉理工大学教务处
数字化企业模拟管理系统的开发标准
1.需求分析报告编写规范
1.1引言
目的
说明编写这份报告的目的,指出预期的读者。
背景
指出待开发的软件系统的名称;行业情况;本项目的任务提出者、开发者、用户;该软件系统同其他系统或其他机构的基本的相互来往关系。
参考资料
列出编写本报告时参考的文件(如经核准的计划任务书或合同、上级机关的批文等)、资料、技术标准,以及他们的作者、标题、编号、发布日期和出版单位。
编号
资料名称
简介
作者
日期
出版单位
列出编写本报告时查阅的Intenet上杂志、专业著作、技术标准以及他们的网址。
网点
简介
术语
列出本报告中用到的专门术语的定义。
1.2任务概述
目标
叙述该项软件开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件开发的背景材料。
解释被开发软件与其他有关软件之间的关系。
如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。
如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中的其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。
系统(或用户)的特点
如果是产品开发,应列出本软件的特点,与老版本软件(如果有的话)的不同之处,与市场上同类软件(如果有的话)的比较。
说明本软件预期使用频度;
如果是针对合同开发,则应列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件预期使用频度。
这些是软件设计工作的重要约束。
假定和约束
列出进行本软件开发工作的假定和约束,例如经费限制、开发期限等。
1.3需求规定
软件功能说明
列出本系统中所有软件功能子系统和功能。
如果子系统比较大,每个子系统分别编写软件功能规格说明书,在本处列出编号和分册名称。
对功能的一般性规定
本处仅列出对软件系统的所有功能(或一部分)的共同要求,如要求界面格式统一,统一的错误声音提示,要求有在线帮助等。
对性能的一般性规定
对数据精度、响应时间的要求。
本处仅列出对软件系统的所有功能(或一部分)的共同要求,针对某一功能的专门性能要求应列在该功能规格说明中。
其他专门要求
视具体情况,列出不在本规范规定中的需求,如对数据库的要求,多平台特性要求,操作特性要求,场合适应性要求等对一具体软件系统的所有功能(或一部分)的共同要求,针对某一功能的专门要求应列在该功能说明中。
对安全性的要求
指出系统对使用权限的管理要求(使用权限分为几级、是否与部门权力体系对应等)、信息加密、信息认证(确定穿过系统或网络的信息没有被修改)方面的要求。
尚需解决的问题
以列表的形式列出在需求分析阶段必须解决但尚未解决的问题
1.4附录
需求分析过程中会产生各种记录如调查表格、业务系统单据等。
记录或报告的存档编号和名称填写在下表中。
其中类别是记录的分类,一般有业务系统说明书、业务系统数据说明书、业务系统调查表、原始数据单据、业务系统参考资料。
编号
名称
类别
2.数据库设计规范
2.1设计原则
根据对一般业务系统的分析,将数据库和程序系统统一进行整体描述,展示数据库的表之间以及与程序模块间的关系。
数据表和程序模块的分类
根据“处理特点”,将数据表和程序模块进行分类如下:
数据表分类:
业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结算数据表、决策数据表。
程序模块分类:
初始化、业务处理、完整性检测与修正、结算处理、统计处理。
数据表分类说明
业务数据表:
记录业务发生的过程和结果。
如,合同、出仓单、申请单、凭证。
基本编码表:
描述业务实体的基本信息和编码。
如,产品、客户、供应商、雇员。
辅助编码表:
描述属性的列表值。
如,合同类型、职称、民族、付款方式。
系统信息表:
存放与系统操作、业务控制有关的参数。
如,用户信息、权限、用户配置信息、成本核算方式。
累计数据表:
存放业务的当前值和累计值。
如,当前库存、当前存款、累计销售、累计支出、应收账款。
结算数据表:
存放各个时期末的结存数。
如,月末库存、月末银行存款、应收账款月结。
决策数据表:
存放各个时期内发生的统计值。
如,月销售统计、月回款统计、出入库统计。
程序模块分类说明
初始化:
系统运行前对系统进行数据的初始化。
如,库存初始化。
业务处理:
业务过程的控制和结果记录。
如,合同录入、费用审批、出入库。
完整性检测与修正:
对累计数据表进行检查并自动修正。
如对当前库存、当前存款、累计销售的检查和重新计算。
结算处理:
计算并记录各个时期末的结存数。
库存月结、应收账款月结。
统计处理:
计算并记录各个时期内发生的统计数。
如,统计月销售、统计月回款、统计出入库。
数据表间的关系
业务数据表<-->基本编码表主-外键关系。
如,合同表<-->客户编码表;
业务数据表<-->辅助编码表主-外键关系。
如,合同表<-->付款方式;
业务数据表、累计数据表、结算数据表:
累计数据表=结算数据表(上期末)+业务数据表(本期内发生)。
如当前库存=上月末库存数+(本月入库数-本月出库数);
决策数据表<-->业务数据表决策数据表的数据是由业务数据表中数据导出(统计)的;
数据表与程序模块间的关系
由一个例子(仓库管理)来说明数据表与程序模块之间的关系:
系统使用前,由初始化模块对库存数(累计数据表)和上月末库存数(结存数据表)进行初始化;
当有入库业务发生时,由入库模块(业务处理)将入库单录入并保存到入库单明细帐(业务数据表)中,同时将入库数累加到库存数(累计数据表)中;
定期或不定期,库存数核算模块(检查完整性检测与修正)根据上月末的库存数(结存数据表)、本月已发生数(业务数据表)检查当前的库存数(累计数据表)是否符合,不符合则给出提示,可手工或自动进行更正(当前库存数=上月末库存数+本月入库数-本月出库数);每月初,进行上月的月结处理。
月结模块(结算处理)根据上月初的库存数(结存数据表)、上月发生数(业务数据表)计算出上月末的库存数(累计数据表)。
公式为:
上月末库存数=上月初库存数+上月入库数-上月出库数;
每个月月结后,库存业务月统计模块(统计处理)统计上月的各种库存商品的入库和出库数,便于查询和生成报表,也作为决策支持的数据基础。
数据表命名时对数据表分类的考虑
业务数据表:
t_d_<系统标识>_<表标识>。
如销售系统的合同表t_d_SH_Contract 或t_d_SH_合同;.基本编码表:
t_b_[<系统标识>]_<表标识>。
如客户编码表t_b_Customer或t_b_客 户;.辅助编码表:
t_a_[<系统标识>]_<表标识>。
如合同类别t_a_ContType或t_a_合同类别;.系统信息表:
t_s_[<系统标识>]_<表标识>。
如用户表t_s_User或t_s_用户;
累计数据表:
t_t_<系统标识>_<表标识>。
如当前库存表t_t_SO_Stock或t_t_SO_ 库存;.结算数据表:
t_c_<系统标识>_<表标识>。
如库存月结表t_c_SO_StockMonth或t_c_SO_库存月结;
决策数据表:
t_w_<系统标识>_<表标识>。
如月销售统计表t_w_SH_SellMonth或 t_w_SH_月销售统计;注:
[]内的内容表示可选。
如“t_s_[<系统标识>]_<表标识>”表示t_s_SH_User和 t_s_User都是符合规则的。
2.2数据库结构原则
规定除数据库设计所遵循的范式外的一些适用原则,在遵循数据库设计范式的基础上,合理地划分表,添加状态和控制字段等。
辅助编码表
为了使辅助编码表能起到预期的效能,又不因过多的辅助编码表难以管理,故对辅助编码表的使用作如下规定:
1.当某辅助编码表的编码允许用户添加时,应设计成“独立”的数据表;否则,将不允许用户添加编码的各辅助编码表合并成一个“通用”的辅助编码表。
2.“独立”的辅助编码表与主表的列采用主-外约束保证列数据完整性。
3.“通用”的辅助编码表与各主表间没有约束关系,主表列的数据完整性由列说明的
“域”来保证。
4.“通用”的辅助编码表除编码和名称列外,还有一个标识列,用来标识合并前的各
码表,该标识列+编码列作为该表的主键。
5.对于“独立”的辅助编码表,用户只可添加新的编码和改变名称,并且不能改变一
个编码所代表的意义;对于“通用”的辅助编码表,原则上不允许用户修改,或只有限地
允许修改名称。
基本编码表
基本编码表可以有如下的标识列:
内编码、外编码、助记码、简称、全称。
内编码
(唯一编码)作为主键有程序自动生成,用户不可见;外编码(唯一编码)由用户按某种
规则自行定义,用户可见;助记码为拼音缩,方便录入,不唯一,重码时由列表选择;简
称用于列表显示和报表,以便缩短行宽。
以上的列在实现时可视情况和习惯加以删减。
2.当码表的列较多且也行较多时,可将上述的标识列和常用的信息存于一个表,将其
它的信息另表存储。
业务数据表
1.设有‘录入人’和‘录入日期’列,由系统自动记录。
2.记录单据的表中设置“自动单据号”,由两个字符开始以区分单据类型,后跟一数字序列表示序号。
‘自动单据号’由系统自动生成,作为主表的主键,不允许用户修改。
当有对应的纸质单据时,设置“单据号”用于记录纸质单据的单据号。
3.明细表中设有行序号,自动记录行的录入顺序。
4.设置“存档标记”列,用于抽取数据到决策数据库时的更新标记。
插入新行或修改
已有行时设置该标记;数据抽取后清除该标记。
5.对于用于查询过滤条件的列,不可为空,以免行“丢失”。
6.对于数值列,不可为空,“0”作为默认值。
7.对于必要的“冗余”列,如客户名称,应有相应的程序保持各“冗余”列的同一性
,以免出现异议。
8.设置“过程状态”列和“记录状态”列。
过程状态列用于记录如创建、审核、记账
、冲红等状态;记录状态用于记录如有效、删除等状态。
2.3数据库命名原则
表名
.业务数据表:
t_d_<系统标识>_<表标识>。
.基本编码表:
t_b_[<系统标识>]_<表标识>。
.辅助编码表:
t_a_[<系统标识>]_<表标识>。
.系统信息表:
t_s_[<系统标识>]_<表标识>。
.累计数据表:
t_t_<系统标识>_<表标识>。
.结算数据表:
t_c_<系统标识>_<表标识>。
.决策数据表:
t_w_<系统标识>_<表标识>。
视图
v_<视图类型>_[<系统标识>]_<视图标识>。
视图类型参见《表的分类》。
存储过程
p_[<系统标识>]_<存储过程标识>
函数
f_[<系统标识>]_<函数标识>
触发器
tr_<表名>_(after)
ti_<表名>_(instead)
自定义数据类型
ud_<自定义数据类型标识>_<数据类型>
主键
pk_<表名>_<主键标识>
外键
fk_<表名>_<主表名>_<外键标识>
2.4具体要求
(1)表名
按照T_Module_TableName结构命名,子表命名为:
主表Sub
(2)特定列名
ID列为顺序号,No为编号,Description备注
存储过程、视图、触发器的命名规范
命名以大写为主,其中功能关键字命名:
主查询:
_LIST
详细记录:
_SHOW
新增:
_ADD
修改:
_MODIFY
类型
命名规范
实例
存储过程
SP_核心表_功能(_LIST、_SHOW、_ADD、_MODIFY)
SP_KW_JXRWB_LIST
视图
VW_核心表_功能(_LIST、_SHOW)
VW_KW_JXRWB_LIST
触发器
TR_核心表_功能(_ADD、_MODIFY)
TR_KW_XSKSJLB_MODIFY
变量及参数
P_字段名(或功能英文名)
P_ZSKJSBH
(3)模块
类型
功能
模块代码
系统管理
用户,权限管理
SYS
代码
翻译的代码
DM
基础数据
基础数据
JCSJ
销售管理
销售管理
SA
生产计划
生产计划
PP
采购管理
采购管理
PU
外协管理
外协管理
PC
库存管理
库存管理
WH
车间作业管理
车间作业管理
WS
客户关系管理
客户关系管理
CRM
人员管理
人员管理
PM
3.代码编写规范
3.1Grid操作
凯领系统的Grid操作是采用DevExpressDXperience12.1中的ASPxGridView来实现的。
3.1.1注意事项
Grid的常用事件有FocusedRowChanged,RowUpdating,RowCommand,RowDeleting等。
Grid的数据绑定应写在单独的BindGrid()方法里面,在Page_Load方法中调用时候,应根据情况来判断是否包括在if(!
IsPostBack)的判断里面,大多数回传后没有数据都是这个原因。
3.1.2代码范例
获取数据
获取数据时候应对查询条件进行判断,DropDown为空有两种情况,一种是未选择,一种是人工输入了字幕,但是没有选择Value。
参照代码:
(GridDemo.aspx下同)
下面的一段的意思是,如果有主子表联动的情况下,主Grid的记录只有一行的话,无法触发FocusedRowChanged事件,需要手动绑定数据
Grid行内Update
Grid的行内更新
下面的一段的意思是,如果有主子表联动的情况下,主Grid的记录只有一行的话,无法触发FocusedRowChanged事件,需要手动绑定数据
如果需要在行内实现DropDown,(见GridSimpleDemo.aspx)在需要将这一行
然后在CellEditorInitialize事件中初始化并给他绑定DataSet,
然后在Updating事件中,
即可。
Grid删除行
删除Grid的数据。
Grid自定义按钮
自定义按钮用RowCommand事件来实现
在前台:
事件声明:
后台方法:
其中SetCondition就是查询条件保持。
Grid列翻译
对Grid里面列翻译,比如1-是2-否
一般是在Grid的列中调用后台的函数,如
事件声明:
Grid主子表关联
主子表关联是很常用的功能,选择一个主表的时候,同时在页面下方的Grid显示他的关联信息。
主要实现是FocusedRowChanged事件,同时需要修改Grid的几个属性。
事件声明:
允许选中行,行事件走后台。
后台事件:
跳转页面后信息保存
当你的Grid有多页,查询条件也已经选择的情况下,点击跳出页面后,再跳回来,这个方法可以让你记住你当前的信息。
SetCondition()是保存信息
后面两个是从Session中获取信息,用在Page_Load函数里面。
思路是用这个Page的URL作为键值放到Session中,这个页面的具体信息比如Grid的当前页,当前选择的行,控件的选择的指,会放入HashTable中,然后把这个HashTable放入Session中。
在Page_Load中获取他的时候:
根据URL从Session中取信息,赋给具体的控件。
3.2Tree与基本控件操作
凯领系统的Tree与基本控件操作是采用DevExpressDXperience12.1来实现的。
3.2.1注意事项
下拉列表使用ASPxComboBox来实现。
局部刷新使用.NET自带的UpdatePanel实现。
Tree结构使用ASPxTreeList实现
具体代码见TreeDemo.aspx
3.2.2代码范例
Tree数据绑定
Tree数据的绑定往往在数据表中是以二维表的结构存储,控件本身会自动折叠数据。
如果这个Tree与别的控件有数据的联系,则可能需要递归的绑定数据。
参照代码:
(TreeDemo.aspx下同)
在Tree的前台
通过这两个属性来绝对树的样子。
与Tree的数据关联
要想在Tree选择行改变的时候,同时改变其他的控件,需要使用FocusedNodeChanged事件与设置几个属性。
后台事件,需要递归的获取Node的子Node
DropDown控件
DropDown控件在前台的设置:
在后台的绑定数据:
可在第一行加上“请选择”这个Item。
局部刷新
局部刷新使用的.NET自带的UpdatePanel实现。
在前台,(前面必须有一个ScriptManager)声明:
在ContentTemplate括起来的部分里面,发生的全局方法会变成局部刷新
(这个时候,后台的弹框事件和response.write有关的方法均不能使用)
页面内弹框
页面内弹框使用一个runat=”server”的div实现,在后台控制他的visualable属性,通过div内部的按钮事件将结果传递给其他控件。
见PopDemo.aspx
在前台,(前面必须有一个ScriptManager)声明:
控制大小通过css控制。
。
。
。
与普通的写法无异,不过是讲东西都嵌套进div中。
后台:
第一个函数是控制div的消失visualable=false
下面的就是函数里面具体的事件。
3.3报表打印
简单的报表打印直接使用控件自带的ASPxGridViewExporter即可,对于复杂的打印,要在现有的Excel中找到模版,然后根据列将数值填进去。
3.3.1注意事项
打印往往是公共方法,所以应该做成static事件,放在App_Code文件夹中。
3.3.2代码范例
简单的打印
利用控件自带的打印。
参照代码:
(TreeSimpleDemo.aspx下同)
前台:
后台的打印事件:
复杂表单的打印
首先是打印的公共方法,在App_Code的PublicPrint中,代码如下
进程句柄的获得是为了以后可以杀掉进程,不然服务器会残留很多Excel的进程。
具体的代码及注释详见代码文件:
复杂表单的打印,往往在UpdatePanel中,所以直接调用这个带有Response.Write的方法会出错,所以需要一个中间的页面,调用方直接跳转到这个界面,而这个界面在Page_Load里面就输出Excel文件。
(PublicPrint.aspx)
调用方:
直接跳转即可。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 功能 一般性 规定 武汉理工大学