还剩98页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
陈艺方基于JAVAEE技术博彦科技公司信息管理系统的设计与实现辽宁工程技术大学毕业设计(论文)中文题目:基于JAVAEE技术博彦科技公司信息管理系统设计与实现外文题目:THEDESIGNANDIMPLEMENTATIONOFBEYONDSOFTCOMPANYINFORMATIONMANAGEMENTSYSTEMBASEDONJAVAEE毕业设计(论文)共99页(其中外文文献及译文10页)完成日期2015年5月答辩日期2015年6月摘要伴随着Internet技术在各个领域的广泛应用,各行各业企业信息化建设步伐加快,企业规模的增大,传统的办公方式已经不能够适应企业对大量信息的快速传递与处理的需求,而且常用的文件人工记录查询起来相当繁琐,得到的信息也不够准确,因此必须要推进办公信息化,加强各业务部门的办公效率,同时也为了保证数据的准确性和永久性,该公司管理系统既满足了自动化的管理需求,提高了企业内部的管理水平,同时也可以提升企业在市场竞争中的综合竞争力本文基于软件工程面向对象的理论,主要分析公司信息管理系统的一些基本功能和组成情况,包括系统的需求分析、系统结构、系统功能模块划分以及系统数据库模式分析等,重点对公司信息管理系统的开发实现进行介绍系统使用Sun公司的Mysql
5.5数据库管理系统进行数据存储;使用MyEclipse10集成开发环境公司信息管理系统为员工提供充足的信息和快捷的查询手段,通过计算机实现对员工基本信息、考勤、财务方面以及邮件功能的管理;可按需查找或者增加、修改和删除等操作;也可以针对不同的模块,进行相应的操作处理关键词博彦科技公司;公司信息管理系统;MyEclipse10;Mysql
5.5ABSTRACTAlongwiththeInternettechnologyiswidelyusedinvariousfieldsenterpriseinformationconstructioninallwalksoflifegatheredpaceandtheincreasingscaleofenterprisethetraditionalofficewayalreadycannotadapttothedemandoftherapidtransmissionandprocessingoflargeamountsofinformationinmanycompaniesfilemanualrecordthatthewaycommonlyusedqueryupquitetedioustheinformationisnotaccurateenoughsohavetopromoteinformationofficestrengthentheefficiencyofbusinessofficeandinordertoensuretheaccuracyofdataandpermanentatthesametimethecompanymanagementsystemnotonlymeetstherequirementsofautomationofmanagementimprovethemanagementleveloftheenterprisebutalsocanimprovethecomprehensivecompetitivenessofenterprisesinmarketcompetition.Inthispaperbasedontheobject-orientedsoftwareengineeringtheorythemainanalysisinsomeofthebasicfunctionsandcompositioninthiscompanymanagementsystemincludingthesystemrequirementanalysissystemstructuresystemfunctionmodulesanddatabaseschemaanalysisfocusingoncompanymanagementsystem’sdevelopmentandrealizationareintroduced.SystemusesMysql
5.5databasemanagementsystemfordatastorage;MyEclipse10integrateddevelopmentenvironment.Companymanagementsystemastheclerktoprovidethesufficientinformationandthequickinquirymethod.Throughthecomputerimplementationofstaffbasicinformationattendancemanagementfinancialandmailfunction;Accordingtoneedtofindoraddmodifyanddeleteoperations;Moreoveraccordingtodifferentmodulecarriesonthecorrespondingoperationprocessing.KeyWords BEYONDSOFT;CompanyManagementsystem;MyEclipse10;Mysql
5.5目录TOC\o1-3\h\uHYPERLINK\l_Toc96291公司信息管理系统项目概述
11.1现系统概述
11.2公司组织机构
11.3公司管理系统业务流程
21.4现系统存在的问题7HYPERLINK\l_Toc20392公司信息管理系统需求分析
82.1需求陈述
82.2UseCase建模
92.
2.1定义活动者
92.
2.2UseCase图
102.
2.3用例说明14HYPERLINK\l_Toc296733公司信息管理系统架构设计
193.1架构设计目标
193.2系统功能模块
193.3系统架构设计
203.4系统架构类图24HYPERLINK\l_Toc70704公司信息管理系统详细设计
254.1系统交互图
254.
1.1系统架构类交互图
254.
1.2活动者与模块间的交互
264.2系统活动图
344.
2.1系统活动图
344.
2.2活动者与模块间的状态图
364.3业务逻辑对象类设计
414.
3.1发现业务逻辑类
414.
3.2业务逻辑对象类图
424.4数据库设计
464.
4.1物理表结构图
464.
4.2ER概念模型设计
484.
4.3关系模型设计
524.5开发环境的选择
534.
5.1系统开发工具
534.
5.2数据库的选择
534.
5.3系统配置图55HYPERLINK\l_Toc90895公司信息管理系统编码
565.1概述开发工具及编程脚本
565.2脚本习惯说明
575.3脚本58HYPERLINK\l_Toc181316公司信息管理系统测试
606.1测试原则及测试方法概述
606.2管理页面测试用例
616.
2.1员工考勤管理模块测试用例
616.
2.2员工信息管理模块测试用例
626.
2.3邮件模块测试用例
626.
2.4员工薪资管理模块测试用例
636.
2.5员工加班管理模块测试用例
646.
2.6假期情况管理模块测试用例
646.
2.7公司部门设置模块测试用例
656.3个人页面测试用例
666.4软件测试结论70HYPERLINK\l_Toc
74606.
4.1软件能力70HYPERLINK\l_Toc
130996.
4.2缺陷和限制70HYPERLINK\l_Toc
231036.
4.3建议70HYPERLINK\l_Toc
168266.
4.4测试结论70HYPERLINK\l_Toc27797总结71HYPERLINK\l_Toc8660致谢72HYPERLINK\l_Toc5014参考文献73HYPERLINK\l_Toc12544附录A中文译文74HYPERLINK\l_Toc19233附录B英文原文78HYPERLINK\l_Toc1612附录C主要代码841公司信息管理系统项目概述
1.1现系统概述企业是一个生产、管理的集散地,生产资料和企业员工等资料繁多,包含很多信息数据的管理在过去的企业中用书面管理信息,在修改、查询、添加信息方面都没有很好地发挥他的效益,企业信息资料管理复杂、工作量大比较突出,不能利用多种途径查询企业客户资料,修改后不能同步更改所有的档案资料,这就是公司信息管理系统开发的基本环境公司信息管理系统是当今高度信息化社会中任何企事业战略发展要素的重要组成部分,他的成功建设和应用时社会组织在竞争中立于不败之地,进而发展壮大的有力保证公司信息管理系统使得企业http://baike.baidu.com/view/
38340.htm以先进的信息技术http://baike.baidu.com/view/
3226.htm为手段,对信息进行采集、整理、加工http://baike.baidu.com/view/
404361.htm、传播、存贮和利用的过程,对企业的信息活动http://baike.baidu.com/view/
776990.htm过程进行战略规划http://baike.baidu.com/view/
1027203.htm,对信息活动中的要素进行计划http://baike.baidu.com/view/
149377.htm、组织http://baike.baidu.com/view/
46944.htm、领导http://baike.baidu.com/view/
49575.htm和控制http://baike.baidu.com/view/
57913.htm的决策http://baike.baidu.com/view/
57813.htm过程,力求资源http://baike.baidu.com/view/
8439.htm有效配置、共享管理http://baike.baidu.com/view/
18841.htm、协调运作,以最少的消耗创造最大的效益在公司信息管理http://baike.baidu.com/view/
23634.htm系统中,信息和信息活动http://baike.baidu.com/view/
776990.htm是企业信息管理的主要对象企业http://baike.baidu.com/view/
38340.htm所有活动的情况都要转变成信息,以“信息流http://baike.baidu.com/view/
128567.htm”的形式在企业信息系统http://baike.baidu.com/view/
8231.htm中运行,以便实现信息传播、存储、共享、创新http://baike.baidu.com/view/
15381.htm和利用此外,传统管理http://baike.baidu.com/view/
18841.htm中企业http://baike.baidu.com/view/
38340.htm的信息流http://baike.baidu.com/view/
128567.htm、物质流、资金流http://baike.baidu.com/view/
263044.htm、价值流http://baike.baidu.com/view/
882223.htm等,也要转变成各种“信息流”并入信息管理http://baike.baidu.com/view/
23634.htm中企业信息管理http://baike.baidu.com/view/
23634.htm的原则必须遵循信息活动http://baike.baidu.com/view/
776990.htm的固有规律,并建立相应的管理方法http://baike.baidu.com/view/
712271.htm和管理制度http://baike.baidu.com/view/
673434.htm,只有这样,企业才能完成的各项管理职能http://baike.baidu.com/view/
57409.htm对于基层人员来说,利用信息管理系统对日常经营和生产活动进行管理,可以将企业在业务流程中所需要的信息整合起来,通过电子化使信息处理更加高效准确、业务流程更加流畅,这种无纸化办公更加方便对于中层管理人员来说,信息管理系统的使用,虽企业运作中的各种信息进行了集中、完备、透明化的处理,尽最大的可能消灭了信息孤岛的状况,能使中层管理者清楚的了解企业的运作情况对于高层管理者来说,信息管理系统电子化处理的高效性和准确性和强大的统计和数据分析功能会更好的支持管理者做出快熟的反应和决策
1.2公司组织机构博彦科技公司,由培训部门、人力资源部门、测试部门、人事部门、全球化战略以及微软事业部等几个部门组成,各个部门在互相协作下共同完成公司的相关业务目前公司组织机构如下图1-1所示博彦科技公司管理系统培训部门人力资源部门测试中心微软事业部全球化战略部门技术部门人员入职权限管理人员离职图1-1公司组织机构图Fig1-1DiagramoftheCompanysOrganizationalhttp://dj.iciba.com/organizational/\t_blankStructure
1.3公司管理系统业务流程业务流程图符号说明如下表1-1所示表1-1业务流程图符号说明Table1-1Serviceflowchartsymbolexplanation符号含义符号实体表示单位或个人,圈内写明单位或个人职务的名称处理表示业务处理,框内写明处理的名称文档表示各种帐目、规范、定额手册、报表积累等大量存档信息符号内部写明其名称业务流流向线,表示信息或处理的流向根据调研分析及业务分析,系统整体有七大模块,人事部人员分别对员工信息,邮件,考勤,加班,薪资,假期,公司部门设置进行管理且每个员工都可查看自己的各项信息、请假申请以及修改密码等得到整个系统的业务流程图如下图1-2所示#0;#0;#0;#0;员工登陆是否是人事部员工?管理页面个人管理页面YN个人详细信息考勤表薪资列表请假情况列表修改密码员工信息管理考勤管理邮件管理加班管理假期管理薪资管理部门设置图1-2系统流程图Fig1-2theWorkflowofSystem
(1)员工信息管理业务流程图如下图1-3所示#0;#0;人事部员工登陆点击员工信息管理点击员工列表信息点击添加员工信息点击查询员工信息选择查看的方式(按部门,按薪资,按年龄)返回员工信息点击“查看”员工详细信息输入新注册员工信息系统处理用户提交的内容并判断数据正确性处理请求,将结果返回给用户输入查询条件(部门,职工编号,职工姓名,薪资),点击确定系统处理请求,返回符合条件的员工信息点击“查看”点击“编辑”点击“删除”进入“编辑界面”进行编辑后,点击提交系统处理,返回处理结果图1-3员工信息管理流程图Fig1-3theWorkflowofemployee
(2)邮件功能流程图如下图1-4所示#0;#0;人事部员工登陆点击邮件功能点击向员工发送邮件系统验证并处理请求,返回处理结果输入标题,邮件内容,邮箱验证密码,选择收件人,点击发送图1-4邮件功能流程图Fig1-4theWorkflowofemailfunction
(3)员工考勤管理业务流程图如下图1-5所示#0;#0;#0;人事部员工登陆点击员工考勤管理点击员工签到点击考勤查询点击今日考勤选择日期,点击“生成签到表”返回职工签到表输入职工编号,点击“签到”输入部门,状态返回职工签到表处理请求,将结果返回给用户输入部门,状态,起始时间,终止时间,点击确定系统处理,返回今日签到表图1-5员工考勤管理流程图Fig1-5theWorkflowofattendancemanagement
(4)员工加班管理业务流程图如下图1-6所示#0;#0;#0;人事部员工登陆点击员工加班管理点击部门加班查询点击新增加班信息点击个人加班查询选择部门,起始时间,终止时间,点击查询点击详情/删除操作输入职工编号,起始时间,终止时间,点击查询处理请求,将结果返回给用户点击详情/删除操作输入职工编号,加班时间,加班原因,点击提交返回个人加班列表返回个人加班列表处理请求,将结果返回给用户处理请求,将结果返回给用户图1-6员工加班管理流程图Fig1-6theWorkflowofemployeeovertimemanagement
(5)员工薪资管理管理业务流程图如下图1-7所示#0;#0;#0;人事部员工登陆点击员工薪资管理点击薪资汇总发放选择月份,点击“生成工资表”系统验证并处理请求,返回处理结果点击“发放”,进行发放工资返回薪资列表图1-7员工薪资管理流程图Fig1-7theWorkflowofmanagementofstaffsalaries
(6)假期情况管理业务流程图如下图1-8所示#0;#0;#0;人事部员工登陆点击假期情况管理点击假期申请选择部门,状态系统验证并处理请求,返回处理结果同意返回请假列表拒绝图1-8假期情况管理流程图Fig1-8theWorkflowofHolidayManagement
(7)公司部门设置业务流程图如下图1-9所示#0;#0;#0;人事部员工登陆点击公司部门设置点击部门列表点击添加部门点击职工人数点击部门描述点击删除点击编辑输入部门编号,部门名称,部门描述,点击提交返回部门列表处理请求,将结果返回给用户返回部门职工列表处理请求,将结果返回给用户处理请求,将结果返回给用户图1-9公司部门设置流程图Fig1-9theWorkflowofsetthecorporatehttp://cn.bing.com/dict/searchq=corporateFORM=BDVSP6sectorhttp://cn.bing.com/dict/searchq=sectorFORM=BDVSP6
1.4现系统存在的问题虽然系统已经有了一个整体的框架,但系统仍存在如下诸多问题设计处理查询方式单一,添加不能与统计同步,出错率高,出错后不易更改由于信息比较多,公司信息管理比较混乱;一般信息情况是记录的,资料的数目和内容记录在文件中,资料室的工作人员和管理人员也只能当时比较清楚,时间一长,如再有进行查询,查找了造成查询费时、费力如果对很长时间以前的资料进行更改就更加困难了基于此类问题,必须要建立一个公司信息管理系统,使资料管理工作规范化、程序化,避免资料管理随意性,提高信息处理的准确性,能够及时、准确、有效的查询、修改和保存资料情况2公司信息管理系统需求分析
2.1需求陈述根据调研分析得知,该公司管理系统共分为七大模块,分别为员工信息管理模块,邮件管理,考勤管理,加班管理,薪资管理,假期管理,公司部门设置且公司的每位员工都可以查看自己的各项信息以及修改密码每项业务具体描述如下
(1)员工信息管理员工管理主要包括对本员工信息的查看,修改,添加,删除,人事部员工通过员工编号、部门号、职工姓名、薪资范围等查询条件能够实现对员工信息的即时管理,掌握公司中员工的各项信息
(2)邮件管理作为人事部的员工,可以通过员工注册信息中的邮箱,给任意员工群发或单独发送邮件的方式来传达公司的通知,包括发送日期、标题、收件人、邮件内容以及邮箱密码验证,以达到方便、快捷的效果
(3)考勤管理该模块包括三个子模块今日考勤、考勤查询以及员工签到,今日考勤情况可以根据部门或者考勤状态进行查询,在考勤查询中可根据部门、状态、起始时间及终止时间进行总的查询,员工签到子模块中根据日期生成员工签到表,并进行签到通过该父模块,对员工每天是否上班进行管理,可以准确的记录员工的签到,查询缺勤状态等
(4)加班管理可以根据部门、时间进行查看员工加班信息,通过员工编号查询指定的员工加班信息以及录入加班信息
(5)薪资管理根据月份生成加班列表,列表中包括加班费、请假费、缺勤费以及基本薪资的信息
(6)假期管理对个人提交的假期申请进行处理,要注明请假的起始时间,以及请假的原因人事部员工可以根据部门、批准的状态进行查询与处理
(7)公司部门设置对公司的部门进行描述,增加,修改与删除,同时可以查看每个部门的员工列表
2.2UseCase建模
2.
2.1定义活动者根据需求该系统主要有两类活动者,即人事部员工以及普通员工(例如测试部人员、人事部人员等)只有人事部员工才可以进行管理,而普通员工只可以查看自己的响应信息以及假期申请以及对自己登陆密码的修改普通员工通过权限验证登陆公司信息管理系统,进入个人页面,具有以下几项基本功能个人基本信息、考勤记录查询、个人工资列表、假期申请、假期申请查询、修改密码个人基本信息模块中员工可以查看所有员工的详细信息,包括职工编号、职工姓名、性别、出生日期、个人邮箱、个人电话、所属部门、职位、薪资、个人简历以及头像考勤记录查询模块中根据时间段进行查询,在考勤表中可根据考勤状态与时间进行查看个人工资列表模块中,可以查看该用户的薪资列表,包括职工编号、职工姓名、年、月、日、基本薪资、加班费、请假费、缺勤费以及发放的状态假期申请模块中员工可提交假期申请,包括起始时间、终止时间以及请假原因假期申请查询模块可以看到请假申请被批准的状态修改密码模块中用户根据旧密码才可以进行新密码的设置人事部员工通过权限验证登陆公司信息管理系统,可以进入管理页面,也可以进入个人管理页面,除具有个人管理页面的6项功能外,还具有以下几项基本功能员工信息管理、员工考勤管理、邮件功能、员工加班管理、员工薪资管理、假期情况管理、公司部门设置员工信息管理模块中员工列表信息可以查看所有员工的详细信息,而且可以按部门、薪资、年龄进行查看,添加员工信息可以注册新员工,查询员工信息可以根据部门、职工编号、职工姓名、薪资进行查询邮件功能中人事部员工可以向员工发送邮件,包括发送日期、标题、邮件内容、收件人、邮箱密码验证员工考勤管理模块中包括今日考勤、考勤查询、员工签到员工加班管理模块中包括部门加班查询、个人加班查询、新增加班信息员工薪资管理模块包括薪资汇总发放假期情况管理包括假期申请公司部门设置包括部门列表、添加部门活动者如图2-1所示图2-1系统参与者图Fig2-1UseCaseforSystemactor
2.
2.2UseCase图根据系统需求分析,结合上节系统活动者的定义分析,系统用例图如下图2-2所示图2-2系统UseCase图Fig2-2UseCaseforSystem
(1)人事部员工登陆系统后可以完成员工信息管理,邮件功能,员工考勤管理,员工加班管理,员工薪资管理,假期情况管理,公司部门设置等相关操作,结合活动者和用例得到人事部员工的用例图如下图2-3所示图2-3人事部员工UseCase图Fig2-3UseCaseforEmployeesInHRDepartment
(2)普通员工登陆系统后可以完成个人基本信息,考勤记录查询,个人工资列表,假期申请,假期申请查询,修改密码等相关操作,结合活动者和用例得到人事部员工的用例图如下图2-4所示图2-4普通员工UseCase图Fig2-4UseCaseforOrdinaryEmployees
(3)员工信息管理模块可以完成员工列表信息,添加员工信息,查询员工信息等相关操作,经分析得到员工信息管理用例图如下图2-5所示图2-5员工信息管理模块UseCase图Fig2-5UseCaseforTheModuleOfEmployeeInformationManagement
(4)邮件功能模块可以完成向员工发送邮件,经分析得到邮件功能用例图如下图2-6所示图2-6邮件功能UseCase图Fig2-6UseCaseforEmailFunction
(5)员工考勤管理模块可以完成今日考勤,考勤查询,今日签到等操作,经分析得到员工考勤管理用例图如下图2-7所示图2-7员工考勤管理UseCase图Fig2-7UseCaseforTheAttendanceOfEmployees
(6)员工加班管理模块可以完成查看部门加班查询,个人加班查询,新增加班信息等操作,经分析得到员工加班管理用例图如下图2-8所示图2-8员工加班管理UseCase图Fig2-8UseCaseforTheOvertimeofEmployees
(7)员工薪资管理可以完成薪资汇总发放等操作,经分析得到员工薪资管理用例图如下图2-9所示图2-9员工薪资管理UseCase图Fig2-9UseCaseforSalaryOfEmployee
(8)假期情况管理可以完成请假申请被批准状态的查询,同时对于未处理的申请可以进行同意或者拒绝操作经分析得到假期情况管理用例图如下图2-10所示图2-10假期情况管理UseCase图Fig2-10UseCaseforTheHolidays’Management
(9)公司部门设置可以完成查看部门列表以及添加部门等操作,经分析得到公司部门设置用例图如下图2-11所示图2-11公司部门设置UseCase图Fig2-11UseCaseforTheDepartment’sManagement
2.
2.3用例说明表2-1人事部员工用例说明Table2-1TheusecasedescriptionsofEmployeesInHRDepartment用例名称人事部员工用例说明用例描述当人事部员工执行登陆这个动作的时候是这个用例的开始它可以处理员工信息管理,邮件功能,员工考勤管理,员工加班管理,员工薪资管理,假期情况管理,公司部门设置的相关问题,当员工推出系统的时候它就结束了参与者人事部员工优先级1前置条件登录者以人事部员工的身份的登录后置条件等待系统处理请求基本操作流程
(1)人事部员工触发登陆的事件
(2)系统验证触发事件者的用户身份
(3)登陆系统可触发相应的功能可选操作流程人事部员工提供的信息与系统要求的必要信息不符合,系统拒绝处理人事部员工登陆的请求被泛化的用例无被包含的用例无被扩展的用例员工信息管理,邮件功能,员工考勤管理,员工加班管理,员工薪资管理,假期情况管理,公司部门设置表2-2普通员工用例说明Table2-2TheusecasedescriptionsofOrdinaryEmployees用例名称普通员工用例说明用例描述当普通员工执行登陆这个动作的时候是这个用例的开始它可以处理个人基本信息,考勤记录查询,个人工资列表,假期申请,假期申请查询,修改密码的相关问题,当员工退出系统的时候它就结束了参与者普通员工优先级1前置条件登录者以普通员工的身份的登录后置条件等待系统处理请求基本操作流程
(1)普通员工触发登陆的事件
(2)系统验证触发事件者的用户身份
(3)登陆系统可触发相应的功能(个人基本信息,考勤记录查询,个人工资列表,假期申请,假期申请查询,修改密码)可选操作流程普通员工提供的信息与系统要求的必要信息不符合,系统拒绝处理普通员工登陆的请求被泛化的用例个人基本信息,考勤记录查询,个人工资列表,假期申请,假期申请查询,修改密码被包含的用例无被扩展的用例个人基本信息,考勤记录查询,个人工资列表,假期申请,假期申请查询,修改密码表2-3员工信息管理用例说明Table2-3TheusecasedescriptionsofEmployeeInformationManagement用例名称员工信息管理用例说明用例描述当人事部员工执行员工信息管理这个动作的时候是这个用例的开始它可以处理员工列表信息,添加员工信息,查询员工信息的相关问题,当员工执行其他功能的时候它就结束了参与者人事部员工优先级2前置条件登录人事部员工的身份的登录,点击员工信息管理后置条件等待系统处理请求基本操作流程
(1)人事部员工登陆
(2)人事部触发员工信息管理的事件
(3)可触发相应的子功能请求(员工列表信息,添加员工信息,查询员工信息)可选操作流程人事部员工可以处理员工列表信息,添加员工信息,查询员工信息被泛化的用例无被包含的用例员工列表信息,添加员工信息,查询员工信息,查看信息,编辑信息,删除信息被扩展的用例按部门查询,按职工编号查询,按职工姓名查询,按薪资查询每个员工信息表2-4邮件功能用例说明Table2-4TheusecasedescriptionsofEmailFunction用例名称邮件功能用例说明用例描述当人事部员工执行邮件功能这个动作的时候是这个用例的开始它可以处理发送邮件,当员工执行其他功能的时候它就结束了参与者人事部员工优先级2前置条件
(1)登录以人事部员工的身份的登录
(2)点击邮件功能后置条件
(1)邮箱地址正确
(2)邮箱验证密码正确
(3)等待系统处理请求基本操作流程
(1)人事部员工登陆
(2)人事部员工触法邮件功能的事件
(3)可触发相应的发送邮件功能请求可选操作流程可以选择一个收件人,也可以选择多个被泛化的用例无被包含的用例发送邮件被扩展的用例无表2-5员工考勤管理用例说明Table2-5TheusecasedescriptionsofTheAttendanceOfEmployees用例名称员工考勤管理用例说明用例描述当人事部员工执行员工考勤管理这个动作的时候是这个用例的开始它可以处理今日考勤,考勤查询,今日签到的相关问题,当员工执行其他功能的时候它就结束了参与者人事部员工优先级2前置条件登录以人事部员工的身份的登录点击员工考勤管理若要进行今日的考勤,必须先进行员工签到后置条件等待系统处理请求若员工请假则不能进行签到基本操作流程人事部员工登陆人事部员工触发员工考勤管理的事件可触发相应的子功能请求(今日考勤,考勤查询,今日签到)可选操作流程人事部员工可以处理今日考勤,考勤查询,今日签到,而且若之前日期的签到出错,还可以选择当日日期进行签到,但若日期超过今日的日期,则会出现提示被泛化的用例无被包含的用例今日签到,今日考勤,考勤查询被扩展的用例无表2-6员工加班管理用例说明Table2-6TheusecasedescriptionsofTheOvertimeofEmployees用例名称员工加班管理用例说明用例描述当人事部员工执行员工加班管理这个动作的时候是这个用例的开始它可以处理查看部门加班查询,个人加班查询,新增加班信息的相关问题,当员工执行其他功能的时候它就结束了参与者人事部员工优先级2前置条件登录以人事部员工的身份的登录点击员工加班管理可触发相应的子功能请求(部门加班查询,个人加班查询,新增加班信息)后置条件个人加班查询必须要系统中存在该职工编号等待系统处理请求基本操作流程人事部员工登陆人事部触发员工加班管理的事件可触发相应的功能请求(部门加班查询,个人加班查询,新增加班信息)可选操作流程人事部员工可以处理部门加班查询,个人加班查询,新增加班信息被泛化的用例无被包含的用例部门加班查询,个人加班查询,新增加班信息被扩展的用例无表2-7员工薪资管理用例说明Table2-7TheusecasedescriptionsofSalaryOfEmployee用例名称员工薪资管理用例说明用例描述当人事部员工执行员工薪资管理这个动作的时候是这个用例的开始它可以处理薪资汇总发放的相关问题,当员工执行其他功能的时候它就结束了参与者人事部员工优先级2前置条件登录以人事部员工的身份的登录点击员工薪资管理后置条件等待系统处理请求进行薪资汇总发放,选择的日期必须在本月之前,否则,该月未结束,不能进行薪资的发放基本操作流程人事部员工登陆人事部员工触发员工薪资管理的事件可触发相应的功能请求(薪资汇总发放)可选操作流程人事部员工可以处理薪资汇总发放被泛化的用例无被包含的用例薪资汇总发放被扩展的用例无表2-8假期情况管理用例说明Table2-8TheusecasedescriptionsofTheHolidays’Management用例名称假期情况管理用例说明用例描述当人事部员工执行假期情况管理这个动作的时候是这个用例的开始它可以处理请假申请被批准状态的查询的相关问题,当员工执行其他功能的时候它就结束了参与者人事部员工优先级2前置条件登录以人事部员工的身份的登录点击假期情况管理后置条件等待系统处理请求基本操作流程人事部员工登陆人事部员工触发假期情况管理的事件可触发相应的功能请求(请假申请被批准状态的查询)可选操作流程人事部员工可以处理请假申请被批准状态的查询,同时对未处理的申请进行同意或者拒绝操作被泛化的用例无被包含的用例请假申请被扩展的用例同意申请,拒绝申请表2-9公司部门设置用例说明Table2-9TheusecasedescriptionsofTheDepartment’sManagement用例名称公司部门设置用例说明用例描述当人事部员工执行公司部门设置用例说明这个动作的时候是这个用例的开始它可以处理查看部门列表以及添加部门的相关问题,当员工执行其他功能的时候它就结束了参与者人事部员工优先级2前置条件登录以人事部员工的身份的登录点击公司部门设置后置条件等待系统处理请求基本操作流程人事部员工登陆触发公司部门设置的事件可触发相应的功能请求可选操作流程人事部员工可以处理查看部门列表以及添加部门,同时可根据部门人数查看该部门员工列表并查看员工信息,根据部门描述查看部门的相关信息被泛化的用例无被包含的用例部门列表,添加部门被扩展的用例编辑部门,删除部门3公司信息管理系统架构设计软件的系统架构是指通过某种特定的技术平台,完成软件系统整体功能的开发过程也可以通俗地理解为总体设计和总体结构布局
3.1架构设计目标软件架构设计要达到如下的目标
(1)可行性(Feasible)架构具有可行性是架构设计的基石
(2)可靠性(Reliable)软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠
(3)安全行(Secure)软件系统所承担的交易的商业价值极高,系统的安全性非常重要
(4)可定制化(Custom)同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整
(5)可扩展性(Extensible)在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展
(6)可维护性(Maintainable)软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去一个易于维护的系统可以有效地降低技术支持的花费
(7)可升级性(Scalable)软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能只有这样,才能适应用户的市场扩展得可能性
(8)客户体验(CustomerExperience)软件系统必须易于使用软件的最终用户很可能是不具有计算机专业技术的人员
3.2系统功能模块博彦公司信息管理系统中共有2种人员,其中包括普通员工与人事部员工,人事部员工可以对员工信息进行管理,而普通员工只可以查看自己的一些相关信息,不具有管理的权限其中普通员工有6个功能模块,分别为个人基本信息,考勤记录查询,个人工资列表,假期申请,假期情况查询,修改密码;而人事部员工除了具有普通员工的功能外还有额外的7个功能模块,分别为员工信息管理模块,邮件管理,考勤管理,加班管理,薪资管理,假期管理,公司部门设置,因此博彦公司信息管理系统的系统功能模块图如下图3-1所示博彦科技公司信息管理系统普通员工人事部员工个人基本信息考勤记录查询个人工资列表假期申请假期申请查询修改密码员工信息管理员工考勤管理邮件功能员工加班管理员工薪资管理假期情况管理公司部门设置图3-1系统功能模块Fig3-1FunctionModelsofSystem
3.3系统架构设计下面我们将根据架构设计原则和信息系统原理来建立系统的架构设计模型将信息系统中比较关心的对象分层,可分为三层WEB层、服务层层、DAO层(如下图3-2所示),这样得到包图如图3-3所示图3-2系统体系架构图Fig3-2TheDiagramofSystemArchitecture图3-3系统包图Fig3-3PackageDiagramofSystem
(1)com.action包com.action包的职责是1)用于处理页面和业务逻辑的交互,对数据进行验证转换2)验证请求者的权限3)向Service对象发送请求,向用户界面层返回处理结果Action处理包图展开如图3-4所示图3-4Action处理包展开图Fig3-4PackageChartofActionAction处理包包含的类展开如图3-5所示图3-5Action处理包类图Fig3-5ClassChartofAction
(2)com.domain包Domain包的职责是1定义实体类,完成相应的UI逻辑2根据需要控制原View或者创建新的View对用户交互操作予以响应com.domain包图展开如图3-6所示图3-6domain包图展开Fig3-6PackageDiagramofdomaincom.domain包含的类见图3-7图3-7domain包图类图Fig3-7ClassDiagramofdomain
(3)Service业务处理包Service业务逻辑包的职责是1)实现各种业务处理逻辑或处理算法2)向DAO出具处理对象发送数据的请求,向Action处理层返回处理结果数据访问包图展开如图3-8所示图3-8Service业务逻辑包图展开Fig3-8PackageChartofServiceBusinessService业务逻辑包包含的类见图3-9图3-9Service业务逻辑类图Fig3-9ClassChartofServiceBusiness
(4)DAO实现类DAO实现类的职责是1)利用tomcat配置数据源的方式实现数据库的链接2)实现事务处理DAO实现包图展开如图3-10所示图3-10DAO实现包图展开Fig3-10PackageChartofDAODAO实现包包含的类见图3-11图3-11DAO实现问类图Fig3-11ClassChartofDAODAO是DataAccessObject数据访问接口,数据访问顾名思义就是与数据库打交道夹在业务逻辑与数据库资源中间对于每一个业务处理中需要持久化操作的对象都可以对应为一个数据库访问对象,在很多业务处理中需要请求多个数据库访问对象来进行数据的读写操作,而这些操作又必须在同一个事务中,这时需要用同一个数据库连接对象来进行统一的事务处理而且通过数据源获取数据库连接,传统的做法在一般小规模的开发过程中不会产生问题,只要程序员熟悉Java语言、了解JDBC技术和各种数据库,可以很快开发出相应的应用程序带来的问题1 数据库服务器名称、用户名和口令都可能需要改变,由此引发JDBAURL需要修改;2 数据库可能改用别的产品,如改用DB2或者Oracle,由此引发JDBC驱动程序包和类名需要改变;3 随着实际使用终端的增加,原配置的连接池参数可能也需要调整而配置数据源,即把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可避免了程序与数据库之间的紧耦合,使之易于配置、易于部署
3.4系统架构类图将包图展开,得到类图,它是架构的静态结构图,表达了各个类之间的静态联系博彦科技公司信息管理系统架构类图如下图3-12所示图3-12系统架构类图Fig3-12ClassDiagramofSystemArchitecture4公司信息管理系统详细设计本部分设计主要涉及软件系统的动态建模和系统类图的详细设计软件系统的动态模型分为交互模型和活动状态模型,其中的交互模型主要由顺序图和协作图构成,活动状态模型主要包括活动图和状态图通过为软件系统项目建立动态模型,从而产生体现系统动态行为的可视化分析结果——包括对象的时间特性和对象为完成目标任务而相互进行通信的机制、对象行为的改变和状态变化情况,以及对象可能出现的各种活动状况等信息
4.1系统交互图
4.
1.1系统架构类交互图交互图用来说明系统如何实现一个用例或用例中的一个特殊场景UML提供两类交互图时序图和协作图时序图按时间顺序描述系统元素之间的交互;协作图则按照时间和空间顺序来描述系统元素之间的交互系统架构类的工作流程
(1)用户界面对象在接收了用户的输入请求后,向Action发送处理请求Action可调用Domain实体类获取实体
(2)Action对象接收到请求后,Action可调用Domain实体类获取实体,或者向Service对象发送验证权限请求
(3)Service对象验证权限后以及所需信息后将验证结果返回Action对象
(4)Service对象根据验证结果进行以下处理对于不符合权限的请求则返回提示信息;对于符合权限的请求,则将请求转发给Action;对于输入请求与要求不符或者数据库中数据格式、信息不符则给出相应提示
(5)Service进行业务处理对于业务处理中的数据操作,通过访问DAO进行数据库访问进行操作,期间的任何异常都交给异常处理对象处理,而且在文件上传的控件中还用到了拦截器,对于上传的不符合要求的格式进行拦截,最后将返回处理结果信息给Action对象
(6)Action对象将处理结果信息返回给用户界面系统架构类的交互图如图4-1所示图4-1系统架构类的交互图Fig4-1InteractiveDiagramofSystemArchitectureClass
4.
1.2活动者与模块间的交互
(1)普通员工登陆后可进行个人信息查看、考勤查询、假期申请、假期申请情况查询、个人薪资查询、修改密码,协作图如图4-2所示图4-2普通员工协作图Fig4-2OrdinaryEmployees’collaborationdiagram普通员工登陆后可进行个人信息查看、考勤查询、假期申请、假期申请情况查询、个人薪资查询、修改密码,时序图如图4-3所示图4-3普通员工时序图Fig4-3OrdinaryEmployees’sequencediagram
(2)人事部员工与员工信息管理模块交互图如下图所示其中,人事部员工与员工信息管理模块协作图如图4-4所示图4-4员工信息管理协作图Fig4-4EmployeeInformationManagementsequencediagram人事部员工与员工信息管理模块时序图如图4-5所示图4-5员工信息管理时序图Fig4-5EmployeeInformationManagementcollaborationdiagram
(3)人事部员工与邮箱功能模块交互图如下图所示其中,人事部员工与邮箱功能模块时序图如图4-6所示图4-6邮件功能时序图Fig4-6EmailFunctionsequencediagram人事部员工与邮箱功能模块协作图如图4-7所示图4-7邮件功能协作图Fig4-7EmailFunctioncollaborationdiagram
(4)人事部员工与员工考勤管理模块交互图如下图所示其中,人事部员工与员工考勤管理模块协作图如图4-8所示图4-8员工考勤协作图Fig4-8TheAttendanceOfEmployeescollaborationdiagram人事部员工与员工考勤管理模块时序图如图4-9所示图4-9员工考勤时序图Fig4-9TheAttendanceOfEmployeessequencediagram
(5)人事部员工与员工加班管理模块交互图如下图所示其中,人事部员工与员工加班管理模块协作图如图4-10所示图4-10员工加班协作图Fig4-10TheOvertimeOfEmployeescollaborationdiagram人事部员工与员工加班管理模块时序图如图4-11所示图4-11员工加班时序图Fig4-11TheOvertimeOfEmployeessequencediagram
(6)人事部员工与员工薪资管理模块交互图如下图所示其中,人事部员工与员工薪资管理模块协作图如图4-12所示图4-12员工薪资协作图Fig4-12TheSalaryOfEmployeescollaborationdiagram人事部员工与员工薪资管理模块时序图如图4-13所示图4-13员工薪资时序图Fig4-13TheSalaryOfEmployeessequencediagram
(8)人事部员工与员工假期情况管理模块交互图如下图所示其中,人事部员工与员工假期情况管理模块协作图如图4-14所示图4-14假期情况协作图Fig4-14TheHolidays’Managementcollaborationdiagram人事部员工与员工假期情况管理模块时序图如图4-15所示图4-15假期情况时序图Fig4-15TheHolidays’Managementsequencediagram
(9)人事部员工与公司部门设置模块交互图如下图所示其中,人事部员工与公司部门设置模块协作图如图4-16所示图4-16公司部门设置协作图Fig4-16TheDepartment’sManagementcollaborationdiagram人事部员工与公司部门设置模块协作图如图4-17所示图4-17公司部门设置时序图Fig4-17TheDepartment’sManagementsequencediagram
4.2系统活动图活动图是描述活动是如何协同工作的当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情
4.
2.1系统活动图
(1)员工进行登陆的时候,系统进行验证是普通员工还是人事部员工,人事部员工可以对系统进行管理,而普通员工只可以查看自己的相关信息,员工的登陆系统活动图如下图4-18所示图4-18登陆界面活动图Fig4-18logininterfaceactivitydiagram1)普通员工可以进行的活动有个人基本信息、考勤记录查询、个人工资列表、假期申请、假期申请查询、修改密码普通员工的系统活动图如下图4-19所示图4-19普通员工活动图Fig4-19OrdinaryEmployeesstatediagram2)人事部员工可以进行的活动员工信息管理、员工考勤管理、邮件功能、员工加班管理、员工薪资管理、假期情况管理、公司部门设置人事部员工的系统活动图如下图4-20所示图4-20人事部员工活动图Fig4-20HRhttp://cn.bing.com/dict/searchq=HRFORM=BDVSP6staffactivitydiagram
4.
2.2活动者与模块间的状态图状态图是通过类对对象的生命周期建立模型来描述对象随时间变化的动态行为状态图显示了一个状态机,它基本上是一个状态机中的元素的一个投影,也就意味着状态图包括状态机的所有特性在登陆页面中,主要涉及权限判定的活动来判断登陆的是技术不员工还是普通员工以进入不同的页面进行管理用户首先登陆系统,连接数据库来判断用户是技术不员工还是普通员工,以及用户名、密码、验证码的判断若是人事部员工,则进入管理页面进行管理;若是普通员工,则进入个人页面进行管理人事部员工首先登录系统,然后进入员工信息管理模块,可以根据需要按照部门,薪资排序、年龄排序查看员工信息,也可以查看某一位员工的详细信息;可以根据需要添加员工信息,每一项都是必填项;可以根据需要按照部门、职工编号、职工姓名、薪资对员工信息进行查询,也可以进行查看、编辑、删除等操作2)人事部员工的员工信息管理模块的状态图,如下图4-21所示图4-21员工信息管理状态图Fig4-21EmployeeInformationManagementstatementdiagram3)人事部员工首先登录系统,然后进入邮箱管理模块,按要求填写发送日期、标题、收件人、执行发送邮件操作下面给出人事部员工的员工信息管理模块的活动图,如下图4-22所示图4-22邮件功能状态图Fig4-22Emailfunctionstatementdiagram4)人事部员工首先登录系统,然后进入假期情况管理模块,进行假期申请的管理首先,员工选择部门、状态可以假期申请状态进行管理,进行同意或者拒绝操作下面给出技部员工的员工假期情况管理模块的活动图,如下图4-23所示图4-23假期情况管理状态图Fig4-23TheHolidays’Managementstatementdiagram5)人事部员工首先登录系统,然后进入考勤管理模块,包括今日考勤、考勤查询、员工签到三个子模块首先通过员工签到模块根据日期生成签到表,根据职工编号等进行员工的签到;通过今日考勤模块可以按部门、状态进行今日考勤的查询;在考勤查询中则可根据部门、状态、起始时间、终止时间进行查询下面给出人事部员工的员工考勤管理模块的活动图,如下图4-24所示图4-24员工考勤状态图Fig4-24TheAttendanceOfEmployeesstatementdiagram6)人事部员工首先登录系统,然后进入加班管理模块,包括部门加班查询、个人加班查询、新增加班信息三个子模块在部门加班查询中可以通过部门、起始时间、终止时间进行加班信息的查询,可以查看详情或者进行删除等操作;在个人加班查询中可以通过职工编号、起始时间、终止时间进行加班信息的查询,可以查看详情或者进行删除等操作;新增加班信息中按要求填写职工编号、加班日期、加班原因进行提交下面给出人事部员工的员工考勤管理模块的活动图,如下图4-25所示图4-25员工加班管理状态图Fig4-25TheOvertimeOfEmployeesstatementdiagram7)人事部员工首先登录系统,然后进入薪资管理模块,进行薪资汇总发放的管理首先,员工选择月份生成工资表可以对薪资发放状态进行管理,进行发放操作若选择的月份为达到,给出相应提示,若达到了现实相应的薪资列表下面给出技部员工的员工薪资管理模块的活动图,如下图4-26所示图4-26员工薪资管理状态图Fig4-26TheSalaryOfEmployeesstatementdiagram8)9)人事部员工首先登录系统,然后进入公司部门设置模块,进行部门的管理该模块包括部门列表以及添加部门两个子模块在部门列表中可以进行编辑、删除等操作,编辑后系统进行验证信息是否正确,同时可以根据员工人数查看该部门所有员工列表,并可以查看员工详细信息,根据部门描述查看部门的信息在添加部门模块中,填写相应部门信息,系统进行验证填写信息是否符合要求,下面给出技部员工的员工假期情况管理模块的活动图,如下图4-27所示图4-27公司部门设置状态图Fig4-27TheDepartment’sManagementstatementdiagram9)普通员工首先登录系统,然后进入个人页面,包括个人基本信息、考勤记录查询、个人薪资查询、假期申请、假期申请情况查询、修改密码六个模块在个人基本信息中,员工可以查看详细信息,考勤记录查询中,可以按时间、部门进行查询,个人薪资查询可以查看自己本月之前的薪资情况以及发放状态,在假期申请中提交假期申请,假期情况管理中查看假期被批准的状态,同时,对于未处理的假期申请,员工可进行撤销操作,修改密码模块则根据员工以前的旧密码验证通过后设置新密码,员工可通过新密码进入系统下面给出普通员工的活动图,如下图4-28所示图4-28普通员工状态图Fig4-28Ordinaryemployeestatementdiagram
4.3业务逻辑对象类设计
4.
3.1发现业务逻辑类本小节的主要任务是对系统架构类图中的业务逻辑类进行设计,由系统分析中的UseCase交互图我们可以发现业务逻辑类包括用户类、登陆类、基本类、管理类、流程类、数据访问类和数据库连接类根据UseCase交互图中的消息找到对象类相应的方法各个类的具体含义如下用户类表示所有用户及其相关信息的类登陆类用于用户权限、验证码验证的类基本类用于实现个人页面管理的类管理类用于实现管理页面管理的类流程类用于实现工作流等相关操作的类数据访问类用于封装数据库对象的类数据库连接类用于实现连接数据库的类
4.
3.2业务逻辑对象类图
(1)普通员工类图如图4-29所示图4-29普通员工类图Fig4-29ClassDiagramofOrdinaryEmployees
(2)人事部员工每个模块的类图如下所示1)员工信息管理类图如图4-30所示图4-30员工信息管理类图Fig4-30ClassDiagramofEmployeeInformationManagement2)邮件功能类图如图图4-31所示图4-31邮件功能类图Fig4-31ClassDiagramofEmailFunction3)员工考勤管理类图如图4-32所示图4-32员工考勤管理类图Fig4-32ClassDiagramofTheAttendanceOfEmployees4)员工薪资管理类图如图4-33所示图4-33员工薪资管理类图Fig4-33ClassDiagramofTheSalaryOfEmployees5)员工加班管理类图如图4-34所示图4-34员工加班管理类图Fig4-34ClassDiagramofTheOvertimeOfEmployees6)假期情况管理类图如图4-35所示图4-35假期情况管理类图Fig4-35ClassDiagramofTheHolidays’Management7)公司部门设置类图如图4-36所示图4-36公司部门设置类图Fig4-36ClassDiagramofTheDepartment’sManagement
4.4数据库设计关系型数据库是目前应用最广泛的数据库既然是面向对象系统设计,数据库设计当然也要是面向对象的现在要考虑如何对类进行持久化操作,即如何将对象类映射到关系数据库的二维表目前可以采用数据库建模工具来实现,像PowerDesigner、PL/SQL等
4.
4.1物理表结构图#0;表�#0;#0;图4-37数据库图Fig4-37DataBasediagram物理表结构如下表4-1部门信息表Table4-1departmentInfo字段名称数据类型长度字段说明主键departIdchar4部门编号1departNamevarchar50部门名称departNumchar2职工人数departDescripdatetime部门描述表4-2薪资表Table4-2salaryinfo字段名称数据类型长度字段说明主键impIdchar10职工编号1syearchar4年1smonthchar2月1sBasedecimal(6,4)基本薪资sExtradecimal(6,4)加班费sHolidaydecimal(6,4)请假费sAbsencedecimal(6,4)缺勤费sTotaldecimal(6,4)总计sStatechar1状态表4-3员工考勤表Table4-3attendanceinfo字段名称数据类型长度字段说明主键impIdchar10职工编号1attendTimedatetime考勤日期1attendStatedecimal(1,0)状态表4-4假期申请表Table4-4holsinfo字段名称数据类型长度字段说明主键impIdchar10职工编号1applyTimedatetime申请日期1startTimedatetime起始时间endTimedatetime终止时间holdaysdecimal(2,0)天数executesvarchar500操作holsStatedecimal(1,0)状态表4-5员工加班表Table4-5extrawork字段名称数据类型长度字段说明主键impIdchar10职工编号1workTimedatetime加班日期1executesvarchar500加班原因表4-6用户信息表Table4-6userinfo字段名称数据类型长度字段说明主键impIdchar10职工编号1pwdchar10密码impRightdecimal(1,0)权限表4-7用户信息表Table4-7employeeInfo字段名称数据类型长度字段说明主键impIdchar10职工编号1impNamevarchar50职工姓名impGenderchar2职工性别impBirthdatetime0职工出生日期impEmailvarchar50职工邮箱departIdchar4部门编号impRollvarchar50职位impSalarydecimal(2,6)薪资impTelvarchar20电话impPicvarchar100头像impBiotext0个人简历impStatedecimal(0,1)状态
4.
4.2ER概念模型设计E-R图提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型概念模型用于将系统需求分析得到的用户需求抽象为信息结构过程概念模型是整个数据库设计的关键大部分数据库设计产品使用实体-联系模型帮助用户进行数据库设计,在数据库设计中被广泛用作数据建模的工具概念模型最终要转换为数据模型,如下表4-8所示,描述了E-R图符号说明表4-8E-R图符号说明Table4-8E-Rchartsymbolsexplanation符号含义符号说明实体表示实体集同型实体的集合,矩形框内写明实体名属性实体所具有的某一特性,并用无向边与其相应实体连接起来联系表示联系集,菱形框内写明联系名,并用无向边与其有关实体连接线段将属性连接到实体集或将实体集连接到联系集
(1)部门实体属性图如图4-38所示部门信息部门编号部门名称部门描述职工人数图4-38部门实体属性图Fig4-38Entityattributegraphicsfordepartment2)用户实体属性图如图4-39所示用户信息部门编号密码权限图4-39用户实体属性图Fig4-39Entityattributegraphicsforuser
(3)加班实体属性图如图4-40所示加班信息部门编号加班日期加班原因图4-40加班实体属性图Fig4-40Entityattributegraphicsforextrawork
(4)员工实体属性图如图4-41所示员工信息职工姓名职工编号薪资个人简历状态职位职工性别部门编号电话职工邮箱职工出生日期头像图4-41员工实体属性图Fig4-41Entityattributegraphicsforemployee
(5)薪资实体属性图如图4-42所示薪资部门编号年加班费状态总计基本薪资请假费月缺勤费图4-42薪资实体属性图Fig4-42Entityattributegraphicsforsalary
(6)假期申请实体属性图如图4-43所示假期申请部门编号终止时间状态操作申请日期天数起始时间图4-43假期申请实体属性图Fig4-43Entityattributegraphicsforapply
(7)考勤实体属性图如图4-44所示员工考勤部门编号考勤日期状态图4-44考勤实体属性图Fig4-44Entityattributegraphicsforattendance
(8)生成E-R图如下图4-45所示#0;员工部门拥有薪资拥有假期申请查询签到考勤申请假期用户拥有111NN1111N1N图4-45E-R图Fig4-45graphicsforE-R
4.
4.3关系模型设计系统的关系模式如下
(1)部门信息表(部门编号,部门名称,职工人数,部门描述)
(2)用户信息表(职工编号,职工姓名,职工性别,职工出生日期,职工邮箱,部门编号,职位,薪资,电话,头像,个人简历,状态)
(3)员工考勤表(职工编号,考勤日期,状态)
(4)假期申请表(职工编号,申请日期,起始时间,终止时间,天数,操作,状态)
(5)员工加班表(职工编号,加班日期,加班原因)
(6)用户信息表(职工编号,密码,权限)
(7)薪资表(职工编号,年,月,基本薪资,加班费,请假费,缺勤费,总计,状态)
4.5开发环境的选择
4.
5.1系统开发工具本系统采用MyEclipse10作为博彦公司信息管理系统开发工具MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTMLStrutsJSFCSSJavascriptSQLHibernateMyEclipse,其特点如下
(1)简化的数据库配置与升级提供了预升级检查能力,有效地减少升级错误去除了了很多和数据库配置有关的任务或者对其加以自动化在初始安装的时候,所有数据库都被预配置包括在OEM环境中而无需建立一个[Oracle10g安装]
(2)自动存储管理新版本的数据库能够配置成使用Oracle提供的存储虚拟层(StorageVirtualizationLayer自动并简化数据库的存储管理员现在可以管理少数的磁盘组而无需管理数千个文件--自动存储管理功能可以自动配置磁盘组,提供数据冗余和数据的优化分配
(3)恢复当我们使用一个ORACLE数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失因此当发生上述故障后,希望能重新建立一个完整的数据库,该处理称为数据库恢复恢复子系统是数据库管理系统的一个重要组成部分恢复处理随时随地所发生的故障类型所影响的结构而变化
4.
5.2数据库的选择MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力MySQL的优点
(1)它使用的核心线程是完全多线程,支持多处理器
(2)有多种列类型
1、
2、
3、
4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、和ENUM类型
(3)它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配没有内存漏洞
(4)全面支持SQL的GROUPBY和ORDERBY子句,支持聚合函数COUNT、COUNTDISTINCT、AVG、STD、SUM、MAX和MIN你可以在同一查询中混来自不同数据库的表
(5)支持ANSISQL的LEFT0UTERJOIN和ODBC
(6)所有列都有缺省值你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值
(7)MySQL可以工作在不同的平台上支持C、C++、Java、Perl、PHP、Python和TCLAPIMySql是一个快速、多线程、多用户的SQL数据库服务器,其出现虽然只有短短的数年时间,但凭借着“开放源代码”的东风,它从众多的数据库中脱颖而出,成为PHP的首选数据库除了因为几乎是免费的这点之外,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等都是PHP选择MySql的主要原因下面,就让我们来看看MySql数据库的主要特征 MySql的核心程序采用完全的多线程编程线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源用多线程和C语言实现的MySql能很容易充分利用CPU MySql可运行在不同的操作系统下使用MySql数据库,简单地说,MySql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUNOS等多种操作系统平台这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下 MySql有一个非常灵活而且安全的权限和口令系统当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证 MySql支持ODBCforWindowsMySql支持所有的ODBC
2.5函数和其他许多函数,这样就可以用Access连接MySql服务器,从而使得MySql的应用被大大扩展 MySql支持大型的数据库虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySql可以方便地支持上千万条记录的数据库作为一个开放源代码的数据库,MySql可以针对不同的应用进行相应的修改 MySql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性事实上,MySql的稳定性足以应付一个超大规模的数据库 强大的查询功能MySql支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便 PHP为MySql提供了强力支持,PHP中提供了一整套的MySql函数,对MySql进行了全方位的支持
4.
5.3系统配置图客户机配置情况如下表4-9所示表4-9客户机配置表4-9Table4-9Clientconfiguration最低配置CeleronⅢ
1.7G256M40G800*600推荐配置Pentium
43.0G512M80G1024*768配置CPU内存硬盘空间显示模式最低配置CeleronIII
1.7GCeleronⅢ
1.7256M40G800*600推荐配置Intel(R)Core(TM)I5-4200M@
2.50GHz4G1T1024*768软件安装情况如下表4-10所示表4-10软件安装情况表4-9Table4-10Softwareinstallation机型机型软件软件服务器
1.OS:Microsoft.Windows.Server2003EnterpriseEditon
2.Mysql
5.
53.Tomcat
6.
04.jdk
1.
6.
35.Myeclipse10客户机
1.OS:windows8中文版
2.Mysql
5.
53.Tomcat
6.
04.jdk
1.
6.
35.Myeclipse105公司信息管理系统编码
5.1概述开发工具及编程脚本
(1)Tomcat服务器简介Tomcat是Sun的JSWDK(JavaServerWebDevelopmentKit)中的Servlet容器,属于Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司和个人共同开发而成Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持因此,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现与传统桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件,它是许多文件构成的一个压缩包,包中的文件按照一定目录结构来组织,不同目录中的文件也具有不同的功能部署应用程序时,只需要把WAR文件放到Tomcat的webapp目录下,Tomcat会自动检测和解压该文件JSP文件第一次执行时,要先由Tomcat将其转化为Servlet文件,然后编译,所以速度会慢一些,但后继执行时速度会很快
(2)JSP简介JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易
(3)Javascrip简介可以使网页有动态的效果(特效,如图片、文字的滚动;层的动态切换,显示及隐藏;对html元素的操作;动态的对html内容修改);动态的修改CSS样式
[8];实现如下拉列表的连动等等),可以进行表单的输入验证(如邮箱、电话、邮编的合法性,输入内容长度及内容验证等)Javascript短小精悍,又是在客户机上执行的,大大提高了网页的浏览速度和交互能力同时它又是专门为制作Web网页而量身定做的一种简单的编程语言JS文件只需用记事本就可打开修改,修改完成必须以JS为后缀的文件Javascript是一种解释型的、基于对象的脚本语言
(4)CSS简介级联样式表(CascadingStyleSheet)简称“CSS”,通常又称为“风格样式表(StyleSheet)”,它是用来进行网页风格设计的比如,如果想让链接字未点击时是蓝色的,当鼠标移上去后字变成红色的且有下划线,这就是一种风格通过设立样式表,可以统一地控制HMTL中各标志的显示属性级联样式表可以使人更能有效地控制网页外观使用级联样式表,可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力
(5)MyEclipse10简介MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率
[9]它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTMLStrutsJSFCSSJavascriptSQLHibernate
(6)MySQL
5.5简介MySQL是一个开放源码http://baike.baidu.com/view/
394804.htm的小型关联式数据库管理系统http://baike.baidu.com/view/
25302.htm,开发者为瑞典http://baike.baidu.com/view/
14445.htmMySQLABhttp://baike.baidu.com/view/
2270659.htm公司MySQL被广泛地应用http://baike.baidu.com/view/
220910.htm在Internethttp://baike.baidu.com/view/
11165.htm上的中小型网站中由于其体积http://baike.baidu.com/view/
274417.htm小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库http://baike.baidu.com/view/
1088.htm与其他的大型数据库http://baike.baidu.com/view/
1088.htm例如Oraclehttp://baike.baidu.com/view/
15020.htm、DB2http://baike.baidu.com/view/
387066.htm、SQLServerhttp://baike.baidu.com/view/
9644.htm等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度对于一般的个人使用者和中小型企业来说,MySQLhttp://baike.baidu.com/view/
24816.htm提供的功能已经绰绰有余http://baike.baidu.com/view/
83153.htm,而且由于MySQL是开放源码http://baike.baidu.com/view/
394804.htm软件,因此可以大大降低总体拥有成本Linuxhttp://baike.baidu.com/view/
1634.htm作为操作系统http://baike.baidu.com/view/
880.htm,Apachehttp://baike.baidu.com/subview/28283/
5418752.htm和Nginxhttp://baike.baidu.com/view/
926025.htm作为Web服务器,MySQL作为数据库http://baike.baidu.com/view/
1088.htm,PHP/Perl/Pythonhttp://baike.baidu.com/view/
21087.htm作为服务器端脚本http://baike.baidu.com/view/
54.htm解释器http://baike.baidu.com/view/
592974.htm由于这四个软件都是免费或开放源码http://baike.baidu.com/view/
394804.htm软件(FLOSShttp://baike.baidu.com/view/
1483082.htm,因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统http://baike.baidu.com/view/
3998653.htm,被业界称为“LAMPhttp://baike.baidu.com/view/
365086.htm“组合
5.2脚本习惯说明
(1)类名的第一个字母大写,如果有多个单词,每个单词头字母大写且有具体的含义
(2)Action实体类的命名以POJO名称来制定
(3)变量的名字第一个字母小写,如果该变量名有多个单词组成,后面的单词首字母大写,单词与单词之间不要使用_做连接,变量名访问控制必须为私有,可以对其增加set与get方法,且有具体的含义
(4)变量注释必须写在变量定义之前,简单描述其代表的意义;方法注释必须写在方法定义之前该注释包括方法其功能的简单描述,方法的参数、返回值类型、返回值意义简单的描述
(5)jsp页面名称要以大写字母开头,如果有多个单词组成,后面的单词以大写字母开头名称要体现出该页面的意义,能够与模块名称联系在一起
(6)在javascript中变量不用声明就可以使用但事先进行变量声明是一种好的习惯可以使用var语句来进行变量声明只有当要在函数中声明一个局部变量时,才必须使用var语句语法如下var变量名=初值;
5.3脚本通过修改tomcat的context.xml配置文件来进行数据库的连接,具体代码如下ContextResourcename=jdbc/mysqltype=javax.sql.DataSourcepassword=cyfdriverClassName=org.gjt.mm.mysql.DrivermaxWait=5000defaultAutoCommit=trueminIdle=0maxIdle=30maxActive=5000username=rooturl=jdbc:mysql://localhost:3306/testuseUnicode=trueamp;characterEncoding=UTF-8poolPreparedStatements=truetestOnBorrow=truetestOnReturn=falsetestWhileIdle=falseminEvictableIdleTimeMillis=16000removeAbandonedTimeout=30timeBetweenEvictionRunsMillis=60000removeAbandoned=truelogAbandoned=true//Context6公司信息管理系统测试
6.1测试原则及测试方法概述软件测试是为了发现错误而不断执行程序的过程或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程按顺序逐个对测试项目做出说明软件测试过程应该遵循如下的原则
(1)尽早地和不断地进行软件测试不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患
(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成测试以前应当根据测试的要求选择测试用例(Testcase),用来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果
(3)程序员应避免检查自己的程序程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测试本小组开发的程序如果条件允许,最好建立独立的软件测试小组或测试机构这点不能与程序的调试(debuging)相混淆调试由程序员自己来做可能更有效
(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件合理的输入条件是指能验证程序正确的输入条件,不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件软件系统处理非法命令的能力必须在测试时受到检验用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误
(5)充分注意测试中的群集现象在被测程序段中,若发现错误数目多,则残存错误数目也比较多这种错误群集性现象,已为许多程序的测试实践所证实根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益
(6)严格执行测试计划,排除测试的随意性测试之前应仔细考虑测试的项目,对每一项测试做出周密的计划,包括被测程序的功能、输入和输出、测试内容、进度安排、资源要求、测试用例的选择、测试的控制方式和过程等,还要包括系统的组装方式、跟踪规程、调试规程,回归测试的规定,以及评价标准等对于测试计划,要明确规定,不要随意解释
(7)应当对每一个测试结果做全面检查有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细地全面地检查测试结果,就会使这些错误被遗漏掉所以必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住征侯,暴露错误
(8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便
6.2管理页面测试用例
6.
2.1员工考勤管理模块测试用例该模块主要测试员工考勤管理模块的功能,点击员工签到、今日考勤、考勤查询,系统所作出的反应及填写相应信息系统给出的提示,如表6-1所示表6-1员工考勤管理模块测试用例表Table6-1Attendancehttp://cn.bing.com/dict/searchq=AttendanceFORM=BDVSP6managementhttp://cn.bing.com/dict/searchq=managementFORM=BDVSP6ModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别员工考勤管理员工签到输入日期(当天或者之前)2015-05-22,点击生成签到表生成所有员工签到表与预期结果同功能点输入日期(当天之后)2015-05-23,点击生成签到表提示“你选择的日期大于当天时间,请重新选择”与预期结果同功能点前置条件生成签到表,员工是否请假可以输入职工号进行签到或者直接点击签到操作签到成功与预期结果同功能点今日考勤填写部门人事部状态在职显示该部门该状态的考勤表cyf的考勤表与预期结果同功能点考勤查询选择部门人事部状态在职起始时间2015-05-22终止时间2015-05-22生成满足要求的考勤表cyf的考勤表与预期结果同功能点
6.
2.2员工信息管理模块测试用例该模块主要测试员工信息管理模块下三个子模块的功能,点击员工列表信息、添加员工信息、查询员工信息,系统所作出的反应及每个子模块中可以进行的相应操作,如表6-2所示模块测试用例描述操作过程及数据预期结果实际结果用例类别员工信息管理员工列表信息点击员工列表信息页面显示所有员工列表与预期结果同功能点选择部门人事部显示人事部部门的员工列表与预期结果同功能点点击年龄升序与降序升序员工列表按所选顺序进行排列与预期结果同点击薪资升序与降序升序员工列表按所选顺序进行排列与预期结果同功能点添加员工信息按要求填写显示添加成功与预期结果同功能点不按要求填写信息皆为空出现提示信息“职工编号、职工姓名不能为空等”与预期结果同功能点查询员工信息
(1)选择部门人事部
(2)有效职工编号20150518
(3)姓名cyf薪资8000-10000
(4)点击确定填写信息有效,则会显示相应结果与预期结果同功能点
(1)选择部门人事部
(2)填写无效的员工信息,例如20150520,
(3)点击确定填写信息无效(人事部无20150520员工编号),则会提示“没有相应的职工信息”与预期结果同功能点表6-2员工信息管理模块测试用例表Table6-2EmployeeinformationManagementModuleTestCaseTable
6.
2.3邮件模块测试用例该模块主要测试邮件管理模块的功能,点击发送邮件,系统所作出的反应及填写相应信息系统给出的提示,如表6-3所示表6-3邮件模块测试用例表Table6-3EmailModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别邮件功能发送邮件发送日期2015-05-03收件人ssss标题加班邮件内容今天晚上加班!邮箱密码验证cyf19920623提示“恭喜您!邮件已经发送出成功!”与预期结果同功能点发送日期2015-05-03收件人ssss标题加班邮件内容今天晚上加班!邮箱密码验证cyf19920622提示“您输入的邮箱密码可能有误!或者您的邮箱地址不正确!”与预期结果同功能点
6.
2.4员工薪资管理模块测试用例该模块主要测试员工薪资管理模块的功能,点击员工薪资汇总发放,系统所作出的反应及填写相应信息系统给出的提示,如表6-4所示表6-4员工薪资管理模块测试用例表模块测试用例描述操作过程及数据预期结果实际结果用例类别员工薪资管理薪资汇总发放选择月份2015-05点击生成工资表显示所有员工本月的薪资列表与预期结果同功能点1)选择月份2015-072)点击生成工资表提示“该月还未结束,还不能发放”与预期结果同功能点前置条件生成工资表选择部门人事部cyf执行“发放”操作,显示人事部员工的工资列表,工资发放成功与预期结果同功能点Table6-4Staffhttp://cn.bing.com/dict/searchq=StaffFORM=BDVSP6Wageshttp://cn.bing.com/dict/searchq=wagesFORM=BDVSP6Managementhttp://cn.bing.com/dict/searchq=managementFORM=BDVSP6ModuleTestCaseTable
6.
2.5员工加班管理模块测试用例该模块主要测试员工加班管理模块的功能,点击部门加班管理、个人加班管理、新增加班信息,系统所作出的反应及填写相应信息系统给出的提示,如表6-5所示表6-5员工加班管理模块测试用例表Table6-5Employeehttp://cn.bing.com/dict/searchq=EmployeeFORM=BDVSP6Overtimehttp://cn.bing.com/dict/searchq=overtimeFORM=BDVSP6Managementhttp://cn.bing.com/dict/searchq=managementFORM=BDVSP6ModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别员工加班管理部门加班管理输入部门人事部起始时间2015-05-22终止时间2015-06-01点击查询生成满足要求的加班列表与预期结果同功能点个人加班管理输入职工编号2015-05-10起始时间2015-05-11终止时间2015-06-01点击查询生成满足要求的加班列表与预期结果同功能点新增加班信息按要求填写相应信息职工编号20150518加班日期2015-05-23加班原因修改论文!点击提交所有项皆为必填项,显示添加成功与预期结果同功能点按要求填写相应信息职工编号null2加班日期2015-05-233加班原因修改论文!4点击提交所有项皆为必填项,由于职工编号未填写,显示提示信息与预期结果同功能点
6.
2.6假期情况管理模块测试用例该模块主要测试员工假期情况管理模块的功能,点击假期申请,系统所作出的反应及填写相应信息系统给出的提示,如表6-6所示表6-6假期情况管理模块测试用例表Table6-6Holidayhttp://cn.bing.com/dict/searchq=HolidayFORM=BDVSP6Managementhttp://cn.bing.com/dict/searchq=managementFORM=BDVSP6Managementhttp://cn.bing.com/dict/searchq=managementFORM=BDVSP6ModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别假期情况管理假期申请选择部门人事部选择状态同意显示人事部,已被同意的假期申请与预期结果同功能点1)选择部门人事部2)选择状态未处理显示人事部未处理的假期申请,可以进行同意或者拒绝操作与预期结果同功能点
6.
2.7公司部门设置模块测试用例该模块主要测试公司部门设置模块的功能,点击部门列表、添加部门,系统所作出的反应及填写相应信息系统给出的提示,如表6-7所示表6-7公司部门设置模块测试用例表Table6-7Sethttp://cn.bing.com/dict/searchq=SetFORM=BDVSP6TheCorporatehttp://cn.bing.com/dict/searchq=corporateFORM=BDVSP6Sectorhttp://cn.bing.com/dict/searchq=sectorFORM=BDVSP6ModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别公司部门设置部门列表点击部门列表,显示部门列表显示部门列表与预期结果同功能点前置条件显示部门列表1)点击部门人数可以查看该部门职工与预期结果同功能点前置条件显示部门列表1)部门描述可以查看部门详细信息与预期结果同功能点前置条件显示部门列表1)删除操作删除该部门与预期结果同功能点前置条件显示部门列表1)编辑操作编辑部门信息,部门描述与部门名称与预期结果同功能点添加部门部门编号0004部门名称测试部门部门描述对惠普打印机进行测试提示“添加成功”与预期结果同功能点部门编号null部门名称null部门描述null提示错误信息与预期结果同功能点
6.3个人页面测试用例
(1)个人基本信息模块测试用例该模块主要测试内容为个人页面个人基本信息功能,系统所作出的反应如表6-8所示表6-8个人基本信息模块测试用例表Table6-8Basichttp://cn.bing.com/dict/searchq=BasicFORM=BDVSP6Personalhttp://cn.bing.com/dict/searchq=personalFORM=BDVSP6Informationhttp://cn.bing.com/dict/searchq=informationFORM=BDVSP6ModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别个人基本信息查看个人基本信息前置条件用户正确登陆系统点击个人基本信息显示该用户的基本信息与预期结果同功能点
(2)假期申请模块测试用例该模块主要测试内容为假期申请功能,系统所作出的反应如表6-9所示表6-9假期申请模块测试用例表Table6-9Newhttp://cn.bing.com/dict/searchq=NewFORM=BDVSP6Leavehttp://cn.bing.com/dict/searchq=LeaveFORM=BDVSP6Applicationhttp://cn.bing.com/dict/searchq=ApplicationFORM=BDVSP6ModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别假期申请提交假期申请前置条件用户正确登陆系统,点击假期申请输入起始时间2015-6-17输入终止时间2015-06-25输入请假原因答辩!点击确定显示“提交成功”与预期结果同功能点前置条件用户正确登陆系统点击假期申请输入起始时间2015-5-21输入终止时间2015-02-25输入请假原因生病!点击确定显示“起始时间应该在今天以后”(今天为2015-05-22)与预期结果同功能点
(3)修改密码模块测试用例该模块主要测试内容为修改密码功能,系统所作出的反应如表6-10所示表6-10修改密码模块测试用例表Table6-10ChangePasswordModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别修改密码修改登陆用户密码前置条件用户正确登陆系统,点击修改密码输入旧密码20150518输入新密码123456再次输入新密码123456显示“修改成功”与预期结果同功能点前置条件用户正确登陆系统点击修改密码输入旧密码20150518输入新密码123456再次输入新密码123456显示“请检查您输入的旧密码是否正确”与预期结果同功能点
(4)个人工资列表模块测试用例该模块主要测试内容为个人工资列表功能,系统所作出的反应如表6-11所示表6-11个人工资列表模块测试用例表Table6-11ListOfYourSalaryModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别个人工资列表查看个人工资列表前置条件用户正确登陆系统且选择的月份在当前月份之前点击个人工资列表显示该用户工资列表信息与预期结果同功能点
(5)考勤记录查询模块测试用例该模块主要测试内容为考勤记录查询功能,系统所作出的反应如表6-12所示表6-12考勤记录查询模块测试用例表Table6-12Attendancehttp://cn.bing.com/dict/searchq=AttendanceFORM=BDVSP6Recordshttp://cn.bing.com/dict/searchq=recordsFORM=BDVSP6TheQueryhttp://cn.bing.com/dict/searchq=queryFORM=BDVSP6ModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别考勤记录查询查看考勤记录前置条件用户正确登陆系统点击考勤记录查询选择时间段2015-05-01~2015-05-31点击确定显示该用户在该时间段的的考勤信息与预期结果同功能点前置条件满足上述条件选择状态在职起始时间2015-05-01终止时间2015-05-31点击确定更详细的查看员工的考勤记录与预期结果同功能点
(6)假期申请查询模块测试用例该模块主要测试内容为假期申请查询功能,系统所作出的反应如表6-13所示表6-13假期申请查询模块测试用例表Table6-13Leavehttp://cn.bing.com/dict/searchq=LeaveFORM=BDVSP6Applicationhttp://cn.bing.com/dict/searchq=ApplicationFORM=BDVSP6QueryModuleTestCaseTable模块测试用例描述操作过程及数据预期结果实际结果用例类别假期申请查询查看假期申请情况前置条件用户正确登陆系统,提交过假期申请点击假期申请查询显示该用户请假情况列表(若为未处理状态,可进行撤销操作)与预期结果同功能点
(7)登录测试用例该模块主要测试内容为用户名不存在、密码为空、验证码为空、验证码不正确、密码不正确以及输入正确时,系统所作出的反应如表6-14所示表6-14登录模块测试用例表模块测试用例描述及操作过程数据预期结果实际结果用例类别登陆用户名、密码、验证码验证进入登陆页面,输入用户名、密码、验证码用户名20150510密码20150510验证码ib89数据库中存在该记录(为人事部员工)且验证码正确,登录成功进入管理页面与预期结果同功能点用户名20150510密码20150510验证码ib8数据库中存在该记录(为人事部员工)但验证码不正确,提示“验证码输入有误”与预期结果同功能点用户名20150510密码20150510验证码null数据库中存在该记录(为人事部员工)但验证码不正确,提示“请输入验证码”与预期结果同功能点用户名20150510密码null验证码ib89数据库中存在该记录(为人事部员工)但密码不正确,提示“密码不能为空”与预期结果同功能点用户名20150510密码20150505验证码ib89数据库中存在该记录(为人事部员工)但密码不正确,提示“密码错误”与预期结果同功能点用户名20150520密码20150520验证码ib89数据库不存在该记录,提示“用户名错误”与预期结果同功能点Table6-14LoginModuleTestCaseTable
6.4软件测试结论
6.
4.1软件能力在测试过程中发现了问题,并进行正确的修改和完善,使得软件的准确运行有了进一步的保障,经过大量的测试软件运行正常在业务的处理上能够达到需求目标,同时在系统的流畅性以及可操作性等方面也很出色,总之本系统是一个具有很强操作性的完整可行的系统
6.
4.2缺陷和限制
(1)在界面的美化上有一定的缺陷
(2)在代码的优化上有一定的缺陷,不能够十分的完美
(3)没有实现员工自己的签到而需要人事部员工来录入,虽然保证了安全性等因素但却给技术不员工带来了大量不必要的工作
(4)邮件管理要借助一些外部邮件收发软件进行员工之间信息的发送与接收,即没有实现企业内部员工邮件收发直接通过内部局域网
6.
4.3建议
(1)进一步学习界面美工方面的相关专业知识
(2)进一步简化代码,使得代码的执行效率更高
(3)进一步的学习以完善系统功能
6.
4.4测试结论经过针对系统的完整性、实用性和用户文档等质量特性进行的全面、严格的测试,对系统各个模块每个功能认真仔细的系统软件测试后,用事实证明了系统能够正常运行,并且证明了在需求分析阶段客户对系统的功能要求全部都能够实现,并且运转正常系统性能良好,有友好的界面显示,系统的配置信息维护能够及时而准确的实现,相关信息的添加、删除、修改、检索等功能能够正常运行,实现起来也简单方便系统由管理员维护,安全性高,出错率极低更新好的系统信息展现在客户面前用起来简便、快捷,信息浏览通俗易懂,可操作性强总的来说,本系统的设计是成功的总结本系统的开发中,使用到了Javaee,Jsp,Mysql,Tomcat,CSS等相关控件,其中Javaee使用到了Struts2,JSP通过CSS进行设计,后台数据库的连接使用配置数据源及JavaBean来进行连接和数据的封装通过CSS来进行设计页面,可以很方便的对页面进行布局,使得页面更加的美观和便于操作,并且十分的友好采用MYSQL数据库的原因是MySQL是一个关系型数据库管理系统http://baike.baidu.com/view/
1450387.htm,由瑞典MySQLhttp://baike.baidu.com/view/
24816.htmAB公司开发,目前属于Oraclehttp://baike.baidu.com/view/
15020.htm公司Mysqlhttp://baike.baidu.com/view/
24816.htm是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMSRelationalDatabaseManagementSystem关系数据库管理系统应用软件之一MySQL是一种关联数据库管理系统http://baike.baidu.com/view/
68446.htm,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活http://baike.baidu.com/view/
474022.htm性MySQL所使用的SQL语言是用于访问数据库http://baike.baidu.com/view/
1088.htm的最常用标准化语言MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码http://baike.baidu.com/view/
394804.htm这一特点,一般中小型网站的开发都选择MySQL作为网站数据库http://baike.baidu.com/view/
1088.htm也给后期的测试时数据的查询和校对带来了很大的方便和好处,为项目开发节省了很多时间经过反复的测试,本系统能够按照预期的计划运行,尽管如此还是存在着一些不足致谢在本系统的开发过程当中,遇到了无数的困难,在此我要感谢我的指导老师——刘万军教授,在指导老师的严格要求和细心指导下,我的毕业设计进展的速度比较平稳,虽然其间经历过多次的修改和完善但是最终还是可以交一份满意的答卷同时还有同组的其他同学,在项目的开发过程中我通过发现问题并实际解决问题使我学会了很多平时未曾接触到的东西,我失败过无数次也成功过无数次,最后我终于能够按时完成任务,回头想想再苦再累也是值得的在这过程中不论是在编程方面还是在论文指导方面,我的指导老师以及项目组成员都给予了我极大地帮助和鼓舞,让我学会了如何在困境中把握住自己,找准自己的方向经过各位老师和同学的帮助,我最终完成了此次的毕业设计,在此次毕业设计过程中我也学到了许多关于JAVA技术方面的知识,实践技能有了很大的提高同时在这里我也要感谢软件学院的全体领导和老师,四年的栽培今日我们终于可以展翅高飞,不管以后走到哪里,我想我会永远记住这四年充实的大学生活,感谢全体领导和老师对我们学生的关心和支持,不论是在学习上还是在生活上,我们都得到了正确的引导和指引,即将步入社会,我想我会用我的实际付出来回报学院的栽培参考文献
[1]程伟、汪孝宜.JSP网络开发经典模块实现全集[M].北京电子工业出版社,2008
[2]杨文龙、姚淑珍、吴芸.软件工程.[M]北京电子工业出版社,2009
[3]肖金秀、廖疆星等.网页设计培训教程[M].北京地质出版社,2008
[4]张龙祥、陶影.数据库原理与设计[M].西安西安交大出版社,2008
[5]王国辉、李立文、杨亮.JSP数据库系统开发完全手册[M].北京人民邮电出版社,2009
[6]冯艳茹苏文芝.基于MVC设计模式的Struts框架的设计与实现http://www.cnki.net/kcms/detail/detail.aspxfilename=AYXB201306024dbcode=CJFQdbname=CJFDTEMPv=[J].安阳工学院学报.201306
[7]张孝祥.Java就业培训教程[M].北京清华大学出版社,2008
[8]H.M.DEitel、P.J.Deitel.JavaHowtoProgram[M].American PearsonEducation,2009
[9]陈鹏、程勇.J2EE项目开发实用案例[M].北京科技出版社,2007
[10]夏帮贵、刘凡馨.数据库编程实作教程[M].北京希望电子出版社,2008
[11]MikeJasnowski.Java,Xml和Web服务宝典[M].电子工业出版社,2009
[12]O’reilly.JavaServletProgramming[M].American SernniYey,2010
[13]林邦杰.彻底研究java[M].北京电子工业出版社,2010
[14]林树泽.Java完全自学手册[M].北京:机械工业出版社
2011.
[15]辛运帏.Java程序设计[M].北京:清华大学出版社
2011.附录A中文译文JAVA技术介绍Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言Java语言的主要好处是,Java应用程序可以跨硬件平台和操作系统进行移植——这是因为每个平台上安装的JVM都可以理解同样的字节码Java语言和平台的可伸缩性非常强在低端,Java语言是第一批支持企业开放标准的技术之一,支持使用XML和Web服务跨业务线共享信息和应用程序Java平台有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发
(1)JavaSE以前称为J2SE它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序JavaSE包含了支持JavaWeb服务开发的类,并为JavaPlatform,EnterpriseEdition(JavaEE)提供基础大多数Java开发人员使用JavaSE5,也称为Java
5.0或Tiger
(2)JavaEE以前称为J2EE企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构和Web
2.0应用程序
(3)JavaME以前称为J2MEJavaME为在移动设备和嵌入式设备上运行的应用程序提供一个健壮且灵活的环境JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能Java语言是简单的Java语言的语法与C语言和C++语言很接近,Java丢弃了C++中很少使用、难理解的的特性,如操作符重载、多继承、自动的强制类型转换Java语言不使用指针,并提供了自动的废料收集Java语言是一个面向对象的Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定总之,Java语言是一个纯的面向对象程序设计语言Java语言是分布式的Java语言支持Internet应用的开发,Java的RMI远程方法激活机制也是开发分布式应用的重要手段Java语言是健壮的Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证Java语言是安全的Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击Java语言是可移植的这种可移植性来源于体系结构中立性Java系统本身也具有很强的可移植性Java语言是多线程的在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式对象技术使你得以把程序划分成若干独立的部分通常,你还需要把程序转换成彼此分离的,能独立运行的子任务每一个这些独立的子任务都被称为一个“线程”(thread)你要这样去编写程序每个线程都好象是在独自运行并且占有自己的处理器处理器时间确实是通过某些底层机制进行分配的,不过一般来说,你不必考虑这些,这使得编写多线程程序的任务变得容易得多了所谓“进程”(process),是一个独立运行着的程序,它有自己的地址空间“多任务”(multitasking)操作系统通过周期性地将处理器切换到不同的任务,使其能够同时运行不止一个进程(程序),而每个进程都象是连续运行、一气呵成的线程是进程内部的单一控制序列流因此一个进程内可以具有多个并发执行的线程多线程有多种用途,不过通常用法是,你的程序中的某个部分与一个特定的事件或资源联系了在一起,而你又不想让这种联系阻碍程序其余部分的运行这时,可以创建一个与这个事件或资源相关联的线程,并且让此线程独立于主程序运行学习并发编程就像进入了一个全新的领域,有点类似于学习一门新的编程语言,或者至少要学习一整套新的语言概念随着对线程的支持在大多数微机操作系统中的出现,在编程语言和程序库中也出现了对线程的扩展总的来说,不仅看起来神秘,而且需要你改变编程时的思维方式各种语言中对线程的支持都很相似,所以只要理解了线程概念,那么在别的语言中要用到线程的话就有了共同语言尽管对线程的支持使Java看起来更复杂,不过这并不全是Java的错,线程本身就很讲究技巧使用并发最强制性的原因之一就是要产生能够作出响应的用户界面考虑一个程序,它要执行某项CPU深度占用的计算,这样就会导致用户的输入被忽略,也就无法作出响应问题的实质是程序需要一边连续进行计算,同时还要把控制权交给用户界面,这样程序才能响应用户的操作如果你有一个“退出”按钮,你一定不希望在程序的每段代码里都检测按钮状态但你还是希望对这个按钮能够作出响应,就好像你定期对其进行检测一样传统的方法不可能一边连续执行其操作,同时又把控制权交给程序的其余部分事实上,这听起来就像是不可能完成的任务,就好象让一个处理器同时出现在两个地方,但这恰恰是并发编程所能够提供的错觉效果并发还可以用来优化程序的吞吐量比如,在你等待数据到达输入/输出端口的时候,你可以进行其他重要的工作要是不用线程的话,唯一可行的办法就是不断查询输入/输出端口,这种方法不仅笨拙,而且很困难如果你有一台有多处理器的机器,多个线程就可以分布在多个处理器上,这可以极大地提高吞吐量这种情况通常出现在有多个强劲处理器的web服务器上,在这种环境下,程序对于每个用户请求都将分配一个线程,这样就可以把大量的请求分配给多个处理器来处理需要牢记的是,具有多个线程的程序,必须也能够在只有单处理器的机器上运行因此,不使用任何线程而写出具有同样功能的程序也是可能的然而,使用多线程的重要好处是可以使程序的组织更有条理,因而能大大简化程序设计对于某些类型的问题,比如模拟视频游戏,如果没有对并发的支持将会非常难以解决线程模型为编程带来了便利,它简化了在单一程序中交织在一起同时运行的多个操作在使用线程时,处理器将轮流给每个线程分配其占用时间每个线程都觉得自己在一直占用处理器,但事实上处理器时间是划分成片段分配给了所有的线程例外情况是程序运行在具有多个处理器的机器上,但线程的一大好处是可以使你从这个层次抽身出来,即代码不必知道它是运行在具有一个还是多个处理器的机器上所以,线程是一种建立透明的、可扩展的程序的方法,如果程序运行得太慢,为机器增添一个处理器就能很容易地加快程序的运行速度多任务和多线程往往是使用多处理机系统的最合理方式在单处理器机器上,线程会降低一些运行效率,但是,从程序设计、资源平衡、用户使用方便等方面来看,还是非常值得的一般来说,线程使你能得到更加松散耦合的设计;否则的话,你将不得不在部分代码中直接关注那些通常由线程处理的工作在单根继承结构中的所有对象都具有一个共用接口,所以它们归根到底都是相同的基本类型另一种(C++所提供的)是你无法确保所有对象都属于同一个基本类型从向后兼容的角度看,这么做能够更好地适应C模型,而且受限较少,但是当你要进行完全的面向对象程序设计时,你必须都要构建自己的继承体系,使得它可以提供其他OOP语言内置的便利并且在你获得的任何新类库中,总会用到一些不兼容的接口,你需要花费力气(并有可能要通过多重继承)来使得新接口融入你的设计之中如果你刚刚从头开始,那么像Java这样的选择通常会更高效高产单根继承结构(例如Java所提供的)保证所有对象都具备某些功能因此你了解在你的系统中你可以在每个对象上都可以执行的某些基本操作单根继承结构以及在堆上创建所有对象,极大地简化了参数传递(这在C++中是十分复杂的话题之一)单根继承结构使垃圾回收器(内置于Java中)的实现变得容易得多其必需的支持功能可置于基类中,这样,垃圾回收器就可以发送恰当的消息给系统中的每一个对象如果没有单继承结构以及通过引用来操作对象的系统特性,要实现垃圾回收器非常困难由于所有对象都保证具有运行时刻类型信息(runtimetypeinformation),因此你不会因无法异常处理将错误处理直接置于编程语言中,有时甚至置于操作系统中异常处理就像是与程序正常执行路径并行的,在错误发生时执行的另一条路径因为它是另一条完全分离的执行路径,所以它不会干扰正常的执行代码这使得代码编写变得简单了,因为你不需要被迫定期检查错误此外,被抛出的异常不像方法返回的错误值和方法设置的用来表示错误条件的标志位那样可以被忽略异常不能被忽略,所以它保证一定会在某处被处理最后需要指出的是异常提供了一种从错误状况进行可靠恢复的途径由于程序被逻辑化分为线程,所以如果机器拥有多个处理器,那么程序将在不需要特殊调整的情况下执行得更快所有这些都使得线程看起来相当简单,但是有一个隐患共享资源如果有超过一个的并行线程都要访问同一项资源,那么就会出问题例如,两个进程不能同时向一台打印机发送信息为了解决这个问题,可以共享的资源,例如打印机,必须在被使用期间锁定因此,整个过程是;某个线程锁定某项资源,完成其任务,然后释放资源锁,使其它线程可以使用这项资源Java的线程机制是内置于其中的,它使此复杂课题变得简单得多了线程机制被对象层次所支持,因此线程的执行可以用对象来表示Java同时也提供了限制性资源锁定功能,它可以锁定任何对象所占用的内存(毕竟这也算是某种共享资源),使得同一时刻只能有一个线程在使用它这是通过synchronized关键字来实现的其它类型的资源必须由程序员显式地锁定,通常是通过创建一个表示锁的对象,所有线程在访问资源之前先检查这个对象当你创建了一个对象之后,只要你需要它,它就一直存活着,但是在程序终止后,它无论如何都不能存活了在某些场合,并保存其相关信息,将非常有用当你下一次重新启动程序时,这个对象能够重生,并且拥有与上一次程序执行时相同的信息附录B英文原文TheIntroductionofJavaTechnologyJavaisasimpleobject-orienteddistributedinterpretedrobustsecuritystructure-neutralportablehighperformancemultithreadeddynamiclanguage.ThemainadvantageofJavalanguageJavaapplicationsacrosshardwareplatformsandoperatingsystemsfortransplant-thisisbecausetheJVMisinstalledoneachplatformcanunderstandthesamebytecode.Javalanguageandplatformscalabilityisverystrong.AtthelowendJavalanguageisthefirstopenstandardstechnologysupportenterpriseonesupporttheuseofXMLandWebservicecannotstridebusinesslinestoshareinformationandapplicationsChengXu.TherearethreeversionsofJavaplatformwhichmakessoftwaredevelopersserviceprovidersandequipmentmanufacturerscantargetspecificmarketdevelopment:JavaSEform applications.JavaSEincludessupportforJavaWebservicesdevelopmentclassesandfortheJavaPlatformEnterpriseEditionJavaEEtoprovideabasis.MostJavadevelopersuseJavaSE5alsoknownasJava
5.0orTiger.JavaEEformerlyknownasJ2EE.EnterpriseEditiontohelpdevelopanddeployportablerobustscalableandsecureserver-sideJavaapplications.JavaSEJavaEEisbuiltonthefoundationwhichprovidesWebservicescomponentmodelmanagementandcommunicationAPIcanbeusedtoachieveenterprise-classservice-orientedarchitectureandWeb
2.0applications.JavaMEformerlyknownasJ2ME.JavaMEdevicesinmobileandembeddedapplicationsrunningonarobustandflexibleenvironment.JavaMEincludesflexibleuserinterfacesrobustsecuritymodelandmanybuilt-innetworkprotocolsandnetworkingthatcanbedynamicallydownloadedandextensivesupportforofflineapplications.JavaME-basedapplicationspecificationonlywriteonceandcanbeusedinmanydevicesandcanusethenativefeaturesofeachdevice.Javalanguageissimple.JavalanguagesyntaxandtheClanguageandC++languageisverycloseJavadiscardedtheC++rarelyusedhardtounderstandthecharacteristicssuchasoperatoroverloadingmultipleinheritancethemandatoryautomatictypeconversion.Javalanguagedoesnotusepointersandprovidesautomatedwastecollection.Javaisanobject-orientedlanguage.Javalanguageprovidesclassesinterfacesandinheritanceoftheoriginallanguageforsimplicityonlysupportssingleinheritancebetweenclassesbutsupportmultipleinheritancebetweeninterfacesandsupportclassesandinterfacestoachievebetweenthemechanismkeywordimplements.JavalanguagefullysupportsdynamicbindingandC++languageusedonlyfordynamicbindingofvirtualfunctions.InshortJavalanguageisapureobject-orientedprogramminglanguage.Javalanguageisdistributed.JavalanguagesupportforInternetapplicationdevelopmentJavasRMIremotemethodactivationmechanismisalsoanimportantmeansofdevelopingdistributedapplications.Javalanguageisrobust.JavasstrongtypesystemexceptionhandlingautomatedwastecollectionisanimportantguaranteerobustJavaprograms.Javalanguageissafe.JavaisoftenusedinnetworkenvironmentthisJavaprovidesasecuritymechanismtopreventmaliciouscodeattacks.Javalanguageisportable.Thisportabilitycomesfromthearchitectureneutrality.Javasystemitselfishighlyportable.Javalanguageismulti-threaded.IntheJavalanguagethethreadisaspecialobjectitmustThreadclassorthesonSunclasstocreate.Javalanguagesupportsimultaneousexecutionofmultiplethreadsandprovidesynchronizationmechanismsbetweenthreadskeywordsynchronized.JavalanguagefeaturesmakeJavaanexcellentapplicationofunparalleledrobustnessandreliabilitywhichalsoreducedapplicationmaintenancecosts.JavaonthefullsupportofobjecttechnologyandJavaPlatformAPIembeddedapplicationstoreducedevelopmenttimeandreducecosts.Javascompileonceruneverywherefeaturecanmakeitanywhereavailabletoprovideanopenarchitectureandmulti-platformlow-costwayoftransmittinginformationbetween.HibernateHibernateisalightweightJDBCobjectpackage.ItisanindependentobjectpersistenceframeworkandtheAppServerandEJBisnonecessarylink.HibernatecanuseJDBCcanbeusedinanyoccasionsuchasJavaapplicationdatabaseaccesscodeDAOinterfaceimplementationclassorevenaccessthedatabaseinsideaBMPcode.InthissenseHibernateandEBisnotacategoryofthingsthatdidnotexisteither-orrelationship.Objecttechnologyallowsyoutobepartoftheprogramisdividedintoseveralindependent.Usuallyyoualsoneedtoprogramintoeachseparateindependentlyrunningsubtasks.Eachoftheseindependentsubtasksiscalledathreadthethread.Youwanttowritetheprogram:eachthreadseemstobealonerunandtookpossessionoftheirownprocessor.Processortimeisindeedbysomeoftheunderlyingmechanismforthedistributionofbutgenerallyspeakingyoudonotconsiderthesewhichmakesthetaskofwritingmultithreadedprogramsmucheasier.Theso-calledprocessprocessisrunningaseparateprogramithasitsownaddressspace.Multi-taskingmultitaskingoperatingsystembyperiodicallyprocessortoswitchtodifferenttasksabletorunmorethanoneprocessprogrameachprocessascontinuousoperationallinone.Thethreadisaprocesswithinasingleflowofcontrolsequences.Thereforeaprocesscanhavemultipleconcurrentthreadsofexecution.Multi-threadingavarietyofpurposesbutusageisusuallytogettogethercontactyourprograminaportionofaspecificeventorresourceandyoudonotwantthislinktohindertherestoftheprogramisrunning.Atthistimeyoucancreateathreadassociatedwiththiseventorresourceandthisthreadisindependentofthemainprogramrunning.Learningconcurrentprogramminglikeenteringawholenewfieldsomewhatsimilartolearninganewprogramminglanguageoratleasttolearnawholenewsetoflanguageconcepts.Extensionofthethreadwiththethreadsupportinmostcomputeroperatingsystemsprogramminglanguagesandlibraries.Overallnotonlylooksmysteriousbutalsorequireyoutochangetheprogrammingwayofthinking.Supportforthreadsinavarietyoflanguagesareverysimilarsolongastheunderstandingoftheconceptofthreadstheninotherlanguagesusethewordsofthethreadshaveacommonlanguage.SupportforthethreadtomakeJavalookmorecomplexbutthisisnotentirelythefaultofJavathreadsthemselvesareveryskilful.Theuseofconcurrentmandatoryoneofthereasonsistoproduceabletorespondtouserinterface.ConsideraprogramtoperformthecalculationofthedepthofaparticularCPUoccupancywhichwouldresultintheusersinputisignoredwillnotbeabletorespond.Theessenceoftheproblemis:Aprogramneedswhilecontinuouscalculationbutalsotohandovercontroltotheuserinterfacesotheprogramcanrespondtouseractions.IfyouhaveanExitbuttonyouwillnotwanttodetectbuttonintheprogramofeachcodebutyoustillwantthisbuttontorespondasifyouperiodicallytodetect.Traditionalmethodscannotbethesideofthecontinuousimplementationofitsoperationbutalsopushedthecontroltotherestoftheprogram.Infactitsoundslikeanimpossibletaskifoneprocessoratthesametimeintwoplacesbutthatisabletoprovidetheillusioneffectofconcurrentprogramming.Concurrencycanalsobeusedtooptimizethethroughputoftheprogram.Forexamplewhenyouwaitfordatatoarriveattheinputoutputportyoucancarryoutotherimportantwork.Ifthethreadisnottheonlyfeasiblewayistoconstantlychecktheinputoutputportsthismethodisnotonlyclumsybutverydifficult.Ifyouhaveamulti-processormachinemultiplethreadscanbedistributedacrossmultipleprocessorswhichcandramaticallyimprovethroughput.Thisusuallyoccursinamorerobustprocessorwebserverinthisenvironmenttheprogramforeachuserrequestwillbeassignedathreadsothatyoucanputalotofrequestsassignedtomultipleprocessorstohandle.Tokeepinmindisthattheprogramhasmultiplethreadsandmustalsobeabletorunonasingleprocessormachine.Thereforedonotuseanythreadandwriteaprogramwiththesamefunctionsisalsopossible.Howevertheimportantbenefitofusingmultiplethreadscanbemorestructuredorganizationoftheprogramwhichcangreatlysimplifytheprogramming.Forsometypesofproblemssuchasanalogvideogamesifnotconcurrentsupportwillbeverydifficulttosolve.Thethreadingmodelforprogrammingconvenienceitsimplifiestosimultaneouslyrunmultipleoperatingintertwinedinasingleprogram.Intheuseofthreadstheprocessorwillinturntakeuptimeallocatedtoeachthread.Eachthreadfeelhasbeenoccupiedbytheprocessorbutthefactthatprocessortimeisdividedintofragmentsassignedtoallthreads.Theexceptionisthattheprogramisrunningonamachinewithmultipleprocessorsbutabigadvantageofthethreadcanmakeyouwithdrawfromthislevelthecodedoesnothavetoknowthatitisrunningonamachinewithoneormultipleprocessors.Sothethreadistoestablishatransparentscalablemethodofprocedureiftheprogramrunstooslowlyforthemachinetoaddthespeedofaprocessorcaneasilyspeeduptheprocess.Multi-taskingandmulti-threadingisoftenthemostreasonablewayistousemulti-processorsystem.Onasingleprocessormachinethethreadwillreducethenumberofoperatingefficiencyintermsofprogramdesignresourcebalancetheusereasytousehoweverisstillveryworthwhile.Ingeneralathreadsothatyoucangetamorelooselycoupleddesign;Otherwiseyouwillhavetopartofthecodeofdirectconcerntothosewhousuallyhandledbyathread.Insingleinheritancestructureofallobjectshaveacommoninterfacesotheyareinthefinalanalysisisthesamebasictype.AnotherwithC++isthatyoucannotensurethatallobjectsbelongingtothesamebasictypes.FromtheperspectiveofbackwardsoastobetterfittheCmodelandtherestrictionislessbutwhenyouhaveafullyobject-orientedprogrammingyouhavetobuildyourowninheritancesystemsothatitcanprovideotherOOPlanguagebuilt-infacilities.Andyougetanynewlibraryalwaysusesomeincompatibleinterfaceyouneedtospendeffortandpossiblythroughmultipleinheritancetomakethenewinterfaceinyourdesign.TodosoinreturnforC++additionalflexibilityisworthIfyouneedit--youabovetheCinvestmentishuge--itisveryvaluable.IfyoujuststartfromscratchsolikeJavasuchchoiceisusuallymuchmoreefficienthighyield.SingleinheritancestructureforexampleJavaofferstoensurethatallobjectshavecertainfunction.Soyouknowinyoursystemyoucanineachobjectcanperformsomebasicoperation.SingleinheritancestructureandcreatedontheheapofallobjectsgreatlysimplifyingthetransferparameterwhichinC++isaverycomplextopic.Singleinheritancehierarchythatthegarbagecollectorbuilt-inJavaimplementationmucheasier.Thenecessarysupportfunctionscanbeplacedinthebasethusthegarbagecollectorcansendtherightmessagetoeveryobjectinthesystem.Ifthereisnosingleinheritancestructureandmanipulateobjectsbyreferencefeaturesofthesystemtorealizethegarbagecollectorisverydifficult.Sincealltheobjectsareguaranteedwithrun-timetypeinformationruntimetypeinformationsoyoucannotdueto.Exceptionhandlingerrorhandlingplaceddirectlyintheprogramminglanguagesometimesevenintheoperatingsystem.Anomalyisanobjectitfromthewronglocationsbeingthrownoutthrownandwasappropriatewasspecificallydesignedtohandleaparticulartypeofexceptionhandlercapturecaught.Exceptionhandlingislikeandnormalprogramexecutionpathinparallelatthetimetheerroroccurredexecutinganotherpath.Becauseitisacompleteseparationoftheexecutionpathsoitdoesnotinterferewiththenormalexecutionofcode.Thismakesthecodeeasierbecauseyoudontneedtoregularlycheckerror.Inadditiontheexceptionthrownasthemethodreturnstheerrorvalueandmethodusedtoindicateanerrorconditionsettingflagbitthatcanbeignored.Exceptioncannotbeignoredsoitguaranteesthatwillbeprocessedinsomewhere.Finallyitshouldbepointedout:exceptionsprovideareliablerecoveryfromerrorsintheway.Becausetheprogramislogicallydividedintothreadsoifthemachinehasapluralityofprocessorthentheprogramwillnotneedspecialadjustmentsituationfasterexecution.Allofthesemakethethreaditlooksquitesimplebutthereisahiddendanger:sharedresource.Ifthereismorethanoneoftheparallelthreadstoaccessthesameresourcethentheproblemwouldbeto.Forexampletwoprocessescansendtheinformationtoaprinter.Inordertosolvethisproblemcanshareresourcessuchasprintersmustbeusedduringlocking.Thereforethewholeprocessis;athreadlockingaresourcecompletesitstaskandthenreleasetheresourcelocksothatotherthreadscanusethisresource.TheJavathreadmechanismisbuiltthereinitmakesthiscomplextaskmucheasier.Threadmechanismistheobjecthierarchyaresupportedsotheexecutionofthethreadcanusetheobject.Javaalsoprovidesalimitingresourcelockingfunctionitcanlockanyobjectmemoryafterallthisisasharedresourceinthesametimetherecanbeonlyonethreadintheuseofit.Thisisachievedthroughthesynchronizedkeyword.Othertypesofresourcesmustbemadebytheprogrammerexplicitlylockusuallybycreatingarepresentationoftheobjectinthelockallthreadsaccessingresourcescheckbeforethisobject.Whenyoucreateanobjectaslongasyouneeditithassurvivedbutintheprocessterminatesithoweveryoucannotsurvive.Incertainsituationsandtopreservetherelevantinformationveryuseful.Thenexttimeyourestarttheprogramtheobjecttoberebornandwiththelastprogramexecutionwhenthesameinformation.附录C主要代码邮件功能实现的主要代码1)AddEmailWork.jsp中发送邮件的form表单,具体代码如下s:formtheme=simplemethod=postaction=sendImptablewidth=608captionh4发送邮件/h4/captiontrtdwidth=80发送日期:/tdtdwidth=420s:datetimepickername=workTimetoggleType=explodevalue=today//tdtdwidth=80/tdtdrowspan=2valign=toppstyle=margin-bottom:10px;margin-left:10px;收件人:/pselectmultiple=multiplestyle=height:211px;width:150px;margin-left:10px;name=mailAddresss:iteratorid=impListvalue=impListstatus=impoptionvalue=s:propertyvalue=impEmail/s:propertyvalue=impName//option/s:iterator/select/td/trtrtdcolspan=3label标题:/labelinputtype=textname=subject*/inputfieldsetlegend邮件内容:/legendtextareacols=70rows=10name=mailTextstyle=width:500px;/textarea/fieldset/td/trtrtdcolspan=4label邮箱密码验证:/labelinputtype=passwordname=password//td/tr/tables:submitvalue=发送cssClass=tijiao//s:form2)EmailImpAction.java类中对收件人的获取,具体代码如下所示packagewyf.cgq;importcom.opensymphony.xwork
2.*;importjava.util.*;publicclassEmailImpActionextendsActionSupport{privateString[]mailAddres;privateStringdepartId;privateStringimpId;privateStringimpName;privateintupSalary;privateintdownSalary;privateintcurrenPage=1;privateintmaxPage;privateinttotalMessage;privateintpageSpan=5;publicMapgetSpanList{Mapmap=newHashMap;map.put1每页1条;map.put2每页2条;map.put5每页5条;map.put10每页10条;map.put15每页15条;returnmap;}publicvoidsetCurrenPageintcurrenPage{ifcurrenPage0currenPage=this.getMaxPage{this.currenPage=currenPage;}}publicvoidsetPageSpanintpageSpan{this.pageSpan=pageSpan;ActionContext.getContext.getSession.putpageSpanpageSpan;this.setCurrenPage1;}publicintgetPageSpan{Objectobj=ActionContext.getContext.getSession.getpageSpan;ifobj!=null{this.pageSpan=Integerobj;}returnthis.pageSpan;}publicintgetCurrenPage{returnthis.currenPage;}publicintgetMaxPage{this.pageSpan=this.getPageSpan;this.totalMessage=this.getTotalMessage;this.maxPage=totalMessage%this.pageSpan==0totalMessage/pageSpan:totalMessage/pageSpan+1;returnthis.maxPage;}publicintgetTotalMessage{this.totalMessage=ManageDB.getTotalMessagedepartIdimpIdimpNameupSalarydownSalary;returnthis.totalMessage;}publicStringgetDepartId{Objectobj=ActionContext.getContext.getSession.getdepartId;ifobj!=null{this.departId=Stringobj;}returnthis.departId;}publicvoidsetDepartIdStringdepartId{this.setCurrenPage1;this.departId=departId;ActionContext.getContext.getSession.putdepartIddepartId;}publicStringgetImpId{Objectobj=ActionContext.getContext.getSession.getimpId;ifobj!=null{this.impId=Stringobj;}returnthis.impId;}publicvoidsetImpIdStringimpId{this.impId=impId;ActionContext.getContext.getSession.putimpIdimpId;}publicStringgetImpName{Objectobj=ActionContext.getContext.getSession.getimpName;ifobj!=null{this.impName=Stringobj;}returnthis.impName;}publicvoidsetImpNameStringimpName{this.impName=impName;ActionContext.getContext.getSession.putimpNameimpName;}publicvoidsetDownSalaryintdownSalary{this.downSalary=downSalary;ActionContext.getContext.getSession.putdownSalarydownSalary;}publicintgetDownSalary{Objectobj=ActionContext.getContext.getSession.getdownSalary;ifobj!=null{this.downSalary=Integerobj;}returnthis.downSalary;}publicvoidsetUpSalaryintupSalary{this.upSalary=upSalary;ActionContext.getContext.getSession.putupSalaryupSalary;}publicintgetUpSalary{Objectobj=ActionContext.getContext.getSession.getupSalary;ifobj!=null{this.upSalary=Integerobj;}returnthis.upSalary;}publicMapgetDepartList{Mapmap=ManageDB.getDepartList;map.put0000全部;returnmap;}publicListgetImpList{Listlist=ManageDB.getResultListAllthis.getDepartIdthis.getImpIdthis.getImpNamethis.getCurrenPagethis.getPageSpanthis.getUpSalarythis.getDownSalary;returnlist;}publicStringexecute{ifthis.getDepartId.equals55555{this.setCurrenPage1;this.setDepartId0000;this.setUpSalary0;this.setDownSalary0;this.setImpName;this.setImpId;this.setPageSpanpageSpan;}returnsuccess;}/***@returnthemailAddres*/publicString[]getMailAddres{returnmailAddres;}/***@parammailAddresthemailAddrestoset*/publicvoidsetMailAddresString[]mailAddres{this.mailAddres=mailAddres;}}3)邮件功能中发送邮件action实现类的源代码如下importcom.opensymphony.xwork
2.*;importjava.util.*;importjavax.mail.Address;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.NoSuchProviderException;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.AddressException;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;publicclassSendImpActionextendsActionSupport{privateStringsubject;privateStringusername;privateStringpassword;privateString[]mailAddress;privateStringmailText;privateStringresult;/***@returntheresult*/publicStringgetResult{returnresult;}/***@paramresulttheresulttoset*/publicvoidsetResultStringresult{this.result=result;}/***@returnthemailText*/publicStringgetMailText{returnmailText;}/***@parammailTextthemailTexttoset*/publicvoidsetMailTextStringmailText{this.mailText=mailText;}publicStringexecute{StringuserId=StringActionContext.getContext.getSession.getuser;Propertiesprops=newProperties;props.setPropertymail.smtp.authtrue;props.setPropertymail.transport.protocolsmtp;Sessionsession=Session.getInstanceprops;session.setDebugtrue;Messagemsg=newMimeMessagesession;try{msg.setTextmailText;}catchMessagingExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}Impleeyuser=ManageDB.getImpByIduserId;StringfromEmail=user.getImpEmail;InternetAddressia=null;try{ia=newInternetAddressfromEmail;//发送者}catchAddressExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}this.username=fromEmail.substring0fromEmail.indexOf@;Stringsmtp=fromEmail.substringfromEmail.indexOf@+1fromEmail.length;//获得smtp协议用try{msg.setFromia;msg.setSubjectsubject;}catchMessagingExceptione{//TODOAuto-generatedcatchblocke.printStackTrace;}Address[]toAddress=newInternetAddress[mailAddress.length];forinti=0;imailAddress.length;i++{try{toAddress[i]=newInternetAddressmailAddress[i];//接收者}catchAddressExceptione{//TODOAuto-generatedcatchblocke.printStackTrace;}}try{Transportts=session.getTransport;ts.connectsmtp.+smtp25usernamepassword;ts.sendMessagemsgtoAddress;this.setResultsuccess;ts.close;}catchExceptione{//TODOAuto-generatedcatchblocke.printStackTrace;this.setResultfailer;}returnsuccess;}/***@returnthemailAddress*/publicString[]getMailAddress{returnmailAddress;}/***@parammailAddresthemailAddresstoset*/publicvoidsetMailAddressString[]mailAddress{this.mailAddress=mailAddress;}/***@returntheusername*/publicStringgetUsername{returnusername;}/***@paramusernametheusernametoset*/publicvoidsetUsernameStringusername{this.username=username;}/***@returnthepassword*/publicStringgetPassword{returnpassword;}/***@parampasswordthepasswordtoset*/publicvoidsetPasswordStringpassword{this.password=password;}/***@returnthesubject*/publicStringgetSubject{returnsubject;}/***@paramsubjectthesubjecttoset*/publicvoidsetSubjectStringsubject{this.subject=subject;}}DAO层DAO和实现类根据模块需要的各种持久化操作,确定对应方法服务层编写业务逻辑,调用DAO操作Service接口方法及实现Action及对应Form表单WEB层用于处理页面和业务逻辑的交互,对数据进行验证转换对业务数据进行呈现,并对用户的非法操作进行提示JSP页面展现。