数据库原理课程设计报告工资管理系统文档格式.docx
- 文档编号:18904638
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:15
- 大小:69.53KB
数据库原理课程设计报告工资管理系统文档格式.docx
《数据库原理课程设计报告工资管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《数据库原理课程设计报告工资管理系统文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
专业班级
物联网2014-01物联网2014-02
地点
I308
起止时间
2015.1.4-2015.1.8
设计内容及要求
内容:
学生根据本课程设计指导书中的题目,进行设计。
为了保证系统具有高度的安全性,要有登录界面,进行用户身份的验证。
用户分为不同的级别,例如管理员级用户和普通用户。
员工不同工种基本工资的设定:
员工工种的不同,工资的标准也不同,允许管理员根据员工的现任职务设定员工的基本工资。
包括每个员工的姓名、性别、年龄、工龄、职务及其所在的部门等资料的录入来确定员工的基本工资,以及对现有工作人的基本信息的录入工作。
可以对员工的工资项目进行初始化的设置(包括个人所得税、上月工资零头、本月工资零头、职务工资、级别工资、基本工资、工龄工资、独子费、津贴补贴、离退费、交通费、电话费补贴。
书报费补贴等人
对系统管理员的密钥,以及其他系统使用人员的一些信息,例如用户名、权限、密钥的设定。
加班津贴的管理,根据加班的时间和类别给予不同的加班津贴。
根据月工资生成公式,按照员工的考勤情况和工作表现,生成员工工资。
人员查询操作包括按单个员工信息查询、按部门查询和按工资查询等。
员工年终奖金的生成。
年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/12。
单位工资报表的生成。
可以按照在每个月的每个固定时间生成该单位全体员工的月工资。
对于月工资,能够实现按照员工、部门、年、月进行统计分析,产生相应的报表,并可以打印输出此报表。
工资的发放,要求能够实现银行打卡的功能。
工资转账的功能,包括转账设置、工资转账、工资凭证查询、结转下月的功能。
要提供工资管理系统的帮助文件。
要求:
按照数据库系统开发步骤进行数据库概念结构设计、逻辑结构设计、物理结构设计,使学生掌握数据库应用软件的开发流程,SQL语句的使用和存储过程的使用。
设计
参数
至少5个表结构;
3个存储过程;
2个触发器;
3个视图。
进度
要求
18周星期一14:
00~17:
40学生完成任务分配,数据库设计的软件需求,并祥细了解需求说明。
18周星期二14:
40完成数据库概念设计,画出数据库E-R模型。
18周星期三14:
40完成数据库逻辑设计,并编写出数据库生成脚本
18周星期四14:
40完成数据库常用的Procedure,View设计、Trigger等设计,并生测试数据脚本
18周星期五14:
40编写报告,并答辩。
参考资料
1.游明英等《数据库原理课程设计》指导书
2.王珊、萨师煊.《数据库系统概述》(第四版).北京:
高等教育出版社.2006。
3.C.J.Date著.孟小峰、王珊等译.《数据库系统导论》(第8版).北京:
机械工业出版社.2007。
4.陈根才等.数据库课程设计.浙江.浙江大学出版社.2007
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
王双明指导教师:
游明英/王双明2015年12月25日
目录
摘要II
1需求分析1
1.1系统目标设计1
1.2系统功能分析1
1.3数据流程分析1
1.4数据字典2
2概念结构设计4
2.1构成系统的实体型4
2.2E-R图4
3逻辑结构设计5
3.1逻辑结构简介5
3.2关系模型5
4物理模型设计6
4.1定义数据库6
4.2创建表6
4.3创建存储过程8
4.4创建视图9
4.5创建触发器10
总结12
参考文献13
1需求分析
1.1系统目标设计
信息时代不断发展,工资管理系统也需要不断更新,现代化,才能更加方便!
1.2系统功能分析
根据不同的用户角色,进行授权,使不同用户具有相应的权限,比如管理员可以管理该数据库的全部数据更新;
员工可以修改自己的基本信息等等。
基本工种,基本工资的管理;
公司部门、部门福利、员工的管理;
加班类型,加班工资的管理;
公司员工的考勤信息管理;
员工月工资管理,月工资=基本工资+部门福利-缺勤扣掉的工资;
查询统计上述信息,生成企业工资报表
1.3数据流程分析
图1.3数据流程图
1.4数据字典
表1.1员工信息表
名称
数据类型
StaffId
Int
员工编号主键
staffName
Varchar
员工姓名
staffAge
员工年龄
staffSex
员工性别
staffPhone
员工电话
departmentId
部门编号外键
professionId
工种号外键
表1.2部门信息表
部门编号主键
departmentName
部门名字
departmentAllowance
部门补贴
departmentPhone
部门电话
表1.3工种表
工种编号主键
professionName
工种名字
basicSalary
基本工资
表1.4工资表
staffId
员工号外键
部门号外键
基本工资外键
部门补贴外键
isGet
是否得到工资
表1.5考勤表
workDate
Date
工作日
isWork
是否打卡
表1.6离职员工表
部门编号
工种号
2概念结构设计
2.1构成系统的实体型
由工资管理系统的数据流图和数据字典,抽取出系统的几个个主要实体,包括:
员工实体,工种实体,部门实体,工资实体。
员工实体型属性:
StaffId,staffName,staffAge,staffSex,staffPhone
工种实体型属性:
professionId,professionName
部门实体型属性:
departmentId,departmentName,departmentPhone
工资实体型属性:
basicSalarydepartmentAllowance
2.2E-R图
图2.2E-R图
3逻辑结构设计
3.1逻辑结构简介
逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
设计逻辑结构一般分为3步进行:
(1)将概念结构转换为一般的关系、网状、层次模型;
(2)将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;
(3)对数据模型进行优化。
3.2关系模型
将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:
一个实体型转换为一个关系模式,一个多对多的关系可以转化为一个关系模式,而一对多的关系可以融合在其他的相关的关系模式中。
例如:
(1)员工与部门是多对一的关系,所以将员工与部门设计成以下关系模式:
员工(StaffId,staffName,staffAge,staffSex,staffPhone)
部门(departmentId,departmentName,departmentPhone)
属于(StaffId,staffName,staffAge,staffSex,staffPhonedepartmentId,departmentName,departmentPhone)
(2)员工和工种是多对一的关系,所以将员工与工种设计成以下关系模式:
员工(StaffId,staffName,staffAge,staffSex,staffPhone)
工种(professionId,professionName)
属于(StaffId,staffName,staffAge,staffSex,staffPhoneprofessionId,professionName)
(3)员工与工资是一对一的关系,所以将员工与工资设计以下关系模式:
工资(basicSalarydepartmentAllowance)
员工(StaffId,staffName,staffAge,staffSex,staffPhone)
属于(basicSalarydepartmentAllowanceStaffId,staffName,staffAge,staffSex,staffPhone)
4物理模型设计
数据库物理设计是将逻辑设计影射到存储介质上,利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护。
4.1定义数据库
通过SQL语言进行数据库创建,创建数据库的语句如下:
Createdatabasesms;
4.2创建表
创建部门信息表
DROPTABLEIFEXISTS`department`;
CREATETABLE`department`(
`departmentId`int(11)NOTNULLAUTO_INCREMENT,//部门编号,主键自增
`departmentName`varchar(255)NOTNULL,//部门名字
`departmentAllowance`int(11)NOTNULL,//部门补贴
`departmentPhhone`int(11)NOTNULL,//部门电话
PRIMARYKEY(`departmentId`),
)
创建离职员工表
DROPTABLEIFEXISTS`dimissionstaff`;
CREATETABLE`dimissionstaff`(
`staffId`int(11)NOTNULL,//员工编号,主键,唯一
`staffName`varchar(255)NOTNULL,//员工名字
`staffSex`varchar(255)DEFAULTNULL,//员工性别
`staffAge`int(11)DEFAULTNULL,//员工年龄
`staffPhone`varchar(255)DEFAULTNULL,//员工电话
`departmentId`int(11)DEFAULTNULL,//员工所在部门编号,外键
`professionId`int(11)DEFAULTNULL,//员工所属工种,外键
PRIMARYKEY(`staffId`)
创建工种表
CREATETABLE`profession`(
`professionId`int(11)NOTNULLAUTO_INCREMENT,//工种号,主键自增
`professionName`varchar(255)NOTNULL,//工种名字
`departmentId`int(11)NOTNULL,//工种所属部门,外键
`basicSalary`int(11)NOTNULL,//工种的基本工资
PRIMARYKEY(`professionId`),
)
创建工资表
CREATETABLE`salary`(
`staffId`int(11)NOTNULL,//员工号,外键
`departmentId`int(11)NOTNULL,//员工所属部门号,外键
`basicSalary`int(11)NOTNULL,//员工的基本工资,外键
`departmentAllowance`int(11)NOTNULL,//员工所在部门的补贴,外键
`isGet`int(11)NOTNULL,//员工是否领取工资
PRIMARYKEY(`staffId`),
创建员工表
CREATETABLE`staff`(
`staffId`int(11)NOTNULLAUTO_INCREMENT,//员工编号,主键自增
`staffName`varchar(255)NOTNULL,//员工姓名
`departmentId`int(11)DEFAULTNULL,//员工所在部门,外键
创建考勤表
CREATETABLE`works`(
`staffId`int(11)NOTNULL,//员工编号,外键
`workDate`dateNOTNULL,//工作日
`isWork`int(11)NOTNULL,//是否打卡
4.3创建存储过程
/*创建查询部门全部员工的存储过程,只有一个输入参数:
部门编号*/
DROPPROCEDUREIFEXISTS`dpt_staff`;
DELIMITER;
;
CREATEDEFINER=`root`@`localhost`PROCEDURE`dpt_staff`(`id`int)
BEGIN
SELECT*FROMstaffwheredepartmentId=id;
END
/*调用该存储过程*/
Calldpt_staff(部门编号(1或2));
/*创建查询单人月工资的存储过程,一个输入参数:
员工编号;
一个输出参数:
月总工资;
*/
DROPPROCEDUREIFEXISTS`monthSalary`;
CREATEDEFINER=`root`@`localhost`PROCEDURE`monthSalary`(IN`id`int,OUT`c`int)
DECLAREaINT;
DECLAREbINT;
/*把查询到的结果赋值给变量*/
SELECTbasicSalaryintoaFROMsalaryWHEREstaffId=id;
SELECTdepartmentAllowanceintobFROMsalaryWHEREstaffId=id;
setc=a+b;
selectcasmonthSalary;
/*创建生成年终奖的存储过程,一个输入参数:
员工编号*/
DROPPROCEDUREIFEXISTS`yearBonus`;
CREATEDEFINER=`root`@`localhost`PROCEDURE`yearBonus`(`id`int)
DECLAREaINTDEFAULT1000;
DECLAREbDOUBLE;
DECLAREcINTDEFAULT12;
DECLAREmonth_SalaryINT;
/*调用存储过程monthSalary(),得到其输出参数*/
callmonthSalary(id,month_Salary);
SETb=(month_Salary*c+a)/c;
SELECTb;
/*调用存储过程*/
CallyearBonus(员工编号)
4.4创建视图
/*创建部门员工考勤情况的试图*/
DROPVIEWIFEXISTS`dpt_stf_workinfo`;
CREATEALGORITHM=UNDEFINEDDEFINER=`root`@`localhost`SQL
SECURITYDEFINERVIEW`dpt_stf_workinfo`ASSELECT
department.departmentId,
staff.staffId,
staff.professionId,
works.isWork,
works.workDate
FROM
department
INNERJOINprofessionONprofession.departmentId=
department.departmentId
INNERJOINstaffONstaff.professionId=profession.professionId
ANDstaff.departmentId=department.departmentId
INNERJOINworksONworks.staffId=staff.staffId;
/*创建员工是否领取工资的试图*/
DROPVIEWIFEXISTS`isgetsalary`;
CREATEALGORITHM=UNDEFINEDDEFINER=`root`@`localhost`VIEW`isgetsalary`ASSELECT
staff.staffName,
salary.isGet
staff
INNERJOINsalaryONsalary.staffId=staff.staffId;
/*创建各个员工工资情况的试图*/
DROPVIEWIFEXISTS`salaryinfo`;
SECURITYDEFINERVIEW`salaryinfo`ASSELECT
department.departmentAllowance,
profession.basicSalary
ANDstaff.departmentId=department.departmentId;
4.5创建触发器
/*创建一个有员工离职的时候,离职员工表添加一条记录,员工表删除对应员工信息的触发器*/
DROPTRIGGERIFEXISTS`update_allowance`;
CREATETRIGGER`update_allowance`AFTERUPDATEON`department`
FOREACHROWbegin
updatesalarysetdepartmentAllowance=new.departmentAllowance
wheredepartmentId=departmentId;
end
/*创建一个一个员工离职,对应工资表的数据全部清除*/
DROPTRIGGERIFEXISTS`delete_salary`;
CREATETRIGGER`delete_salary`AFTERDELETEON`staff`FOREACH
ROWbegin
deletefromsalarywherestaffId=old.staffId;
总结
在这一周的课程设计中我学到了许多书本之外的东西,动手能力得到了提高,对数据库系统的设计流程有了进一步的了解。
虽然本周时间比较紧,五天其中有三天考试,但是我还是下来了。
当然在本次课程设计中我也
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 课程设计 报告 工资管理 系统