文摘要

点赞:3238 浏览:13345 近期更新时间:2024-01-10 作者:网友分享原创网站原创

毕业设计(论文)

层次专升本

专业计算机科学与技术

姓名

毕业时间

北京理工大学

现代远程教育学院

毕业设计任务书

专业名称计算机科学与技术

班号(教学站)2000级(北船院教学站)

姓名董向东

毕业设计题目人事信息管理系统

指导教师

负责人签字

2003年6月8日

内容和要求:

内容:1.应用软件工程的概念,进行系统分析和设计.

2.应用数据库的基本知识,进行数据库的设计.

3.应用PowerBuilder数据库应用系统开发工具完成代码设计与实现.

要求:1.熟悉软件工程的系统分析及设计方法.

2.掌握数据库设计的基本原理.

3.熟练掌握PowerBuilder数据库开发工具.

毕业设计(论文)评语表(一)

指导教师对毕业设计(论文)评语:

董向东同学圆满地完成了毕业设计任务,该生所完成的"人事信息管理系统"课题集中了数据库技术,办公自动化等先进技术,本课题以PB为数据库应用系统开发工具,设计与实现了具有良好实用性的"数据处理及报表处理模块",解决了对人事信息进行模糊查询的数据处理及工资信息管理等实际问题,表明了该生在计算机应用领域具有扎实的理论和专业知识以及独立从事科研的能力.

论文立论正确,内容充实,具有一定的实用参考价值.

指导教师宋晔(签字)

2003年6月6日评阅人对毕业设计(论文)的评语:

该同学在开发"人事信息管理系统"中,经过需求分析,系统设计,运用当前先进的计算机技术,排除了技术难点,实现了具有良好功能的数据处理及报表处理,妥善地解决了对人事信息的模糊查询及工资信息管理问题.论文叙述清楚,内容充实,已达到了对毕业设计所要求的内容和要求.

评阅人史万明(签字)

2003年6月7日 毕业答辩情况

答辩委员会(小组)成员姓名职称工作单位备注宋晔副教授北京理工大学计算机系史万明教授北京理工大学计算机系丁铁麟教授北京船舶管理干部学院李乃超副教授北京船舶管理干部学院刘振亚副教授北京船舶管理干部学院答辩中提出的主要问题及回答的简要情况:

模糊查询应用的方面

在模糊查询中是否应用了条件范围的限制

查询有权限限制

工资核算的检查如何实现

回答问题正确

毕业设计(论文)评语表(二)

答辩委员会的评语及给定的成绩:

论文立论正确,表达清晰,回答问题正确,按时圆满地完成了毕设任务.

答辩委员会一致通过论文答辩,成绩为优.毕业设计(论文)起止日期2003年2月17日至2003年6月7日

毕业设计(论文)答辩日期2003年6月8日

论文题目:人事信息管理系统

目录

前言---------------------------------------------------------------------------------3

绪论----------------------------------------------------------------------------5

1.1本课题研究的内容-----------------------------------------------------------5

1.2本课题研究的软硬件环境----------------------------------------------------5

开发环境及开发工具---------------------------------------------------------5

系统需求分析-----------------------------------------------------------------6

3.1系统开发策略-----------------------------------------------------------------6

3.2系统功能需求分析--------------------------------------------------------------6

系统分析与设计-----------------------------------------------------------------9

4.1系统功能模块设计-----------------------------------------------------------------9

4.2数据库设计----------------------------------------------------------------------9

4.2.1数据库结构设计--------------------------------------------------------------9

4.2.2数据库结构实现----------------------------------------------------------------14

代码设计与实现-----------------------------------------------------------------22

5.1面向对象的数据库应用系统开发工具PowerBuilder---------------------22

5.1.1PowerBuilder7的概述--------------------------------------------------------22

5.1.2PowerBuilder7的新特性------------------------------------------22

5.2人事信息管理系统代码设计与实现-----------------------------------24

5.2.1总体菜单功能设计-----------------------------------------------------------24

5.2.2数据库表关联定义-----------------------------------------------------------25

5.2.3对象与库表的关联性-----------------------------------------------------------26

5.2.4代码开发----------------------------------------------------------------------------27

研究成果与软件测试----------------------------------------------------------34

6.1概述研究成果-------------------------------------------------------------------34

6.2软件测试的目标-----------------------------------------------------------34

6.3应用软件测试的方法--------------------------------------34

6.4人事档案信息管理系统模块测试----------------------------------------35

6.4.1系统模块测试-----------------------------------------------------------35

6.4.2维护模块测试-----------------------------------------------------------37

6.4.3查询模块测试-----------------------------------------------------------38

6.4.4报表模块测试-----------------------------------------------------------41

6.5可执行文件的生成及测试-------------------------------------------------------------41

6.6分发应用程序-------------------------------------------------------------------------42

6.7研究成果-----------------------------------------------------------------------------42

技术难点及解决-------------------------------------------------------------------43

7.1四个数据操作窗口格式的统一------------------------------------------------43

7.2一般用户和管理员操作权限问题---------------------------------------------44

7.3工资总额的计算问题-----------------------------------------------------------45

结束语--------------------------------------------------------------------------------------------46

附录:源代码----------------------------------------------------------------------------------47

owerBuilder支持应用系统同时应用系统同时访问多种数据库,这既包括诸如Oracle,Sybase之类的大型数据库,也包括FoxPro之类的支持ODBC接口的小型数据库.另外,PowerBuilder开发环境携带的AdaptiveserverAnywhere本身就是一个功能强大的DBMS,对小型应用来说,直接使用这个数据库是个质优价廉的选择.

在北京理工大学众多老师的辛苦教导下,我经过数年的学习,系统而全面地掌握了计算机的基础理论和应用技术,取得了很大的收获.在毕业设计中,我将利用所学到软件工程,数据库应用等知识,使用PowerBuilder数据库应用系统开发软件,设计并开发了《人事管理系统》.

《人事管理系统》采用面向对象的,可视化的数据库应用系统技术完成了对人事住处的管理,采用了PowerBuilder8.0开发环境,并使用本地AdaptiveserverAnywhere7.0数据库.该系统可以满足人事管理日常工作的需要,实现无纸化办公,以模糊组合查询的方式,提供了相同数据源多库表的查询,为人事住处的管理提供了方便,快捷的操作方式.

本系统除了完成常见人事管理系统中人员对象的管理外,还针对现代企业管理的具体要求,增加了对企业部门设置和岗位编制的管理,并使其与传统的单一人员管理有机的结合,实现了数据的合理设置和有效应用,使其更为适用于目前的企业人事管理过程.

通过系统开发,使我对面向对象,可视化的数据库应用系统和软件的开发过程有了一些感性的认识和了解,同时也是对自己数年来计算机专业学习成果的一次检验和考核.

由于时间紧迫,水平有限,论文编写的过程中难免存在一些不足之处,敬请各位教师予以批语指正.

第一章绪论

1问题的提出

随着计算机和网络技术的广泛应用,人事档案管理系统成为现代企业管理中不可缺少的一部分.为适应现代企业制度要求,实现企业劳动人事档案管理的科学化和规范化,从而提出了企事业单位人事档案管理系统开发的课题.

2课题的背景及意义

企事业单位人事档案管理工作是一种繁琐的,务求准确讯速的信息检索工作.特别是对在岗人员,离退人员,工资发放,职称评定等信息的管理,具有典型的信息处理管理模式.本设计以人事档案管理为入口点,提出了基于面向对象的数据库应用系统开发技术——PowerBuilder为设计工具,以软件工程设计规则为指导的人事档案管理系统.该课题基于PowerBuilder数据库应用系统开发技术进行开发,达到了提高企事业单位人事档案管理信息处理效率的效果.

开发环境及开发工具

PowerBuilder是一种开发性能非常优秀的面向对象的数据库应用开发工具,它除了能够设计传统的高性能,基于客户/怎么写作器Client/Server)体系结构的应用系统外,也能够用于开发基于Inter的应用系统.PowerBuilder支持应用系统同时应用系统同时访问多种数据库,这既包括诸如Oracle,Sybase之类的大型数据库,也包括FoxPro之类的支持ODBC接口的小型数据库.另外,PowerBuilder开发环境携带的AdaptiveserverAnywhere本身就是一个功能强大的DBMS,对小型应用来说,直接使用这个数据库是个质优价廉的选择.

《人事管理系统》采用面向对象的,可视化的数据库应用系统技术完成了对人事住处的管理,采用了PowerBuilder8.0开发环境,并使用本地AdaptiveserverAnywhere7.0数据库.该系统可以满足人事管理日常工作的需要,实现无纸化办公,以模糊组合查询的方式,提供了相同数据源多库表的查询,为人事住处的管理提供了方便,快捷的操作方式.

系统需求分析

3.1系统开发策略

本系统开发主要采用自顶向下的开发方式,自顶向下的方法模型如下图所示:

需求

规范修改

设计

实现

测试

生产

改进

3.2系统功能需求分析

1需求分析概述

需求分析是软件定义时期的最后一个阶段,也是设计数据库的一个起点,它确定了系统必须完成哪些工作,提出完整,准确,清晰和具体的要求,直接影响到后面各个阶段的设计,及设计结果是否合理和实用.

需求分析的任务是通过详细调查现实世界要处理的对象(组织,部门,企业等),充分了解原系统(手工系统/计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能.新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计系统.

员工各种信息的输入.

员工各种信息的修改.

对于转出,辞职,离退员工信息的删除.

按照某种条件,查询,统计符合条件的员工信息.

对查询,统计的结果打印输出.

人事档案管理系统的使用帮助.

业务流程图

本系统的业务流程图如下:

管理部门员工信息

员工信息表

部门信息

部门信息表

岗位信息查询报表

岗位信息表

操作人员工资信息

工资信息表

工资表

报表处理:

管理部门①对员工,部门,岗位查询完成各类查询报表.

操作人员②对工资信息更新后产生工资表.

第四章系统分析与设计

4.1系统功能模块设计

功能模块图

人事档案管理系统

系统模块查询模块维护模块报表模块帮助模块

登录退出排序查询插入删除更新打印关于

4.2数据库设计

4.2.1数据库结构设计

4.2.1.1概念结构设计

软件系统本质上是信息处理系统,因此,在软件系统的整个开发过程中都必须考虑两方面的问题——"数据"及对数据的"处理".在需求分析阶段则即要分析用户的数据要求(即需要有哪些数据,数据之间有什么联系,数据本身有什么性质,数据的结构等等),又要分析用户的处理品要求(及对数据进行哪些处理,每个处理的逻辑功能等等).

为把用户的数据要求清晰明确的表达出来,系统分析员通常建立一个概念性的数据模型(也称为信息模型).概念性信息模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模.它描述了从用户角度看到的数据,它反映了用户的现实环境,且与在软件系统中的实现方法无关.


最常用的表示概念性数据模型方法,是实体——联系方法(Entity-RelationshipApproach).这种方法用E——R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法.用这种方法表示的概念性数据模型又称为ER模型.

通常,软件系统中有许多数据是需要长期保存的,为减少数据冗余,简化修改数据过程,应该对数据进行规范化.

4.2.1.1.1E——R图

ER模型

ER模型包含"实体","联系","属性"等三个基本成份.

实体

实体是客观世界中存在的且可相互区分的事务.实体可以是人,也可以是物,可以是具体事物,也可以是抽象概念.

联系

客观世界中的事物彼此之间往往是有联系的.这些联系在信息世界中反映为实体内部的联系和实体之间的联系.实体之间的联系可以分为三类:一对一的关系(1:1),一对多是关系(1:N)和多对多(N:N)的关系.

属性

实体所具有的某一特性称为属性,一个实体可以由若干个属性来刻画.

人们通常就是用实体,联系和属性这三个概念来理解现实问题的,因此,ER模型比较接近人的思维方式.此外,ER模型是用简单的图形符号表示系统分析员对问题的理解,不熟悉计算机的人也能较容易的理解它.因此,ER模型可以作为用户与系统分析员之间的交流工具.

范式

通常用"范式"(NormalForms)定义消除数据冗余的程度.第一范式(INF)数据余程度最大,第五范式(5NF)数据冗余程度最小.但是,范式级别越高,存储同样数据就需要分解成更多张表,因此,"存储自身"的过程也就越复杂.第二随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,因此在需求变化时数据的稳定性较差.第三,范式级别提高则需要访问的表增多,因此性能(速度)将下降.从实用角度看来,在大多数场合选用第三范式都比较恰当.

第一范式

每个属性值都必须是原子值,即仅仅是一个简单值,而不含内部结构.它是定义每个实体或关系属性的原则.

第二范式

满足第一范式条件,而且每个非关键字属性都由整个关键安决定(而不是由关键字的一部分来决定).它是定义实体或关系的关键字属性的原则.

第三范式

符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值).它是定义实体或关系的外关键字属性的原则.

人事档案管理系统E——R图

实体关系E——R图

m11

属性担任领取

111

②实体属性图

4.2.1.1.2逻辑结构设计

把实体的属性定义为关系模型(表)的属性,实体或实体之间关系的关键就是关系模型的关键,E——R图中的实体和实体之间关系转化为如下的关系模型:

表1:

Yuangong(ygno*,name,xb,csrq,nl,jg,mz,xx,zh,hyzk,jkzk,zzmm,jrsj,cjgzsj,gl,

jtzz,lxtel,E-mail,zcdj,xzzw,bmno*f,gwno*f,xl,zy,bysj,byyx,wylb,wydj,arname,ardw,arzw,artel)

表2:

Bumen(bmno*,bmname,zhineng)

表3:

Ganwer(gwno*,gwname,gwlb,quawl,work)

表4:

Gongzi(gzno*,ygno*f,jbgz,gwgz,zwgz,gwjt,zwjt,qtjt,sdf,yanglf,yilf,shyf,

sdsui,sum)

4.2.2数据库结构实现

4.2.2.1系统数据流程图

数据流图概述

数据流图描述系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况.因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的通信工具.此外,设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点.

人事档案理系统的数据流图

数据流图

数据流

编号名称组成来源去向D1.1.1职工信息员工号+姓名+性别+出生日期+年龄+籍贯+民族+血型+号+婚姻状况+健康状况+政治面貌+加入时间+参加工作时间+工龄+家庭住址+联系+E-mail+技术职称或等级+行政职务+部门代号+岗位编号+学历+学习专业+毕业时间+毕业院校+外语类别+外语等级+爱人姓名+爱人工作单位+爱人工作职务+爱人联系新职工管理人员D1.1.2职工信息员工号+姓名+性别+出生日期+年龄+籍贯+民族+血型+号+婚姻状况+健康状况+政治面貌+加入时间+参加工作时间+工龄+家庭住址+联系+E-mail+技术职称或等级+行政职务+部门代号+岗位编号+学历+学习专业+毕业时间+毕业院校+外语类别+外语等级+爱人姓名+爱人工作单位+爱人工作职务+爱人联系管理人员职工信息数据库D1.2.1职工信息员工号+姓名+性别+出生日期+年龄+籍贯+民族+血型+号+婚姻状况+健康状况+政治面貌+加入时间+参加工作时间+工龄+家庭住址+联系+E-mail+技术职称或等级+行政职务+部门代号+岗位编号+学历+学习专业+毕业时间+毕业院校+外语类别+外语等级+爱人姓名+爱人工作单位+爱人工作职务+爱人联系职工信息数据库管理人员D1.2.2部门信息部门代号+部门名称+部门职能描述管理人员部门信息数据库D2.1.1部门信息部门代号+部门名称+部门职能描述部门信息数据库管理人员D2.1.2岗位信息岗位编号+岗位名称+岗位类别+岗位权力范围+岗位任务描述管理人员岗位信息数据库D2.2.1岗位信息岗位编号+岗位名称+岗位类别+岗位权力范围+岗位任务描述岗位信息数据库管理人员D2.2.2工资信息工资卡号+员工号+基本工资+岗位工资+职务工资+岗位津贴+职务津贴+其它津贴+水电费+养老保险+医疗保险+失业保险+个人所得税+工资总额管理人员工资信息数据库D3.1职工信息员工号+姓名+性别+出生日期+年龄+籍贯+民族+血型+号+婚姻状况+健康状况+政治面貌+加入时间+参加工作时间+工龄+家庭住址+联系+E-mail+技术职称或等级+行政职务+部门代号+岗位编号+学历+学习专业+毕业时间+毕业院校+外语类别+外语等级+爱人姓名+爱人工作单位+爱人工作职务+爱人联系职工信息数据库操作人员D3.2部门信息部门代号+部门名称+部门职能描述部门信息数据库操作人员D3.3岗位信息岗位编号+岗位名称+岗位类别+岗位权力范围+岗位任务描述岗位信息数据库操作人员D3.4工资信息工资卡号+员工号+基本工资+岗位工资+职务工资+岗位津贴+职务津贴+其它津贴+水电费+养老保险+医疗保险+失业保险+个人所得税+工资总额工资信息数据库操作人员

4.2.2.2数据库文件

表1.职工信息表work

列名数据类型说明YgnoChar(10)员工号(主键)NameChar(10)姓名XbChar(4)性别CsrgDate出生日期NlChar(4)年龄JgChar(20)籍贯MzChar(10)民族XxChar(4)血型SfzhChar(18)号HyzkChar(10)婚姻状况JkzkChar(10)健康状况ZzmmChar(10)政治面貌JrsjDate加入时间CjgzsjDate参加工作时间GlChar(10)工龄JtzzChar(20)家庭住址LxtelChar(15)联系MailChar(20)E-mailZcdjChar(10)技术职称或等级XzzwChar(10)行政职务BmnoChar(4)部门代号(外键)GwnoChar(4)岗位编号(外键)XlChar(8)学历ZyChar(16)学习专业BysjDate毕业时间ByyxChar(20)毕业院校WylbChar(10)外语类别WydjChar(10)外语等级ArnameChar(10)爱人姓名ArdwChar(20)爱人工作单位ArzwChar(10)爱人工作职务ArtelChar(15)爱人联系表2.部门信息表bumen

列名数据类型说明bmnoChar(4)部门代号(主键)bunameChar(10)部门名称zhinengVarchar(100)部门职能描述

表3.岗位信息表gangwei

列名数据类型说明gwnoChar(4)岗位编号(主键)gwnameChar(10)岗位名称gwlbChar(10)岗位类别quanlVarchar(100)岗位权力范围taskVarchar(100)岗位任务描述

表4.工资信息表gongzi

列名数据类型说明gznoChar(20)工资卡号(主键)ygnoChar(10)员工号(外键)jbgzNumeric(10.2)基本工资gwgzNumeric(10.2)岗位工资zwgzNumeric(10.2)职务工资gwjtNumeric(10.2)岗位津贴zwjtNumeric(10.2)职务津贴qtjtNumeric(10.2)其他津贴sdfNumeric(8.2)水电费yanglfNumeric(8.2)养老保险yilfNumeric(8.2)医疗保险shyfNumeric(8.2)失业保险sdsuiNumeric(8.2)个人所得税SumNumeric(12.2)工资总额

第五章代码设计与实现

5.1面向对象的数据库应用系统开发工具PowerBuilder

5.1.1PowerBuilder7的概述

PowerBuilder是Sybase公司的子公司,Powersoft于1990年开发的客户机/怎么写作器前端应用程序开发工具.由于它的强大功能和充分的专业性,以及采用图形化的界面设计,在短短数年内很快席卷了北美洲的客户机/怎么写作器应用程序开发市场.

PowerBuilder是一种必须在windows环境下运行的应用开发程序,由于它采用图形化界面,所以能够让很多程序开发者非常轻而易举地开发各自独立的应用程序对象.这些对象是可以重复使用并且和别人共享的.

除此之外,PowerBuilder是不但能从个人计算机上读取数据,它还能够通过内建的驱动程序直接连接多种数据库,如ORACLE,SybaseSQLServer,MSSQLServer等.并利用功能强大的数据窗口(datawindows)来处理数据.还可以利用数据管道的方式进行一种数据库的转换,如从ORACLE数据库到Sybase数据库.

5.1.2PowerBuilder7的新特性

PowerBuilder7作为PowerBuilder6的进一步发展,从多方面对PowerBuilder6加以改进,增强和扩充.主要表现在:

全新的用户接口可开发界面

在PowerBuilder7中对用户接口和开发界面作了较大的改进,改进后的用户接口和开发界面使应用程序创建更容易,更高效.

崭新的主界面

在PowerBuilder7中,用户始终工作在应用程序背景下.PowerBuilder7的另一个用户接口新特性是PowerBar1工具栏中的工具按钮更加简洁.

以对象为中心的开发环境

PowerBuilder7以对象为中心,在以前的版本中用来创建PowerBuilder7对象的画板仍在原来位置,但是PowerBuilder7将用户注意力集中在所创建的对象上,而不是集中在使用的画板上.工具栏(PowerBar1)中的New,Inherit,Open,Run和Preview按钮不再从属于特定的画板,而是在任务之间进行切换.

非模态的开发视窗

PowerBuilder7的画板一般是一个拥有多个视窗(View)的画板窗口,每个视窗提供查看和修改对象的特定方式或者显示与对象相关的某种信息,用户可以同时进行多项任务.

PowerBuilder在界面方面的改进还包括:允许用户自定义键盘快捷键,to-dolist(及操作历史列表)可以跟踪用户操作以帮助用户进行应用程序开发,记录最近访问过的应用程序(或对象和连接)等.

支持开发和配置更多类型的组件

在PowerBuilder7中增加了可开发的组件类型,对于每种组件都提供了向导,通过向导的运行可迅速的创建某一类型组件的基本框架,然后将这一框架加以丰富完善就可以创建完整的组件,各种组件的创建工具都是自定义用户对象类开发工具.PowerBuilder7支持创建控制PowerBuilder虚拟机的Jaguar组件,Com/MTS组件,并支持远程调试.

数据库连接新特性

在PowerBuilder7中,对所支持的数据库连接作了较大改进,增加了对新数据库类型连接的支持,同时减少了对不常用数据库的支持,对旧数据库也作了较大改进,具体表现在:

新增的数据库接口和增强原有的接口

新增的数据库接口类型有SYBASESYJ,JDS和JDMIDBC以及OLEDB接口.增强的数据库接口有SYBASESYC和SYBASEDIR.

导入导出的数据库描述文件

在PowerBuilder7中每一个数据库接口都增加了导入和导出的数据库描述文件的选项.导入和导出的功能使不同的开发者之间可以互相交换描述文件.

增加了访问数据库的实用工具

PowerBuilder7在DATABASE画板的对象视窗中列出了每一种数据库接口中可使用的实用工具,这样在客户端可以在同一位置配置测试软件.

其它新特性

对ActiveX和OLE的支持

新增了Tracbar,Progressbar,StatixHyperLink和PictureHyperLink控件

允许存储过程更新数据库.在PowerBuilder中执行存储过程及可以更新数据库.在以前的版本中,Datawindow控件通过提交动态产生的INSERT,DELETE和UPDATESQL语句更新数据库.而在PowerBuilder中可以在存储过程中定义过程化的SQL语句,以供所有访问数据库的应用程序来更新数据库.

支持ActiveX的DataWindowWeb控件.

5.2人事信息管理系统代码设计与实现

5.2.1总体菜单功能设计

5.2.2数据库表关联定义

5.2.3对象与库表的关联性

窗口窗口名称数据

窗口数据窗口

对象数据源库表名列字段W_login登录无无无无无W_accounts输入和无无无无无W_change_

passwork修改无无无无无W_zg数据操作Dw_1

Dw_2D_zg

D_zg1Q_zgWork*ygno,name,xb,csrq,nl,jg,mz,xx,zh,hyzk,jkzk,zzmm,jrsj,cjgzsj,gl,jtzz,lxtel,mail,zcdj,xzzw,bmno*f,gwno*f,xl,zy,bysj,byyx,wylb,wydj,arname,ardw,arzw,

artelW_bm2D_bm

D_bm1Q_bmBumen*bmno,bmname,zhinengW_gw2D_gw

D_gw1Q_gwGangwei*gwno,gwname,gwlb,quanl,workW_gz2D_gz

D_gz1Q_gzGongzi*gzno,ygno,jbgz,gwgz,zwgz,gwjt,zwjt,qtjt,sdf,yanglf,

yilf,shyf,sdsui,sumW_bb_zg职工信息表Dw_1D_zg1Q_zgWork*ygno,name,xb,csrq,nl,jg,mz,xx,zh,hyzk,jkzk,zzmm,jrsj,cjgzsj,gl,jtzz,lxtel,mail,zcdj,xzzw,bmno*f,gwno*f,xl,zy,bysj,byyx,wylb,wydj,arname,ardw,arzw,

artelW_bb_bm部门信息表D_bm1Q_bmBumen*bmno,bmname,zhinengW_bb_gw岗位信息表D_gw1Q_gwGangwei*gwno,gwname,gwlb,quanl,workW_bb_gz工资信息表D_gz1Q_gzGongzi*gzno,ygno,jbgz,gwgz,zwgz,gwjt,zwjt,qtjt,sdf,yanglf,

yilf,shyf,sdsui,sum

5.2.4代码开发

w_login窗口

权限管理的功能是指对数据库的访问级别进行统一定义和管理,以保证数据的安全性和共享性.选择登录级别.若选择管理员登录,则有修改数据库的权限.若选择一般用户登录,则无修改数据库的权限.

w_accounts窗口

若为管理员登录,则要求输入和,输入正确的管理员和后,将拥有管理员登录权限.

w_change_password窗口

若管理员需要进行修改,则进入修改窗口.要求所输入的管理员帐号和旧在数据库表中必须存在并且一致.若一致,则允许输入新,否则提示旧错误信息并要求重新输入旧.

w_zg窗口

管理员登录窗口界面

一般用户登录窗口界面

5)w_bm2窗口

控件和代码与w_zg窗口基本相同,显示和处理部门信息.

6)w_gw2窗口

控件和代码与w_zg窗口基本相同,显示和处理岗位信息.

7)w_gz2窗口

控件和代码与w_zg窗口基本相同,显示和处理工资信息.

8)w_bb_zg窗口

实现员工统计表的浏览和打印功能.

9)w_bb_bm窗口

实现部门报表的浏览和打印功能.

10)w_bb_gw窗口

实现岗位报表的浏览和打印功能.

11)w_bb_gz窗口

实现工资报表的浏览和打印功能.

第六章研究成果及软件测试

6.1概述研究成果

无论怎样强调软件测试的重要性和它对软件的可靠性的影响都不过分.在开发大型的软件过程中,面对着极其错综复杂的问题,人的通讯和配合也不可能完美无缺.因此,在软件生命周期的每个阶段都不可避免地会出现差错.我们力求在每个阶段借助通过严格的技术审查,尽可能地发现并纠正错误.但是,经验表明审查并不能发现所有差错,此外,在编码过程中还不可避免地会引入新的错误.如果在软件投入运行之前,没有发现并纠正软件中的大部分差错,则这些差错会迟早在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且会造成更恶劣的后果.测试的目的就是在软件投入生产性运行之前,尽可能地发现软件中的错误.目前软件测试仍然是保证质量的关键步骤,它是对软件的规格说明,设计和编码的最后复审.

软件测试在软件生命周期中横跨两个阶段.通常在编写出每个模块之后就对它作必要的测试(称为单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一阶段.在这个阶段之后还应该对软件进行综合测试,这是软件生命周期中的另一个独立阶段,通常由专门的测试人员来承担这项工作.

大量统计资料表明,软件测试的工作量往往占软件开发工作量的40%以上,在极端情况时,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其它步骤总成本的三到五倍.因此,必须高度重视软件测试工作,决不要以为写出程序以后软件开发工作就接近完成了.实际上,大约还有同样多的工作量需要完成.

仅就测试而言,它的目标是为了发现软件中的错误.但是,发现错误并不是我们的最终目的.软件工程的目的是开发出高质量的完全符合用户需要的软件.因此,通过测试软件发现的错误必须诊断并改正错误,这就是调试的目的.调试是测试阶段最困难的工作.对软件测试的结果也是分析软件的重要依据.

6.2软件测试的目标

测试是为了发现程序中的错误而执行的过程,

好的测试方案实际可能发现迄今为止尚为发现的错误的测试方案,

成功的测试是发现了至今为止尚未发现的错误测试.

3应用软件测试的方法(黑盒测试和白盒测试)

测试任何产品都有两种方法:如果已经知道了产品的内部工作过程,可以通过测试来检验内部是否每个功能都能正常使用,如果知道了产品的内部工作过程,可以通过测试来检验内部动作是否按照规格说明书的规定正常进行.前一个方法称为黑盒测试,后一个方法称为白盒测试.

对于软件测试而言,黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程.也就是说,黑盒测试是在程序的接口进行测试.它只检查程序功能是否按照规格说明书的规定正常使用,程序是否能接受输入数据产生正确的输出信息,并且保证外部数据(数据库和文件)的完整性.黑盒测试又称为功能测试.与黑盒测试法相反,白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程.这种方法按照程序内部的逻辑测试程序,检查程序中的每条通路是否能按预定的要求正确工作.白盒测试又称为结构测试.

无论黑盒测试还是白盒测试都不可能做到穷尽测试.因为不可能穷尽测试,所以软件测试中不可能发现程序中的所有错误.也就是说,通过测试并不能证明程序是完全正确的.但是,我们的目的是要通过测试保证程序的可靠性.因此,必须仔细设计测试方案,力争用可能少的测试发现尽可能多的错误.

6.4人事档案信息管理系统模块测试

6.4.1系统模块测试

系统登录管理模块的功能是对用户管理权限的管理,在此人事档案信息管理系统中用户有两种:管理人员和一般操作人员.只有管理人员才能对人事信息进行管理,一般工作人员只有对人事信息查询的权限.而管理人员在对人事信息进行相应维护时,必须输入和.

用户单击"管理员登录"选项进行登录,如下图:

在此只要键入自己的即可.用户登录后相应的功能模块窗口立即被打开,如下图:

这时就可以对相关功能进行操作了.若需要修改则显示:

6.4.2维护模块的测试

若要插入新的记录,请点击"插入"按钮.

输入相应数据后,点击"保存"按钮,即可把输入的记录保存到数据库中.

6.4.3查询模块的测试

数据操作窗口首先显示职工信息

在请选择处选择按姓名,在其后空格中填入"王",点击"单项查询",显示如下图:

选中"按员工号",填入"1",选中"按姓名",填入"李",点击"组合查询"

点击菜单上的"窗口切换",显示如下图:

点击"工资信息"

点击排序处的"员工号"

6.4.4报表模块测试

点击菜单上的"报表处理",选择"工资信息表"

点击"打印",即可通过打印机输出工资报表.

6.5可执行文件的生成及测试

在完成数据库的设计之后,有必要生成可脱离PowerBuilder开发环境独立运行的可执行文件并分发给用户.

分发应用程序之前必须将要提供给用户的全部应用程序和环境部件全部打包,打包的内容包括:外部函数,位图和图形,声音文件等,而部件包括应用程序所接受的任何部件.可执行文件所需要的文件有:

可执行文件

要生成独立运行的版本,可以采纳两种不同的方式:一种是用一个可执行文件将所有对象包含在内,另一种是用一个可执行文件和一个或多个动态连接库,在运行时进行连接.

动态库文件

PBD文件只包含编译后的对象.PBD文件的作用与DLL文件相似,它们都是在运行时才链接到应用程序上的.

资源文件(PBR)

资源文件是一种ASCII码文件,它列出了被应用程序所采用的名称.除了标准的PowerBuiler对象外,应用程序还可能使用其他资源,这些资源需要在分发应用程序时,与那些标准的PowerBuilder对象一起分发给用户.

在创建可执行文件时,需要确认该应用程序为当前应用程序,且所有必要的PBL文件都必须包含在应用程序搜索路径中.如果用PBR,则必须确认它已经创建.

创建可执行文件的步骤:

建立Project(工程)对象,在项目画板中单击application图标.

在出现的project对话框中输入应用程序名,资源文件名(若有).

选择机器代码来编译应用程序.

单击工具条上的Build图标.

6.6分发应用程序

分发应用程序,即测试可执行文件的运行.方法如下:将动态链接库,数据库,应用程序存放在同一目录下.在执行程序时,独立目录下的应用程序通过动态链接库运行.若执行不成功,则应用程序会提示找不到哪个动态连接库从而不能运行的信息.将需要的动态连接库逐次拷贝过来即可.

6.7研究成果

《人事信息管理系统》的主要研究成果是可以实现对人事档案信息的录入,更新,删除,查询及报表的打印,从而提高了工作效率及正确性.

技术难点及解决

1四个数据操作窗口格式的统一

为了保证同一个软件使用风格的一致性,我把四个数据操作窗口从数据窗口到控件,尽量作了统一.另一方面,为了保证使用的方便性,排序和组合查询控件组又各不相同.试比较下面两个数据操作窗口的差异.

7.2一般用户和管理员操作权限问题

只有管理人员才能对人事信息进行管理,一般工作人员只有对人事信息查询的权限.而管理人员在对人事信息进行相应维护时,必须输入和.若为一般用户,则关闭窗口及菜单上的"窗口切换","插入","删除","保存"和"修改".但一般用户可以浏览或打印报表.

open(w_zg)

m_pro1.m_file.m_zg.enabled等于false

m_pro1.m_file.m_bm.enabled等于false

m_pro1.m_file.m_gw.enabled等于false

m_pro1.m_file.m_gz.enabled等于false

m_pro1.m_editzg.m_update.enabled等于false

m_pro1.m_editzg.m_delete.enabled等于false

m_pro1.m_editzg.m_insert.enabled等于false

m_pro1.m_editbm.m_update0.enabled等于false

m_pro1.m_editbm.m_delete0.enabled等于false

m_pro1.m_editbm.m_insert0.enabled等于false

m_pro1.m_editgw.m_update1.enabled等于false

m_pro1.m_editgw.m_delete1.enabled等于false

m_pro1.m_editgw.m_insert1.enabled等于false

m_pro1.m_editgz.m_update2.enabled等于false

m_pro1.m_editgz.m_delete2.enabled等于false

m_pro1.m_editgz.m_insert2.enabled等于false

w_zg.cb_acc.enabled等于false

w_zg.cb_delete.enabled等于false

w_zg.cb_insert.enabled等于false

w_zg.cb_update.enabled等于false

close(w_login)

7.3工资总额的计算问题

设计工资总额等于基本工资+岗位工资+职务工资+岗位津贴+职务津贴+其它津贴-水电费-养老保险-医疗保险-失业保险-个人所得税.因为用笔或计算器计算工资总额比较麻烦,也容易出错.所以在对工资信息进行处理时,在填入基本工资,岗位工资,职务工资,岗位津贴,职务津贴,其它津贴,水电费,养老保险,医疗保险,失业保险,个人所得税后,工资总额将自动显示在工资信息窗口的下方,直接填入工资总额处即可.

Sum等于jbgz+gwgz+zwgz+gwjt+zwjt+qtjt-sdf-yanglf-yilf-shyf-sdsui

总结如下:

对某个记录的各列字段的求和方法如下:

在汇总区以文本控件添加"工资总额"的文本框,

若选择某个列字段,则SUM是求库中所有记录的当前所选列字段的和.

即:Sum等于Sum(Sumforall).

若SUM是求库中某个记录的所选列字段的和.计算表达式则需做如下修改:

把Sum等于Sum(Sumforall)修改为Sum等于字段1+字段2+字段3+字段4+┄.

4.在设计数据窗口对象的时候,用所添加的计算控件完成一个记录中若干列字段(即中间计算值)的计算,再把该中间值添写到库表的该记录相应字段中.

结束语

经过两个多月的毕业设计,到今天已告一个段落.在这次毕业设计过程中,我得到了同组同学的大力支持和帮助.特别是宋晔老师在毕业设计中提出了许多宝贵意见,使我的毕业设计任务顺利完成.在毕业设计过程中,通过老师,同学以及自己的努力,使我学到了许多知识,提高了实际操作能力,取得了很多编写软件的实际经验,对应用数据库知识解决实际问题的方法得到了进一步的提高,为我今后的工作,学习打下了良好的基础,积累了宝贵的经验.

在此,我衷心的向宋晔老师以及帮助过我的同学们和老师们表示感谢!

附录:(源代码)

[管理员登录代码实现]

rb_1对象的clicked()管理员登录功能代码如下:

open(w_accounts)

close(w_login)

rb_2对象的clicked()一般用户登录功能代码如下:

open(w_zg)

m_pro1.m_file.m_zg.enabled等于false

m_pro1.m_file.m_bm.enabled等于false

m_pro1.m_file.m_gw.enabled等于false

m_pro1.m_file.m_gz.enabled等于false

m_pro1.m_editzg.m_update.enabled等于false

m_pro1.m_editzg.m_delete.enabled等于false

m_pro1.m_editzg.m_insert.enabled等于false

m_pro1.m_editbm.m_update0.enabled等于false

m_pro1.m_editbm.m_delete0.enabled等于false

m_pro1.m_editbm.m_insert0.enabled等于false

m_pro1.m_editgw.m_update1.enabled等于false

m_pro1.m_editgw.m_delete1.enabled等于false

m_pro1.m_editgw.m_insert1.enabled等于false

m_pro1.m_editgz.m_update2.enabled等于false

m_pro1.m_editgz.m_delete2.enabled等于false

m_pro1.m_editgz.m_insert2.enabled等于false

w_zg.cb_acc.enabled等于false

w_zg.cb_delete.enabled等于false

w_zg.cb_insert.enabled等于false

w_zg.cb_update.enabled等于false

close(w_login)

[帐号确认代码实现]

sle_2对象的getfocus()确认输入功能代码如下:

stringpassword2,account

intm

account等于trim(sle_1.text)

select"acc_pass"."password"

into:password2

from"acc_pass"

where"acc_pass"."account"等于:account,

ifpassword2等于''then

messagebox('错误','此不存在,请重新输入')

sle_1.setfocus()

sle_1.text等于''

endif

cb_1对象的clicked()事件的确定功能代码如下:

stringpassword,account,password2

intreinput

password2等于trim(sle_2.text)

ifpassword2等于''then

messagebox('错误!','管理员的为空值,请重新输入!')

sle_2.setfocus()

else

account等于trim(sle_1.text)

select"acc_pass"."password"

into:password

from"acc_pass"

where"acc_pass"."account"等于:account,

ifpassword等于trim(sle_2.text)then

open(w_zg)

close(w_accounts)

else

messagebox('错误!','管理员的不正确,请重新输入!')

sle_2.setfocus()

endif

endif

cb_2对象的clicked()事件的取消功能代码如下:

open(w_login)

close(w_accounts)

[修改代码实现]

(1)"修改"窗口中"旧"sle_3的getfocus事件代码如下:

(代码功能:确认所输入的在数据库表中必须存在)

stringpassword1,account

intreinput

account等于trim(sle_1.text),

select"acc_pass"."password"

into:password1

from"acc_pass"

where"acc_pass"."account"等于:account,

ifpassword1等于''then

messagebox('错误!','此不存在,请重新输入')

sle_1.text等于''

sle_1.setfocus()

endif

(2)"修改"窗口中"旧"sle_3的losefocus事件代码如下:

(代码功能:确认和的一致性)

stringpassword1,account

intreinput

account等于trim(sle_1.text),

select"acc_pass"."password"

into:password1

from"acc_pass"

where"acc_pass"."account"等于:account,

ifpassword1等于trim(sle_3.text)then

sle_2.setfocus()

else

reinput等于messagebox('错误','您不是管理员!您不能修改数据,要重新输入吗',question!,yesno!)

ifreinput等于1then

sle_3.setfocus()

sle_3.text等于''

return0

elseifreinput等于2then

cb_2.setfocus()

endif

endif

(3)"修改"窗口中"新"sle_2的getfocus事件代码如下:

(代码功能:确认必须输入旧)

stringpassword3

intreinput

password3等于trim(sle_3.text)

ifpassword3等于''then

reinput等于messagebox('错误!','必须输入旧!是否继续',question!,yesno!)

ifreinput等于1then

sle_1.text等于''

sle_1.setfocus()

return0

elseifreinput等于2then

cb_2.setfocus()

endif

endif

(4)"修改"窗口中"确认新"sle_4的losefocus事件代码如下:

(代码功能:确认两次新输入的一致性)

intreinput

iftrim(sle_2.text)<,>,trim(sle_4.text)then

reinput等于messagebox('错误!','两次不一致,是否重新输入',question!,yesno!,1)

else

cb_1.setfocus()

endif

ifreinput等于1then

sle_2.text等于""

sle_4.text等于""

sle_2.setfocus()

elseifreinput等于2then

cb_2.setfocus()

endif

(5)"修改"窗口中cb_1的clicked()事件的确定功能代码如下:

intlogin

stringpassword,account

文摘要参考属性评定
有关论文范文主题研究: 关于数据库的论文范文资料 大学生适用: 专升本毕业论文、电大论文
相关参考文献下载数量: 27 写作解决问题: 写作参考
毕业论文开题报告: 论文模板、论文小结 职称论文适用: 期刊目录、中级职称
所属大学生专业类别: 写作参考 论文题目推荐度: 优秀选题

password等于trim(sle_4.text)

account等于trim(sle_1.text)

ifpassword<,>,''andsle_2.text等于sle_4.textthen

updateacc_pass

setacc_pass.password等于:password

whereacc_pass.account等于:account,

endif

connectusingsqlca,

ifsqlca.sqlcode等于0andpassword<,>,''then

messagebox("无法连接数据库",sqlca.sqlerrtext)

return

else

login等于messagebox('修改成功','请记好您的新!是否要登录',question!,yesno!)

iflogin等于1then

close(W_change_password)

open(w_login)

close(w_zg)

else

close(w_change_password)

close(w_zg)

endif

endif

(6)"修改"窗口中cb_2的clicked()事件的取消功能代码如下:

close(w_change_password)

[员工信息窗口代码实现]

w_zg窗口的open事件代码如下:

dw_1.settransobject(sqlca)

dw_1.retrieve()

dw_1.selectrow(dw_1.getrow(),true)

dw_1.sharedata(dw_2)

ddplb_1.text等于"请选择"

w_zg窗口的closequery事件代码如下:

integerli_ret

ifdw_1.modifiedcount()+dw_1.deletedcount()>,0then

li_ret等于messagebox("注意!","数据已经改变,是否需要保存",&,

Question!,yesnocancel!)

choosecaseli_ret

case1

cb_update.triggerevent(clicked!)

case2

case3

message.returnvalue等于1

endchoose

endif

rb_yg控件的clicked()事件代码如下:

dw_1.setsort("ygno")

dw_1.sort()

rb_name控件的clicked()事件代码如下:

dw_1.setsort("name")

dw_1.sort()

rb_bm控件的clicked()事件代码如下:

dw_1.setsort("bmno")

dw_1.sort()

rb_gw控件的clicked()事件代码如下:

dw_1.setsort("gwno")

dw_1.sort()

cb_sy控件的clicked()事件代码如下:

dw_2.scrolltorow(0)

cb_wy控件的clicked()事件代码如下:

dw_2.scrolltorow(999999)

cb_qy控件的clicked()事件代码如下:

dw_2.scrollpriorpage()

cb_hy控件的clicked()事件代码如下:

dw_2.scrollnextpage()

cb_print控件的clicked()事件代码如下:

dw_1.print()

cb_close控件的clicked()事件代码如下:

close(parent)

cb_change_pass控件的clicked()事件代码如下:

open(w_change_password)

cb_insert控件的clicked()事件代码如下:

dw_1.scrolltorow(dw_1.rowcount())

dw_1.insertrow(0)

cb_delete控件的clicked()事件代码如下:

dw_1.deleterow(0)

cb_update控件的clicked()事件代码如下:

ifdw_1.update()>,0then

mit,

else

messagebox("错误","对不起!数据无法保存")

rollback,

en