资源描述
重庆科技学院数据库原理课程设计报告院(系:专业班级: 学生姓名: 学 号: 设计地点(单位)_逸夫科技楼_ _ _ _ 设计题目:_ 工资管理系统设计_ 完成日期: 2019年 06月 26日指导教师评语: _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _设计题目:工资管理系统设计学生姓名第6组:学生姓名: 学号:课程名称数据库原理与应用课程设计专业班级计科2019-01,2,3,4地 点I301、I302起止时间2019.06.22-2019.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王珊、萨师煊数据库系统概述(第四版) 北京:高等教育出版社2019。3C.J.Date著孟小峰、王珊等译数据库系统导论(第8版) 北京:机械工业出版社.2019。4陈根才等. 数据库课程设计浙江浙江大学出版社2019其它第 13 页摘要 在现代企业管理中,企业信息化是提高企业管理效率的重要手段。工资管理是企业管理的重要部分,在公司起着越来越重要作用。本课程设计主要是对公司各项人员的工资进行管理和统计。 工资管理系统分为6个模块,基本信息管理模块、考勤信息管理模块、奖惩信息管理模块、员工履历管理模块、职称信息管理模块、员工工资管理模块。本系统采用SQL Server 2019作为数据库,使用ODBC作为数据源。在实现数据库部分功能时按照要求创建了触发器和存储过程。关键词: 工资管理 SQL Server 2019 触发器 存储过程目录摘要I1 需求分析11.1 系统目标设计11.2 系统功能分析11.3 功能模块分析21.4 系统全局数据流图31.5 数据字典32 概念结构设计72.1 构成系统的实体型72.2 工资管理系统E-R图73 逻辑结构设计93.1逻辑结构简介93.2 关系模型94物理模型设计114.1定义数据库114.2 创建表114.3 创建存储过程144.4 创建触发器17总结19致谢20参考文献211 需求分析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_IDvarchar(15)员工编号 关键字Worker_Namevarchar(8)员工姓名Department_Namevarchar(15)部门名称Sexvarchar(2)性别Birthdaydatetime出生日期Native_Placevarchar(25)籍贯School_Agevarchar(4)学历Majorvarchar(15)专业表1.2 考勤信息记录表(Check_info)名称数据类型说明Worker_IDVarchar(15)员工编号 关键字Worker_Namevarchar(8)员工姓名Monthsvarchar(10)月份编号 关键字Months_daysint本月天数Holidaysint公休假天数Work_daysint出勤天数Business_daysint出差天数Absent_daysint缺席天数Leave_daysint请假天数Late_daysint迟到天数Leave_early_timesint早退天数表1.3 工资信息表(Wage_info)名称数据类型说明Record_IDbigint记录编号 关键字Worker_IDvarchar(15)员工编号Worker_NameVarchar(8)员工姓名Base_Wagefloat基本工资Allowance1float公共补贴Allowance2float出差补贴Rewardfloat奖金Overtime_Moneyfloat加班费Deduct_Checkfloat扣考核Aged_Moneyfloat养老保险Income_taxfloat 所得税Dutyvarchar(10)担任职务表1.4 奖惩记录表(Reward_pun)名称数据类型说明Record_IDbigint记录编号 关键字Worker_IDvarchar(15)员工编号Worker_Namevarchar(8)员工姓名Record_datedatetime奖惩日期Record_typevarchar(2)奖惩类型Record_contentvarchar(30)奖惩内容Record_reasonvarchar(30)奖惩原因Allow_unitvarchar(20)批准单位Remarkvarchar(200)备注 表1.5 职称评定信息表(Pro_title)名称数据类型说明Worker_IDvarchar(15)员工编号 关键字Worker_Namevarchar(8)员工姓名Assess_datedatetime评定日期Assess_unitvarchar(20)评定单位Assess_titlevarchar(8)评定职称Remarkvarchar(200)备注表1.6 工作履历表(Work_age)名称数据类型说明Record_IDBigint记录编号 关键字Worker_IDvarchar(15)员工编号Worker_Namevarchar(8)员工姓名Begin_datedatetime起始日期Over_datedatetime结束日期Unit_Namevarchar(20)单位名称Work_timefloat本单位工作时间Dutyvarchar(10)担任职务Level1varchar(4)级别Remarkvarchar(200)备注表1.6 用户账号表(User_table)名称数据类型说明User_Namevarchar(30)用户名 关键字User_pwdvarchar(30)用户密码Power_levelvarchar(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_level2.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 salaryGOCREATE 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 salaryGOCREATE 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 salaryGOCREATE 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_Wage6000) 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.Userold.User)THEN INSERT INTO User_change VALUES(new.User_Name,new.User_pwd,new.Power_level) END IF; END;总结 在这周的课程设计中我学到了许多书本之外的东西,动手能力得到了提高,对数据库系统的设计流程有了进一步的了解。当然在本次课程设计中也遇到了许多的困难,比如SQL Sever200和PowerDesigner之间的联合运用,数据流图的绘制还有就是对工资管理系统的需求分析不熟悉等。希望在以后的学习中能够对数据库系统的设计更加熟悉。致谢 经过这周的课程设计,使我对数据库系统概论这门学科有了更深一步的认识,也不在像最初接触数据库那么迷茫了,通过一周的课程设计,使我对这学期学的知识有了全面的认识。由于以前大部分时间都在学习理论的知识,所以对项目不是很了解。而学校提供的这次课程设计机会使我收获颇多,从中也发现了许多不足,让我找到了以后学习的方向。在这次程序设计过程中,也出现了不少的问题,但在老师和同学的耐心帮助下,问题都得到了解决,正是有了你们的帮助,我才能顺利地完成学籍管理系统的设计。在此,我感谢帮助过我的所有同学,并向帮助过我的雷亮老师和张亚军老师说一声谢谢参考文献1 孙建伶,林怀忠. 数据库原理与应用. 北京:高等教育出版社 2019.52 梁方明. SQL Server 2000. 北京:希望电子出版社 2019.73 王珊,萨师煊. 数据库系统概论(第四版). 北京:高等教育出版社 2019.54 李树有. 数据库应用系统开发与实例. 北京:人民邮电出版社 2019.95 孟彩霞. 数据库系统原理与应用(本科). 北京:人民邮电出版社 2019.36 陶宏才. 数据库原理和设计. 北京:清华大学出版社 2019.4
展开阅读全文