工资管理系统课程设计.docx
《工资管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《工资管理系统课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
工资管理系统课程设计
课程设计报告
课程设计名称:
数据库原理与应用
系部:
二系
学生姓名:
班级:
学号:
成绩:
指导教师:
开课时间:
2011-2012学年1学期
一.设计题目:
工资管理系统
系统功能的基本要求:
Ø员工各种信息的输入及维护。
Ø员工每个工种基本工资的设定。
Ø加班津贴管理,根据加班时间和类型给予不同的加班津贴;
Ø按照不同工种的基本工资情况、员工的考勤情况产生员工的每月的月工资;
Ø员工年终奖金的生成,员工的年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/6;
Ø能够查询单个员工的工资情况、每个部门的工资情况、按月的工资统计。
二.主要内容:
主要包括需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库施及程序编制
三.具体要求
1.课程设计的内容独立自主完成,课程设计报告内容完整、格式规范、排版整洁美观;
2.后台数据库采用MSSQLSERVER2005,前台界面语言不限,编写的程序代码,须有较详细的注释说明;
四.进度安排
课程设计安排:
16周
星期一讲解课程设计的内容,安排每一天的具体任务,分配并熟悉题目;
星期二需求分析:
给出系统的功能需求、性能需求,并绘制DFD和DD;
星期三概念结构设计:
绘制实体属性图(可选),局部ER图和全局ER图;
星期四逻辑结构设计:
转换、优化、外模式的设计;
星期五物理结构设计及数据库实施;
17周
星期一应用程序编制调试、整理课程设计报告,并检查;
星期二根据反馈结果修改课程设计;
星期三提交作业
上交的材料:
课程设计的电子稿、打印稿、源码(SQL代码和程序代码)
五.成绩评定
考核方法:
现场验收(占50%),课程设计报告(占50%)。
考核内容:
学习态度(出勤情况,平时表现等)、方案合理性、各阶段的图表与程序编制质量、设计报告质量。
成绩评定:
优,良,中,及格,不及格。
特别说明:
(1)如发现抄袭,按照不及格处理。
(2)材料不齐的,考核等级降一级。
电子稿件以压缩文件的形式上交,压缩命名为:
11位学号+姓名
六.正文撰写内容:
第一章需求分析
1.1功能需求
Ø员工的信息的的输入、删除及维护。
Ø员工的基本工资的设定。
Ø根据员工的加班时间和类型不同给予不同的津贴。
Ø对于员工的每月工资按照不同的公布工种和考勤情况分派。
1.2数据流程图
1.2.1系统管理子系统
流程图:
1.2.2员工信息子系统
总系统流程图如下:
1.3数据字典
员工:
包含员工的基本资料。
考勤:
在里面可以看到缺勤的总类,每一天的缺勤的原因和总人数。
津贴:
在加班的类型和时间来决定津贴的数目。
工资:
根据员工在公司的职位和部门决定工资的多少。
第二章概要设计和逻辑设计
2.1概要设计
1.用户的E-R图:
2.员工信息:
3.员工考勤信息E-R图:
4.员工津贴信息E-R图:
5.员工工资信息E-R图:
6.实体和实体之间的关系E-R图
2.2逻辑结构设计
根据总E-R图中的实体与实体之间的联系以及转换的一般原则,对上述初始关系模式进行规范化,经分析关系中不存在部分函数依赖和传递函数依赖,已达到3NF。
得到如下的关系模型(“__”代表主码):
用户(用户名,用户密码,用户身份)
员工(员工号,姓名,年龄)员工号为主码
缺勤(缺勤号,缺勤类型,缺勤标准)缺勤号为主码
津贴(津贴号,津贴类型,津贴标准)津贴号为主码
工资(工资号,部门,基本工资,职位)工资号为主码
考勤表(时间,小时数,缺勤号,员工号)缺勤号,员工号为主码
加班表(加班日期,加班时数,员工号,津贴号)员工号,津贴号为主码
2.3逻辑模型
1.员工表
字段名
存储代码
数据类型
长度
员工号
Sno
文本
15
姓名
Sname
文本
8
年龄
Snl
文本
2
2.缺勤表
字段名
存储代码
数据类型
长度
缺勤号
Qq
文本
2
缺勤类型
Qlx
文本
50
缺勤标准
Qbz
文本
10
3.津贴表
字段名
存储代码
数据类型
长度
津贴号
Jt
文本
2
津贴类型
Jlx
文本
10
津贴标准
Jbz
文本
10
4.工资表
字段名
存储代码
数据类型
长度
工资号
Gno
数字
3
部门
Gdept
数字
10
职务
Gzw
数字
10
基本工资
Gjb
数字
10
5.考勤表
字段名
存储代码
数据类型
长度
时间
Ksj
数字
2
小时数
Kxs
数字
10
缺勤号
Qq
文本
2
员工号
Sno
文本
15
6.加班表
字段名
存储代码
数据类型
长度
加班日期
Jjr
数字
3
加班时数
Jjr
数字
10
员工号
Sno
文本
15
津贴号
Jt
文本
2
4.物理结构设计
数据库的建立如上表所示,存储路径等均采用系统默认设置。
5.数据库实施及应用程序编制
程序:
1.创建数据库
createdatabase工资管理
on
(
name=sales_dat,
filename='d:
\sales.mdf'
)
2.创建表
createtable员工
(
emp_Snovarchar(15)notnullprimarykey,——员工号
emp_Snamevarchar(8)notnull,——姓名
Snlchar
(2)notnull——年龄
)
createtable工资表
(
emp_Gnovarchar(3)notnull,——工资号
Gjbchar(10),——基本工资
Gdeptfloat,——职务
Gzwchar(10),——部门
constrainte_kprimarykey(emp_Sno)
)
createtable津贴
(
emp_Jtvarchar
(2)notnull,——津贴号
Jbzvarchar(10)notnull,——津贴标准
Jlxchar(10),——津贴类型
constrainte_jprimarykey(emp_no,jiaban_bianhao)
)
createtable缺勤
(
emp_Qqvarchar
(2)notnull,——缺勤号
Qlxchar(50)notnull,——缺勤类型
缺勤标准floatdefault1500,——缺勤标准
constrainte_gprimarykey(emp_sno,)
)
3.创建、绑定默认值
createdefaultgongzi_defaas0
execsp_bindefaultgongzi_defa,'工资种类.zhonglei_gongzi'
execsp_bindefaultgongzi_defa,'津贴.jaban_jiangjin'
execsp_bindefaultgongzi_defa,'月工资.gonghuihuifei'
execsp_bindefaultgongzi_defa,'月工资.zhfgjjin'
execsp_bindefaultgongzi_defa,'月工资.yanglaobaoxian'
execsp_bindefaultgongzi_defa,'月工资.zhufangbutie'
4.创建触发器
a.员工表中删除一条信息,其他表相应员工信息删除
createtriggeremon员工
fordelete
as
deletefrom考勤whereemp_noin(selectemp_nofromdeleted)
deletefrom津贴whereemp_noin(selectemp_nofromdeleted)
deletefrom月工资whereemp_noin(selectemp_nofromdeleted)
验证:
deletefrom员工whereemp_no='20070101'
b.一个部门删除,此部门中的员工信息删除
createtriggerbmon部门
fordelete
as
deletefrom员工wheredepartment_idin(selectdepartment_idfromdeleted)
验证:
deletefrom部门wheredepartment_id='01’
c.员工职务变动,基本工资改变
createtriggerjbgz
on员工
forupdate,insert
as
declare@qvarchar(12)
declare@mvarchar(12)
declare@sfloat
select@q=emp_nofromDeleted
select@m=zhiwufromInserted
select@s=jibengongzifrom基本工资wherezhiwu=@m
update月工资
setjibengongzi=@s
where月工资.Emp_no=@q
5.创建函数
a.函数查询员工基本信息
createfunctionygxx(@yg_idvarchar(10))
returnstable
as
return(select*from员工whereemp_no=@yg_id)
验证:
select*fromdbo.ygxx('20070202')
b.函数查询部门信息
createfunctionbumen(@bumen_idvarchar(4))
returnstable
as
return(select*from部门wheredepartment_id=@bumen_id)
验证:
select*fromdbo.bumen('03')
7.创建存储过程
a.存储过程查询员工基本信息
createprocygxx2
@yg_idvarchar(10)
as
select*from员工whereemp_no=@yg_id
b.存储过程查询指定某个部门或全部部门的基本信息
createprocbumen2
@bumen_id2varchar(4)
as
select*from部门wheredepartment_id=@bumen_id2
createprocbumenq
as
select*from部门
c.存储过程查询某个员工的工资信息
createprocgzxx-
@yg_idvarchar(10)
as
select*from月工资
whereemp_no=@yg_id
d.汇总部门月份工资
createprocgzhz
@dep_idvarchar(04),@month_yearvarchar(10)
as
selectdepartment_id,gz_monthfrom月工资
wheredepartment_id=@dep_idandgz_month=@month_year
orderbydepartment_id,gz_month
e.汇总工资总和
execgzhz'03','200905'
createprocsum_sum
as
selectdepartment_name,gz_month,sum(wagecount)from部门,月工资
where部门.department_id=月工资.department_idgroupbydepartment_name,gz_month
模块分析
在SQL数据库中需要建立2个数据表:
员工信息表、工资结构表。
用户选择自己的身份登录系统后,在进行相应的查询。
如下图所示:
参考文献:
[1]赛奎春等.Delphi数据库开发实例解析[M].北京:
机械工业出版社,2004,23-169.
[2]刘斌等.Delphi7数据库高级教程[M].北京:
清华大学出版社,2004,249-273.
6.课程设计心得体会
这次的课程设计,在指导老师的悉心指导和帮助下,在我同学帮助下顺利地完成了数据库原理试卷库管理系统。
回顾这次课程设计,从刚开始的不知所措,到后来能够独立应用SQL来编写sql代码以及完成系统的调试。
我感觉到自己的进步。
在这次课程设计在很多地方需要完善,及时掌握新的知识,在实践中提高自己的能力。
这个学期的课程设计,我有以下几点体会:
(1)课程设计的初期工作要准备好。
在设计模板是对概念不是很清楚,对知识模糊。
在我接下来的实践造成很大的麻烦。
(2)SQL代码的编写问题。
由于我对SQL的清晰度还不够,要实现有些功能的难度还是相当大的。
特别是在对数据库的修改上,有很大的麻烦。
(3)要注重理论知识的学习以及实践。
在课程设计过程中,我发现自己对理论知识的学习还不够透彻。
因此,在做课程设计前,我们必须努力学好理论。
学习好理论知识后,要注重实践。
(4)要有毅力。
在课程设计过程中,有可能会遇到许多问题,有些问题可以通过自己的能力去解决。
但有些问题会困扰许久,有可能会稀里糊涂的就过掉。
这时候,可以向老师或者同学请教。