【网站项目】基于SSM的274办公自动化管理系统

 🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。

  1. 代码可以私聊博主获取。🌹
  2. 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
  3. 赠送开题报告模板,帮助书写开题报告。

作者完整代码目录供你选择:

  1. 《Springboot网站项目》400套
  2. 《ssm网站项目》800套
  3. 《小程序项目》300套
  4. 《App项目》500套
  5. 《python网站项目》600套

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

项目演示(需要演示视频可以私信我)

摘  要

随着计算机应用的普及、成熟,越来越多公司开始采用网上信息管理系统,网上信息管理系统的运行可以有效的提高企业管理效率。因此,为满足企业办公管理方面的需求,开发了办公自动化管理系统。

本文重点阐述了办公自动化管理系统的开发过程,以实际运用为开发背景,基于SSM框架,运用了Java技术和MYSQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了办公管理的重要功能。

本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高企业办公管理效率。

关键词:办公自动化管理,Java技术,数据库,SSM框架

  1. 引言
    1. 课题背景

随着社会经济的迅速发展和科学技术的全面进步,计算机技术的飞速发展,以及计算机与通信技术为基础的信息系统正处于蓬勃发展的时期[1]。在信息技术快速发展的时代,企业发展与信息技术的关系日益密切,企业创新日益加快,信息化规划无疑将成为企业创新和发展过程中最重要的工作,也是企业发展的助推剂[12]。各种信息化管理层出不穷,以前全是由人工管理的方法管理企业办公信息,这样存在很多缺点和漏洞。随着企业的不断发展,企业员工数量大大的增加,为了更方便的管理好企业办公信息,特开发了本办公自动化管理系统,系统的应用可大大提高企业办公管理效率,节约企业管理成本。

改革开发的不断深入,经济的飞速发展,企业要想生存发展,想在激烈的市场竞争中立于不败之地,没有现代化的管理万万不行的,企业办公的全面自动化、信息化,则是其中最重要的部分[2]。为了加快企业信息化管理的步伐,提高企业办公管理的效率,建立办公自动化管理系统已经变得十分必要。

    1. 研究现状

在国外他们的信息技术的发展是我国的许多倍,从1946年诞生在美国的世界上第一台计算机开始,国外的信息技术就一直在飞速地发展,一些计算机应用软件也纷纷出现,软件技术也一直在不断完善和更新。软件行业早已遍布各个地方。

在国内,我国信息技术发展起步比较晚,后期慢慢的不断地进行优化和改革,才让我们的信息技术上升到新的阶段。在现在软件开发的技术经过大量研究和生活实践基本能够达到独立开发系统应用的水平,生活中的各个行业也把软件操作替换成传统的记录模式。软件行业正是现在比较热门的行业。

互联网是人类的基本需要,尤其在现代社会,社会的高节奏的操作,根据世界信息的快速发展,以传统方式来进行的企业办公管理,长期以来一直无法满足企业办公管理的需求,使得办公自动化管理系统的开发成为必需。网络的发展都为办公自动化管理系统的设计与实现提供了良好的基础,在网络和计算机的大力发展下,办公自动化管理系统开始出现,办公自动化管理系统是借助网络和计算机的新型管理模式,既节省了记录信息纸张的浪费,又保证了企业办公管理的高效性,提高管理效率。

    1. 论文结构安排

对本文所涉及的相关技术进行学习,系统的分析是一个很重要的环节,更好的进行程序的设计,必须进行前期的深入调查,对系统进行全面的功能设计,和详细的解析。课题最主要的工作是通过Java+MYSQL建立一个完善的办公自动化管理系统,系统最主要的模块是企业办公相关信息的管理。本文主要分为六大部分:

第一部分绪论介绍了本文的研究背景,概述了的研究现状和论文的结构安排。

第二部分主要是是介绍了办公自动化管理系统所采用的技术,开发环境。

第三部分对办公自动化管理系统进行分析,包括可行性分析,系统功能需求,系统流程分析等。

第四部分进行系统的设计,这一部分是系统主要的数据库部分,介绍功能结构和数据库的设计等。

第五部分总结了系统的界面和实现过程进行分析。

第六部分主要是对系统测试进行阐述,对测试遇到的问题进行说明。

  1. 系统关键技术
    1. JAVA技术

Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行。除此之外,它还拥有简单的语法和实用的类库,让编程人员可以尽可能将精力集中在问题的求解上,并且许多开源项目和科研成果都是采用它实现的。

在1995年这一年的5月份,著名的Sun Microsystems公司在程序开发设计上面郑重推出一种面向对象开发的程序设计语言——Java,最开始的时候Java是由詹姆斯.高斯林这位伟大的JAVA之父来进行主导,但是在后来由于各种原因,让甲骨文公司这个针对商业程序创建了oracle大型数据库的公司收购了Java[16]。Java的平台总共算下来有3个,分别为javaME和javaSE以及javaEE这3个java平台。下面将对其进行分别介绍。

(1)在电脑桌面程序的开发上面需要选择JavaME,这个用得也比较多。

(2)企业也会根据工作以及业务需要开发各种软件,那么就会选用JavcEE这个支持企业版软件的开发的Java平台,JavcEE主攻运用在企业领域上面的web应用,JavcEE也在javaSE的基础上获得了比如jsp技术 ,Servlet技术等程序开发技术的支持。

(3)现在生活中手机的普及化,也使得手机端这样的移动设备的软件的兴起,JavaME这个迷你版java平台就能运用于移动端的软件开发操作。

    1. B/S结构

B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,它能够把系统核心功能集中在服务器上面,可以帮助系统开发人员简化操作,便于维护和使用。

在早期的程序开发中,使用得最多的莫过于C/S架构了,现在的生活中软件在生活的各个方面落地,使用了C/S架构开发出来的软件也是不在少数的,比如企业日常办公使用到的微软的OFFICE软件,我国自己研发的文档处理软件WPS,还有娱乐软件腾讯的QQ,腾讯的微信,以及电脑上安装的杀毒软件金山杀毒软件,瑞金杀毒软件等都是C/S架构。但是在Internet网络盛行之后,鉴于大家对数据信息共享的需求,在原来的C/S架构上进行了升级改进之后,有了现在的主流架构B/S架构,B/S架构就是在C/S架构上多了一个浏览器[3],让原来的直接访问服务器的方式,变成了通过浏览器去访问服务器。充分运用到了当下不断成熟的浏览器技术。也让软件的开发成本以及维护成本降低了。可以说B/S这种新型的架构模式让软件的开发变得便利化。

B/S架构不需要在任何客户端来进行程序的部署,使用这样的程序结构来使用开发好的系统是利用浏览器来使用的,就是把开发好的程序配置到一台远程服务器上,在任何可以访问这台服务器的客户端电脑上都可以对程序进行操作和使用,这样的方式给使用者带来了极大的便捷。这样的结构提高了程序的运行效率,打破了地域的限制,降低了程序的使用成本。

    1. MYSQL数据库

所谓数据库,实际上就是一个容器,按照数据结构来组织、存储和管理。数据库的作用就是为大量的信息进行管理并提供高效的解决方案。

MySQL是典型的关系数据库系统,拥有开源免费、稳定、高效等特点,一直是中小型web项目的最佳数据库选择。MySQL作为当今IT领域使用人数最多的开源关系型数据库软件之一,在2018年的数据库使用率排名中位居第二,仅次于目前为止最成功的商业版数据库Orcle[7]。MySQL最大的优势之一就是无偿使用,这也是它成功的关键。

MySQL支持标准化数据库查询语言SQL。MySQL是一款非常适合个人开发者或小型组织开发团体的数据库管理系统,因为它是开源并且免费的,体积小、速度快、成本低以及其最重要的一点开放源码,深受程序设计人员的喜爱,这也让它成为了许许多多中小型开发网站数据库的首选,同时提供了多种开发的连接API。MySQL将数据的存放按照记录之间的关系存放到了不同的表中,减少了数据的冗余并且提高了开发的工作效率。MySQL支持开发中需要用的大型数据库,并能处理数以万计的记录。因为MySQL是开源的软件,所以在项目的预算中的时候不用花费额外的资金,大大降低了开发的总体成本[10],这也是MySQL数据库在中小型企业和独立的开发者中广泛流行的原因。

    1. SSM框架

本办公自动化管理系统基于Spring、SpringMVC、Mybatis框架进行开发设计。

Spring 框架是在2004年首次发布,之后出现了多次的重大修订。Spring框架是由七个不同的模块组成,分别是SpringCore、Spring AOP、Spring ORM、Spring DAO、Spring Web Flow、Spring Context和Spring Web MVC[19]。这些模块提供不同的平台来开发不同的企业应用程序 ,本课题使用Spring Web MVC模块开发基于MVC的应用程序。

Spring Web MVC是基于Servlet API的原始Web框架,从一开始就包含在Spring 框架中。“Spring Web MVC”是该框架的正式名称,但通常被简称为“Spring MVC” [20]。Spring MVC框架提供了模型模块-视图模块-控制器的架构和可用于直接开发的Web应用程序的现成组件。Spring MVC模式将应用程序的不同方面分开,使元素之间形成松散耦合。

MyBatis原名叫做iBatis属于持久层框架,消除了大部分JDBC代码和参数的设置以及结果集的检索。这个框架不仅支持普通SQL查询和存储过程,还支持高级的映射[21]。MyBatis使用.xml和注解来做原始映射和配置,将接口和Java对象映射成数据库记录。

  1. 系统分析
    1. 可行性分析

在进行可行性分析时,我们通常根据软件工程里方法,通过四个方面来进行分析,分别是技术、经济、运行和法律可行性。因此,在基于对目标系统的基本调查和研究后,对提出的基本方案进行可行性分析

      1. 技术可行性

技术可行性一是考虑客观的技术可行性,二是考虑实际的技术可行性。从客观上、简单地说,现已经出现了类似的系统,因此客观上的可行性是满足的。从现有的实际情况上来看,该系统使用的是Java开发语言、MYSQL都是容易获得的,同时计算机的硬件性能也满足开发软件的需求;且在本科课程中都有进行相关软件的学习和开发。综上所述,该系统具有技术可行性。

      1. 经济可行性

开发该系统时,优先考虑了使用网页来完成该系统。从已有的Web网页开发的案例、资料中,可知Web所需要的软硬件简单,切开发成本低。且从引进该系统后的预想表现将会比传统方式优异,其具有高效、低成本的特点。可以大量节省管理的人力、物力,具有一定经济效益和社会效益。综上所述,该系统具有高经济可行性

      1. 运行可行性

运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。以目前信息技术的普及程度之广、相关工作的操作人员的水平之高,是足以胜任的。综上所述,该系统具有高运行可行性。

      1. 法律可行性

(1)所使用的技术或者资料(书籍、文献、软件)合乎中国法律。

(2)所开发过程不涉合同、侵权、责任和各种法律相抵的问题。

(3)所完成系统不存在侵犯版权问题。

(4)完全符合中国的《中华人民共和国著作权法》和《计算机软件保护条例》。

综上所述,该系统具有高法律可行性。

通过分析论证,该系统总体上是具有高可行性的。

    1. 系统性能分析

达到如以下的性能需求指标,可以保证系统的安全性、可靠性、稳定性,需要:

(1)系统响应的精确性和实时性

这是本系统必要的性能。考虑到未来系统可能承受的工作量,需要能够承担得起企业级的信息处理需求。实时性是该系统的生命线,因此需采用软实时系统来进行保证。

(2)系统的开放性和系统的可扩充性

本系统是一个较为初期的一个雏形,以后势必会根据的企业办公管理需求的扩大或转变。这就要求本系统需要提供足够的开放型和可扩充性,只要符合本系统的设计准则都可以将新的模块加入。通过这样的升级、维护来完成本系统后期的生命周期。

(3)系统的易用性和易维护性

要求不论是熟悉或不熟悉计算机的人员都可以对系统进行有效的人机交互。因此提供给用户一个友好、漂亮的图形接口是非常重要的。这可以通过发一些纸质和实际的界面模型问卷调查来获得最佳的效果。此外,也考虑到维护本系统的操作人员,有效的手段的数据备份、管理和错误检测、恢复需要被提供给相关的人员。

(4)系统的响应速度

要求系统在任何情况下的平均响应速度达到秒级,具有软实时性。一是为了保证了系统的工作效率,二为了防止系统因同一时间段大量的员工登录系统而造成错误、瘫痪。

    1. 系统功能分析

本办公自动化管理系统主要包括员工功能模块、部门功能模块和管理员功能模块3大部分,下面将对这三大功能模块分别进行功能分析。

(1)管理员:管理员登录后主要功能模块包括个人中心、员工管理、部门管理、员工档案管理、员工考勤管理、员工请假管理、员工销假管理、工作内容管理、工作报表管理、公司公告管理以及系统管理。管理员用户用例图如图3-1所示。

图3-1 管理员用例图

(2)部门:部门注册登录后主要功能模块包括个人中心、工作内容管理、工作报表管理,部门用例图如图3-2所示。

图3-2 部门用例图

(3)员工:员工在系统前台可查看系统信息,包括首页、公司公告、公司新闻等,注册登录后主要功能模块包括个人中心、员工档案管理、员工考勤管理、员工请假管理以及员工销假管理。员工用例图如图3-3所示。

图3-3 员工用例图

    1. 系统流程分析
      1. 操作流程

用户要想进入本系统,必须进行登录操作,登录成功则进入对应用户功能界面,可进行功能操作处理,反之登录失败。系统操作流程如图3-4所示。

图3-4 系统操作流程图

      1. 添加信息流程

用户在添加信息时,系统编号自动生成,用户需要输入信息,系统会对其进行验证,验证通过则添加成功,反之添加失败,添加信息流程如图3-5所示。

图3-5 添加信息流程图

      1. 修改信息流程图

修改信息这一块的流程和添加信息类似,首先由用户选定需要修改的信息,然后输入对应要修改的数据,系统对输入的这些数据再进行验证,验证成功就可以添加到系统的数据库里面,相反不能添加成功。图3-6就是修改信息的流程图。

图3-6 修改信息流程图

      1. 删除信息流程

用户在删除的时候,系统会再次提示是不是确定要删除,因为一旦删除了,信息就不存在了,确定要删除的话,就会从数据库里将这些数据删除,重新更新数据库。图3-7演示的就是删除信息的流程图。

办公自动化管理系统并没有使用C/S结构,而是基于网络浏览器的方式去访问服务器,进而获取需要的数据信息,这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构,图4-1就是开发出来的程序工作原理图。

图4-1 系统工作原理图

    1. 系统结构设计

系统的设计和划分是系统的核心研究问题,以确定整体结构和功能模块。该系统的结构化设计的思想,是自顶向下的方式将系统分成若干个子系统,以及反过来的子系统分成模块,其被划分成子模块,层划分各计算机可执行模块可迄今用作一个单独的程序。

本办公自动化管理系统的结构图如图4-2所示。

图4-2 系统结构图

    1. 系统顺序图设计

(1)登录模块顺序图

登录模块主要满足了管理员、员工以及部门的权限登录,登录模块的顺序图如图4-3所示。

图4-3 登录模块顺序图

(2)添加信息模块顺序图

管理员、部门以及员工登录后均可进行信息的添加,添加信息顺序图如图4-4所示

图4-4 添加信息模块顺序图

    1. 数据库设计
      1. 数据库E-R图设计

E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。

实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。

属性:E-R图中的属性,是指实体的属性,实体由多条属性所构成,属性拥有自己的数据类型,数据大小。属性的优劣决定了E-R图中实体的健全性、完整性。

关系:E-R图中的关系是指实体之间的关系,用菱形来表示实体间的关系,这些菱形关系的联系上有着一对多或多对多的数据联系,这些构成了E-R图的关系,E-R图的关系紧密连接了实体,使实体间的关联性更加的显著、易懂。本办公自动化管理系统的E-R图如下所示:

      1. 数据库表设计

办公自动化管理系统采用MYSQL数据库系统进行系统数据的储存,下面介绍数据库中的各个表的详细信息。

表4-1  bumen部门信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

bumenzhanghao

部门账号

varchar

200

mima

密码

varchar

200

`bumenxingming

部门姓名

varchar

200

表4-2  gongzuobaobiao工作报表信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

baobiaomingcheng

报表名称

varchar

200

tongjishijian

统计时间

datetime

tongjineirong

统计内容

varchar

200

tongjiren

统计人

varchar

200

baobiaoneirong

报表内容

longtext

bumenzhanghao

部门账号

varchar

200

bumenxingming

部门姓名

varchar

200

表4-3  gongzuoneirong工作内容信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

bumenzhanghao

部门账号

varchar

200

`bumenxingming

部门姓名

varchar

200

gongzuobiaoti

工作标题

varchar

200

gongzuoshijian

工作时间

datetime

gongzuoanpai

工作安排

varchar

200

gongzuoneirong

工作内容

longtext

gongzuowenjian

工作文件

varchar

200

表4-4  yuangongqingjia员工请假信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

zhanghao

账号

varchar

200

xingming

姓名

varchar

200

bumen

部门

varchar

200

zhiwu

职务

varchar

200

qingjiashijian

请假时间

datetime

qingjiatianshu

请假天数

int

11

qingjiayuanyin

请假原因

longtext

sfsh

是否审核

varchar

200

shhf

审核回复

longtext

表4-5  yuangong员工信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

添加时间

timestamp

zhanghao

账号

varchar

200

xingming

密码

varchar

200

mima

姓名

varchar

200

xingbie

性别

varchar

200

youxiang

邮箱

varchar

200

shouji`

手机

varchar

200

zhaopian

照片

varchar

200

表4-6  users管理员信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint(

20

`username

用户名

varchar

100

password`

密码

varchar

100

role

角色

varchar

100

addtime`

添加时间

timestamp

  1. 系统的实现
    1. 管理员功能模块的实现
      1. 管理员登录界面

管理员要想进入本系统进行管理操作,必须登录系统后台,管理员登录界面展示如图5-1所示。

图5-1 管理员登录界面图

      1. 员工管理界面

管理员可增删改查员工信息,员工管理界面如图5-2所示。

图5-2  员工管理界面

      1. 部门管理界面

管理员可添加、修改和删除部门信息,部门管理界面展示如图5-3所示。

图5-3 部门管理界面

      1. 员工档案管理界面

管理员可增删改查员工档案信息,员工档案管理界面展示如图5-4所示,添加员工档案界面展示如图5-5所示。

图5-4 员工档案管理界面

图5-5 添加员工档案界面

      1. 公司公告管理界面

管理员可增删改查公司公告信息,公司公告管理界面如图5-6所示,添加公司公告界面展示如图5-7所示。

图5-6  公司公告管理界面

图5-7  添加公司公告界面

      1. 员工请假管理界面

管理员可查看员工请假信息,并可对其进行审核、修改和删除操作,员工请假管理界面展示如图5-8所示。

图5-8 员工请假管理界面

    1. 员工功能模块的实现
      1. 员工登录界面

员工在登录界面可输入用户名和密码,选择登录类型,点击登录按钮进行登录系统,员工登录界面如图5-9所示。

图5-9 员工登录界面

      1. 系统主界面

用户在系统主界面可查看系统信息,包括首页、公司公告以及公司新闻等,系统主界面展示如图5-10所示。

图5-10  系统主界面

      1. 添加员工考勤界面

员工登录后可添加员工考勤信息,添加员工考勤界面如图5-11所示。

图5-11 添加员工考勤界面

      1. 员工请假界面

员工通过本平台可进行添加请假,员工请假界面展示如图5-12所示。

图5-12 员工请假界面

    1. 部门功能模块的实现
      1. 工作内容管理界面

部门可增删改查工作内容信息,工作内容管理界面展示如图5-13所示。

图5-13  工作内容管理界面

      1. 工作报表管理界面

部门可增删改查工作报表信息,工作报表管理界面展示如图5-14所示。

图5-14  工作报表管理界面

  1. 系统测试
    1. 测试定义

系统测试主要是判断系统是否可以正常运行,功能模块是否可以实现操作。程序代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好,再进行程序测试时也会也会发现一个重来没有被发现的错误信息。

测试不仅是系统开发的开始,而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段。从实际情况来看,最初的问题很可能是一个小错误,根据按钮的原理,按钮后的按钮位错将是所有位错。该系统的原因也同样适用,随着后续的开发工作,误差将越来越严重。为了避免问题在后续编码,测试和设计,避免扩大国家的问题。在测试系统中,开发人员应该站在客户的角度来处理测试工作,而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先,用户界面和客户需求是一致的,设置界面和设计风格统一;第二,创新设计接口规范设计标准,具有独特的审美特征;最后,人类传统的接口以满足审美需求,不能盲目地追求一种独特的,合理的规划布局,符合审美标准。

    1. 测试方法

本测试主要是系统是否能够进行服务器进行处理信息的能力,不同的用户发出不同的服务请求,系统必须能够准确的进行数据的传达,在这种情况下进行测试响应的时间、内存使用的情况和CPU占用大小等指标,系统完成设计必须保证信息的正确性,信息紊乱带来的后果是非常可怕的,所有必须要进行压力测试,通过本测试进行系统相应速度、稳定性能和处理能力进行优化。

运用黑盒子测试的测试办法,把各个不同功能的软件模板进行区分、管理。对于不同的模块独立的分装起来,在传统测试的时候要进行数据的统一测试,完成对系统的概要设计详细解读资料、需要解决的问题,及操作的详细应用说明等内容来视作测试的突破口,对测试的对象进行逐一对照检查,并针对单个的程序检测延伸至这个研发过程中单个及整个集成单元的检测中,要有规律有顺序的进行,不但可以缩短我们的工作时效,避免返工的操作,也可以对可用性负责,提高了可操作性和软件研发的实用性。通过对系统概要设计验证测试,测试系统的统一管理方式,对系统的各个功能模块以及系统的性能进行测试,验证系统的功能以及系统的性能。

    1. 测试内容

为了保证测试工作的有效进行,同时保持工作质量,可将测试工作按内容划分为以下几个部分,即:审核代码、单元测试、集成测试、系统测试和预期测试。

(1)审核代码

即审查编写的代码,检查其语法以及使用是否规范,并及时加以校正。

(2)单元测试

即检查系统中各个小版块的程序设置,将其划分为不同单元,分别进行测试以及校正。通过不同单元具备的功能性差别,对其进行不同目的的测试,以达到各单元系统的正确性。

(3)集成测试

在测试完各个单元系统后,将整个程序整体进行统一测试,即为集成测试。此举既可以检查单元测试中存在的遗漏,也可以检查各单元集合后是否存在衔接、过渡等方面的错误,子功能与主功能是否吻合,数据是否正确。

(4)预期测试

通过对整个程序的测试,来检查是否能够实现用户预期体验效果,即是否满足用户的各项需求,各个按钮是否有效,系统开发是否达到预期效果。

(5)系统测试

在完成各项测试后,仍然需要进行统一的系统整合测试,可从安全性、性能、功能性三个方面入手:

①安全性测试:应对该系统的安全防范功能进行测试,防止用户信息泄露或者交易流程错误等,避免非法手段的干扰。

②性能测试:即系统最高负荷承受限度,测试系统在达到某负荷条件下是否能保持正常运行。

③功能性测试:测试系统是否满足用户的各项需求,是否存在功能缺失。

    1. 测试结论

通过测试的整个过程,每个模块的功能都还比较成功,但也发现了一些问题,比如登录页面登录进不了系统,是因为配置文件中的数据库的密码不一致等,在发现后及时进行了修改。目前系统还存在很多需要改进的地方,将会在今后的使用和维护中不断完善。

结论

在这次的毕业设计当中,让我把课堂上学到的知识全部学以致用,让我对网站的设计和开发有了更加深入的理解,对数据库的运用也更加的灵活,不在局限于书本上的知识,以下几点是我本次毕业设计的体会:

(1)在编辑代码的时候一定要注意写注释,因为你一篇代码写下来,写的多了,有可能回头就忘了这段代码主要是用来做什么的,还有编写的代码一定要注意规范书写,不然当你写完的时候你回头一看会让你眼睛疲惫,让你无法静下心来编写。

(2)这次的毕业设计能成功的实现出来,主要是归功于互联网的功劳,由于我编程基础比较薄弱所以我选择了后端相对简单的JAVA语言加上我比较擅长的数据库操作来实现这次的毕业设计,主要从腾讯课堂、慕课、W3c等编程教学网站吸取经验,通过案例的编程练习来强化自身的编码能力。

(3)这次的网页设计比较的简洁明了,主要是因为前端的知识没有好好的掌握,只掌握了基础的部分,没有的很好的运用到前端的高级技巧,只是由基础的代码组成,虽然页面不太美观,但是由于简洁的设计,也可以让用户很方便的找寻到自己所需要的功能,所以这一步还是需要进一步的完善。

(4)编好代码后,为了不让用户有错误的体验,肯定少不了测试,在测试功能的时候,我们要把自身当成一个用户去体验,而不是当一个制作者的角度去看待,这样才有更好的测试效果。

最后感谢这次的毕业设计,让我能灵活的把课本上的知识结合起来运用,虽然还是有很多不懂的地方,但也提升了我的动手能力,让我对网站的建设有了大致的了解,让我明白了,也许开始的时候我只是个网站设计的小白,但通过不断的学习,不断的努力,我也能入门,世上无难事,只要肯努力,一切皆有可能。

不过这次的网站设计还是有很多不足的地方,例如本网站的功能还有待完善,希望我能在之后的学习生活中不断的完善这一部分,争取早日将其做的更加的完美。

致谢

本系统的实现和本文的撰写都是在指导老师的悉心指导下完成的。指导老师为本系统提供了诸多建议,使本系统得到了完善。

我的每一点提高和进步都离不开指导老师的悉心教诲和鼓励,指导老师总是抽出大量的业余时间对我进行针对性指导,让我的技术逐渐提高。指导老师的每一次鼓励使我从失败中一次又一次站起来,老师的创新精神和对学习的认真态度深深影响到我,让我时时刻刻都严格按照老师的要求对学习做到精益求精,不断深入。

感谢各位老师等对我的生活、学习和研究工作给出的宝贵建议和教导。感谢学院所提供的良好的学习环境和人事氛围。

感谢所有和我一起学习和工作的同学们,在我遇到难题时,是他们给予我鼓励、支持和帮助,和他们一起工作和学习并共同进步是一件非常愉快的事情。

最后向所有曾经给予过我帮助的领导、老师、同事和同学表示最真诚的谢意和最诚挚的祝福!

参考文献

[1]自动化办公系统的设计与实现[J]. 徐森,曹丽丽,徐秀芳.  软件. 2017(10)

[2]关于自动化办公系统建设的实践与思考[J]. 李媛.  吉林环境. 2012(05)

[3]曹莉,赵文静.基于B/S结构OA企业办公系统的设计与实现[J].现代电子技术, 2006(03).

[4]张红梅,王磊.在JSP中访问数据库的方法[J].实验科学与技术,2006(08).

[5]靳其兵,李晓波.基于JSP的数据库连接技术的研究[J].计算机仿真 2007(04) .  

[6]孙东卫,张冀红,李声利. 数据库访问技术研究[J].现代电子技术.2002,18(5).20-34. 

[7]苟凌怡,魏生民. MYSQL中索引的有效选取[J].计算机工程与应用,1999,35(6):70-71.

[8]张树亮, 李超.JSP+MYSQL网络应用系统开发案例精解[M].北京:清华大学出版社,2006.   

[9]G.E.Hobona, S.J.Abele, Philip James[J].University of Newcastle upon Tyne, 2006.

[10]张宁,吴捷,杨卓,张涛. 基于MYSQL的脑电数据库的构建[J]. 广西科学院学报 ,2006 22(4):275-278.

[11]王静.国外企业信息化建设的趋势、实践及启示[J].农村经济与科技.2011,22(07):170-171.

[12]宋连友.企业信息化建设中的几个关键问题[J].中国商贸.2011,06.85-86.

[13]Quintero,A.O.Research on application information system integration platform in medicine manufacturing enterprise.[J]. International Journal of the Commons,2010(1):23-40.

[14]百度百科.j2EE.http://baike.baidu.com/view/1507.htm[EB/OL].2012.11.21.

[15]小聪.j2EE的优势.http://www.mailwhy.com/yjfwq/J_M/941.html [EB/OL].2009.3.24.

[16]周观民,刘书伦等.用Java实现多线程程序设计[J].计算机时代,2006(7):61-63 .

[17]G.E.Hobona,S.J.Abele,PhilipJames[J].University of Newcastle upon Tyne, 2006.

[18]计算机技术在自动化办公中的应用研究[J]. 崔晨.  数字技术与应用. 2018(06)

[19] 郝佳编著.Spring源码深度解析[M].人民邮电出版社,2019:5-98.

[20] [美]Paul Deck著.林仪明译.Spring MVC学习指南[M].人民邮电出版社,2017:14-113.

[21] 李艳鹏[等]编著.互联网轻量级SSM框架解密[M].电子工业出版社,2019:19-98.

核心代码展示

/**
 * 公告通知
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-09 11:33:59
 */
@RestController
@RequestMapping("/news")
public class NewsController {
    @Autowired
    private NewsService newsService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( NewsEntity news){
       	EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
      	ew.allEq(MPUtil.allEQMapPre( news, "news")); 
        return R.ok().put("data", newsService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(NewsEntity news){
        EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
 		ew.allEq(MPUtil.allEQMapPre( news, "news")); 
		NewsView newsView =  newsService.selectView(ew);
		return R.ok("查询公告通知成功").put("data", newsView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody NewsEntity news, HttpServletRequest request){
        //ValidatorUtils.validateEntity(news);
        newsService.updateById(news);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        newsService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = newsService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/339015.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系统编程】进程优先级

文章目录 1. 优先级的基本概念2. 为什么存在优先级3. 查看系统进程4. PRI and NI5. top命令修改已存在进程的nice值6. 其他概念 1. 优先级的基本概念 本篇文章讲解进程优先级&#xff0c;首先我们来了解一下进程优先级的概念&#xff1a; cpu资源分配的先后顺序&#xff0c;就…

burp靶场--访问控制【越权】

【Burp系列】超全越权漏洞实验总结 https://portswigger.net/web-security/access-control/lab-unprotected-admin-functionality 1. 访问控制【越权】 https://portswigger.net/web-security/access-control#what-is-access-control ### 什么是访问控制&#xff1a; 访问控…

php基础学习之常量

php常量的基本概念 常量是在程序运行中的一种不可改变的量&#xff08;数据&#xff09;&#xff0c;常量一旦定义&#xff0c;通常不可改变&#xff08;用户级别&#xff09;。 php常量的定义形式 使用define函数&#xff1a;define("常量名字", 常量值);使用cons…

Mac NTFS 磁盘读写工具选哪个好?Tuxera 还是 Paragon?

在使用 Mac 电脑时&#xff0c;我们经常需要读写 NTFS 格式的硬盘或 U 盘。然而&#xff0c;由于 Mac 系统不支持 NTFS 格式的读写&#xff0c;因此我们需要借助第三方工具来实现这个功能。而在市场上&#xff0c;Tuxera 和 Paragon 是两款备受推崇的 Mac NTFS 磁盘读写工具。那…

GSP专版软件系统(医疗器械进销存)

产品概述 软件完全符合药监局GSP认证要求&#xff0c;可订制其它平台的数据对接; 业务流程清晰&#xff0c;操作简单合理&#xff0c;软件速度非常快; 完善的序列号(UDI)管理,并与整个系统融合在一起; 财务账和业务账完美结合; 可自定义的界面、布局管理;灵活的打印样式设计; 可…

有关软件测试的,任何时间都可以,软件测试主要服务项目:测试用例 报告 计划

有关软件测试的&#xff0c;任何时间都可以&#xff0c;软件测试主要服务项目&#xff1a; 1. 测试用例 2. 测试报告 3. 测试计划 4. 白盒测试 5. 黑盒测试 6. 接口测试 7.自动…

Vuex的基础使用

在使用之前要先了解Vuex的组成结构&#xff0c;跟对应的使用关系。 在上图的结构图中可以看到四个组成部分&#xff0c;首先是Components&#xff08;组件&#xff09;、Actions&#xff08;行动&#xff09;、Mutations&#xff08;变化&#xff09;、state&#xff08;状态/数…

Mysql运维篇(三) MySQL数据库分库分表方案

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人&#xff0c;如有侵权请留言&#xff0c;我及时删除。 一、前言 关系型数据库本身比较容易成为系统瓶颈&#xff0c;单机存储容量、连接数、处理能力都有限。当单表的数…

【MySQL进阶】SQL优化

文章目录 SQL 优化主键优化数据组织方式页分裂页合并主键设计原则 insert优化order by优化group by优化limit优化count优化 SQL 优化 主键优化 数据组织方式 在InnoDB存储引擎中&#xff0c;表数据都是根据主键顺序组织存放的&#xff0c;这种存储方式的表称为索引组织表 在In…

【5G 接口协议】N2接口协议NGAP(NG Application Protocol)介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

PIG框架学习3——Redisson 实现业务接口幂等

零、前言 ​ 业务接口幂等问题是在开发中遇到的&#xff0c;如果对业务接口代码不进行幂等控制&#xff0c;并且在前端没有对请求进行限制的情况下&#xff0c;可能会出现多次对接口调用&#xff0c;导致错误异常的发生。就上述情况&#xff0c;对PIGX自带的业务接口幂等实现进…

无法找到mfc100.dll的解决方法分享,如何快速修复mfc100.dll文件

在日常使用电脑时&#xff0c;我们可能会碰到一些系统错误提示&#xff0c;比如“无法找到mfc100.dll”的信息。这种错误通常会阻碍代码的执行或某些应用程序的启动。为了帮助您解决这一问题&#xff0c;本文将深入探讨其成因&#xff0c;并提供几种不同的mfc100.dll解决方案。…

lv14 内核定时器 11

一、时钟中断 硬件有一个时钟装置&#xff0c;该装置每隔一定时间发出一个时钟中断&#xff08;称为一次时钟嘀嗒-tick&#xff09;&#xff0c;对应的中断处理程序就将全局变量jiffies_64加1 jiffies_64 是一个全局64位整型, jiffies全局变量为其低32位的全局变量&#xff0…

三.Winform使用Webview2加载本地HTML页面

Winform使用Webview2加载本地HTML页面 往期目录创建Demo2界面创建HTML页面在Demo2窗体上添加WebView2和按钮加载HTML查看效果 往期目录 往期相关文章目录 专栏目录 创建Demo2界面 经过前面两小节 一.Winform使用Webview2(Edge浏览器核心) 创建demo(Demo1)实现回车导航到指定…

用立创EDA(专业版)设计原理图

简介 立创EDA&#xff0c;国产的EDA工具。 下载 官方下载链接 下载后&#xff0c;直接一直下一步&#xff0c;最后安装提示免费激活即可。 注意 嘉立创EDA专业版的数据和立创EDA标准版的数据不互通&#xff0c; 常用原理图绘制设置 开发流程 新建工程绘制PCB 文件->新…

【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、sqlite3介绍二、文件下载三、文件分析四、pro文件五、编译实践 一、sqlite3介绍 SQLite是一款轻型的数据库&#xff0c;是遵守ACID的关系型数据库管理系统&#xff0c;它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的&…

【数据结构】 双链表的基本操作 (C语言版)

目录 一、双链表 1、双链表的定义&#xff1a; 2、双链表表的优缺点&#xff1a; 二、双链表的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、双链表的初始化 4、双链表表插入 5、双链表的查找 6、双链表的取值 7、求双链表长度 8、双链表…

2023年12月 Scratch 图形化(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 观察下列每个圆形中的四个数,找出规律,在括号里填上适当的数?( ) A:9 B:17 C:21 D:5 答案:C 左上角的数=下面两个数的和+右上角的数

142.环形链表 II 、141. 环形链表(附带源码)

目录 一、142问题的分析与解决&#xff1a; 二、怎么做&#xff1f; 三、142代码 四、141代码 一、142问题的分析与解决&#xff1a; 核心&#xff1a;定义快慢指针&#xff1a;slow、fast 思路是当快指针fast进环时&#xff0c;慢指针slow一定没有进环 这个时候就是就变…

flink基本概念

1. Flink关键组件: 这里首先要说明一下“客户端”。其实客户端并不是处理系统的一部分&#xff0c;它只负责作业的提交。具体来说&#xff0c;就是调用程序的 main 方法&#xff0c;将代码转换成“数据流图”&#xff08;Dataflow Graph&#xff09;&#xff0c;并最终生成作业…