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






