JAVA人事管理系统java论文doc.docx

上传人:b****3 文档编号:24900895 上传时间:2023-06-02 格式:DOCX 页数:25 大小:1.36MB
下载 相关 举报
JAVA人事管理系统java论文doc.docx_第1页
第1页 / 共25页
JAVA人事管理系统java论文doc.docx_第2页
第2页 / 共25页
JAVA人事管理系统java论文doc.docx_第3页
第3页 / 共25页
JAVA人事管理系统java论文doc.docx_第4页
第4页 / 共25页
JAVA人事管理系统java论文doc.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

JAVA人事管理系统java论文doc.docx

《JAVA人事管理系统java论文doc.docx》由会员分享,可在线阅读,更多相关《JAVA人事管理系统java论文doc.docx(25页珍藏版)》请在冰豆网上搜索。

JAVA人事管理系统java论文doc.docx

JAVA人事管理系统java论文doc

 

第一章 可行性分析和需求分析

1.1可行性研究

1.1.1经济可行性

采用传统的手工出入方法,不仅工作繁琐而且需要人力输入多,记录容易出错,那样穿绳成本高,效果差的弊病,对于一个企业的资料建立是十分困难和麻烦的。

而采用这种系统所花费的成本,精力都远远低于手工,而且使用十分方便,更新也十分容易,每个部门只需要一个人统一管理,对企业实现办公无纸化能起到很大的作用。

锁业此系统可行性也就具备了。

1.1.1经济可行性

随着国内软件开发的日益发展壮大,各种中小企事业单位已具备独立开发各种类型的软件的能力,能够满足不同行业的特别的需求。

而这个系统尽管其在组织关系上存在着很大的复杂性,繁琐性,但是就整个系统的技术构成上来看,它还是属于一个数据库应用类的系统。

其基本操作还是对存在数据库进行添加、删除、查找、编辑等。

所以就单纯的数据库应用来看,暂不存在太大的技术问题。

1.1.4

1.2需求分析

1.2.1需求规定

在人事管理系统中,管理员要为每个企业员工建立管理查询账户,并給企业员工发放登陆账户及密码,账户内存储员工的个人信息和工作记录信息。

企业员工可以通过自己的账户登陆系统,查询个人信息及一些公共信息,

登陆系统时,先输入自己的账号,系统验证账户的有效性和登陆账户的权限,无效则提示其原因,有效则显示员工的基本信息。

然后打开自己所要查询或者管理的相关信息,若有修改权限的管理人员,即可进行相应的管理。

系统管理员定期或不定期对企业员工信息进行入库、修改、删除等人事信息管理以及注销,包括基本信息管理。

为系统维护人员提供权限管理、数据备份等通用功能。

1.2.2功能需求:

1)员工档案

实现员工信息的查询与添加,员工查询条件分员工姓名和员工编号两类,能够查询的基本信息为员工姓名、员工编号以及所属部门。

添加新员工包含员工的详细信息,如姓名、性别、民族、政治面貌,出生日期、部门、职务、联系电话等等。

工资管理

工资管理主要实现员工工资查询,查询条件含月份、员工姓名及员工编号。

工资信息里除员工的基本信息如姓名、部门、职务等以外,还包含了员工工资所处银行,银行账号及实发工资。

部门设置

部门设置实现现有部门的信息显示以及部门管理,部门管理可实现对现有部门的删除、修改功能,也可实现部门的新增功能。

用户管理

用户管理主要实现对当前用户的密码修改

1.2.3性能需求

由于此开发项目针对企业单位,使用频度较高,使用性要求比较高。

为防止对信息资料和管理程序的恶意破坏,要求有较为可靠的安全性能。

总之,要求稳定、安全、便捷,易于管理和操作。

✧查询速度:

不超过10秒;

✧其它所有交互功能反应速度:

不超过3秒;

✧可靠性:

平均故障间隔时间不低于200小时。

1.2.4其他需求

能快速恢复系统和故障处理,方便系统升级和扩充,故障恢复时间不超过5小时。

1.3数据流图

✧顶层图

 

一层图

输入你的用户

系统设置

进入进入进入进入

 

二层图

 

修改

更改删除添加返回

信息清单信息清单信息清单信息清单

 

功能分解后的数据流图:

系统设置

 

员工档案管理管理

 

员工详细信息

C

 

第二章数据库设计

2.1MySQL的概述

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。

在2008年1月16号被Sun公司收购。

而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。

由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

2.2系统数据实体结构描述

用户信息表:

用于记录用户信息

功能名称:

用户信息表(user)

存储位置:

用户信息表

存储组织:

用户信息信息一条记录

主键:

Id

数据元素

数据采集方式

说明

Id

自动采集

主键,必须输入

Username

人工采集

必须输入

Password

人工采集

必须输入

相关数据主要功能模块:

用户管理

员工信息表:

记录员工基本信息

功能名称:

员工信息表(personnel)

存储位置:

员工信息记录

存储组织:

员工信息一条记录

主键:

personnelid

数据元素

数据采集方式

说明

personnelid

自动采集

主键,必须输入

name

自动采集

不允许空值

Sex

人工采集

允许空值

Nation

人工采集

允许空值

Faction

人工采集

允许空值

birthday

人工采集

允许空值

department

人工采集

允许空值

Position

人工采集

允许空值

Contactphone

人工采集

允许空值

Mobile

人工采集

允许空值

Usemodus

人工采集

允许空值

pohto

人工采集

允许空值

相关数据主要功能模块:

员工文档管理

部门信息表:

记录部门信息

功能名称:

部门信息表(department)

存储位置:

部门信息

存储组织:

部门信息一条记录

主键:

CheckDate

数据元素

数据采集方式

说明

Departmentid

自动采集

主键,必须输入

Departmentname

人工采集

允许空值

Remark

人工采集

允许空值

相关数据主要功能模块:

部门管理

工资表:

记录员工工资信息

功能名称:

工资表(wage)

存储位置:

工资表

存储组织:

员工工资一条记录

主键:

Wageid

数据元素

数据采集方式

说明

Wageid

自动采集

主键,必须输入

Time

自动采集

允许空值

Name

人工采集

允许空值

Personnid

人工采集

允许空值

Department

人工采集

允许空值

Position

人工采集

允许空值

bank

人工采集

允许空值

Banknumer

人工采集

允许空值

Pay

人工采集

允许空值

相关数据主要功能模块:

工资管理

第三章系统测试

3.1系统测试分析

在企业人事管理系统开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,示经周密测试的系统投入运行,将会造成难以想像的后果,因此系统测试是企业人事管理系统开发过程中为保证软件质量必须进行的工作。

大量统计资料表明,系统测试的工作量往往占系统开发总工作量的40%以上。

所以,我们必须重视测试工作。

由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。

因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。

有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。

因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。

从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。

测试对象是随阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。

3.1.1单元测试

单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。

对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。

单元测试一般是由程序员完成,也称程序调试。

3.1.2组合测试

组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。

组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。

3.1.3确认测试

确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是对表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。

确认测试是按照这些要求定出的“确认测试计划”进行的。

测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。

3.1.4系统测试

系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统不否达到用户的实际要求,系统测试的依据是系统分析报告。

系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。

系统测试与建构同时进行或略慢。

系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。

3.1.5用户验收测试

在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。

在具体的测试中,一般应遵循以下原则:

由程序设计者之外的人进行测试;测试用例应由两部分组成:

输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。

第四章系统运行结果

4.1首先在首页,输入用户名和登陆密码系统,用户可是系统管理员,也可以是普通员工。

4.2然后进入的是系统的主页面,其中主要包括:

1.员工档案管理2.工资管理3.用户管理

 

4.3下面显示的是员工档案管理的界面布局及所实现的功能:

1.查看全部员工2.添加新员工

4.4以下是工资管理项的界面,功能是:

根据用户输入的内容和选择的查询条件,输出相应的员工工资

4.5以下是部门管理的页面,输出内容是员工编号所对应的部门及部门简介

4.6最后是用户管理,实现的功能是修改用户的登陆密码

第五章核心代码

UserDao:

packagebiyesheji.struts.User;

publicinterfaceUserDao{

publicbooleanLonig(UserVouv);

publicvoidxiuugaipass(UserVovo);

}

packagebiyesheji.struts.User;

UserFactry:

publicclassUserFactry{

publicstaticUserDaogetusersmple(){

returnnewUserSmple();

}

}

UserVo:

packagebiyesheji.struts.User;

publicclassUserVo{

privateStringVOusername;

privateStringVOpassword;

publicStringgetVOusername(){

returnVOusername;

}

publicvoidsetVOusername(Stringousername){

VOusername=ousername;

}

publicStringgetVOpassword(){

returnVOpassword;

}

publicvoidsetVOpassword(Stringopassword){

VOpassword=opassword;

}

}

UserSmple:

packagebiyesheji.struts.User;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importbiyesheji.struts.*;

publicclassUserSmpleimplementsUserDao{

//登陆判断

publicbooleanLonig(UserVouv){

booleanbool=false;

Stringsql="select*fromuserwhereusername=?

andpassword=?

";

Databasedb=newDatabase();

try{

PreparedStatementps=db.database().prepareStatement(sql);

ps.setString(1,uv.getVOusername());

ps.setString(2,uv.getVOpassword());

ResultSetrs=ps.executeQuery();

if(rs.next()){

bool=true;

ps.close();

rs.close();

db.Close();

}

}catch(SQLExceptione){

e.printStackTrace();

}

returnbool;

}

//修改密码

publicvoidxiuugaipass(UserVovo){

Stringsql="updateusersetpassword=?

;";

DatabaseUD=newDatabase();

try{

PreparedStatementps=UD.database().prepareStatement(sql);

ps.setString(1,vo.getVOpassword());

ps.executeUpdate();

ps.close();

UD.Close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

/*

*GeneratedbyMyEclipseStruts

*Templatepath:

templates/java/JavaClass.vtl

*/

.Useraction:

packagebiyesheji.struts.Useraction;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.struts.action.ActionForm;

importorg.apache.struts.action.ActionForward;

importorg.apache.struts.action.ActionMapping;

importorg.apache.struts.action.ActionMessage;

importorg.apache.struts.action.ActionMessages;

importorg.apache.struts.actions.DispatchAction;

importbiyesheji.struts.User.*;

importbiyesheji.struts.Userform.UserForm;

publicclassUserActionextendsDispatchAction{

publicActionForwardxiugai(ActionMappingmapping,ActionFormform,

HttpServletRequestrequest,HttpServletResponseresponse){

UserFormuserForm=(UserForm)form;

UserVovo=newUserVo();

vo.setVOpassword(userForm.getPassword());

UserFactry.getusersmple().xiuugaipass(vo);

returnmapping.findForward("xiugai");

}

publicActionForwardlogin(ActionMappingmapping,ActionFormform,

HttpServletRequestrequest,HttpServletResponseresponse){

UserFormuserForm=(UserForm)form;

UserVovo=newUserVo();

vo.setVOusername(userForm.getUsername());

vo.setVOpassword(userForm.getPassword());

if(UserFactry.getusersmple().Lonig(vo)){

returnmapping.findForward("loginok");

}else{

ActionMessageserorr=newActionMessages();

erorr.add("LoginErorr",newActionMessage("LoginErorr"));

this.saveErrors(request,erorr);

returnmapping.getInputForward();

}

}

}

/*

*GeneratedbyMyEclipseStruts

*Templatepath:

templates/java/JavaClass.vtl

*/

Userform;

packagebiyesheji.struts.Userform;

importjavax.servlet.http.HttpServletRequest;

importorg.apache.struts.action.ActionErrors;

importorg.apache.struts.action.ActionForm;

importorg.apache.struts.action.ActionMapping;

importorg.apache.struts.action.ActionMessage;

publicclassUserFormextendsActionForm{

privateStringusername;

privateStringpassword;

publicActionErrorsvalidate(ActionMappingmapping,

HttpServletRequestrequest){

ActionErrorserrors=newActionErrors();

if(this.username==null||"".equals(this.username))

{

errors.add("namenull",newActionMessage("Namenull"));

}

if(this.password==null||"".equals(this.password))

{

errors.add("passnull",newActionMessage("Passnull"));

}

returnerrors;

}

publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){

//TODOAuto-generatedmethodstub

}

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

}

项目总结

通过这次项目的开发,我们学习到了整个开发软件的标准流程,以及在开发过程当中团队合作分工的重要性。

能更加深刻地理解了软件开发的相关知识,锻炼了开发能力,知识得到了很大的拓展。

在进行分析,设计,编码,调试,维护这几部分的工作的时候,最核心的就是文档的编写。

文档的作用在于以下3个方面:

一是可以帮助整理思路。

把要完成的目标,系统的结构,每一个模块的功能等整理一下,然后分门别类地写下来,这样在开发的过程中,就有据可依,在需要回过头来修改设计的时候,也有证可考。

二是便于交流。

想象一下开会时的情形,一大帮子人争先恐后,激烈辩论,然后会终人散,思想灵感也就随之散了,结果是开了半天会,什么也没讨论出来。

这就是后来会议记录被发明出来的原因。

在脑子里的东西一多,就会散而且乱,用语言表达的时候,很容易会丢三落四,别人也很难把握住你的思想。

但经过整理写在纸上以后,则会清晰得多,无论是别人还是自己,看起来都可以一目了然。

三是可以作为以后维护时的参考资料。

有一句名言:

“笔和纸永远都比大脑可靠”,意思就是说,放在大脑里的东西说不准哪天就忘了,但写在纸上的东西,只要不发生什么意外,一般是丢不了的。

当过了一段时间,你需要再回过头来修改你的程序的时候,你就会发现,你以前写下的文档实在太有价值了。

别指望你的源代码,对于复杂一点的程序来说,单纯的源代码几乎会扼杀掉你所有的时间。

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

当前位置:首页 > 高中教育 > 高中教育

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

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