版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论1.1课题研究的来源与意义基于SSM的在线办公平台系统的研究来源于当今信息技术发展的趋势,以及企业信息化建设的需求。随着互联网和移动互联网的普及,企业内部管理和协作也面临了新的挑战和机遇。而基于互联网和移动互联网的在线办公平台系统,能够提高使用者的工作效率,解决传统工作方式的问题。本系统实现了在线办公平台,平台能够为企业内部提供一个集中管理各种日常办公事务的平台,包括员工请假、报销、违纪罚款等各种操作。同时,它还支持会议室预约和线上会议管理,方便企业内部的沟通和协作。本系统采用了前后端分离的开发模式,能够提高系统的性能和用户体验。通过研究这个系统的实现,企业能够更好地了解信息化建设的方法和流程,提高内部管理和协作的效率,为企业的发展提供更好的支持。1.2国内外发展状况基于SSM的在线办公平台在国外相对较少,但是有许多国际知名的在线办公平台,例如:GoogleDrive、Dropbox和OneDrive等。这些平台提供类似于国内在线办公平台的文档管理、协作、文件共享等功能,并且通过不断的更新和改进,持续地推出新功能来吸引用户。2019年,Martin等人在《InternationalJournalofInnovativeTechnologyandExploringEngineering》中提到,在开发在线办公系统时,SSM框架具有良好的扩展性和可维护性,可以提高系统的稳定性和性能,但需要注意合理的设计和实现。2020年,Samantha等人在《JournalofInformationSystemsEducation》中指出,SSM框架可以帮助开发者快速构建在线办公系统,并提供了基本的安全和权限控制功能,但在实现复杂业务时需要进一步优化和定制。根据相关文献研究显示,基于SSM的在线办公平台在国内市场得到了广泛的应用和认可。2021年吕梦珂、刘海鹏在《软件与集成系统》杂志上发表了《基于SSM框架的办公自动化系统设计与实现》一文,提到该系统采用SSM框架进行开发,实现了部门管理、员工管理、请假管理、报销管理等功能模块,提高了企业的管理效率和信息处理能力,但涉及系统的用户体验和界面设计问题REF_Ref3331\r\h[1]。陈梓皓、刘志刚、刘旭辉等人发表的,题为《基于SSM的办公自动化系统设计与实现》,文章提出了一个基于SSM框架的在线办公系统的设计和实现方案。在该系统中,使用了Spring、SpringMVC和MyBatis框架,前端采用了HTML、CSS和JavaScript,后端使用了MySQL数据库,并且实现了诸如部门管理、用户管理、角色管理、日程管理、公告管理等重要功能模块。综上所述,基于SSM的在线办公平台在国内市场的应用领域已经逐渐扩展到了多个行业领域,同时在用户体验和数据安全方面也得到了越来越多的关注。未来,随着技术的不断发展和市场的变化,这些平台需要不断创新和改进,以满足不断变化的用户需求和市场竞争的挑战。1.3研究内容在需求分析的基础上对基于SSM的在线办公平台系统进行设计和实现,本系统将会以SSM为框架,JAVA为开发语言以前后端分离开发技术、Vue、Restful、Tomcat作为主要技术开发,本系统的设计包括系统界面设计,数据结构和数据流程的设计,系统实现以及系统测试。本系统主要为了方便员工在公司的一些基本要求,本系统包括管理员以及员工两个角色,功能上要实现员工请假功能,员工报销功能,用户管理功能,会议管理功能,违纪罚款功能,部门管理功能,角色管理功能,任务审批功能,会议室管理功能等。
第2章系统关键技术本次系统的设计是建立在SSM框架以及MySQL数据库之上,以实现高效的功能和性能。为了开发该系统。在开发工作中使用了许多高效率的开发工具,可以更快速、更准确地完成开发任务,同时也确保了系统的稳定性和可靠性。在系统的架构和设计方面,本系统注重用户体验和系统的易用性,同时也考虑了系统的可扩展性和安全性,以确保该网站能够长期稳定地运行并提供优质的服务。2.1SSM框架技术SSM框架是指Spring、SpringMVC和MyBatis三个框架的组合。Spring:它是一个提供服务内对象管理的工具,能够连接并且继承几大框架。提供了很多组件和模块,可以用来管理Java应用程序中的对象、处理事务、提供安全认证、缓存等功能。SpringMVC框架:作为视图层的框架,他可以对用户的请求进行直接处理。接收用户请求并将其分发给合适的处理程序。SpringMVC还提供了丰富的视图解析器和数据绑定机制,可以方便地将数据展示给用户。MyBatis框架:作为持久层的框架,他可以方便地进行SQL查询和更新操作。与Hibernate等ORM框架不同,MyBatis更加灵活,可以自由控制SQL语句,从而获得更好的性能和可维护性。SSM框架则是以上三种框架的一种组合。他可以帮助开发人员更加高效地实现业务逻辑的编写,同时也可以更加方便地进行数据库操作。开发人员可以利用SSM框架的特性来快速搭建Web应用。SSM框架的优点不仅在于它的集成性,还在于它的灵活性。开发人员可以根据自己的需求来选择框架的组合方式。这样就可以根据自己的需求来灵活地选择框架的组合方式,使得开发更加高效和便捷。2.2VUEVue.js是一个流行的JavaScript前端框架,用于构建用户界面和单页应用程序。它的设计目标是为了简化Web开发,并提供了一种灵活的方式来实现交互式用户界面。Vue.js主要关注的是视图层,因此它可以很容易地与其他库或现有的项目整合在一起,使得开发者可以选择最适合自己的工具和库来完成整个项目。它采用了MVVM(Model-View-ViewModel)的架构模式,其中Model代表数据模型,View代表用户界面,ViewModel则是连接Model和View的桥梁。Vue.js将用户界面分解为一个组件树,每个组件都可以拥有自己的状态和属性,并可以通过组件间的事件来实现通信。Vue的插件生态非常丰富,包括路由、状态管理、UI库等,可以满足各种需求。Vue.js是一款非常优秀的JavaScript框架,具有数据驱动、生命周期钩子函数、组件化开发、渐进式设计等特点。它适用于构建各种规模的应用程序,也可以配合其他库或插件进行快速开发。2.3前后端分离开发模式前后端分离开发模式是一种常见的Web应用程序开发模式,其核心思想是将应用程序的前端和后端分离开来,分别由不同的团队或开发者负责开发和维护。降低了开发中的耦合性。在这种模式下,前端通过API向后端发送请求和获取数据。这种方式使得前后端可以独立地开发和调试,不会相互干扰或依赖,同时也提高了应用程序的可维护性和可扩展性。此模式促进了技术的多样化和灵活性,开发者可以选择最适合自己的技术栈和工具来实现应用程序的不同部分。提高了开发效率和应用程序质量,同时也为开发者提供了更多的选择和自由度。2.4TomcatTomcat是一款常用于中小型项目的Web容器,可以运行在多种操作系统上,如Windows、Linux和MACOS等。Tomcat作为一个JavaServlet容器,主要用于部署和运行JavaWeb应用程序。Tomcat提供了一个Web服务器环境,可以接收HTTP请求,并根据请求的URL来选择相应的Servlet进行处理。Tomcat支持Servlet、JSP和JavaServerFaces(JSF)等JavaWeb技术,可以方便地进行JavaWeb应用程序的开发和部署。除了支持JavaWeb技术之外,Tomcat还可以与其他Web服务器(如Apache、IIS等)进行集成,从而提供更加强大的Web服务功能。2.5RestfulRestful是一种用于构建网络应用程序的设计架构。其理念才思独具。RESTful风格,充斥着极简主义之思想。其根本原则乃在于将应用程序中的资源以URI(统一资源标识符)的形式进行暴露,并通过HTTP协议进行操作。各种资源以自描述的形式进行传输,而不依赖于任何特定的状态信息。注重系统的可伸缩性和松耦合性。其架构灵活,资源之间的关系清晰。资源以自包含的方式呈现,不需依赖于其他资源的状态信息,使得系统更具可扩展性。RESTFUL风格具有简洁、灵活、可扩展、易于维护等优点,可以提高Web服务的性能和可靠性。
第3章系统分析3.1系统需求分析基于SSM的在线办公平台是一个集成了多种办公功能的全面在线办公系统。首先,系统的功能模块主要包括部门管理、角色管理、用户管理、审批任务、员工请假、违纪罚款、报销管理、会议室管理和线下、线上会议管理等多个模块。系统具备良好的性能和可用性,能够保证数据和信息的安全和可靠性,通过该系统可以使企业内部的各个部门和员工可以更加高效地协作和沟通,进一步提升企业的生产力和竞争力。系统管理员用例图,如图3.1所示。图3.1系统管理员用例图系统用户用例图,如图3.2所示。图3.2系统用户用例图3.2系统可行性分析基于SSM(Spring+SpringMVC+MyBatis)的在线办公平台是一种新型的企业内部办公系统,其核心目的是为企业提供一个高效的办公工具,方便企业内部各个部门之间的协作和沟通。在进行系统设计和开发之前,需要对该系统的可行性进行评估。3.2.1技术可行性基于SSM的在线办公平台是一个基于JavaEE的Web应用程序,使用了Spring、SpringMVC、MyBatis等框架进行开发,技术可行性得到保证。JavaEE是一种企业级开发的技术,具有良好的安全性和可靠性,可以满足大型企业的需求。SpringMVC框架是一种轻量级的Web应用程序框架,可以实现MVC模式,支持RESTFUL架构。MyBatis是一个优秀的Java持久化框架,提供了很多便捷的持久化方法和API,使得数据访问更加简单和高效。以上这些技术的使用,保证了基于SSM的在线办公平台的稳定性、可靠性和高性能,可以满足大型企业的需求。因此,从技术可行性的角度来看,基于SSM的在线办公平台是可行的。3.2.2经济可行性首先在硬件设备方面,需要购置服务器、数据库、存储设备等硬件设备,其成本较高,但是可以通过云计算等方式来降低硬件成本。其次在软件开发方面,需要雇佣开发人员进行系统开发,软件开发成本也较高,但也可以通过使用开源软件和第三方库来降低开发成本。在人员培训方面,需要对使用该系统的员工进行培训,成本相对较低。在维护和运营成本方面,需要定期维护系统并进行更新,成本也相对较低。对于预期收益方面,基于SSM的在线办公平台可以提高办公效率,降低办公成本。员工可以通过系统实现线上沟通和协作,避免了大量的邮件往来和纸质文件传递,节省了时间和成本。另外,系统可以实现任务分配和监督,提高了管理效率和员工工作质量。综合考虑,基于SSM的在线办公平台的经济可行性较高。虽然在硬件设备和软件开发方面的投资成本较高,但是系统可以带来可观的收益,节省办公成本和提高管理效率,从而使得投资成本得到回报。3.2.3操作可行性用户的使用习惯是影响操作可行性的重要因素。如果系统的使用与员工的日常工作习惯不符,那么员工可能会难以适应和接受该系统。故此,本系统充分考虑了用户的日常操作习惯,充分提高了系统用户的友好性,降低使用门槛。系统的易用性是操作可行性的重要因素之一。如果系统的操作界面复杂,功能不明确,那么员工使用起来可能会感到困难和繁琐,影响操作效率。因此,在系统设计和开发的过程中,需要注意界面设计和交互方式,简化操作流程,提高系统的易用性。系统的安全性也是操作可行性的重要保障。如果系统存在数据泄露或网络攻击等安全问题,那么企业将面临巨大的安全风险。所以在系统设计和开发的过程中,需要注重系统的安全性,采取合适的措施。基于SSM的在线办公平台的操作可行性较高,但需要注重用户需求、系统易用性、稳定性和安全性等方面的问题,从而保证系统的顺利运行和员工的正常使用。3.3系统流程分析3.3.1登录流程图本次系统的登录流程如图3.3所示。图3.3系统登录流程图3.3.2数据录入流程图系统数据录入流程如图3.4所示。图3.4系统数据录入流程图第4章系统总体设计在线办公平台的系统总体设计包括系统的架构设计、功能模块划分、数据库设计和界面设计等方面。首先系统架构方面,采用前后端分离的架构设计。数据库选用了MySQL进行数据存储。后端服务选用了Java作为开发语言,并使用了Web开发框架组合。根据系统需求和功能模块设计了各个功能的详细实现方案,包括前端页面设计、后端接口设计、权限管理、数据校验、异常处理等。在线办公平台的界面设计需要考虑用户的使用习惯和操作方式,采用简洁明了的设计风格,提供良好的用户体验。同时,还需要考虑系统的可访问性和响应速度。采用响应式设计和前端优化等技术手段,提高系统的性能和稳定性。4.1系统总体功能设计通过对在线办公系统进行详细的需求分析,对系统进行了整体的功能设计,功能设计是开发设计的核心,如图4.1所示图4.1系统功能模块图后台服务程序结构如图4.2所示。图4.2后台工程结构图4.2系统结构设计系统结构采用了MVC结构模式,其中包括前端UI层,业务处理层,数据持久层。其中前端UI层主要使用了VUE技术,使用Bootstrap、jQuery等框架,实现了良好的界面效果和用户体验。业务逻辑层采用Spring框架,实现了IOC和AOP等核心功能,进行各个业务的处理。持久化层通过Mybait的协助,对数据进行了高效的操作和管理,保证了数据的稳定性和可靠性。本系统结构设计清晰、层次分明、模块化程度高,有利于系统的维护和扩展。同时,系统还使用了Redis、Ehcache等缓存技术,提高了系统的性能和稳定性,满足了用户的需求和期望。4.3数据库概念结构设计用户实体:包括创建时间、用户ID、用户名、用户密码、是否长期有效、昵称、头像网址、手机号、状态,如图4.4所示。图4.4用户实体图角色实体:包括角色ID、角色名称、权限集合、描述、系统角色内置权限、是否为系统内置角色,如图4.5所示。图4.5角色实体图会议实体:包括状态、会议ID、会议题目、日期、开会地点、开始时间、结束时间、会议类型、参与者、会议内容、创建时间,如图4.6所示。图4.6会议实体图报销申请实体:包括申请人、报销内容、总金额、报销类型、借款、差额、审批状态,如图4.7所示。图4.7报销申请实体图会议室实体:包括会议室名称、会议所能容纳最大人数、备注、状态,如图4.8所示。图4.8会议室实体图员工请假实体:包括请假原因、请假开始时间、请假结束时间、申请请假的审批状态、请假类型、请假天数,如图4.9所示。图4.9员工请假实体图违纪罚款实体:包括罚款原因、罚款金额、罚款类型、缴纳罚款状态、微信支付ID,如图4.10所示。图4.10违纪罚款实体图总体E-R图如图4.11所示。图4.11总体E-R图4.4数据库逻辑结构设计数据库逻辑结构设计包括以下几个方面:一是对于系统中各个模块的数据表的设计,需要考虑表之间的关联关系,确保数据表之间的数据完整性和一致性;二是需要对表中各个字段的数据类型、长度、默认值、约束条件等进行定义和设置,以保证数据的准确性和安全性;在数据库逻辑结构设计过程中,需要与开发人员和系统设计人员密切协作,充分考虑系统需求和设计要求,以达到最优的系统性能和用户体验。1.用户表用户表中记录的是系统用户账户的全部信息,表结构如表4-1所示。表4-1用户表字段名类型是否为空索引默认值说明idintNOPRI无主键usernamevarchar(150)YESUNI无用户名passwordvarchar(240)YES无无密码open_idvarchar(100)YESUNI无长期授权字符串nicknamevarchar(40)YES无无昵称photovarchar(300)YES无无头像网址namevarchar(20)YES无无姓名sexenum('男','女')YES无无性别telchar(11)YES无无手机号码emailvarchar(200)YESMUL无邮箱hiredatedateYES无无入职日期rolejsonNO无无角色roottinyint(2)NO无0是否是超级管理员dept_idintunsignedYESMUL无部门编号statustinyintNOMUL无状态create_timedatetimeNO无CURRENT_TIMESTAMP创建时间2.报销表公司员工的报销请求都将存储在这张表中,如下表4-2所示表4-2报销表字段名类型是否为空索引默认值说明idvarchar(255)NOPRI无主键user_idintNOMUL无用户IDcontentjsonNO无无报销内容续表4-2报销表字段名类型是否为空索引默认值说明amountdecimal(10,2)NO无无总金额anleihendecimal(10,2)NO无无借款file_urlvarchar(255)YES无无balancedecimal(10,2)NO无无差额type_idtinyintNOMUL无类型:1普通报销,2差旅报销statustinyintNOMUL无状态:1审批中,2已拒绝,3审批通过,4.已归档instance_idvarchar(200)YES无无工作流实例IDcreate_timedatetimeNOMULCURRENT_TIMESTAMP创建时间3.流程配置表本系统设计一些工作流程的业务,需要此表存储工作流程的详细信息,如表4-3所示。表4-3流程配置表字段名类型是否为空索引默认值说明idvarchar(60)NOPRI无主键idprocess_keyvarchar(60)YES无无流程定义KEYbusiness_routevarchar(100)YES无无业务申请路由名form_namevarchar(100)YES无无关联表单组件名create_datedatetimeYES无CURRENT_TIMESTAMP创建时间update_datedatetimeYES无CURRENT_TIMESTAMP更新时间4.会议室表会议室表中记录了会议室的名称、会议室所能容纳的最大人数以及备注,如表4-4所示。表4-4会议室表字段名类型是否为空索引默认值说明idintNOPRI无主键namevarchar(20)NO无无会议室名称maxsmallintNO无无最大人数descvarchar(20)YES无无备注statustinyintYES无1状态,0不可用,1可用5.会议表线下或者线上会议的参会时间、地址、结束时间、参与者、会议的内容、会议的主题、出席人员以及未出席的等相关信息都记录在此表中呢,如表4-5所示。表4-5会议表字段名类型是否为空索引默认值说明idbigintunsignedNOPRI无主键uuidvarchar(120)YES无无UUIDtitlevarchar(150)NO无无会议题目creator_idbigintNOMUL无创建人IDdatedateNOMUL无日期placevarchar(200)YES无无开会地点statussmallintNO无无状态(0:待提交、1.申请中,2.审批未通过,3.审批通过,4.会议进行中,5.会议结束)starttimeNO无无开始时间endtimeNO无无结束时间typesmallintNOMUL无会议类型(1在线会议,2线下会议)membersjsonNO无无参与者descvarchar(400)NO无无会议内容续表4-5会议表字段名类型是否为空索引默认值说明instance_idvarchar(50)YES无无工作流实例IDpresentjsonYES无无出席人员名单UnpresentjsonYES无无未出席人员名单create_timedatetimeYES无无创建时间6.员工请假表员工请假的原因、什么时候开始请假、请假的状态、结束时间、天数、请假的类型都在表中,如表4-6所示。表4-6员工请假表字段名类型是否为空索引默认值说明idvarchar(120)NOPRI无主键IDuser_idintunsignedNO无无用户IDreasonvarchar(200)NO无无请假原因startdatetimeNO无无开始时间statustinyintYES无无状态:0:待提交,1请假中,2不同意,3已同意instance_idvarchar(200)YES无无enddatetimeNO无无结束时间daysvarchar(20)NO无无天数typetinyintunsignedNO无无类型:1病假,2事假create_timedatetimeNO无CURRENT_TIMESTAMP创建时间file_urlvarchar(100)YES无无7.违纪罚款表违纪员工的用户名、罚款金额、罚款类型、罚款原因、罚款缴纳状态、以及微信支付单都储存在表里,如表4-7所示。表4-7违纪罚款表字段名类型是否为空索引默认值说明idintNOPRI无主键uuidvarchar(150)NOUNI无UUIDuser_idintNOMUL无用户IDamountdecimal(10,2)unsignedNO无无罚款金额type_idintNOMUL无罚款类型reasonvarchar(255)NO无无罚款原因prepay_idvarchar(100)YESUNI无微信支付单IDstatustinyintNOMUL无状态:1未缴纳,2已缴纳create_timedatetimeNOMULCURRENT_TIMESTAMP创建时间8.角色管理表管理员对员工进行角色管理中里面的角色名称、权限集合、描述、系统角色内置权限以及是否为系统内置角色的修改都储存在数据库表里,如表4-8所示。表4-8角色管理表字段名类型是否为空索引默认值说明idintunsignedNOPRI无主键role_namevarchar(20)NOUNI无角色名称permissionsjsonNO无无权限集合descvarchar(300)YES无无描述default_permissionsjsonYES无无系统角色内置权限systemictinyint(10)YES无0是否为系统内置角色
第5章系统设计与实现5.1员工注册模块公司有新的员工来公司报道上班,就需要注册一个属于自己的账号,这就需要管理员在用户管理界面来进行添加员工的详细信息,如图5.1所示。员工账号注册完成,如图5.2所示。图5.1管理员添加新员工界面图5.2员工账号注册成功界面5.2员工登录模块员工用自己的专属账号可以登录到系统里面,输入自己的账号并输入正确的密码之后点击登录系统,如图5.3所示。员工进入系统之后就能看见系统的首页界面,如图5.4所示。图5.3员工登录界面图5.4员工进入系统首页本功能模块的关键代码如下:@GetMapping("/createQrCode")@Operation(summary="生成二维码Base64格式的字符串")/***检测登陆验证码**@paramform*@return*/@PostMapping("/checkQrCode")@Operation(summary="检测登陆验证码")publicRcheckQrCode(@Valid@RequestBodyCheckQrCodeFormform){booleanbool=userService.checkQrCode(form.getCode(),form.getUuid());returnR.ok().put("result",bool);}5.3员工请假模块员工用户可以在员工请假界面请假,需要点击请假,就会弹出请假申请表,请假开始时间不跟截止时间相重合。如图5.5所示。提交请假单之后如图5.6所示。员工已经提交的请假单需要下载的可以下载下来去找人事签字,如图5.7所示。 图5.5填写请假单图5.6提交请假单图5.7员工请假单本功能模块的关键代码如下:@PostMapping("/insert")@Operation(summary="添加请假记录")@SaCheckLoginpublicRinsert(@Valid@RequestBodyInsertLeaveFormform){//验证结束时间是不是早于开始时间DateTimedate_1=DateUtil.parse(form.getStart());DateTimedate_2=DateUtil.parse(form.getEnd());if(date_1.isAfterOrEquals(date_2)){returnR.error("请假开始时间不能晚于或者等于截止时间");}HashMapparam=newHashMap(){{put("userId",StpUtil.getLoginIdAsInt());put("start",form.getStart());put("end",form.getEnd());}};if(leaveService.searchContradiction(param)){returnR.error("当前请假申请与已有请假申请日期上有交集覆盖");}5.4员工缴纳罚款模块员工用户如果出现违纪罚款就可以登进系统进入违纪罚款查看自己的罚款类型和罚款金额,如图5.8所示。员工要想进行交罚款,点击交款就会弹出缴纳罚款的二维码,直接扫码缴纳就能缴纳罚款,如图5.9所示。图5.8查看罚款图5.9缴纳罚款本功能模块的关键代码如下:@PostMapping("/searchAmectByPage")@Operation(summary="查询罚款分页记录")@SaCheckLoginpublicRsearchAmectByPage(@Valid@RequestBodySearchAmectByPageFormform){if((form.getStartDate()!=null&&form.getEndDate()==null)||(form.getStartDate()==null&&form.getEndDate()!=null)){returnR.error("startDate和endDate只能同时为空,或者不为空");}intpage=form.getPage();intlength=form.getLength();intstart=(1)*length;}5.5员工申请报销模块员工出差回来之后可以申请报销出差期间花费的费用提交报销申请表,填写报销种类、借款金额、项目名称、项目类别、以及报销金额然后点击确定提交等待审批。如图5.10所示。员工可以查看自己的报销申请费用单,给报销的具体金额,如图5.11所示。图5.10报销申请表图5.11费用报销单本功能模块的关键代码如下:@PostMapping("/searchReimByPage")@Operation(summary="查询报销分页记录")@SaCheckLoginpublicRsearchReimByPage(@Valid@RequestBodySearchReimByPageFormform){intpage=form.getPage();intlength=form.getLength();intstart=(1)*length;HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);param.put("start",start);param.put("currentUserId",StpUtil.getLoginIdAsInt());if(!(StpUtil.hasPermission("REIM:SELECT")||StpUtil.hasPermission("ROOT"))){param.put("userId",StpUtil.getLoginIdAsInt());}PageUtilspageUtils=reimService.searchReimByPage(param);returnR.ok().put("page",pageUtils);}5.6员工查询会议室模块员工可以查询公司每个会议室的使用情况,根据会议室名称可以查询到这个会议室是否可使用,还可以查看会议室的人数上限,如图5.12所示。图5.12查询会议室本功能模块的关键代码如下:@PostMapping("/searchFreeMeetingRoom")@Operation(summary="查询空闲会议室")@SaCheckLoginpublicRsearchFreeMeetingRoom(@Valid@RequestBodySearchFreeMeetingRoomFormform){HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);ArrayList<String>list=meetingRoomService.searchFreeMeetingRoom(param);returnR.ok().put("list",list);}5.7员工预约线下会议模块员工可以预约线下会议,需要填写会议申请表,写好主题,内容日期等必填的信息点提交就可以,如图5.13所示。员工成功预约到线下会议如图5.14所示。图5.13预约线下会议图5.14线下会议预约成功本功能模块的核心代码如下:@PostMapping("/searchMeetingRoomByPage")@SaCheckLoginpublicRsearchMeetingRoomByPage(@Valid@RequestBodySearchMeetingRoomByPageFormform){intpage=form.getPage();intlength=form.getLength();intstart=(1)*length;HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);param.put("start",start);PageUtilspageUtils=meetingRoomService.searchMeetingRoomByPage(param);returnR.ok().put("page",pageUtils);}@PostMapping("/insert")@SaCheckPermission(value={"ROOT","MEETING_ROOM:INSERT"},mode=SaMode.OR)publicRinsert(@Valid@RequestBodyInsertMeetingRoomFormform){TbMeetingRoommeetingRoom=JSONUtil.parse(form).toBean(TbMeetingRoom.class);introws=meetingRoomService.insert(meetingRoom);returnR.ok().put("rows",rows);}5.8员工预约线上会议模块员工可以查看线上会议开会的会议的主题、日期、人数等信息如图5.15所示。员工可以预约线上会议,预约线上会议需要填写申请表如图5.16所示。线上会议是以为视频会议形式来开的,可以看到进入会议的参会人员,如图5.17所示。图5.15查看线上会议图5.16填写预约线上会议申请表图5.17视频会议本功能模块的核心代码如下:@PostMapping("/searchOnlineMeetingByPage")@Operation(summary="查询线上会议分页数据")@SaCheckLoginpublicRsearchOnlineMeetingByPage(@Valid@RequestBodySearchOnlineMeetingByPageFormform){intpage=form.getPage();intlength=form.getLength();intstart=(1)*length;HashMapparam=newHashMap()PageUtilspageUtils=meetingService.searchOnlineMeetingByPage(param);returnR.ok().put("page",pageUtils);}5.9管理员登录模块因为管理员有权限可以登录员工的账号,在登上员工账号之后也可以退出员工的账号如图5.18所示。管理员退出员工账号之后可以通过切换账号来登录自己的账号,如图5.19所示。图5.18管理员退出员工账号图5.19管理员登录自己账号本功能模块的核心代码如下:@Operation(summary="修改密码")@SaCheckLogin//判断用户是否登录@PostMapping("/updatePassword")publicRupdatePassword(@Valid@RequestBodyUpdatePasswordFormupdatePasswordForm){intuserId=StpUtil.getLoginIdAsInt();///cookie的token转换成useridHashMapmap=newHashMap(){{put("userId",userId);put("password",updatePasswordForm.getPassword());}};introws=userService.updatePasswordByid(map);returnR.ok().put("rows",rows);}@GetMapping("/logout")@Operation(summary="退出系统")publicRlogout(){StpUtil.logout();//缓存清除,cookie过期returnR.ok();}5.10部门管理模块管理员可以在部门管理界面查看部门的联系电话、员工数量、邮箱和新增部门,查询部门如图5.20所示。管理员新增部门必须要填写的是部门的名称,电话、邮箱以及备注可以不填,如图5.21所示。部门新增成功,如图5.22所示。图5.20查询部门图5.21添加新增部门图5.22部门添加成功本功能模块的关键代码如下:@GetMapping("/searchAllDept")@Operation(summary="查询所有部门")publicRsearchAllDept(){ArrayList<HashMap>list=deptService.searchAllDept();returnR.ok().put("list",list);}@PostMapping("/searchById")@Operation(summary="根据ID查询部门")@SaCheckPermission(value={"ROOT","DEPT:SELECT"},mode=SaMode.OR)publicRsearchById(@Valid@RequestBodySearchDeptByIdFormform){HashMapmap=deptService.searchById(form.getId());returnR.ok(map);}5.11角色管理模块系统中包含很多的角色信息,管理员可以查看、新增以及批量删除各个角色的权限数量以及关联用户信息,如图5.23所示。如果公司来了一个部门主管,管理员也要把他的信息添加进来进行信息管理,角色信息添加如图5.24所示。图5.23角色管理界面图5.24新增角色管理界面本功能模块的关键代码如下:@PostMapping("/searchRoleByPage")@Operation(summary="查询角色分页数据")@SaCheckPermission(value={"ROOT","ROLE:SELECT"},mode=SaMode.OR)publicRsearchRoleByPage(@Valid@RequestBodySearchRoleByPageFormform){intpage=form.getPage();intlength=form.getLength();intstart=(1)*length;HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);param.put("start",start);PageUtilspageUtils=roleService.searchRoleByPage(param);returnR.ok().put("page",pageUtils);}@PostMapping("/insert")@Operation(summary="添加角色")@SaCheckPermission(value={"ROOT","ROLE:INSERT"},mode=SaMode.OR)publicRinsert(@Valid@RequestBodyInsertRoleFormform){TbRolerole=newTbRole();role.setRoleName(form.getRoleName());role.setPermissions(JSONUtil.parseArray(form.getPermissions()).toString());role.setDesc(form.getDesc());introws=roleService.insert(role);returnR.ok().put("rows",rows);}5.12在线审批模块系统中的许多业务都需要进行在线审批,流程推进。管理员可以查看待审批的审批事项、审批的类别、待审批的人数,如图5.25所示。审批的流程过程,如图5.26所示。管理员在审批的时候会出现对该条申请的意见同意或者否决,根据事情的具体情况选择同意或者否决,如图5.27所示。图5.25在线审批界面图5.26审批流程结果图5.27管理员审批申请意见本功能模块的关键代码如下:@PostMapping("/searchTaskByPage")@SaCheckPermission(value={"WORKFLOW:APPROVAL","FILE:ARCHIVE"},mode=SaMode.OR)publicRsearchTaskByPage(@Valid@RequestBodySearchTaskByPageFormform){HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);PageUtilspageUtils=taskService.findWaitTask(form);//PageUtilspageUtils=approvalService.searchTaskByPage(param);returnR.ok().put("page",pageUtils);}5.13请假管理模块管理员可以查看那个部门的员工请假,可以查询到他的请假起始时间,请假截止时间,请假类型以及请假状态,如图5.28所示。管理员可以在员工请假界面查看公司全体员工的请假,并可以查看单独一个人的请假单如图5.29所示。图5.28查看员工请假图5.29查看员工请假单本功能模块的关键代码如下:publicRsearchLeaveByPage(@Valid@RequestBodySearchLeaveByPageFormform){intpage=form.getPage();intlength=form.getLength();intstart=(1)*length;HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);param.put("start",start);param.put("myId",StpUtil.getLoginIdAsInt());if(!(StpUtil.hasPermission("LEAVE:SELECT")||StpUtil.hasPermission("ROOT"))){param.put("userId",StpUtil.getLoginIdAsInt());}PageUtilspageUtils=leaveService.searchLeaveByPage(param);returnR.ok().put("page",pageUtils);}5.14违纪罚款模块管理员可以对违纪条项进行管理,如果出现违纪的情况,点击新增罚款,填写罚款的类型,金额,原因,那个部门,并选择当事人,如图5.30所示。在年末的时候管理员还可以查看本年公司员工出现的违纪报告,已缴纳的违纪罚款金额和未缴纳罚款金额,如图5.31所示。图5.30新增违纪罚款图5.31全年违纪报告本功能模块的关键代码如下:@PostMapping("/insert")@Operation(summary="添加罚款记录")@SaCheckPermission(value={"ROOT","AMECT:INSERT"},mode=SaMode.OR)publicRinsert(@Valid@RequestBodyInsertAmectFormform){ArrayList<TbAmect>list=newArrayList<>();for(IntegeruserId:form.getUserId()){TbAmectamect=newTbAmect();list.add(amect);}introws=amectService.insert(list);returnR.ok().put("rows",rows);}5.15报销管理模块管理员可以查看公司各个部门员工提交的报销申请记录、报销类型、申请人、所属部门、报销金额等,如图5.32所示。管理员可以查看员工的报销申请费用单以及报销的具体金额,如图5.33所示。图5.32查看报销管理图5.33费用报销单本功能模块的核心代码如下:@PostMapping("/searchReimByPage")@Operation(summary="查询报销分页记录")@SaCheckLoginpublicRsearchReimByPage(@Valid@RequestBodySearchReimByPageFormform){intpage=form.getPage();intlength=form.getLength();intstart=(1)*length;HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);param.put("start",start);param.put("currentUserId",StpUtil.getLoginIdAsInt());if(!(StpUtil.hasPermission("REIM:SELECT")||StpUtil.hasPermission("ROOT"))){param.put("userId",StpUtil.getLoginIdAsInt());}PageUtilspageUtils=reimService.searchReimByPage(param);returnR.ok().put("page",pageUtils);}5.16用户管理模块管理员可以在用户管理界面查询、新增、修改、删除员工的个人信息。如果出现员工信息不符或者需要更新信息,管理员就可以对需要修改的信息进行修改如图5.34所示。图5.34修改员工信息5.17会议室管理模块管理员可以对系统里记录的会议室进行名称,人数上限,以及状态数据更新,如图5.35所示。如果后期会议室发生改变管理员点击修改进行会议室相关信息的修改,如图5.36所示。图5.35会议室界面图5.36修改会议室界面本功能模块的核心代码如下:@PostMapping("/searchFreeMeetingRoom")@Operation(summary="查询空闲会议室")@SaCheckLoginpublicRsearchFreeMeetingRoom(@Valid@RequestBodySearchFreeMeetingRoomFormform){HashMapparam=JSONUtil.parse(form).toBean(HashMap.class);ArrayList<String>list=meetingRoomService.searchFreeMeetingRoom(param);returnR.ok().put("list",list);}5.18线下会议管理模块管理员可以查询线下会议需要的会议室和开会的时间看看是否会议室有其他会议再开,再选择合适的会议室进行的会议申请如图5.37所示。会议申请成功后可以查询线下会议时间和主题如图5.38所示。图5.37线下会议图5.38查询预约成功的线下会议5.19线上会议管理模块管理员可以查看公司全部的线上会议数量、开会的时间、开会的人数、会议的主题,如图5.39所示。线上会议为视频会议管理员进入会议后可以看到进入会议的人员,如图5.40所示。图5.39线上会议界面图5.40视频会议界面本功能模块的核心代码如下:@PostMapping("/searchOnlineMeetingByPage")@Operation(summary="查询线上会议分页数据")@SaCheckLoginpublicRsearchOnlineMeetingByPagePageUtilspageUtils=meetingService.searchOnlineMeetingByPage(param);returnR.ok().put("page",pageUtils);}@PostMapping("/searchRoomIdByUUID")@Operation(summary="查询视频会议室RoomId")@SaCheckLoginpublicRsearchRoomIdByUUID(@Valid@RequestBodySearchRoomIdByUUIDFormform){LongroomId=meetingService.searchRoomIdByUUID(form.getUuid());returnR.ok().put("roomId",roomId);}
第6章功能测试本次系统在开发工作完成后需要对各项功能进行测试,主要测试的功能模块包括任务审批、员工请假、报销管理、会议室管理等模块。测试工作开展前需要对系统的测试工作做出规划,以确保测试的全面性和准确性。在测试过程中,需要模拟各种情况下的用户行为,如正常操作、异常操作、输入错误等,以测试系统的稳定性和容错性。同时还需要测试系统的性能、安全性、兼容性等方面,以保证系统能够稳定运行并满足用户的需求。在测试过程中,发现的问题需要及时记录并及时修复,以避免影响系统的正常运行。同时,还需要进行回归测试,确保修复问题后不会引入新的问题。经过多轮测试和修复,确保系统各个功能都能够正常运行,才能发布系统并投入使用。6.1系统测试目的系统测试时为了对系统中的功能模块进行检测,数据流进行检查,确保数据流以及功能业务路径正确,同时还要包括所有组件和子系统之间的交互作用,并确保系统的各项功能能够正常运行,同时也要检查系统的非功能性要求是否满足。系统测试主要是为了发现系统中的缺陷和问题,并提供有关系统性能的关键信息,以帮助开发人员改进系统,确保系统能够满足用户需求和预期的业务流程。6.2系统测试方法本次系统使用了白盒测试的方法,白盒测试是测试人员在了解被测试软件的内部结构和实现细节的基础上,编写测试用例并对其进行执行,以测试软件的各个模块、函数、路径等内部实现是否符合预期的功能和性能要求。系统测试需要制定详细的测试计划,包括测试目标、测试环境、测试用例、测试数据等,以便于全面、系统地测试软件系统的各个方面。同时,测试过程中需要收集测试数据、记录测试结果、分析测试报告,以便于及时发现和解决问题,提高软件系统的质量和可靠性。6.3系统测试结果基于SSM的在线办公系统经过测试,测试结果表明该系统具有较高的稳定性和可靠性。在单元测试阶段,针对各个功能模块进行了测试,发现并解决了一些较小的问题。在组装测试阶段,对各个功能模块进行了集成测试,确保了模块之间的协调运行。经过系统测试,最终的测试结果显示,系统的各项功能均能够正常运行,没有发现严重的缺陷和漏洞。同时,系统的响应速度也比较快,用户操作流畅,界面友好。总的来说,系统测试结果表明该系统已经可以正常投入使用。系统测试用例:表6-1系统登陆测试用例表测试编号测试目的测试步骤测试结果通过/失败TC001使用正确的用户名和密码登录系统登录成功,用户重定向到主页登录成功,用户重定向到主页通过TC002使用不存在的用户名和正确的密码登录系统登录失败,显示错误消息"用户名或密码不正确"登录失败,显示错误消息"用户名或密码不正确"通过TC003使用正确的用户名和错误的密码登录系统登录失败,显示错误消息"用户名或密码不正确"登录失败,显示错误消息"用户名或密码不正确"通过TC004使用空用户名和正确的密码登录系统登录失败,显示错误消息"请输入用户名"登录失败,显示错误消息"请输入用户名"通过TC005使用正确的用户名和空密码登录系统登录失败,显示错误消息"请输入密码"登录失败,显示错误消息"请输入密码"通过TC006使用锁定的用户账号进行登录登录失败,显示错误消息"用户账号已锁定,请联系管理员解锁"登录失败,显示错误消息"用户账号已锁定,请联系管理员解锁"通过TC007使用已禁用的用户账号进行登录登录失败,显示错误消息"用户账号已禁用,请联系管理员"登录失败,显示错误消息"用户账号已禁用,请联系管理员"通过表6-2系统角色管理测试用例表测试编号测试目的测试步骤测试结果通过/失败TC001创建新角色,填写所有必填字段角色成功创建,并显示在角色列表中角色成功创建,并显示在角色列表中通过TC002创建新角色,留空必填字段创建角色失败,显示错误消息"请填写必填字段"创建角色失败,显示错误消息"请填写必填字段"通过续表6-2系统角色管理测试用例表测试编号测试目的测试步骤测试结果通过/失败TC003创建新角色,填写已存在的角色名称创建角色失败,显示错误消息"角色名称已存在"创建角色失败,显示错误消息"角色名称已存在"通过TC004编辑现有角色,修改角色名称和权限角色成功编辑,并显示更新后的角色信息角色成功编辑,并显示更新后的角色信息通过TC005编辑现有角色,留空必填字段编辑角色失败,显示错误消息"请填写必填字段"编辑角色失败,显示错误消息"请填写必填字段"通过TC006删除现有角色角色成功删除,并从角色列表中移除角色成功删除,并从角色列表中移除通过TC007删除正在被使用的角色删除角色失败,显示错误消息"角色正在被使用,无法删除"删除角色失败,显示错误消息"角色正在被使用,无法删除"通过表6-3会议室管理测试用例表测试编号测试目的测试步骤测试结果通过/失败TC001用户成功预订会议室1.用户登录系统2.选择可预订的会议室3.输入预订信息并确认4.验证会议室状态为“已预订”系统显示会议室预订成功,会议室状态更新为“已预订”通过TC002用户预订会议室冲突1.用户登录系统2.选择已被预订的会议室3.输入预订信息并确认4.验证系统显示预订冲突错误提示系统显示预订冲突错误提示,用户无法成功预订会议室通过TC003用户取消会议室预订1.用户登录系统2.进入已预订的会议室详情页3.点击取消预订按钮4.验证会议室状态更新为“可预订”系统成功取消会议室预订,会议室状态更新为“可预订”通过续表6-3会议室管理测试用例表测试编号测试目的测试步骤测试结果通过/失败TC004管理员添加新的会议室1.管理员登录系统2.进入会议室管理界面3.点击添加新会议室按钮4.输入会议室信息并保存5.验证新的会议室在列表中显示系统成功添加新的会议室,并在列表中显示通过C005管理员删除会议室1.管理员登录系统2.进入会议室管理界面3.选择要删除的会议室4.点击删除按钮5.验证会议室从列表中移除系统成功删除会议室,并将其从列表中移除通过TC006用户查看会议室列表1.用户登录系统2.进入会议室列表页面3.验证系统正确显示所有可预订的会议室信息系统正确显示所有可预订的会议室信息通过TC007用户搜索会议室1.用户登录系统2.进入会议室列表页面3.输入搜索关键字并点击搜索按钮4.验证系统根据搜索条件正确显示会议室列表系统根据搜索条件正确显示会议室列表通过表6-4报销管理测试用例表测试编号测试目的测试步骤预期结果通过/失败TC001验证登录功能是否正常工作输入有效的用户名和密码,点击登录按钮登录成功,跳转到报销管理主页通过TC002验证报销单创建功能是否正常登录系统,点击创建报销单按钮,填写报销单信息,提交报销单报销单创建成功,显示在报销单列表中通过续表6-4报销管理测试用例表测试编号测试目的测试步骤预期结果通过/失败TC003验证报销单审批功能是否正常登录系统,选择待审批的报销单,点击审批按钮,选择审批意见并提交报销单审批成功,状态更新为已审批通过TC004验证报销单查询功能是否正常登录系统,进入报销单查询页面,输入查询条件,点击查询按钮显示符合条件的报销单列表通过TC005验证报销单打印功能是否正常登录系统,进入报销单查询页面,选择需要打印的报销单,点击打印按钮报销单成功打印,生成打印文件通过TC006验证报销单统计功能是否正常登录系统,进入报销单统计页面,选择统计条件,点击统计按钮显示符合条件的报销单统计结果通过TC007验证报销单修改功能是否正常登录系统,进入报销单查询页面,选择待修改的报销单,修改报销单信息并保存报销单修改成功,修改后的信息保存通过TC008验证报销单删除功能是否正常登录系统,进入报销单查询页面,选择待删除的报销单,点击删除按钮报销单删除成功,不再显示在报销单列表中通过表6-5请假模块测试用例表测试编号测试目的测试步骤预期结果通过/失败TC001验证请假申请功能是否正常1.登录系统<br>2.进入请假申请页面<br>3.填写请假信息<br>4.提交请假申请请假申请提交成功,状态更新为待审批通过TC002验证请假审批功能是否正常1.登录系统<br>2.进入请假审批页面<br>3.选择待审批的请假申请<br>4.点击审批按钮<br>5.选择审批意见并提交请假审批成功,状态更新为已审批通过TC003验证请假查询功能是否正常1.登录系统<br>2.进入请假查询页面<br>3.输入查询条件<br>4.点击查询按钮显示符合条件的请假申请列表通过TC004验证请假取消功能是否正常1.登录系统<br>2.进入请假查询页面<br>3.选择待取消的请假申请<br>4.点击取消按钮请假取消成功,状态更新为已取消通过测试编号测试目的测试步骤预期结果通过/失败TC005验证请假统计功能是否正常1.登录系统<br>2.进入请假统计页面<br>3.选择统计条件<br>4.点击统计按钮显示符合条件的请假统计结果通过TC006验证请假审批权限功能是否正常1.使用普通员工账号登录系统<br>2.进入请假审批页面<br>3.验证是否无法进行审批操作无法进行审批操作,提示权限不足通过续表6-5请假模块测试用例表
结论与展望经过几个日夜的开发,本系统终于开发完毕,本系统实现了包括部门管理、角色管理、用户管理、审批任务、员工请假、违纪罚款、报销管理、会议室管理、线下会议管理、线上会议管理等多个功能模块。实现了预估的效果。回望编写毕业设计的全部过程从理论学习,对系统软件要求的剖析到对在线办公系统的实际设计方案与实现全过程,尽管自己投入不少精力,但毕竟自己的专业知识学的还是比较浅,审批任务这个功能因为自己的能力有限只能简单的设计审批流程,因此该系统也有很大的提高空间。未来,该系统可以进一步优化界面设计,提高用户体验。另外,可以加入更多的功能模块,如日程管理、任务管理等,以更好地满足用户的需求。同时,可以考虑引入人工智能等新技术,使系统更加智能化,提高效率和准确性。在安全性方面,可以加强数据加密和权限管理,保障用户数据的安全。最后,需要不断优化和完善系统的各个功能模块,以适应日益增长的用户需求。
参考文献[1]吕梦珂,刘海鹏.基于SSM框架的办公自动化系统设计与实现[J].软件与集成系统,2021.[2]陈梓皓,刘志刚,刘旭辉.基于SSM的办公自动化系统设计与实现[J].电子技术应用,2017.[3]刘宇,陈
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国饲料行业发展现状及趋势展望
- 护理研究创新性评估的未来发展趋势
- 2026年多晶体制取工专项题库
- 随州社区工作者考试真题库(2025版)
- 北师大版数学七年级下册第四单元三角形单元检测培优卷
- 吉林省初一下学期期末道德与法治复习难点精析
- 中职护理护理职业发展培训课件
- 副乳护理查房环境优化
- 北极狐养老生活服务
- 山西省朔州市怀仁市城镇第七小学校2025年数学四年级下学期期末监测试题(含解析)
- 2026年科学中考热点试题及答案
- 2026年液氢储罐液位测量技术应用
- 山东省潍坊市2024-2025学年高一年级下册期末质量监测 化学试题(原卷版)
- 2026内蒙古鄂尔多斯市本级事业单位第一批引进高层次和紧缺人才39人笔试备考试题及答案解析
- 腾讯内部沟通管理制度
- 蜂蜡疗课件教学课件
- 2025年江南大学马克思主义基本原理概论期末考试模拟题附答案解析(必刷)
- 高处作业培训课件教学
- 吊车拆除铁塔专项施工方案(模版)
- 2025年1月浙江省普通高中学业水平考试思想政治试卷(含答案详解)
- DB50∕T 1886-2025 特殊健康状态儿童预防接种服务规范
评论
0/150
提交评论