数据库原理课程设计报告工资管理系统.docx

上传人:b****5 文档编号:5914956 上传时间:2023-01-02 格式:DOCX 页数:15 大小:69.53KB
下载 相关 举报
数据库原理课程设计报告工资管理系统.docx_第1页
第1页 / 共15页
数据库原理课程设计报告工资管理系统.docx_第2页
第2页 / 共15页
数据库原理课程设计报告工资管理系统.docx_第3页
第3页 / 共15页
数据库原理课程设计报告工资管理系统.docx_第4页
第4页 / 共15页
数据库原理课程设计报告工资管理系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据库原理课程设计报告工资管理系统.docx

《数据库原理课程设计报告工资管理系统.docx》由会员分享,可在线阅读,更多相关《数据库原理课程设计报告工资管理系统.docx(15页珍藏版)》请在冰豆网上搜索。

数据库原理课程设计报告工资管理系统.docx

数据库原理课程设计报告工资管理系统

重庆科技学院

 

课程设计报告

院(系):

_电气与信息工程学院专业班级:

计科1203

学生姓名:

赵弈胰学号:

2012442084

设计地点(单位)______I308__________

设计题目:

___工资管理系统设计

完成日期:

2016年1月7日

指导教师评语:

____________________________________

______________________________________________________________________________________________________________________________________________________

 

成绩(五级记分制):

________________

指导教师(签字):

________________

摘要

本次数据库课程设计不要求界面和外部应用程序的设计,只设计数据库部分。

工资管理系统采用mysql作为数据库后台。

工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、增加、删除等,设计触发器、存储过程使管理更方便,迅速准确地完成各种工资信息的统计计算和汇总工作,快速打印出工资报表,针对系统服务对象的具体要求,设计了企业工资管理系统。

关键词:

工资管理系统msyql触发器存储过程

 

重庆科技学院

课程设计任务书3

设计题目:

工资管理系统设计

学生姓名

赵弈胰

课程名称

数据库原理及应用课程设计

专业班级

物联网2014-01物联网2014-02

地点

I308

起止时间

2015.1.4-2015.1.8

设计内容及要求

内容:

学生根据本课程设计指导书中的题目,进行设计。

为了保证系统具有高度的安全性,要有登录界面,进行用户身份的验证。

用户分为不同的级别,例如管理员级用户和普通用户。

员工不同工种基本工资的设定:

员工工种的不同,工资的标准也不同,允许管理员根据员工的现任职务设定员工的基本工资。

包括每个员工的姓名、性别、年龄、工龄、职务及其所在的部门等资料的录入来确定员工的基本工资,以及对现有工作人的基本信息的录入工作。

可以对员工的工资项目进行初始化的设置(包括个人所得税、上月工资零头、本月工资零头、职务工资、级别工资、基本工资、工龄工资、独子费、津贴补贴、离退费、交通费、电话费补贴。

书报费补贴等人

对系统管理员的密钥,以及其他系统使用人员的一些信息,例如用户名、权限、密钥的设定。

加班津贴的管理,根据加班的时间和类别给予不同的加班津贴。

根据月工资生成公式,按照员工的考勤情况和工作表现,生成员工工资。

人员查询操作包括按单个员工信息查询、按部门查询和按工资查询等。

员工年终奖金的生成。

年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/12。

单位工资报表的生成。

可以按照在每个月的每个固定时间生成该单位全体员工的月工资。

对于月工资,能够实现按照员工、部门、年、月进行统计分析,产生相应的报表,并可以打印输出此报表。

工资的发放,要求能够实现银行打卡的功能。

工资转账的功能,包括转账设置、工资转账、工资凭证查询、结转下月的功能。

要提供工资管理系统的帮助文件。

要求:

按照数据库系统开发步骤进行数据库概念结构设计、逻辑结构设计、物理结构设计,使学生掌握数据库应用软件的开发流程,SQL语句的使用和存储过程的使用。

设计

参数

 

至少5个表结构;3个存储过程;2个触发器;3个视图。

 

进度

要求

18周星期一14:

00~17:

40学生完成任务分配,数据库设计的软件需求,并祥细了解需求说明。

18周星期二14:

00~17:

40完成数据库概念设计,画出数据库E-R模型。

18周星期三14:

00~17:

40完成数据库逻辑设计,并编写出数据库生成脚本

18周星期四14:

00~17:

40完成数据库常用的Procedure,View设计、Trigger等设计,并生测试数据脚本

18周星期五14:

00~17:

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

Int

员工年龄

staffSex

Varchar

员工性别

staffPhone

Varchar

员工电话

departmentId

Int

部门编号外键

professionId

Int

工种号外键

 

表1.2部门信息表

名称

数据类型

说明

departmentId

Int

部门编号主键

departmentName

Varchar

部门名字

departmentAllowance

Int

部门补贴

departmentPhone

Varchar

部门电话

 

表1.3工种表

名称

数据类型

说明

professionId

Int

工种编号主键

professionName

Varchar

工种名字

departmentId

Int

部门编号外键

basicSalary

Int

基本工资

 

表1.4工资表

名称

数据类型

说明

staffId

Int

员工号外键

departmentId

Int

部门号外键

basicSalary

Int

基本工资外键

departmentAllowance

Int

部门补贴外键

isGet

Int

是否得到工资

 

表1.5考勤表

名称

数据类型

说明

staffId

Int

员工号外键

workDate

Date

工作日

isWork

Int

是否打卡

 

表1.6离职员工表

名称

数据类型

说明

StaffId

Int

员工编号主键

staffName

Varchar

员工姓名

staffAge

Int

员工年龄

staffSex

Varchar

员工性别

staffPhone

Varchar

员工电话

departmentId

Int

部门编号

professionId

Int

工种号

 

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,//员工姓名

`staffAge`int(11)DEFAULTNULL,//员工年龄

`staffSex`varchar(255)DEFAULTNULL,//员工性别

`staffPhone`varchar(255)DEFAULTNULL,//员工电话

`departmentId`int(11)DEFAULTNULL,//员工所在部门,外键

`professionId`int(11)DEFAULTNULL,//员工所属工种,外键

PRIMARYKEY(`staffId`),

创建考勤表

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

;;

DELIMITER;

/*调用该存储过程*/

Calldpt_staff(部门编号(1或2));

/*创建查询单人月工资的存储过程,一个输入参数:

员工编号;一个输出参数:

月总工资;*/

DROPPROCEDUREIFEXISTS`monthSalary`;

DELIMITER;;

CREATEDEFINER=`root`@`localhost`PROCEDURE`monthSalary`(IN`id`int,OUT`c`int)

BEGIN

DECLAREaINT;

DECLAREbINT;

/*把查询到的结果赋值给变量*/

SELECTbasicSalaryintoaFROMsalaryWHEREstaffId=id;

SELECTdepartmentAllowanceintobFROMsalaryWHEREstaffId=id;

setc=a+b;

selectcasmonthSalary;

END

;;

DELIMITER;

/*创建生成年终奖的存储过程,一个输入参数:

员工编号*/

DROPPROCEDUREIFEXISTS`yearBonus`;

DELIMITER;;

CREATEDEFINER=`root`@`localhost`PROCEDURE`yearBonus`(`id`int)

BEGIN

DECLAREaINTDEFAULT1000;

DECLAREbDOUBLE;

DECLAREcINTDEFAULT12;

DECLAREmonth_SalaryINT;

/*调用存储过程monthSalary(),得到其输出参数*/

callmonthSalary(id,month_Salary);

SETb=(month_Salary*c+a)/c;

SELECTb;

END

;;

DELIMITER;

/*调用存储过程*/

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.staffId,

staff.staffName,

salary.isGet

FROM

staff

INNERJOINsalaryONsalary.staffId=staff.staffId;

/*创建各个员工工资情况的试图*/

DROPVIEWIFEXISTS`salaryinfo`;

CREATEALGORITHM=UNDEFINEDDEFINER=`root`@`localhost`SQL

SECURITYDEFINERVIEW`salaryinfo`ASSELECT

department.departmentId,

staff.staffId,

staff.staffName,

staff.professionId,

department.departmentAllowance,

profession.basicSalary

FROM

department

INNERJOINprofessionONprofession.departmentId=

department.departmentId

INNERJOINstaffONstaff.professionId=profession.professionId

ANDstaff.departmentId=department.departmentId;

 

4.5创建触发器

/*创建一个有员工离职的时候,离职员工表添加一条记录,员工表删除对应员工信息的触发器*/

DROPTRIGGERIFEXISTS`update_allowance`;

DELIMITER;;

CREATETRIGGER`update_allowance`AFTERUPDATEON`department`

FOREACHROWbegin

updatesalarysetdepartmentAllowance=new.departmentAllowance

wheredepartmentId=departmentId;

end

 

/*创建一个一个员工离职,对应工资表的数据全部清除*/

DROPTRIGGERIFEXISTS`delete_salary`;

DELIMITER;;

CREATETRIGGER`delete_salary`AFTERDELETEON`staff`FOREACH

ROWbegin

deletefromsalarywherestaffId=old.staffId;

end

 

总结

在这一周的课程设计中我学到了许多书本之外的东西,动手能力得到了提高,对数据库系统的设计流程有了进一步的了解。

虽然本周时间比较紧,五天其中有三天考试,但是我还是下来了。

当然在本次课程设计中我也

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1