企业员工管理系统论文
南京铁道职业技术学院
毕 业 论 文
题 目: 南瑞集团公司员工管理系统的设计与实现 作 者: 庞苗苗 学 号: [1**********] 系 : 软件与艺术 专 业: 软件嵌入式 班 级: 软件嵌入式1301
指导者:
评阅者:
2016 年 5 月
目 录
摘要 ............................................. 错误!未定义书签。
1 系统分析 ........................................................ 1
1.1 需求分析 ...................................................... 1
1.2 可行性分析 .................................................... 1
1.2.1 经济性 .................................................... 1
1.2.2 技术性 .................................................... 1
1.2.3 操作可行性 ................................................ 2
1.2.4 系统结构可行性分析 ........................................ 2
2 总体设计 ........................................................ 2
2.1 项目规划 ...................................................... 2
2.2 设计目标 ...................................................... 3
2.3 系统功能结构图 ................................................ 3
2.4 设计思想 ...................................................... 4
2.4.1 开发语言的选择 ............................................ 4
2.4.2 开发模式的选择 ............................................ 5
2.4.3 数据库的选择 .............................................. 6
2.5 开发及运行环境 ................................................ 7
3 系统功能设计 .................................................... 8
3.1 模块功能介绍 .................................................. 8
3.2 数据库设计与实现 .............................................. 8
3.2.1 数据库的需求分析 .......................................... 8
3.2.2 系统E-R 图设计 ............................................ 8
3.2.3 数据库各表具体设计 ....................................... 10
3.2.4 数据库连接与访问 ......................................... 13
3.3 系统中的J AVA B EAN 结构 ......................................... 16
3.4 公共模块 ..................................................... 16
4 系统实现 ....................................................... 17
4.1 登录模块 ..................................................... 17
4.1.1 实现效果 ................................................. 17
4.1.2 相关JavaBean 程序 ........................................ 19
4.1.3 相关文件 ................................................. 19
4.2 主页面模块 ................................................... 19
4.2.1 实现效果 ................................................. 19
4.2.2 主页面相关JSP 文件 ....................................... 20
4.3 人员档案模块 ................................................. 21
4.3.1 实现效果 ................................................. 22
4.3.2 相关JavaBean 程序 ........................................ 24
4.3.3 相关JSP 文件 ............................................. 24
4.4 奖惩管理模块 ................................................. 25
4.4.1 实现效果 ................................................. 26
4.4.2 相关JavaBean 程序 ........................................ 27
4.4.3 相关JSP 文件 ............................................. 27
4.5 人员调动管理模块 ............................................. 28
4.5.1 实现效果 ................................................. 29
4.5.2 相关JavaBean 程序 ........................................ 30
4.5.3 相关JSP 文件 ............................................. 30
4.6 企业员工管理系统文件结构图 ................................... 31
4.7 技术难点 ..................................................... 32
4.7.1 FOREIGN KEY 约束 ......................................... 32
4.7.2 安全性问题 ............................................... 36
4.7.3 中文乱码问题 ............................................. 36
4.7.4 JavaScript的实现......................................... 37
5 系统测试 ....................................................... 37
5.1 测试的定义及目的 ............................................. 37
5.2 测试的原则 ................................................... 37
5.3 测试的方法 ................................................... 38
5.3.1 界面测试 ................................................. 38
5.3.2 功能测试 ................................................. 38
5.3.3 需求测试 ................................................. 39
5.3.4 性能测试 ................................................. 39
5.4 测试中其他要注意的地方 ....................................... 40
5.5 员工管理系统的测试 ........................................... 40
6 结论 ........................................................... 41
致 谢 ........................................................... 42
参考文献 ......................................................... 43
毕业设计 论文)
文摘要 (中
1 系统分析
1.1 需求分析
通过调查,根据人事管理的基本需求,要求系统需要完成以下功能:
(1)企业员工档案信息管理;
(2)企业员工奖惩信息管理;
(3)企业员工人员调动信息管理;
(4)系统用户信息管理。
1.2 可行性分析
1.2.1 经济性
通过网络化的企业员工信息管理,大大的提高了企业人才的利用率,使之为企业创造更大价值。人才利用率的提高,增强了企业的核心竟争力,全面提升了企业的管理能力,从而使企业适应了信息时代的网络化管理要求。
1.2.2 技术性
通过网络化管理,加强员工信息管理的方便性,准确性。使用JSP 技术之后,Web 页面开发人员可以使用HTML 或者XML 标识来设计和格式化最终页面,使用JSP 标识或者小脚本来生成页面上的动态内容。生成的内容的逻辑被封装在标识和JavaBeans 组件中,那么其他人,如Web 管理人员和页面设计者,能够编辑和使用JSP 页面而不影响内容的生成。很多的OS 中都带有JDBC 驱动程序,Java 就通过JDBC 与数据库连接,执行查询,提取数据等操作。Sun 公司还提供了JDBC-ODBC 的桥连方式,因此Java 也可以访问带有ODBC 驱动的数据库,目前大多数数据库系统都带有ODBC 驱动,所以Java 能访问诸如Oracle ,Sybase ,MS SQL Server 和PostgresSQL 等类型的数据库。
1.2.3 操作可行性
对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,可以满足用户各种不同的需求,同时也方便了公司的内部管理。管理人员和用户一定能在短时间内掌握并熟练使用,只要动一动鼠标键盘就可以达到想要的效果。
1.2.4 系统结构可行性分析
本系统采用B/S(Browser/Server)结构。B/S结构即浏览器和服务器结构。它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW 浏览器来实现,极少部分事务逻辑在前端(Browser )实现,但是主要事务逻辑在服务器端(Server )实现,形成所谓三层3-tier 结构。这样就大大简化了客户端电脑的负载,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO )。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于操作、成本也是较低的。它是一次到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN ,WAN ,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,使服务器数据库也很安全。特别是在JAVA 这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。其具有以下特点:维护和升级方式简单,成本降低,选择更多,只要安装了浏览器就可以使用。
2 总体设计
2.1 项目规划
企业员工管理系统由员工档案信息管理、奖惩信息管理、人员调动信息管理、系统用户管理4个部分组成,规划系统功能模块如下:
人员档案信息管理模块:该模块主要功能是对员工基本信息进行管理。 员工奖惩信息管理模块:该模块主要是对企业员工奖惩情况进行管理。 人员调动信息管理模块:该模块主要是对企业员工调动信息进行管理。 系统用户管理模块:该模块主要功能是对管理员密码修改功能的管理。
2.2 设计目标
本系统主要用于对企业中的员工信息进行管理。具体地讲,员工管理系统就是通过员工的档案信息管理、奖惩信息管理、员工调动信息管理等一系列手段来提高劳动生产率,最终达到发展目标的一种管理行为。具体实现目标如下:
实现对员工信息进行全面管理的功能;
系统用户信息的管理;
企业员工奖惩信息的管理;
企业员工人员调动信息的管理;
系统最大限度地实现易安装性、易维护性和易操作性;
系统运行稳定、安全可靠。
2.3 系统功能结构图
企业员工管理系统功能结构如图1所示:
图1 企业员工管理系统功能结构图
2.4 设计思想
2.4.1 开发语言的选择
随着互联网技术的不断发展,基于浏览器/服务器(Browser/Server 简称B/S)体系结构的应用程序得到了空前广泛的应用。但是服务器之间的通讯,尤其是在不同平台上运行的服务器之间的通讯仍然不是一件容易的事情。因为大多数Internet 应用程序都是以数据库为中心的,方便的访问多种数据源的能力也比以往任何时候都更加重要。
JSP 无疑可以轻松地实现这类功能,JSP 技术是一种服务器端的HTML 页面中嵌入JAVA 代码的脚本语言,它比一般脚本语言的执行速度更快,由于JSP 是基于JAVA 语言的,所以它可以运行在UNIX/LINUX和WINDOWS 平台上,是一种难得的动态网页开发语言。
在动态内容的解决问题中,还存在其他的解决方法,但是开发人员要掌握这些技术很难。例如,Servlet 这样的技术就可以使得用Java 语言编写交互式的应用程序的服务器端的代码变得更加简单。Servlet 就是一个基于Java 技术的
运行在服务器端的程序(与Applet 不同,后者运行在浏览器端)。开发人员编写出Servlet 程序,用来接收来自Web 浏览器的HTTP 请求,动态地生成响应,然后发送包含HTML 或XML 文档到浏览器。
但是使用这种方法,整个网页必须都在Servlet 中制作。如果开发人员或者Web 管理人员想要调整页面的显示,就不得不从新编辑并编译Servlet 程序。采用这种方法,编写带有动态内容的页面需要有很熟练的应用程序开发技巧和经验。很显然,一个简单的创建动态页面的解决方案要能解决以下的问题:
(1) 能够在任何Web 或应用程序服务器上运行 (2) 将应用程序逻辑和页面显示分离 (3) 能够快速地开发和测试
(4) 简化开发基于Web 的交互式应用程序的过程
Java Server Pages (JSP)满足这些要求,它整合了存在的Java 编程环境提供支持的技术和工具,产生了一种新的、开发基于Web 应用程序的方法,这个方法给予使用基于组件应用的逻辑页面的设计者提供了强大的功能。 2.4.2 开发模式的选择
JSP 的两种开发模式: 模式一:JSP+JavaBean模式 模式二:JSP+Servlet+JavaBean模式
在模式一中,JSP 页面独自响应请求并将处理结果返回给客户端。所有的数据通过Bean 来处理。模式一技术实现了页面的表现和页面的商业逻辑相分离。大量使用模式一形式,常常会导致页面被嵌入大量的脚本语言或JAVA 代码。当需要处理的商业逻辑很复杂时,这种情况会变得非常糟糕。大量的代码会使整个页面变得常复杂。对于前端界面设计人员来说,这简直不可想象。这种情况在大项目中最为常见,这也造成了代码的开发和维护出现困难,造成了不必要的资源浪费,在任何项目中,这样的模式多多少少总会导致定义不清的响应和项目管理的困难。 所以,模式一不能满足大型项目的需要,但是可以较好的满足小型应用,在简单的应用中可以考虑模式一。
模式二中 ,Servlet 技术是一种采用JAVA 技术来实现CGI 功能的一种。
Servlet 技术是运行在WEB 服务器上,用来生成WEB 页面。Servlet 技术非常实用于服务器端的处理和编程,并且Servlet 会长期驻留在它们所处的位置。 但是在实际的项目开发过程中,页面设计者可以方便地使用普通HTML 工具来开发JSP 页面,Servlet 却更适合于后端开发者使用,开发Servlet 需要的是JAVA 集成开发环境,也就是说Servlet 技术更需要编程人员。 模式二结合了JSP 和Servlet 技术,充分体现了两者的技术优点。在此模式中通过JSP 来表现页面。通过Servlet 来完成大量的事务处理。 Servlet充当一个控制者的角色,并负责向客户发送请求。Servlet 创建JSP 所需要的Bean 和对象,然后根据用户的请求行为,决定将哪个JSP 页面发送给客户。 从开发的观点,模式二具有更清晰的页面表现,清楚的开发者角色划分,可以充分利用开发小组的界面设计人员,这些优势在大型项目开发中表现的尤为突出,使用这一模式,可以充分发挥每个开发者各自的特长,界面设计人员可以充分发挥自己的表现力,设计出优美的界面表现形式,设计人员可以充分发挥自己的商务处理思维,来实现项目中的业务处理。在大型项目中,模式二更被采用。
但是,本系统开发只是一个小型的JSP 应用,同时由于Servlet 难于掌握,所以在本课题中采用了模式一开发,既JSP+JavaBeans模式(如图2)。
图2 JSP+JavaBean模式结构图
2.4.3 数据库的选择
SQL Server 2000是一个分布式的关系型数据库管理系统,具有客户/服务
器体系结构。Mircrosoft SQL Server 2000是一个应用广泛的数据库管理系统,具有许多显著特点,例如,用户喜欢的易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。
SQL Server 2000系统中,数据库的管理采取了先进的动态管理机制,数据库的大小可以随着数据量的变化而缩小或者扩大。另外,用户数据都是非常重要的和保密的,这些数据存储在Mircrosoft SQL Server 2000系统中有绝对的安全性保障,有完善的用户帐户策略和许可机制,只有经过授权的用户才能访问系统,并且执行相应的操作和访问允许访问的数据。未经授权的用户既不能执行相应的操作,也不能访问数据库中的相应数据。
SQL Server 2000系统具有强大的网上功能,可以在Internet 上发布数据库中的数据。在Mircrosoft SQL Server 2000系统中,允许用户简单的使用一些向导和工具把数据库的数据发布到网络上,并且可以根据需要来调度修改已经发布的数据。
2.5 开发及运行环境
3 系统功能设计
3.1 模块功能介绍
(1)登录模块
此模块实现用户进入系统管理前的验证操作,只有输入正确的用户名和密码才能进入系统 ,进行各种操作。
(2)人员档案模块
此模块实现对企业所有员工的档案进行管理,并且根据需要,可以对某个员工的档案进行修改、删除和查询。
(3)奖惩管理模块
本模块提供了记录奖惩类别,内容,原因等奖惩信息的管理。可以根据需要添加奖惩详细信息、删除奖惩详细信息、修改奖惩详细信息。
(4)人员调动模块
本模块提供了管理企业人员调动信息管理的功能,可以根据需要,对某条调动记录进行修改和删除。
3.2 数据库设计与实现
3.2.1 数据库的需求分析
依据项目的处理需求,对应数据表的设计及功能如下: (1)员工基本信息表(employee): 主要用于保存员工基本信息 (2)奖惩管理信息表(reward): 主要用于保存奖惩信息
(3)人事调动信息表(translate): 主要用于保存内部人员调动信息 (4)系统用户管理表(users): 主要用于保存用户信息 3.2.2 系统E-R 图设计
系统E-R 图设计如图3所示,系统管理员与属性的关系如图4,员工信息实体与属性的关系如图5,奖惩信息实体与属性的关系如图6,人员调动信息实体
与属性的关系如图7。
图3 员工管理系统E-R 图
图4 系统管理员实体
图5 员工信息实体
图7 人员调动信息实体
3.2.3 数据库各表具体设计
表1 员工基本信息表(employee )
表2 奖惩管理信息表(reward )
表3 系统用户管理表(users )
表4 人事调动管理信息表(translate)
3.2.4 数据库连接与访问
数据库连接和访问主要由类DBConnect 负责,用户使用此类进行连接和访
问数据库,其主要实现代码摘录如下:
package staff.database; import java.sql.*; public class DBConnect {
private String dbUrl;
p rivate String password; p rivate String username; private String jdbcClassName; private Connection conn = null;
private Statement stmt = null;
public DBConnect() throws Exception {
dbUrl = "jdbc :microsoft :sqlserver ://192.168.0.80:
1433;DatabaseName=jdbc";
jdbcClassName
=
"com.microsoft.jdbc.sqlserver.SQLServerDriver";
username = "sa"; password = "sa"; connect();
}
public DBConnect( String inUrl, String inJdbcClassName, String inUserName, String inPassWord )
throws Exception
{
dbUrl = inUrl;
jdbcClassName = inJdbcClassName; username = inUserName; password = inPassWord; connect();
}
private boolean connect()throws Exception
{
boolean opened = false; Driver
driver
=
(Driver)
Class.forName(jdbcClassName).newInstance();
DriverManager.registerDriver(driver);
conn = DriverManager.getConnection(dbUrl, username ,
password);
stmt = conn.createStatement (); opened = true;
return opened;
}
public Connection getDBConnection() {
return conn; }
public ResultSet executeQuery(String sql) throws SQLException {
if (stmt != null) { }
return stmt.executeQuery(sql);
}
else
return null;
public void executeUpdate(String sql) throws SQLException { }
public void close() throws Exception {
if (stmt != null) {
stmt.close(); stmt = null;
if (stmt != null)
stmt.executeUpdate(sql);
}
if (conn != null)
conn.close();
} }
数据库访问如下:
DBConnect dbc = new DBConnect(); Connection conn =dbc.getDBConnection(); Statement stmt = null; ResultSet rs = null; stmt=conn.createStatement();
查询语句为:
rs = stmt.executeQuery(sql); //sql为查询语句 插入、更新语句为: stmt.executeUpdate(sql);
3.3 系统中的JavaBean 结构
本系统JavaBean 的目录和包的结构如图8所示。
图8 管理系统的JavaBean 结构图
图9 管理系统的包结构图
3.4 公共模块
本系统的公共模块如图10所示,其内容都是由许多页面共同拥有的,其中包含JavaScript 文件,JSP 文件,和CSS 样式表。
图10 公共模块结构图
4 系统实现
4.1 登录模块
登录模块用来难用户的合法性,防止非法用户进入员工管理系统,其结构如图11所示:
图11登录模块结构图
4.1.1 实现效果
用户登录模块是用户进入主页面的入口,其运行结果如图12所示。
图12 用户登录模块实现效果
图13提示输入用户名
图14 输入错误信息提示
如果用户没有输入用户名或者密码,而单击登录按钮,系统会弹出对话框提示用户如图13所示。输入用户名和密码后,系统会判断输入的用户信息。如果信息错误,则会给出提示信息“用户名或密码不正确”如图14所示。 4.1.2 相关JavaBean 程序
业务模型的设计主要定义了类User.java ,相关JSP 文件中的业务处理代码从用户接收登录请求,将模型与视图匹配在一起,从而实现对管理用户信息的验证。
4.1.3 相关文件
本模块主要涉及到两个页面:login.jsp 、ChkLogin.jsp
4.2 主页面模块
4.2.1 实现效果
主页面是用户通过身分验证后进入的页面,也是操作员工信息管理系统各功能的平台,可以在该模块中管理人员档案信息,奖惩信息,人员调动信息等,其结构如图15所示,效果如图16所示:
图15 主面面模块结构图
图16 主页面效果
4.2.2 主页面相关JSP 文件
相关的JSP 文件主要有:Index.jsp ,Logout.jsp ,Header.jsp ,Footer.jsp ,ModifyPasswordStep1.jsp , ModifyPasswordStep2.jsp。
4.3 人员档案模块
人员档案是人事管理系统的基本数据资料,是员工管理系统的基本功能,其提供的功能有:添加人员档案,修改人员档案,删除人员档案和查询人员档案。其模块结构如图17所示:
图17人员档案模块结构图
4.3.1 实现效果
图18 添加人员档案页面
图19 管理人员档案页
图19 管理人员档案页
图20 查看人员档案页面
4.3.2 相关JavaBean 程序
业务模型的设计主要定义了类Employee.java ,相关JSP 文件中的业务处理代码用以从用户接收增加、修改、删除、查询等请求并作出相应操作,其中,方法Add ()用于添加人员档案,Modify ()用于修改人员档案,Delete(String _EmployeeID)用于删除人员档案,ListAll()用于列出所有人员档案,Search()用于查询人员档案,并将操作结果在新的页面中显示出来。
4.3.3 相关JSP 文件
本模块包含的JSP 文档及其功能如下: Employee.jsp功能与index.jsp 类似, EmployeeLeft.jsp用于显示本模块网页的功能链接。
图21档案修改成功
AddEmployeeStep1.jsp 主要用于提供用户输入人员档案信息的界面, AddEmployeeStep2.jsp 则用于显示控制器操作结果的表单。
ManageEmployeeStep1.jsp 主要用于显示人员管理的条件查询页面, ManageEmployeeStep2.jsp 则用于显示控制器操作结果的表单, 单击列表中的“修改”链接如图19所示则进入ModifyEmployeeStep1.jsp 页面,此页面提供修改人员信息功能,单击修改按钮后,则向控制器提交表单,控制器作出相应处
理,并将最终结果成功与否显示在新页面,如果更新成功刚显示“修改人员档案成功”,否则显示“修改人员档案失败!”并将错误显示在页面中,如图21所示。如果单击图19中的删除链接,刚进入DelEmployeeStep1.jsp 页面,实现删除操作。
SearchEmployeeStep1.jsp 页面,主要用于查询人员档案,在管理人员档案操作中,既使用其来进行数据库查询,SearchEmployeeStep2.jsp 则用于显示查询结果列表,由于员工信息较多,因此只选取部分显示,如需查看详细信息,则可单击员工编号,并调用控制器实现详细信息查询,并将结果在ViewEmployeeStep1.jsp 页面中显示。如图20所示。限于篇幅有限,这里就不一一列举各文件的主要操作代码。
4.4 奖惩管理模块
奖惩管理模块主要用于记录企业员工的奖惩情况,其主要提供的功能有添加奖惩记录和修改奖惩记录。奖惩管理模块的结构如图22所示:
图22 奖惩管理模块结构图
4.4.1 实现效果
图23 添加奖惩记录
图24 管理奖惩记录
图25 查看奖惩记录
4.4.2 相关JavaBean 程序
业务模型的设计主要定义了类Reward.java ,相关JSP 文件中的业务处理代码用以从用户接收增加、修改、删除、查询等请求并作出相应操作,其中,FindByNO (),该方法主要用于实现根据记录号查找奖惩信息,用于整体查询;Add (),主要用于实现奖惩记录的添加操作;Modify (),主要实现奖惩信息的修改操作;Delete ()实现删除操作;SearchByID ()通过员工编号进行查询操作,主要用于一般查询。ListAll( ) ,主要用于列出查询结果。将操作结果在新的页面中显示出来。
4.4.3 相关JSP 文件
本模块主要包含页面关系如图22的结构图所示,其中Reward.jsp 功能与index.jsp 作用相似,RewardLeft.jsp 作用是提供了本模块的功能链接,如添加奖惩记录,管理奖惩记录和退出系统。
添加奖惩记录主要由AddRewardStep1.jsp 和AddRewardStep2.jsp 两个文件组成,其中前者提供了添加记录的界面,如图23所示,后者则用于显示控制器操作结果的表单。
管理奖惩记录主要由ManageRewardStep1.jsp 、ManageRewardStep2.jsp 、ModifyRewardStep1.jsp 、ModifyRewardStep2.jsp 、ViewRewardStep1.jsp 和DelRewardStep1.jsp 五个文件组成,其中ManageRewardStep1.jsp 用于显示管理奖惩记录界面如图24所示,当单击图中的修改链接后,则进入ModifyRewardStep1.jsp 页面,该页面表单和图23类似,当点击修改按钮时刚进入ModifyRewardStep2.jsp 页面,该页面用于显示控制器操作数据库后返回的最终修改结果。如点击删除链接,系统会提示是否确认删除操作,单击确定后则进行删除操作,并返回删除结果,并在DelRewardStep1.jsp 页面中显示操作的结果;如点击员工编号,则可进入ViewRewardStep1.jsp 表单页面,显示该员工的详细奖惩信息。如图25所示。
4.5 人员调动管理模块
人员调动管理模块主要用于记录企业员工的人员调动情况,其主要提供的功能有添加人员调动记录和修改人员调动记录。人员调动管理模块的结构如图26
4.5.1 实现效果
图27 添加人员调动页面效果
图28 管理人员调动页面效果
图29 查看人员调动页面效果
4.5.2 相关JavaBean 程序
业务模型的设计主要定义了类Translate.java ,相关JSP 文件中的业务处理代码用以从用户接收增加、修改、删除、查询等请求并作出相应操作,其中,FindByNO (),该方法主要用于实现根据记录号查找人员调动信息,用于整体查询;Add (),主要用于实现人员调动记录的添加操作;Modify (),主要实现人员调动信息的修改操作;Delete ()实现删除操作;SearchByID ()通过员工编号进行查询操作,主要用于一般查询。ListAll( ) ,主要用于列出查询结果。将操作结果在新的页面中显示出来。
4.5.3 相关JSP 文件
本模块主要包含页面关系如图26的结构图所示,其中Translate.jsp 功能与index.jsp 作用相似,TranslateLeft.jsp 作用是提供了本模块的功能链接,如添加人员调动记录,管理人员调动记录和退出系统。
添加人员调动记录主要由AddTranslateStep1.jsp 和AddTranslateStep2.jsp 两个文件组成,其中前者提供了添加记录的界面,如图
27所示,后者则用于显示控制器操作结果的表单。
管理人员调动记录主要由
ManageTranslateStep2.jsp
ModifyTranslateStep2.jsp ,,ManageTranslateStep1.jsp ,,和ModifyTranslateStep1.jsp ViewTranslateStep1.jsp
DelTranslateStep1.jsp 五个文件组成,其中ManageTranslateStep1.jsp 用于显示管理人员调动记录界面如图28所示,当单击图中的修改链接后,则进入ModifyTranslateStep1.jsp 页面,该页面表单和图23类似,当点击修改按钮时刚进入ModifyTranslateStep2.jsp 页面,用于显示控制器操作数据库后返回的最终修改结果。如点击删除链接,系统会提示是否确认删除操作,单击确定后则进行删除操作,并返回删除结果,并在DelTranslateStep1.jsp 页面中显示操作的结果;如点击员工编号,则可进入ViewTranslateStep1.jsp 表单页面,显示该员工的详细人员调动信息。如图29所示。
4.6 企业员工管理系统文件结构图
(见图30)
图30 企业员工管理系统文件结构图
4.7 技术难点
4.7.1 FOREIGN KEY 约束
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。
图31 employee表截图(EmployeeID为主键)
图32 reward表截图(RewardNO为主键)
图33 translate表截图(TranslateNO为主键
)
图34 删除人员档案时的警告窗口
例如,数据库jdbc 中的employee 表(图31) 与reward 表(图32) 、employee 与translate 表(图33) 都有链接,因为在员工档案信息和奖惩信息、调动信息之间都存在逻辑关系。reward 表中的EmployeeID 列与employee 表中的主键列相对应。employee 表中的EmployeeID 列是到reward 表的外键。如果主键表
(employe)中存在外键表(reward和translate) 的数据, 则外键表不能删除这条数据, 这是为了保证数据的合法性。所以在删除人员档案DelEmployeeStep1.jsp 中,对操作进行警告,如图34。如果确定该操作,数据库内部将进行以下操作:
(1)先删除该员工的奖惩信息;
(2)其次删除该员工的调动信息;
(3)最后删除该员工的人员档案。
相关代码如下:
//删除人员档案
try {
String employeeid =
String(request.getParameter("employeeid")
.getBytes("ISO8859_1"), "GBK");
//首先删除该员工的奖惩档案
Reward reward = new Reward();
Vector listreWard = Reward.SearchByID(employeeid);
for (int i = 0; i
reward = (Reward) listreWard.elementAt(i);
String rewardno = reward.getRewardNO();
if(!(rewardno.equals("null")&&rewardno.equals(""))){
//out.println(rewardno);
Reward.Delete(rewardno);
}
}
//其次删除人员调动档案
Translate translate = new Translate();
new
Vector listTranslate= Translate.SearchByID(employeeid); for (int i = 0; i
执行该操作后,将该员工的档案成功删除,操作结果如图34所示:
图34 删除人员档案成功
4.7.2 安全性问题
将项目发布到互联网上后,有些用户不是点击超链接打开网站的某个页面,而是在地址栏中直接写,而后进入,试图避开身份验证,处于对安全性的考虑,本项目为了避免用户非法登录,进行了验证设计,保证用户在登陆后才能进入的页面中,加入了如下的一行判断,如果用户非法进入,则自动跳转到登录界面:
其中Check.jsp 中的代码如下:
{
String loginmsg="loginfirst";
Response.sendRedirect("../login.jsp?loginmsg="+loginmsg); }%>
4.7.3 中文乱码问题
开发javaweb 应用出现乱码是很常见的,毕竟现在unicode 的使用还不是很广泛,在使用gb2312(包含了gbk 简体,big5繁体)的系统中要正确实现中文的display 和数据库的存储是最基本的要求。由于浏览器中的参数传递是按字节传送,因此英文和数字不会有任何的问题,而中文汉字则由两个字节组成,因此导致了中文无法正常显示。本次实验中碰到了许多JSP 和数据库中的中文显示问题,以及JSP 网页的中文显示问题,经过上网搜索了好多种中文问题解决方案,经过多次测试,现将本系统中文显示问题解决方案列出如下:
1. 将编码方式统一定为GBK 。如:
等
2. 针对JSP 页面与数据库之间的中文转化问题,本系统采取的方法是在每次传递和接收参数前都进行编码转换,如:
String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GBK");
4.7.4 JavaScript的实现
为使本系统使用过程中更人性化,本系统中加入了一些JavaScript 代码,例如日历的实现,介于本人水平有限,系统中使用的较难的JavaScript 代码一部分摘自互联网,其他的是参考其他书中所介绍的案例。
5 系统测试
在完成了程序的编写工作后,接下来将进行软件的测试,这里说的软件,并不单单是指程序本身,还包括其他方面。测试和开发一样,也是一项技术性很强的工作,有着很多的技巧。 软件测试是软件质量保证的主要活动之一,因此,测试的质量直接影响软件的质量。
5.1 测试的定义及目的
软件测试就是在软件投入运行前,对软件的需求分析,设计规格说明和编码的最终复审,是保证软件质量的关键步骤。如果要给软件测试下定义,可以这样将,软件测试是为了发现错误而执行程序的过程。
测试的目的在于将软件设计时设计者与程序开发者之间理解不一致的地方,功能与需求不一致的地方,不符合逻辑思维的情况都反映给质量控制部门,由质量控制部门调配需求部门统一作出一个明确解答,再由开发人员进行修改和补充。
测试的目标是以最少的时间和人力找出软件中潜在的各种错误和缺陷。
5.2 测试的原则
对于相对复杂的产品或系统来说,Zero-Bug 是一种理想,Good-Enough 是我们的原则。Good-Enough 原则就是一种权衡投入/产出比的原则;不充分的测试是不负责任的;过分的测试是一种资源的浪费,同样也是一种不负责任的表现。我们操作的困难在于,如何界定什么样的测试是不充分的,什么样的测试是过分的。目前状况唯一可用的答案是:制定最低通过标准和测试内容,然后具体问题
具体分析。
5.3 测试的方法
依据前面所说的测试对象,我们把测试划分为几个方面来进行测试。
5.3.1 界面测试
界面测试是测试过程中比较简单直观的一种测试方法,只要细心地按界面要求核对就行了。可这快往往是程序开发人员容易忽视和遗漏的地方,也是常常出Bug 的地方。下面是界面测试中经常出现的几种Bug :
(1)错别字,即界面中的标题或者文本内容中出现了错别字。这种Bug 如果测试人员不细心,和难找出来,可能会出现在提示信息或界面中。
(2)出现了一些根本读不懂的内容,一般多出现在程序的提示信息和一些较长的文本中。这种情况基本上出现在拼起来显示的提示中,页面的简单陈述是通过变量拼组起来的,通过程序将字一个一个地输出出来。通常是因为程序中的控制错误或是程序开发人员对程序没有进行认真的自测,导致出现这种Bug 。
(3)程序员自创的词语,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人员使用一些专业术语,并且混杂着自己的理解出现Bug ,主要是由于开发过程中团队合作没又明确的分工,没有统一的规范用语。
(4)页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况只出现在没有CSS 定义的情况下,或是已经定义的CSS ,开发人员在开发过程中没有调用。
(5)标题相近的程序及模块,把标题弄混。这种情况多是因为业务方面的定义名称很相似或很类似,并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。
5.3.2 功能测试
顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测试中需要注意的有:
(1)查询功能中,有按单一查询条件进行查询的,也有按多个查询条件组合查询的,这里要注意多个查询条件之间的关系,还有一些常识性的问题,比如按月查询,闰年中二月的天数。
(2)录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。
(3)测试删除功能中需要注意的是单击”删除”按钮后,一般会出现提示信息,询问是否确定删除。通常情况下,我们单击”确认”按钮查看信息是否被删除掉了,而忽略了单击”取消”按钮后程序的反应,这时有可能的是没有删除,还有一种可能是即便单击了”取消”按钮,也一样删除了数据。另外,在删除多条记录的时候,要注意连续选中的几条记录是否真正都被删除了,即如果再按照这种查询方式查询,是否还能查询出来。有的时候需要在数据库中设一个标志位,而不是真正的物理删除。所以在下一次查询中,可能还会被查询出来,这主要是因为在查询条件中没有将标志位考虑在内。
(4)关于修改功能的测试,主要是看修改确认后是否数据真正已被修改了。这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。
5.3.3 需求测试
针对需求测试,是测试中很重要的一个环节。因为需求是在软件设计,开发乃至软件测试中重要的依据。要针对需求测试,首先就要对项目的需求和业务有一定的了解。这些需求很多时候是在实现增,删,查,改这些基本功能之上,针对项目和相关业务所作的一些逻辑上的控制。这就要求程序员在设计和编码的时候要去充分理解考虑需求。
5.3.4 性能测试
性能测试在软件的质量保证中起着重要的作用。。通常我们把性能指标全部归结到硬件,操作系统和开发环境上,而忽略了代码本身性能上的考虑。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意
攻击的可能性。
5.4 测试中其他要注意的地方
时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。其主要原因是,模块相互调用时接口会引入许多新问题。这就要求在进行程序设计和编码的时候要尽可能地从整体考虑。
错误本身出现在程序设计阶段,并非由于程序员编码造成的问题。这就要求我们无论是在开发还是测试阶段,对需求或程序设计存在疑问,应及时提出,及时解决。
由于一些模块被修改了,对其他模块造成了影响而出现了新的Bug 。发现这些Bug 要求我们对程序整体的结构有基本的了解,清楚模块之间的一些联系。
5.5 员工管理系统的测试
在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试:
界面测试:反复点击网页上的超链接,测试其连接情况,直到所有的链接都达到预期的效果。
功能测试:对网站的几大功能模块逐一测试,尽最大可能发现起潜在的错误。 性能测试:将程序以局域网的形式发布,查看其他用户是否能够访问到。 需求测试:根据需求分析的内容,测试网站是否和当初的设计一样。
通过这几方面的测试,我及时修正了系统中存在的问题,很好的提高了系统的性能,达到了预期目标。
6 结论
本文主要介绍了企业员工管理系统开发的基本过程,包括系统的需求分析,系统功能模块的分析设计,数据库设计,具体模块的实现等内容。为了能做好这次毕业设计,我查询了很多相关的资料,认真的分析,整个系统的开发基本遵循软件工程中系统开发流程,做到模块化分析、模块化设计以及代码编写的模块化,通过这次毕业设计,我对企业员工管理系统的功能有了更深的了解,在分析设计的过程中,系统分析从不够完善到基本实现,数据库设计从不合理到基本合理,文档从不规范到规范,经历了一个漫长而复杂的过程。通过对企业员工管理系统的分析、设计与实现,对管理系统的开发方法有了基本的掌握,同时对于数据库的安全性操作和维护有了进一步的了解。完成这次毕业设计除了我自己的努力外,还得到了很多同学和老师的帮助,在实现的过程中遇到了很多问题,例如连接数据库出错,无法将数据插入到数据库等,每当遇到这类问题,我就先认真阅读相关书籍,若能够找到答案就继续往下进行,如果依靠自己不能解决就请老师指教或找同学帮忙。从他们身上我学到了很多东西。总之,通过本次开发,我对数据库的WEB 应用有了进一步的了解,提高了自身对数据库语言的掌握水平,强化了我的独立思考、动手操作以及实际分析问题的能力,加强了自学能力的锻炼,使我意识到必须努力学习才能在工作中体现自己的价值,适应社会的需要。这对我以后的工作和学习有很大的帮助。
致 谢
这个设计是我首选的毕业设计,因为我对JavaWeb 开发有着浓厚的兴趣。在论文将要完成之际,我的心情仍然无法平静,从开始的课题选择到论文的顺利完成,有多位可敬的师长、朋友和同学都给予了无数次的帮助,正是因为有了他们的支持和鼓励。此次毕业设计才会顺利完成。在这里,首先要感谢我的导师——XXX 老师。老师平日里工作繁忙,但在我做毕业设计的每个阶段,从外出实习到查阅资料,设计草案的确定和修改,中期检查,后期详细设计,装配草图等整个过程中老师都给予了我悉心的指导和安排。直至我参加工作后的一个多月,由于太忙没能及时完成老师的要求的进度,老师不仅没有批评,依然不辞辛劳的予以指导,使我很受感动和鼓舞。这次毕业设计在选题及研究过程中能得到老师的悉心培养,是我在大学生活中难忘的一件事。她曾多次询问研究进程,并为我的所做进程指点,帮助我理解毕业设计的思路和意义。同时也感谢教授我C 语言程序设计课程的蔡春华老师,让我在大学一开始就对编程产生了浓厚的兴趣;还有张岩老师和杨文君老师,分别教授了我们数据库原理和软件工程,为我这次的毕业设计打下了坚实的基础。另外,还有邢军、范书平、于立洋等一大批优秀代课老师对我在大学期间的教育和培养,在此,我向他们表示崇高的敬意的诚挚的问候。因为我所做的设计都相关到他们在我的大学四年里教的课程,通过他们的悉心教导,才使我在此次毕业设计制作中顺利进行。他们所教的知识都为我将来的路打下了基石,我在他们身上学到的不只是科学文化知识,而且还学到了很多做人的道理。
当然,感谢我的同学,在相处的几年里,每当我在学习中遇到困难,他们都及时的提供帮助以及生活的关心,正是由于他们的帮助与支持,我才克服一个又一个的问题与困惑,直至本论文的顺利完成。特别是同寝四年的室友们,他们对本设计提供了很多宝贵的建议和意见,向他们表示由衷的感谢。
另外,我要向我的父亲、母亲由衷的致敬,感谢他们对我在外求学的支持与理解。感恩于他们多年来的养育之情,你们永远健康快乐是我最大的心愿。
最后,感谢牡丹江师范学院四年来对我的培养,在这里请接受我的诚挚的谢意和祝福,恭祝母校年年桃李,岁岁芬芳!
参考文献
[1] 林上杰、林康司.JSP 2.0 技术手册. 北京:电子工业出版社,2006.
[2] 孙卫琴.Tomcat 与JavaWeb 开发技术详解(第2版). 北京:电子工业出版社,2008.
[3] 李香敏,徐进,姜世峰等. SQL Server 2000 Programmer’s Guide. 北京:北京希望电
子出版社,2000.
[4] Nicholas C.Zakas.JavaScript高级程序设计. 北京:人民邮电出版社,2006.
[5] 孙卫琴.Java 面向对象编程. 北京:电子工业出版社,2007.
[6] 齐治昌,谭庆平,宁洪等. 软件工程. 北京:高等教育出版社,2005.
[7] 萨师煊,王珊.. 数据库系统概论[M].北京:高等教育出版社,1997.
[8] 李代平, 章文. 中文SQL Server 2000数据库应用开发[M].北京:冶金工业出版社,2000.
[9] 张海藩. 软件工程导论[M].北京:清华大学出版社,2003.
[10]王诚梅,袁然,王艳等.JSP 案例开发集锦. 北京:电子工业出版社,2005.