资源描述
第 23 页 共 23 页
课 程 设 计
课程名称___数据库原理课程设计_
题目名称 人员信息管理系统
学生学院 计算机学院
专业班级 计算机科学与技术八班
学 号
学生姓名
指导教师 左亚尧
20 13 年 1 月 16 日
目 录
一、引言…………………………………………………………….……2
二、需求分析…………………………………………………………….2
三、概念结构设计………………………………………………………8
四、逻辑结构设计………………………………………………………9
五、物理结构设计………………………………………………………10
六、数据库装载与实施………………………………………………11
七、系统设计及测试数据库……………………………………………15
八、实现的主要功能与代码及使用说明………………………………20
九、设计环境……………………………………………………………21
十、心得体会………………………………………………………21
一、引 言
1.1课程设计选题
<<人员信息管理系统>>;
1.2本选题的设计背景
为了方便企业更好的管理员工,员工更好的查询自己的信息。设计了这个分管理员与员工两种用户的人事管理系统。
二、需求分析
企业人事管理系统是为企业人事部门能更好的管理人员而设计的,该系统能达到快捷、方便人事部门对人员的管理,基于管理员设计的。
2.1、系统功能模块
企业人事管理系统分为六个模块:员工信息管理模块、出勤管理模块、工资管理模块、福利管理模块、培训管理模块、奖罚管理模块
1、 员工模块:对本员工的基本信息进行查询、修改个人密码,选修培训课。
2、 管理员模块:有条件的对员工信息、部门信息、职位信息、工作信息查询;修改和删除员工信息、部门信息、职位信息;增加员工信息、部门信息、职位信息。
通过对企业相关人员深入地进行交流,亲身参加业务工作了解业务活动,知道了该企业具体的需求,做了如下的分析:
2.2、信息需求
员工信息:员工编号、姓名、性别、电话、出生日期、学历、工作日期
部门信息:部门编号、部门名称、部门人数
职位信息:职位编号、职位名称、职位人数,职位等级
工资信息:工资等级编号、基本工资/月、加班工资/天、请假扣款/天、分红百分比/季
福利信息:养老保险、失业保险、生育保险、医疗保险、工伤保险、住房公积金
出勤信息:工作时间、出勤类别编号、出勤类别名称(白/夜/中)。
奖罚信息:奖罚编号、奖罚项目、奖罚金
课程信息:课程编号、课程名、学时、教材;
2.3、建立数据字典
2.3.1数据项
(1) 员工信息表:(Employee)
员工信息:员工编号、姓名、性别、电话、出生日期、学历、工作日期、密码,工资编号、部门编号,职位编号,出勤类别编号
数据项名
数据别名
数据类型
取值范围
是否为空
说明
员工编号
Employee_no
Varchar(20)
Not null
主键
姓名
Employee_name
Varchar(20)
Not null
性别
Employee_sex
Varchar(20)
男或女
出生日期
Employee_birth
datament
Not null
工作日期
Employee_work_date
datement
Not null
电话
Employee_phone_no
Varchar(20)
密码
Employee_password
Varchar(20)
工资等级编号
Salary_degree_no
Varchar(20)
外键
部门编号
Department_no
Varchar(20)
外键
职位编号
Occupation_no
Varchar(20)
外键
出勤类别编号
Work_type_no
Varchar(20)
外键
(2) 部门信息表:(Department)部门编号、部门名称、部门人数。
数据项名
数据别名
数据类型
取值范围
是否为空
说明
部门编号
Department_no
Varchar(20)
Not null
主键
部门名称
Department_name
Varchar(20)
Not null
部门人数
Department_totality
Int
(3) 职位信息表:职位编号、职位名称、职位人数,职位等级。部门编号
数据项名
数据别名
数据类型
取值范围
是否为空
说明
职位编号
Occupation_no
Varchar(20)
Not null
主键
职位名称
Occupation_name
Varchar(20)
Not null
职位人数
Occupation_totality
Int
职位等级
Occupation_degree
Varchar(20)
部门编号
Department_no
Varchar(20)
外键`
(4) 工资信息表:(Salary)
工资编号、工资等级、基本工资/月、加班工资/天、请假扣款/天、分红百分比/季。
数据项名
数据别名
数据类型
取值范围
是否为空
说明
工资等级编号
Salary_degree_no
Varchar(20)
Not null
主键
基本工资/月
Elementary_salary
float
0----15000
加班工资/天
Extra_work_salary
float
0---1500
请假扣款/天
Cut_payment
float
0---1500
分红百分比/季
Bonus_percentage
Varchar(20)
(5) 福利信息表:(Welfare)
养老保险、失业保险、生育保险、医疗保险、工伤保险、住房公积金。员工编号
数据项名
数据别名
数据类型
取值范围
是否为空
说明
养老保险
Endowment_insurance
float
失业保险
Unemployment_insurance
float
生育保险
Birth_insurance
float
医疗保险
Medical_insurance
float
工伤保险
Accident_insurance
float
住房公积金
House_found
float
员工编号
Employee_no
Varchar(20)
外键
(6) 出勤信息表:(Work)工作时间、出勤类别编号、出勤类别名称(白/夜/中)。
数据项名
数据别名
数据类型
取值范围
是否为空
说明
工作时间
Work_time
int
0--24
出勤类别编号
Work_type_no
Varchar(20)
Not null
主键
出勤类别名称
Work_type
Varchar(20)
(7) 奖罚信息表:奖罚编号、奖罚项目、奖罚金
数据项名
数据别名
数据类型
取值范围
是否为空
说明
奖罚编号
Reword_punish_no
Varchar(20)
Not null
主键
奖罚项目
Rework_punish_name
Varchar(20)
奖罚金
Reword_punish_found
float
0---10000
(8) 选课信息表:时间、成绩、员工编号、课程编号
数据项名
数据别名
数据类型
取值范围
是否为空
说明
时间
Select_time
datetime
成绩
Grade
float
0---100
员工编号
Employee_no
Varchar(20)
外键(与Course_no)构成主键
课程编号
Course_no
Varchar(20)
外键(与Employee_no)构成主键
(9) 接受惩罚信息表:时间、员工编号、奖罚编号
数据项名
数据别名
数据类型
取值范围
是否为空
说明
时间
Time
datetime
员工编号
Employee_no
Varchar(20)
外键(与Employee_no)构成主键
奖罚编号
Rework_punish_no
Varchar(20)
外键(与Employee_no)构成主键
(10) 课程信息表:课程编号,课程名,学时,教材。
数据项名
数据别名
数据类型
取值范围
是否为空
说明
课程编号
Course_no
Varchar(20)
Not null
主键
课程名
Course_name
Varchar(20)
Not null
学时
Course_time
int
教材
Course_book
Varchar(20)
2.3.2 数据结构
名称
别名
含义
组成
员工信息表
Employee
员工基本信息
员工编号、姓名、性别、电话、出生日期、学历、工作日期。密码,工资编号、部门编号,职位编,出勤类别编号
部门信息表
Department
部门基本信息
部门编号、部门名称、部门人数。
职位信息表
Occupation
职位基本信息
职位编号、职位名称、职位人数,职位等级。部门编号
工资信息表
Salary
工资基本信息
工资编号、工资等级、基本工资/月、加班工资/天、请假扣款/天、分红百分比/季。
福利信息表
Welfare
福利情况基本信息
养老保险、失业保险、生育保险、医疗保险、工伤保险、住房公积金。员工编号
出勤信息表
Work
工作情况基本信息
工作时间、出勤类别编号
出勤类别名称(白/夜/中)。
惩罚信息表
Rework
惩罚情况基本信息
奖罚编号、奖罚项目、奖罚金
选课信息表
Select_Course
员工选课情况基本信息
时间、成绩、员工编号、课程编号。
课程信息表
Course
课程基本信息
课程编号,学时,课程名
接受惩罚信息表
Acdept_Rework
员工惩罚情况基本信息
时间、员工编号、奖罚编号
三、概念结构设计
3.1、整体E-R图设计
四、逻辑结构设计
4.1 逻辑结构表
员工信息(Employee):员工编号、姓名、性别、电话、出生日期、学历、工作日期,密码。工资编号、部门编号,职位编号,出勤类别编号
部门信息(Department):部门编号、部门名称、部门人数。
职位信息(Occupation):职位编号、职位名称、职位人数,职位等级。部门编号
工资信息(Salary):工资等级编号、基本工资/月、加班工资/天、请假扣款/天、分红百分比/季。
福利信息(Welfare):养老保险、失业保险、生育保险、医疗保险、工伤保险、住房公积金。员工编号
出勤信息(Work):工作时间、出勤类别编号、出勤类别名称(白/夜/中)。
奖罚信息(Rework):奖罚编号、奖罚项目、奖罚金。
课程信息(Course):课程名,学时,课程编号,教材。
选课信息(Select_Course):时间、成绩、员工编号、课程编号。(课程名和课程编号共同组成主码,同时课程名是课程信息表的外码,员工编号是员工信息表的外码)
接受惩罚信息(Accept_Rework):时间、员工编号、奖罚编号(奖罚编号和课程编号共同组成主码,同时奖罚编号是奖罚信息表的外码,员工编号是员工信息表的外码)
(以上蓝颜色的是表的主码,红颜色的是外码)以上表全部达到三范式。
4.2数据库关系图
五、 物理结构设计
5.1、数据的存放位置及系统配置
六、 数据库装载、实施
6.1用SQL SEVER 2008建立数据库。
6.1.1用SQL 语句建立表:
create database mypersonal
use personal
create table Password(
Employee_no Varchar(20) primary key not null,
foreign key(Employee_no) references Employee(Employee_no),
Employee_password Varchar(20),
)
create table Employee(
Employee_no Varchar(20) primary key not null,
Employee_name Varchar(20) null,
Employee_sex Varchar(20)check(Employee_sex = '男' or Employee_sex = '女'),
Employee_birth datetime null,
Employee_work_date datetime null,
Employee_phone_no Varchar(20),
Salary_degree_no Varchar(20),
Department_no Varchar(20),
Occupation_no Varchar(20),
Work_type_no Varchar(20),
foreign key(Salary_degree_no) references Salary(Salary_degree_no),
foreign key(Department_no) references Department(Department_no),
foreign key(Occupation_no) references Occupation(Occupation_no),
foreign key(Work_type_no) references Work(Work_type_no),
)
create table Department(
Department_no Varchar(20) primary key not null,
Department_name Varchar(20) null,
Department_totality Int,
)
create table Occupation(
Occupation_no Varchar(20) primary key not null,
Occupation_name Varchar(20) not null,
Occupation_totality Int,
Occupation_degree Varchar(20),
Department_no Varchar(20),
foreign key(Department_no) references Department(Department_no),
)
create table Salary(
Salary_degree_no Varchar(20) primary key not null,
Elementary_salary float check(Elementary_salary > 0 and Elementary_salary <15000),
Extra_work_salary float check(Extra_work_salary > 0 and Extra_work_salary <1500),
Cut_payment float check(Cut_payment > 0 and Cut_payment <1500),
Bonus_percentage Varchar(20),
)
create table Welfare(
Endowment_insurance float,
Unemployment_insurance float,
Birth_insurance float,
Medical_insurance float,
Accident_insurance float,
House_found float,
Employee_no Varchar(20),
foreign key(Employee_no) references Employee(Employee_no),
)
create table Work(
Work_time int check(Work_time >0 and Work_time < 24),
Work_type_no Varchar(20) primary key not null,
Work_type Varchar(20),
)
create table Rework(
Reword_punish_no Varchar(20) primary key not null,
Rework_punish_name Varchar(20),
Reword_punish_found float check(Reword_punish_found > 0 and Reword_punish_found <10000)
)
create table Select_Course(
Select_time datetime,
Grade float check(Grade > 0 and Grade < 100),
Employee_no Varchar(20),
Course_no Varchar(20),
primary key(Employee_no,Course_no),
foreign key(Employee_no) references Employee(Employee_no),
foreign key(Course_no) references Course(Course_no),
)
create table Accept_Rework(
Time datetime,
Employee_no Varchar(20),
Reword_punish_no Varchar(20),
primary key(Employee_no,Reword_punish_no),
foreign key(Employee_no) references Employee(Employee_no),
foreign key(Reword_punish_no) references Rework(Reword_punish_no),
)
create table Course(
Course_no Varchar(20) primary key not null,
Course_name Varchar(20),
Course_time int,
Course_book Varchar(20),
)
6.1.2插入一些数据后:
(1) 、接受惩罚信息(Accept_Rework):
(2) 、员工信息(Employee):
(3) 、部门信息(Department):
(4) 、职位信息(Occupation):
(5) 、工资信息(Salary):
(6) 、福利信息(Welfare):
(7) 、出勤信息(Work):
(8) 、奖罚信息(Rework):
(9) 、课程信息(Course):
(10) 、选课信息(Select_Course):
七、 系统设计及测试数据库
7.1登录模块:
登录界面分为管理员、用户登录两种,不同用户根据自己的编号与密码进行登录(用户的数据都已经录入数据库)。登录时会根据员工编号与密码进行数据库查询并反馈回来,进行员工登录、管理员登录;没有则报错。
7.2管理员模块
(1) 、查询修改界面
根据部门名称与职位名称进行查询,方便管理员查看用户。对表进行查询。
(2) 、增加信息界面:
增加部门信息,职位信息、奖罚信息,对表进行插入。如果遇到插入值是主属性,且在表中存在,则系统会做出错处理。(不违反实体完整性规则)
现在增加职位信息
(3) 、删除信息界面:
对选课信息、员工信息、部门信息进行删除。对表执行删除操作。如果遇到表的属性石另一个表的外码则删除不了,系统会做出错处理。(不违反参照完整性规则)
现在删除部门名称为“eeeee”的部门。
7.3 员工模块
(1) 、员工菜单界面:
(2) 、个人信息查询:
(3) 、奖罚查询
(4) 、工作信息查询:
(5) 、选课菜单:
A、 员工选课:
员工根据课程表里的信息进行选课,进行了数据库的插入操作。
B、 选课查询:选了数学、英语后查询结果。
(6) 、密码修改:
员工对密码进行修改。如果两次输入的密码不正确则系统出错处理。
八、 实现的主要功能及代码及使用说明
8.1 实现的主要功能:
实现了对数据库数据的不同条件的查询、插入、删除、修改功能。
8.2 代码实现
见附录:
8.3 使用说明:
在myEclipse 里运行,并启动SQL SEVER 2008 ;
九、 设计环境:
myEclopse + SQL SEVER 2008
十:心得体会
这次的课程设计是自己独立完成的,收获很大,深入理解了数据库理论与设计方法,把数据库应用到实际的应用系统中,并取得了实际成效。
刚开始做数据库课程设计的时候,对数据库设计的概念还很模糊,还不理解数据库设计的六个步骤。看了老师给的需求分析范文,再重新翻阅了数据库设计那章节,反复对比,思考。理清楚了数据库设计步骤的前四个步骤(需求分析、概念结构设计、逻辑结构设计,物理结构设计)但对物理结构设计理解还不是很深入。
然后进行数据库设计,第一步:需求分析(自己想设计怎样功能的系统),第二部:概念结构设计、第三部:逻辑结构设计,这些设计都不难。但对于物理结构设计,还不是很理解,只知道备份数据库文件与日志文件,还有配置一些存储大小信息,至于建立索引还不会。有待解决。
接着对自己的系统进行功能设计,大多数问题和难点都体现在系统连接数据库,对数据库查询、插入、删除功能。因为对java Swing 还不是很熟悉,对需求分析的一些功能模块不知道用怎样的形式显示出来。不断翻阅了java书籍,查阅了资料后,把大部分功能都实现了,并用java界面显示出来(虽然不是很好看)。
在用SQL语句进行查询、插入、删除的时候,开始时,很容易出错,差错误不怎么熟练,后来调试多了就很快排除了。还有,由于我建立的表都达到3范式,有时候查询起来很不方便,要连接很多表,而且有些查询的数据都差不多,做到最后的时候才想到建视图,然后进行查询,这样的话SQL语句就不用连接那么多表了,直接在视图里面查询。在进行插入、删除的时候,不能破坏实体完整性规则,与自定义完整性规则,参照完整性规则,我在这里只是做了不能插入、删除的处理。
在用java设计系统开始的时候结构不是很好,写了很多无用的代码,后来发现了,把他封装在一个类里面,要用的时候直接调用就行了如(SQLManage类),用java设计系统还有待提高。
做这次课程设计学到了很多东西,不像以前一样只需考虑好大概有几张表就开始动手做项目。那样显得不是很规范,虽然那样效率会相对来说比较高,成果会比较快。但是假如遇到复杂的数据库系统,考虑的不周全很有可能会对数据库进行重构,这样会很致命的。
总的来说,自己行动了收获了不少东西,同时知道了还有很多东西有待提高。
展开阅读全文