目 录
摘 要 I
ABSTRACT II
目 录 IV
第1章 绪论 1
1.1 课题背景 1
1.1.1 办公自动化概述 1
1.1.2 中小企业办公模式的现状 2
1.2 研究意义 3
1.3 设计技术及开发环境 5
1.3.1 设计技术 5
1.3.2 开发环境 7
第2章 可行性分析 9
2.1 组织和管理可行性 9
2.2 经济可行性 9
2.3 技术可行性 9
第3章 需求分析 11
3.1 现行业务分析 11
3.1.1 业务流程 11
3.1.2 功能分析 11
3.2 系统建模 13
3.2.1 用户身份验证用例图 13
3.2.2 个人通讯录用例图 13
3.2.3 职工信息管理用例图 14
3.2.4 日程安排用例图 14
3.2.5 日志管理用例图 15
3.2.6 短消息管理用例图 15
3.2.7 公告管理用例图 16
3.2.8 文件管理用例图 16
3.2.9 会议管理用例图 17
第4章 系统设计 18
4.1 系统设计 18
4.1.1 用户身份验证模块流程图 19
4.1.2 个人通讯录模块流程图 19
4.1.3 职工信息管理模块流程图 21
4.1.4 日程安排模块流程图 22
4.1.5 工作日志模块流程图 23
4.1.6 短消息管理模块流程图 24
4.1.7 文件管理模块流程图 25
4.1.8 公告管理模块流程图 26
4.1.9 会议管理模块流程图 27
4.2 数据库设计 29
4.2.1 数据库概念设计 29
4.2.2 数据库逻辑设计 31
第5章 系统实现 35
5.1 系统架构 35
5.1.1 系统架构图 35
5.1.2 程序结构图 36
5.2 持久层Hibernate实现 37
5.2.1 创建并配置Hibernate映射文件 37
5.2.2 开发并配置Hibernate DAO层 38
5.3 控制层Struts实现 38
5.3.1 开发Struts核心流程代码 38
5.3.2 开发JSP页面原型 40
5.3.3 增加表单校验功能 40
5.3.4 调用DAO组件操作数据库 41
5.4 业务层Spring实现 41
5.4.1 数据源配置 42
5.4.2 配置SessionFactory 43
5.4.3 配置事务 43
5.4.4 配置DAO组件 43
5.4.5 配置DAO事务 43
第6章 系统测试 44
6.1 测试计划 44
6.2 测试用例 44
6.2.1 对身份验证功能进行测试 44
6.2.2 对职工信息管理功能进行测试 45
6.3 测试结果 46
第7章 系统开发总结 47
结束语 48
参考文献 49
致 谢 50
附 录 51
A 主要源程序 51
B 用户手册 55
B.1 系统功能简介 55
B.2 系统的支持平台 56
B.3 安装说明 56
B.4 使用说明 59
B.5 系统维护方法 72
第2章 可行性分析
可行性是系统开发的一项关键步骤,它是通过对整个系统的需求,技术及开发方法,以及开发人员,所需资金的综合考虑以评估对于该系统的开发是否符合实际。可行性分析包括:组织和管理上的可行性、技术可行性、经济可行性。
2.1 组织和管理可行性
基于中小型企业的办公自动化系统采用模块化开发方法,将整个系统划分为多个功能模块,并根据开发小组成员的实际能力分配相应的模块,这种将系统功能平行划分的方法有助于系统开发的组织和管理。
2.2 经济可行性
通过网站对企业内部信息进行全面的自动化的管理,大大提高了企业的办公效率。通过系统对企业生产经营过程中的数据进行全面的管理和统计,避免人为处理各类数据时所产生的各种问题,提高了企业的经济效益,为企业经营决策提供了大量的、权威的数据,使企业的管理进行到科学化、系统化的范筹。
硬件方面主要是计算机,我们的实际情况可以满足开发任务,所需资料书籍可以到图书馆翻阅或者个人购买,因此整个系统的所需投资符合我们的支付状况,经济可行性良好。
2.3 技术可行性
基于中小型企业的办公自动化系统的开发采用了先进成熟并且符合实际应用的开发方法,广泛应用于网站开发的网页开发工具Dream weaver,MyEclipse,动态网页开发技术JSP和MVC架构技术Struts、Spring和Hibernate,功能强大的数据库管理工具MySQL,结合自己的实际开发能力,可以开发出较为完善的办公自动化系统。
应解决的主要问题及技术要求
(1)收集系统开发所使用的足够的信息。
(2)按实际应用的可行性划分模块,确定模块功能。
(3)建立完善的数据库支持环境。
(4)使用JSP语言实现前台页面视图,使用Struts、Spring和Hibernate实现MVC架构,并实现与数据库之间的各项操作。
(5)各模块功能的协调及信息的沟通。
第3章 需求分析
3.1 现行业务分析
3.1.1 业务流程
该系统的主要流程是系统管理员或普通用户通过登录模块进入系统主页,之后可以选择相应的功能对自己的信息进行处理。业务流程图如下:
图3-1 中小办公自动化系统业务流程图
3.1.2 功能分析
系统的主要功能概述如下:
(1) 用户身份验证模块
本系统功能的开发与设计,是完全针对公司内部进行办公管理以及为各部门员工提供便捷的电子化交互平台搭建的。用户身份验证模块是公司办公自动化管理系统重要组成部分之一,它主要功能是在系统用户进入系统时的身份验证以及在不同页面浏览时的身份验证,以防止公司重要资料的泄露。
(2) 职工信息管理模块
本模块主要是为了实现本系统所注册员工的信息的管理,包括增加、删除以及修改,并且本模块只能被系统管理员所使用,其他普通用户没有权限使用。
(3) 个人通讯录模块
该模块用作每一个登录系统的用户来维护自己的通讯录,通讯录中需要保存的信息有姓名、性别、手机、E-mail地址、QQ号码、公司、家庭住址、邮编。通知本模块个人用户可以自由维护个人的基本信息以及自由添加联系人信息;可以方便查询联系从,可以修改或删除某一个联系人。
(4) 日程安排模块
该模块用作当前的登录用户添加、修改、删除和查看自己的日程安排列表。本模块中应该保存的信息有:用户名、年份、月份、日期、安排内容。
(5) 工作日志模块
该模块用作当前的登录用户添加、修改、删除和查看自己的工作日志列表。本模块中应该保存的信息有:用户名、年份、月份、日期、日志标题、日志内容、记录时间。
(6) 短消息管理模块
该模块用作当前的登录用户给系统内的其他用户发送短消息,并可以查看其他用户发来的消息。本模块中应该保存的信息有:接收者、发送者、消息内容、发送时间。
(7) 公告管理模块
该模块用作用户发送通知,大家都可以查看,只有发送通知的用户才有权修改、删除该通知。本模块中应该保存的信息有:公告填写人、公告标题、公告内容、公告时间。
(8) 会议管理模块
该模块用作用户发送会议通知,供所有的用户查看,且只有系统管理员才有权修改、删除该通知。
(9) 文件管理模块
本模块主要是对系统注册用户所上传文件的管理,可以查看所上传文件的相关信息,并且可以下载,而对所上传文件的删除则只有系统管理员才有权限。
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
Random rand1=new Random();
String[] sourcestr1={"明","天","好","会","更"};
String str1="";
String img1="";
int intrand1=0;
for(int i=0;i<4;i++){
intrand1=Math.abs(rand1.nextInt(5));
str1=str1+sourcestr1[intrand1].trim();
img1=img1+"<img src='images/checkcode/"+intrand1+".gif' width='19' height='20'>";
}
session.setAttribute("checkcode",str1);
%>
<%String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title><bean:message key="login.page.title" /></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="styles.css">
</head>
<body style="margin-top:100">
<center>
<form name="form1" action="login.do" method="post" >
<table width="502" height="350" border="0" align="center" background="images/login.gif">
<tr valign="middle">
<td height="70" colspan="2"> </td>
</tr>
<tr>
<td valign="middle"> </td>
<td height="100" colspan="1" align="left" valign="middle"></td>
</tr>
<tr>
<td width="39%" height="20" align="right" valign="middle"><bean:message key="login.page.username"/></td>
<td width="61%" height="20" align="left" valign="middle">
<logic:present name="loginFormBean">
<html:text property="username" name="loginFormBean" style="border:1 solid"/>
</logic:present>
<logic:notPresent name="loginFormBean">
<input type="text" name="username" style="border:1 solid">
</logic:notPresent>
<html:errors property="username"/></td>
</tr>
<tr>
<td width="39%" height="20" align="right" valign="middle">
<bean:message key="login.page.password"/></td>
<td width="61%" height="20" align="left" valign="middle">
<logic:present name="loginFormBean">
<html:password property="password" name="loginFormBean" style="border:1 solid"/>
</logic:present>
<logic:notPresent name="loginFormBean">
<input name="password" type="password" style="border:1 solid">
</logic:notPresent>
<html:errors property="password"/></td>
</tr>
<tr>
<td width="39%" height="20" align="right" valign="middle">
<bean:message key="login.page.valcode"/></td>
<td width="61%" height="20" align="left" valign="middle">
<logic:present name="loginFormBean">
<html:text property="valcode" name="loginFormBean" style="border:1 solid"/>
</logic:present>
<logic:notPresent name="loginFormBean">
<input name="valcode" type="text" style="border:1 solid">
</logic:notPresent>
<html:errors property="valcode"/> </td>
</tr>
<tr>
<td width="39%" height="20" valign="middle"> </td>
<td width="61%" height="20" valign="middle">
<%=img1%> </td>
</tr>
<tr align="center">
<td width="39%" height="20" valign="top"> </td>
<td height="40" colspan="2" align="left" valign="top">
<input name="submit" type="submit"
value='<bean:message key="login.page.login" />'>
<a href="register.do?method=init" >
<bean:message key="login.page.register"/></a></td>
</tr>
</table>
<html:errors property="org.apache.struts.action.GLOBAL_MESSAGE" />
</form>
</center>
</body>
</html>