淮海工学院数据库课程设计Word文档格式.docx

上传人:b****4 文档编号:17086948 上传时间:2022-11-28 格式:DOCX 页数:22 大小:476.93KB
下载 相关 举报
淮海工学院数据库课程设计Word文档格式.docx_第1页
第1页 / 共22页
淮海工学院数据库课程设计Word文档格式.docx_第2页
第2页 / 共22页
淮海工学院数据库课程设计Word文档格式.docx_第3页
第3页 / 共22页
淮海工学院数据库课程设计Word文档格式.docx_第4页
第4页 / 共22页
淮海工学院数据库课程设计Word文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

淮海工学院数据库课程设计Word文档格式.docx

《淮海工学院数据库课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《淮海工学院数据库课程设计Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

淮海工学院数据库课程设计Word文档格式.docx

运行系统,在登录页面可以进行身份验证,登录成功后可以修改密码和用户信息,用户不想使用时可以点击退出系统结束操作。

功能图如图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

Password

密码

Popedom

权限

部门信息管理(DepartmentInformation)

D_Number

部门编号

D_Name

部门名称

D_Count

部门人数

员工基本信息表(EmployeeInformation)

E_Number

--员工编号

E_Name

--姓名

E_Sex

--性别

2

E_BornDate

--出生日期

30

E_Marriage

--婚姻状态

4

E_Politics

政治面貌

E_SchoolAge

学历

E_EnterDate

进入公司时间

E_InDueFormDate

转正时间

E_Department

部门

E_Headship

职务

E_Estate

状态

E_Remark

备注

500

培训信息表(TrainInformation)

T_Number

培训编号

T_Content

培训内容

100

T_Name

培训员工姓名

T_Date

double

培训天数

T_Money

培训费用

奖罚信息表(EncouragementPunishInformation)

EP_Number

EP_Name

EP_Date

奖罚时间

EP_Address

奖罚地点

50

EP_Causation

奖罚原因

200

EP_Remark

薪资信息表(WageInformation)

W_Number

W_Name

W_BasicWage

基本工资

W_JiXiaoWage

绩效工资

W_Boon

福利

W_Bonus

奖金

W_CountMethod

计算方法

W_FactWage

实发工资

将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){

thrownewUserDaoException("

用户数据访问层异常"

e);

}finally{

DBUtil.close(conn);

returnnull;

publicbooleanupdatePassword(Stringusername,Stringoldpassword,

Stringnewpassword){

Stringsql="

updateusersetpassword=?

+"

whereusername=?

andpassword=?

Connectionconn=null;

PreparedStatementpstmt=null;

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;

thrownewUserDaoException("

更新用户密码异常"

e);

}finally{

returnfalse;

3.5.3功能代码设计

publicclassUserService{

privateUserDaouserDao=newUserDao();

*登录业务处理

publicbooleancheckLogin(Stringusername,Stringpassword){

Useruser=userDao.findByUsername(username);

i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1