工资管理系统框架搭建用户登录系统管理 学位论文.docx
《工资管理系统框架搭建用户登录系统管理 学位论文.docx》由会员分享,可在线阅读,更多相关《工资管理系统框架搭建用户登录系统管理 学位论文.docx(45页珍藏版)》请在冰点文库上搜索。
![工资管理系统框架搭建用户登录系统管理 学位论文.docx](https://file1.bingdoc.com/fileroot1/2023-5/28/5984c82b-6dfa-4f1d-b217-aede976b28fe/5984c82b-6dfa-4f1d-b217-aede976b28fe1.gif)
工资管理系统框架搭建用户登录系统管理学位论文
工资管理系统
──框架搭建、用户登录、系统管理
摘要:
在本工资管理系统中,涉及到最多的就是对数据的增删改查,当然在真是的系统中,对于这些操作要控制在严格的权限中,使用struts2+hibernate+spring实现了简单的CRUD操作。
这里采用三层架构,也就是数据访问层、业务逻辑层、表示层。
这样有利于分工和标准化。
增加代码的复用性。
我在这里主要介绍:
登录模块、系统管理模块、报表管理模块、退出登录、中文乱码的解决、如何在Strusts2中实现CRUD的权限分配。
关键词:
数据库;工资;工资管理;登录模块;系统管理模块。
Abstract:
Inthesalarymanagementsystem,involvingthemostisthedataadditionsanddeletions,ofcourseinthesystemreallyis,fortheseoperationstobecontrolledinstrictaccess,theuseofStruts2+hibernate+springtoachieveasimpleCRUDoperation.BetweentheMVCandthethreelayerarchitecturewechoosethreelayersarchitecture,andofcoursetheywereessentiallythesame.
Hereusesthreelayerstructures,namelythedataaccesslayer,businesslogiclayer,presentationlayer.Thisisconducivetospecializationandstandardization.Toincreasethereusabilityofthecode.Butbecauseofthebusinesscannotdirectlyaccessthedatabasemustbecompletedthroughthemiddlelayer.Reflectthetimeintervalisreplacedbythesuccessofanoperationinterface.Imainlyintroducedhere:
theloginmodule,systemmanagementmodule,statementsmanagementmodule,logout,solveChinesegarbled,howtorealizetheauthoritydistributionofCRUDinStrusts2.
Keywords:
Database;salary;salarymanagement;loginmodule;systemmanagementmodule;reportmanagementmodule;
1绪论
1.1背景
本次开发是由安博教育和学校发起,学生自主选题的一次毕业设计。
考虑到市面上的人事管理系统与工资管理系统都是针对个别公司开发的。
我们有意开发一种通用的,管理权限、部门、以及工资发放形式可以根据不同的公司自行分配和修改的工资管理系统。
随着现代信息技术和管理理论,建立企业管理信息系统是当今社会的重要趋势。
“用信息化带动工业化”的指导思想的提出更是中国走向互联网时代的口号。
对企业而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。
在企业管理中,人力资源是企业最宝贵的资源,也是企业的“生命线”,因此人事管理是企业的计算机管理信息系统重要组成部分。
而工资管理又是人力资源管理的重中之重。
实行电子化的工资管理,可以让人力资源管理人员从繁重琐碎的案头工作解脱出来,去完成更重要的工作。
工资管理信息系统的实现可以减轻比较繁琐的手工工资管理。
2系统需求
2.1范围
本次开发的系统为工资管理系统。
用于对小型企业的职工基本信息和工资信息的管理。
包括系统管理(部门管理、角色管理、用户管理)、报表管理(员工报表管理、工资报表管理)。
2.2定义
GZGLXT
GongZiGuanLiXiTong工资管理系统)的缩写。
FS
FinanceStaff(财务人员)的缩写。
NFS
NorFinanceStaff(非财务人员)的缩写。
JSP
JavaServerPage(Java服务器页面)的缩写,一个脚本化的语言。
2.3功能需求
1)财务管理端:
系统管理、人事管理、工资账户管理、工资管理、请假管理、个人信息管理、报表管理
2)系统管理:
1、部门管理,超级管理员具有系统操作的全部权限,可对部门进行添加(需输入部门名称、部门描述),可对已存在部门进行修改和删除。
2、角色管理,可以添加角色(需输入角色名称),可对已存在的角色进行授权,修改其角色名称和删除。
3、用户管理,可根据员工编号对员工(姓名、员工编号、职务、所属部门、账号)进行查询,也可以对存在的员工进行分配账号,删除账号和分配角色。
分配账号时,需输入账号和密码。
分配角色时,有以下角色可供选择(1、超级管理员、2、普通用户、3、普通员工、4、部门经理、5、人力资源经理、6、财务人员、7、财务经理、8、审计员、9、总经理、10、项目经理),需根据分配的角色选择相应的优先级。
3数据库设计
3.1数据流程图
1)系统管理
图3-1系统管理流程图
2)报表管理
图3-2报表流程图
3.2数据字典分析
1)模块管理表(module)-主要用来管理模块的排列和模块的访问路径。
字段名称
数据类型
字段大小
是否主键
说明
id
int
11
Y
模块编号
name
varchar
500
N
模块名称
sn
varchar
500
N
系统标识
url
varchar
500
N
访问路径
orderNo
varchar
500
N
优先级标识
parentId
int
11
N
父亲模块编号
2)用户表(user)-登录系统的用户定义
字段名称
数据类型
字段大小
是否主键
说明
id
int
11
Y
用户id
username
varchar
500
N
用户名称
password
varchar
500
N
密码
personId
int
11
N
员工id
createTime
datetime
N/Y
N
创建时间
3)角色类型表(role)-用户访问系统的权限通过用户角色所授予的权限获得。
字段名称
数据类型
字段大小
是否主键
说明
id
int
11
Y
角色id
name
varchar
500
N
角色类型id
4)用户角色(user_role)-该表通过用户控制角色和权限优先级
字段名称
数据类型
字段大小
是否主键
说明
id
int
11
Y
用户角色id
userId
varchar
500
N
用户id
roleId
varchar
500
N
角色类型id
orderNo
varchar
500
N
优先级标识
5)访问控制表(acl)-访问控制表是应用层在服务器接口的指令列表,这些指令列表通过数字标识确定优先级和告诉服务器允许访问的模块。
字段名称
数据类型
字段大小
是否主键
说明
id
int
11
Y
权限id
principalType
varchar
500
N
授权角色类型
principalSn
int
11
N
权限优先级标识
resourceSn
int
11
N
授权模块序号
aclState
int
11
N
授权状态
aclTriState
int
11
N
启用状态
6)员工个人信息报表设计所涉及的表(person)
字段名称
数据类型
字段大小
是否主键
说明
id
int
11
Y
员工id
name
varchar
500
N
员工姓名
sex
varchar
500
N
性别
age
int
11
N
年龄
address
varchar
500
N
地址
phone
int
11
N
电话
number
int
11
N
员工编号
duty
int
11
N
职务
departmentid
int
11
N
部门编号
groupId
int
11
N
工资组编号
description
text
Y/N
N
个人简历
createTime
datetime
Y/N
N
入职时间
7)员工工资报表设计所涉及的表(payroll)
序号
姓名
员工编号
职务
部门
基本工资
增加
扣除
总金额
发薪时间
1
超级管理员
10001
总公司
7400
500
0
7900
2015-01-15
字段名称
数据类型
字段大小
是否主键
说明
id
int
11
Y
序号
personId
int
11
N
员工id
groupId
int
11
N
所属工资组号
increase
int
11
N
额外奖金
reduce
int
11
N
扣除费用
status
varchar
500
N
审批状态
remark
varchar
500
N
备注
base
int
11
N
应发总薪资
opinion
varchar
500
N
审批意见
total
int
11
N
实发总薪资
payTime
datetime
Y/N
N
发薪资时间
createTime
datetime
Y/N
N
添加工资单时间
4设计说明
4.1系统概述
在本系统中,涉及到很多的就是对数据的增删改查,当然在系统中最重要的部分,是对于这些操作要控制在严格的权限中。
(应用层)我们利用struts2自身的IoC(反向控制)容器以struts2配置的形式来管理核心组件规范了开发,方便组员分配任务降低了耦合+(持久层)为了防止sql注入式攻击和提高效率(例如多表查询时,通过B表查询A表的值,只需在表B的映射类中变量的类型是表A的映射类),同时延迟装载机制使得数据只有在JSP页面调用的时候才会查询处理,并且Hibernate与数据库类型无关,在分页技术上,没有繁杂的sql语句只需query.setFirstResult(First);query.setMaxResults(PageSize);所以,我们选择了hibernate操作数据库+(业务层)spring充当了管理容器的角色。
实现了简单的CRUD操作。
在mvc与三层架构之间我们选择了三层架构,当然他们本质相同。
这里采用三层架构,也就是数据访问层、业务逻辑层、表示层。
这样有利于分工和标准化。
增加代码的复用性。
但由于业务无法直接访问数据库必须通过中间层完成。
反映时间间隔用操作是否成功界面代替。
5模块一登录模块
5.1登录模块以及响应基础类BaseAction类的配置
1)运用strusts2开发需要一个动作对应到一个Action,但这些Action的有些属性和方法是相同的,本系统中我们用到了调用数据库对应模块的路径实现分层调用,该类继承ActionSupport并重载(Override)的execute()方法。
把客户端请求request和服务端响应response,session会话的处理在Baseaction中封装。
并利用Java反射技术对ModelDriven实现抽象BaseAction。
2)配置LoginAction继承BaseAction
通过调用UserService接口中的login(Stringusername,Stringpassword)方法用session.put("login",user);result=SUCCESS;实现数据库user表的映射。
登录模块对应的流程图5-1:
图5-1系统登录流程图
5.2对应类之间的调用
1)用户登录时类间的调用
图5-2用户登录时类间的调用流程图
2)登录页面index.jsp获取表单中的用户名和密码函数
functionsubmitForm(){
document.getElementById("loginForm").submit();
}
1)主页面pay_main.jsp包含:
top.jsp顶部框架、left.jsp左侧模块显示框架、内容body、底部footer.jsp框架
5.3部分算法设计
1)登录方法
@InputConfig(resultName="loginInput")
publicStringlogin()throwsException{
Useruser=userService.login(username,password);
Stringresult="";
if(user!
=null){
session.put("login",user);
result=SUCCESS;
}
else{
session.put("notice","账号或密码不正确");
result=LOGIN;
}
returnresult;
}
publicStringlogout()throwsException{
session.clear();
return"logout";
}
//验证
publicvoidvalidateLogin(){
if(isNull(username)){
addFieldError("username","账号不能为空");
}
if(isNull(password)){
addFieldError("password","密码不能为空");
}
}
2)查找模块id的算法:
publicStringfindModules()throwsException{
Useruser=(User)session.get("login");//保存User对象为login
modules=newArrayList();//设置模块集合
moduleList=newArrayList();
modules=aclService.findModules(user.getId());
ModuleListml=null;
for(Modulem:
modules){
if(m.getModule()==null){
ml=newModuleList();
ml.setParent(m);
for(Modulemod:
modules){//增强for循环
if(mod.getModule()!
=null&&m.getId().equals(mod.getModule().getId())){
ml.getChild().add(mod);
}
}
moduleList.add(ml);
}
}
count=moduleList.size();//获得模块的大小
session.put("moduleList",moduleList);//抛出模块列表
session.put("count",count);
return"findModules";
}
5.4接口
1)登录模块接口调用图
图5-3用户登录登录模块接口调用图
5.5子功能模块的测试
1)管理员登录测试图
2)部门经理登录测试
6模块二系统模块
6.1功能模块一部门管理模块实现
6.1.1Strusts的配置
运用strusts2开发需要一个动作对应到一个Action,但这些Action的有些属性和方法是相同的,本系统中我们用到了调用数据库对应模块的路径实现分层调用,系统管理模块,需要在包中添加包含文件:
--部门管理-->
Department.xml的配置如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
/pages/pay_main.jsp
/index.jsp
--departmentAction对应的Action-->
/pages/department/department.jsp--显示部门管理界面-->
/pages/department/select_dep.jsp--显示查找部门管理界面-->
/pages/department/add_dep.jsp--显示添加部门管理界面-->
/pages/department/add_dep.jsp--显示保存部门管理界面-->/pages/common/success.jsp--显示添加部门管理成功界面-->
/pages/department/show_dep.jsp--显示部门管理界面-->
/pages/department/edit_dep.jsp--显示修改部门管理界面-->/pages/department/edit_dep.jsp--显示修改部门管理界面保存-->/pages/common/success.jsp--显示部门管理成功界面-->/pages/common/del_success.jsp--显示删除部门管理成功界面-->
6.1.2配置DepartmentAction继承BaseAction
通过调用DepartmentService接口中的方法用实现数据库表(department)的操作。
部门管理模块对应的流程图5-1:
图5-1部门管理流程图
6.1.2对应类之间的调用
1)进行部门管理时类间的调用
图5-2进行部门管理时类间的调用流程图
2)添加部门界面add_dep.jsp验证部门名称的函数
functionsubmitForm(){
varname=document.getElementById("depName");
if(name.value.length==0){
alert("部门名称不能为空");
return;
}
document.getElementById("depForm").submit();
}
6.1.3部分算法设计
1)Action中的查找方法:
publicStringfind()throwsException{
intoffset=0;
try{
offset=Integer.parseInt(request.ge