OA平台项目编程


结果文档

1项目概述

  • 1.1项目背景与意义
OA信息管理系统是一个高度集成的客户信息处理系统,通过对现实应用场景中的需求分析与功能实现,并将各种功能进行整合,从而达到在一个系统中可以显示客户信息、索引客户信息提高工作效率、降低管理成本等目的。
企业级OA信息管理系统可以管理数据库中的所有客户信息,还需要提供各种方式的检索查询功能.通过该系统的管理,能够大大减少用户的工作任务,从而降低管理开销和成本。
一个完整的OA信息管理系统应该包括优美的前台和稳定可靠的后台,前台主要是通过JSP、html语言的编写,形成浏览器可转化的可视化界面;后台主要是处理前台所返回的数据,并将处理后的结果返回给前台或数据库,整个运行过程中需要Tomcat服务器的支持。

  • 2需求分析

2.1 需求简介

根据OA信息管理系统的整个流程,主要分为四个需求:分别是对员工信息、部门信息、个人信息以及用户权限的查询、插入、删除、修改等操作;而对于系统的界面,则要求简单、易读、易可操作;对于OA管理系统的页面响应速度,则要求在网络良好的情况下,应达到毫秒级别。

  • 2.2 功能需求

2.2.1 登录功能

登录功能主要是为了让管理员用户,通过登录界面进入OA主界面而设计的,当管理员输入正确的账号密码,则可跳转到OA管理界面;若账户密码错误,则跳转到错误界面。

2.2.2 员工信息管理

OA

2.2.3 部门信息管理

OA系统主界面中,操作用户可以点击部门信息选项,跳转到部门信息管理界面,此界面可以显示部门的名称、部门人数、以及操作方式,并且在部门信息管理界面中,应分别提供修改部门信息功能,可对部门的名称、部门人数进行修改;删除部门信息功能,可通过点击部门信息管理界面中的删除按钮,删除数据库中的此条部门信息。

2.2.4 个人信息管理

在OA系统主界面中,操作用户可以点击个人信息选项,跳转到个人信息管理界面,此界面可以显示当前用户的姓名、登录名、登录密码、年龄、性别、联系方式、用户权限以及修改操作按钮;在个人信息管理界面中,提供修改个人信息的功能,可对当前用户的姓名、登录名、登录密码、年龄、性别、联系方式、用户权限进行修改,并保存在数据库中。
2.2.5 用户权限管理
在OA系统主界面中,操作用户可以点击权限管理选项,跳转到用户权限管理界面,此界面可以显示当前用户的登录名、用户权限以及修改操作按钮;在用户权限管理界面中,提供权限修改的功能,可对当前用户的权限进行修改,并保存在数据库中。

  • 2.3 非功能需求
  • [ ]
2.3.1 响应时间 页面载入所需要的时间不得超过1秒。 在网络畅通时,页面访问所需时间不得超过500毫秒。 在网络畅通时,数据更新时间不超过100毫秒。
2.3.2 程序大小 由于此系统是部署在服务器中,故对其的大小不做要求;但对每个系统页面所要载入的数据量要求精简明了,杜绝过分复杂冗余。
2.3.3 数据库安全性 对于企业级OA系统,要对数据库的安全进行严格的防御,以防止网络非法用户通过Http、DDOS、CC攻击等,窃取或毁坏数据库中的用户数据,为企业造成不可估计的损失。

  • 3.软件编程

这里主要介绍员工信息管理的代码实现过程,其他功能由于与此功能极其类似,故不在赘述。

  • 3.1数据库连接
这里采用连接池技术,调用配置文件jdbc.properties,已完成数据库连接的功能。

  • 4.1.1连接工具类
    主要代码如下:
public class DBUtils {
private static String driver;
private static String url;
private static String username;
private static String password;
private static BasicDataSource dataSource;

static{
Properties prop=new Properties();
InputStream ip=DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
prop.load(ip);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//读取配置文件数据
driver=prop.getProperty("driver");
url=prop.getProperty("url");
username=prop.getProperty("username");
password=prop.getProperty("password");
//创建连接池
dataSource=new BasicDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setInitialSize(3);
dataSource.setMaxActive(3);
}
public static Connection getConn() throws SQLException {

return dataSource.getConnection();

}
public static void close(Connection conn,PreparedStatement state){
if(state!=null){
try {
state.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.setAutoCommit(true);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

  • 3.1.2 配置文件
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/ahpu
username=root
password=root

  • 3.2系统主界面
    主要代码如下:
<body>
<!-- 选择器:id class 标签 派生 -->
<div class ="box1" >
</div>
<div class ="box2">
<div class="gx">
<a>OA系统</a>
</div>

<div class ="bd1">
<a href="emplist" class="mn1" id=1>
员工信息
</a>
</div>

<div class ="bd2">
<a href="deptMain" class="mn2" id = 2>
部门信息
</a>
</div>

<div class ="bd3">
<a href="PMain" class="mn3">
个人信息
</a>
</div>

<div class ="bd4">
<a href="rMain" class="mn4" id = 1>
权限管理
</a>
</div>
</div>
</div>
</body>

  • 3.3员工管理功实现
  • 3.3.1 信息显示界面
    主要代码如下:
<body>
<div class="header">
<div class="wrapper clearfix">
<div class="navList">
<ul>
<li><a href="main.jsp">首页</a></li>
<li><a href="emplist">员工信息管理</a></li>
<li><a href="deptMain">部门信息管理</a></li>
<li><a href="PMain">个人信息管理</a></li>
<li><a href="rMain">权限管理</a></li>
</ul>
</div>
<div class="company">安徽工程大学OA管理</div>
</div>
</div>
<div class="page_">
<div class="top_ ">
<p class="h1">员工信息管理</p>
</div>
<form action="vagueEmp" method="post">
<table class="table">
<tr>
<td valign="middle" align="right">Name:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="VagueName" id="VagueName" placeholder="快速搜索"/></td>
<td ><input type="submit" value="搜索"/></td>
</tr>
</table>
</form>

<table class="table">
<tr class="table_header">
<td>姓名</td>
<td>年龄</td>
<td>工作</td>
<td>工资</td>
<td>部门</td>
<td>操作</td>
</tr>
<!-- 从请求信息中获取集合 -->
<% ArrayList<Employee> emps = (ArrayList<Employee>)(request.getAttribute("emps"));%>
<% int i = 0; %>
<% for( Employee e : emps){%>
<tr class="row<%=i%2+1 %>">
<td><%=e.getUname() %></td>
<td><%=e.getAge() %></td>
<td><%=e.getJob() %></td>
<td><%=e.getSalary() %></td>
<td><%=e.getDname() %></td>
<td>
<a href="delEmp?id=<%=e.getId() %>" onclick="return confirm('确认删除<%= e.getUname()%>?')">删除</a>
&nbsp;
<a href="updateEmp.jsp?id=<%=e.getId() %>">修改</a>
</td>
</tr>
<% i++; %>
<% }%>
</table>
<p>
<input type="button" class="button" value="添加" onclick="location='addEmp.jsp'"/>
</p>
</div>
</div>
<div id="footer">
<div id="footer_bg">ABC@126.com</div>
</div>
</div>
</body>

  • 3.3.2 信息添加界面
    主要代码:
<form action="load" method="post">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="middle" align="right">姓名:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="uname"/></td>
</tr>

<tr>
<td valign="middle" align="right">年龄:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="age"/></td>
</tr>

<tr>
<td valign="middle" align="right">工作:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="job"/></td>
</tr>

<tr>
<td valign="middle" align="right">工资:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="salary"/></td>
</tr>

<tr>
<td valign="middle" align="right">部门号:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="deptId"/></td>
</tr>
</table>
<p>
<input type="submit" class="button" value="提交"/>
</p>
</form>

  • 3.3.3 信息修改界面
    主要代码:

```javascript
<div class="page_">
<div class="top_ ">
<p class="h1">修改员工信息</p>
</div>
<div id="content">
<div id="content">
<p id="whereami">
</p>
<% EmployeeDao dao = new EmployeeDao();%>
<% Integer id = Integer.parseInt( request.getParameter("id") );%>
<% Employee e = dao.findById( id) ;%>
<form action="UpdateEmp" method="post">
<input type="text" class="inputStr" name="id" value="<%=id%>" style="visibility:hidden"/>
<table class="table">
<tr>
<td valign="middle" align="right">Name:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="uname" value="<%=e.getUname()%>"/></td>
</tr>
<tr>
<td valign="middle" align="right">Age:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="age" value="<%=e.getAge()%>"/></td>
</tr>
<tr>
<td valign="middle" align="right">Job:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="job" value="<%=e.getJob()%>"/></td>
</tr>
<tr>
<td valign="middle" align="right">Salary:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="salary" value="<%=e.getSalary()%>"/></td>
</tr>
<tr>
<td valign="middle" align="right">DeptId:</td>
<td valign="middle" align="left"><input type="text" class="inputStr" name="deptId" value="<%=e.getDeptId()%>"/></td>
</tr>
</table>
<br><br>
<input type="submit" value="确定修改"/>
</form>
</div>
</div>
<div id="footer">
<div id="footer_bg">
ABC@126.com
</div>
</div>
</div>

  • 3.3.4 相关实现方法
    (1)查询全部结果
public ArrayList<Employee> finAll(){
Connection conn=null;
ArrayList<Employee> emps=new ArrayList<Employee>();
Employee emp=null;
PreparedStatement pst=null;
String sql="select e.id,e.uname,e.salary,e.job,e.age,d.dname from employee e,dept d where e.deptid=d.id";

try {
conn=DBUtils.getConn();
pst = conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
while(rs.next()){
Integer id =rs.getInt("id");
String uname=rs.getString("uname");
Integer age =rs.getInt("age");
String job=rs.getString("job");
Integer salary =rs.getInt("salary");
String dname=rs.getString("dname");
emp=new Employee(id,uname,age,job,salary,dname);
emps.add(emp);
}
return emps;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(pst!=null){
DBUtils.close(null, pst);
}
if(conn!=null){
DBUtils.close(conn, null);
}
}
return null;
}

(2)通过Id查找

public Employee findById(Integer ids){
Connection conn=null;
PreparedStatement pst=null;
ResultSet rs=null;
Employee emp=null;
String sql="select e.id,e.uname,e.age,e.job,e.salary,d.dname from employee e join dept d on e.deptid=d.id where e.id=?";
try {
conn=DBUtils.getConn();
pst=conn.prepareStatement(sql);
pst.setInt(1, ids);
rs=pst.executeQuery();
while(rs.next()){
Integer id=rs.getInt("id");
String uname=rs.getString("uname");
Integer age=rs.getInt("age");
String job=rs.getString("job");
Integer salary=rs.getInt("salary");
String dname=rs.getString("dname");
emp=new Employee(id,uname,age,job,salary,dname);
}
return emp;

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(pst!=null){
DBUtils.close(null, pst);
}
if(conn!=null){
DBUtils.close(conn, null);
}
}
return null;
}

(3)修改员工信息

public boolean updateEmp(Employee emp){
Connection conn=null;
PreparedStatement pst=null;
String sql="update employee e,dept d set e.id=?,e.uname='?',e.age='?',e.job='?',e.salary=?,d.dname='?' where e.id=? and d.id=e.id";
try {
conn=DBUtils.getConn();
pst=conn.prepareStatement(sql);
pst.setInt(1, emp.getId());
pst.setString(2, emp.getUname());
pst.setInt(3, emp.getAge());
pst.setString(4,emp.getJob());
pst.setString(5, emp.getDname());
pst.setInt(6, emp.getId());
int count=pst.executeUpdate();
if(count>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(pst!=null){
DBUtils.close(null, pst);
}
if(conn!=null){
DBUtils.close(conn, null);
}
}
return false;

}

(4)添加信息

public void insertEmp(Employee emp){
Connection conn=null;
PreparedStatement pst=null;
String sql="insert into employee value(null,?,?,?,?,?,1)";
try {
conn=DBUtils.getConn();
pst=conn.prepareStatement(sql);
pst.setString(1, emp.getUname());
pst.setInt(2, emp.getAge());
pst.setString(3,emp.getJob());
pst.setInt(4,emp.getSalary());
pst.setInt(5, emp.getDeptid());
pst.executeUpdate();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if(pst!=null){
DBUtils.close(null, pst);
}
if(conn!=null){
DBUtils.close(conn, null);
}
}
}

(5)模糊搜索

public ArrayList<Employee> vagueFind(String name){
Connection conn=null;
PreparedStatement pst=null;
//结果集
ResultSet rs=null;
Employee emp=null;
ArrayList<Employee> emps=new ArrayList<Employee>();
String sql="select e.id,e.uname,e.age,e.job,e.salary,d.dname from employee e join dept d on e.deptid=d.id where e.uname like ?";
try {
conn=DBUtils.getConn();
pst=conn.prepareStatement(sql);
pst.setString(1, "%"+name+"%");
rs=pst.executeQuery();//存结果

while(rs.next()){
Integer id=rs.getInt("id");
String uname=rs.getString("uname");
Integer age =rs.getInt("age");
String job=rs.getString("job");
Integer salary =rs.getInt("salary");
String dname=rs.getString("dname");
emp=new Employee(id,uname,age,job,salary,dname);
emps.add(emp);
}
return emps;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(pst!=null){
DBUtils.close(null, pst);
}
if(conn!=null){
DBUtils.close(conn, null);
}
}
return null;
}

(6)删除员工信息

public boolean delEmp(Integer id){
Connection conn=null;
PreparedStatement pst=null;
String sql="delete from employee where id=?";
try {
conn=DBUtils.getConn();
pst=conn.prepareStatement(sql);
pst.setInt(1, id);
int count=pst.executeUpdate();

if(count>0){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(pst!=null){
DBUtils.close(null, pst);
}
if(conn!=null){
DBUtils.close(conn, null);
}
}
return false;
}

  • 3.3.5 相关servlet类
    (1)删除业务
public class DelEmpService extends HttpServlet{

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
{
Integer id=Integer.parseInt(req.getParameter("id"));
EmployeeDao dao=new EmployeeDao();
boolean flag=dao.delEmp(id);
if(flag){
try {
resp.sendRedirect("emplist");
} catch (IOException e) {

e.printStackTrace();
}//通过web转发到emplist.jsp
}else{
// TODO Auto-generated catch block
}
}

}

(2)显示业务

public class EmpListService extends HttpServlet{

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");//设置编码字符集
EmployeeDao dao=new EmployeeDao();//初始化EmployeeDao类
ArrayList<Employee> emps=dao.finAll();//拿数据
req.setAttribute("emps", emps);//绑定数据
req.getRequestDispatcher("/emplist.jsp").forward(req, resp);//获得转发器并转发
}
}

(3)通过Id查询业务

protected void service(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException
{
req.setCharacterEncoding("utf-8");//设置编码字符集
Integer id=Integer.parseInt(req.getParameter("id"));

//System.out.println("******"+id);
EmployeeDao dao=new EmployeeDao();
Employee emp=null;
if(id!=null){
emp=dao.findById(id);
req.setAttribute("emp", emp);
try {
req.getRequestDispatcher("/updateEmp.jsp").forward(req, resp);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

(4)添加业务

protected void service(HttpServletRequest req, HttpServletResponse resp)
{
resp.setCharacterEncoding("utf-8");
String uname=req.getParameter("uname");
Integer age=Integer.parseInt(req.getParameter("age"));
String job=req.getParameter("job");
Integer salary=Integer.parseInt(req.getParameter("salary"));
Integer deptid=Integer.parseInt(req.getParameter("deptid"));
Employee emp=new Employee(uname, age, job, salary, deptid);
EmployeeDao dao=new EmployeeDao();
dao.insertEmp(emp);
try {
resp.sendRedirect("emplist");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

(5)模糊查询业务

protected void service(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException{
req.setCharacterEncoding("utf-8");
String uname=req.getParameter("VagueName");
//System.out.println(uname);
EmployeeDao dao=new EmployeeDao();
ArrayList<Employee> emps=dao.vagueFind(uname);
req.setAttribute("emps", emps);
try {
req.getRequestDispatcher("/emplist.jsp").forward(req, resp);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

(6)修改业务

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
//System.out.println("*******************************");
int id =Integer.parseInt(req.getParameter("id"));
String uname=req.getParameter("uname");
String job =req.getParameter("job");
String dname=req.getParameter("dept");
int salary =Integer.parseInt(req.getParameter("salary"));
int age=Integer.parseInt(req.getParameter("age"));
Employee emp =new Employee(id, uname, age, job, salary, dname);
ArrayList<Employee> emps= null;
EmployeeDao dao=new EmployeeDao();
dao.modify(emp);

emps=dao.findAll();
req.setAttribute("emp", emps);
req.getRequestDispatcher("emplist").forward(req, resp);
}

  • 3.4 服务配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Course6_2</display-name>


<servlet>
<servlet-name>login</servlet-name>
<servlet-class>cn.ahpu.service.LoginService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>emplist</servlet-name>
<servlet-class>cn.ahpu.service.EmpListService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>emplist</servlet-name>
<url-pattern>/emplist</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>del</servlet-name>
<servlet-class>cn.ahpu.service.DelEmpService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>del</servlet-name>
<url-pattern>/delEmp</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>load</servlet-name>
<servlet-class>cn.ahpu.service.LoadService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>load</servlet-name>
<url-pattern>/load</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>vague</servlet-name>
<servlet-class>cn.ahpu.service.VagueEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>vague</servlet-name>
<url-pattern>/vagueEmp</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>UpdateEmp</servlet-name>
<servlet-class>cn.ahpu.service.updateEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpdateEmp</servlet-name>
<url-pattern>/UpdateEmp</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>rMain</servlet-name>
<servlet-class>cn.ahpu.service.RMain</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>rMain</servlet-name>
<url-pattern>/rMain</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>alterR</servlet-name>
<servlet-class>cn.ahpu.service.alterR</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>alterR</servlet-name>
<url-pattern>/alterR</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>modify</servlet-name>
<servlet-class>cn.ahpu.service.ModifyService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>modify</servlet-name>
<url-pattern>/modify</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>PMain</servlet-name>
<servlet-class>cn.ahpu.service.PersonInfoService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PMain</servlet-name>
<url-pattern>/PMain</url-pattern>
</servlet-mapping>


<servlet>
<servlet-name>doAlterP</servlet-name>
<servlet-class>cn.ahpu.service.DoAlterPService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>doAlterP</servlet-name>
<url-pattern>/doAlterP</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>findPId</servlet-name>
<servlet-class>cn.ahpu.service.FindPIdService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>findPId</servlet-name>
<url-pattern>/findPId</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>deptMain</servlet-name>
<servlet-class>cn.ahpu.service.DeptMainService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>deptMain</servlet-name>
<url-pattern>/deptMain</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>findDept</servlet-name>
<servlet-class>cn.ahpu.service.FindDeptService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>findDept</servlet-name>
<url-pattern>/findDept</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>modify1</servlet-name>
<servlet-class>cn.ahpu.service.UpdateDeptService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>modify1</servlet-name>
<url-pattern>/modify1</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>load1</servlet-name>
<servlet-class>cn.ahpu.service.LoadDeptService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>load1</servlet-name>
<url-pattern>/load1</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>dept</servlet-name>
<servlet-class>cn.ahpu.service.DeptMainService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dept</servlet-name>
<url-pattern>/dept</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>delDept</servlet-name>
<servlet-class>cn.ahpu.service.DelDeptService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>delDept</servlet-name>
<url-pattern>/delDept</url-pattern>
</servlet-mapping>

</web-app>

  • 4系统测试
  • 4.1登录测试
    运行截图:

OA平台项目编程_信息管理

  • 4.2员工信息管理测试

OA平台项目编程_信息管理_02

OA平台项目编程_sql_03

  • 4.3 部门信息管理测试

OA平台项目编程_sql_04

OA平台项目编程_mysql_05

OA平台项目编程_sql_06

OA平台项目编程_jsp_07

OA平台项目编程_sql_08

  • 4.4 个人信息管理测试
    OA平台项目编程_sql_09
    OA平台项目编程_jsp_10
    OA平台项目编程_mysql_11
    OA平台项目编程_java_12
    OA平台项目编程_jsp_13
  • 4.4 个人信息管理测试

OA平台项目编程_java_14

OA平台项目编程_mysql_15

  • 4.5权限管理测试
    OA平台项目编程_sql_16
    OA平台项目编程_mysql_17