基于MVC模式的人事工资管理系统.docx

上传人:b****3 文档编号:24849480 上传时间:2023-06-02 格式:DOCX 页数:41 大小:1.90MB
下载 相关 举报
基于MVC模式的人事工资管理系统.docx_第1页
第1页 / 共41页
基于MVC模式的人事工资管理系统.docx_第2页
第2页 / 共41页
基于MVC模式的人事工资管理系统.docx_第3页
第3页 / 共41页
基于MVC模式的人事工资管理系统.docx_第4页
第4页 / 共41页
基于MVC模式的人事工资管理系统.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

基于MVC模式的人事工资管理系统.docx

《基于MVC模式的人事工资管理系统.docx》由会员分享,可在线阅读,更多相关《基于MVC模式的人事工资管理系统.docx(41页珍藏版)》请在冰豆网上搜索。

基于MVC模式的人事工资管理系统.docx

基于MVC模式的人事工资管理系统

 

第1章概述

1.1系统目的和意义

本次课程设计的题目是“基于MVC模式的人事工资系统”的设计与实现,该设计是对于本学期所学的JSP程序设计课程的巩固和深入探索,同时结合Java语言、JSP技术进行Web程序设计,利用前面学过的知识来解决实际问题,提高解决问题的能力和动手编程的能力。

同时该系统使用目前企业实际开发中比较成熟的MVC模式进行系统的整体架构设计,有效分离模块、功能之间的代码耦合关系,并逐步理解软件开发步骤和软件工程思想[1]。

1.2系统开发环境

1.本系统采用Browser/Server体系结构。

2.系统开发环境

1)开发平台:

MyEclipse5.5.1GA

2)开发语言:

JSP、Java

3)数据库:

MicrosoftSQLServer2005

3.系统运行环境

客户端:

浏览器:

桔子浏览器

服务器端:

数据库:

MicrosoftSQLServer2005应用程序系统

1.3系统开发模式及基本功能

本系统是基于MVC模式设计和开发的,MVC模式是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式。

Model(模型)表示应用程序核心,是应用程序中用于处理应用程序数据逻辑的部分。

通常模型对象负责在数据库中存取数据;View(视图)是应用程序中处理数据显示的部分。

通常视图是依据模型数据创建的;Controller(控制器)处理输入,是应用程序中处理用户交互的部分。

通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

基于MVC模式的人事工资系统主要实现前台和后台两部分功能设计,其中前台主要实现员工查看个人基本信息、员工查看本月工资信息、系统评价和修改密码等功能。

在查看个人基本信息当中,员工可以查看账号、身份证号、姓名、性别、入公司时间、学历、毕业院校、专业、所属部门名称、职位、联系方式、备注等基本个人信息;在查看本月工资信息当中,员工可以查看底薪、奖金、养老保险、失业险、医疗保险、住房公积金、个人所得税、罚金等工资信息。

后台主要实现员工信息管理、工资信息管理、请假信息管理、系统评价等功能。

其中员工信息管理包括添加员工信息和浏览、修改、删除员工信息;工资信息管理包括添加员工奖金信息和浏览工资信息;请假信息管理包括添加请假信息和浏览、修改、删除请假信息。

第2章系统设计

2.1系统的模块划分

人事工资系统是一种通常由管理员管理、用于记录和更新员工个人基本信息和工资情况的网站。

员工的个人信息由管理员录入,基本工资按照国家统一计算方法计算,奖金以及罚金由管理员另外录入。

参照一般的人事工资系统,为本系统设计了以下几个功能模块:

1.用户登录模块

用户登录前根据用户类型分别进行登录验证,如果账号和密码正确,并且验证码无误则进入系统。

2.员工信息管理模块

管理员可以对员工信息进行添加、浏览、修改和删除等操作,

3.工资信息管理模块

管理员可以添加员工的奖金,同时浏览员工本月工资,

4.请假信息管理模块

管理员可以添加员工请假信息,同时录入罚金数额。

5.友情链接模块

用户通过点击链接可以进入到相关网站浏览信息。

6.前台浏览模块

普通员工可以个人信息进行浏览以及个人本月工资情况。

系统功能模块图如图2-1所示。

 

图2-1系统功能模块图

2.2数据库设计

数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。

它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。

数据库的设计是整个系统成败的一个重要环节。

合理的数据库设计能够给系统带来很高的效率。

而且能够使得各个功能模块的设计变得非常简单而且模块间的关系特别明确,从而提高系统的可维护性。

本系统的数据库是在SQLServer2005中创建的。

根据前面的分析,人事工资系统数据库共包含6个表,包括管理员信息表(tbAdmin)、员工信息(tbEmployee)、职位工资信息表(tbSalary)、员工详细工资信息表(tbSalaryDetail)、请假信息表(tbRest)和系统评估信息表(tbEvaluation)。

表的结构、表字段的数据类型及相关说明如下:

表1管理员信息表

列名

说明

数据类型

约束

id

管理员账号

varchar(20)

主键

psw

管理员密码

varchar(20)

非空

表2员工信息表

列名

说明

数据类型

约束

id

员工账号

varchar(20)

主键

psw

员工密码

varchar(20)

非空

idNumber

身份证号

varchar(18)

非空

name

姓名

varchar(10)

非空

sex

性别

varchar

(2)

非空

inDate

入公司时间

datetime

degree

文化程度

varchar(6)

college

毕业院校

varchar(20)

major

专业

varchar(20)

deptName

所属部门名称

varchar(10)

posId

职位编号

varchar(20)

非空

tel

联系方式

varchar(15)

note

备注

varchar(300)

表3岗位工资表

列名

说明

数据类型

约束

posId

岗位编号

varchar(20)

主键

posName

岗位名称

varchar(20)

非空

basePay

基本工资

decimal(10,4)

非空

edmRate

养老金标准

decimal(10,4)

uepRate

失业险标准

decimal(10,4)

healthRate

医疗险标准

decimal(10,4)

phfRate

公积金标准

decimal(10,4)

表4员工工资详细信息表

列名

说明

数据类型

约束

id

员工账号

varchar(20)

主键

monthTime

月份

datetime(10,4)

非空

basepay

基本工资

decimal(10,4)

非空

bonus

奖金

decimal(10,4)

edmInsur

养老保险

decimal(10,4)

uepInsur

失业险

decimal(10,4)

healthInsur

医疗保险

decimal(10,4)

phf

住房公积金

decimal(10,4)

incomeTax

个人所得税

decimal(10,4)

fine

罚金

decimal(10,4)

表5请假信息表

列名

说明

数据类型

约束

id

员工账号

varchar(20)

主键

restDate

请假日期

datetime

非空

fine

罚款

decimal(10,4)

非空

note

备注

varchar(300)

num

序号

int

主键,自动编号

以上就是人事工资系统所需的数据表,按照这些表结构设计,在MicrosoftSQLServer2005中创建数据库EmployeeDatabase,并创建相应的表。

第3章系统的详细设计及实现

3.1数据库底层访问类

本系统的设计使用基于Servlet的MVC架构模式,将系统的各个功能的实现过程严格的划分为视图(View)、控制(Controller)、模型(Model),其中View负责界面的显示,Controller负责请求的转发和响应,Model负责逻辑业务对象实体和业务实体。

由于本系统是一种信息管理系统,在这三层之下,还要建立数据库访问层,该层完成数据库的连接、SQL语句的具体执行等操作。

这一层由MVC模式中的Model层里的业务实体进行调用,从而完成逻辑业务的信息维护操作。

3.1.1JDBC数据库访问技术

JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。

换言之,有了JDBCAPI,程序员就不必针对不同数据库分别编写程序,而只需用JDBCAPI写一个程序就够了,它可向相应数据库发送SQL调用。

同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。

简单来说,JDBC可做三件事:

与数据库建立连接、发送操作数据库的语句并处理结果。

为实现数据库连接,需将事先下载的sqljdbc.jar拷贝到lib目录下。

3.1.2添加DBManager公共类

首先创建包nepu.syx.tools,在该包下创建名为DBManager的类,该类得职责用于提供访问、操作数据库的公共方法。

添加公共类的方法和步骤如下:

在工程中的nepu.syx.tools包上点右键,选择【New】->【Class】菜单项,将弹出【NewJavaClass】对话框,保留默认的选择,在Name文本框中输入DBManager,点击Finish按钮。

3.1.3编写公共方法

3.1.2小节为项目添加了一个DBManager类,该类用于存放连接、操作数据库的公共方法,本小节介绍如何编写这些公共方法。

首先为DBManager类声明几个公共变量,其中conn为数据库连接对象,定义形式为:

privateConnectionconn=null;stmt用于向数据库发送要执行的sql语句,定义形式为:

privateStatementstmt=null;rs为结果集,定义形式为:

privateResultSetrs=null;uri为要连接的URL,定义形式为:

Stringuri="jdbc:

sqlserver:

//localhost:

1433;DatabaseName=EmployeeDatabase";user为数据库用户名,定义形式为:

Stringuser="sa";psw为数据库登录密码,定义形式为:

Stringpsw="111"。

1、数据库连接方法getConnection()

首先利用Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");注册驱动程序,之后获取数据库链接,并进行相应异常处理。

getConnection方法的关键代码如下:

publicConnectiongetConnection(){

try{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

conn=DriverManager.getConnection(uri,user,psw);

if(conn==null)System.out.println("数据库连接失败!

");

}

catch(ClassNotFoundExceptione){

e.printStackTrace();

System.out.println("驱动加载错误!

");

}

catch(SQLExceptione){

e.printStackTrace();

System.out.print("获取数据库连接错误!

");

}

returnconn;

}

2、数据库查询方法executeQuery()

用conn链接创建一个Statement对象,stmt调用executeQuery(sql)方法来进行数据查询,进行相应异常处理,返回类型为ResultSet。

executeQuery()方法的关键代码如下:

publicResultSetexecuteQuery(Stringsql){

try{

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

}

catch(SQLExceptione){

e.printStackTrace();

System.out.print("执行sql语句错误!

");

}

returnrs;

}

3、数据库增删改的操作方法executeUpdate()

用conn链接创建一个Statement对象,stmt调用executeUpdate(sql)方法来进行数据更新,进行相应异常处理,返回更新行数,类型为int。

executeUpdate()方法的关键代码如下:

publicintexecuteUpdate(Stringsql){

intcount=0;

try{

stmt=conn.createStatement();

count=stmt.executeUpdate(sql);

}

catch(SQLExceptione){

e.printStackTrace();

}

returncount;

}

3.2登录模块

登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性和安全性。

本节首先严格按照MVC架构模式为人事工资系统制作了一个简单的登录模块,根据用户类型不同,进入到不同操作页面,另外本节还详细介绍了主页面的设计。

按照MVC模式进行构建登录功能的开发,对该模块的文件构建说明如下

(1)Model层:

在nepu.syx.DAO包中添加业务Javabean,类名为UserDAO。

(2)Controller层:

在nepu.syx.Servlet中添加类UserServlet,该servlet主要负责参数的接收以及用户相关操作的流程控制,例如,用户登录,修改密码等功能。

(3)View层:

在WebRoot文件夹下添加名为index.jsp和image.jsp的JSP文件。

3.2.1View层构建

首先在MyEclipse的项目的WebRoot目录下index.jsp页面中编写表单代码,其中注意表单的action属性为该表单信息提交的服务端URL地址,method属性为提交方式。

在这里由于是按照MVC模式,将信息提交给Servlet,因此method必须post。

同时为避免复杂的URL的路径逻辑关系,统一使用绝对路径。

值得注意的是,验证码图片的src设置为”image.jsp”,onclick事件设置为”this.src=this.src+'?

'+Math.random();”页面设计如图3-1所示。

图3-1登录界面设计

3.2.2Model层构建

在业务Javabean类UserDAO中建立方法adminLoginCheck()和employeeLoginCheck(),该方法的主要功能是判断用户是否存在,并且密码是否正确,该方法需要接收由servlet传递过来2个参数,一个是用户账号id,另一个是密码psw,调用DBManger数据库底层操作类的executeQuery()方法实现sql查询,如果用户类型是管理员,sql语句如下:

Stringsql="select*fromtbAdminwhereid='"+id+"'andpsw='"+psw+"'";

如果用户类型是员工,sql语句如下:

Stringsql="select*fromtbEmployeewhereid='"+id+"'andpsw='"+psw+"'";

执行该sql语句后,将返回一个结果集ResultSet,判断该结果集中的记录的条数,并使用变量count记录,如果count的值大于0,则表示用户存在,登录成功,返回一个布尔类型的值true,否则返回false。

获取结果集后方法的核心代码如下:

ResultSetrs=db.excuteQuery(sql);

if(rs.next())returntrue;

returnfalse;

3.2.3Controller层构建

在UserServlet添加方法doLogin(),在该方法中完成登录的逻辑判断。

首先需要通过方法request.getParameter()来接收由index.jsp页面传递过来的参数id、psw、rand和checkNum,首先判断验证码是否正确,之后调用Model层的业务javaBeanUserDAO的登录方法实现登录判定,登录成功后需要注意将账号用session进行存储,这样,在用户多次请求和响应之后都可以由session中取出用户名展示或判断用户是否登录。

最后,在servlet中使用forward方法跳转到对应用户的首页面。

UserServelt中的doLogin()方法关键代码如下:

HttpSessionsession=request.getSession();

Stringid=request.getParameter("id");

Stringpsw=request.getParameter("psw");

StringuserType=request.getParameter("user");

StringcheckNum=request.getParameter("checkNum");

Stringrand=(String)session.getAttribute("rand");

UserDAOuDAO=newUserDAO();

booleant=false;

RequestDispatcherrd=null;

try{

if(checkNum.equals(rand)){

if(userType.equals("admin")){//用户是管理员

t=uDAO.adminLoginCheck(id,psw);//判断管理员信息是否正确

if(t)rd=request.getRequestDispatcher("admin/AdminIndex.jsp");

}

else{//用户是员工

t=uDAO.employeeLoginCheck(id,psw);//判断员工信息是否正确

rd=request.getRequestDispatcher("employee/EmployeeIndex.jsp");

}

session.setAttribute("userType",userType);

session.setAttribute("id",id);

if(t==false){//用户不存在

request.setAttribute("message","用户名或密码不正确!

请重新输入!

");

rd=request.getRequestDispatcher("index.jsp");

}

}

else{

request.setAttribute("message","验证码不正确!

请重新输入!

");

rd=request.getRequestDispatcher("index.jsp");

}

}catch(SQLExceptione){

e.printStackTrace();

}

rd.forward(request,response);

3.3系统首页面导航

人事工资的界面设计采用左侧导航结构,如图3-2所示,系统内几乎所有的jsp页面都具有大致类似的页面结构和风格,例如,相同的页面头部、左侧导航和页脚,因此,为了编码的方便和提高代码的可重用性,系统设计了一些公用的页面文件,主要包括AdminTop.jsp、AdminLeft.jsp、AdminEnd.jsp,其他的页面如后台管理的首页面AdminIndex.jsp则直接通过include指令标记将AdminEnd.jsp、AdminTop.jsp、AdminLeft.jsp包含到自身页面的相应位置即可,这样,编码工作将主要集中在左侧导航AdminLeft.jsp页面。

其他新增的功能页面的设计思路类似,在此不再赘述。

AdminIndex.jsp界面的浏览效果如图3-2所示:

图3-2后台管理首页面浏览效果

3.4员工信息管理

本节首先严格按照MVC架构模式为人事工资系统制作了一个简单的员工信息管理模块,该模块包括添加员工信息和浏览/修改/删除员工信息两个部分,根据管理员的不同选择,可以进入不同操作页面。

按照MVC模式进行构建登录功能的开发,对该模块的文件构建说明如下:

(1)Model层:

在nepu.syx.model包中添加文章类别的实体Javabean,类名为EmployeeModel和SalaryModel。

在nepu.jsp.dao包中添加业务Javabean,类名为EmployeeDAO和SalaryDAO。

其中EmployeeModel类包含12个属性,分别是账号、身份证号、姓名、性别、入公司时间、学历、毕业院校、专业、所属部门名称、职位编号、联系方式和备注,同时在该类中添加属性的set、get方法,EmployeeModel类的属性定义部分代码如下:

publicclassEmployeeModel{

Stringid="";

StringidNumber="";

Stringname="";

Stringsex="";

StringinDate="";

Stringdegree="";

Stringcollege="";

Stringmajor="";

StringdeptName="";

StringposId="";

Stringtel="";

Stringnote="";

……

}

其中SalaryModel类包含12个属性,分别是账号、身份证号、姓名、月份、基础工资、奖金、养老保险、失业险、医疗保险、住房公积金、个人所得税、罚金和工资总计,同时在该类中添加属性的set、get方法,SalaryModel类的属性定义部分代码如下:

publicclassSalaryModel{

publicStringid="";publicStringname="";

publicStringmonthTime="";pu

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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