资源描述
课 程 设 计 课程名称 2013 年 1 月 15 日目 录一、 引言31.1课题来源31.2课题研究主要内容41.3主要工作4二、 需求分析52.1、数据流图52.2、数据字典6 1)、数据项6 2)、数据结构描述7 3)、数据流的描述8 4)、主要数据存储的定义8三、概念结构设计93.1数据实体描述及分ER图93.2整体ER图11四、系统概要设计114.1数据库逻辑结构设计114.2数据库物理设计134.3系统总体框架13五、系统详细设计145.1数据库实施14 1)、建立数据库14 2)、建数据库中的基本表15 3)、数据装载17 4)、创建视图18 5)、存储过程设计19 6)、促发器设计19 7)、创建索引205.2数据库的数据完整性设计205.3数据的安全设计205.4系统功能模块的设计与实现215.5系统功能测试225.6数据库性能检测与备份设计295.7系统安装使用说明31六、回顾与展望32参考文献33一、 引言1.1课题来源随着经济的发展,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。如何设计一个小型企业工资信息的数据库管理系统,由计算机代替人工执行一系列诸如增加新员工,删除旧员工,工资查询,统计等操作。这样就使办公人员可以轻松快捷地完成工资信息管理的任务。 对于企、事业单位的工资发放来说,不需要太大型的数据库系统。只需要一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位三方对数据的管理及需求的系统。企业的目标就是在于利用编程软件开发一个功能实用,用户操作方便,简单明了的工资信息管理程序。 实现工资的集中管理。可供财务人员对本单位的人员以及工资进行增加、删除、修改、查询,对工资发放中的应发工资合计等项目由系统自动进行计算;同时系统还可对员工及工资信息管理情况进行多角度查询。 基于以上原因,企业工资信息管理系统使用电脑安全保存、快速计算、全面统计,实现工资信息管理的系统化、规范化、自动化。以Delphi7.0和SQL SERVER 2008为语言编写管理信息系统的过程。该程序通过Delphi的ADO数据对象来实现Delphi前台与后台SQL SERVER数据库的连接,并具有典型的数据库应用系统的特征,完成了系统结构与现实生活的紧密结合。1.2课题研究主要内容工资信息管理系统是为了更好的实现工资各种信息的管理以及各种信息的安全性管理。本系统主要对查看员工的各种工资信息需求所设计的,可以很好的管理数据。1.3主要工作经过调研及分析,工资信息管理系统主要完成以下功能:(1) 管理员身份的确认:只有用户名和用户密码都相符的管理员方可进入本系统,为了防止不合法用户对数据的察看和修改,管理员可以设定用户名、密码和其权限,还可以对纪录进行增加、删除、修改等操作。当管理员要进入系统时必须先输入用户名和密码,按“确认”按钮后,系统辨别管理员身份,对合法管理员赋予权限。(2) 员工基础信息模块:员工的基本信息。(3) 工资信息模块:员工每个月度的基本工资、职务工资、住房补助、生活补助、加班工资等(4) 部门信息模块:各部门编号、名称。(5) 员工信息管理模块:管理员对所需要的资料的查询即对员工基本信息的增加、删除、修改、查询操作。(6) 员工工资管理模块:管理员对所需要的资料的查询即对员工工资信息的增加、删除、修改、查询操作。二、 需求分析2.1、数据流图员工基础信息表登陆权限辨别用户用户名密码工资信息管理系统员工信息管理部门信息部门信息管理员工信息工资信息管理工资信息员工基本工资基本工资员工浮动工资浮动工资增、删、改、查工资发放明细表基本工资浮动工资部门信息表增、删、改、查员工浮动工资报表打印2.2、数据字典1)、数据项序号数据项说明类型长度取值范围1DID部门编号char102Dname部门名称char203EID员工编号char104Ename员工姓名char205Sex性别char2“男”or“女”6Wenhua文化程度char107Age年龄smallint8Jibengongzi基本工资Money 9Zhufangbuzhu住房补助Money10Shenghuobuzhu生活补助Money11Jiabantianshu加班天数Int12Jiabangongzi加班工资Money13Shijiatianshu事假天数Int14Koukuan扣款Money15Shifa实发工资Money16Shijian时间Datetime16ID用户编号Char1017Zhanghao用户名Char2018Pword密码Char2019Shenfen操作员身份Char102)、 数据结构描述名称:员工含义说明:员工基础信息组成结构:员工编号+员工姓名+部门编号+性别+年龄+文化程度名称:工资含义说明:工资信息组成结构:员工编号+基本工资+职务工资+加班天数+加班工资+事假天数+扣款+住房补助+生活补助+实发工资+时间名称:部门含义说明:部门信息组成结构:部门编号+部门名称名称:基本工资含义说明:基本工资信息组成结构:员工编号+基本工资+职务工资名称:浮动工资含义说明:浮动工资信息组成结构:员工编号+住房补助+生活补助3)、数据流的描述数据流名称:员工信息添加 简述:新员工信息录入数据流来源:公司管理者数据流去向:员工信息数据流组成:员工编号+员工姓名+部门编号+性别+年龄+文化程度数据流名称:员工信息修改 简述:员工信息错误或者员工调动数据流来源:员工信息数据流去向:员工信息数据流组成:员工编号+员工姓名+部门编号+性别+年龄+文化程度数据流名称:员工信息删除 简述:员工离职数据流来源:员工信息数据流去向:员工信息数据流组成:员工编号+员工姓名+部门编号+性别+年龄+文化程度数据流名称:工资添加 简述:新员工工资添加数据流来源:公司管理者数据流去向:工资信息数据流组成:员工编号+基本工资+职务工资+加班天数+加班工资+事假天数+扣款+住房补助+生活补助+实发工资+时间数据流名称:工资修改 简述:公司对工资修改数据流来源:公司管理者数据流去向:工资信息数据流组成:员工编号+基本工资+职务工资+加班天数+加班工资+事假天数+扣款+住房补助+生活补助+实发工资+时间4)、主要数据存储的定义存储名称:员工记录 输入:员工基本信息 输出:员工所有信息 数据结构:员工编号+员工姓名+部门编号+性别+年龄+文化程度存储名称:部门记录 输入:部门基本信息 输出:部门所有信息 数据结构:部门编号+部门名称存储名称:工资记录 输入:员工工资信息 输出:员工所有工资信息 数据结构:员工编号+基本工资+职务工资+加班天数+加班工资+事假天数+扣款+住房补助+生活补助+实发工资+时间存储名称:浮动工资记录 输入:员工浮动工资信息 输出:员工所有浮动工资信息 数据结构:员工编号+住房补助+生活补助存储名称:基本工资记录 输入:员工基本工资信息 输出:员工所有基本工资信息 数据结构:员工编号+基本工资+职务工资三、概念结构设计3.1数据实体描述及分ER图操作用户信息用户编号账号密码身份图3.1操作用户信息E-R图员工基础信息表员工编号员工姓名部门编号性别文化程度年龄图3.2员工基础信息E-R图部门编号部门基础信息表部门名称图3.3部门基础信息E-R图员工基本工资表员工编号基本工资职务工资图3.4员工基本工资E-R图员工浮动工资表员工编号住房补助生活补助图3.5 员工浮动工资E-R图工资发放明细表员工编号基本工资职务工资加班天数加班工资事假天数扣款住房补助生活补助实发工资时间图3.6 工资发放明细E-R图3.2整体ER图图3.7工资信息管理系统总E-R图四、系统概要设计4.1数据库逻辑结构设计关系模式:员工基础信息(员工编号、姓名、部门编号、性别、文化程度、年龄) 部门信息(部门编号、部门名称) 员工基本工资信息(员工编号、基本工资、职务工资) 员工浮动工资信息(员工编号、住房补助、生活补助) 工资发放明细(员工编号、基本工资、职务工资、加班天数、加班工资、事假天数、扣款、住房补助、生活补助、实发工资、时间) 操作用户信息(用户编号、用户名、密码)表5.1员工基础信息表员工编号char (10)主码,不为空姓名char (20)部门编号char (10)外码性别char (2)文化程度char (10)年龄Int表5.2部门基础信息表部门编号char (10)主码,不为空部门名称char (20)唯一表5.3员工基本工资信息表员工编号char (10)主码,外码基本工资Money不为空职务工资Money表5.4员工浮动工资项目表员工编号char (10)主码,不为空;外码住房补助Money生活补助Money表5.5工资发放明细表员工编号char (10)主码,不为空;外码基本工资Money职务工资Money加班天数Int加班工资Money事假天数Int扣款Money住房补助Money生活补助Money实发工资Money时间Datetime表5.6操作用户表用户编号char (10)主码,不为空用户名char (20)密码char (20)身份char (10)4.2数据库物理设计 数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库系统确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。 (1)建立索引:对工资发放明细表,在属性列 员工编号(EID) 实发金额(shifa)建立非聚簇索引(2)存储结构 确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。 将日志文件和数据库对象(表、索引等)分别放在不同的磁盘,可以改进系统的性能,提高系统的安全性。所以,系统应将日志文件和数据文件存放在不同磁盘上。本系统的数据库建立不是很大,所以数据存储采用的是一个磁盘的一个分区。4.3系统总体框架登陆选择模块部门信息员工信息员工工资工资发放是否有权限Y添加、 删除、 修改、 查询返 回N管理员用户五、系统详细设计5.1数据库实施1)、建立数据库2)、建数据库中的基本表 a.部门基础信息表 b.员工基础信息表c.员工基本工资信息d员工浮动工资项目表e.工资发放明细表3)、数据装载用同样的方法装载数据,在此不一一列出。最后装载好的各个表信息如下:a. 部门基础信息b. 员工基础信息c.员工基本工资表d.员工浮动工资项目表e.工资发放明细表4)、创建视图建立一个视图,反映员工的基本工资、职务工资、住房补助、生活补助情况。视图命名为“工资_fafang”。5)、存储过程设计 I定义一个名为“工资明细”的存储过程,指定员工工资基本和浮动情况,并将结果插入工资发放明细表中6)、促发器设计 a.工资发放明细表插入新数据时,定义一个触发器自动求出实发金额的大小定义这个触发器名称为“工资_shifa”。b.定义一个触发器,在对上述的存储过程执行后,向工资发放明细表更新员工的事假和加班情况,命名为“工资明细_更新”7)、创建索引 其索引项为工号、实发工资。5.2数据库的数据完整性设计 a实体完整性:通过设置主键都已经实现。部门信息表主键为“DID”;员工基础信息表、员工基本工资表、员工浮动工资项目表、工资发放明细表主键都为“EID”; b参照完整性:在员工基础信息表中部门编号在本表中不为主码,但在部门信息表中做主码,所以为员工基础信息表的外码。员工信息表中的DID对应部门信息中的DID,员工基本工资表、员工浮动工资项目表中的EID对应员工信息表中的EID。保证了参照完整性。 c在该系统中,设置了员工的年龄Age在18到60岁之间;性别只能为“男”或“女”;以及部门名称Dname的唯一性约束和员工基础信息表中Ename不为空的约束。 当违反数据库的完整性约束时,可以通过执行建立的存储过程,而触发器是一种特殊类型的存储过程,在制定表中的数据被修改,它会被触发并自动执行,有效的实施数据完整性。5.3数据的安全设计 1)、创建一个登陆用户,用户名名为“SJK”,密码为“3110006010”, 默认连接到的数据库:“工资信息管理系统”。2)、创建一个用户“CNA”3)、创建一个名为“R1”的角色。4)、为角色赋予对工资发放明细表的Select权限5)、将角色R1授予用户“CNA”,使其拥有R1所包含的全部权限5.4系统功能模块的设计与实现部门信息增加工资信息管理系统部门信息管理员工信息管理基本工资信息浮动工资信息工资发放明细部门信息删除部门信息查询部门信息修改u员工信息删除员工信息查询员工信息查询员工信息修改u基本工资删除基本工资查询基本工资查询基本工资修改u浮动工资删除浮动工资查询浮动工资查询浮动工资修改u员工信息录入u员工信息查询 系统功能模块图5.5系统功能测试1)、登陆界面 此功能模块,包括两种身份人员登陆“管理员”和“一般员工”,不同身份的人登陆后会进入不同的界面,执行自己拥有的权限。该模块主要代码:procedure TForm1.Button1Click(Sender: TObject);beginwithadoquery1 do begin close; SQL.Clear; Sql.Add (select * from 操作用户表 where (zhanghao=:a) and (pword=:b) and(shenfen=:c) ); parameters.ParamByName(a).Value:=Trim(edit1.Text); parameters.ParamByName(b).Value:=Trim(edit2.Text); parameters.ParamByName(c).Value:=Trim(ComboBox1.Text); open; end;if adoquery1.RecordCount=0 then begin application.MessageBox(!您输入的账号或密码或身份不匹配!,请重新输入,提示,0+64); Exit; end else begin if(Trim(ComboBox1.Text)=管理员) then application.MessageBox(管理员,你好,欢迎登陆!,提示,0+64); if(Trim(ComboBox1.Text)=员工) then application.MessageBox(亲爱的员工!欢迎登陆工资信息管理系统。,提示,0+64);procedure TForm1.Button2Click(Sender: TObject);beginapplication.Terminate;end;2)、模块选择跳转界面 该功能是一个跳转模块,方便快捷找到需要相关操作的模块。该功能详细代码:procedure TForm2.Button1Click(Sender: TObject);begin Form3.visible:=true; Form2.visible:=false;end;每个跳转按钮都是相关的模块跳转指令。3)、部门信息、基本工资和浮动工资模块 这三个模块功能主要有相关数据的插入、删除、修改、查询。以下列出部门模块(其他模块代码类似)功能主要代码:procedure TForm3.Button1Click(Sender: TObject);beginwith ADOQuery1 do begin Close; SQL.Clear; SQL.Add(insert 部门基础信息表 values(:a,:b); Parameters.ParamByName(a).Value := Edit1.Text; Parameters.ParamByName(b).Value := Edit2.Text; ExecSQL; Close; SQL.Clear; SQL.add(select * from 部门基础信息表); Open; end; Application.MessageBox(添加成功,点击确定查看,提示,0+64);end;/*这是插入数据对应的代码procedure TForm3.Button2Click(Sender: TObject);beginwith adoquery1 do begin Close; SQL.Clear; if(trim(Edit1.Text) then i:=1; if (trim(Edit2.Text) then i:=2; case i of 1: begin SQL.Text:=Delete from 部门基础信息表 where DID=:a; Parameters.ParamByName(a).Value:=trim(Edit1.Text); ExecSQL; application.MessageBox(删除成功,点击确定查看,提示,0+64); Close; SQL.Clear; SQL.add(select * from 部门基础信息表); Open; end; 2:begin SQL.Text:=Delete from 部门基础信息表 where Dname=:a; Parameters.ParamByName(a).Value:=trim(Edit2.Text); ExecSQL; application.MessageBox(删除成功,点击确定查看,提示,0+64); Close; SQL.Clear; SQL.add(select * from 部门基础信息表); Open; end; end;end;end;/*这是删除模块的代码(注:修改及查询模块代码和删除大致相同,只是修改对应的条件判断和SQL语句即可,在此不一一列出)。4)、员工基础信息模块 该模块除了和以上模块有相似的插入、删除、更新、查询的基本功能外,还集合了模糊查询、嵌套查询、自身连接、分组查询。查询主要代码:procedure TForm4.N1Click(Sender: TObject);begin x:=inputBox(请输入关键字,如:张,张); withadoquery1 do begin Close; SQL.Clear; SQL.add(select * from 员工基础信息表 where Ename like +%+x+%+); open; end;end;/*只要变动相应的SQL语句以及一些条件即可5)、工资发放明细模块 该模块首先通过执行事先定义好的存储过程“工资_明细”将相关的数据导入到“工资发放明细表中”,避免的大量的查询插入。而后再通过录入员工的加班及事假情况,而这次录入相当于更新了该表中的数据,进而促发了“工资明细_更新”触发器,进而自动将员工的所有工资信息进行计算,然后将计算的结果插入到该表对应的“shifa”即“实发金额”列,方便快捷。同时该模块还有一定的统计功能,求和、求最大(小)、求平均、升降序排列等。执行存储模块主要代码:procedure TForm7.Button2Click(Sender: TObject);beginwith ADOQuery1 do begin Close; SQL.Clear; SQL.Add(exec 工资_明细); ExecSQL; showmessage(已成功执行存储过程,相关数据已导入成功。) ; Close; SQL.Clear; SQL.add(select * from 工资发放明细表); Open; end;end;求和等一些统计功能的主要代码:procedure TForm7.N2Click(Sender: TObject);beginwith adoquery1 do begin Close; SQL.Clear; SQL.add(select Sum(shifa) 实发金额总和 from 工资发放明细表); open; end;end;6)、一般员工身份进入查询信息模块 每个员工只可以查看自己的一切信息。主要代码:procedure TForm8.Button1Click(Sender: TObject);beginwith adoquery1 do begin Close; SQL.Clear; SQL.add(select t.Dname,q.* from 部门基础信息表 t,员工基础信息表 q where t.DID=q.DID and q.EID=+Form1.Edit1.Text+); Open; end;end;7)密码修改模块主要代码:和向数据库表中更新操作类似,只是要从登陆页面获取员工或管理员的信息,以下附上条件判断部分:if(Edit1.TextForm1.Edit2.Text) then begin application.MessageBox(!当前密码输入错误,请重新输入!,提示,0+64); Edit1.clear; end; if (Edit1.Text=Form1.Edit2.Text) and (Edit2.TextEdit3.Text) then application.MessageBox(!两次新密码输入不同,请重新输入!,提示,0+64); if (Edit1.Text=Form1.Edit2.Text) and (Edit2.Text=Edit3.Text) and(length(Edit2.Text)=3) then begin SQL.Text:=Update 操作用户表 set pword=+trim(Edit2.Text)+ where zhanghao=+Form1.Edit1.Text+; ExecSQL; application.MessageBox(!修改成功,请重新登录!,提示,0+64);5.6数据库性能检测与备份设计 1)、性能测试测试输入的账号、密码和身份都匹配,则显示登陆成功,点击确定跳转到选择模块。选择员工基础信息,查询编号为“1003”的员工信息,结果如下图:模糊查询,查询姓“张”的员工信息,点击模糊查询,输入“张”结果如下图:查询发放金额的平均值:2)、数据库备份与恢复设计在“工资发放明细”模块,添加一个ADOCommand 、ADOCommand控件。备份设备:主要代码如下:procedure TForm7.Button5Click(Sender: TObject); begin adocommand1.Connection:=ADOConnection1; adocommand1.CommandText:=BACKUP DATABASE 工资信息管理系统 TO DISK=+F:StudyBF工资信息管理系统备份.bak+WITH FORMAT; adocommand1.CommandType:=cmdText; adocommand1.Execute; showmessage(数据库备份完成!); end;恢复设备:主要代码:procedure TForm7.Button6Click(Sender: TObject);begin adoquery1.SQL.Clear; adoquery1.SQL.Add(USE master); adoquery1.SQL.Add(RESTORE DATABASE 工资信息管理系统 from DISK=+F:StudyBF工资信息管理系统备份.bak+); adoquery1.SQL.Add(USE 工资信息管理系统); adoquery1.ExecSQL; showmessage(数据库恢复完成!);end;5.7系统安装使用说明在安装有SQL server2008的电脑上,打开SQL server management stdio,将数据库文件附加到SQL server 下载安装delphi 7,通过delphi ADO控件连接上附加的数据库,如图:点击执行文件projec1.EXE,输入正确的身份验证即可。六、回顾与展望整个课程设计到现在已经基本结束,在这次课程设计中自己遇到了很多问题与困难,通过自己一边自学一边摸索。运用Delphi的友好的可视化编程环境为程序的编写较为方便。自己从中学到了很多。总结本系统的开发我做了如下工作,首先了解系统需要实现如下功能:具有良好的操作界面;模块能够自由增加、修改、删除及查询信息;建立数据库备份机制,并提供数据灾难恢复功能;支持数据的查询机制;自动计算员工工资;收集数据,分析数据,创建数据表。最后进行系统整体设计,完成各个前台窗体设计和具体的代码实现。在这次课程设计中,我查阅了大量的书籍,在网上也查了不少的资料,使我的编程水平有了很大的提高,我学到了许多以前在课堂上面学不到的知识,并且对系统的开发有了初步的了解。在使用Delphi提供的ADO数据库操作组件实现了对数据的各项操作,也熟悉了delphi的开发开发应用环境和软件开发的一般流程。同时在设计过程中,我也发现了自己的不足,因为是首次进行这样的课题开发,在代码的实现上略现笨拙,整个程序在架构上也算不上完美,我相信通过今后的学习和实践,自己在开发能力一定能够得到大大的提高。 参考文献1 萨师煊,王珊 数据库系统概论M. 高等教育出版社2 郝安林,康会光等 SQL server2008基础教程与实验指导 清华大学出版社3 陈豫龙 Delphi数据库系统开发实例导航 人民邮电出版社4 刘艺 Delphi企业级解决方案及应用剖析 机械工艺出版社5 杨长春等 Delphi程序设计教程(第二版) 清华大学出版社6 伊文敏 Delphi + SQL Server数据库应用实例完全解析 人民邮电出版社。7 http:/ 编程中国 Delphi 教程31
展开阅读全文