数据库薪资管理系统Word下载.docx
- 文档编号:5195350
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:24
- 大小:166.27KB
数据库薪资管理系统Word下载.docx
《数据库薪资管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据库薪资管理系统Word下载.docx(24页珍藏版)》请在冰点文库上搜索。
(4)每个员工的基本资料有XX、性别、年龄、单位和职业(如经理、工程师、销售员等)。
(5)每月个人的最高工资不超过3000元。
工资按月发放,实际发放的工资金额为工资减去扣除。
需要实现的功能要求如下:
(1)实现按照科室录入个人的基本资料、工资和扣除金额的数据。
(2)实现查询个人详细资料、及工资各项明细
(3)计算个人的实际发放工资。
(4)按科室、职业分类统计人数和工资金额。
(5)能够删除辞职人员的数据。
(6)能够修改工作人员的信息。
第二章系统功能设计
通过对上述各项功能的分析、分类、综合,按照模块化程序设计的要求,得到如下图所示的功能模块图
图1系统功能模块图
第三章数据库设计
数据库在一个管理信息系统中占有非常重要的地位,数据库结构的好坏将直接影响到应用系统操作效率已经能否保证数据的一致性、完成性和安全性。
3.1数据库设计
根据薪资管理系统的功能要求,通过分析系统要设计的相关实体一集要收集、存储和操纵数据信息,得到如图2所示的实体及其属性图。
图2实体及其属性图
·
员工基本信息(单位编号,员工编号,XX,性别,职业,年龄)
单位信息(单位编号,单位名称)
薪资信息(基本工资,奖金工资,福利补贴,失业保险,住房公积金,实际工资)
表设计
3.2.1根据关系,建立员工信息表表名为“Staff”:
CREATETABLEStaff
(SofficeNoVARCHAR(10),
SNoVARCHAR(10),
SnameVARCHAR(10),
SsexCHAR
(2),
SjobVARCHAR(10),
SageSMALLINT,
);
列名如图3:
图3
3.2.2用INSERTINTO语句,向Staff表录入员工的单位编号、员工编号、XX、性别、职业、年龄等各项信息,例如:
INSERT
INTOStaff(SofficeNo,SNo,Sname,Ssex,Sjob,Sage)
VALUES('
01'
'
0001'
李明'
男'
管理人员'
29);
打开Staff表即如图4:
图4
3.2.3建立单位信息表Office:
CREATETABLEOffice
(OfficenameVARCHAR(10),
SofficeNoVARCHAR(10),
列名如图5:
图5
3.2.4用INSERTINTO语句,向Office录入单位的单位名称、单位编号等部门信息,例如:
INTOOffice(Officename,SofficeNo)
经理室'
打开Office表即如图6:
图6
建立薪资信息表Salary:
CREATETABLESalary
SjobVARCHAR(10),
wageMONEY,/*工资*/
bonusMONEY,/*奖金*/
welfareMONEY,/*补贴*/
InsuranceMONEY,/*保险*/
HFMONEY,/*住房公积金*/
FSMONEY,/*实际工资*/
列名如图7:
图7
3.2.6用INSERTINTO语句,向员工信息表Salary录入基本工资、奖励工资、福利补贴、失业保险、住房公积金等薪资明细:
INTOSalary(SofficeNo,Sjob,wage,bonus,welfare,Insurance,HF,FS)
2000'
300'
200'
20'
NULL);
并利用利用updateset语句,使实际工资=基本工资+奖励工资+福利补贴-失业保险-住房公积金;
具体语句如下:
updateSalarysetFS=wage+bonus+welfare-Insurance-HF;
打开Salary表如图8:
图8
3.3数据库编程
建立查询语句,根据职业查询工资各项明细。
具体代码如下:
selectSofficeNo部门编号,Sjob职业,wage基本工资,bonus奖励工资,welfare福利补贴,
Insurance失业保险,HF住房公积金,FS实际工资
fromSalary
whereSjob='
财务人员'
;
查询结果如图9:
图9
3.3.2为了方便查询,建立名为pro_Salary存储过程,通过部门号、员工号、职业,查询具体员工信息和实际工资。
createprocedurepro_Salary
@officeIDVARCHAR(10),/*部门ID*/
@staffIDVARCHAR(10),/*员工ID*/
@jobVARCHAR(10)/*职位*/
AS
selectA.SnameXX,A.Ssex性别,A.Sjob职业,A.Sage年龄,B.Officename部门名称,C.wage基本工资,
C.bonus奖励工资,C.welfare福利补贴,C.Insurance失业保险,C.HF住房公积金,C.FS实际工资
fromStaffasA,OfficeasB,SalaryasC
andB.SofficeNo=@officeID
andA.Sjob=@job
andA.SNo=@staffID;
调用存储过程,具体代码如下:
execpro_Salary@officeID='
02'
@staffID='
0004'
@job='
调用结果如图10:
图10
3.3.3根据工号查询员工信息,具体代码如下:
selectSofficeNo部门编号,SNo工号,SnameXX,Ssex性别,Sjob职业,Sage年龄
fromStaff
whereSNo='
查询结果如图11:
图11
根据部门名称查询部门编号,再根据部门编号查询本单位人。
selectOfficename,SofficeNo
fromOffice
whereOfficename='
技术科'
selectcount(*)所查单位的总人数
whereSofficeNo='
03'
查询结果如图12:
图12
3.3.5根据职业名称,查询本职业人数,具体代码如下:
selectcount(*)所查职业的总人数
查询结果如图13:
图13
查询某一职业人员的实际工资,具体代码如下:
selectFS所查职业的实际工资
技术人员'
查询结果如图14:
图14
3.3.7为方便用户查看数据,创建列名分别为工号、XX、单位、职业、实际工资的视图,具体代码如下:
createviewV_salaryinfo
as
fromStaffA,SalaryB
whereA.SofficeNo=B.SofficeNoandA.Sjob=B.Sjob;
查询试图的语句代码如下:
selectdistinct*
fromV_salaryinfo;
运行结果如图15:
图15
在表Staff中建立insert触发器,查询新添加员工的信息,具体代码如下:
createtriggerT_Staff
onStaff
forinsert
selectSname新添加的员工,SNo,SofficeNo,Ssex,Sjob,Sagefrominserted;
04'
0013'
姚远'
销售人员'
25);
运行结果如图16
图16
3.3.9在表Staff中建立delete触发器,查询被删除员工的信息,具体代码如下:
createtriggerT_Staff1
fordelete
selectSname被删除的员工,SNo,SofficeNo,Ssex,Sjob,Sagefromdeleted;
DELETE
fromStaffwhereSNo='
andSname='
运行结果如图17:
图17
第四章功能的实现
4.1实现按照科室录入个人的基本资料、工资和扣除金额的数据。
实现语句如下:
0014'
韩梅梅'
女'
附:
以上是录入科室编号为04,工号为0014,XX为韩梅梅,性别为女,职业为销售人员,年龄为29,的员工信息。
运行结果如图18:
图18
实现查询个人详细资料、及工资各项明细。
具体实现语句如下:
以上是调用名为pro_Salary存储过程,以实现通过部门号、员工号、职业,查询具体员工信息和工资各项明细及实际工资
运行结果如图19:
图19
4.3计算个人的实际发放工资。
利用updateset语句,使实际工资=基本工资+奖励工资+福利补贴-失业保险-住房公积金
4.4按科室、职业分类统计人数和工资金额。
4.4.1按科室统计人数,具体实现语句如下:
根据部门名称查询部门编号,再根据部门编号查询本单位人数
运行结果如图22
图22
4.4.2按科室职业统计人数,具体实现语句如下:
运行结果如图23:
图23
根据职业查询工资金额,具体语句如下:
运行结果如图24:
图24
根据科室查询工资金额,具体语句如下:
运行结果如图25:
图25
4.4.5能够删除辞职人员的数据。
运行结果如图26:
图26
4.5能够修改工作人员信息。
具体实现语句如下;
updateStaffsetSage='
24'
修改员工号为“0001”的员工年龄
查询运行结果语句如下:
select*
运行结果如图27:
图27
结束语
在课程设计过程中,深刻体会到,理论和应用结合的重要性。
平时课本上学的一些定义和代码,在实际应用中会出现很多状况。
比如:
查询结果出现多个重复现象、查询结果为空、或者遇到定义不明确。
在解决这些问题的过程中,对于自己的知识面和解决问题的能力都有很大提升。
当然,在编写代码时,也遇到很多调试错误。
遇到问题是跟同学交流,向前辈请教也是相当有必要的。
课本只告诉我们怎么做,却不能为教会我们具体解决问题和错误的方法手段。
整个课程设计过程中,其实我几乎都是长期在线的。
在遇到问题,通过XX搜索,反复调试都无法彻底解决时,到班级群里问同班同学是一个不错的途径,大家都在课程设计,都会遇到这样那样的问题,也许我解决不了的问题,正是他们刚刚遇到并已经找到解决方法的。
另外,在有关计算机的技术群,会有很多高手,只要虚心请教,他们是很乐意帮忙解决问题的。
有时候,自己一个人反复检查半天都调试不出来的语句,在他们的指点下半分钟就搞定了。
总之,在遇到问题时,不管是利用XX、、学习交流群,学会通过各种渠道找到解决问题的方法很重要。
一篇课程设计几乎把一学期学到的东西都给串起来了。
以前课堂上学的那些定义和代码变得不再抽象遥远,在应用中真的学到了很多很多的东西。
可能我还是比较菜鸟吧!
虽然,熬了一星期写好了一些前台和后台的代码,逻辑却越来越乱。
后来,把做的东西全部推翻,又一步一步重新编写。
依然存在很多不足,还有很多方面有待改进。
会继续加油的!
参考文献:
[1]王珊,萨师煊《数据库系统概论(第四版)》.高等教育,2006
[2]JohnJ.Patrick著,刘红伟董民辉等译《SQL编程基础(原书第3版)》机械工业2009
[3]汤荷美周立柱等著《数据库技术及应用》2011
附录:
(源程序)
SageSMALLINT,);
/*新建一个员工信息表名为“Staff”*/
SofficeNoVARCHAR(10),);
/*新建一个部门信息表名为“Office”*/
FSMONEY,/*实际工资*/);
/*新建一个薪水信息表名为“Salary”*/
0002'
金金'
30);
0003'
吴青峰'
35);
李高明'
23);
0005'
崔颢'
0006'
李雷'
0007'
高权威'
27);
0008'
魏来'
0009'
师鑫'
0010'
魏一'
0011'
宋康'
0012'
苗鹏'
/*向Staff表录入员工信息*/
/*根据工号查询员工信息*/
财务科'
销售科'
/*向Office表录入部门信息*/
1800'
250'
18
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 薪资 管理 系统