- 绪论
- 系统开发背景
教育机构管理系统为利用技术的手段提高办公的效率,进而实现办公的自动化处理。教育机构从最初的以大规模采用复印机等办公设备为标志的初级阶段,发展到今天的以运用网络和计算机为标志的现阶段,对企业办公方式的改变和效率的提高起到了积极的促进作用。
教育机构软件解决企业的日常管理规范化、增加企业的可控性、提高企业运转的效率的基本问题,范围涉及日常行政管理、各种事项的审批、办公资源的管理、多人多部门的协同办公、以及各种信息的沟通与传递。可以概括的说,教育机构软件跨越了教学、办公、财务等具体的业务范畴,更集中关注于企业日常办公的效率和可控性,是企业提高整体运转能力不可缺少的软件工具。
不同企业的管理侧重点各不相同,因此不同的机构就对教育机构管理系统有着不同的需求。针对山西维信科技有限公司的管理重点和客户需求,本为推出了企业教育机构管理系统。
-
- 研究方法
教育机构管理系统是信息行业业务流程过程中十分重要且必备的环节之一,在信息行业业务流程当中起着承上启下的作用,其重要性不言而喻。但是,目前许多信息行业在具体的业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。针对上述问题,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个教育机构管理系统 管理系统。采用Java作为开发工具,结合Mysql数据库,数据库设计遵循3范式,解决了教育机构管理系统中存在的数据安全性、数据一致性以及系统运行速度等问题。
-
- 主要工作及论文结构
本文的主要工作是研究如何将计算机和信息管理进行有机结合,从而利用Java语言以及Mysql数据库技术在Dreamweaver中实现了系统的功能模块,切实的开发出一套贴近教育机构管理系统 的实际,有效管理教育机构管理系统 的系统。
论文结构如下:
第一章绪论:主要对教育机构管理系统的开发背景,研究现状,目的,及意义进行了分析。
第二章开发技术及软件:主要把系统开发工具进行介绍,另外讲解开发系统所用到的一些特殊功能技术。
第三章系统分析:主要是对教育机构管理系统进行需求分析,以及对其数据流程与功能进行分析。
第四章系统设计:主要根据系统需求对系统的设计进行介绍,以及对数据的开发与功能模块设计的过程。
第五章系统实现:本章主要结合系统界面截图,介绍了系统各个功能实现的结果。
第六章系统测试:本章系统进行功能模块的测试,撰写测试用例,确保系统各大功能准确无误。
第七章总结与展望:对整个论文的研究内容进行总结,概括整个论文的特点,指出不足之处,为下步深究指明方向。
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的ssm框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用ssm作为开发框架,同时集成MyBatis、Redis等相关技术
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的在线考试系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对在线考试系统后台数据进行存储操作。
数据库管理系统的总体结构图如下图所示。
图2-1 数据库组成结构
-
B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
SSM即SpringMVVM+Spring+MySQL,这三个框架有各自最独有的优势,那么将它们组合在一起能够碰撞出很强的火花。设计者在不需消耗大量功夫,能做出Web应用程序,而且这个程序还具有层次清晰、升级更新操作不影响正常使用的、允许多次使用的特点。这个复合框架形成一个有着结构完整、功能强大和结构良好的体系:SpringMVVM使各板块分离,Spring使开发更灵活方便,让开发者直接对对象进行操纵,各层次分工明细,并实现各个层次间的解耦,让代码更加的灵活精简。这个框架使程序员能够规避在开发时期避免个别错误导致整体被破坏,也能在后期应对客户对产品提出的新需求。
-
- ssm框架各层关系:
DAO层、Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势。
Controller,View层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。
开发任何一个系统,都要对其可行性进行分析,对其时间和资源上的限制进行考虑,这样可以减少系统开发的风险。同时,分析之后不仅能够合理的运用人力,还能在各方面资源的消耗上得到节省。下面就对技术、经济和社会三个方面来介绍。
技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是Java开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用Java编程语言,已无技术上的问题。
系统所采用的Myeclipse开发平台和Mysql后端数据库均为免费开发工具。故开发成本主要集中在后期的推广及系统维护上。相对于成本较高的C/S模式,也是选用了成本较低的B/S模式,所以经济上几乎没任何问题。
本系统是自行开发的系统,以方便高效管理教育机构管理系统为出发点,是具有实际意义的系统,开发的环境软件和用到的数据库也都是开源代码,不存在侵权等问题,所以在社会方面也是可行的。
对于性能分析,与传统的管理方式相比,传统的管理方式是使用人工通过用纸和笔进行数据信息的统计和管理,并且这种方式对于存储和查找某一数据信息都比较麻烦,随着计算机网络的到来,这种传统的方法很难适应当下社会的发展,不仅降低人们的办事效率,而且还需要很多的人力和物力,对于使用的时间和所要花费的费用都是比较高的,为了降低成本费用,提高用户的工作效率,进行开发一套基于计算机和网络技术的教育机构管理系统 。
教育机构管理系统的开发设计时一个独立的系统,以之前数据库进行数据的存储开发,主要是为了实现教育机构管理系统 的用户角色及相对应的功能模块,让教育机构管理系统 的管理不会存在管理差异、低效率,而是跟传统的管理信息恰好相反,教育机构管理系统 的实现可以节约资源,并且对于业务的处理速度也提高,速度快、效率高,功能性强大。
3.3系统流程分析
3.3.1添加信息流程
添加信息,编号系统使用自动编号模式,没有用户填写,用户添加信息输入信息,系统将自动确认的信息和数据,验证的成功是有效的信息添加到数据库,信息无效,重新输入信息。添加信息流程如图3-3所示。
3.3.2操作流程
用户想进入系统,首先进入系统登录界面,通过正确的用户名、密码,选择登录类型登录,系统会检查登录信息,信息正确,然后输入相应的功能界面,提示信息错误,登录失败。系统操作流程如图3-4所示。
3.3.3删除信息流程
用户选择要删除的信息并单击Delete按钮。系统提示是否删除信息。如果用户想要删除信息,系统将删除信息。系统数据库删除信息。删除信息流程图如图3-5所示。
图3-5 删除信息流程图
教育机构管理系统的系统项目的概述设计分析,主要内容有教育机构管理系统的具体分析,进行数据库的是设计,数据采用mysql数据库,并且对于系统的设计采用比较人性化的操作设计,对于系统出现的错误信息可以及时做出处理及反馈。
基于教育机构管理系统的设计基于现有的电脑,可以实现管理员,用户管理、教育机构、报名信息、学生成绩、员工工资、老师课程安排、老师请假、学生请假、学生考勤、老师考勤、评价老师、老师总评、教育机构、报名信息等详细的了解及统计分析。根据系统功能需求建立的模块关系图如下图:
-
- 开发流程设计
教育机构管理系统 的开发对管理模块和系统使用的数据库进行分析,编写代开发,规划和操作是构建信息管理应用程序的必要三步曲,它决定了系统是否能够真正实现预设功能以及是否可以在成功设计后实施。在开发过程中,每个阶段必须严格按照线性顺序进行开发,并且在相应阶段生成的每个工作都可以通过技术进行验证和检查。确保一个阶段完成后是正确的,不会造成下一阶段拖拽现象,使系统完成设计功能后得到保证。
从教育机构管理系统 的成功开发经验来看,上述方法效果最为明显,最大程度地降低了系统开发的复杂性。如图4-2所示。
图4-2开发系统流程图
数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。
4.3.1实体ER图
数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。展示系统使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。
概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是对数据库实体的E-R图:
(1)老师总评管理E-R图,如图4-3所示:
图4-3老师总评实体属性图
(2)学生考勤管理E-R图如图4-4所示:
图4-4学生考勤管理实体图
这些功能可以充分满足教育机构管理系统 的需求。此系统功能较为全面如下图系统功能结构如图4-5所示。
图4-5系统功能结构图
4.3.2数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
the_teacher_asked_for_leave表
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
the_teacher_asked_for_leave_id | int | 11 | 是 | 是 | 老师请假ID |
teacher_number | int | 11 | 否 | 否 | 教师号 |
teacher_name | varchar | 64 | 否 | 否 | 老师姓名 |
start_date | date | 0 | 否 | 否 | 开始日期 |
end_date | date | 0 | 否 | 否 | 结束日期 |
approval_status | varchar | 64 | 否 | 否 | 审批状态 |
leave_application | text | 0 | 否 | 否 | 请假申请 |
approval_reply | text | 0 | 否 | 否 | 审批回复 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
teacher_general_comment表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
teacher_general_comment_id | int | 11 | 是 | 是 | 老师总评ID |
teacher_number | int | 11 | 否 | 否 | 教师号 |
teacher_name | varchar | 64 | 否 | 否 | 老师姓名 |
teaching_subjects | varchar | 64 | 否 | 否 | 教学科目 |
overall_score | int | 11 | 否 | 否 | 总体评分 |
teaching_style | text | 0 | 否 | 否 | 教学风格 |
student_evaluation | text | 0 | 否 | 否 | 学生评价 |
overall_evaluation | text | 0 | 否 | 否 | 总体评价 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
teacher_curriculum表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
teacher_curriculum_id | int | 11 | 是 | 是 | 老师课程安排ID |
teacher_number | int | 11 | 否 | 否 | 教师号 |
teacher_name | varchar | 64 | 否 | 否 | 老师姓名 |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
opening_time | datetime | 0 | 否 | 否 | 开课时间 |
teaching_place | varchar | 64 | 否 | 否 | 授课地点 |
teaching_chapter | varchar | 64 | 否 | 否 | 授课章节 |
specific_details | text | 0 | 否 | 否 | 具体详情 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
teacher_attendance表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
teacher_attendance_id | int | 11 | 是 | 是 | 老师考勤ID |
teacher_number | int | 11 | 否 | 否 | 教师号 |
teacher_name | varchar | 64 | 否 | 否 | 老师姓名 |
attendance_month | varchar | 64 | 否 | 否 | 考勤月份 |
attendance_days | int | 11 | 否 | 否 | 出勤天数 |
absence_days | int | 11 | 否 | 否 | 缺勤天数 |
leave_days | int | 11 | 否 | 否 | 请假天数 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
Teacher表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
teacher_id | int | 11 | 是 | 是 | 老师ID |
teacher_name | varchar | 64 | 否 | 否 | 老师姓名 |
teacher_gender | varchar | 64 | 否 | 否 | 老师性别 |
teacher_number | varchar | 64 | 是 | 否 | 教师号 |
address | varchar | 64 | 否 | 否 | 住址 |
age | varchar | 64 | 否 | 否 | 年龄 |
native_place | varchar | 64 | 否 | 否 | 籍贯 |
on_the_job_or_not | varchar | 64 | 否 | 否 | 是否在职 |
remarks | varchar | 64 | 否 | 否 | 备注 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
students_ask_for_leave表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
students_ask_for_leave_id | int | 11 | 是 | 是 | 学生请假ID |
student_number | int | 11 | 否 | 否 | 学生学号 |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
start_date | date | 0 | 否 | 否 | 开始日期 |
end_date | date | 0 | 否 | 否 | 结束日期 |
approval_status | varchar | 64 | 否 | 否 | 审批状态 |
leave_application | text | 0 | 否 | 否 | 请假申请 |
approval_reply | text | 0 | 否 | 否 | 审批回复 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
student_achievement表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
student_achievement_id | int | 11 | 是 | 是 | 学生成绩ID |
student_number | int | 11 | 否 | 否 | 学生学号 |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
class_name | varchar | 64 | 否 | 否 | 班级名称 |
subject | varchar | 64 | 否 | 否 | 科目 |
usual_performance | int | 11 | 否 | 否 | 平时成绩 |
examination_results | int | 11 | 否 | 否 | 考试成绩 |
teacher_comments | text | 0 | 否 | 否 | 老师评语 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
student_curriculum表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
student_curriculum_id | int | 11 | 是 | 是 | 学生课程安排ID |
student_number | int | 11 | 否 | 否 | 学生学号 |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
course_name | varchar | 64 | 否 | 否 | 课程名称 |
opening_time | datetime | 0 | 否 | 否 | 开课时间 |
teaching_place | varchar | 64 | 否 | 否 | 授课地点 |
teaching_chapter | varchar | 64 | 否 | 否 | 授课章节 |
specific_details | text | 0 | 否 | 否 | 具体详情 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
student_attendance表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
student_attendance_id | int | 11 | 是 | 是 | 学生考勤ID |
student_number | int | 11 | 否 | 否 | 学生学号 |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
attendance_month | varchar | 64 | 否 | 否 | 考勤月份 |
attendance_days | int | 11 | 否 | 否 | 出勤天数 |
absence_days | int | 11 | 否 | 否 | 缺勤天数 |
leave_days | int | 11 | 否 | 否 | 请假天数 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
Student表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
student_id | int | 11 | 是 | 是 | 学生ID |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
student_gender | varchar | 64 | 否 | 否 | 学生性别 |
student_number | varchar | 64 | 是 | 否 | 学生学号 |
address | varchar | 64 | 否 | 否 | 住址 |
nation | varchar | 64 | 否 | 否 | 民族 |
class_name | varchar | 64 | 否 | 否 | 班级名称 |
are_you_in_school | varchar | 64 | 否 | 否 | 是否在校 |
remarks | varchar | 64 | 否 | 否 | 备注 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
registration_information表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
registration_information_id | int | 11 | 是 | 是 | 报名信息ID |
educational_services | varchar | 64 | 否 | 否 | 教育机构 |
organization_address | varchar | 64 | 否 | 否 | 机构地址 |
organization_type | varchar | 64 | 否 | 否 | 机构类型 |
institutional_business | varchar | 64 | 否 | 否 | 机构业务 |
student_number | int | 11 | 否 | 否 | 学生学号 |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
evaluation_teacher表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
evaluation_teacher_id | int | 11 | 是 | 是 | 评价老师ID |
student_number | int | 11 | 否 | 否 | 学生学号 |
student_name | varchar | 64 | 否 | 否 | 学生姓名 |
evaluation_teacher | int | 11 | 否 | 否 | 评价老师 |
student_rating | int | 11 | 否 | 否 | 学生评分 |
student_evaluation | text | 0 | 否 | 否 | 学生评价 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
employee_salary表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
employee_salary_id | int | 11 | 是 | 是 | 员工工资ID |
teacher_number | int | 11 | 否 | 否 | 教师号 |
teacher_name | varchar | 64 | 否 | 否 | 老师姓名 |
salary_month | varchar | 64 | 否 | 否 | 工资月份 |
base_pay | int | 11 | 否 | 否 | 基本工资 |
bonus | int | 11 | 否 | 否 | 奖金 |
total_salary | varchar | 64 | 否 | 否 | 总计工资 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
从web系统查询数据的根本的查询步骤:
Step1: 进行检查并且过滤来自用户的系统数据;
Step2: 成立起一个合适的数据库进行连接;
Step3: 进行查询系统数据库;
Step4: 获得查询的结构;
Step5: 把查询的结果展示给用户。
Step6: 数据库连接断开,释放资源。
数据库连接原理如下图所示。
图5-1数据库连接原理
数据库连接关键代码如下所示。
/**
* 临时访问牌(AccessToken)表实体类
*
*/
@TableName("access_token")
@Data
@EqualsAndHashCode(callSuper = false)
public class AccessToken implements Serializable {
private static final long serialVersionUID = 913269304437207500L;
/**
* 临时访问牌ID
*/
@TableId(value = "token_id", type = IdType.AUTO)
private Integer tokenId;
/**
* 临时访问牌
*/
@TableField(value = "token")
private String token;
/**
* 最大寿命:默认2小时
*/
@TableField(value = "maxage")
private Integer maxage;
/**
* 创建时间:
*/
@TableField(value = "create_time")
private Timestamp createTime;
/**
* 更新时间:
*/
@TableField(value = "update_time")
private Timestamp updateTime;
/**
* 用户信息
*/
@TableField(value = "user_id")
private Integer user_id;
}
为确保系统安全性,系统操作员只有在登录界面输入正确的用户名、密码、权限以及验证码,单击“登录”按钮后才能够进入本系统的主界面。
用户登录流程图如下所示。
图5-1用户登录流程图
登录界面如下图所示。
图5-1登录界面
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
-
- 教师管理模块的实现
教师输入账号、设置密码、确认密码、昵称、邮箱、手机号、身份、姓名 性别、学号等必填信息后,点击注册按钮完成用户的注册。
教师注册流程图如下所示。
图5-1教师注册流程图
教师注册界面如下图所示。
图5-1教师注册界面
/**
* 注册
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
学生成绩管理页面可以搜索学生学号、学生姓名、班级名称、科目、平时成绩、考试成绩、老师评语等详情信息等编辑操作。
图5-1学生成绩管理界面
老师请假页面可以搜索教师号、老师名称、开始日期、结束日期、审核状态、请假申请、审批回复等详情信息等操作。
图5-1老师请假管理界面
老师请假管理关键代码如下所示。
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
教育机构信息添加功能主要指对其教育机构、机构地址、机构类型、机构封面、机构规模、机构业务、机构简介等一些基本信息的编辑查看评论、添加、删除和修改。
教育机构管理界面如图所示。
图5-1教育机构界面
教育机构管理关键代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
}
学生成绩信息添加功能主要指对其学生学号、学生姓名、班级名称、科目、平时成绩、考试成绩、老师评语等一些基本信息的编辑、查询添加、删除和修改。
学生成绩管理界面如图所示。
图5-1学生成绩管理界面
学生成绩添加关键代码如下所示。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
老师课程安排添加功能主要指对其教师号、老师姓名、课程名称、开课时间、授课地址、授课地点、授课章节、具体详情等一些基本信息查询添加、删除和修改。
老师课程安排管理界面如图所示。
图5-1老师课程安排管理界面图
老师课程安排管理关键代码如下所示。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
-
- 学生管理模块的实现
学生输入账号、设置密码、确认密码、昵称、邮箱、手机号、身份、姓名 性别、学号等必填信息后,点击注册按钮完成用户的注册。
学生注册流程图如下所示。
图5-1学生注册流程图
学生注册界面如下图所示。
图5-1学生注册界面图
报名信息页面可以搜索教育机构、机构地址、机构类型、机构业务、学生学号、学生姓名等详情信息等操作。
图5-1报名信息界面图
学生课程安排页面可以搜索学生学号、学生姓名、课程名称、开课时间、授课地点、授课章节、具体详情等详情信息等操作。
图5-1学生课程安排界面图
学生课程安排管理关键代码如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
评价老师页面可以搜索学生学号、学生姓名
图5-1评价老师界面图
1、服务器端
操作系统:Windows 7
Web服务器:Tomcat7.0
数据库:Mysql
开发语言:Java
2、客户端
浏览器:Internet Explorer10
界面布局:DIV+CSS
分辨率:最佳效果1027*768以上像素
3、开发工具
Visual Studio Code
Myeclipse
系统测试是用于检查软件的质量、性能、可靠性等是否符合用户需求。一套严谨的、规范的、完善的测试过程将大大提高软件的质量、可信度、可靠性,降低软件的出错率,降低用户风险系数。通过在计算机上对系统进行测试试验并从中发现此系统中存在的问题和错误然后加以修改,使之更加符合用户需求。
1.测试的目的是通过测试来发现程序在执行过程中的错误的过程。
2.好的测试方案是可以检验出还未被发现的错误的方案。
3.好的测试是发现了到目前为止还未被发现的错误的测试。
4.该系统能够完成用户管理、教育机构、报名信息、学生成绩、员工工资、老师课程安排、老师请假、学生请假、学生考勤、老师考勤、评价老师、老师总评等功能,做到所开发的系统操作简单,尽量使系统操作不受用户对电脑知识水平的限制。
下表是教育机构管理系统 功能的测试用例,检测了教育机构管理系统 中对精品推荐信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-1老师请假管理的测试用例
功能描述 | 用于老师请假管理 | |
测试目的 | 检测老师请假管理时的各种操作的运行情况 | |
测试数据以及操作 | 预期结果 | 实际结果 |
点击添加老师请假,必填项合法输入,点击保存 | 提示添加成功 | 与预期结果一致 |
点击添加老师请假,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改老师请假,必填项修改为空,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改老师请假,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击删除老师请假,选择老师请假删除 | 提示删除成功 | 与预期结果一致 |
点击搜索老师请假,输入存在的老师请假名 | 查找出老师请假 | 与预期结果一致 |
点击搜索老师请假 ,输入不存在的在线投票名 | 不显示老师请假 | 与预期结果一致 |
下表是学生成绩管理功能的测试用例,检测了学生成绩管理的操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-2 学生成绩管理的测试用例
功能描述 | 用于学生成绩管理 | |
测试目的 | 检测学生成绩管理时各种操作的情况 | |
测试数据以及操作 | 预期结果 | 实际结果 |
未选择学生成绩,点击提交 | 提示请选择学生成绩 | 与预期结果一致 |
未上传附件,点击提交 | 提示请选择附件 | 与预期结果一致 |
未选择原因,点击提交 | 提示请选择原因 | 与预期结果一致 |
根据以上测试情况,测试结果如下表所示。
表6-1测试结果表
测试项目 | 测试结果 |
登录测试 | 成功 |
修改密码测试 | 成功 |
学生成绩管理测试 | 成功 |
老师请假测试 | 成功 |
学生课程安排 | 成功 |
用户管理测试 | 成功 |
员工工资测试 | 成功 |
学生考勤管理测试 | 成功 |
老师考勤管理测试 | 成功 |
评价老师测试 | 成功 |
学生课程安排测试 | 成功 |
教育机构管理测试 | 成功 |
报名信息测试 | 成功 |
本研究针对教育机构管理系统 地需求建模,数据建模及过程建模分析设计并实现教育机构管理系统 的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现教育机构管理系统 的前后端代码。最终给出系统集成整合方法,完成教育机构管理系统 地设计与实现。
在此项目的开发中,先要按照产品经理做出的产品模型铺出大体的页面,并在其中找好页面的逻辑关系,并且中途总结一些页面上的问题重新反馈给产品经理,当静态页面的搭建的大体已经完善时,就需要和负责后台开发的技术开发者联系,来接好前后台的数据接口,可以让后台的信息在前台显示出来,在这个项目实现中,不光明白了前端开发和产品经理的联系,也明白了后台在整个系统中起到了什么作用,因为前后台的连接,用户可以对系统进行操作,可以在输入自己的相关信息后,通过后台加工,完成对数据库的查找、修改、添加,而理解了这些关系与实现的方法后。再去完善整个系统的功能就更加清晰与简单了。此次的项目它涉及了前台与后台系统的搭建,在学校所学的知识基础上,此次的项目,让我对于一个系统的前端开发,以及后台的作用都有了一个更深切的认知。
参考文献
[1]李艳杰.基于JAVA与MySQL数据库的移动端题库练习系统的设计与实现[J].黑龙江科学,2022,13(02):56-57.
[2]王一竹.基于MySQL的图书馆信息管理系统设计[J].电脑编程技巧与维护,2022(01):93-95+116.
[3]冯凯.“MySQL数据库”课程教学中常见问题探析[J].无线互联科技,2021,18(24):158-159.
[4]陈洁.“MySQL数据库安全”课程教学方法优化分析[J].无线互联科技,2021,18(24):160-161.
[5]涂华燕.基于MySQL宿舍管理系统数据库设计[J].电脑编程技巧与维护,2021(12):104-106.
[6]冯冬艳.MySQL集群主从复制的原理、实现与常见故障排除[J].山西电子技术,2021(06):47-48+57.
[7]闫继正,张雷,张海涛.基于MySQL的空管设备集中监控系统数据库设计[J].微处理机,2021,42(06):47-51.
[8]梁倩,张洧睿. 一种基于SSM的房屋租赁平台[P]. 天津市:CN113535126A,2021-10-22.
[9]刘汪洋,李宁. 一种应用于SSM框架的会话保持方法[P]. 山东省:CN113347235A,2021-09-03.
[10]Jun Ma, Jun Mao, Long Chen , Lili Yin. Design and Implementation of Multi-terminal Debugging System based on SSM Framework[J]. International Core Journal of Engineering,2021,7(7).
[11]庄广壬,陈建生,冼永乐,植挺生,刘勇. 基于SSM框架的Restful服务开发方法与装置[P]. 广东省:CN112748908A,2021-05-04.
[12]陈钊.SSM框架在Web应用开发中的设计与实现研究[J].电脑知识与技术,2021,17(10):226-227.
[13]马浩,李奋华.基于SSM框架的社交软件运营管理平台的设计与实现[J].信息通信,2020(12):241-244.
[14]谢靖萱,芦明.一种基于SSM框架技术的航空售票系统的设计与实现[J].电脑编程技巧与维护,2020(10):24-25+41.
[15]贾家新.谈项目教学法在SSM框架技术课程中的应用和研究[J].信息系统工程,2020(07):135-136.
[16]郭俊杰. 基于SSM的线下商圈服务管理系统设计与实现[D].桂林理工大学,2020.
[17]张韶琳,曹平,付海亮. 用于分层架构设计的SSM框架设计方法[P]. 北京市:CN111143451A,2020-05-12.
[18]Xiaojie Guo,Tingmei Wang*. Design and Implementation of Graduate Information Management System Based on SSM Framework[J]. Journal of Simulation,2020,8(2).
[19]陈林,张来卿,庞严冬. 一种基于SSM框架的药店系统实现单个库存药品养护的方法[P]. 广东省:CN110956415A,2020-04-03.
[20]Ping Wanxin,Chen Yuankun,Hou Xiaoyan. Design of Campus Bicycle Rental Management System Based on SSM Framework[J]. Journal of Physics: Conference Series,2019,1314.
致谢
在此论文完成之际,感谢我的指导老师。在指导老师的网页设计课上,当时我学到了很多东西,这对于我实习过程中也打了一定的基础,而且指导老师对于我的设计也提出许多建议,并予以悉心的指导,对于一些细小的问题都耐心的指导我去完善,授予我写论文的好友,时常的鼓励我,另外感谢教导我完善此项目的前端同学,对于这个项目,我是边学习边实现完成的,有许多东西开始并不是很明白,但前端开发的同学非常耐心的引导我去将这个项目完成,在系统的后端开发中,所用到的后台开发技术也时常会给我讲解,助于我更好的将论文完成,在此对帮助到我的同学和一直予以教导的指导老师致以衷心的感谢,祝事业有成。
点赞+收藏+关注 → 私信领取本源代码、数据库