淮海工学院数据库课程设计.docx
- 文档编号:4170942
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:22
- 大小:476.93KB
淮海工学院数据库课程设计.docx
《淮海工学院数据库课程设计.docx》由会员分享,可在线阅读,更多相关《淮海工学院数据库课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
淮海工学院数据库课程设计
淮海工学院计算机工程学院
实验报告书
课程名:
《数据库课程设计》
题目:
员工管理系统
班级:
软件142
学号:
2014122877
姓名:
史祥平
评语:
成绩:
指导教师:
郭大喜
批阅时间:
年月日
1引言
1.1背景
随着知识经济的来临,计算机技术,网络技术和信息技术已经广泛的应用于社会的各个方面,给现代人的生活、工作带来了巨大的变化。
企业的员工管理正朝着追求高效,低成本,稳定可靠的发展方向。
为此目的,企业需要一个功能完善,性能稳定的员工管理系统。
其主要目的是通过计算机对员工的各种信息进行管理和维护。
员工管理系统共完成了员工资料情况进行添加、查询、修改和删除操作。
员工名册信息的报表查询可添加新的用户以及修改用户原有的用户名、删除原有用户,查询员工基本信息等功能。
达内科技的老师带领我们做了这样一个基于C/S架构数据库设计的员工管理系统。
1.2系统简介
开发环境:
Windows操作系统、Eclipse、Mysql和NavicatforMysql
软件架构:
C/S架构
适用对象:
小型企业或学校
2需求分析
2.1功能需求
员工管理系统能够实现登录、添加/删除用户、修改密码、切换用户、退出登录、员工信息管理和员工信息查询等功能。
运行系统,在登录页面可以进行身份验证,登录成功后可以修改密码和用户信息,用户不想使用时可以点击退出系统结束操作。
功能图如图2.1所示。
员工管理系统是将企业的人事管理、工资管理、考勤管理有机相合,综合运用的一个企业管理软件,它使企业的人事管理由以往的手工作业,向自动化、网络化、现代化迈进了一大步。
从而使企业的人事管理人员从繁重的人事管理中解放出来,大大提高了工作效率,减轻了管理人员的工作量。
所谓的C/S架构即Client/Server (客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。
客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。
开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。
图2.1项目结构图
2.2可行性分析
2.2.1操作可行性分析
员工管理系统并不是一个很复杂的软件。
员工信息系统工程实施的目标就是要带给某单位看得见的效益,其开发过程中也要考虑到人力,资金和时间的约束。
因此,在设计中重点是员工信息系统中的方便快捷,能提供给单位管理者以优质高效的服务并提高管理的效率,为单位带来良好的效益。
员工管理,员工查询,薪资考核和奖惩落实,员工管理系统都必不可少,加之界面设计的简约化,操作的简易化,在公司、企业内部应该是行得通的。
系统是为一个团体设计的,考虑到了个人的方面。
综合考虑,工具应当能够使每个操作者简单运用。
2.2.2经济可行性分析
在开发过程中用到一台电脑,1024G硬盘,8G内存,因特尔微处理器,Windows操作系统,由老师带领我们一起完成,个人即可完全承担开发任务,能够通过较小的投入得到较大的回报,因此以达到经济可行性需求,能够有比较理想的回报。
2.2.3技术可行性分析
该系统使用C/S结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
该系统只要有一台能上网的电脑就能使用,即客户端零维护。
同时系统的扩展非常容易,只要能连上局域网,直接登录就可以使用了。
使用内部局域网也保障了软件数据的安全
3系统总体设计
3.1数据库设计
3.1.1结构属性
结构属性主要包括了数据库名称、数据库类型、访问模式、逻辑标识、物理标识、存储模式、存储介质以及读写方式。
如下表3-1结构属性表所示:
表3-1结构属性表
数据库名称
Test
数据库类型
MySQL
访问模式
DataAdapter
存储模式
简单存储
存储介质
HDD
读写方式
DataSet+SqlDataAdapter
3.1.2逻辑结构
数据库逻辑结构是从逻辑的角度分析数据库的构成,即创建数据库后形成的逻辑概念之间的关系。
SQL的逻辑结构主要应用于面向用户的数据组织和管理,与传统关系模型术语相比,在SQL中,视图对应外模式,基本表对应模式,存储文件对应内模式。
如下图3.1为数据库设计的E-R模型图
图3.1数据库E-R图
3.1.3表的定义
用户信息表(UserInformation)
字段
类型
说明
大小
是否为空
User_ID
int
员工编号
NOTNULL
User_Name
varchar
员工姓名
20
NOTNULL
Password
varchar
密码
20
NOTNULL
Popedom
varchar
权限
20
NOTNULL
部门信息管理(DepartmentInformation)
字段
类型
说明
大小
是否为空
D_Number
int
部门编号
NOTNULL
D_Name
varchar
部门名称
20
NOTNULL
D_Count
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_Politics
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
double
培训天数
NOTNULL
T_Money
double
培训费用
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
double
基本工资
NOTNULL
W_JiXiaoWage
double
绩效工资
NOTNULL
W_Boon
double
福利
NOTNULL
W_Bonus
double
奖金
NOTNULL
W_CountMethod
varchar
计算方法
50
NOTNULL
W_FactWage
double
实发工资
NOTNULL
将ER图转化成关系图:
工资(编号,奖金,姓名,备注,实发工资,绩效工资,福利,基本工资)
培训(编号,时间,地点,内容,天数)
员工(编号,姓名,性别,职务,学历,出生日期,政治面貌,进入时间,转正时间,现今状态)
用工单位(编号)
部门(编号,名称)
奖罚(编号,时间,地点,原因)
3.1.4关键技术
视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。
分布式查询也可用于定义使用多个异类源数据的视图。
存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
存储过程的优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权
触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。
触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
当对某一表进行诸如Update、Insert、Delete这些操作时,SQLServer就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。
除此之外,触发器还有其它许多不同的功能:
(1)强化约束(Enforcerestriction)
触发器能够实现比CHECK语句更为复杂的约束。
(2)跟踪变化Auditingchanges
触发器可以侦测数据库内的操作,不允许数据库中未经许可的指定更新和变化。
(3)级联运行(Cascadedoperation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。
例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4)存储过程的调用(Storedprocedureinvocation)。
在物理结构中,数据的基本存取单位是存储记录。
有了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。
存储记录就包括记录的组成,数据项的类型和长度等。
3.2界面设计
系统由六大窗口组成,分别是主操作台窗口、登录窗口、信息管理窗口、信息查询窗口、帮助窗口、关于窗口。
其中主操作台窗口调用其它五个窗口,其它五个窗口不可互相调用。
(信息查询和信息管理窗口是指一套窗口)
下面就各窗口的功能及实现思想与方法做一一分析:
1.主操作台窗口。
主操作台窗口为系统运行进行操作管理的主要界面,它主要包含有菜单栏,按钮栏等控件,通过这些控件,系统可调用其它窗口,调用其它窗口的方法为先实例化一个其它inner窗口的对象,然后通过对象来调用。
菜单栏上有系统管理、信息管理、信息查询、帮助和关于共计5个菜单按钮。
每个菜单按钮下含有一个下拉菜单(包含若干子菜单选项)。
系统管理按钮负责调用修改密码等窗口,信息管理按钮负责调用信息管理相关窗口,信息查询按钮负责调用信息查询相关窗口,帮助按钮负责调用帮助窗口,关于按钮负责调用关于窗口。
左侧有一个常用功能工具栏,有五个快捷按钮方便用户进行一些经常使用的操作。
分别是员工基本信息查询、员工基本信息管理、修改密码、退出系统和简易财务计算器。
具体效果如下图3.2
图3.2主操作台界面窗口设计效果图
2.登录窗口。
登录窗口提供系统登录功能。
登录窗口的控件主有文本框、按钮等。
3.信息管理窗口。
信息管理窗口可以向各个数据表中添加、删除和修改相对应的记录信息。
如下展示了员工奖惩信息、部门信息、薪资信息和员工培训等管理界面。
4.信息查询窗口。
通过信息查询窗口可查看全部表的数据。
信息查询窗口可通过交互式操作完成。
5.密码修改窗口。
密码修改窗口可修改用户表的对应用户的密码。
但密码窗口只实现新密码参数到主操作台窗口的传递与检查两次新密码输入是否相同。
6.帮助和关于窗口:
提供一些系统相关的信息和必要的软件使用帮助。
3.3时序设计
时序设计也就是通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
它可以表示用例的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。
3.3.1顺序图设计
在该系统中,顺序图主要包括密码修改顺序图如图3.31、员工信息修改如图3.32、用户登陆图3.33、添加用户如图3.34。
顺序图是将系统与用户关系表示为一个二维图。
纵向是时间轴,时间沿竖线向下延伸。
“×”叉号代表的是生命终止。
横向轴代表了在协作中各独立对象的类元角色。
类元角色用生命线表示。
当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
图3.31密码修改时序图
图3.32用户信息修改时序图
图3.33登录时序图
图3.34添加用户时序图
3.3.2活动图设计
在该系统中,活动图主要包括密码修改如图3.35、员工信息修改如图3.36、添加用户如图3.37。
图3.35密码修改活动图
图3.36用户信息修改活动图
图3.37添加用户活动图
3.4接口设计
接口是提供给其他模块或者系统使用的一种约定或者规范。
因此接口必须要保证足够的稳定性和易用性。
3.4.1稳定性
接口必须相对稳定,否则将导致接口的使用者和提供者为了适应新接口而不断修改接口的实现,可能重复进行无用功,严重时影响整个软件开发进度。
首先,接口的语义必须明确。
包括接口调用方法、接口名称、参数的类型和名称。
抽象的接口名称或者参数名称使人困惑或者理解错误。
其次,采用版本定义来区分接口的差异。
比如提供接口版本查询功能,接口实现着提供接口版本的查询功能。
3.4.2易用性
接口是提供给第三方使用的,较难使用的接口会给使用者带来不便。
比如参数过于抽象,这将会导致接口的调用者在使用接口时,需要将基本数据类型的值组成一个参数类型,然后才能调用接口。
这样的接口设计非常糟糕,既不便于使用又不便于编译器优化。
除非接口的参数个数超过5个,否则最好采用基本数据类型作为参数。
超过5个参数的函数一方面给调用者带来困难,参数排列组合的情况过多,另一方面就是不利于编译器优化时采用寄存器传递参数。
在进行设计员工管理管理系统接口时,采用OOD思想,也就是面向对象的思想。
接口设计的规范性主要在于代码的规范,要考虑接口的命名问题,我们主要在接口前加上每个模块负责人姓名的缩写。
我们考虑了接口能够在多种情况下接口都能实现统一的效果,不会随着调用者传入的参数的变化而导致接口的输出出现违背接口语义的情况出现。
在接口的安全性方面,我们在接口定义限制了读写权限来避免非法使用。
3.5代码设计
3.5.1数据库连接代码设计
publicclassDBUtil{
publicstaticStringclassname="com.mysql.jdbc.Driver";
publicstaticStringurl="jdbc:
mysql:
//localhost:
3306/ems14"
+"?
useUnicode=true&characterEncoding=utf8&";
publicstaticStringusername="root";
publicstaticStringpassword="";
//静态代码块,类被加载时,会执行!
只执行这一次!
static{
try{//只需要执行一次
Class.forName(classname);
}catch(ClassNotFoundExceptione){
e.prdoubleStackTrace();
}
}
publicstaticConnectiongetConnection()throwsSQLException{
Connectionconn=
DriverManager.getConnection(url,username,password);
returnconn;
}
publicstaticvoidclose(Connectionconn){
if(conn!
=null){
try{
conn.close();
}catch(SQLExceptione){
e.prdoubleStackTrace();
}
}
}
publicstaticvoidmain(String[]args)throwsSQLException{
Connectionconn=DBUtil.getConnection();
System.out.prdoubleln(conn);
DBUtil.close(conn);
}
}
3.5.2数据库操作代码设计
publicclassUserDao{
/**
*根据传入的账号,从数据库中查询用户信息,并返回
*@paramusername账号
*/
publicUserfindByUsername(Stringusername){
Stringsql="select*fromuserwhereusername=?
";
//?
,占位符,将要传入参数的位置占住!
Connectionconn=null;
try{
conn=DBUtil.getConnection();
PreparedStatementpstmt=
conn.prepareStatement(sql);
pstmt.setString(1,username);
ResultSetrs=pstmt.executeQuery();
if(rs.next()){
Useruser=newUser();
user.setId(rs.getdouble("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setRealname(rs.getString("realname"));
user.setPhone(rs.getString("phone"));
user.setEmail(rs.getString("email"));
returnuser;
}
}catch(SQLExceptione){
e.prdoubleStackTrace();
thrownewUserDaoException("用户数据访问层异常",e);
}finally{
DBUtil.close(conn);
}
returnnull;
}
publicbooleanupdatePassword(Stringusername,Stringoldpassword,
Stringnewpassword){
Stringsql="updateusersetpassword=?
"
+"whereusername=?
"
+"andpassword=?
";
Connectionconn=null;
PreparedStatementpstmt=null;
try{
conn=DBUtil.getConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,newpassword);
pstmt.setString(2,username);
pstmt.setString(3,oldpassword);
doublerows=pstmt.executeUpdate();
if(rows==1){
returntrue;
}
}catch(SQLExceptione){
e.prdoubleStackTrace();
thrownewUserDaoException("更新用户密码异常",e);
}finally{
DBUtil.close(conn);
}
returnfalse;
}
}
3.5.3功能代码设计
publicclassUserService{
privateUserDaouserDao=newUserDao();
/**
*登录业务处理
*/
publicbooleancheckLogin(Stringusername,Stringpassword){
Useruser=userDao.findByUsername(username);
i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 淮海 工学院 数据库 课程设计