办公自动化管理系统范例.docx
《办公自动化管理系统范例.docx》由会员分享,可在线阅读,更多相关《办公自动化管理系统范例.docx(45页珍藏版)》请在冰豆网上搜索。
![办公自动化管理系统范例.docx](https://file1.bdocx.com/fileroot1/2023-1/3/9e41c1f7-55a4-4b35-9392-ec48ebd4b89b/9e41c1f7-55a4-4b35-9392-ec48ebd4b89b1.gif)
办公自动化管理系统范例
办公自动化管理系统
学院
专业
班级
学号
姓名
指导教师
教师职称
年
月
日
摘要
【摘要】
办公自动化系统的开发,使得上网查收发邮件、收发文件、查看公司公文公告变得极为方便,因为系统提供了所有办公所需要的基本功能。
并且简单易操作,无论单位内部有多少个部门,总部外有多少个分支机构,通过本系统可以实现无地域办公,操作简单,稳定安全,可以称为网络办公理念的一次变革。
【关键词】JSP+JavaBean+Servlet
目录
摘要1
目录2
0引言1
1系统分析2
1.1需求分析2
1.2可行性分析2
2总体设计2
2.1项目规划2
2.2系统功能结构图2
3系统设计3
3.1设计目标3
3.2开发及运行环境4
3.3数据库设计4
4JavaBean的设计5
4.1数据库操作的JavaBean的编写5
4.2分页显示的JavaBean的编写10
4.3分页解决方案JavaBean的编写13
5视图层的设计与实现17
5.1公告管理视图层的设计17
5.2公文管理视图层的设计20
6控制层的设计与实现24
6.1公告管理控制层的设计25
6.2公文管理控制层的设计27
附录一参考文献29
附录二数据表34
附录三文件架构图37
0引言
网络办公自动化管理系统(OA),是伴随着Internet技术在各个领域的广泛应用,和各行各业企业信息化建设步伐的加快应运而生。
当代社会已经进入信息时代,信息技术革命使社会的各个领域都发生了翻天覆地的变化,每个企业都必须紧跟时代的步伐,加强企业竞争力和提升现代化企业的管理能力,以适应整个社会的发展变化。
企业对信息需求的增长,使计算机、网络技术已经渗透到企业的日常工作中。
传统的企业内信息的交流方式早已不能满足企业对大量信息的快速传递与处理的需求,网络办公自动化管理系统的应用满足了企业的办公网络化、自动化的管理需求,提高了企业内部的管理水平,进而全面提升了企业在市场竟争中的综合竞争力。
1系统分析
1.1需求分析
通过相关调查,要求网站具有以下功能;
❑❑ 员工通过前台发布和查看公告、公文信息。
❑❑ 设置员工信息的添加、浏览、查找功能。
❑❑ 通过前台可以查看部门和职位信息。
❑❑ 通过前台实现收发信息的功能
❑❑ 查看优秀员工信息和提交提优秀员工姓名。
❑❑ 通过后台对部门信息、职位信息进行管理。
❑❑ 管理公告信息,查看公文内容。
❑❑ 设置后台员工信息的管理模块。
❑❑ 通过后台管理员工前台登录账号
❑❑ 通过后台实现对短信信息进行查看、删除等管理。
❑❑ 通过后台实现查看、删除在线员工信息功能。
❑❑ 后台对员工在职状态信息进行管理。
1.2可行性分析
通过办公自动化管理系统对企业日常办公进行管理,满足了企业日常办公管理各方面的的需求,实现了企业员工之间消息的发送与接收功能,大大的方便了企业内部人员沟通。
网站提供的前后台的公告与公文信息的管理方便员工及时的了解公司的动态。
其他功能模块的设置使企业的日常管理步入了科学系统管理的轨道上。
2总体设计
2.1项目规划
办公自动化管理系统是一个功能完备的网站,由前台管理和后台管理两大部分组成。
❑❑ 前台管理模块
前台管理模块要求实现:
公告管理、公文管理、员工管理、部门信息、收发信息和优秀员工管理6部分。
❑❑ 后台管理模块
后台管理模块要求实现:
部门管理、职位管理、公告管理、公文管理、员工管理、账号管理、短信息管理、在线管理和员工状态管理9部分。
2.2系统功能结构图
办公自动化管理系统前台功能结构如图1所示。
图1办公自动化管理系统前台功能结构图
办公自动化管理系统后台功能结构如图2所示。
图2办公自动化管理系统后台功能结构图
3系统设计
3.1设计目标
本系统是根据企业日常办公的需求进行开发设计的,主要实现如下目标:
❑❑ 实现前台的公告、公文管理。
❑❑ 实现前台员工信息管理功能。
❑❑ 通过前台查看职位信息、部门信息。
❑❑ 实现优秀员工信息的查看与提名功能。
❑❑ 实现前台员工之间的短消息的发送与接收。
❑❑ 通过后台查看与删除公告信息、查看公文信息的功能。
❑❑ 后台管理员对员工信息、职位信息与部门信息的管理。
❑❑ 后台管理员对短消息的查看与删除功能。
❑❑ 后台管理员管理员工状态信息。
❑❑ 后台实现对在线信息的查看与删除功能。
❑❑ 后台管理员工登录账号信息。
❑❑ 设置前后台的系统退出功能。
3.2开发及运行环境
硬件平台:
❑❑ CPU:
P41.8GHz。
❑❑ 内存:
256MB以上。
软件平台:
❑❑ 操作系统:
WindowsXP/Windows2000。
❑❑ 数据库:
SQLServer2000。
❑❑ 开发工具包:
JDKVersion1.4.2。
❑❑ JSP服务器:
Tomcat。
❑❑ 浏览器:
IE5.0,推荐使用IE6.0。
❑❑ 分辨率:
最佳效果1024×768像素。
3.3数据库设计
本系统数据库采用SQLServer2000数据库,系统数据库名称为OA_Data。
数据库OA_Data中包含9张表。
关于数据库中的数据表请参见附录B
4JavaBean的设计
在JSP+JavaBean+Servlet模式中,一般使用Servlet接收Http请求,然后执行连接数据库的操作,操作完成后,如果需要,将操作的结果保存在Http请求中,然后把视图派发到用于显示的JSP页。
在这小节中,首先来介绍一下本系统中所使用的几个重要的JavaBean。
4.1数据库操作的JavaBean的编写
本系统采用的是数据库连接池技术来实现对数据库的连接。
该类的主要功能是实现对数据库的连接操作和对数据库中数据的一些简单操作。
在类中的每个方法都有详细的注释。
全部代码如下:
/*************************************oa/sys/Db.java*****************************************/
packageoa.sys;
importjava.sql.*;
importjavax.sql.*;
importjavax.naming.*;
/**
****************************************************
*类名称:
Db
*类功能:
数据库操作
****************************************************
*/
publicclassDb{
privateConnectioncon;
privateStatementstmt;
privateResultSetrs;
privatePreparedStatementpstmt;
publicstaticinterror=0;
/***************************************************
*函数名称:
getCon()
*函数功能:
获取数据库连接
*返回值:
无
*参数说明:
无
****************************************************/
publicstaticsynchronizedConnectiongetCon()throwsException{
Contextctx;
DataSourceds;
try{
ctx=newInitialContext();
ds=(DataSource)ctx.lookup("java:
comp/env/jdbc/OA");
System.err.println();
System.err.println("数据连接+"+(++error));
returnds.getConnection();
}catch(SQLExceptione){
System.out.print(e);
throwe;
}
catch(NamingExceptione){
System.out.print(e);
throwe;
}
}
/***************************************************
*函数名称:
getStmtread()
*函数功能:
获取数据库集合
*返回值:
Statement
*stmt:
返回数据库集合只用于SELECT语句
*参数说明:
无
****************************************************/
publicStatementgetStmtread(){
try{
con=getCon();
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
}catch(Exceptione){
System.out.println("getStmtread");
System.out.println(e.getMessage());
}
returnstmt;
}
/***************************************************
*函数名称:
getRowCount()
*函数功能:
返回表的行数
*返回值:
intcount
*count>0返回的行数
*count=-1表名不存在或没有记录
*参数说明:
Stringsql
*sql数据库中的表名
****************************************************/
publicintgetRowCount(Stringsql){
intcount=0;;
try{
stmt=this.getStmtread();
rs=stmt.executeQuery("SELECTCOUNT(*)FROM"+sql);
rs.getMetaData();
if(rs.next()){
count=rs.getInt
(1);
}else{
count=-1;
}
}catch(Exceptione){
System.out.println("getRowCount");
System.out.println(e.getMessage());
count=-2;
}finally{
this.close();
}
returncount;
}
/***************************************************
4.2分页显示的JavaBean的编写
在进行数据库查询操作时,往往会遇到数据量很大的情况,如果将所有数据在一个页面中显示是不现实的,因为这会给用户带来操作上的不方便,这是不愿意看到的,因此有必要将分页显示封装在一个类中,以提高这段代码的重用性。
本系统用做分页显示的代码如下:
/**************************************oa/sys/Contact.java*************************************/
packageoa.sys;
importoa.data.*;
importjava.util.*;
importjava.sql.*;
/**
****************************************************
*类名称:
#Contact
*类功能:
数据库分页操作
****************************************************
publicclassContact{
privateStringstate;//员工状态
privateStringjob;//员工职位
privateStringdep;//员工所在部门
privateResultSetrs1;
privateStatementstmt1;
privateintstateid;//员工状态序号
privateStringaddr;//员工住址
privateStringtel;//电话
privateintjobid;//员工职位序号
privateintdeid;//员工所在部门序号
privateStringpost;//员工职称
privateStringlearn;//学历
privateStringbirthday;//出生日期
privateintsex;//性别
privateStringname;//姓名
privateintid;//员工ID号
privateStatementstmt=null;
privateResultSetrs=null;
privateDbdb=newDb();
Collectioncoll;
/***************************************************
*函数名称:
Contact()
*函数功能:
构造函数初始化数据库连接、数据类型
*返回值:
无
*参数说明:
无
****************************************************/
publicContact()throwsException{
Calendardd;
stmt=db.getStmtread();
coll=newArrayList();
}
/***************************************************
*函数名称:
getCount()
*函数功能:
获取数据库表格行数
*返回值:
int行数
*参数说明:
Stringsql表格名称
****************************************************/
publicintgetCount()throwsException{
intret=0;
Stringsql="SELECTcount(*)FROMeminfo";
rs=stmt.executeQuery(sql);
if(rs.next()){
ret=rs.getInt
(1);
}
returnret;
}
/***************************************************
*函数名称:
getCount()
*函数功能:
获取数据库表格行数
*返回值:
int行数
*参数说明:
Stringsql表格名称
****************************************************/
publicPagelistData(Stringpage)throwsException{
try{
Pagepages=newPage(this);
intpageNum=Integer.parseInt(page);
stmt=db.getStmtread();
Strstr=newStr();
Stringsql="SELECTTOP"+pageNum*pages.rowsPerPage+"*FROMeminfo";
rs=stmt.executeQuery(sql);
inti=0;
while(rs.next()){
if(i>(pageNum-1)*pages.rowsPerPage-1){
id=rs.getInt
(1);
name=rs.getString
(2);
sex=rs.getInt(3);
birthday=rs.getString(4);
learn=rs.getString(5);
post=rs.getString(6);
deid=rs.getInt(7);
jobid=rs.getInt(8);
tel=rs.getString(9);
addr=rs.getString(10);
stateid=rs.getInt(11);
stmt1=db.getStmtread();
rs1=stmt1.executeQuery("SELECTNameFROMdepartmentWHEREdepartmentid="+deid);
if(rs1.next()){
dep=rs1.getString
(1);
rs1.close();
stmt1.close();
db.close();
}
stmt1=db.getStmtread();
rs1=stmt1.executeQuery("SELECTNameFROMjobWHEREjobid="+jobid);
if(rs1.next()){
job=rs1.getString
(1);
rs1.close();
stmt1.close();
db.close();
}
stmt1=db.getStmtread();
rs1=stmt1.executeQuery("SELECTNameFROMemstateWHEREstateid="+stateid);
if(rs1.next()){
state=rs1.getString
(1);
rs1.close();
stmt1.close();
db.close();
}
//字符转换
name=str.outStr(name);
birthday=birthday.substring(0,10);
dep=str.outStr(dep);
job=str.outStr(job);
state=str.outStr(state);
learn=str.outStr(learn);
post=str.outStr(post);
tel=str.outStr(tel);
addr=str.outStr(addr);
Eminfoeminfo=newEminfo();
eminfo.setId(id);
eminfo.setName(name);
eminfo.setSex(sex);
eminfo.setBirthday(birthday);
eminfo.setLearn(learn);
eminfo.setPost(post);
eminfo.setDepartment(dep);
eminfo.setJob(job);
eminfo.setTel(tel);
eminfo.setAddr(addr);
eminfo.setState(state);
coll.add(eminfo);
}//if
i++;
}//while
db.close();
pages.curPage=pageNum;
pages.coll=coll;
returnpages;
}catch(Exceptione){
e.printStackTrace();
throwe;
}
}
publicCollectiongetResult()throwsException{
returncoll;
}
}
4.2分页解决方案JavaBean的编写
数据信息分页显示的JavaBean编写如下:
/************************************oa/sys/Page.java******************************************/
packageoa.sys;
importjava.util.*;
/**
****************************************************
*类名称:
#Page
*类功能:
分页解决方案
****************************************************
*/
publicclassPage{
publicin