1、南华大学计算机科学与技术学院 课程设计报告第 1 页 共 33 页南华大学计 算 机 科 学 与 技 术 学 院课程设计报告 ( 2007 2008 学年度 第 二 学期 )课程名称 数据库原理课程设计名称 工资管理系统姓名 李顺利 学号 20064440150专业 计算机科学与技术专业班级 计算机科学与技术 061 班地点 寝室 教师 刘征海南华大学计算机科学与技术学院 课程设计报告第 2 页 共 33 页目 录一 系统需求分析-31.1 数据流图(DFD)-41.2 数据字典(DD)-41.2.1 数据项-41.2.2 数据流-41.2.3 数据存储-51.2.4 加工处理-6二概念模型设
2、计-7三逻辑模型设计-7四物理模型设计-84.1 数据库和表名称-84.2 表的结构设计-8五应用程序设计-105.1 系统功能结构设计-105.1.1 工资管理系统-115.1.2 系统管理模块-115.1.3 工资管理模块-115.1.4 报表管理模块-115.2 界面设计-125.2.1 登录窗口-125.2.2 主界面窗体-125.2.3 注册用户-135.2.4 员工信息管理-135.2.5 个人工资管理-135.2.6 员工工资条-145.2.7 关于-145.3 应用系统实施-155.3.1 开发工具的选择-155.3.2 代码部分-155.3.3 系统测试-325.3.4 系统
3、运行-33六参考文献-33南华大学计算机科学与技术学院 课程设计报告第 3 页 共 33 页一、 系统需求分析管理信息系统(MIS)不仅是一个技术系统,而且也是一个社会系统。这从另一个方面可看出,任何企事业单位的管理信息系统都是基于自己单位的实际情况而建立,即使是同行企业建立的相同系统都会由于企业的实际情况而有所不同。工资管理是任何企事业单位都面临的问题,由于各个公司的工资处理方式总是有所区别,因此目前还没有一个通用的工资管理系统,只能针对公司情况去开发适合本公司需求的工资管理系统。早期的工资管理是人工化的,工作量大时,出现错误的机率也会随之升高,这会导致会计人员花费更多的时间去改正错误,延误
4、工资发放的时间,或出现工资发放错误的现象。而企业工资管理系统就是使用电脑代替大量的人工统计和计算,完成企业工资信息的处理,而且还可以用电脑安全完整地保存企业工资记录。系统初步调查的内容主要是了解公司组织的整体信息,包括员工信息和员工工资信息。通过对系统特点进行调查和分析,可以得到本系统的关键部分如下:(1) 员工职务工资的设定,是工资管理系统的基础,可以实现工资的基本管理。这样可以减少出错,提高效率。 (2) 其他工资的设置,是对员工基本工资的补充。(3) 系统应该可以输出工资报表,可以通过报表侧面反映员工工作的好坏。(4) 系统还应包括员工基本信息的录入、修改和删除。(5) 系统还应该提供强
5、大的数据统计、查询功能。(6) 系统应有比较好的可操作性、稳定性和可扩展性。1.1 数据流图(DFD)数据流图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况,比管理业务流程图具有更好的抽象性和概括性。它包括四种符号,如下图所示:外部实体-S 处理 -P 数据流 -F 数据存储-D数据流程图的符号南华大学计算机科学与技术学院 课程设计报告第 4 页 共 33 页通过详细调查和业务流程图,舍去物质和其他要素,绘制出工资管理数据流程图。如下图所示:1.2 数据字典(DD)DFD 只是对数据处理和彼此之间的联系进行了说明。为了对数据流程
6、图中的各个元素作出详细的说明,有必要建立数据字典,将数据流图中的全部数据流及其组成部分的数据元素,数据存储,数据加工描述清楚,以便于系统设计的进行。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。因此,开发人员有必要编写详细的数据字典,来描述系统开发过程的细节。下面列出本系统中主要的数据字典,包括数据项、数据流、数据存储、加工处理。1.2.1数据项数据项又称数据元素,是数据的最小单位,是无法再细分的数据。下面列出主要的数据元素,如下表所示主要的数据元素数据项名称 数据项编号 类型及宽度 别名 简述 备注empID 无 varchar(12) 职工编号 用来标识
7、员工的唯一编码name 无 varchar(10) 姓名 与职工编号相对应headship 无 varchar(10) 职务 表示职工现任职务base_pay 无 money(8) 基本工资 表示员工的基本工资 1000(默认)Prize 无 money(8) 奖金 表示员工的奖金 800(默认)工资管理系统数据流程图 S1 管理员 P1P3 S2 员工编制工资表P2S1 管理员工资表D2月度工资条D4职工信息表D1工资设置表P4输入职工信息F1 员工基本信息s1计算工资F 2实发工资南华大学计算机科学与技术学院 课程设计报告第 5 页 共 33 页1.2.2数据流数据流是由一个或一组固定的数
8、据项组成。其体现了数据的流向,从哪里来,流向哪里。如下表所示。数 据 流数据流编号:F1 数据流名称:员工基本信息简述:管理员可以添加、修改、删除员工基本信息数据流来源:管理员的输入 数据流去向:制定员工基本信息数据流组成:empID+name+sex+borntime+region+nation+govvis+culture+marr+headship+addr+phone+email+ID+pic+resume数据流编号:F2 数据流名称:月度实发工资简述:由管理员输入或修改员工工资,再由数据库自动计算员工的月度工资信息数据流来源:管理员或数据库 数据流去向:员工工资信息数据流组成:emp
9、ID+name+headship+base_pay+prize+salary+income_tax+income1.2.3数据存储数据存储是数据结构保存的场所,它只描述了数据的逻辑存储结构,而不涉及它的物理组织。现就以相关表来说明数据存储的定义,如下表所示。数 据 存 储数据存储编号:D1数据存储名称:员工信息表简 述:存放员工的基本信息数据存储组成:empID+name+sex+borntime+region+nation+govvis+culture+marr+headship+addr+phone+email+ID+pic+resume关 键 字:empID相 关 处 理:P1,P2南华
10、大学计算机科学与技术学院 课程设计报告第 6 页 共 33 页数据存储编号:D2数据存储名称:员工工资信息简 述:存放员工的工资信息数据存储组成: empID+name+headship+base_pay+prize+salary+income_tax+income关 键 字: empID相 关 处 理: P2,P31.2.4加工处理加工处理是对数据流程图中的逻辑处理进行分析及一些必要说明。如下表所示。加 工 处 理处理逻辑编号:P2处理逻辑名称:编制基本工资简 述:制定基本工资表输入的数据流:职工编号来源于数据存储员工信息表;工资来源于数据存储工资信息表处 理:根据员工信息和工资信息编制基本
11、工资输出的数据流:数据流“基本工资”写入数据存储员工工资信息表处 理 频 率:如果员工信息无变动,处理基本上也是没变动处理逻辑编号:P3处理逻辑名称:计算工资简 述:计算应发工资输入的数据流:基本工资来源于数据存储员工工资信息表处 理:根据基本工资、奖金和个人所得税计算应发工资输出的数据流:数据流“工资”写入数据存储员工工资信息表 处 理 频 率:对每个员工每月处理一次处理逻辑编号:P1、P4处理逻辑名称:输入职工信息、工资设置简 述: 系统挂另一拥有管理职工信息和工资信息的权利输入的数据流:由管理员输入处 理:管理员管理南华大学计算机科学与技术学院 课程设计报告第 7 页 共 33 页输出的
12、数据流:员工信息表、员工工资表处 理 频 率:对每个员工处理一次二、 概念模型设计对数据中词典中的数据存储进行分析,得出用户、员工信息、员工工资信息等数据存储,它们都由自己的头信息另加若干细节项构成,根据实体与属性的区分准则(作为“属性” ,不能再具有需要描述的性质) ,这些细节项应上升为实体。工资管理系统的主要实体及其属性有:用户 user,password,right员工信息 empID,name,sex,borntime,region,nation,govvis,culture,marr,headship,addr,phone,email,ID,pic,resume员工工资信息 empI
13、D,name,headship,base_pay,prize,salary,income_tax,income 实体联系(E-R)图base_payprizesalaryincome_taxincomeborntimesexregionnation marrculturegovvisresume picIDemailphoneaddrheadship员工信息 员工工资信息empIDheadshipname管理员系统用户用户名 密码 权限管理南华大学计算机科学与技术学院 课程设计报告第 8 页 共 33 页三、 逻辑模型设计逻辑结构设计的任务就是把概念模型设计阶段设计好的基本 E-R 图转换为与
14、选用的具体机器上的 DBMS 产品所支持的数据模型相符合的逻辑结构,现选用关系模型,E-R 图向关系模型的转换结果如下所示:用户(user,password ,right)user为此关系的主键。员工信息(empID,name ,sex ,borntime,region,nation,govvis,culture,marr,headship,addr,phone ,email ,ID,pic,resume)empID 此关系的主键。员工工资信息(empID ,name ,headship , base_pay,prize,salary,income_tax,income)empID 此关系的主
15、键。四、 物理模型设计4.1 数据库和表名称在本系统中数据库的名称设置为 gzgl。数据库中表名称和字符标识如下所示:4.2 表的结构设计用户(yh)列名 描述 类型 长度 允许空user 用户名 varchar 20 NoPassword 密码 varchar 12 Noright 用户权限 varchar 20 No员工信息(yg)列名 描述 类型 长度 允许空empID(主键) 职工编号 varchar 12 NoName 姓名 varchar 10 NoSex 性别 varchar 4 NoBorntime 出生日期 datetime 8 YesRegion 籍贯 varchar 10
16、 YesNation 民族 varchar 8 YesGovvis 政治面貌 varchar 10 YesCulture 文化程度 varchar 20 YesMarr 结婚状况 varchar 4 YesHeadship 职务 varchar 10 NoAddr 地址 varchar 20 Yes序号 表名称 字符标识1 用户 yh2 员工信息 yg3 员工工资信息 yggz南华大学计算机科学与技术学院 课程设计报告第 9 页 共 33 页Phone 电话 varchar 20 YesEmail 电子邮件 varchar 20 YesID 身份证号码 varchar 20 YesPic 个人
17、照片 image 16 YesResume 个人简历 text 16 Yes员工工资信息(yggz)列名 描述 类型 长度 允许空 备注empID(主键) 职工编号 varchar 12 NoName 姓名 varchar 10 NoHeadship 职务 varchar 10 Nobase_pay 基本工资 money 8 Yes 默认值(1000)Prize 奖金 money 8 Yes 默认值(800)Salary 应发工资 money 8 Yes 公式(base_pay + prize)income_tax 个人所得税 money 8 YesIncome 实发工资 money 8 Ye
18、s 公式(base_pay + prize - income_tax)实现员工工资信息(职工编号、姓名、职务)随着员工信息的更新、删除、插入而更新、删除、插入,实现动态更新,我使用了三个触发器,分别如下:CREATE TRIGGER Delete_Reminder ON dbo.员工信息 FOR deleteASdeclare emp varchar(12)select emp =empID from deleteddelete from 员工工资信息where empID=empCREATE TRIGGER Insert_Reminder ON dbo.员工信息 FOR INSERTASin
19、sert into 员工工资信息(empID,name,headship)selectempID,name,headshipfrom insertedCREATE TRIGGER Update_name ON dbo.员工信息 FOR UPDATEASdeclare emp varchar(12)declare na varchar(10)南华大学计算机科学与技术学院 课程设计报告第 10 页 共 33 页declare hs varchar(10)select emp =empID from insertedselect na =name from insertedselect hs =he
20、adship from insertedif update(name) or update(headship)beginupdate员工工资信息set name=na,headship=hswhere empID=empend实现个人所得税的自动计算,而不在程序中修改,我使用了一个计算个人所得税的触发器,代码如下:CREATE TRIGGER modifyincome_tax ON dbo.员工工资信息 FOR INSERT, UPDATEASupdate 员工工资信息set income_tax=(salary-1600)*0.05where empID = 员工工资信息.empID and (salary-1600)=0 and (salary-1600)=500 and (salary-1600)=2000 and (salary-1600)=5000 and (salary-1600)=20000 and (salary-1600)=40000 and (salary-1600)=60000 and (salary-1600)=80000 and (salary-1600)=100000