办公自动化系统研究与实现 - 图文

更新时间:2024-04-23 00:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

XXXX大学

毕业论文(设计)

学院: 计算机科学学院

专业: 计算机科学与技术 年级:

题目: 办公自动化系统研究与实现

学生姓名: 学号:

指导教师姓名: 职称:

2010年 3 月 30 日

XXXX大学本科毕业论文(设计)原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。

作者签名: 年 月 日

1

目 录

摘要: ...................................................................... 3 引言: ...................................................................... 4 1 本文的设计思想 ............................................................ 4 2 系统设计 .................................................................. 4

2.1 系统规划 ............................................................ 4 2.2 系统功能结构 ........................................................ 5 2.3 开发及运行环境 ...................................................... 5 2.4 系统实现概览 ........................................................ 5

2.4.1 员工操作 ...................................................... 5 2.4.2 管理员操作界面 ................................................ 6

3 本系统所用到的关键技术 .................................................... 7

3.1 MVC设计模式 ........................................................ 7 3.2 本文中所用的设计模式 ................................................ 8 3.3 数据库连接池 ........................................................ 8 3.4 本系统数据库连接池的配置 ............................................ 9 3.5 关于JavaBean ...................................................... 10 4 公文管理模块的实现 ....................................................... 10

4.1 概述 ............................................................... 10 4.2 公文管理模块中数据库的使用 ......................................... 11

4.2.1 本模块调用数据库的过程 ....................................... 11 4.2.2 负责数据库调用的JavaBean .................................... 11 4.3 公文管理视图层的设计 ............................................... 13 4.4 公文管理控制层的设计 ............................................... 17

4.4.1 发送公文 ..................................................... 17 4.4.2 接收公文 ..................................................... 20

致 谢 ...................................................................... 21 参考文献.................................................................... 22 附录A 数据表 .............................................................. 23 附录B 文件架构图 .......................................................... 27

2

办公自动化系统研究与实现

摘要:

本文首先阐述了一个办公自动化系统的设计思想,并分析其系统功能结构,进而,利用目前流行的JSP技术和数据库连接池技术,并运用MVC的设计思想,实现了办公自动化系统的主要功能,简化了软件的开发,提高了软件系统的灵活性。最后给出了办公自动化系统中公文管理模块的具体实现过程。

关键词:

JSP+JavaBean+Servlet;MVC设计模式;数据库连接池

The Research and Implement of Office Automation System

Abstract: First, the Design and system modeling of office automatic system are introduced in

this paper. Then, the technology of Database Connection Pool and JSP is adopted to design system. And the design idea of MVC is also used to implement the main function of the system. So the development of software can be predigested and the flexibility, expansibility. At last, the document management of the OA system implementation procedure is provided.

Key words:JSP+JavaBean+Servlet; MVC; Database Connection Pool

3

引言:

网络办公自动化管理系统(OA),是伴随着Internet技术在各个领域的广泛应用,和各行各业企业信息化建设步伐的加快应运而生的。

企业对信息需求的增长,使计算机、网络技术已经渗透到企业的日常工作中。传统的企业内信息的交流方式早已不能满足企业对大量信息的快速传递与处理的需求,网络办公自动化管理系统的应用满足了企业的办公网络化、自动化的管理需求,提高了企业内部的管理水平,进而全面提升了企业在市场竟争中的综合竞争力。基于以上目标,本文将设计一个办公自动化管理系统。

1 本文的设计思想

[10]

本文中的办公自动化管理系统采用Browser/Web/Database的三层体系结构。Web服务器接受请求,通过应用程序服务器执行一个Java服务器端小程序Servlet并返回其输出,从而实现与客户机进行信息资源的交互。数据库服务器用来存储管理信息系统中所用到的各种数据,数据由数据库管理程序直接录入。系统的客户端只需要一个浏览器即可。相关人员通过浏览器来查询、增加、修改、删除数据,对信息进行管理。本系统体系结构如图1-1所示:

图1-1 本系统体系结构

通过办公自动化管理系统对企业日常办公进行管理,满足了企业日常办公管理各方面的的需求,实现了企业员工之间消息的发送与接收功能,大大的方便了企业内部人员沟通。网站提供的前后台的公告与公文信息的管理方便员工及时的了解公司的动态。其他功能模块的设置使企业的日常管理步入了科学系统管理的轨道上。

2 系统设计

2.1 系统规划

办公自动化管理系统是一个功能完备的系统,由前台管理和后台管理两大部分组成。 1)前台管理模块

前台管理模块要求实现:公告管理、公文管理、员工管理、部门信息、收发信息和优秀员工管理6部分。 2)后台管理模块

4

后台管理模块要求实现:部门管理、职位管理、公告管理、公文管理、员工管理、账号管理、短信息管理、在线管理和员工状态管理9部分。

2.2 系统功能结构[6]

办公自动化管理系统前台功能结构如图2-1所示。

图2-1 办公自动化管理系统前台功能结构图

办公自动化管理系统后台功能结构如图2-2所示。

图2-2 办公自动化管理系统后台功能结构图

2.3 开发及运行环境

操作系统:Windows XP/Windows 2000。 数据库:SQL Server 2000。

开发工具包:JDK Version1.4.2。 JSP服务器:Tomcat。

浏览器:IE5.0,推荐使用IE6.0。 2.4 系统实现概览[20]

本系统的权限分为普通员工和管理员,普通员工只能查看公共信息和与自己相关的内容,而管理员可以对整个系统的信息进行修改删除等操作。 2.4.1 员工操作

5

单击【员工登录】按钮,系统自动弹出登录的对话框,单击“员工号”和“密码”文本框,输入员工号和密码,最后单击【提交】按钮即可进入员工操作界面,如图2-3和图2-4所示。

图2-3员工登录界面

图2-4 员工操作界面

2.4.2 管理员操作界面

管理员用自己的员工号和密码登录后进入的页面如图2-5所示。

6

图2-5 管理员登录界面

本系统是根据企业日常办公的需求进行开发设计的,主要实现了如下功能: (1) 实现前台的公告、公文管理。 (2) 实现前台员工信息管理功能。

(3) 通过前台查看职位信息、部门信息。 (4) 实现优秀员工信息的查看与提名功能。 (5) 实现前台员工之间的短消息的发送与接收。

(6) 通过后台查看与删除公告信息、查看公文信息的功能。 (7) 后台管理员对员工信息、职位信息与部门信息的管理。 (8) 后台管理员对短消息的查看与删除功能。 (9) 后台管理员管理员工状态信息。

(10) 后台实现对在线信息的查看与删除功能。 (11) 后台管理员工登录账号信息。 (12) 设置前后台的系统退出功能。

3 本系统所用到的关键技术

3.1 MVC设计模式

MVC(Model-View-Controller)是八十年代为编程语言Smalltalk-80发明的一种软件设计模式。MVC模式将交互式应用分成模型(Model)、视图(View)和控制器(Controller)三部分。模型是指从现实世界中挖掘出来的对象模型,是应用逻辑的反映。模型封装了数据和对数据的操作,是实际进行数据处理的计算的地方。视图是应用和用户之间的接口,它负责将应用显现给用户和显示模型的状态。控制器负责视图和模型之间的交互,控制对用户输入的响应响应方式和流程,它主要负责两方面的动作:把用户的请求分发到相应的模型;将模型的改变及时反应到视图上。MVC将这些对象分离以提高灵活性和复用性。MVC模式的结构如图3-1所示:

7

图3-1 MVC模式的结构

3.2 本文中所用的设计模式[13]

本系统采用JSP+JavaBean+Servlet的经典MVC设计模式,在大多数Browser/Server结构的Web应用中,浏览器直接通过HTML或者JSP的形式与用户交互,响应用户的请求。虽然很直观,但是大多数管理信息系统操作的数据量都是惊人的,随着代码的增多会使JSP页面臃肿不堪,Web服务器的负荷过重。因此,在中间层上采用基于模型视图控制器(MVC,Model-View-Controller)的设计模式。Model层用来实现业务逻辑,View层用来显示用户界面,Controller层主要负责View层和Model层之间的控制关系。具体实现时,把Servlet用作应用程序的控制器,把JSP文档作为视图,JavaBeans被用来表示模型。所有的请求都被发送给作为控制器的Servlet,它接受请求,并根据请求信息将它们分发给适当的JSP来响应。同时,Servlet还根据JSP的需求生成JavaBeans的实例并输出给JSP环境。JSP可以通过直接调用方法或使用Use Bean的自定义标签得到Java Beans中的数据。这种设计模式很

[13]

好地实现了数据层与表示层的分离,使开发工作更加容易和迅速。在这种设计模式下,各层次之间的数据传递如图3-2所示。

图3-2 本系统各层次之间的数据传递

3.3 数据库连接池

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;

2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释

8

放。数据库连接池的操作如图3-3所示。

图3-3 数据库连接池的操作

配置tomcat数据库连接池的前提: 1. 必须装有java运行环境;

2. 必须有sql server2000数据库服务器(可以不在本地);

3. 必须有jtds.jar,并将它放在$catalina_home/common/lib目录下(只能是这里)。使用它是因为microsoft公司的java sql server驱动程序不支持二次查询,可到网上搜到。目前使用的是jtds-0.6.jar。

3.4 本系统数据库连接池的配置[2]

在$TOMCAT_HOME/conf/server.xml里设置数据库连接池, 下面是配置的代码,必须放在之间。

factory org.apache.commons.dbcp.BasicDataSourceFactory driverClassName com.microsoft.jdbc.sqlserver.SQLServerDriver url jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=OA username sa

9

password maxActive 1000 maxIdle 50 maxWait 50 其中:

1) path 指定路径,这里设定的是$TOMCAT_HOME/webapps下的quality目录; 2) docbase 文件根目录。

3) reloader 当网页被更新时是否重新编译。

4) maxactive 连接池的最大数据库连接数。设为0表示无限制。

5) maxidle 数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。 6) maxwait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 10) driverclassname jdbc驱动程序。 11) url 数据库连接字符串

3.5 关于JavaBean[19]

JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。

4 公文管理模块的实现

4.1 概述

公文管理是企业日常办公活动中的重要组成部分,用于处理单位内外部的各种公文信息,利用计算机网络的高速迅捷和计算机控制的严格准确性可以实现公文的标准化、流程化处理。公文管理主要是指通过在企业各部门间建立标准的、统一的公文交换和共享机制,将

10

相关应用系统有机地连接在一起,实现各部门之间快捷、便利的公文流转、交换和管理。公文管理系统是基于应用层面信息交换的典型应用之一。

本模块按照第2节中的MVC模式来设计,视图层用来显示用户界面,控制层主要负责视图层和Model层之间的控制关系。使用系统JavaBean来调用数据库。

4.2 公文管理模块中数据库的使用

4.2.1 本模块调用数据库的过程

公文管理模块采用数据库连接池技术,通过系统JavaBean来封装关于数据库的操作,通过JavaBean每次从数据库连接池中取出一个连接供当前操作使用,关于数据库的连接和分配均由连接池负责,这样实现了模块化设计,这样便于管理和维护,具体操作过程如图4-1。

[3]

图4-1 公文管理模块调用数据的过程

4.2.2 负责数据库调用的JavaBean

本系统采用的是数据库连接池技术来实现对数据库的连接。该类的主要功能是实现对数据库的连接操作和对数据库中数据的一些简单操作。在类中的每个方法都有详细的注释。全

[1]

部代码如下:

/*************************************oa/sys/Db.java*****************************************/

package oa.sys; import java.sql.*; import javax.sql.*; import javax.naming.*; /**

**************************************************** *类名称: Db

*类功能: 数据库操作

**************************************************** */

public class Db { private Connection con; private Statement stmt; private ResultSet rs; private PreparedStatement pstmt; public static int error=0; /***************************************************

11

[3]

*函数名称: getCon() *函数功能: 获取数据库连接 *返回值: 无 *参数说明: 无 ****************************************************/ public static synchronized Connection getCon()throws Exception{ Context ctx; DataSource ds; try{ ctx = new InitialContext(); ds = (DataSource)ctx.lookup(\ System.err.println(); System.err.println(\数据连接+\ return ds.getConnection(); }catch(SQLException e){ System.out.print(e); throw e; } catch(NamingException e){ System.out.print(e); throw e; } } /*************************************************** *函数名称: getStmtread() *函数功能: 获取数据库集合 *返回值: Statement * stmt:返回数据库集合只用于SELECT语句 *参数说明: 无 ****************************************************/ public Statement getStmtread(){ try{ con=getCon(); stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

}catch(Exception e){ System.out.println(\ System.out.println(e.getMessage()); } return stmt; } /*************************************************** *函数名称: getRowCount()

12

*函数功能: 返回表的行数 *返回值: int count * count>0返回的行数 * count=-1表名不存在或没有记录 *参数说明: String sql * sql 数据库中的表名

****************************************************/ public int getRowCount(String sql){ int count=0;; try{ stmt=this.getStmtread(); rs=stmt.executeQuery(\ rs.getMetaData(); if(rs.next()){ count=rs.getInt(1); }else{ count=-1; } }catch(Exception e){ System.out.println(\ System.out.println(e.getMessage()); count=-2; }finally{ this.close(); } return count; }

4.3 公文管理视图层的设计[11]

本文中的公文管理视图层的作用是

1、通过定义表单中的action属性来决定将表单中的数据交给哪个Servlet来处理。 2、读取Servlet执行的结果,然后把结果显示在HTML中。

发送公文页面的运行结果如图4-2所示。

13

图4-2发送公文页面

接收公文页面的运行结果如图4-3所示。

图4-3接收公文页面的运行结果

在公文管理的视图层设计中主要有两个JSP文件,分别是accept.jsp和send.jsp。这两个文件的作用分别是:接收公文和发布公文。

接收公文的具体代码如下:

/**************************************bumf/accept.jsp***************************************/

<%

Collection coll=(Collection)request.getAttribute(\ if(coll.isEmpty()){ %>

<% }else{

Iterator it=coll.iterator(); if(it.hasNext()){

Bumf bumf=(Bumf)it.next(); %>

14

String ok=(String)request.getAttribute(\ if(ok!=null){ out.print(ok); }

request.removeAttribute(\%>条待办公文

]字号

 

out.print(bumf.getAffix());

session.setAttribute(\%>

  

} }

request.removeAttribute(\%>

15

发布公文的具体代码如下:

/****************************************bumf/send.jsp***************************************/

4.4 公文管理控制层的设计

在JSP+JavaBean+Servlet模式中,一般使用Servlet接收Http请求,然后执行连接数据库的操作,操作完成后,如果需要(如:查询操作)操作,则把操作的结果保存在Http请

[4]

求中,然后把视图派发到用于显示的JSP页中。 4.4.1 发送公文

公文管理控制层的主要任务是,根据客户端提出的请求在数据库中实现对公文的增、删、查的操作,并且完成附件的上传功能。公文的正文内容保存在数据库中,附件保存在服务器中。发送公文时,单击公文管理中发送公文的按钮,直接访问了Servlet(com/bumf/Send.java)。该Servlet用来判断准备发送公文的用户在数据库中是否有临时公文。如果没有则生成一个临时文件并保存在数据库中;如果有则将临时文件的内容保存在Collection对象中,并将Collection对象通过“名-值”的形式保存在request范围内,转发给send.jsp来显示。具体代码如下:

17

/*************************************com.bumf.Send.java****************************************/

package com.bumf; import oa.data.Bumf; import oa.sys.*; import oa.sys.Time; import java.io.*; import java.sql.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; /**

**************************************************** *类名称: Send

*类功能: 公文发送(附件)

**************************************************** */

public class Send extends HttpServlet{

private int sign;// 1代表公文已经发送,0代表未发送(也就是用户点击了暂时保存按钮)

private int examine;//1代表处理完成,0代表还未处理(也就是用户点击了以后处理) private int id;//发送人id

private int accepter;//接受者编号 private int sendter;//发送者编号 private int bumfid;//公文编号 private String axffix;//附件全名 private String content;//公文内容 private String title;//公文标题 private String time;//发送时间 private String sqls;//保存SQL语句 private String sqli;//保存SQL语句 private String submit; private String bumf;

private HttpSession session=null; private ResultSet rs=null; private Statement stmt=null;

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{

request.setCharacterEncoding(\

response.setContentType(\ PrintWriter out=response.getWriter(); session=request.getSession(); Str str=new Str(); Db db=new Db();

Time times=new Time();

Collection coll=new ArrayList(); try{

id=Integer.parseInt((String)session.getAttribute(\获取发送人id,即登陆员工的id号

}catch(Exception e){ e.printStackTrace();

18

}

//查看发送人是否有临时公文

sqls=\ out.print(sqls+\ try{

stmt=db.getStmtread(); rs=stmt.executeQuery(sqls); //如果没有生成一个临时文件 if(!rs.next()){ db.close();

sqli=\

bumf(sendter,accepter,title,time,content,affix,examine,sign)\

+\ stmt=db.getStmt();

stmt.executeUpdate(sqli); }

db.close();

//调出临时文件

stmt=db.getStmtread(); rs=stmt.executeQuery(sqls); if(rs.next()){

bumfid=rs.getInt(1); sendter=rs.getInt(2); accepter=rs.getInt(3); title=rs.getString(4); time=rs.getString(5); content=rs.getString(6); axffix=rs.getString(7); examine=rs.getInt(8); sign=rs.getInt(9);

content=str.outStr(content); axffix=str.outStr(axffix); Bumf bumf=new Bumf(); bumf.setId(bumfid);

bumf.setSendter(sendter); bumf.setAccepter(accepter); bumf.setTitle(title); bumf.setTime(time);

bumf.setContent(content); bumf.setExamine(examine); bumf.setSign(sign); bumf.setAffix(axffix); coll.add(bumf); }

request.setAttribute(\

coll=(Collection)request.getAttribute(\ if(coll!=null){

Iterator it=coll.iterator(); if(it.hasNext()){

Bumf bumf=(Bumf)it.next(); out.print(bumf.getId()); }

19

}

}catch(Exception e){ e.printStackTrace(); out.print(e); }finally{

db.close();

RequestDispatcher dispatcher=request.getRequestDispatcher(\ dispatcher.forward(request,response); } }

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{

doPost(request,response); } }

4.4.2 接收公文

当一方用户发送给另一方发送公文后,另一方用户就可以接收到发送给自己的公文。待办公文的数量在接收公文的页面上显示,用户处理完一个公文后该公文则被标记成已办公文,同时下一个未办公文公显示出来,如果用户只是打开接收公文页面没有处理公文,那么此公文仍是未办公文。已办公文只有管理员才能查看其标题列表和附件名称,对于这项功能的实现流程与发送公文类似,在此只给出关键部分代码:

/****************************************com.bumf.Accept.java************************************/

Collection coll=new ArrayList(); //获取发送人id try{

id=Integer.parseInt((String)session.getAttribute(\ }catch(Exception e){ // e.printStackTrace();

request.setAttribute(\您的网页已过期请重新登录\ id=0; }

//查看接受人是否有新的公文

count=db.getRowCount(\examine=\

if(count>0){

request.setAttribute(\ }

sqls=\examine=\

try{

stmt=db.getStmtread(); rs=stmt.executeQuery(sqls); if(rs.next()){

bumfid=rs.getInt(1); sendter=rs.getInt(2); accepter=rs.getInt(3); title=rs.getString(4); time=rs.getString(5); content=rs.getString(6);

20

axffix=rs.getString(7); examine=rs.getInt(8); sign=rs.getInt(9);

content=str.outStr(content); axffix=str.outStr(axffix); Bumf bumf=new Bumf(); bumf.setId(bumfid);

bumf.setSendter(sendter); bumf.setAccepter(accepter); bumf.setTitle(title); bumf.setTime(time);

bumf.setContent(content); bumf.setExamine(examine); bumf.setSign(sign); bumf.setAffix(axffix); coll.add(bumf); }

request.setAttribute(\}catch(Exception e){ e.printStackTrace(); }finally{

db.close();

RequestDispatcher dispatcher=request.getRequestDispatcher(\ dispatcher.forward(request,response); }

致 谢

此次毕业设计是在老师的悉心指导下顺利完成的,在研究过程中,老师尽其所能,给

予了我很多的指导和帮助。在学习的过程中,我也得到了很多同学和老师的热情帮助。通过这次毕业设计,我不但巩固了以前所学的知识,增强了知识间的联系,而且学到了很多新的理论知识,同时,也增强了我独立思考和动手实践的能力,使我受益匪浅。在此对所有关心帮助过我的老师和同学们致以真挚的谢意。

21

参考文献

[1]萨师煊,王珊.数据库系统概论[M],北京:高等教育出版社,1983. [2]周绪.SQL Server2000中文版入门提高[M],北京:清华大学出版社,2003. [3] 王国辉、牛强.JSP 信息系统开发实例精选[M],北京:机械工业出版社,2002. [4] 李楠.JSP工程应用与项目实践[M],北京:机械工业出版社,2001. [5] 宋昆等.SQL Server数据库开发实例解析[M],北京:机械工业出版社,2003. [6] 张海藩.软件工程导论[M],北京:清华大学出版社,2002.

[7] Lawrence Shari.Software Engineering--Theory and Practice [M],北京:高

等教育出版社,2004. [8] Bass Len, Clements Paul, Kazman Rick.Software architecture in practice[M],北京:清华大学出版社. [9] 张海藩.软件工程导论[M],北京:清华大学出版社,2002.

[10] 苏林忠、冀翼. 基于JSP技术的动态WEB开发[J].河南师范大学学报(自然科学版),

2003.

[11] 程文.基于JSP开发动态网站的设计与实现[J].现代计算机,2002.

[12] Paul C.Jorgensen.Software Testing A Craftsman’s Approach(second Edition)[M].China

Machine Press,2003,170-175.

[13] Cay S.Horstmann,Gary Cornell.Java 2核心技术(CoreJava 2)[M].北京:机械工

业出版社.

[14] Bruce Eckel.Java编程思想(Thinking in Java)[M].北京:机械工业出版社. [15] Joseph L.Weber.Java 2编程详解(Using Java 2)[M].北京:电子工业出版社. [16] 周立柱. SQL Server数据库原理——设计与实现[M],北京:清华大学出版社,2004. [17] Andy Budd. 精通CSS:高级Web标准解决方案[M],北京:人民邮电出版社,2006. [18] Karl Avedal,Danny Ayers,Timothy Briggs.JSP编程指南[M].电子工业出版社,2001,47-125. [19] 霍尔(Hall,M).Servlet与JSP核心技术[M].人民邮电出版社,2001,50-123. [20] 齐鲲鹏.JSP数据库连接技术在构建信息网站中的研究[J].控制工程,2002.

22

附录A 数据表

本系统数据库采用SQL Server 2000数据库,系统数据库名称为OA_Data。数据库OA_Data中包含10张表。本系统采用的是数据库连接池技术来实现对数据库的连接。 关于数据库中的数据表如下: (1)affice(公告信息表)

公告信息表主要用于管理公告信息。表affice的结构如表A.1所示。

表A.1 表affice的结构 字段名 afficeid Title [time] employeeid content 数据类型 int varchar datetime int text 长度 4 40 8 4 16 主键否 是 描述 公告编号 公告标题 公告发布时间 发布公告员工编号 公告内容 (2)bumf(公文信息表)

公文信息表主要用于管理公文信息。表bumf的结构如表A.2所示。

表A.2 表bumf的结构 字段名 bumfid sendter accepter Title [time] content Affix examine Sign 数据类型 Int Int Int varchar datetime text varchar Bit1 Bit 4 4 4 40 8 16 40 1 1 长度 主键否 是 描述 公文编号 发送者编号 接收者编号 题目 时间 内容 附件名称 处理结果 标志 (3)eminfo(员工信息表)

员工信息表主要用于保存员工信息。表eminfo的结构如表A.3所示。

表A.3 表eminfo的结构 字段名 employeeid Name Sex 数据类型 int varchar bit 4 20 1 长度 主键否 是 描述 员工编号 姓名 性别 23

birthday learn post departmentid jobid tel addr stateid datetime varchar varchar int int varchar varchar int 8 10 10 4 4 4 出生日期 学历 职称 部门编号 职位编号 电话 地址 状态编号 (4)info(短信息表)

短信息表主要用于保存短信息。表info的结构如表A.4所示。

表A.4 表info的结构 字段名 infoid title [time] sendter accepter content new 数据类型 int varchar datetime int int text bit 长度 4 40 8 4 4 16 1 主键否 是 短信息编号 题目 时间 发送者编号 接收者编号 内容 标识短信是否被查看 描述 (5)department(部门信息表)

部门信息表主要用于保存部门信息。表department的结构如表A.5所示。

表A.5 表department的结构 字段名 departmentid name explain 数据类型 int varchar text 4 20 16 长度 主键否 是 描述 部门编号 部门名称 部门描述 (6)emstate(员工状态表)

员工状态表主要用于保存员工状态信息。表emstate的结构如表A.6所示。

表A.6 表emstate的结构 字段名 stateid name 数据类型 int varchar 4 10 长度 主键否 是 描述 状态编号 状态名称 24

explain text 16 状态描述 (7)job(工作名称表)

工作名称表主要用于工作名称信息。表job的结构如表A.7所示。

表A.7 表job的结构 字段名 jobid name explain 数据类型 int varchar text 4 20 16 长度 主键否 是 描述 工作名称编号 工作名称名称 工作名称描述 (8)password(员工登录表)

员工登录表主要用于员工登录信息。表password的结构如表A.8所示。

表A.8 表job的结构 字段名 empoyeeid password [time] 数据类型 int varchar datetime 4 20 8 长度 主键否 描述 员工编号 员工密码 系统时间 (9)signstate(员工上下班描述表)

员工上下班描述表主要用于员工上下班描述信息。表signstate的结构如表A.9所示。

表A.9 表job的结构 字段名 signstateid describestate [time] 数据类型 int varchar datetime 4 20 8 长度 主键否 描述 上下班编号 上下班名称 系统时间 (10)sign(员工上下班描述表)

员工上下班描述表主要用于员工上下班描述信息。表sign的结构如表A.10所示。

表A.10 表sign的结构 字段名 signid [time] employeeid Late Quit leave [work]

数据类型 int datetime int bit bit bit bit 4 8 4 1 1 1 1 25 长度 主键否 描述 员工上下班编号 系统时间 员工编号 是否迟到 是否下班 是否早退 工作状态 signstateid int 4 外键 26

附录B 文件架构图

办公自动化管理系统前台文件架构如图B.1所示。

图B.1 办公自动化管理系统前台文件架构图

办公自动化管理系统后台文件架构如图B.2所示。

27

图B.2 办公自动化管理系统后台文件架构图

28

本文来源:https://www.bwwdw.com/article/s7bp.html

Top