数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
![数据库课程设计.docx](https://file1.bdocx.com/fileroot1/2023-5/27/e6d73bfa-7636-476f-a37a-912729a6de6b/e6d73bfa-7636-476f-a37a-912729a6de6b1.gif)
数据库课程设计
大连交通大学信息工程学院
数据库课程设计
题目职工信息管理系统
学生姓名专业班级网络工程08-2
指导教师宋旭东职称 讲师
所在单位电气工程系
教学部主任 李峻
完成日期2010年12月09日
《数据库课程设计》任务书
一、课程设计的目的
《数据库课程设计》是软件工程专业(本科)教学大纲要求的重要实践性环节之一,是学习完《数据库原理及应用》和《Oracle数据库应用》两门课程后进行的一次数据库方面的综合练习。
其目的在于:
配合《数据库原理及应用》和《Oracle数据库应用》课程的教学,使学生能巩固和加深对数据库基础理论和基本知识的理解;掌握使用数据库进行软件设计的基本思想和方法;提高学生运用数据库理论解决实际问题的能力;培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
二、课程设计的内容及要求
内容:
用一种高级语言和当前流行的数据库管理系统相结合,完成一个小型管理系统的设计与开发。
所设计的小型管理系统应包含两个以上(不多于4个)的模块以及输入输出、查询、插入、删除等基本功能。
根据课程设计2周时间的安排选择适当大小的设计课题,课题的选择可以是实际问题,也可以是虚构的问题。
根据题目的基本需求,画出系统结构图,并对数据库进行详细设计,编写程序,同时写出关于本数据库管理系统的报告书。
要求:
(1)要求学生按照《数据库原理及应用》和《Oracle数据库应用》相关知识以及《数据库课程设计》教学大纲完成一个数据库设计,并撰写相应的课程设计报告。
(2)提交课程设计报告。
要求完成课程设计报告大约15页-20页,包括相应的模块设计文档、数据库设计文档、所承担模块的核心代码、测试过程分析与运行结果等。
分组进行的同学共同完成基本设计与数据库设计,但每个人至少必须独立完成一个模块设计与实现,并写入课程设计报告中。
三、课程设计时间
课程设计时间为2周(10个工作日)
四、课程设计分组
一人一组
五、课程设计的成果和形式
1.报告一篇
建议论文按下列的提纲书写
2.符合设计要求的数据库应用系统一个
指导教师签字:
年月日
1系统需求分析1
1.1需求描述1
1.2技术可行性1
1.3操作可行性2
1.4数据流图2
1.5数据字典2
2数据库概念结构设计4
2.1全局E-R图4
2.2局部E-R图5
3数据库逻辑结构设计6
3.1初始关系模式6
3.2规范化处理7
4数据库物理结构设计7
4.1基于SQLServer的部分数据表设计7
4.2用户8
5数据库实施8
5.1关系图8
6系统(界面)设计8
6.1部分界面设计及主要代码8
参考文献15
附件一所有SQL运行代码16
附件二18
1系统需求分析
1.1需求描述
随着本世纪以来科学技术的突飞猛进和社会生产力的迅速发展,人们进行信息交流的深度与广度不断增加,信息量急剧增长,传统的信息处理与决策的手段已不能适应社会的需要,信息的重要性和信息处理问题的紧迫性空前提高了,面对着日益复杂和不断发展,变化的社会环境,特别是企业间日趋剧烈的竞争形势,一个人、一个企业要在现代社会中求生存,求发展,必须具备足够的信息和强有力的信息收集与处理手段。
电子计算机以强大的信息处理能力作为人类脑力劳动的有力助手登上历史舞台以后,出现了把人类从繁琐的脑力劳动下解放出来的现代信息革命。
为了适应现代企业或公司经营发展的需要,为提高企业工作效率、保证企业职工信息管理质量、快而准确地为企业制定好的经营方针与决策,我们有必要开发一个职工信息管理系统。
该系统应具备以下功能:
—增加—
增加员工的基本信息、培训信息、奖罚信息、薪资信息
—删除—
可根据员工的编号及姓名等资料的删除
—修改—
用户可以对员工的姓名和编号、进行修改。
—查询—
用户可以根据姓名、编号,准确的查到要找的员工,也可以选择部门,查看选中的部门的所有员工。
1.2技术可行性
1.Java简介
Java是1995年6月有Sun公司引进到这个世界的革命性的编程语言,它被美国的著名杂志《PCMagazine》评为1995年十大优秀科技产品。
之所以称Java为革命性的编程语言,是因为传统的软件往往与具体的是想环境有关,一旦环境有所变化就需要对软件进行一番改动,耗时费力,而Java编写的软件能在执行码上兼容。
这样,只要计算机提供了Java解释器,Java编写的软件就能在其上运行。
2.SQLServer2000简介
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统的一个版本。
该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。
1.3操作可行性
对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求,同时也方便了公司的内部管理。
管理人员及用户一定会在短时间内掌握并熟练使用。
只要动一动鼠标键盘就可以达到想要的效果。
1.4数据流图
1.5数据字典
表1.1数据字典
库名(EmployeeInformationMS)
用户信息表(UserInformation)
字段
类型
说明
大小
是否为空
User_ID
Int
员工编号
NOTNULL
User_Name
varchar
员工姓名
20
NOTNULL
Password
varchar
密码
20
NOTNULL
Popedom
varchar
权限
20
NOTNULL
部门信息管理(DepartmentInformation)
字段
类型
说明
大小
是否为空
D_Number
int
部门编号
NOTNULL
D_Count
varchar
部门人数
20
NOTNULL
D_Name
varchar
部门名称
20
NOTNULL
员工基本信息表(EmployeeInformation)
字段
类型
说明
大小
是否为空
E_Number
int
员工编号
NOTNULL
E_Name
varchar
姓名
20
NOTNULL
E_Sex
varchar
性别
2
NOTNULL
E_BornDate
varchar
出生日期
30
NOTNULL
E_Marriage
varchar
婚姻状态
4
NOTNULL
E_PoliticsVisage
varchar
政治面貌
20
NOTNULL
E_SchoolAge
varchar
学历
20
NOTNULL
E_EnterDate
varchar
进入公司时间
30
NOTNULL
E_InDueFormDate
varchar
转正时间
30
NOTNULL
E_Department
varchar
部门
20
NOTNULL
E_Headship
varchar
职务
20
NOTNULL
E_Estate
varchar
状态
20
NOTNULL
E_Remark
varchar
备注
500
NOTNULL
培训信息表(TrainInformation)
字段
类型
说明
大小
是否为空
T_Number
varchar
培训编号
20
NOTNULL
T_Content
varchar
培训内容
100
NOTNULL
T_Name
varchar
培训员工姓名
20
NOTNULL
T_Date
int
培训天数
NOTNULL
T_Money
int
培训费用
NOTNULL
奖罚信息表(EncouragementPunishInformation)
字段
类型
说明
大小
是否为空
EP_Number
int
员工编号
NOTNULL
EP_Name
varchar
员工姓名
30
NOTNULL
EP_Date
varchar
奖罚时间
30
NOTNULL
EP_Address
varchar
奖罚地点
50
NOTNULL
EP_Causation
varchar
奖罚原因
200
NOTNULL
EP_Remark
varchar
备注
500
NOTNULL
薪资信息表(WageInformation)
字段
类型
说明
大小
是否为空
W_Number
int
员工编号
NOTNULL
W_Name
varchar
员工姓名
30
NOTNULL
W_BasicWage
int
基本工资
NOTNULL
W_Boon
int
福利
NOTNULL
W_Bonus
int
奖金
NOTNULL
W_CountMethod
varchar
计算方法
50
NOTNULL
W_FactWage
int
实发工资
NOTNULL
2数据库概念结构设计
2.1全局E-R图
2.2局部E-R图
3数据库逻辑结构设计
3.1初始关系模式
用户(员工编号,员工姓名,密码,权限)
部门(部门编号,部门人数,部门名称)
员工(员工编号,姓名,性别,出生日期,婚姻状态,政治面貌,学历,进入公司时
间,转正时间,部门,职务,状态,备注)
培训(培训编号,培训内容,培训员工姓名,培训天数,培训费用)
奖罚(员工编号,员工姓名,奖罚时间,奖罚原因,备注)
薪资(员工编号,员工姓名,基本工资,福利,奖金,计算方法,实发工资)
3.2规范化处理
经过对初始关系模式的规范化处理以下关系模式中不存在部分函数依赖和传递函数依赖,已经达到3NF。
(=代表主码,≈代表外码)
用户(员工编号,员工姓名,密码,权限)
部门(部门编号,部门人数,部门名称)
员工(员工编号,姓名,性别,出生日期,婚姻状态,政治面貌,学历,进入公司时
间,转正时间,部门,职务,状态,备注)
培训(培训编号,培训内容,培训员工姓名,培训天数,培训费用)
奖罚(员工编号,员工姓名,奖罚时间,奖罚原因,备注)
薪资(员工编号,员工姓名,基本工资,福利,奖金,计算方法,实发工资)
4数据库物理结构设计
4.1基于SQLServer的部分数据表设计
图4-1部门表
图4-2员工表
4.2用户
建立了管理员和admin两个用户。
图4-3用户表
5数据库实施
5.1关系图
图5-1关系图
6系统(界面)设计
6.1部分界面设计及主要代码
1.登陆界面及代码
图6-1登陆界面
//用户登陆类部分代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.sql.*;
publicclassLandextendsJFrame{
JFramejf;
JTextFieldtextName=newJTextField();
JPasswordFieldtextage=newJPasswordField();
JLabellabel=newJLabel("员工管理系统");
JLabellabelName=newJLabel("用户名:
");
JLabellabelage=newJLabel("密码:
");
JButtonbuttonEnter=newJButton("登录");
JButtonbuttoncancel=newJButton("清空");
publicLand(){
jf=this;
setTitle("登录");
Fontf=newFont("新宋体",Font.PLAIN,12);
Containercon=getContentPane();
con.setLayout(null);
label.setBounds(95,10,110,20);
label.setFont(newFont("新宋体",Font.PLAIN,14));
con.add(label);
labelName.setBounds(45,40,55,20);
labelName.setFont(f);
con.add(labelName);
textName.setBounds(95,40,120,20);
con.add(textName);
labelage.setBounds(45,70,45,20);
con.add(labelage);
labelage.setFont(f);
textage.setBounds(95,70,120,20);
con.add(textage);
buttonEnter.setBounds(90,110,60,20);
buttonEnter.setFont(f);
con.add(buttonEnter);
publicstaticvoidmain(Stringargs[]){
newLand();
}
}
2.主界面及代码
图6-2主界面
//菜单添加及系统菜单的添加部分代码
publicMain(){//构造函数
setTitle("员工管理系统");//设置窗体标题
Containercon=getContentPane();
con.setLayout(newBorderLayout());//创建一个布局
con.add(deskpane,BorderLayout.CENTER);//实例虚拟桌面的布局
Fontf=newFont("新宋体",Font.PLAIN,12);//设置一个字体
JMenuBarmb=newJMenuBar();//实例化菜单栏
//实例化菜单开始
JMenusystemM=newJMenu("系统管理");
systemM.setFont(f);
JMenumanageM=newJMenu("信息管理");
manageM.setFont(f);
JMenuemployeeMM=newJMenu("员工信息管理");//这个是信息管理的二级菜单
employeeMM.setFont(f);
JMenuselectM=newJMenu("信息查询");
selectM.setFont(f);
JMenuemployeeSM=newJMenu("员工信息查询");//这个是信息查询的二级菜单
employeeSM.setFont(f);
JMenuaboutM=newJMenu("关于");
aboutM.setFont(f);
//实例化系统管理菜单的菜单项
JMenuItempassword=newJMenuItem("密码修改");
password.setFont(f);
JMenuItemland=newJMenuItem("重新登陆");
land.setFont(f);
JMenuItemaddDelete=newJMenuItem("添加/删除用户");
addDelete.setFont(f);
JMenuItemexit=newJMenuItem("退出系统");
exit.setFont(f);
systemM.add(password);
systemM.add(land);
systemM.add(addDelete);
systemM.add(exit);
//为系统管理菜单加事件
password.addActionListener(newActionListener(){//密码修改监听
publicvoidactionPerformed(ActionEvente){
System.out.println("AmendPassword");
deskpane.add(newAmendPassword());
}
});
land.addActionListener(newActionListener(){//重新登陆监听
publicvoidactionPerformed(ActionEvente){
System.out.println("Land");
setVisible(false);
newLand();
}
});
addDelete.addActionListener(newActionListener(){//添加/删除用户监听
publicvoidactionPerformed(ActionEvente){
deskpane.add(newAddDeleteUser());
}
});
exit.addActionListener(newActionListener(){//退出系统监听
publicvoidactionPerformed(ActionEvente){
setVisible(false);
}
});
}
}
3.系统管理
图6-3系统管理
系统管理部分主要完成了4部分主要功能,分别是密码修改、重新登录、添加/删除用户、退出系统。
这部分功能主要方便管理员对账户的管理以及普通用户对整个系统的操作。
4.信息管理
图6-4信息管理
信息管理部分可以分解为员工信息管理和部门信息管理两方面。
其中员工信息管理方面又分为培训信息管理、基本信息管理、奖罚信息管理、薪资信息管理。
这部分功能主要在于方便管理员对信息的管理,可以对数据库进行必要的添加、删除、修改操作。
5.信息查询
图6-5信息查询
信息查询部分可以分解为员工信息查询和部门信息查询两方面。
其中员工信息查询方面又分为培训信息查询、基本信息查询、奖罚信息查询、薪资信息查询。
这部分功能主要在于方便普通用户对信息的查询,可以对自身信息进行查询操作。
6.数据库联接
//数据库联接代码
importjava.sql.*;
publicclassDatabase{
publicstaticConnectioncn;
publicstaticStatementst;
publicstaticResultSetrs;
publicstaticbooleanjoinDB(){
booleanjoinFlag;
try{
joinFlag=true;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
cn=DriverManager.getConnection("jdbc:
odbc:
EmployeeInformationMS","","");
System.out.println("数据库连接成功");
st=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
returnjoinFlag;
}
catch(SQLExceptionsqlEx){
System.out.println(sqlEx.getMessage());
joinFlag=false;
returnjoinFlag;
}
catch(ClassNotFoundExceptionnotfoundEX){
System.out.println(notfoundEX.getMessage());
joinFlag=false;
returnjoinFlag;
}
}
publicstaticbooleanexecuteSQL(StringsqlString){
booleanexecuteFlag;
try{
st.execute(sqlString);
executeFlag=true;
}catch(Exceptione){
executeFlag=false;
System.out.println("sqlexception:
"+e.getMessage());
}
returnexecuteFlag;
}
publicstaticbooleanquery(StringsqlString){
try{
rs=null;
rs=st.executeQuery(sqlString);
}catch(ExceptionEx){
System.out.println("sqlexception:
"+Ex);
returnfalse;
}
returntrue;
}
}
参考文献
[1]耿祥义,张跃平.Java2实用教程[M].北京:
清华大学出版
社,2006.8
[2]钱雪忠,黄建华.数据库原理及应用[M].北京:
北京邮电大
学出版社,2007
[3]钱雪忠,陶向东.数据库原理及应用实践指导[M].北京:
北京邮电
大学出版社,2005
[4]达尔文.Java经典实例[M].北京:
中国电力出版社,2009
[5]布鲁诺.Java实时编程[M].北京:
机械工业出版社,2010.1
附件一:
所有SQL运行代码
1.CREATEDATABASEEmployeeInformationMS//创建数据库
2.CREATETABLEUserInformation
(
User_IDINTIDENTITY(1,1),
User_NameVARCHAR(20)NOTNULL,
PasswordVARCHAR(20)NOTNULL,
PopedomVARCHAR(20)DEFAULT'B',--权限
)//创建用户信息表
3.CREATETABLEDe