资源描述
重庆科技学院
《数据库原理》
课程设计报告
院(系
:专业班级:
学生姓名: 学 号:
设计地点(单位)______逸夫科技楼_ _______ _ _
设计题目:____ 工资管理系统设计_______________
完成日期: 2015年 06月 26日
指导教师评语: _______________________________________
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _
成绩(五级记分制):______ __________
指导教师(签字):________ ________
设计题目:工资管理系统设计
学生姓名
第6组:学生姓名: 学号:
课程名称
数据库原理与应用课程设计
专业班级
计科2013—01,2,3,4
地 点
I301、I302
起止时间
2015.06。22—2015.06.26
设计内容及要求
现需要开发一工资管理系统,描述与要实现功能如下:
为了保证系统具有高度的安全性,要有登录界面,进行用户身份的验证。用户分为不同的级别,例如管理员级用户和普通用户。
员工不同工种基本工资的设定:员工工种的不同,工资的标准也不同,允许管理员根据员工的现任职务设定员工的基本工资.包括每个员工的姓名、性别、年龄、工龄、职务及其所在的部门等资料的录入来确定员工的基本工资,以及对现有工作人的基本信息的录入工作。
可以对员工的工资项目进行初始化的设置(包括个人所得税、上月工资零头、本月工资零头、职务工资、级别工资、基本工资、工龄工资、独子费、津贴补贴、离退费、交通费、电话费补贴。书报费补贴等人
对系统管理员的密钥,以及其他系统使用人员的一些信息,例如用户名、权限、密钥的设定。
加班津贴的管理,根据加班的时间和类别给予不同的加班津贴。
根据月工资生成公式,按照员工的考勤情况和工作表现,生成员工工资.
人员查询操作包括按单个员工信息查询、按部门查询和按工资查询等。
员工年终奖金的生成。年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/12。
单位工资报表的生成。可以按照在每个月的每个固定时间生成该单位全体员工的月工资。对于月工资,能够实现按照员工、部门、年、月进行统计分析,产生相应的报表,并可以打印输出此报表。
工资的发放,要求能够实现银行打卡的功能.
工资转账的功能,包括转账设置、工资转账、工资凭证查询、结转下月的功能。
要提供工资管理系统的帮助文件。
(详细的描述见课程设计指导书)
内容与要求:
1。现要求按照数据库系统开发步骤设计满足以上功能的数据库(更详细描述见数据库指导书),并写出实现系统功能的视图、触发器或存储过程.
2.撰写课程设计报告,课程设计报告中应包括其设计数据库的过程:1)系统需求分析2)数据库概念结构设计:要求用PowerDesigner画出系统E-R图;3)逻辑结构设计:要求用PowerDesigner生成物理模型图,得到关系模式,并生成对应的数据字典;4)物理结构设计:用PowerDesigner把以上关系模式生成数据库(导出数据库脚本); 5)数据操作过程:写出为每个关系进行增、删、改、查、的脚本(每个关系,至少两条对应的脚本语句);6)视图、存储过程、触发器设计:创建对应系统功能可能用到的视图,并显示结果,或系统可能用到的存储过程,触发器等。
设计
参数
至少5个表结构;3个存储过程;2个触发器;3个视图。
进度
要求
15.5 讲课 阅读分析任务书
16。2 需求分析 概念结构设计
16。3 逻辑结构设计 物理结构设计
16.4 视图、存储过程、触发器设计 撰写报告
16.5 交设计报告书
备注:16周周一放假,所以15周周五下达设计任务书。
参考资料
1.雷亮等《数据库原理课程设计》指导书
2.王珊、萨师煊.《数据库系统概述》(第四版) .北京:高等教育出版社.2006。
3.C。J.Date著.孟小峰、王珊等译.《数据库系统导论》(第8版) .北京:机械工业出版社.2007。
4.陈根才等. 数据库课程设计.浙江.浙江大学出版社.2007
其它
重庆科技学院《数据库原理》课程设计报告
摘要
在现代企业管理中,企业信息化是提高企业管理效率的重要手段。工资管理是企业管理的重要部分,在公司起着越来越重要作用。本课程设计主要是对公司各项人员的工资进行管理和统计。
工资管理系统分为6个模块,基本信息管理模块、考勤信息管理模块、奖惩信息管理模块、员工履历管理模块、职称信息管理模块、员工工资管理模块。本系统采用SQL Server 2008作为数据库,使用ODBC作为数据源.在实现数据库部分功能时按照要求创建了触发器和存储过程。
关键词: 工资管理 SQL Server 2008 触发器 存储过程
14
目录
摘要 I
1 需求分析 1
1。1 系统目标设计 1
1.2 系统功能分析 1
1。3 功能模块分析 2
1.4 系统全局数据流图 3
1.5 数据字典 3
2 概念结构设计 7
2。1 构成系统的实体型 7
2。2 工资管理系统E-R图 7
3 逻辑结构设计 9
3。1逻辑结构简介 9
3。2 关系模型 9
4物理模型设计 11
4.1定义数据库 11
4.2 创建表 11
4.3 创建存储过程 14
4。4 创建触发器 17
总结 19
致谢 20
参考文献 21
1 需求分析
1.1 系统目标设计
实现企业的工资管理系统化,使企业管理更加现代化
1.2 系统功能分析
(1):为了保证系统具有高度的安全性,要有登录界面,进行用户身份的验证。用户分为不同的级别,例如管理员级用户和普通用户。
(2):员工不同工种基本工资的设定:员工工种的不同,工资的标准也不同,允许管理员根据员工的现任职务设定员工的基本工资。包括每个员工的姓名、性别、年龄、工龄、职务及其所在的部门等资料的录入来确定员工的基本工资,以及对现有工作人的基本信息的录入工作。
(3):可以对员工的工资项目进行初始化的设置(包括个人所得税、职务工资、级别工资、基本工资、工龄工资。对系统管理员的密钥,以及其他系统使用人员的一些信息,例如用户名、权限、密钥的设定.
(4):根据月工资生成公式,按照员工的考勤情况和工作表现,生成员工工资。
人员查询操作包括按单个员工信息查询、按部门查询和按工资查询等.
(5):工年终奖金的生成。年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/12。
1。3 功能模块分析
根据系统功能的基本要求,可对整个系统划分为几个模块
工资管理系统
基本信息管理
考勤信息管理
奖惩记录管理
员工履历管理
职称信息管理
工资信息管理
系统管理
员工基本信息录入及维护
员工基本信息的查询
考勤信息的录入与维护
员工考勤信息的查询
奖惩信息的录入与维护
员工奖惩信息的查询
员工履历的录入与维护
员工履历信息的查询
职称评定的录入与维护
职称评定的查询
工资的录入与维护
工资的查询
用户账号管理
系统数据备份
图1.1 功能模块分析
1.4 系统全局数据流图
系统的全局数据流图,也称第一层数据流图,是从整体上描述系统的数据流,反映系统数据的整体流向,给设计者、开发者和用户一个总体描述.
图1。2 数据流图
1。5 数据字典
表1。1 员工基本信息表(Base_data)
名称
数据类型
说明
Worker_ID
varchar(15)
员工编号 关键字
Worker_Name
varchar(8)
员工姓名
Department_Name
varchar(15)
部门名称
Sex
varchar(2)
性别
Birthday
datetime
出生日期
Native_Place
varchar(25)
籍贯
School_Age
varchar(4)
学历
Major
varchar(15)
专业
表1.2 考勤信息记录表(Check_info)
名称
数据类型
说明
Worker_ID
Varchar(15)
员工编号 关键字
Worker_Name
varchar(8)
员工姓名
Months
varchar(10)
月份编号 关键字
Months_days
int
本月天数
Holidays
int
公休假天数
Work_days
int
出勤天数
Business_days
int
出差天数
Absent_days
int
缺席天数
Leave_days
int
请假天数
Late_days
int
迟到天数
Leave_early_times
int
早退天数
表1。3 工资信息表(Wage_info)
名称
数据类型
说明
Record_ID
bigint
记录编号 关键字
Worker_ID
varchar(15)
员工编号
Worker_Name
Varchar(8)
员工姓名
Base_Wage
float
基本工资
Allowance1
float
公共补贴
Allowance2
float
出差补贴
Reward
float
奖金
Overtime_Money
float
加班费
Deduct_Check
float
扣考核
Aged_Money
float
养老保险
Income_tax
float
所得税
Duty
varchar(10)
担任职务
表1.4 奖惩记录表(Reward_pun)
名称
数据类型
说明
Record_ID
bigint
记录编号 关键字
Worker_ID
varchar(15)
员工编号
Worker_Name
varchar(8)
员工姓名
Record_date
datetime
奖惩日期
Record_type
varchar(2)
奖惩类型
Record_content
varchar(30)
奖惩内容
Record_reason
varchar(30)
奖惩原因
Allow_unit
varchar(20)
批准单位
Remark
varchar(200)
备注
表1.5 职称评定信息表(Pro_title)
名称
数据类型
说明
Worker_ID
varchar(15)
员工编号 关键字
Worker_Name
varchar(8)
员工姓名
Assess_date
datetime
评定日期
Assess_unit
varchar(20)
评定单位
Assess_title
varchar(8)
评定职称
Remark
varchar(200)
备注
表1。6 工作履历表(Work_age)
名称
数据类型
说明
Record_ID
Bigint
记录编号 关键字
Worker_ID
varchar(15)
员工编号
Worker_Name
varchar(8)
员工姓名
Begin_date
datetime
起始日期
Over_date
datetime
结束日期
Unit_Name
varchar(20)
单位名称
Work_time
float
本单位工作时间
Duty
varchar(10)
担任职务
Level1
varchar(4)
级别
Remark
varchar(200)
备注
表1.6 用户账号表(User_table)
名称
数据类型
说明
User_Name
varchar(30)
用户名 关键字
User_pwd
varchar(30)
用户密码
Power_level
varchar(8)
权限级别
2 概念结构设计
2。1 构成系统的实体型
由工资管理系统的数据流图和数据字典,抽取出系统的7个主要实体,包括:员工、考勤记录、工资、奖惩记录、职称评定信息、履历、账号。
员工实体型属性:Worker_ID Worker_Name Department_Name Sex Birthday Native_Place School_Age Major Link_Phone Address
考勤记录实体型属性:Worker_ID Worker_Name Months Months_days Holidays Work_days Business_days Absent_days Leave_days Late_days Leave_early_times
工资实体型属性: Record_ID Worker_ID Worker_Name Base_Wage Allowance1 Allowance2 Reward Overtime_Money Deduct_Check Aged_Money Medical_Money Compo_Money Unemploy_Money Housing_Money Income_tax Real_wage Give_date
奖惩记录实体型属性: Record_ID Worker_ID Worker_Name Record_date Record_type Record_content Record_reason Allow_unit Remark
职称评定信息实体型属性: Worker_ID Worker_Name Assess_date Assess_unit Assess_title Remark
履历实体型属性: Record_ID Worker_ID Worker_Name Begin_date Over_date Unit_Name Work_time Duty Level1 Remark
账号实体型属性: User_Name User_pwd Power_level
2.2 工资管理系统E-R图
图2。1 工资管理系统E—R图
3 逻辑结构设计
3.1逻辑结构简介
逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构.
设计逻辑结构一般分为3步进行:
(1) 将概念结构转换为一般的关系、网状、层次模型;
(2) 将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;
(3) 对数据模型进行优化。
3.2 关系模型
将E—R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个关系模式,一个多对多的关系可以转化为一个关系模式,而一对多的关系可以融合在其他的相关的关系模式中.例如:
(1) 员工与履历之间是一对多的关系,所以将员工和履历以及属于关系设计成以下关系模式:
员工(Worker_ID Worker_Name Department_Name Sex Birthday Native_Place School_Age Major Link_Phone Address)
奖惩记录(Record_ID Worker_ID Worker_Name Record_date Record_type Record_content Record_reason Allow_unit Remark)
属于(Worker_ID Worker_Name Department_Name Sex Birthday Native_Place School_Age Major Link_Phone Address Record_ID Record_date Record_type Record_content Record_reason Allow_unit Remark )
(2) 员工与账号之间是一对一的关系,所以将员工和账号以及属于关系设计成以下关系模式:
员工(Worker_ID Worker_Name Department_Name Sex Birthday Native_Place School_Age Major Link_Phone Address)
账号 (User_Name User_pwd Power_level)
属于(Worker_ID Worker_Name Department_Name Sex Birthday Native_Place School_Age Major Link_Phone Address User_pwd Power_level )
4物理模型设计
数据库物理设计是将逻辑设计影射到存储介质上,利用可用的硬件和软件功能尽可能快地对数据进行物理访问和维护.
4.1定义数据库
SQL Server 2000数据库文件分为3中类型:主数据文件、次数据文件和日志文件。
通过SQL语言进行数据库创建,创建数据库的语句如下:
Create database 工资管理系统;
4。2 创建表
创建员工基本信息表 Base_data
CREATE TABLE Base_data
( Worker_ID varchar(15) PRIMARY KEY,/*员工ID ,主码*/
Worker_Name varchar(8) Not null,/*员工姓名*/
Department_Name varchar(15) Not null,/*部门名称*/
Sex varchar(2) Not null,/*性别*/
Birthday datetime Not null,/*出生日期*/
Native_Place varchar(25) Not null,/*籍贯*/
School_Age varchar(4) Not null,/*学历*/
Major varchar(15) Not null,/*专业*/
Link_Phone varchar(11) Not null,/*联系电话*/
Address varchar(20) Not null,/*住址*/
);
考勤信息记录表 Check_info
CREATE TABLE Check_info
( Months varchar(10) ,
Worker_ID varchar(15),
Months_days int, /*本月天数*/
Holidays int, /*公休假天数*/
Work_days int, /*出勤天数*/
Business_days int,/*出差天数*/
Absent_days int,/*缺席天数*/
Leave_days int,/*请假天数*/
Late_days int,/*迟到天数*/
Leave_early_times int,/*早退天数*/
PRIMARY KEY (Months,Worker_ID),
FOREIGN KEY (Worker_ID) REFERENCES Base_data(Worker_ID),
);
工资信息表 Wage_info
CREATE TABLE Wage_info
( Record_ID bigint PRIMARY KEY,/*记录编号*/
Worker_ID varchar(15),
Worker_Name varchar(8),
Base_Wage float,/*基本工资*/
Allowance1 float, /*公共补贴*/
Allowance2 float,/*出差补贴*/
Reward float, /*奖金*/
Overtime_Money float, /*加班费*/
Deduct_Check float, /*扣考核*/
Aged_Money float, /*养老保险*/
Medical_Money float, /*医疗保险*/
Compo_Money float, /*工伤保险*/
Unemploy_Money float, /*失业保险*/
Housing_Money float, /*住房公积金*/
Income_tax float, /*所得税*/
Real_wage float, /*实发工资*/
Give_date float, /*发放月份*/
FROEIGN KEY (Worker_ID) REFERENCES Base_data(Worker_ID),
);
奖惩记录表(Reward_pun)
CREATE TABLE Reward_pun
( Record_ID bigint PRIMARY KEY,/*记录编号*/
Worker_ID varchar(15),
Worker_Name varchar(8),
Record_date datetime,/*奖惩日期*/
Record_type varchar(2),/*奖惩类型*/
Record_content varchar(30),/*奖惩内容*/
Record_reason varchar(30),/*奖惩原因*/
Allow_unit varchar(20),/*批准单位*/
Remark varchar(200),/*备注 */
FORERGN KEY (Worker_ID) REFERENCES Base_data(Worker_ID),
);
职称评定信息表 Pro_title
CREATE TABLE Pro_title
( Worker_ID varchar(15) PRIMARY KEY,/*员工编号*/
Worker_Name varchar(8),
Assess_date datetime,/*评定日期*/
Assess_unit varchar(20),/*评定单位*/
Assess_title varchar(8),/*评定职称*/
Remark varchar(200),/*备注*/
);
工作履历表 Work_age
CREATE TABLE Work_age
( Record_ID Bigint PRIMARY KEY,/*记录编号*/
Worker_ID varchar(15),
Begin_date datetime,/*起始日期*/
Over_date datetime,/*结束日期*/
Unit_Name varchar(20),/*单位名称*/
Work_time float,/*本单位工作时间*/
Duty varchar(10),/*担任职务*/
Level1 varchar(4),/*级别*/
Remark varchar(200),/*备注*/
FORERGN KEY (Worker_ID) REFERENCES Base_data(Worker_ID),
);
用户账号表 User_table
CREATE TABLE User_table
( User_Name varchar(30) PRIMARY KEY,/*用户名*/
User_pwd varchar(30),/*用户密码*/
Power_level varchar(8),/*权限级别*/
);
4。3 创建存储过程
在奖惩记录表中创建更新奖惩的存储过程:
USE [salary]
GO
CREATE PROCEDURE [update_奖惩记录表_1]
(@Record_ID_1 [bigint],
@Record_ID_2 [bigint],
@Worker_ID_3 [varchar](15),
@Worker_Name_4 [varchar](8),
@Record_date_5 [datetime],
@Record_type_6 [varchar](2),
@Record_content_7 [varchar](30),
@Record_reason_8 [varchar](30),
@Allow_unit_9 [varchar](20))
AS UPDATE [salary].[dbo]。[奖惩记录表]
SET [Record_ID] = @Record_ID_2,
[Worker_ID] = @Worker_ID_3,
[Worker_Name] = @Worker_Name_4,
[Record_date] = @Record_date_5,
[Record_type] = @Record_type_6,
[Record_content] = @Record_content_7,
[Record_reason] = @Record_reason_8,
[Allow_unit] = @Allow_unit_9
WHERE
( [Record_ID] = @Record_ID_1)
在员工基本信息表上创建一个插入员工信息的存储过程:
USE [salary]
GO
CREATE PROCEDURE [insert_员工基本信息表_2]
(@Worker_ID_1 [varchar](15),
@Archives_ID_2 [varchar](10),
@Worker_Name_3 [varchar](8),
@Department_Name_4 [varchar](10),
@Sex_5 [varchar](2),
@Birthday_6 [datetime],
@Native_Place_7 [varchar](25),
@School_Age_8 [varchar](4),
@Major_9 [varchar](15),
@Graduate_Sch_10 [varchar](10),
@Come_Time_11 [datetime],
@Link_Phone_12 [varchar](11),
@Address_13 [varchar](20),
@Remark_14 [varchar](200))
AS INSERT INTO [salary].[dbo].[员工基本信息表]
( [Worker_ID],
[Archives_ID],
[Worker_Name],
[Department_Name],
[Sex],
[Birthday],
[Native_Place],
[School_Age],
[Major],
[Graduate_Sch],
[Come_Time],
[Link_Phone],
[Address],
[Remark])
VALUES
( @Worker_ID_1,
@Archives_ID_2,
@Worker_Name_3,
@Department_Name_4,
@Sex_5,
@Birthday_6,
@Native_Place_7,
@School_Age_8,
@Major_9,
@Graduate_Sch_10,
@Come_Time_11,
@Link_Phone_12,
@Address_13,
@Remark_14)
在用户账号表上建立一个删除用户账号的存储过程:
USE [salary]
GO
CREATE PROCEDURE [delete_用户账号表_1]
(@User_Name_1 [varchar])
AS DELETE [salary]。[dbo]。[用户账号表]
WHERE
( [User_Name] = @User_Name_1)
4。4 创建触发器
定义一个BEFORE行级的触发器,为工资信息表Wage_info定义完整性规则“总经理的基本工资不得低于6000元,如果低于6000元,刚自动改为6000元”.
CREATE TRIGGER Insert_or Update_Wage
BEFORE INSERT OR UPDATE ON Wage_info
FOR EACH ROW
AS BEGIN
IF(new.Duty='总经理') AND (new。Base_Wage<6000))
THEN new。Base_Wage=6000;
END IF;
END;
定义一个AFTER行级触发器,当用户账号表User_table的用户发生变化后就自动在用户变化表User_change中增加一条相应的记录.
CREATE TABLE User_change
( User_Name varchar(30) PRIMARY KEY,
User_pwd varchar(30),
Power_level varchar(8),
);
CREATE TRIGGER Insert_User
AFTER INSERT ON User_table
FOR EACH ROW
AS BEGIN
INSERT INTO User_change
VALUES( new。User_Name,new.User_pwd,new。Power_level)
END;
CREATE TRIGGER Update_User
AFTER UPDATE ON User_table
FOR EACH ROW
AS BEGIN
IF (new。User<〉old。User)THEN INSERT INTO User_change
VALUES(new。User_Name,new。User_pwd,new。Power_level)
END IF;
END;
总结
在这周的课程设计中我学到了许多书本之外的东西,动手能力得到了提高,对数据库系统的设计流程有了进一步的了解.当然在本次课程设计中也遇到了许多的困难,比如SQL Sever200和PowerDesigner之间的联合运用,数据流图的绘制还有就是对工资管理系统的需求分析不熟悉等。希望在以后的学习中能够对数据库系统的设计更加熟悉。
致谢
经过这周的课程设计,使我对数据库系统概论这门学科有了更深一步的认识,也不在像最初接触数据库那么迷茫了,通过一周的课程设计,使我对这学期学的知识有了全面的认识。由于以前大部分时间都在学习理论的知识,所以对项目不是很了解。而学校提供的这次课程设计机会使我收获颇多,从中也发现了许多不足,让我找到了以后学习的方向。在这次程序设计过程中,也出现了不少的问题,但在老师和同学的耐心帮助下,问题都得到了解决,正是有了你们的帮助,我才能顺利地完成学籍管理系统的设计。在此,我感谢帮助过我的所有同学,并向帮助过我的雷亮老师和张亚军老师说一声谢谢
参考文献
[1] 孙建伶,林怀忠. 数据库原理与应用. 北京:高等教育出版社 2006.5
[2] 梁方明。 SQL Server 2000。 北京:希望电子出版社 2002。7
[3] 王珊,萨师煊。 数据库系统概论(第四版)。 北京:高等教育出版社 2006。5
[4] 李树有. 数据库应用系统开发与实例. 北京:人民邮电出版社 2005.9
[5] 孟彩霞. 数据库系统原理与应用(本科)。 北京:人民邮电出版社 2008。3
[6] 陶宏才。 数据库原理及设计。 北京:清华大学出版社 2004.4
展开阅读全文