一、项目背景
会议是公司日常管理的重要手段之一,为了更好的协调部门与部门之间、员工与员工之间的工作,并保证公司的日常事物高效并且有序的进行。小威决定实施会议OA系统;希望通过这个系统完成会议发起、审批、进行、会议室管理的规范化管理;
该系统的目标是提供一个高效、便捷的会议管理平台,以满足公司内部会议的需求。该系统可以帮助公司管理会议的时间、地点、主题、参与者等信息,从而提高会议的效率和准确性。预期用户群体包括公司内部的各个部门和员工,特别是需要频繁参加会议的人员。该系统的预期效益包括提高会议的效率、减少会议的时间和成本、提高会议的准确性和可靠性等。通过使用OA会议系统,公司可以更好地管理会议,提高工作效率,从而更好地服务客户和实现公司的业务目标。
二、项目概述
1. 概述
本系统采用MySQL数据库,使用Java EE进行开发,采取B/S架构。数据库设计原则上符合第三范式,且规范,易于维护。 程序使用MVC模式,采用三层架构,保证系统的可维护性和可扩展性。本系统共有四大模块:会议管理、投票管理、会议室管理以及用户管理,本次主要讲解负责的是会议管理模块。
2. 环境搭建
- commons-beanutils-1.8.0.jar :
主要提供了一些操作 Java Bean 的工具类,它提供的工具类和注解,大大简化了 Bean 的创建、属性的读取、设置以及 Bean 之间的转换等操作。
什么是bean?
bean是JavaBean的简称,指的是可重用的Java类。
具备以下特征即可称为Bean:
- 是一个普通的Java类
- 拥有私有成员变量
- 提供公共的getter和setter方法
- 没有状态(无状态)
- 可以由第三方实例化和管理
简单来说,bean就是一个普通的Java类,但满足了JavaBean的规范。bean经常被用于框架来管理和创建对象,比如Spring框架就是通过bean来管理对象的生命周期和依赖注入的。
bean在框架中的作用是:
- 作为对象的默认创建方式
- 作为对象之间的依赖注入
- 统一的管理对象的生命周期
因此,bean可以说是框架(如Spring)与应用程序之间的一个 connect。通过定义bean,框架可以为我们实例化和管理对象,起到解耦合的作用。
- commons-logging.jar:
它是一个日志记录框架,主要是为了统一日志接口,解耦应用与日志框架,方便集成其他依赖它的项目。(没有它项目将会操作不了,可以运行)
- dom4j.jar:
是一个Java库,用于处理XML数据。它提供了一种方便的方式来读取、操作和生成XML文档。
- jaxen-1.1-beta-6.jar:
它也是提供了一种方便的方式来操作 XML 文档,依赖于dom4j.jar包。
- jackson-core-2.2.3.jar:
提供了用于 JSON 数据处理的核心 API。Jackson 是一个流行的 JSON 处理库,可以用于 Java 应用程序中的 JSON 数据的序列化和反序列化。
- 将 Java 对象转换为 JSON 格式的数据(序列化)
- 将 JSON 格式的数据转换为 Java 对象(反序列化)
- jackson-databind-2.2.3.jar:
是一个 Java 库,是 Jackson 库的一个组件,提供了用于将 JSON 数据绑定到 Java 对象和将 Java 对象序列化为 JSON 数据的功能。它建立在 jackson-core
库之上,并提供了更高层次的 API。
- jstl-1.2.jar:
是一个标准的 JSP 标签库,提供了一组标签来处理 JSP 中的常见任务,如控制流程 (条件判断、迭代等)、格式化输出、国际化、访问数据库等。
- MyMVC.jar :
自定义MVC框架,底层利用反射机制和工厂设计模式,提高代码复用性使项目结构更加清晰。
- mysql-connector-java-8.0.19.jar:
它包含了MySQL JDBC驱动程序,它是一个Java类库,用于提供Java应用程序与MySQL数据库之间的通信接口。在Java应用程序中,我们可以通过使用该驱动程序的API来连接数据库、执行SQL语句、读取和写入数据等操作。
- standard-1.1.2.jar :
它提供了与Web服务器交互的标准方式,包含了Java Servlet规范中的类和接口。用来处理HTTP请求和响应、会话管理、Cookie处理等。
3. 工具类引用
- Base64ImageUtils.java : 通过流对象将图片下载到本地并将图片路径保存到对象。
- BaseDao.java : 该类用来连接数据库执行sql语句,专门为增删改查数据做回显,提高了代码的复用性。
- BuildTree.java :该类是一个用于构建树形结构的工具类,将传入的节点列表组装成树的形式,用来国建项目中的树形导航栏。
- EncodingFiter.java : 该类是一个用于处理中文乱码的过滤器,对用户请求和数据响应进行处理,确保字符编码正确。
- R.java : 因为遵循Layui框架的回显数据原则,该类主要用于简化构建统一的响应结果,方便在项目中使用。
- ResponseUtil.java : 该工具类适用于Web开发中需要返回JSON数据的场景,可将任意对象转换成JSON格式的字符串并输出。这方便了开发人员在控制器中返回JSON数据给前端页面,实现数据的传输和展示。
4. 功能设计
4.1 会议发布
功能描述:填写会议内容可点击立即提交按钮或者重置按钮清空会议内容
输入要求:需选择参会和列席人员、填写正确时间,除备注内容外其他不可为空,不可输入特殊字符。
约束条件:当前登录的用户默认为会议的主持人,会议有只参会、列席人员和主持人参加并可查看会议,发布后的会议会保存到我的会议功能区待进一步审核。
4.2 我的会议
功能描述:可根据会议标题进行会议分页查询,会议排座,送审、取消(删除会议)、召开会议、会议投票、结束会议和反馈操作,不同的会议状态会显示不同操作功能。
输入要求:需根据需求进行排座,选择正确的送审人
约束条件:当前登入用户只能查看当前用发布的会议,并且会议状态为“待开”和“驳回”。接着必须进行排座后才可进行送审,只有指定送审人才可查看会议审批记录,待会议审核通过后才可查看会议反馈信息,并不能再取消会议。如会议被驳回则需重新排座送审。
4.3 会议审批
功能描述:可根据会议标题进行分页会议查询,点击审批弹出窗口可对会议选择通过还是驳回的审批功能。
约束条件:只能看到送审人为当前登入的用户的会议
4.4 会议通知
功能描述:可根据会议标题进行分页会议查询,点击是否参会按钮弹出窗口可选择保存会议反馈信息或关闭窗口。
输入要求:必须选择人员类型是参会还是列席人员,选择反馈结果如选择不参会需在反馈内容写明原因
约束条件:只有该会议主持人选择的参会人员和主持人才可看到会议信息并显示会议反馈状态
4.5 待开会议
功能描述:可根据会议标题进行会议分页查询,不可对会议进行篡改,请供查看。
约束条件:当前登入的用户只可看到自己发布的会议并会议为待开状态。
4.6 历史会议
功能描述:可根据会议标题进行会议分页查询,不可对会议进行篡改,请供查看。
约束条件:只有会议发布者与会议参与人员可看到会议状态为结束的会议。
4.7 所有会议
功能描述:可根据会议标题进行会议分页查询,不可对会议进行篡改,请供查看。
约束条件:只有会议发布者与会议参与人员可看到会议,不限状态。
5. 性能优点
5.1 兼容性好
本系统的应用平台设计中选择B/S结构(指的是浏览器/服务器结构(Browser/Server architecture),它是一种典型的分布式系统架构。该结构特点就是将应用程序业务逻辑和数据储存分布在不同层次上,使得客户端浏览器只需负责显示和处理用户界面,而服务器则负责处理业务逻辑和数据存储。这种结构不需要在客户端安装任何额外的软件,只需使用现代浏览器即可访问Web应用程序。这使得B/S结构更加灵活和易于部署,用户可以通过任何设备和操作系统访问应用程序,兼容性好。
5.2 可维护性和可扩展性
本系统基于JAVA技术并且符合Java EE开发规范(指一套Java企业级应用程序开发的标准规范),并采用MVC(Model-View-Controller)架构,这种设计模式将应用程序的不同部分分离开来,使得系统中的不同部分具有高度的耦合性,即彼此之间互不影响,从而使得系统更容易维护。这种设计模式对于大型系统来说尤其重要,因为它可以使得系统更加健壮、可靠、易于维护和扩展。
5.3 轻量灵活
本系统采用的是Layui框架进行开发,它属于轻量级框架。Layui框架的核心文件非常小巧,加载速度非常快,这使得网页能够更快地呈现给用户提升用户体验。
5.4 模块化设计
Layui框架采用了模块化设计思想,将个人模块功能进行拆分和封装,使得每个模块都具有独立的功能和接口,可以被独立开发、测试和部署,从而提高代码的可读性、可维护性、可扩展性和可重用性。
5.5 简单易用
Layui框架提供了简洁明了的API接口和丰富的组件库,使得开发者可以快速构建出美观、功能强大的界面。这种简单易用的特性有助于提高开发效率和减少代码量,从而提升网页的性能。