对用户需求的分析应该全面、深入、发展,全面是指考查由MIS管理的信息是否有纰漏,必须保证各静态、动态信息的完全;深入是指对信息的内容、结构、含义、变换、生存周期的分析和认识;发展是指对信息未来发展变化的预测,因为信息在某个系统、机构内的变化往往存在着自身特有的发展规律,需求分析应该预见这种规律,否则就会缩短MIS的使用寿命。为了保证需求分析的完备性,就必须保证需求分析的时间。 1. 系统业务流程图 通过对企业原先手工进行员工工资管理业务的情况,可以设计出它的业务流程图,如图4-1所示。 用户登录 数据输入 工资计算 存储数据 工资查询 报表汇总 图4-1 2. 系统的功能要求。 ①整体结构合理,风格一致,模块化结构,界面清晰,接口灵活,操作简便。 ②开发方法,文档规范化,便于管理,可扩充。 ③完善的数据输入,维护,输出。 ④自检性能高,用户误输、错输均有提示。 ⑤容错性能高,某个用户的操作错误不会引起整个系统的瘫痪,每一功能的操作都有信息提示以免重复操作,错误操作有警告,以便用户及时改正。 4.4 数据流程图: 1.管理系统的数据流程图符号如图4-2所示 外部实体 处理 数据流 数据存储 图4-2 数据流程图的符号 2.本系统的数据流程如图4-3所示 图4-3企业工资管理系统的数据流程图 第五章.系统总体设计 本部分主要介绍系统要实现的功能,搭好设计的总体框架,使我们对要开发的系统有一个系统、全面、确切的认识。 5.1 系统功能模块图 本系统在设计时采用结构化程序的设计方法,系统的总体结构采用菜单来调用表单,利用表单来对信息进行管理、数据加工、信息查询、系统维护等工作,系统的功能模块本结构图如图5-1所示。 图5-1 系统功能模块图 5.2功能的说明 本系统大致分为如下四大功能模块。 1.员工信息 分为员工信息浏览和员工信息查询: 在员工信息浏览子模块中,可以对员工的编号、姓名、性别、岗位、工龄、工资等级等信息进行浏览,并可以对员工信息进行增加记录,修改记录,删除记录等操作; 在员工信息查询模块中,可按员工号或员工姓名进行查询。 2.工资基本设定 包括对基础工资、岗位工资、工龄工资的设定。 基础工资的设定包括工资等级、工资额的设定,可以对工资等级及相应的工资额进行修改、添加、删除。 岗位工资的设定包括岗位名称、岗位工资额的设定,可以对岗位名称及相应的岗位工资额进行修改、添加、删除。 工龄工资的设定包括工龄、工资额的设定,可以对各个工龄段及相应的工龄工资额进行修改、添加、删除。 3.工资汇总 在工资管理中,要分别输入每一个员工的各项工资条款,这样才能运用计算机技术来管理好员工的工资发放情况,其中包括:员工基本情况,员工基本工资情况,员工岗位工资情况,员工工龄工资,工资综合。 4. 个人工资查询 此查询分为按职工姓名查询、按职工号查询。 5. 退出 此功能块为退出系统。 5.3系统的运行要求 1.硬件要求。 设备名称 说明 处理器 奔腾III以上,256MB 内 存 256MB,内存越大,速度越快 硬 盘 40GB 鼠 标 双飞燕2D鼠标 2.软件要求。 名 称 说明 操作系统 WINDOWS95/98,WINDOWSXP 应用软件 VISUAL FOXPRO6.0(中文版) 本部分简明扼要的介绍了各个部分要实现的功能,搭好了设计的总体框架,使我们对要开发的系统能够更加系统的,全面的,确切的认识,下一步就可以进行系统的详细设计与具体功能的实现了。 第六章.详细设计与实现 本部分说明了系统的整个设计,再以工资数据输入,工资计算以及查询为例详细说明了系统是怎样实现的。 6.1数据库设计 6.1.1概念设计 概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。 概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的基础。 概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称E-R模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R模型是建立概念性数据模型的有力工具。 通过对企业工资管理内容和过程的分析,本系统应设计的实体和属性如下: 本系统一共用到了3个表。如下: 岗位表(dept.dbf)(包括岗位名称,岗位工资) 工龄表(gongling.dbf)(包括工龄,工龄工资) 工人信息表(personnel.dbf)(包括编号,姓名,性别,工作岗位,工龄,工资等级)。 图6-1为本系统中工人信息的实体集及有关属性的图例: 6.1.2实体和实体之间的关系E-R图如图6-2: 6.2系统中有关数据库表结构设计如下: 部门表 字段名 类型 宽度 小数位数 索引 部门 字符型 10 部门工资 数值型 10 2 2.工龄表 字段名 类型 宽度 小数位数 索引 工龄 数值型 10 索引 工龄工资 数值型 10 2 3.员工信息表 字段名 类型 宽度 小数位数 索引 序号 数值型 10 主索引 姓名 字符型 6 性别 字符型 2 岗位 字符型 10 工龄 数值型 5 工资等级 字符型 5 6.3系统模块设计举例 下面对本系统的具体的几个模块做详细说明。 1、系统主程序MAIN.PRG clear screen clear events set defa to d:\qygz open database database\salary do salary\main.mpr do form salary\form\ksjm read events 2、Ksjm.frm (1)打开表单设计器,设计好表单,并且设置好必要的属性,设计结果见图6-3。 Form1.load事件代码: public i i=0 Timer.timer事件代码: if Thisform.Label1.Left<0-Thisform.Label1.Width Thisform.Label1.Left=Thisform.Width+3 Endif Thisform.Label1.Left=Thisform.Label1.Left-10 I=I+10 If I>=255*2-6 I=0 Endif (2)“员工基本信息“按钮的CLICK事件为: do form salary\form\personnel personnel.frm的有关设计见第3目 图6-3 (3)“工资基本设定“按钮的CLICK事件为: do form salary\form\dataformat (4)“工资汇总“按钮的CLICK事件为: do form salary\form\result (5)“个人工资查询“按钮的CLICK事件为: do form salary\form\grcx (6)“退出“按钮的CLICK事件为: thisform.release clear events 3. personnel.frm的有关设计: (1)打开表单设计器,设计好表单,并且设置好必要的属性,设计结果见图6-4。 Form1.init事件代码: set multilocks on cursorsetprop("buffering",3) (2) thisform.pageframe1.page1.command1.click事件代码: thisform.pageframe1.page1.fy1.enabled=.F. thisform.pageframe1.page1.command2.enabled=.F. thisform.pageframe1.page1.command3.enabled=.F. thisform.pageframe1.page1.command4.enabled=.T. if thisform.pageframe1.page1.command1.caption='增加新记录' thisform.pageframe1.page1.txtpid.enabled=.T. thisform.pageframe1.page1.txtpname.enabled=.T. thisform.pageframe1.page1.txtp***.enabled=.T. thisform.pageframe1.page1.txtpjob.enabled=.T. thisform.pageframe1.page1.txtpindate.enabled=.T. thisform.pageframe1.page1.txtprank.enabled=.T. append blank thisform.pageframe1.page1.command1.caption='增加确认' thisform.pageframe1.page1.refresh thisform.pageframe1.page1.txtpid.setfocus else getid=alltrim(thisform.pageframe1.page1.txtpid.value) getname=alltrim(thisform.pageframe1.page1.txtpname.value) get***=alltrim(thisform.pageframe1.page1.txtp***.value) getjob=alltrim(thisform.pageframe1.page1.txtpjob.value) getindate=alltrim(thisform.pageframe1.page1.txtpindate.value) getrank=alltrim(thisform.pageframe1.page1.txtprank.value) if empty(getid) or empty(getname) or empty(get***) or empty(getjob) or empty(getindate) or empty(getrank) messagebox("资料不足",48,"错误") else thisform.pageframe1.page1.command1.caption='增加新记录' tableupdate(.t.) thisform.pageframe1.page1.txtpid.enabled=.F. thisform.pageframe1.page1.txtpname.enabled=.F. thisform.pageframe1.page1.txtp***.enabled=.F. thisform.pageframe1.page1.txtpjob.enabled=.F. thisform.pageframe1.page1.txtpindate.enabled=.F. thisform.pageframe1.page1.txtprank.enabled=.F. thisform.pageframe1.page1.fy1.enabled=.T. thisform.pageframe1.page1.command2.enabled=.T. thisform.pageframe1.page1.command3.enabled=.T. thisform.pageframe1.page1.command4.enabled=.F. endif endif 4.工龄工资设定窗体代码: 1.”修改”按钮有关代码: thisform.grdgongling.column1.text1.enabled=.T. thisform.grdgongling.column2.text1.enabled=.T. thisform.grdgongling.column1.text1.setfocus 2.”修改确认”按钮有关代码: thisform.grdgongling.column1.text1.enabled=.F. thisform.grdgongling.column2.text1.enabled=.F. 3.”添加” 按钮有关代码: append blank go bottom thisform.grdgongling.column1.text1.enabled=.T. thisform.grdgongling.column2.text1.enabled=.T. thisform.grdgongling.column1.text1.setfocus 4.”删除” 按钮有关代码: thisform.grdgongling.recordsource='' use gongling exclusive delete from gongling where gname=getgname pack thisform.grdgongling.recordsource='gongling' thisform.grdgongling.refresh 5.”退出” 按钮有关代码 thisform.release do form salary\form\dataformat 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 |