基于WEB的办公自动化管理系统的设计与实现

发布于:2022-11-29 ⋅ 阅读:(239) ⋅ 点赞:(0)

目 录

第一章 绪论 5
1.1 办公自动化系统研究及应用 5
1.2 设计办公自动化的意义 6
第二章 相关技术介绍 8
2.1 JSP简介 8
2.2 C/S简介 8
2.3 Struts2简介 9
2.4 Hibernate简介 9
2.5 Java简介 9
第三章 系统需求分析 10
3.1 设计系统可行性研究 10
3.2 设计系统的需求分析 11
3.3 文件夹组织结构 13
3.4 办公自动化系统的数据库设计 14
第四章 系统设计 20
4.1 OA系统公共模块设计 20
4.2 OA系统登录模块设计 21
4.3 OA系统主界面设计 22
4.4 OA系统日常管理模块设计 23
4.5 OA系统考勤管理模块设计 24
4.6 OA系统通讯管理模块设计 26
第五章 系统功能实现 28
5.1 登录模块的实现过程 28
5.2 主界面的实现过程 31
5.3 会议管理的实现过程 32
5.4 公告管理的实现过程 36
5.5 外出登记的实现过程 37
5.6 上下班登记的实现过程 39
5.7 通讯管理模块的实现过程 40
第六章 系统测试 42
6.1 登录功能模块的测试 42
6.2 公共模块的测试 43
6.3 上下班登记的测试 43
6.4 系统的总体概述 44
参考文献 45
致 谢 46
第四章 系统设计
4.1 OA系统公共模块设计
在开发编程语言以来,所有参与的开发人员不停地在思考,怎样设计的项目更能满足时代的需要,解决当前环境下所产生的各类型问题。然而往往因为对这些问题的思考,他们才会考虑到怎样让自己的代码逻辑性清晰,尽量的减少处理问题的中间处理时间,让开发设计的项目处理问题效率高。在设计项目过程中,为了开发的时效性,使整体结构更清晰,代码的重复利用性。这时开发人员就想到了创建公共类,通过长期时间开发人员思想的积累,发现设计开发工作中需要这些公共类,可以在编写该项目中更简便的开发。在开发办公自动化管理系统过程中,公共类应用包括如Hibernate配置文件、Struts配置文件和Session 的管理类等。
4.1.1 开发系统编写的Hibernate配置文件
开发系统过程中,需要对浏览器端接收的数据存入到数据库,这时我们就应该编写连接数据库的配置文件,而这次代码编写过程中应用到的是Hibernate框架技术来操作页面数据存入数据库。在Hibernate配置文件中有连接数据库的信息,同时通过读取这些信息来连接到所用的数据库,从而达到代码来操作数据库的作用。然而应用Hibernate框架技术有两种连接数据的方式,一种是用XML配置文件来配置连接数据库的信息,而另一种是用Hibernate是默认的Java属性文件来配置连接数据库的信息。在开发办公自动化管理系统应用连接数据库的配置文件是Hibernate是默认的Java属性文件格式,其基本格式如下:
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.connection.driver_class=com.microsoft.sqlserver.jdbc.SQLServerDriver
hibernate.connection.url=jdbc:sqlserver://localhost:1433;databaseName=db_work
hibernate.connection.username=sa
hibernate.connection.password=123
hibernate.show_sql=true
hibernate.hbm2ddl.auto=none
4.1.2 字符串处理过滤器
在开发过程中,对于字符串的处理考虑从来没有中断过,往往对于这些设计系统过程中设计的字符串,这时就想到用字符处理类解决,在这次系统设计过程中创建了MyFilter类。
在完成该类的编写时实现了Filter 接口,然而实现的这个接口类中有三个方法,分别是init()、destory()、 doFilter()方法。Filter 接口中的init()方法只在设计过滤器的第一次初始化时执行,不过有时该接口被应用在简单的过滤器中,此时init()方法的内容可以为空;Filter 接口中的destroy()方法是在过滤器对象很久地停止服务时被调用,在很多情况下destroy()方法体也是为空的;Filter 接口中的doFilter()方法是过滤器中最重要的部分,该方法体是过滤字符串的代码编写处,并且在调用该方法时,可以激活代码中应用的过滤器。在项目设计中如果没有设计过滤器在Servlet 或 JSP 页面执行前,则 Serlet 或JSP 页面被执行。
字符在项目过程中会设计很多,然而有些通常不需字符串的一些空格或只需要字符的一部分,这是就可以用过滤器处理这些字符。这样不仅在编写代码过程方便了很多,同时也是设计者需要的方式,这样可以省略因为只要字符串的一些小改变,而使编写代码变得繁琐,因此字符串处理过滤在编写代码变得很重要。
4.2 OA系统登录模块设计
4.2.1 系统登功能概述
系统设计的登录模块,是对用户进入办公自动化管理系统的入口。用户在登录时,如果不输入信息,点击登录按钮将提示请输入用户名;如果用户填写了用户名文本框,不输入密码,点击登录,将提示请输入密码;用户名称,密码,验证码也是必需输入的。用户输入完信息后,系统会对用户名是否存在,密码和验证码是否输入正确的进行验证;在登录界面用户所有必须输入的信息正确后,用户才能进入系统;否则进不去系统,输入错误会跳转到登录失败界面。
4.2.2 登录模块技术分析
开发设计的登录模块,这个部分是进入系统的关键部分。同时这个模块设计也是系统安全程度的体现,如果这个模块设计比较简单的登录功能,那系统的安全性就不高了。因为在这种网络安全受威胁的环境下,很容易被现在隐藏的黑客攻陷,这样就会导致设计的办公自动化管理系统不安全。然而对于企业来说,系统的安全是极其重要的,因为企业内部信息之多,内部员工信息的保密性以及企业的一些商业机密。因此,设计该系统安全程度要求很高。
在完成该模块功能中,应用了MVC设计模式。因为这种模式逻辑清晰,开发中不同层次的体现明显,开发起来很方便。本文转载自http://www.biyezuopin.vip/onews.asp?id=14215在对于数据的存储,使用了Hibernate来完成对数据的添加,修改存入数据库的数据,查询和删除数据库中数据的功能。同时在前端设计中应用CSS技术对页面的布局美化,使用HTML负责设计这些页面排版。在浏览器请求时,项目中应用了Action类来负责控制转发路径。应用这样的设计,对于以后系统的维护也带来很大的方便。
设计登录模块是用来校验用户登录的合法性,判断他们是否可以登录该系统。在验证用户的登录过程中,首先对用户输入的用户名信息校验,判断是否属于该系统内的用户,在检查过程是通过HQL检索模式,该检索模式就是通过用户输入的信息查询数据库,看数据库中是否存在该用户名信息;对于用户输入的密码验证,也是通过HQL检索模式,查询数据库判断输入信息是否正确。如果与数据库中数据不匹配,则是输入错误,登录进不了系统。HQL检索模式与一些SQL语法非常的类似,HQL语言是面向对象的,因为他操作的是持久化的类名和类的属性,SQL语言是操作数据库中的表和表中的字段。在这个模块中采用的HQL检索模式,该技术完成对数据的检索。
在登录模块设计中,除了对用户名和密码的验证外,其中还设计了输入随机生成验证码的验证,因为多了这样一个环节,就可以减少不是系统用户暴力登录系统。而这种生成随机验证码的设计,应用了Math 类的 random()方法,他可以生产一个大于等于0.0 小于 1.0 的随机数,通过这个生成的随机数来获得对应数字图片。但是random()方法生产得到随机数是double 类型的。因此,应该对得到随机数转换成整型数,这样才满足与图片数据相对应,而在登录界面显示随机数字的图片验证码。

<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
	<html:base />
	<title>index.jsp</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" type="text/css" href="CSS/style.css">
	</head>
<body>
<script language="javascript">
 function mycheck(){
 if (form1.UserName.value=="")
 {alert("请输入用户名!");form1.UserName.focus();return;}
 if(form1.PWD.value=="")
 {alert("请输入密码!");form1.PWD.focus();return;}
 if(form1.yanzheng.value=="")
 {alert("请输入验证码!");form1.yanzheng.focus();return;}
 if(form1.yanzheng.value != form1.verifycode2.value)
 {alert("请输入正确的验证码!!");form1.yanzheng.focus();return;}
 form1.submit();
 }
 </script>
 <style>
   body {
	   margin-left: 0px;
	   background-image: url(Images/bhj.jpg);
  	}
   .style2 {color: #990000}
   .input2 {
 	 font-size: 12px;
 	 height: 20px;
	 border: 0px double #A8D0EE;
	 border-radius:3px;
	 color: #344898;
	 text-indent:4px;
  	}
   .submit1 {
	  border: 0px double #416C9C;
	  height: 20px;
	  width: 45px;
	  background-color: #F2F2F2;
	  font-size: 12px;
	  padding-top: 1px;
	  background-image: url(bt.gif);
	  cursor: hand;
	  border-radius:3px;
  	}
    .STYLE12 {font-family: Georgia, "Times New Roman", Times, serif}
    .STYLE13 {color: #316BD6; }
    .STYLE15 {color: #F2F2F2; font-size: 9pt; }

 </style>
<body>
	<br>
	<br>
	<br>
	<br>
	<table width="559" height="423" border="0" align="center"
		cellpadding="0" cellspacing="0"  background="Images/dfff.jpg">
	 <tr>
		<td width="559">
	<form name="form1" method="POST" action="findUserAction.do?method=finUser"><!-- 提交的action根据struts-config.xml文件对应method后为FindUserAction的方法名 -->
		<table width="410" height="198" border="0" align="right"
			cellpadding="0" cellspacing="0">
	<tr>
		<td height="2" colspan="2"></td>
	</tr>
    <tr>
		<td height="2" colspan="2" valign="top"></td>
	</tr>
	<tr>
	<br><br><br><br><br><br><br><br><br><br><br>
	    <td width="54" height="22" valign="bottom">
		<span class="STYLE15" >用户名:</span>
		</td>
		<td width="356" valign="bottom">
	       <input name="UserName"  type="text" class="input2" onKeyDown="if(event.keyCode==13){form1.PWD.focus();}"
									onMouseOver="this.style.background='#F0DAF3';"
									onMouseOut="this.style.background='#FFFFFF'"><!-- 设置用户名文本框,并设置了鼠标经过是样式 -->
		</td>
	</tr>
	<tr>
		<td height="4" colspan="2" valign="bottom"></td>
	</tr>
	<tr>
		<td height="31" colspan="2" valign="top" class="STYLE15">&nbsp;&nbsp;&nbsp;&nbsp;码:
			<input name="PWD" type="password"  class="input2" align="bottom"
									onKeyDown="if(event.keyCode==13){form1.yanzheng.focus();}"
									onMouseOver="this.style.background='#F0DAF3';"
									onMouseOut="this.style.background='#FFFFFF'"><!-- 设置密码文本框 -->
		</td>
	</tr>
	<tr>
	    <td height="31" colspan="2" valign="top" class="STYLE15" ondragstart="return false" onselectstart="return false">
								  验证码:
			<input name="yanzheng" type="text" class="input2"
						            onKeyDown="if(event.keyCode==13){form1.Submit.focus();}"
									size="8" align="bottom"
									onMouseOver="this.style.background='#F0DAF3';"
									onMouseOut="this.style.background='#FFFFFF'">
									<!-- 设置验证码文本框,并设置鼠标经过的样式 -->
									<%   
                                    int intmethod = (int)( (((Math.random())*11))-1); 
                                    int intmethod2 = (int)( (((Math.random())*11))-1); 
                                    int intmethod3 = (int)( (((Math.random())*11))-1); 
                                    int intmethod4 = (int)( (((Math.random())*11))-1); 
                                    String intsum = intmethod+""+intmethod2+intmethod3+intmethod4; 
                                    //将得到的随机数进行连接
                                   %>
          <input type="hidden" name="verifycode2" value="<%=intsum%>"> <!-- 设置隐藏域,用来做验证比较-->
				<span class="STYLE12"><font size="+3" color="#FF0000"><img src=Images/num/<%=intmethod %>.gif> <img src=Images/num/<%=intmethod2 %>.gif>
				    <!-- 将图片名称与得到的随机数相同的图片显示在页面上  -->
					<img src=Images/num/<%=intmethod3%>.gif> <img src=Images/num/<%=intmethod4 %>.gif></font></span>
			</td>
		</tr>
	<tr>
		<td colspan="2" valign="top">&nbsp; &nbsp; &nbsp; &nbsp;
			<input name="Submit" type="button" class="submit1" value="登录" onClick="mycheck()"> &nbsp;
			<input name="Submit2" type="reset" class="submit1" value="重置"> <!-- 设置提交与重置按钮-->
		</td>
  </tr>
    </table>
	</form>
   </td>
  </tr>
 </table>
</body>





在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到