独立开发设计实现一个高校会议管理系统(Nacos+网关+微服务)

本文详述了一套高校会议管理系统的设计与实现,旨在解决传统会议管理的繁琐与低效。系统采用微服务架构,前端使用React,后端使用Java SpringBoot和SpringCloud Gateway。功能包括会议室管理、会议类型管理、部门管理、权限控制和审批流程定制。系统通过用户权限管理确保安全,优化了会议室预订和会议申请流程,提高了会议管理效率。
摘要由CSDN通过智能技术生成

一、系统背景

在现代高校中,随着学校招生人数增多,学校老师外出参加培训成了急切需要。除了外出参加培训,老师到各地参加会议、比赛等进行学术交流之类的活动也必不可少。学校内部组织会议数也越来越多,使用传统的会议管理方式将产生大量的纸质文件且步骤众多繁琐,这种人工管理的方式效率低下并且容易犯错,如参会人员的通知,向参会人员挨个打电话通知效率肯定是十分低下的。
对学校来说,如何合理运用会议资源高效地举办会议已经成为了一个重要的研究课题,因此研发一套信息化会议管理系统成了急切需要。该系统需要达到对用户举办会议和外出参会的统一管理,外出参加会议和举办会议进行不同的审核流程,到达流程节点时第一时间通知审批人进行审批。

二、需求分析

对于一所高校来说,教师的教学质量与学校能否更好发展息息相关,这免不了组织培训和学习交流。传统的会议召开都是通过口头通知或者电话通知,这些通知方式不仅效率低还可能出现通知不到位的情况。除了会议通知方面,会议室的选择也是一大问题,申请人只有通过询问负责人来确定会议召开的地点和时间,当会议室需要维护时也无法第一时间通知各部门人员。
该系统面向于系统管理员、部门用户和管理员。系统管理员主要是对会议室、会议类型等进行维护,部门管理员则是对整个部门人员和审批流程进行管理,用户主要是使用会议和参会申请功能,来达到对会议和参会申请的办结办理。

三、系统设计

系统设计部分主要分为3个部分。在系统架构设计部分主要介绍系统实现所用到的工具或技术,功能结构设计方面主要介绍系统所包含的主要功能,通过E-R关系图体现数据库设计思路。

3.1 系统架构设计

下图给出整个系统架构设计图,主要包括前端页面,服务网关,微服务治理和持久层设计。
前端主要使用React框架,绘制图表使用Echarts框架,Axios用于异步请求后端接口数据。当请求至Gateway网关时,根据API接口进行请求分发。服务治理方面使用Nacos用作注册中心,当用户鉴权服务和应用服务注册进Nacos后服务直接接口调用可以用Feign实现。持久层主要使用MySQL,MySQL运行速度快、体积小,非常适合会议管理系统这种中小型系统。
在这里插入图片描述

3.2 系统功能结构设计

整个系统功能可以分为5大模块,系统管理、会议参会管理、通知管理、流程管理和人员管理。系统管理主要用于系统管理员管理整个会议系统参照数据,如部门、会议类型等这些不易改变的数据。会议参会管理主要是该系统的核心功能,用于整个系统用户进行会议业务处理。通知管理的主要作用在于通知用户参加、举办和办结会议,用户在登录系统时能够及时接收系统消息。流程管理和人员管理主要提供给部门管理员,普通用户无权访问。系统功能结构图如图所示:
在这里插入图片描述

3.3 系统数据库设计

本节将介绍系统实体关系图和数据库表设计。关系图中体现实体关系以及实体主要字段,着重表示了部门、人员、角色和权限之间的对应关系。数据库表设计部分主要介绍了数据库表字段名称、类型和描述。
该会议管理系统实体主要包括了部门、部门角色、用户、权限、会议、参会、会议室和附件等,数据库E-R图如图所示:
在这里插入图片描述

四、系统实现

4.1 开发环境和工具

本系统后端实现主要使用Java语言,使用集成开发环境Interllij IDEA进行接口开发,主要用到的框架有SpringBoot、SpringCloud Gateway和SpringSecurity。前端使用React框架以及各种工具包和组件。数据库方面使用MySQL,MySQL运行速度快,体积小,适用于中小型系统,非常适用于当前系统开发场景。系统开发中使用到的开发工具、开发环境详细描述如下表所示:

分类说明描述
开发语言前端HTML、CSS、JavaScript、React
后端Java
开发环境和工具浏览器Mozilla Firefox
服务器Tomcat 9.0.56
JDK工具包JDK 8
后端开发工具Interllij IDEA
数据库MySQL 8.0.23
数据库图形操作工具Navicat for MySQL
服务注册中心Nacos
服务网关SpringCloud Gateway

4.2 后台管理系统

本节主要介绍系统后台管理实现,主要功能包括会议室管理、会议类型管理和部门管理等,除了对具体功能的实现思路外还有对系统权限的介绍。后台管理首页如下图所示:
在这里插入图片描述

4.2.1 会议室管理

该部分实现了对学校所有会议室的统一管理,后台管理员可以对会议室进行增删改查以及修改会议室状态,当会议室处于维护中时用户无法选择该会议室。

4.2.2 会议类型管理

该部分主要实现了会议类型的统一管理,管理员在进行流程管理时,会根据会议类型的不同创建不同的审批流程。

4.2.3 部门管理

部门是一个树结构。一般高校部门结构为:根节点为校本部,之下是各个学院,在下面是专业系或者实验室。
该部分实现思路是在部门实体中添加父部门ID,在查询部门列表时根据该字段迭代查询父部门的子部门列表,根节点部门父部门ID为空。

4.2.4 部门角色管理

角色主要分为公有角色和私有角色,私有角色如校长,只有在校本部才有这个角色,像普通用户、系主任这种部门普遍拥有的角色称为公有角色。该部分主要实现对角色的增删改查以及对部门和角色之间进行关联。

4.2.5 系统用户操作日志

后台管理员通过查看用户操作日志能够清晰的看到调用接口参数、接口耗时以及操作失败时的异常信息,管理员可以通过该异常信息快速找出程序问题所在。用户操作日志实现思路是通过Spring的Aop机制,在用户每次访问接口时获取用户的操作信息并存放进数据库。

4.2.6 系统权限

系统拥有6个权限,管理员在创建角色时为其分配不同的权限。一个用户对应于一个角色,用户的操作便通过其权限控制,下面将介绍具体的权限控制机制:
1)添加权限
申请会议或申请参会权限,当用户没有该权限时,无法进行会议和参会的申请。
2)删除权限
删除会议或参会申请的权限,当用户删除会议或参会时,首先判断该用户是否拥有该权限,如果拥有该权限,则判断当前会议所处的审批状态,如果处于审批中状态则无法删除。之后继续判断用户是否拥有manage管理权限,因为普通用户只能删除自己的申请。
3)修改权限
修改会议或参会申请的权限,默认用户只能修改自己发起且未提交的申请。
4)查询所有权限
查询权限,对于举办会议来说,没有该权限用户只能查询到本部门的会议申请,拥有该权限则能够查询所有会议申请。对于外出参会来说,没有该权限只能查询到本人发起的参会申请,有该权限则能够查看到本部门所有的参会申请。
5)管理权限
管理权限,拥有该权限能够对部门人员和流程进行管理。
6)导出权限
报表导出权限,拥有该权限能够实现数据报表的导出功能。

4.3 前台用户系统

本节主要介绍该会议管理系统的核心用户系统。前台用户系统采用简单微服务架构,将后端划分成用户鉴权服务和应用服务,前端访问后端接口时先通过网关分发请求,之后调用具体的业务处理逻辑。用户鉴权服务主要处理用户登录和注册的逻辑,应用服务则处理用户的操作逻辑。前台用户系统首页如下图所示:
在这里插入图片描述

4.3.1 用户登录鉴权

系统登录鉴权服务实现的基本思路是当用户登录前台系统时,根据登录成功的用户名查询数据库获取用户的操作权限列表,然后将用户名和权限列表放入JWT并返回给浏览器,浏览器获取到JWT后将其保存到本地,之后每次向后端发送请求时都带上请求头,后端TokenManager对请求头中的token进行解析,最后在通过解析出来的权限列表判断用户是否有访问该接口的权限。用户鉴权序列图如图所示:
在这里插入图片描述
用户进行认证时,首先根据用户名判断用户是否存在,不存在则抛出异常,存在则判断用户状态,如果是可用状态则继续根据用户名查询用户权限列表并返回,框架根据输入的密码和数据库查询出来的密码进行对比。用户认证成功后,根据用户名生成JWT令牌并记录用户登录日志。

4.3.2 会议室列表

会议室列表能够直观的展示可用和维护中的会议室以及各个时间段会议室的占用情况,方便用户选择可用时间段会议室,避免了举办会议时间冲突。用户可以通过会议室名称、会议室地点和容量对会议室进行检索,选择指定时间段进行会议申请。会议室界面实现如图所示:
在这里插入图片描述
如上图所示,占用和维护中的会议室无法选择使用,只有空闲中的会议室可供选择,选择指定时间段的会议室时跳转会议申请页面。

4.3.3 会议申请

当用户进行会议申请时,会议申请人默认为当前登录用户,用户需要填写会议名称,当会议密级为内部时还需要填写会议脱密名称,会议密级为公开时脱密名称默认与会议名称相同,用户还需要选择会议主持人、记录员、参会人员和会议主题,参会人员人数根据选择自动计算,会议室和会议时段可以根据会议室列表页面选择跳转。用户也可以根据会议需要填写备注,以及上传会议所需附件。会议申请界面如图所示:
在这里插入图片描述

4.3.4 流程管理

流程管理功能主要提供给拥有管理权限的用户,用户可以通过该模块实现对部门审批流程的统一管理,可以通过部门、流程类型和实体类型设置不同的审批流程。流程编辑界面如图所示:
在这里插入图片描述

五、总结

本系统主要应用于高校会议管理,它解决了教师外出或举办会议申报步骤繁琐等问题,主要实现了简化会议室预订步骤、用户高效审批和及时通知。
本系统主要亮点在于审批流程的设计,灵活的将审批流程的设计权限赋予部门管理员,根据每个部门的不同,设置不同的审批流程。不同类型的申请对应不同的审批流程,这样便提升了系统的灵活性。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一.系统模块的实现 在系统中包括以下功能:系统管理、学籍信息管理、课程信息管 理、成绩信息管理、帮助。分为以下几个模块 主窗体 标 题 名 称 系统管理 sysMenu ……用户管理 Control ……退出系统 Exit 学籍管理 sInfo 课程管理 cInfo 成绩管理 rInfo 帮助 help ……使用说明 howto ……关于 about 1.1登录模块 为了系统的安全,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。 用户登录窗体中放置了两个文本框(Textbox),用来输入用户名和密码;两个按钮(CommandButton)用来确定或者取消登录。 设置一个SSTab控件,供不同用户登录时选择用户权限,超级用户拥有一切权限(包括添加删除和修改以及对用户的管理),普通用户拥有受限制的权限(查询及修改密码),提高了数据库的安全性。 1.2系统管理模块 1.2.1添加用户窗体的创建 进入系统后,将会出现一个主窗体,选择系统管理模块下的添加用户,就可以进入添加用户窗体,可以通过该窗体增加新的用户。 在这个窗体中放置了三个文本框,用来输入用户名和密码;两个按钮用来确定是否添加用户;三个标签用来标示文本框的提示。 1.2.2修改密码窗体的创建 在系统管理模块下,进入修改密码窗体,用户可根据需要修改自己的密码。 在这个窗体中放置了两个文本框,用来输入密码和确认密码;两个按钮用来确定是否修改密码;两个标签用来标示文本框的内容。 1.3学籍管理模块 1.3.1添加学籍信息功能 选择主窗体中学籍管理模块下的添加学籍信息,就可进入添加学籍信息的窗体,在该窗体中我们可以对学生的学号、姓名、性别、出生日期、班号等学生的信息进行添加。设计时我尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,当输入的信息满足这些边界条件时,将会弹出一个提示框提醒用户,以便用户能及时地做出修改。添加的信息将全部存储到数据库中。 在窗体上放置多个文本框和下拉式文本框,用来输入学籍信息;两个按钮用来确定是否输入学籍信息;一个按钮用来退出窗体;多个标签用来提示文本框中需要输入的内容。 1.3.2修改学籍信息功能 点击学籍管理模块下的修改学籍信息,就进入修改学籍信息的窗体,在该窗体中我们可以对前面添加的学籍信息进行修改。由于用户的需求不同,有的是要对学生的信息做个别的改动,有的是需要删除该条记录,所以该窗体同时包括了修改记录的功能和删除记录的功能。又考虑到用户的误操作,为了方便,我在该窗体中增添了取消修改的功能,可一次性把输入文本框的内容全部置空。 1.3.3查询学籍信息功能 进入学籍管理模块下的查询学籍信息窗体,在该窗体中可以对学生的信息进行查询,有三种查询方式。我在设计时,一方面考虑到简洁的因素,用户可以只设置一种查询方式进行查询;另一方面又为了避免数据的重复,用户可以输入详细的信息,也就是同时设置多种查询方式进行查询。进入查询窗体时,myflexgrid中会显示出所有学生的学籍信息,如果不设置查询方式就进行查询,是无效查询,系统会给出提示。在设置好查询方式后,便开始查询,将在myflexgrid中显示出用户所需的学生的学籍信息。 1.4课程管理模块 1.4.1课程信息浏览功能 点击主窗体中课程管理模块下的课程信息浏览,可进入课程信息浏览窗体。为了用户的使用方便,我使用了SSTab控件,故在该窗体中同时包含了课程信息的添加和修改的功能。并且我还在窗体上设置了myflexgrid控件。添加和修改记录后,对于数据有何变化都可以在myflexgrid中显示出来,使用户对所做的操作一目了然。 1.4.2年级课程设置功能 进入课程管理模块下的年级课程设置窗体,可以对每一个年级的课程进行设置。 1.5成绩管理模块 1.5.1成绩信息管理功能 点击成绩管理模块下的成绩信息浏览,进入成绩信息浏览窗体,考虑到美观和实用性,界面设置如下图。用Frame控件在窗体中划定一个可浏览成绩信息地方,再在Frame中添加MSFlexGrid控件,运行时将在MSFlexGrid中显示所有学生的成绩信息。使用Toolbar来建立工具条。点击工具条中的修改、添加和查询按钮就可分别进入修改成绩信息窗体、添加成绩信息窗体和查询成绩信息窗体。这三个窗体的界面设置分别类似于学籍管理下修改学籍信息窗体、添加学籍信息窗体和查询学籍信息窗体。 1.6其它 操作人员在遇到困难时即可进入帮助菜单寻求帮助。帮助菜单下的“使用说明”将解答你的疑问。帮助菜单下的“关于”详细地列出了关于作者的一些情况,关于版权的一些情况和关于系统的一些情况。进入打印菜单栏,可对你所需要的信息进行打印。 二 系统后期工程 在开发这个软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,在本次设计过程中,我采用循环测试法,力求在每个阶段结束之前通过严格技术审查,即每完成一个功能,就进行测试,尽可能早的发现并纠正差错,完成模块测试之后再进行系统测试。 在该设计中,我偏重考虑了当用户输入的信息出错时,系统就会出现提示,以便让用户知道出错的原因,并能及时做出修改,所以我站在用户的角度考虑,尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,以此来发现错误,纠正错误,取得了一定的效果。 当然,该学生信息管理系统也存在一些不足之处。在成绩管理界面,当3次改变成绩为不同的内容时,程序会出错。虽然尝试了很多方法,仍不能解决。再一点就是关于打印和年级课程信息设置都未能实现,这有待于以后的进一步提高。 一个应用系统性能的优劣,效率的高低始终应当由用户来做出判决,应用系统在运行过程中,用户会提出一些新的需求和建议,我就会根据用户需求的变化,对本系统做出一定的修改,使其进一步地得到完善和提高。 1. 概述 1.1. 目的 为了彻底解决了长期困扰教学信息化工作当中安全性、可靠性的问题;为了使管理人员可以随时看到更新的数据,极大地提高信息传递的速度;为了管理者再也不必为聘用专门的操作人员来给众多教师编辑学生成绩资料而殚精竭虑,在此,设计了学生课程成绩查询管理信息系统,使得各个使用者在操作上,从此变得那么从容简单,省时又省心。 1.2. 参考文档 [1] 张海藩.软件工程导论[M].第4版.北京:清华大学出版社.2007.25-63. [2] 赵洋,张丽,王恩东,李玉红.基于B/S结构学生成绩管理系统设计与实现[J].沈阳化工学院学报.2007,21(2).140-142. [3] 游应德.基于Intemet的学生信息管理系统—学生成绩管理系统[D].电子科技大学.成都:电子科技大学,2007. [4]郑若忠,王鸿武.数据库原理与方法.湖南科学技术出版社.  2. 总体结构设计 2.1. 层次图 2.2结构图 2.3 功能设计 学生成绩单录入部分可以对某一个学生进行成绩录入,但是一次只能录入一条成绩记录,同时可对缺考、免考、补考学生成绩进行录入。 学生成绩显示/修改部分可以对已录入的成绩进行显示和修改,但是只能对系统默认的当前学期的记录进行修改。 学生成绩显示/删除部分可以对已录入的成绩进行显示和删除,但是也只能对系统默认的当前学期的记录进行删除。 2.3. 运行环境设计 2.3.1. 硬件设计 1.服务器: CPU:P4 2.0G以上 内存:512M 硬盘:60G以上 网络:100M /1000M Ethenet 2.客户机: CPU:500Mz 内存:64M以上 硬盘:1G以上 网络:10M Ethenet 2.3.2. 软件设计 1.服务器: 操作系统:Windows 2000/XP/2003 WEB服务:IIS5.0 数据库:SQL Server 2000(建议打Service Pack 3补丁) 2.客户机: 操作系统:Windows系列之一 浏览器:IE6.0以上版本 2.3.3.网络设计 采用sql server2000网络关系型数据库,存储读取数据将同步进行。 3.详细设计 用判定树表示教师端模块 4. 数据结构设计 4.1. 数据分析 第一层:基础数据及基础数据库分析 此类报表主要反映学校教师、学生和课程等的资料情况。 此类报表是将系统中较为常用的学生、教师和课程等基础资料以报表的形式予以反映。 在本层需要设计三个主表,分别用来存储学生资料、教师资料和课程资料。 第二层:业务流程数据及业务流程数据库分析 在编辑此类表单时,可以点击相应的下拉按钮,这时所有的选项资料都会显 来,您可以根据实际情况来编制表单,使整个过程更加清晰,操作更加简便。 在本层需要设计一个学生成绩主表,用来存储学生的平时成绩表。 4.2. 数据库设计 4.2.1. 设计原则 1.密码管理:学生修改学生查询密码;教师可以修改查询密码。 2.每个教师可以查看所有学生的成绩,包括每门课程的成绩、每门课程的平均成绩、每个分数段的成绩。 3.学生根据自己的学号查询本人的成绩。 4.教师可以登记、修改、查询自己所讲授课程的学生的成绩、该课程的总分、平均成绩、各分数段成绩人数统计、不及格学生的名单、成绩等等。 4.2.2. 数据库组成 数据表3个: 学生表(5个字段: xh, xm, xb, csrq, bj),其中有各班学生的记录 课程表(4个字段:kch,kcm, js, xf),其中有课程的记录; 成绩表(3个字段:xh, kch, cj),其中有学生成绩的记录。 学生基本信息表(Student)描述如下: 学生期末成绩表(Grade)描述如下: 学生的课程管理(Course)描述如下: 4.2.3. 面向对象数据库设计方法 1)考虑对象的静态和动态属性 对象属性决定了数据库或包含具有相同类型对象的表的内容。 2)描述数据实体及其属性 包含所有静态属性的单个对象被称作数据实体。每个单独的数据实体必须唯一,这样可以与其他实体区分。包含在数据实体中的对象的性质被称作为属性。(attribute) 3)用方法来说明对象的行为 关系数据库对象的行为决定了数据对象参与事务的特征。事务的发生对应着事件,通过使用响应事件的方法来实现事务。 4)在单个表中合并不同实体 可以在单个表中包含不同对象类型的说明,只要可以按照相同方式描述属性和行为,以及区分不同对象类型即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值