🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示(需要演示视频可以私信我)
摘 要
随着计算机应用的普及、成熟,越来越多公司开始采用网上信息管理系统,网上信息管理系统的运行可以有效的提高企业管理效率。因此,为满足企业办公管理方面的需求,开发了办公自动化管理系统。
本文重点阐述了办公自动化管理系统的开发过程,以实际运用为开发背景,基于SSM框架,运用了Java技术和MYSQL作为系统数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了办公管理的重要功能。
本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高企业办公管理效率。
关键词:办公自动化管理,Java技术,数据库,SSM框架
随着社会经济的迅速发展和科学技术的全面进步,计算机技术的飞速发展,以及计算机与通信技术为基础的信息系统正处于蓬勃发展的时期[1]。在信息技术快速发展的时代,企业发展与信息技术的关系日益密切,企业创新日益加快,信息化规划无疑将成为企业创新和发展过程中最重要的工作,也是企业发展的助推剂[12]。各种信息化管理层出不穷,以前全是由人工管理的方法管理企业办公信息,这样存在很多缺点和漏洞。随着企业的不断发展,企业员工数量大大的增加,为了更方便的管理好企业办公信息,特开发了本办公自动化管理系统,系统的应用可大大提高企业办公管理效率,节约企业管理成本。
改革开发的不断深入,经济的飞速发展,企业要想生存发展,想在激烈的市场竞争中立于不败之地,没有现代化的管理万万不行的,企业办公的全面自动化、信息化,则是其中最重要的部分[2]。为了加快企业信息化管理的步伐,提高企业办公管理的效率,建立办公自动化管理系统已经变得十分必要。
在国外他们的信息技术的发展是我国的许多倍,从1946年诞生在美国的世界上第一台计算机开始,国外的信息技术就一直在飞速地发展,一些计算机应用软件也纷纷出现,软件技术也一直在不断完善和更新。软件行业早已遍布各个地方。
在国内,我国信息技术发展起步比较晚,后期慢慢的不断地进行优化和改革,才让我们的信息技术上升到新的阶段。在现在软件开发的技术经过大量研究和生活实践基本能够达到独立开发系统应用的水平,生活中的各个行业也把软件操作替换成传统的记录模式。软件行业正是现在比较热门的行业。
互联网是人类的基本需要,尤其在现代社会,社会的高节奏的操作,根据世界信息的快速发展,以传统方式来进行的企业办公管理,长期以来一直无法满足企业办公管理的需求,使得办公自动化管理系统的开发成为必需。网络的发展都为办公自动化管理系统的设计与实现提供了良好的基础,在网络和计算机的大力发展下,办公自动化管理系统开始出现,办公自动化管理系统是借助网络和计算机的新型管理模式,既节省了记录信息纸张的浪费,又保证了企业办公管理的高效性,提高管理效率。
对本文所涉及的相关技术进行学习,系统的分析是一个很重要的环节,更好的进行程序的设计,必须进行前期的深入调查,对系统进行全面的功能设计,和详细的解析。课题最主要的工作是通过Java+MYSQL建立一个完善的办公自动化管理系统,系统最主要的模块是企业办公相关信息的管理。本文主要分为六大部分:
第一部分绪论介绍了本文的研究背景,概述了的研究现状和论文的结构安排。
第二部分主要是是介绍了办公自动化管理系统所采用的技术,开发环境。
第三部分对办公自动化管理系统进行分析,包括可行性分析,系统功能需求,系统流程分析等。
第四部分进行系统的设计,这一部分是系统主要的数据库部分,介绍功能结构和数据库的设计等。
第五部分总结了系统的界面和实现过程进行分析。
第六部分主要是对系统测试进行阐述,对测试遇到的问题进行说明。
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平台就能运用于移动端的软件开发操作。
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架构不需要在任何客户端来进行程序的部署,使用这样的程序结构来使用开发好的系统是利用浏览器来使用的,就是把开发好的程序配置到一台远程服务器上,在任何可以访问这台服务器的客户端电脑上都可以对程序进行操作和使用,这样的方式给使用者带来了极大的便捷。这样的结构提高了程序的运行效率,打破了地域的限制,降低了程序的使用成本。
所谓数据库,实际上就是一个容器,按照数据结构来组织、存储和管理。数据库的作用就是为大量的信息进行管理并提供高效的解决方案。
MySQL是典型的关系数据库系统,拥有开源免费、稳定、高效等特点,一直是中小型web项目的最佳数据库选择。MySQL作为当今IT领域使用人数最多的开源关系型数据库软件之一,在2018年的数据库使用率排名中位居第二,仅次于目前为止最成功的商业版数据库Orcle[7]。MySQL最大的优势之一就是无偿使用,这也是它成功的关键。
MySQL支持标准化数据库查询语言SQL。MySQL是一款非常适合个人开发者或小型组织开发团体的数据库管理系统,因为它是开源并且免费的,体积小、速度快、成本低以及其最重要的一点开放源码,深受程序设计人员的喜爱,这也让它成为了许许多多中小型开发网站数据库的首选,同时提供了多种开发的连接API。MySQL将数据的存放按照记录之间的关系存放到了不同的表中,减少了数据的冗余并且提高了开发的工作效率。MySQL支持开发中需要用的大型数据库,并能处理数以万计的记录。因为MySQL是开源的软件,所以在项目的预算中的时候不用花费额外的资金,大大降低了开发的总体成本[10],这也是MySQL数据库在中小型企业和独立的开发者中广泛流行的原因。
本办公自动化管理系统基于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对象映射成数据库记录。
在进行可行性分析时,我们通常根据软件工程里方法,通过四个方面来进行分析,分别是技术、经济、运行和法律可行性。因此,在基于对目标系统的基本调查和研究后,对提出的基本方案进行可行性分析
技术可行性一是考虑客观的技术可行性,二是考虑实际的技术可行性。从客观上、简单地说,现已经出现了类似的系统,因此客观上的可行性是满足的。从现有的实际情况上来看,该系统使用的是Java开发语言、MYSQL都是容易获得的,同时计算机的硬件性能也满足开发软件的需求;且在本科课程中都有进行相关软件的学习和开发。综上所述,该系统具有技术可行性。
开发该系统时,优先考虑了使用网页来完成该系统。从已有的Web网页开发的案例、资料中,可知Web所需要的软硬件简单,切开发成本低。且从引进该系统后的预想表现将会比传统方式优异,其具有高效、低成本的特点。可以大量节省管理的人力、物力,具有一定经济效益和社会效益。综上所述,该系统具有高经济可行性
运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。以目前信息技术的普及程度之广、相关工作的操作人员的水平之高,是足以胜任的。综上所述,该系统具有高运行可行性。
(1)所使用的技术或者资料(书籍、文献、软件)合乎中国法律。
(2)所开发过程不涉合同、侵权、责任和各种法律相抵的问题。
(3)所完成系统不存在侵犯版权问题。
(4)完全符合中国的《中华人民共和国著作权法》和《计算机软件保护条例》。
综上所述,该系统具有高法律可行性。
通过分析论证,该系统总体上是具有高可行性的。
达到如以下的性能需求指标,可以保证系统的安全性、可靠性、稳定性,需要:
(1)系统响应的精确性和实时性
这是本系统必要的性能。考虑到未来系统可能承受的工作量,需要能够承担得起企业级的信息处理需求。实时性是该系统的生命线,因此需采用软实时系统来进行保证。
(2)系统的开放性和系统的可扩充性
本系统是一个较为初期的一个雏形,以后势必会根据的企业办公管理需求的扩大或转变。这就要求本系统需要提供足够的开放型和可扩充性,只要符合本系统的设计准则都可以将新的模块加入。通过这样的升级、维护来完成本系统后期的生命周期。
(3)系统的易用性和易维护性
要求不论是熟悉或不熟悉计算机的人员都可以对系统进行有效的人机交互。因此提供给用户一个友好、漂亮的图形接口是非常重要的。这可以通过发一些纸质和实际的界面模型问卷调查来获得最佳的效果。此外,也考虑到维护本系统的操作人员,有效的手段的数据备份、管理和错误检测、恢复需要被提供给相关的人员。
(4)系统的响应速度
要求系统在任何情况下的平均响应速度达到秒级,具有软实时性。一是为了保证了系统的工作效率,二为了防止系统因同一时间段大量的员工登录系统而造成错误、瘫痪。
本办公自动化管理系统主要包括员工功能模块、部门功能模块和管理员功能模块3大部分,下面将对这三大功能模块分别进行功能分析。
(1)管理员:管理员登录后主要功能模块包括个人中心、员工管理、部门管理、员工档案管理、员工考勤管理、员工请假管理、员工销假管理、工作内容管理、工作报表管理、公司公告管理以及系统管理。管理员用户用例图如图3-1所示。
图3-1 管理员用例图
(2)部门:部门注册登录后主要功能模块包括个人中心、工作内容管理、工作报表管理,部门用例图如图3-2所示。
图3-2 部门用例图
(3)员工:员工在系统前台可查看系统信息,包括首页、公司公告、公司新闻等,注册登录后主要功能模块包括个人中心、员工档案管理、员工考勤管理、员工请假管理以及员工销假管理。员工用例图如图3-3所示。
图3-3 员工用例图
用户要想进入本系统,必须进行登录操作,登录成功则进入对应用户功能界面,可进行功能操作处理,反之登录失败。系统操作流程如图3-4所示。
图3-4 系统操作流程图
用户在添加信息时,系统编号自动生成,用户需要输入信息,系统会对其进行验证,验证通过则添加成功,反之添加失败,添加信息流程如图3-5所示。
图3-5 添加信息流程图
修改信息这一块的流程和添加信息类似,首先由用户选定需要修改的信息,然后输入对应要修改的数据,系统对输入的这些数据再进行验证,验证成功就可以添加到系统的数据库里面,相反不能添加成功。图3-6就是修改信息的流程图。
图3-6 修改信息流程图
用户在删除的时候,系统会再次提示是不是确定要删除,因为一旦删除了,信息就不存在了,确定要删除的话,就会从数据库里将这些数据删除,重新更新数据库。图3-7演示的就是删除信息的流程图。
办公自动化管理系统并没有使用C/S结构,而是基于网络浏览器的方式去访问服务器,进而获取需要的数据信息,这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构,图4-1就是开发出来的程序工作原理图。
图4-1 系统工作原理图
系统的设计和划分是系统的核心研究问题,以确定整体结构和功能模块。该系统的结构化设计的思想,是自顶向下的方式将系统分成若干个子系统,以及反过来的子系统分成模块,其被划分成子模块,层划分各计算机可执行模块可迄今用作一个单独的程序。
本办公自动化管理系统的结构图如图4-2所示。
图4-2 系统结构图
(1)登录模块顺序图
登录模块主要满足了管理员、员工以及部门的权限登录,登录模块的顺序图如图4-3所示。
图4-3 登录模块顺序图
(2)添加信息模块顺序图
管理员、部门以及员工登录后均可进行信息的添加,添加信息顺序图如图4-4所示
图4-4 添加信息模块顺序图
E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。
实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。
属性:E-R图中的属性,是指实体的属性,实体由多条属性所构成,属性拥有自己的数据类型,数据大小。属性的优劣决定了E-R图中实体的健全性、完整性。
关系:E-R图中的关系是指实体之间的关系,用菱形来表示实体间的关系,这些菱形关系的联系上有着一对多或多对多的数据联系,这些构成了E-R图的关系,E-R图的关系紧密连接了实体,使实体间的关联性更加的显著、易懂。本办公自动化管理系统的E-R图如下所示:
办公自动化管理系统采用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 | 否 | 是 |
管理员要想进入本系统进行管理操作,必须登录系统后台,管理员登录界面展示如图5-1所示。
图5-1 管理员登录界面图
管理员可增删改查员工信息,员工管理界面如图5-2所示。
图5-2 员工管理界面
管理员可添加、修改和删除部门信息,部门管理界面展示如图5-3所示。
图5-3 部门管理界面
管理员可增删改查员工档案信息,员工档案管理界面展示如图5-4所示,添加员工档案界面展示如图5-5所示。
图5-4 员工档案管理界面
图5-5 添加员工档案界面
管理员可增删改查公司公告信息,公司公告管理界面如图5-6所示,添加公司公告界面展示如图5-7所示。
图5-6 公司公告管理界面
图5-7 添加公司公告界面
管理员可查看员工请假信息,并可对其进行审核、修改和删除操作,员工请假管理界面展示如图5-8所示。
图5-8 员工请假管理界面
员工在登录界面可输入用户名和密码,选择登录类型,点击登录按钮进行登录系统,员工登录界面如图5-9所示。
图5-9 员工登录界面
用户在系统主界面可查看系统信息,包括首页、公司公告以及公司新闻等,系统主界面展示如图5-10所示。
图5-10 系统主界面
员工登录后可添加员工考勤信息,添加员工考勤界面如图5-11所示。
图5-11 添加员工考勤界面
员工通过本平台可进行添加请假,员工请假界面展示如图5-12所示。
图5-12 员工请假界面
部门可增删改查工作内容信息,工作内容管理界面展示如图5-13所示。
图5-13 工作内容管理界面
部门可增删改查工作报表信息,工作报表管理界面展示如图5-14所示。
图5-14 工作报表管理界面
系统测试主要是判断系统是否可以正常运行,功能模块是否可以实现操作。程序代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好,再进行程序测试时也会也会发现一个重来没有被发现的错误信息。
测试不仅是系统开发的开始,而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段。从实际情况来看,最初的问题很可能是一个小错误,根据按钮的原理,按钮后的按钮位错将是所有位错。该系统的原因也同样适用,随着后续的开发工作,误差将越来越严重。为了避免问题在后续编码,测试和设计,避免扩大国家的问题。在测试系统中,开发人员应该站在客户的角度来处理测试工作,而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先,用户界面和客户需求是一致的,设置界面和设计风格统一;第二,创新设计接口规范设计标准,具有独特的审美特征;最后,人类传统的接口以满足审美需求,不能盲目地追求一种独特的,合理的规划布局,符合审美标准。
本测试主要是系统是否能够进行服务器进行处理信息的能力,不同的用户发出不同的服务请求,系统必须能够准确的进行数据的传达,在这种情况下进行测试响应的时间、内存使用的情况和CPU占用大小等指标,系统完成设计必须保证信息的正确性,信息紊乱带来的后果是非常可怕的,所有必须要进行压力测试,通过本测试进行系统相应速度、稳定性能和处理能力进行优化。
运用黑盒子测试的测试办法,把各个不同功能的软件模板进行区分、管理。对于不同的模块独立的分装起来,在传统测试的时候要进行数据的统一测试,完成对系统的概要设计详细解读资料、需要解决的问题,及操作的详细应用说明等内容来视作测试的突破口,对测试的对象进行逐一对照检查,并针对单个的程序检测延伸至这个研发过程中单个及整个集成单元的检测中,要有规律有顺序的进行,不但可以缩短我们的工作时效,避免返工的操作,也可以对可用性负责,提高了可操作性和软件研发的实用性。通过对系统概要设计验证测试,测试系统的统一管理方式,对系统的各个功能模块以及系统的性能进行测试,验证系统的功能以及系统的性能。
为了保证测试工作的有效进行,同时保持工作质量,可将测试工作按内容划分为以下几个部分,即:审核代码、单元测试、集成测试、系统测试和预期测试。
(1)审核代码
即审查编写的代码,检查其语法以及使用是否规范,并及时加以校正。
(2)单元测试
即检查系统中各个小版块的程序设置,将其划分为不同单元,分别进行测试以及校正。通过不同单元具备的功能性差别,对其进行不同目的的测试,以达到各单元系统的正确性。
(3)集成测试
在测试完各个单元系统后,将整个程序整体进行统一测试,即为集成测试。此举既可以检查单元测试中存在的遗漏,也可以检查各单元集合后是否存在衔接、过渡等方面的错误,子功能与主功能是否吻合,数据是否正确。
(4)预期测试
通过对整个程序的测试,来检查是否能够实现用户预期体验效果,即是否满足用户的各项需求,各个按钮是否有效,系统开发是否达到预期效果。
(5)系统测试
在完成各项测试后,仍然需要进行统一的系统整合测试,可从安全性、性能、功能性三个方面入手:
①安全性测试:应对该系统的安全防范功能进行测试,防止用户信息泄露或者交易流程错误等,避免非法手段的干扰。
②性能测试:即系统最高负荷承受限度,测试系统在达到某负荷条件下是否能保持正常运行。
③功能性测试:测试系统是否满足用户的各项需求,是否存在功能缺失。
通过测试的整个过程,每个模块的功能都还比较成功,但也发现了一些问题,比如登录页面登录进不了系统,是因为配置文件中的数据库的密码不一致等,在发现后及时进行了修改。目前系统还存在很多需要改进的地方,将会在今后的使用和维护中不断完善。
在这次的毕业设计当中,让我把课堂上学到的知识全部学以致用,让我对网站的设计和开发有了更加深入的理解,对数据库的运用也更加的灵活,不在局限于书本上的知识,以下几点是我本次毕业设计的体会:
(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);
}
}