数据库课程设计薪资管理系统

上传人:沈*** 文档编号:123987097 上传时间:2022-07-23 格式:DOC 页数:23 大小:205.01KB
收藏 版权申诉 举报 下载
数据库课程设计薪资管理系统_第1页
第1页 / 共23页
数据库课程设计薪资管理系统_第2页
第2页 / 共23页
数据库课程设计薪资管理系统_第3页
第3页 / 共23页
资源描述:

《数据库课程设计薪资管理系统》由会员分享,可在线阅读,更多相关《数据库课程设计薪资管理系统(23页珍藏版)》请在装配图网上搜索。

1、数据库类课程设计系统开发报告学 号: * 姓 名: * 题 目: 薪资管理系统 指导教师: * 提交时间: 2013年6月1日 计算机科学与应用系目录第一章 需求分析.1第二章 系统功能设计2第三章 数据库设计33.1 数据库设计.33.2数据表设计.43.3 数据库编程.6第四章 功能的实现(使用说明)114.1实现按照科室录入个人的基本资料、工资和扣除金额的数据.114.2实现查询个人详细资料、及工资各项明细.114.3 计算个人的实际发放工资.114.4按科室、职业分类统计人数和工资金额.114.5 能够修改工作人员信息.13结束语15参考文献.15附录(源程序).16数据库类课程设计报

2、告评分标准.20第一章 需求分析 系统功能分析阶段的任务就是确定该系统要解决的问题及其具体要求。需要通过与用户的交流和沟通明确对系统的功能要求,最终列出系统可以实现的功能由用户确认。根据所给出的背景资料:(1)某单位现有1000名员工,其中有管理人员、财务人员、技术人员和销售人员。(2)该单位下设4个科室,即经理室、财务科、技术科和销售科。(3)工资由基本工资、福利补贴和奖励工资构成,失业保险和住房公积金在工资中扣除。(4)每个员工的基本资料有姓名、性别、年龄、单位和职业(如经理、工程师、销售员等)。(5)每月个人的最高工资不超过3000元。工资按月发放,实际发放的工资金额为工资减去扣除。需要

3、实现的功能要求如下:(1)实现按照科室录入个人的基本资料、工资和扣除金额的数据。(2)实现查询个人详细资料、及工资各项明细(3)计算个人的实际发放工资。(4)按科室、职业分类统计人数和工资金额。(5)能够删除辞职人员的数据。(6)能够修改工作人员的信息。第二章 系统功能设计通过对上述各项功能的分析、分类、综合,按照模块化程序设计的要求,得到如下图所示的功能模块图登录控制用户管理修改密码输入员工基本信息查询员工基本信息修改员工基本信息输入员工薪资信息查询员工薪资信息修改员工薪资信息员工薪资管理系统管理薪资管理系统员工基本信息管理图 1系统功能模块图第三章 数据库设计数据库在一个管理信息系统中占有

4、非常重要的地位,数据库结构的好坏将直接影响到应用系统操作效率已经能否保证数据的一致性、完成性和安全性。3.1 数据库设计 根据薪资管理系统的功能要求,通过分析系统要设计的相关实体一集要收集、存储和操纵数据信息,得到如图2所示的实体及其属性图。姓名职业年龄性别员工编号单位编号员工单位单位名称单位编号奖金工资福利补贴失业保险工资住房基金基本工资图2实体及其属性图员工基本信息(单位编号,员工编号,姓名,性别,职业,年龄)单位信息(单位编号,单位名称)薪资信息(基本工资,奖金工资,福利补贴,失业保险,住房公积金,实际工资)3.2数据表设计3.2.1 根据关系,建立员工信息表表名为“Staff” :CR

5、EATE TABLE Staff(SofficeNo VARCHAR(10),SNo VARCHAR(10),Sname VARCHAR(10),Ssex CHAR(2),Sjob VARCHAR(10),Sage SMALLINT,);列名如图3:图33.2.2 用INSERT INTO 语句,向Staff表录入员工的单位编号、员工编号、姓名、性别、职业、年龄等各项信息,例如:INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(01,0001,李明,男,管理人员,29);打开Staff表即如图4:图43.2.3 建立单位信息

6、表Office:CREATE TABLE Office(Officename VARCHAR(10),SofficeNo VARCHAR(10),);列名如图5:图53.2.4 用INSERT INTO 语句,向Office录入单位的单位名称、单位编号等部门信息,例如:INSERTINTO Office (Officename,SofficeNo)VALUES(经理室,01);打开Office表即如图6:图63.2.5 建立薪资信息表Salary:CREATE TABLE Salary (SofficeNo VARCHAR(10), Sjob VARCHAR(10),wage MONEY,/*

7、工资*/bonus MONEY,/*奖金*/welfare MONEY,/*补贴*/Insurance MONEY,/*保险*/HF MONEY,/*住房公积金*/FS MONEY,/*实际工资*/);列名如图7:图73.2.6 用INSERT INTO 语句,向员工信息表Salary录入基本工资、奖励工资、福利补贴、失业保险、住房公积金等薪资明细:INSERTINTO Salary (SofficeNo,Sjob,wage,bonus,welfare,Insurance,HF,FS)VALUES(01,管理人员,2000,300,300,200,20,NULL);并利用利用update se

8、t 语句,使实际工资=基本工资+奖励工资+福利补贴-失业保险-住房公积金;具体语句如下:update Salary set FS = wage+bonus+welfare-Insurance-HF;打开Salary表如图8:图83.3 数据库编程3.3.1 建立查询语句,根据职业查询工资各项明细。具体代码如下:select SofficeNo 部门编号,Sjob 职业,wage 基本工资,bonus 奖励工资,welfare 福利补贴,Insurance 失业保险,HF 住房公积金,FS 实际工资from Salarywhere Sjob=财务人员; 查询结果如图9:图93.3.2 为了方便查

9、询,建立名为pro_Salary存储过程,通过部门号、员工号、职业,查询具体员工信息和实际工资。具体代码如下:create procedure pro_SalaryofficeID VARCHAR(10),/*部门ID*/staffID VARCHAR(10),/*员工ID*/job VARCHAR(10)/*职位*/ASselect A.Sname 姓名,A.Ssex 性别,A.Sjob 职业,A.Sage 年龄,B.Officename 部门名称,C.wage 基本工资,C.bonus 奖励工资,C.welfare 福利补贴,C.Insurance 失业保险,C.HF 住房公积金,C.FS

10、 实际工资from Staff as A,Office as B,Salary as Cwhere A.SofficeNo=B.SofficeNoand B.SofficeNo=C.SofficeNoand B.SofficeNo=officeIDand A.Sjob=C.Sjoband A.Sjob=joband A.SNo=staffID;调用存储过程,具体代码如下:exec pro_Salary officeID=02,staffID=0004,job=管理人员;调用结果如图10:图103.3.3 根据工号查询员工信息,具体代码如下:select SofficeNo 部门编号,SNo 工

11、号,Sname 姓名,Ssex 性别,Sjob 职业,Sage 年龄from Staffwhere SNo=0001;查询结果如图11: 图113.3.4 根据部门名称查询部门编号,再根据部门编号查询本单位人。具体代码如下:select Officename,SofficeNofrom Officewhere Officename=技术科;select count(*) 所查单位的总人数from Staffwhere SofficeNo=03;查询结果如图12:图123.3.5 根据职业名称,查询本职业人数,具体代码如下:select count(*) 所查职业的总人数from Staffwh

12、ere Sjob=管理人员;查询结果如图13:图133.3.6 查询某一职业人员的实际工资,具体代码如下:select FS 所查职业的实际工资from Salarywhere Sjob=技术人员; 查询结果如图14:图143.3.7 为方便用户查看数据,创建列名分别为工号、姓名、单位、职业、实际工资的视图,具体代码如下:create view V_salaryinfoasselect A.SNo,A.Sname,A.SofficeNo,A.Sjob,B.FSfrom Staff A,Salary Bwhere A.SofficeNo=B.SofficeNo and A.Sjob=B.Sjob

13、;查询试图的语句代码如下:select distinct *from V_salaryinfo;运行结果如图15:图153.3.8 在表Staff中建立insert触发器,查询新添加员工的信息,具体代码如下:create trigger T_Staffon Stafffor insertasselect Sname 新添加的员工,SNo,SofficeNo,Ssex,Sjob,Sage from inserted;INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(04,0013,姚远,男,销售人员,25);运行结果如图16图

14、163.3.9 在表Staff中建立delete触发器,查询被删除员工的信息,具体代码如下:create trigger T_Staff1on Stafffor deleteasselect Sname 被删除的员工,SNo,SofficeNo,Ssex,Sjob,Sage from deleted;DELETEfrom Staff where SNo=0013 and Sname=姚远;运行结果如图17:图17第四章 功能的实现4.1实现按照科室录入个人的基本资料、工资和扣除金额的数据。实现语句如下:INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjo

15、b,Sage)VALUES(04,0014,韩梅梅,女,销售人员,29);附:以上是录入科室编号为04,工号为0014,姓名为韩梅梅,性别为女,职业为销售人员,年龄为29,的员工信息。运行结果如图18:图184.2实现查询个人详细资料、及工资各项明细。具体实现语句如下:exec pro_Salary officeID=02,staffID=0004,job=管理人员;附:以上是调用名为pro_Salary存储过程,以实现通过部门号、员工号、职业,查询具体员工信息和工资各项明细及实际工资运行结果如图19:图194.3 计算个人的实际发放工资。具体实现语句如下:update Salary set

16、FS = wage+bonus+welfare-Insurance-HF;附:利用update set 语句,使实际工资=基本工资+奖励工资+福利补贴-失业保险-住房公积金4.4按科室、职业分类统计人数和工资金额。4.4.1 按科室统计人数,具体实现语句如下:select Officename,SofficeNofrom Officewhere Officename=技术科;select count(*) 所查单位的总人数from Staffwhere SofficeNo=03;附:根据部门名称查询部门编号,再根据部门编号查询本单位人数运行结果如图22图224.4.2 按科室职业统计人数,具体

17、实现语句如下:select count(*) 所查职业的总人数from Staffwhere Sjob=管理人员;运行结果如图23:图234.4.3根据职业查询工资金额,具体语句如下:select SofficeNo 部门编号,Sjob 职业,wage 基本工资,bonus 奖励工资,welfare 福利补贴,Insurance 失业保险,HF 住房公积金,FS 实际工资from Salarywhere Sjob=财务人员;运行结果如图24:图244.4.4根据科室查询工资金额,具体语句如下:select SofficeNo 部门编号,Sjob 职业,wage 基本工资,bonus 奖励工资,

18、welfare 福利补贴,Insurance 失业保险,HF 住房公积金,FS 实际工资from Salarywhere SofficeNo=02;运行结果如图25:图254.4.5 能够删除辞职人员的数据。具体实现语句如下:DELETEfrom Staff where SNo=0013 and Sname=姚远;运行结果如图26:图264.5 能够修改工作人员信息。具体实现语句如下;update Staff set Sage=24where SNo=0001;附:修改员工号为“0001”的员工年龄查询运行结果语句如下:select *from Staffwhere SNo=0001;运行结果

19、如图27:图27 结束语在课程设计过程中,深刻体会到,理论和应用结合的重要性。平时课本上学的一些定义和代码,在实际应用中会出现很多状况。比如:查询结果出现多个重复现象、查询结果为空、或者遇到定义不明确。在解决这些问题的过程中,对于自己的知识面和解决问题的能力都有很大提升。当然,在编写代码时,也遇到很多调试错误。遇到问题是跟同学交流,向前辈请教也是相当有必要的。课本只告诉我们怎么做,却不能为教会我们具体解决问题和错误的方法手段。整个课程设计过程中,其实我QQ几乎都是长期在线的。在遇到问题,通过百度搜索,反复调试都无法彻底解决时,到班级群里问同班同学是一个不错的途径,大家都在课程设计,都会遇到这样

20、那样的问题,也许我解决不了的问题,正是他们刚刚遇到并已经找到解决方法的。另外,在有关计算机的技术群,会有很多高手,只要虚心请教,他们是很乐意帮忙解决问题的。有时候,自己一个人反复检查半天都调试不出来的语句,在他们的指点下半分钟就搞定了。总之,在遇到问题时,不管是利用百度、QQ、学习交流群,学会通过各种渠道找到解决问题的方法很重要。一篇课程设计几乎把一学期学到的东西都给串起来了。以前课堂上学的那些定义和代码变得不再抽象遥远,在应用中真的学到了很多很多的东西。可能我还是比较菜鸟吧!虽然,熬了一星期写好了一些前台和后台的代码,逻辑却越来越乱。后来,把做的东西全部推翻,又一步一步重新编写。依然存在很多

21、不足,还有很多方面有待改进。会继续加油的!参考文献:1 王珊,萨师煊 数据库系统概论(第四版)高等教育出版社,20062 John J.Patrick著,刘红伟 董民辉 等译SQL编程基础(原书第3版) 机械工业出版社 20093 汤荷美 周立柱等著数据库技术及应用 2011附录:(源程序)CREATE TABLE Staff(SofficeNo VARCHAR(10),SNo VARCHAR(10),Sname VARCHAR(10),Ssex CHAR(2),Sjob VARCHAR(10),Sage SMALLINT,);/* 新建一个员工信息表名为“Staff” */CREATE TA

22、BLE Office(Officename VARCHAR(10),SofficeNo VARCHAR(10),);/* 新建一个部门信息表名为“Office” */CREATE TABLE Salary (SofficeNo VARCHAR(10), Sjob VARCHAR(10),wage MONEY,/*工资*/bonus MONEY,/*奖金*/welfare MONEY,/*补贴*/Insurance MONEY,/*保险*/HF MONEY,/*住房公积金*/FS MONEY,/*实际工资*/);/* 新建一个薪水信息表名为“Salary” */INSERTINTO Staff

23、(SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(01,0001,李明,男,管理人员,29);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(01,0002,金金,女,管理人员,30);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(01,0003,吴青峰,男,管理人员,35);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(02,0004,李高

24、明,男,管理人员,23);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(02,0005,崔颢,男,财务人员,25);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(02,0006,李雷,男,财务人员,23);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(03,0007,高权威,男,管理人员,27);INSERTINTO Staff (SofficeNo,SNo,Sname,Ss

25、ex,Sjob,Sage)VALUES(03,0008,魏来,男,技术人员,25);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(03,0009,师鑫,男,技术人员,25);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(04,0010,魏一,女,管理人员,30);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(04,0011,宋康,男,销售人员,25);INSERTINTO S

26、taff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(04,0012,苗鹏,男,销售人员,27);INSERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(04,0014,韩梅梅,女,销售人员,29);/* 向Staff表录入员工信息 */select SofficeNo 部门编号,SNo 工号,Sname 姓名,Ssex 性别,Sjob 职业,Sage 年龄from Staffwhere SNo=0001;/*根据工号查询员工信息*/INSERTINTO Office (Officenam

27、e,SofficeNo)VALUES(经理室,01);INSERTINTO Office (Officename,SofficeNo)VALUES(财务科,02);INSERTINTO Office (Officename,SofficeNo)VALUES(技术科,03);INSERTINTO Office (Officename,SofficeNo)VALUES(销售科,04);/* 向Office表录入部门信息 */INSERTINTO Salary (SofficeNo,Sjob,wage,bonus,welfare,Insurance,HF,FS)VALUES(01,管理人员,2000

28、,300,300,200,20,NULL);INSERTINTO Salary (SofficeNo,Sjob,wage,bonus,welfare,Insurance,HF,FS)VALUES(02,管理人员,2000,300,300,200,20,NULL);INSERTINTO Salary (SofficeNo,Sjob,wage,bonus,welfare,Insurance,HF,FS)VALUES(03,管理人员,2000,300,300,200,20,NULL);INSERTINTO Salary (SofficeNo,Sjob,wage,bonus,welfare,Insur

29、ance,HF,FS)VALUES(04,管理人员,2000,300,300,200,20,NULL);INSERTINTO Salary (SofficeNo,Sjob,wage,bonus,welfare,Insurance,HF,FS)VALUES(02,财务人员,1800,250,250,200,18,NULL);INSERTINTO Salary (SofficeNo,Sjob,wage,bonus,welfare,Insurance,HF,FS)VALUES(03,技术人员,1700,200,200,200,17,NULL);INSERTINTO Salary (SofficeNo

30、,Sjob,wage,bonus,welfare,Insurance,HF,FS)VALUES(04,销售人员,1000,200,700,200,10,NULL);/* 向Salary表录入薪资信息 */update Salary set FS = wage+bonus+welfare-Insurance-HF;update Staff set Sage=24where Sname=李明select *from Staffwhere Sname=李明/*利用update set 语句,使实际工资=基本工资+奖励工资+福利补贴-失业保险-住房公积金*/select SofficeNo 部门编号,

31、Sjob 职业,wage 基本工资,bonus 奖励工资,welfare 福利补贴,Insurance 失业保险,HF 住房公积金,FS 实际工资from Salarywhere SofficeNo=02;/*查询语句,根据职业查询工资各项明细*/create procedure pro_SalaryofficeID VARCHAR(10),/*部门ID*/staffID VARCHAR(10),/*员工ID*/job VARCHAR(10)/*职位*/ASselect A.Sname 姓名,A.Ssex 性别,A.Sjob 职业,A.Sage 年龄,B.Officename 部门名称,C.w

32、age 基本工资,C.bonus 奖励工资,C.welfare 福利补贴,C.Insurance 失业保险,C.HF 住房公积金,C.FS 实际工资from Staff as A,Office as B,Salary as Cwhere A.SofficeNo=B.SofficeNoand B.SofficeNo=C.SofficeNoand B.SofficeNo=officeIDand A.Sjob=C.Sjoband A.Sjob=joband A.SNo=staffID;/*建立名为pro_Salary存储过程,通过部门号、员工号、职业,查询具体员工信息和实际工资*/exec pro_

33、Salary officeID=02,staffID=0004,job=管理人员;/*调用存储过程*/select Officename,SofficeNofrom Officewhere Officename=技术科;select count(*) 所查单位的总人数from Staffwhere SofficeNo=03;/*根据部门名称查询部门编号,再根据部门编号查询本单位人数*/select count(*) 所查职业的总人数from Staffwhere Sjob=管理人员;/*根据职业名称,查询本职业人数*/select FS 所查职业的实际工资from Salarywhere Sj

34、ob=技术人员;/*查询某一职业人员的实际工资*/create view V_salaryinfoasselect A.SNo,A.Sname,A.SofficeNo,A.Sjob,B.FSfrom Staff A,Salary Bwhere A.SofficeNo=B.SofficeNo and A.Sjob=B.Sjob;/*列名分别为工号、姓名、单位、职业、实际工资创建视图*/create trigger T_Staffon Stafffor insertasselect Sname 新添加的员工,SNo,SofficeNo,Ssex,Sjob,Sage from inserted;IN

35、SERTINTO Staff (SofficeNo,SNo,Sname,Ssex,Sjob,Sage)VALUES(04,0013,姚远,男,销售人员,25);/*在表Staff中建立insert触发器,查询新添加员工的信息*/create trigger T_Staff1on Stafffor deleteasselect Sname 被删除的员工,SNo,SofficeNo,Ssex,Sjob,Sage from deleted;DELETEfrom Staff where SNo=0013 and Sname=姚远;/*在表Staff中建立delete触发器,查询被删除员工的信息*/数据

36、库类课程设计报告评分标准数据库具备基本的数据表,能够实现系统基本需要建立表之间的数据关联 实现了多种数据库对象 具有较强的数据安全性和数据完整性 前台开发工具完成系统的开发 功能全面 对开发工具熟悉,灵活使用各类控件和语句熟练掌握多种开发工具,独立解决较复杂的编程问题。 数据管理功能能够完成数据的输入输出和基本查询功能具有登录功能,能够方便地完成数据操作功能 完成比较复杂的数据查询和数据编辑功能 具有身份检验、数据备份等较复杂的数据管理功能系统界面设计具有一般的数据窗口数据窗口功能全面数据窗口界面美观,操作便捷功能设计有创新开题报告设计报告完成开题报告和设计报告开题报告反映设计思路,设计报告介绍系统功能报告内容比较完整,格式清晰,语句较通顺报告内容完整,图表使用准确,描述详细,反映系统开发过程教师签字:成绩:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!