java毕业设计——基于JSP+sqlserver的办公自动化系统设计与实现(毕业论文+程序源码)——办公自动化系统

基于JSP+sqlserver的办公自动化系统设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于JSP+sqlserver的办公自动化系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

1、项目简介

  1. 办公自动化系统的开发,使得上网查收发邮件、收发文件、查看公司公文公告变得极为方便,因为系统提供了所有办公所需要的基本功能。并且简单易操作,无论单位内部有多少个部门,总部外有多少个分支机构,通过本系统可以实现无地域办公,操作简单,稳定安全,可以称为网络办公理念的一次变革。


2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:8126个字36页
包含内容:全套源码+配整论文


3、关键词

JSP+JavaBean+Servlet

4、毕设简介

提示:以下为毕业论文的简略介绍,项目完整源码及完整毕业论文下载地址见文末。

引言
网络办公自动化管理系统(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以上。
软件平台:
 操作系统:Windows 。
 数据库:SQL Server 。
 开发工具包:JDK Version。
 JSP服务器:Tomcat。
 浏览器:IE
 分辨率:最佳效果1024×768像素。

3.3 数据库设计
本系统数据库采用SQL Server 数据库,系统数据库名称为OA_Data。数据库OA_Data中包含9张表。关于数据库中的数据表请参见附录B

4 JavaBean的设计
在JSP+JavaBean+Servlet模式中,一般使用Servlet接收Http请求,然后执行连接数据库的操作,操作完成后,如果需要,将操作的结果保存在Http请求中,然后把视图派发到用于显示的JSP页。在这小节中,首先来介绍一下本系统中所使用的几个重要的JavaBean。

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

/*************************************oa/sys/Db.java*****************************************/
package oa.sys;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
/**
 ****************************************************
 *类名称:	Db<br>
 *类功能:	数据库操作 <br>
 ****************************************************
 */
public class Db {
	private Connection con;
	private Statement stmt;
	private ResultSet rs;
	private PreparedStatement pstmt;
	public static int error=0;

	/***************************************************
	*函数名称:	getCon()<br>
	*函数功能:	获取数据库连接<br>
	*返回值:  	无<br>
	*参数说明:	无<br>
	****************************************************/
	public static synchronized Connection getCon()throws Exception{
		Context ctx;
		DataSource ds;
		try{
			ctx = new InitialContext();
			ds = (DataSource)ctx.lookup("java:comp/env/jdbc/OA");
			System.err.println();
			System.err.println("数据连接+"+(++error));
			return ds.getConnection();
		}catch(SQLException e){
			System.out.print(e);
			throw e;
		}
		catch(NamingException e){
			System.out.print(e);
			throw e;
		}
	}
	/***************************************************
	*函数名称:	getStmtread()<br>
	*函数功能:	获取数据库集合<br>
	*返回值:  	Statement
	*			stmt:返回数据库集合只用于SELECT语句<br>
	*参数说明:	无<br>
	****************************************************/
	public Statement getStmtread(){
		try{
			con=getCon();
			stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
		}catch(Exception e){
			System.out.println("getStmtread");
			System.out.println(e.getMessage());
		}
		return stmt;
	}
	/***************************************************
	*函数名称:	getRowCount()<br>
	*函数功能:	返回表的行数<br>
	*返回值:  	int count<br>
	*			count>0返回的行数<br>
	*			count=-1表名不存在或没有记录<br>
	*参数说明:	String sql<br>
	*			sql 数据库中的表名
	****************************************************/
	public int getRowCount(String sql){
		int count=0;;
		try{
			stmt=this.getStmtread();
			rs=stmt.executeQuery("SELECT COUNT(*) FROM "+sql);
			rs.getMetaData();
			if(rs.next()){
				count=rs.getInt(1);
			}else{
				count=-1;
			}
		}catch(Exception e){
			System.out.println("getRowCount");
			System.out.println(e.getMessage());
			count=-2;
		}finally{
			this.close();
		}
		return count;
	}
	/***************************************************

4.2 分页显示的JavaBean的编写
在进行数据库查询操作时,往往会遇到数据量很大的情况,如果将所有数据在一个页面中显示是不现实的,因为这会给用户带来操作上的不方便,这是不愿意看到的,因此有必要将分页显示封装在一个类中,以提高这段代码的重用性。本系统用做分页显示的代码如下:
省略

4.2 分页解决方案JavaBean的编写
数据信息分页显示的JavaBean编写如下:

/************************************oa/sys/Page.java******************************************/
package oa.sys;
import java.util.*;
/**
 ****************************************************
 *类名称:	#Page<br>
 *类功能:	分页解决方案<br>
 ****************************************************
 */
public class Page {
	public int curPage;       //当前页
	public int maxPage;       //最大页
	public int maxRowCount;     //最大行
	public int rowsPerPage=5;     //每页行
	public Collection coll=null;
	public Page(){
	}
	/***************************************************
	*函数名称:	getCountPage()<br>
	*函数功能:	获取总页数<br>
	*返回值:  	无<br>
	*参数说明:	无<br>
	****************************************************/
	public void getCountPage(){
		if(this.maxRowCount%this.rowsPerPage==0){
			this.maxPage=this.maxRowCount/this.rowsPerPage;
		}else{
			this.maxPage=this.maxRowCount/this.rowsPerPage+1;
		}
	}
	public Collection getResult(){
		return this.coll;
	}
	public Page(Contact contact)throws Exception{
		this.maxRowCount=contact.getCount();
		this.coll=contact.getResult();
	}
}

4.3 字符串转化JavaBean的编写
字符串转化JavaBean的编写的代码如下:
省略

5 视图层的设计与实现
本系统中视图层主要有两个作用:
1、通过定义表单中的action属性来决定将表单中的数据交给哪个Servlet来处理。
这里以公告管理功能模块为例。首先,先定义一个表单。然后,在web.xml中做如下配置:

 <servlet>
    <servlet-name>affice.add</servlet-name>
    <servlet-class>com.affice.Add</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>affice.add</servlet-name>
    <url-pattern>/affice/add</url-pattern>
  </servlet-mapping>

最后,通过这个表单映射来访问Servlet。
2、读取Servlet执行的结果,然后把结果显示在HTML中。
由于本系统中多个功能模块的代码相似,在此笔者只将几个具有代表性的功能介绍给读者,对于系统中的其他功能模块请读者参看随书附带的光盘。

5.1 公告管理视图层的设计
公告管理视图层主要用于控制层转发过来的运行结果,并将表单中的数据提交给控制层进行处理。
发布最新公告页面的运行结果如图4所示。
在这里插入图片描述

图4 发布最新公告页面的运行结果
查看以前公告页面的运行结果如图5所示。
在这里插入图片描述

图5 查看以前公告页面的运行结果
在公告管理视图层中主要有两个JSP文件,分别是add.jsp和view.jsp。这两个文件的作用分别是:发布最新公告和查看以前公告。
发布最新公告的具体代码如下:
省略

5.2 公文管理视图层的设计
发送公文页面的运行结果如图6所示。
在这里插入图片描述

图6 发送公文页面的运行结果
接收公文页面的运行结果如图7所示。
在这里插入图片描述

图7 接收公文页面的运行结果
在公文管理视图层中主要有两个JSP文件,分别是accept.jsp和send.jsp。这两个文件的作用分别是:接收公文和发布公文。
接收公文的具体代码如下:
省略

6 控制层的设计与实现
在JSP+JavaBean+Servlet模式中,一般使用Servlet接收Http请求,然后执行连接数据库的操作,操作完成后,如果需要(如:查询操作)操作,则把操作的结果保存在Http请求中,然后把视图派发到用于显示的JSP页中。
6.1 公告管理控制层的设计
公告管理控制层的主要任务是,根据客户端提出的请求在数据库中实现对公告的增、删、查的操作。处理发布公告(在数据库中实现对公告的增加操作)的代码如下:
省略

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

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

/****************************************com.bumf.Accept.java************************************/
Collection coll=new ArrayList();
		//获取发送人id
		try{
			id=Integer.parseInt((String)session.getAttribute("id"));
		}catch(Exception e){
		//	e.printStackTrace();
			request.setAttribute("msg","您的网页已过期请重新登录");
			id=0;
		}
		//查看接受人是否有新的公文
		count=db.getRowCount("bumf WHERE accepter="+id+" AND sign="+1+" AND examine="+0);
		if(count>0){
			request.setAttribute("count",new Integer(count).toString());
		}
		sqls="SELECT * FROM bumf WHERE accepter="+id+" AND sign="+1+" AND examine="+0+" ORDER BY bumfid";
		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);
				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("msg",coll);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			db.close();
			RequestDispatcher dispatcher=request.getRequestDispatcher("accept.jsp");
			dispatcher.forward(request,response);
		}

本系统的其它功能,与公告管理、公文管理类似。这里只是讲述一下JSP+JavaBean+Servlet的工作流程。.

附录A 参考文献
1.JSP数据库系统开发完全手册 人民邮电出版社 2006年3月
2.Delphi数据库系统开发完全手册 人民邮电出版社 2006年3月
3.Visual Basic数据库系统开发完全手册 人民邮电出版社 2006年3月
4.Visual C++数据库系统开发完全手册 人民邮电出版社 2006年3月
5.JSP 信息系统开发实例精选 机械工业出版社 王国辉、牛强、李南南等 2005年7月
6.Visual Basic信息系统开发实例精选 机械工业出版社 宋坤、赵智勇、刘强等 2005年7月
7.SQL Server数据库开发实例解析 机械工业出版社 宋昆、李严等 2006年1月
8.Access数据库开发实例解析 机械工业出版社 李俊民、高春燕等 2006年1月
9.Visual Basic精彩编程200例 机械工业出版社 赛奎春、高春艳等 2003年1月
10.ASP数据库开发实例解析 机械工业出版社 李严、于亚芳、王国辉 2004年12月
11.Delphi工程应用与项目实践 机械工业出版社 宋坤、赵智勇等 2005年1月
12.Visual Basic工程应用与项目实践 机械工业出版社 高春艳、李俊民等 2005年1月
13.Visual C++工程应用与项目实践 机械工业出版社 张雨、阮伟良等 5005年1月
14.JSP工程应用与项目实践 机械工业出版社 陈威、白伟明、李楠 2005年2月
15.ASP工程应用与项目实践 机械工业出版社 王国辉、牛强、李南南 2005年4月
16.Visual Basic 信息系统开发实例精选 机械工业出版社 高春艳、李俊民、张耀庭等
2005年7月
17.ASP 信息系统开发实例精选 机械工业出版社 王国辉、牛强、李南南等 2005年7月
18.Delphi 信息系统开发实例精选 机械工业出版社 宋坤、赵智勇、刘强等 2005年7月
19.Visual foxpro数据库开发关键技术与实例应用 人民邮电出版社 周桓、张雨、王国辉 2004年5月
20.PoweBuilder数据库开发关键技术与实例应用 人民邮电出版社 刘志铭 张振坤 冯文萃 2004年5月
21.Delphi数据库开发关键技术与实例应用 人民邮电出版社 赛奎春 陈紫鸿 宋昆
2004年5月
22.Visual basic数据库开发关键技术与实例应用 人民邮电出版社 高春艳、李艳
2004年5月
23.Visual C++ 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月
24.Visual Basic 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月
25.PowerBuilder 管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月
26.Visual FoxPro管理信息系统完整项目实例剖析 人民邮电出版社 明日科技 2005年7月
27.Delphi数据库开发实例解析 机械工业出版社 赛奎春、郑骁鹏等 2004年2月
28.Visual Basic数据库开发实例解析 机械工业出版社 刘志铭、高春艳等 2003年8月
29.Visual FoxPro数据库开发实例解析 机械工业出版社 王晶莹、王国辉等 2003年9月
30.Power Builder数据库开发实例解析 机械工业出版社 华传铭、张振坤等 2003年9月
31.PowerBuilder 精彩编程200例 机械工业出版社 张振坤、李文立等 2004年9月
32.Visual FoxPro 精彩编程200例 机械工业出版社 王国辉、董韶华等 2004年9月

附录B 数据表
(1)affice(公告信息表)
公告信息表主要用于管理公告信息。表affice的结构如表B.1所示。
表B.1 表affice的结构
字段名 数据类型 长度 主键否 描述
afficeid int 4 是 公告编号
Title varchar 40 公告标题
[time] datetime 8 公告发布时间
employeeid int 4 发布公告员工编号
content text 16 公告内容
(2)bumf(公文信息表)
公文信息表主要用于管理公文信息。表bumf的结构如表B.2所示。
表B.2 表bumf的结构
字段名 数据类型 长度 主键否 描述
bumfid Int 4 是 公文编号
sendter Int 4 发送者编号
accepter Int 4 接收者编号
Title varchar 40 题目
[time] datetime 8 时间
content text 16 内容
Affix varchar 40 附件名称
examine Bit1 1 处理结果
Sign Bit 1 标志
(3)eminfo(员工信息表)
员工信息表主要用于保存员工信息。表eminfo的结构如表B.3所示。
表B.3 表eminfo的结构
字段名 数据类型 长度 主键否 描述
employeeid int 4 是 员工编号
Name varchar 20 姓名
Sex bit 1 性别
birthday datetime 8 出生日期
learn varchar 10 学历
post varchar 10 职称
departmentid int 4 部门编号
jobid int 4 职位编号
tel varchar 电话
addr varchar 地址
stateid int 4 状态编号
(4)info(短信息表)
短信息表主要用于保存短信息。表info的结构如表B.4所示。
表B.4 表info的结构
字段名 数据类型 长度 主键否 描述
infoid int 4 是 短信息编号
title varchar 40 题目
[time] datetime 8 时间
sendter int 4 发送者编号
accepter int 4 接收者编号
content text 16 内容
new bit 1 标识短信是否被查看
(5)department(部门信息表)
部门信息表主要用于保存部门信息。表department的结构如表B.5所示。
表B.5 表department的结构
字段名 数据类型 长度 主键否 描述
departmentid int 4 是 部门编号
name varchar 20 部门名称
explain text 16 部门描述
(6)emstate(员工状态表)
员工状态表主要用于保存员工状态信息。表emstate的结构如表B.6所示。
表B.6 表emstate的结构
字段名 数据类型 长度 主键否 描述
stateid int 4 是 状态编号
name varchar 10 状态名称
explain text 16 状态描述
(7)job(工作名称表)
工作名称表主要用于工作名称信息。表job的结构如表B.7所示。
表B.7 表job的结构
字段名 数据类型 长度 主键否 描述
jobid int 4 是 工作名称编号
name varchar 20 工作名称名称
explain text 16 工作名称描述
(8)password(员工登录表)
员工登录表主要用于员工登录信息。表password的结构如表B.8所示。
表B.8 表job的结构
字段名 数据类型 长度 主键否 描述
empoyeeid int 4 员工编号
password varchar 20 员工密码
[time] datetime 8 系统时间
(9)signstate(员工上下班描述表)
员工上下班描述表主要用于员工上下班描述信息。表signstate的结构如表B.9所示。
表B.9 表job的结构
字段名 数据类型 长度 主键否 描述
signstateid int 4 上下班编号
describestate varchar 20 上下班名称
[time] datetime 8 系统时间
(10)sign(员工上下班描述表)
员工上下班描述表主要用于员工上下班描述信息。表sign的结构如表B.10所示。
表B.10 表sign的结构
字段名 数据类型 长度 主键否 描述
signid int 4 员工上下班编号
[time] datetime 8 系统时间
employeeid int 4 员工编号
Late bit 1 是否迟到
Quit bit 1 是否下班
leave bit 1 是否早退
[work] bit 1 工作状态
signstateid int 4 外键

附录C 文件架构图
办公自动化管理系统前台文件架构如图C.1所示。
在这里插入图片描述

图C.1 办公自动化管理系统前台文件架构图
办公自动化管理系统后台文件架构如图C.2所示。
在这里插入图片描述

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


5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于JSP+sqlserver的办公自动化系统设计与实现(源码+文档)_jsp_BS架构_办公自动化系统.zip
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业设计方案专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值