网上选课系统--毕设附源码69736

摘  要

随着信息技术的快速发展,高等教育领域对教学管理的数字化需求日益增加,网上选课系统应运而生。本文基于Spring Boot框架设计并实现了一套高效、易用的网上选课系统。该系统旨在为学生提供便利的选课体验,同时为教师和管理员提供全面的课程管理功能。

通过采用Spring Boot框架,系统具备了快速开发和部署的优势,充分利用了Spring生态系统的成熟特性。系统主要功能模块包括用户管理、课程管理、选课管理、成绩管理等,支持学生在线浏览课程信息、提交选课申请、查看个人成绩,以及教师对课程的管理与评价。管理员则可以对系统进行全面的监控与维护,确保系统的稳定运行。

在设计过程中,本文着重考虑了系统的安全性和易用性,采用了权限控制机制和友好的用户界面,提升用户体验。此外,系统还具备良好的扩展性,能够根据实际需求进行功能的增补和调整。

通过实际应用案例,本文验证了该网上选课系统的可行性和有效性,为高校教学管理提供了一种新的解决方案。最后,本文总结了系统的不足之处,并提出了未来的改进方向,以期为后续研究提供参考。

关键词:网上选课系统;Spring Boot;教学管理;用户体验

Abstract

With the rapid development of information technology, the digital demand for teaching management in higher education is increasing, and online course selection systems have emerged. This article designs and implements an efficient and easy-to-use online course selection system based on the Spring Boot framework. The system aims to provide students with a convenient course selection experience, while also offering comprehensive course management functions for teachers and administrators.

By adopting the Spring Boot framework, the system has the advantage of rapid development and deployment, fully utilizing the mature features of the Spring ecosystem. The main functional modules of the system include user management, course management, course selection management, grade management, etc. It supports students to browse course information online, submit course selection applications, view personal grades, and teachers to manage and evaluate courses. Administrators can conduct comprehensive monitoring and maintenance of the system to ensure its stable operation.

In the design process, this article focuses on the security and usability of the system, adopting permission control mechanisms and user-friendly interfaces to enhance user experience. In addition, the system also has good scalability and can supplement and adjust functions according to actual needs.

Through practical application cases, this article verifies the feasibility and effectiveness of the online course selection system, providing a new solution for university teaching management. Finally, this article summarizes the shortcomings of the system and proposes future improvement directions, in order to provide reference for subsequent research.

Keywords: Online course selection system; Spring Boot; Teaching management; User experience

目  录

1 前  言

1.1 研究背景和意义

1.2 国内外研究现状

1.3 论文结构与章节安排

2 关键技术

2.1 Java

2.2 MySQL

2.3 Spring Boot框架

2.4 B/S模式

3 系统分析

3.1 可行性分析

3.1.1 技术可行性

3.1.2 经济可行性

3.1.3 操作可行性

3.2 功能需求分析

3.3 系统性能分析

3.4 系统流程分析

3.4.1 程序操作流程

3.4.2 登录流程

3.4.3 注册流程

4 系统设计

4.1 总体设计

4.1.1 框架设计

4.1.2 功能模块设计

4.2 数据库设计

4.2.1 E-R图

4.2.2 数据库表结构设计

5 系统实现

5.1 学生用户模块

5.1.1 用户登录界面

5.1.2 用户注册界面

5.1.3 学校新闻界面

5.1.4 课程信息界面

5.1.5 排课课表界面

5.2 教师用户模块

5.2.1 退选信息界面

5.2.2 选课信息界面

5.2.3 学生成绩界面

5.3 后台管理员模块

5.3.1 系统用户界面

5.3.2 课程类型管理界面

5.3.3 课程教室管理界面

5.3.4 系统管理界面

5.3.5 学校公告管理界面

6 系统测试

6.1 测试目的与意义

6.2 测试用例

6.3 测试分析

7 结束语

参考文献

致  谢

1  前  言

1.1研究背景和意义

随着信息技术的迅猛发展,教育领域正经历着深刻的变革。传统的选课方式往往依赖于纸质表格和人工操作,效率低下且容易出现数据错误,难以满足现代学生和教师对高效、便捷服务的需求。在这样的背景下,网上选课系统应运而生,成为高等教育管理的重要工具。通过信息化手段,网上选课系统能够大幅提升选课的效率,简化流程,降低人工成本,为学生提供更加便捷的选课体验[1]。

网上选课系统的研究意义在于其对教育管理模式的创新和优化。该系统不仅为学生提供了实时的课程信息和选课功能,还能帮助教师和管理者更好地掌握课程安排和学生需求。通过数据的集中管理,教育机构可以实现更为精准的教学资源配置,提升教学质量和管理效率。此外,系统的设计与实施对于推动高校信息化建设、提升教育数字化水平具有重要的推动作用[2]。

在当前教育改革不断深入的背景下,网上选课系统的研究与应用也反映了教育公平与可及性的重要性。通过为学生提供平等的选课机会,促进了学生个性化发展与自主学习的实现。研究这一系统不仅有助于提高教学管理的科学性和合理性,还有助于培养学生的自主学习能力和创新精神。综上所述,网上选课系统的研究背景和意义深远,具有重要的理论和实践价值[3]。

1.2国内外研究现状

网上选课系统的研究在国内外均有广泛的关注和发展。国外的研究起步较早,许多高校已经实现了相对成熟的选课系统。例如,美国的一些大学采用了基于Web的选课平台,学生可以通过这些平台方便地选择课程、查看课程信息以及获取相关通知。这些系统通常集成了学分管理、成绩查询和课程评价等功能,极大地提升了学生的选课体验和教学管理的效率。

在欧洲,许多高等院校也在积极探索网上选课系统的建设。德国一些大学,其选课系统不仅支持多语言界面,还能根据学生的学习进度和兴趣推荐相关课程,帮助学生更好地进行学业规划。这种个性化的服务使得学生能够更有效地进行选课,增加了课程的适应性和灵活性。

国内的网上选课系统研究起步相对较晚,但近年来发展迅速。许多高校纷纷建立了自己的选课平台,以满足日益增长的教学管理需求。例如,一些高校的选课系统不仅提供课程信息查询和选课功能,还实现了与学籍管理、成绩管理等系统的无缝对接,形成了较为完善的教学管理信息化体系。清华大学的选课系统通过数据分析,能够实时反馈课程的选课情况,帮助教师及时调整教学安排[4]。

在研究方法上,国内外的研究者们也逐渐形成了一些共识。许多研究强调用户体验的重要性,提出了基于用户需求的系统设计理念。通过对学生和教师的需求调研,研究者能够更好地理解系统的使用场景,从而优化功能设计,提高系统的实用性和满意度[5]。

总体来看,网上选课系统的研究在国内外都取得了显著进展。虽然各国的系统在功能和设计上存在一定差异,但其核心目标始终是提高教学管理的效率和学生的选课体验。未来,随着技术的不断发展,网上选课系统将继续演进,朝着更加智能化和人性化的方向发展[6]。

1.3论文结构与章节安排

本文共分为七章,章节内容安排如下:

第一章:引言,主要介绍网上选课系统领域研究的背景和意义,概述国内外研究的现状。

第二章:关键技术,主要探讨和说明实现网上选课系统的关键技术。

第三章:系统分析,主要从网上选课系统的可行性、功能、性能等方面进行分析,为后续系统设计提供理论支持。

第四章:系统设计,主要对网上选课系统功能模块、数据库进行功能设计。

第五章:系统实现,主要介绍了网上选课系统的功能、系统界面的实现。

第六章:系统测试,主要对网上选课系统进行测试,验证功能完整性、稳定性和安全性,评估系统在实际运行中的性能表现。

第七章:结束语。总结全文研究内容,提出对网上选课系统领域未来发展的展望和建议,指出研究的不足和可优化之处,为相关领域的进一步探索提供参考。

2  关键技术

2.1Java

Java是一种跨平台的编程语言,广泛用于开发各种类型的应用程序,包括Web应用、移动应用和大型软件系统。在网上选课系统中,Java通常用于后端开发,提供强大的处理能力和稳定性。同时Java是一种面向对象的编程语言,支持封装、继承和多态等特性,使代码更易于维护和重用。还拥有丰富的标准库和第三方框架,如Spring、Hibernate等,可以大大提高开发效率。

2.2MySQL

MySQL是一种流行的开源关系型数据库管理系统,用于存储和管理数据。在网上选课系统中,MySQL可以用于数据存储、数据查询和数据管理等方面,用户可以免费使用和修改源代码,为平台提供可靠和高性能的数据库支持。MySQL支持多种存储引擎,如InnoDB和MyISAM,可以根据不同的应用场景选择合适的存储引擎,以提高性能;提供了多种数据安全机制,如用户权限管理、数据加密和备份恢复等,确保数据的安全性。

2.3Spring Boot框架

Spring Boot是一个用于构建微服务的Java框架,简化了Spring应用程序的开发和部署过程。Spring Boot通过自动配置和约定优于配置的理念,简化了Spring应用程序的开发过程,使开发者可以更快地构建和部署应用程序;拥有丰富的生态系统,如Spring Cloud、Spring Security等,可以满足各种企业级应用的需求。在网上选课系统中,Spring Boot可以快速搭建后端服务,并实现各种功能模块的集成和管理。

2.4B/S模式

B/S模式,即浏览器/服务器模式,是一种常见的网络应用架构模式。在B/S模式中,用户通过浏览器作为客户端与服务器进行交互。在浏览器/服务器(browser / Server Architecture)系统中,用户只需通过浏览器,就能够轻松地向分布在网络各处的众多服务器发送海量的请求。B/S系统大大地简化了客户端的工作,让用户体验更加便捷。

3  系统分析

3.1可行性分析

3.1.1技术可行性

从技术角度来看,Spring Boot作为一种轻量级、快速构建的Java框架,能够提高开发效率,降低系统的复杂程度,易于维护和升级。同时,MySQL作为关系型数据库,能够支持平台数据的存储与管理,保障系统的稳定性和高效性。因此,本系统具有技术可行性。

3.1.2经济可行性

考虑到Springboot、Vue、MyBatis Plus及MySQL等均为开源技术,无需支付高昂的许可费用,大大降低了系统的开发成本。同时,这些技术拥有广泛的用户群体和成熟的社区支持,便于获取技术支持和资源共享。此外,系统的实施将显著用户体验,从而带来潜在的经济效益。因此,从经济角度来看,该系统的开发同样具备可行性。

3.1.3操作可行性

系统设计应遵循用户友好原则,确保用户能够轻松上手并高效使用。通过合理的界面布局、直观的操作流程以及详尽的帮助文档,可以大大降低用户的学习成本,提高系统的操作可行性。此外,系统还应具备完善的权限管理和数据安全机制,确保操作的安全性和合规性。

从技术、经济和操作三个维度来看,网上选课系统的开发均具备高度的可行性。

3.2功能需求分析

(一)学生用户角色用例如下图所示。

图3.1学生用户用例图

学生用户具体功能说明如下所示。

首页:学生用户登录后进入的主界面,通常展示系统的导航菜单、学校公告、热门课程等信息,方便学生快速找到所需内容。

学校公告:学生可以查看学校发布的各类公告,如重要通知、活动信息等,确保及时了解学校的动态。

学校新闻:提供最新的学校新闻和活动报道,学生可以了解学校的各类新闻事件,增强对校园生活的参与感。

课程信息:学生可以浏览和查询课程信息,包括课程名称、授课教师、课程简介、学分等,有助于学生选择合适的课程。

排课课表:展示学生所选课程的课表安排,方便学生查看课程的时间和地点,合理安排自己的学习时间。

我的账户:学生可以管理自己的账户信息,包括个人资料的查看和修改,保证信息的准确性和及时性。

个人中心:

个人首页:展示学生的基本信息、选课状态和相关通知,便于学生了解自己的学习状况。

收藏:学生可以收藏感兴趣的课程或信息,方便后续查看和选择。

选课信息:查看自己已选的课程,了解课程安排和相关信息。

评论管理:学生可以对课程进行评论和反馈,为其他同学提供参考,并参与课程质量的提升。

退选信息:查看已提交的退选申请状态,管理自己的课程选择。

排课课表:再次查看自己的课程安排,确保准确了解课程时间和地点。

学生成绩:学生可以查看自己的成绩信息,便于了解学习进度和学业表现,及时进行调整。

(二)教师用户角色用例如下图所示。

图3.2教师用户用例图

教师用户具体功能说明如下所示。

首页:教师用户登录后进入的主界面,通常展示系统的导航菜单、学校公告、热门课程等信息,帮助教师快速了解系统状态。

学校公告:教师可以查看学校发布的公告,包括重要通知、活动安排等,确保及时了解学校的最新动态。

学校新闻:提供学校的最新新闻和活动报道,教师可以了解校园内的重要事件,增强参与感。

课程信息:教师可以查看课程信息,包括课程名称、授课时间、授课对象等,以便于进行课程管理。

我的账户:教师可以管理自己的账户信息,包括个人资料的查看和修改,确保信息的准确性和更新。

个人中心:

个人首页:展示教师的基本信息、所授课程及相关通知,便于教师了解自己的工作状态。

学生成绩:教师可以录入和查看学生的成绩信息,方便进行评估和反馈。

课程信息:管理自己教授的课程,包括课程安排、教材信息等,确保课程内容的及时更新。

通知信息:教师可以发布通知,向学生传达重要信息,如课程安排、作业要求等,确保信息的有效传递。

选课信息:查看学生的选课情况,了解选课人数及其分布,便于进行课程安排。

收藏:可以收藏感兴趣的课程或信息,为后续管理提供便利。

退选信息:查看学生的退选申请,及时处理相关事务。

评论管理:教师可以查看学生对课程的评论和反馈,以便改进教学质量。

排课课表:查看自己课程的排课安排,确保合理安排授课时间和地点。

(三)管理员角色用例如下图所示。

图3.3管理员用例图

系统后台管理端管理员具体功能说明如下所示。

后台首页:管理员登录后首先看到的界面,通常显示系统的总体信息和统计数据,如选课人数、课程数量等,便于快速了解系统状态。

系统用户管理:管理员可以对系统中的用户进行管理,包括添加、删除和修改用户信息,确保用户权限和信息的准确性。

课程类型管理:管理员可以设置和管理不同的课程类型,如必修课、选修课等,以便于学生在选课时进行筛选。

课程教室管理:负责管理课程所需的教室信息,包括教室的名称、容量、设备等,确保课程安排的合理性。

课程信息管理:管理员可以添加、修改和删除课程信息,包括课程名称、授课教师、学分等,确保课程信息的及时更新。

选课信息管理:管理员可以查看和管理学生的选课情况,处理选课申请,确保选课流程的顺畅。

退选信息管理:负责处理学生的退选申请,确保退选流程的规范和透明。

排课课表管理:管理员可以制定和调整课程安排,生成课表,确保课程与教室的合理匹配。

学生成绩管理:管理员可以录入、修改和查询学生的成绩信息,为后续的学业评估提供支持。

通知信息管理:管理员可以发布通知,向学生传达重要信息,如选课时间、课程变动等,确保信息的及时传递。

系统管理(轮播图):管理系统首页的轮播图内容,更新宣传信息,提升系统的用户体验。

学校公告管理:负责发布和管理学校的公告信息,确保学生能够及时获取学校的重要消息。

资源管理:包括管理学校新闻和新闻分类,管理员可以发布最新的学校动态,维护学校形

3.3系统性能分析

对于网上选课系统的设计与实现,下面是系统性能分析表:

表3.1性能需求表

项目

内容

响应时间

系统对用户请求的响应时间需在500ms以内

并发用户数

系统需要支持1000个并发用户同时访问

吞吐量

系统每秒需要处理1000个请求

可用性

系统需要保证每月99.9%的可用性

数据安全

用户敏感数据需要加密存储,并支持数据库备份和恢复

数据一致性

系统中的数据操作需保证ACID特性,确保数据一致性

扩展性

系统需要支持水平扩展,能够方便地增加服务器节点以应对高请求量

可维护性

系统代码需要清晰易懂、结构良好,方便维护和修改

日志记录

系统需要记录用户操作日志、异常日志以及系统运行日志

监控报警

系统需要实时监控运行状态,当系统异常时能够及时发送警报通知相关人员

缓存设置

针对频繁使用的数据,系统需要进行合适的缓

3.4系统流程分析

3.4.1程序操作流程

用户访问系统,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录系统。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如下图所示。

图3.4程序操作流程图

3.4.2登录流程

用户访问系统,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如下图所示。

图3.5登录流程图

3.4.3注册流程

未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如下图所示。

图3.6注册流程图

4  系统设计

4.1总体设计

4.1.1框架设计

B/S架构,即浏览器/服务器架构,是一种基于Web的分布式计算范式。在此架构中,应用程序的逻辑被巧妙地区分为客户端和服务器两部分。具体而言,客户端借助广泛使用的浏览器界面,进行应用访问与操作;而服务器端则肩负起业务逻辑处理、数据存储及管理的核心职责。值得一提的是,客户端无需安装特定的软件,用户仅需通过浏览器输入相应的URL地址,即可轻松访问应用程序,这一特性极大地提升了用户的使用便捷性和系统的维护效率。服务器端通常采用高性能的计算机和数据库系统,能够处理大量并发请求和复杂的业务逻辑。B/S架构的优势在于其跨平台性和易于维护性,开发者可以通过更新服务器端的代码来实现整个系统的升级和维护,而无需逐一更新客户端。

图4.1系统架构图

4.1.2功能模块设计

功能模块设计是系统开发过程中的重要阶段,它旨在将系统划分为不同的模块,每个模块负责完成特定的功能或任务。网上选课系统由多个功能模块组成,每个模块下又包含具体的功能操作。功能模块图如下图所示。

图4.2系统功能结构图

4.2数据库设计

4.2.1E-R

E-R图有助于理清系统中的数据结构和关系,为后续的数据库表结构设计提供指导。在进行数据库设计之前,首先需要先绘制实体-关系(E-R)图。E-R图将帮助我们理清业务中的实体(Entity)及它们之间的关系(Relationship),从而为后续的数据库表设计提供基础。根据前文可以得出本网上选课系统拥有多个实体,在此列举主要实体,各个实体之间联系总E-R图如下图所示。

图4.3总E-R图

4.2.2数据库表结构设计

在E-R图确定后,接下来可以根据实体和关系的属性设计数据库表结构。在E-R图明确了实体和它们之间的关系后,接下来可以开始设计数据库表结构。每个实体对应一个数据库表,每个属性对应表中的字段。如下列表格所示,在此列举主要数据表。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

parent

varchar

64

0

Y

N

父级菜单

8

parent_sort

int

10

0

N

N

0

父级菜单排序

9

position

varchar

32

0

Y

N

位置:

10

mode

varchar

32

0

N

N

_blank

跳转方式:

11

add

tinyint

3

0

N

N

1

是否可增加:

12

del

tinyint

3

0

N

N

1

是否可删除:

13

set

tinyint

3

0

N

N

1

是否可修改:

14

get

tinyint

3

0

N

N

1

是否可查看:

15

field_add

text

65535

0

Y

N

添加字段:

16

field_set

text

65535

0

Y

N

修改字段:

17

field_get

text

65535

0

Y

N

查询字段:

18

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

19

table_nav

varchar

500

0

Y

N

跨表导航:

20

option

text

65535

0

Y

N

配置:

21

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

22

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表code_token

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

code_token_id

int

10

0

N

Y

2

token

varchar

255

0

Y

N

3

code

varchar

255

0

Y

N

验证码

4

expire_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

失效时间

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表course_classroom (课程教室)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

course_classroom_id

int

10

0

N

Y

课程教室ID

2

classroom_name

varchar

64

0

Y

N

教室名称

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表course_information (课程信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

course_information_id

int

10

0

N

Y

课程信息ID

2

course_number

varchar

64

0

Y

N

课程编号

3

course_name

varchar

64

0

Y

N

课程名称

4

course_type

varchar

64

0

Y

N

课程类型

5

class_time

date

10

0

Y

N

上课时间

6

class_location

varchar

64

0

Y

N

上课地点

7

course_credit

varchar

64

0

Y

N

课程学分

8

teaching_teacher

int

10

0

Y

N

0

授课教师

9

teachers_name

varchar

64

0

Y

N

教师姓名

10

maximum_number_of_people

double

9

2

Y

N

0.00

人数上限

11

current_number_of_people

double

9

2

Y

N

0.00

当前人数

12

course_cover

varchar

255

0

Y

N

课程封面

13

course_introduction

text

65535

0

Y

N

课程简介

14

hits

int

10

0

N

N

0

点击数

15

praise_len

int

10

0

N

N

0

点赞数

16

collect_len

int

10

0

N

N

0

收藏数

17

comment_len

int

10

0

N

N

0

评论数

18

recommend

int

10

0

N

N

0

智能推荐

19

course_selection_information_limit_times

int

10

0

N

N

0

选课限制次数

20

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

21

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表course_selection_information (选课信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

course_selection_information_id

int

10

0

N

Y

选课信息ID

2

course_number

varchar

64

0

Y

N

课程编号

3

course_name

varchar

64

0

Y

N

课程名称

4

course_type

varchar

64

0

Y

N

课程类型

5

class_time

date

10

0

Y

N

上课时间

6

class_location

varchar

64

0

Y

N

上课地点

7

teaching_teacher

int

10

0

Y

N

0

授课教师

8

teachers_name

varchar

64

0

Y

N

教师姓名

9

maximum_number_of_people

double

9

2

Y

N

0.00

人数上限

10

current_number_of_people

double

9

2

Y

N

0.00

当前人数

11

student_users

int

10

0

Y

N

0

学生用户

12

student_name

varchar

64

0

Y

N

学生姓名

13

number_of_electors

varchar

64

0

Y

N

选课人数

14

examine_state

varchar

16

0

N

N

未审核

审核状态

15

examine_reply

varchar

16

0

Y

N

审核回复

16

withdrawal_information_limit_times

int

10

0

N

N

0

退选限制次数

17

student_grades_limit_times

int

10

0

N

N

0

成绩录入限制次数

18

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

19

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

20

source_table

varchar

255

0

Y

N

来源表

21

source_id

int

10

0

Y

N

来源ID

22

source_user_id

int

10

0

Y

N

来源用户

表course_type (课程类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

course_type_id

int

10

0

N

Y

课程类型ID

2

course_type

varchar

64

0

Y

N

课程类型

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表notification_information (通知信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notification_information_id

int

10

0

N

Y

通知信息ID

2

notification_name

varchar

64

0

Y

N

通知名称

3

notification_time

date

10

0

Y

N

通知时间

4

teacher_users

int

10

0

Y

N

0

教师用户

5

notification_content

text

65535

0

Y

N

通知内容

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表schedule (日程管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

schedule_id

smallint

5

0

N

Y

日程ID:[0,32767]

2

content

varchar

255

0

Y

N

日程内容

3

scheduled_time

datetime

19

0

Y

N

计划时间

4

user_id

int

10

0

N

N

用户id

5

create_time

datetime

19

0

Y

N

创建时间

6

update_time

datetime

19

0

Y

N

更新时间

表schedule_of_classes (排课课表)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

schedule_of_classes_id

int

10

0

N

Y

排课课表ID

2

schedule_name

varchar

64

0

Y

N

课表名称

3

classroom_scheduling

varchar

64

0

Y

N

排课教室

4

scheduling_students

varchar

64

0

Y

N

排课学生

5

classroom_cover

varchar

255

0

Y

N

教室封面

6

scheduling_number

int

10

0

N

N

1

单日最多排次数

7

scheduling_period

enum

1

0

N

N

1

周期

8

scheduling_date_options

text

65535

0

Y

N

时间设置

9

timetable

text

65535

0

Y

N

排期表

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表score (评分)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

score_id

int

10

0

N

Y

评分ID:

2

user_id

int

10

0

N

N

0

评分人:

3

nickname

varchar

64

0

Y

N

昵称:

4

score_num

double

5

2

N

N

0.00

评分:

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

source_table

varchar

255

0

Y

N

来源表:

8

source_field

varchar

255

0

Y

N

来源字段:

9

source_id

int

10

0

N

N

0

来源ID:

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表student_grades (学生成绩)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_grades_id

int

10

0

N

Y

学生成绩ID

2

course_number

varchar

64

0

Y

N

课程编号

3

course_name

varchar

64

0

Y

N

课程名称

4

course_type

varchar

64

0

Y

N

课程类型

5

teaching_teacher

int

10

0

Y

N

0

授课教师

6

teachers_name

varchar

64

0

Y

N

教师姓名

7

student_users

int

10

0

Y

N

0

学生用户

8

student_name

varchar

64

0

Y

N

学生姓名

9

course_grades

varchar

64

0

Y

N

课程成绩

10

student_credits

varchar

64

0

Y

N

学生学分

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

13

source_table

varchar

255

0

Y

N

来源表

14

source_id

int

10

0

Y

N

来源ID

15

source_user_id

int

10

0

Y

N

来源用户

表student_users (学生用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_users_id

int

10

0

N

Y

学生用户ID

2

student_name

varchar

64

0

Y

N

学生姓名

3

student_gender

varchar

64

0

Y

N

学生性别

4

student_phone_number

varchar

64

0

Y

N

学生电话

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表teacher_users (教师用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

teacher_users_id

int

10

0

N

Y

教师用户ID

2

teachers_name

varchar

64

0

Y

N

教师姓名

3

teacher_gender

varchar

64

0

Y

N

教师性别

4

teachers_phone_number

varchar

64

0

Y

N

教师电话

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

int

10

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表withdrawal_information (退选信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

withdrawal_information_id

int

10

0

N

Y

退选信息ID

2

course_number

varchar

64

0

Y

N

课程编号

3

course_name

varchar

64

0

Y

N

课程名称

4

course_type

varchar

64

0

Y

N

课程类型

5

class_time

date

10

0

Y

N

上课时间

6

class_location

varchar

64

0

Y

N

上课地点

7

teaching_teacher

int

10

0

Y

N

0

授课教师

8

teachers_name

varchar

64

0

Y

N

教师姓名

9

current_number_of_people

varchar

64

0

Y

N

当前人数

10

student_users

int

10

0

Y

N

0

学生用户

11

student_name

varchar

64

0

Y

N

学生姓名

12

withdrawal_time

date

10

0

Y

N

退选时间

13

reason_for_withdrawal

text

65535

0

Y

N

退选理由

14

number_of_dropouts

varchar

64

0

Y

N

退选人数

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

17

source_table

varchar

255

0

Y

N

来源表

18

source_id

int

10

0

Y

N

来源ID

19

source_user_id

int

10

0

Y

N

来源用户

5  系统实现

5.1学生用户模块

5.1.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;

        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());

            Duration duration = Duration.ofSeconds(7200L);

            redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);

            // 返回用户信息

            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, "账号或密码不正确");

        }

    }

5.1.2用户注册界面

用户注册时,系统要求用户提供必要的信息,例如用户名、密码、电子邮件地址等。这些信息通常由用户在注册表单中输入,并通过前端验证确保格式的正确性。注册过程完成后,系统会为新用户创建一个账户。这包括分配一个唯一的用户ID和设置初始的权限或者角色。

图5.2用户注册界面设计

注册关键代码如下:

    /**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

        query.put("username",user.getUsername());

        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);

}    

5.1.3学校新闻界面

该部分展示学校的新闻报道、学术活动、社会合作等相关资讯,帮助学生了解学校的最新发展和成就。在详情页可以点赞、收藏和评论。

学校新闻主界面图如下所示。

图5.3学校新闻主界面设计

5.1.4课程信息界面

学生可以通过这个功能查看学期的课程安排、各门课程的详细信息,包括授课教师、课程内容、学分、上课时间地点等。课程信息也是选课的重要依据。

课程信息主界面图如下所示。

图5.4课程信息主界面设计

5.1.5排课课表界面

该功能展示学生的个人课表,帮助学生了解自己一周的课程安排。学生可以查看每门课程的时间、地点、教师信息等内容,便于合理安排自己的学习计划。

排课课表主界面图如下所示。

图5.5排课课表主界面设计

5.2教师用户模块

5.2.1退选信息界面

在个人中心教师可以查看哪些学生申请退选课程,以及退选的原因和状态,帮助教师及时了解课程的变化。

退选信息主界面图如下所示。

图5.6退选信息界面设计

退选信息添加代码如下:

    @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

5.2.2选课信息界面

在个人中心教师可以查看哪些学生选修了自己教授的课程,也可以管理课程的选课人数、选课状态等。这些信息帮助教师了解学生的选课情况。

选课信息主界面图如下所示。

图5.7选课信息界面设计

5.2.3学生成绩界面

在个人中心教师可以在这里查看学生的成绩信息。包括各门课程的学生成绩管理,教师可以输入、修改、查看学生成绩,提供成绩统计和分析功能,帮助教师评估学生的学习情况。

学生成绩主界面图如下所示。

图5.8学生成绩界面设计

5.3后台管理员模块

5.3.1系统用户界面

管理员可以管理系统中的所有用户,包括学生用户和教师用户。此功能允许管理员添加、修改、删除用户信息,并根据需要调整用户权限,确保系统的安全性和可控性。

系统用户主界面图如下所示。

图5.9系统用户界面设计

添加系统用户信息关键代码:

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

5.3.2课程类型管理界面

管理员可以在此模块中管理课程的分类,设置不同的课程类型。课程类型管理有助于系统在选课过程中为学生提供更清晰的课程选择范围和分类,并优化课程推荐。

课程类型管理主界面图如下所示。

图5.10课程类型管理界面设计

添加课程类型用代码如下:

    @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

  @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

    }

5.3.3课程教室管理界面

该模块允许管理员管理学校的教室信息,包括教室的名称、容量、设备配备等。管理员可以为不同课程分配合适的教室,确保教学资源的有效利用和教室使用情况的合理安排。

课程教室管理界面如下所示。

图5.11课程教室管理详情界面设计

添加课程教室用代码如下:

    @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

  @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

    }

5.3.4系统管理界面

管理员可以对轮播图进行管理,包括添加、修改、删除轮播图,设置轮播图属性等。

系统管理界面如下所示。

图5.12系统管理界面设计

5.3.5学校公告管理界面

管理员可以发布公告信息,所有用户都可以查看公告信息。同时,管理员还需要能够查看和管理所有公告信息。

学校公告管理界面如下所示。

图5.13学校公告管理界面设计

上传图片关键代码如下:

   @PostMapping("/upload")

    public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

        log.info("进入方法");

        if (file.isEmpty()) {

            return error(30000, "没有选择文件");

        }

        try {

            //判断有没路径,没有则创建

            String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";

            File targetDir = new File(filePath);

            if (!targetDir.exists() && !targetDir.isDirectory()) {

                if (targetDir.mkdirs()) {

                    log.info("创建目录成功");

                } else {

                    log.error("创建目录失败");

                }

            }

            String fileName = file.getOriginalFilename();

            File dest = new File(filePath + fileName);

            log.info("文件路径:{}", dest.getPath());

            log.info("文件名:{}", dest.getName());

            file.transferTo(dest);

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("url", "/api/upload/" + fileName);

            return success(jsonObject);

        } catch (IOException e) {

            log.info("上传失败:{}", e.getMessage());

        }

        return error(30000, "上传失败");

6  系统测试

6.1测试目的与意义

在软件开发生命周期中,系统测试占据着举足轻重的地位。通过进行全面而系统的测试,我们能够确保软件在实际使用环境中具备稳定运行的能力,从而满足用户的多样化需求,并显著提升软件的整体质量与可靠性。这一过程不仅有助于识别并修复潜在问题,还能为软件的持续优化提供有力支撑。

随着现代信息的快速发展,在社会各大领域中已经都开始应用网络信息技术,在应用网络技术的同时人们也开始把软件的质量问题作为了一个重要焦点来关注,因为一个软件的好与坏它决定着这个系统在市场上的生存,所以我们必须要把软件质量来做好,这样才有一定的生存能力。对于用户来说它们首先选用的都是保证这个系统软件的质量问题,因为一个系统的软件质量决定着用户在后期上成本经济的问题。图6-1就是纠错测试流程。

图6.1测试与纠错信息流程

6.2测试用例

在系统的功能验证阶段,我们将对全部的功能界面进行全面测试。具体而言,我们将模拟用户行为,输入各类数据并进行提交操作,随后仔细观察和分析每个页面的响应反馈。这一过程旨在验证系统的功能完整性,确保页面所呈现的功能与预期相符,并能够完全实现预设的交互逻辑。通过这种全面细致的测试方法,我们将确保系统在实际应用中能够稳定、准确地响应用户需求。

下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6.1系统登录功能测试用例

功能描述

用于系统登录

测试目的

检测登录时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的用户名和密码带有非法字符

提示用户名或者密码错误

与预期结果一致

输入的用户名或者密码为空

提示用户名或者密码错误

与预期结果一致

输入的用户名和密码不存在

提示用户名或者密码错误

与预期结果一致

输入正确的用户名和密码

登录成功

与预期结果一致

下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6.2注册功能测试用例

功能描述

用于用户注册

测试目的

检测用户注册时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的手机号不合法

提示请输入正确的手机号码

与预期结果一致

输入的字段为空

提示必填项不能为空

与预期结果一致

输入的密码少于6位

提示密码必须为6-12位

与预期结果一致

输入的密码大于12位

提示密码必须为6-12位

与预期结果一致

下表是课程教室管理功能的测试用例,检测了对课程教室的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;登录系统。

表6.3课程教室管理的测试用例

功能描述

用于课程教室

测试目的

检测课程教室时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加课程教室,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加课程教室,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改课程教室,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改课程教室,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除课程教室,选择课程教室删除

提示删除成功

与预期结果一致

点击搜索课程教室,输入存在的课程教室名

查找出相应课程教室

与预期结果一致

点击搜索课程教室,输入不存在的课程教室名

不显示课程教室

与预期结果一致

下表是课程信息管理功能的测试用例,检测了课程信息管理中对课程信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;登录系统。

表6.4课程信息管理的测试用例

功能描述

用于课程信息

测试目的

检测课程信息时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加课程信息,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加课程信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改课程信息,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改课程信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除课程信息,选择课程信息删除

提示删除成功

与预期结果一致

点击搜索课程信息,输入存在的课程信息名

查找出相应课程信息

与预期结果一致

点击搜索课程信息,输入不存在的课程信息名

不显示课程信息

与预期结果一致

下表是选课信息管理功能的测试用例,检测了选课信息管理中对选课信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;登录系统。

表6.5选课信息管理的测试用例

功能描述

用于选课信息

测试目的

检测选课信息时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加选课信息,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加选课信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改选课信息,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改选课信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除选课信息,选择选课信息删除

提示删除成功

与预期结果一致

点击搜索选课信息,输入存在的选课信息名

查找出相应选课信息

与预期结果一致

点击搜索选课信息,输入不存在的选课信息名

不显示选课信息

与预期结果一致

下表是退选信息管理功能的测试用例,检测了退选信息管理中对退选信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;登录系统。

表6.6退选信息管理的测试用例

功能描述

用于退选信息

测试目的

检测退选信息时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加退选信息,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加退选信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改退选信息,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改退选信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除退选信息,选择退选信息删除

提示删除成功

与预期结果一致

点击搜索退选信息,输入存在的退选信息名

查找出相应退选信息

与预期结果一致

点击搜索退选信息,输入不存在的退选信息名

不显示退选信息

与预期结果一致

6.3测试分析

网上选课系统开发与设计满足相关信息的管理需求,在设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了管理员以及用户能够方便操作。系统的主要特点和优点归纳如下:

(1)本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给用户带来了极大的方便。

(2)该网上选课系统开发与设计内容全面,管理员可以及时的全面的处理各种错误,异常,这样避免了很多因用户的马虎操作而出现的失误,其操作方便,用户界面友好,能够上网的人都可以很好的进行操作。

经过对上述的测试结果分析,所有基本功能齐全,操作简单,系统运行性能良好,系统安全可靠,能促进网上选课系统的发展,发展前景广阔。

7  结束语

本文描述了网上选课系统的原理和开发过程,该系统是通过SpringBoot框架来搭建后台,中间件使用的是Tomcat服务器,数据库管理平台采用开源的Mysql,前台使用的是JQuery框架,同时使用Validate校验框架,这样就可以减少前端代码的输入量,而且基于JQuery框架的Validat框架使用简单,是流行的前端使用框架,前端使用的主要是HTML页面展示技术。

在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从开发这个网上选课系统的过程中我也收获了许许多多宝贵的方法以及设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、SpringBoot、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。

当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。

参考文献

  1. 王富广.基于Java学生选课系统的设计与实现[J].安阳师范学院学报,2024,26(05):109-113.DOI:10.16140/j.cnki.1671-5330.2024.05.023.
  2. 李寅杰.基于J2EE的网上选课系统设计[J].电子技术,2023,52(04):342-343.
  3. 王开柱,宁洪伟,李锐.B/S模式的网上选课系统的设计与开发[J].电脑知识与技术,2021,17(23):75-77.DOI:10.14004/j.cnki.ckt.2021.2392.
  4. 罗慧敏.基于BS的高校学生选课系统[2]李宝密.基于大数据的高校网上选课系统设计与开发[J].软件,2024,45(04):86-88.
  5. 潘梦妮,赵琳.学分制背景下大学外语选课系统的开发[J].作家天地,2021,(22):20-21.
  6. 杨博森,严张凌.微服务架构下学生选课系统的设计与实现[J].信息与电脑(理论版),2020,32(20):84-86.
  7. 郭倩倩,霍星,罗思维.基于C#的高校体育选课系统设计与实现[J].电脑编程技巧与维护,2023,(08):23-25.DOI:10.16184/j.cnki.comprg.2023.08.002.
  8. 胡伟东.基于B/S结构的学生选课系统设计与实现[J].信息与电脑(理论版),2023,35(01):23-25.
  9. 黄举,何茂忠,张晓蒙,等.基于SDN负载均衡的高校选课系统[J].现代信息科技,2022,6(12):71-73.DOI:10.19850/j.cnki.2096-4706.2022.012.018.
  10. 设计与实现[D].中南大学,2022.DOI:10.27661/d.cnki.gzhnu.2022.003694.
  11. Ullenboom C .Java Programming Exercises:Volume Two: Java Standard Library[M].CRC Press:2024-03-30.
  12. Aung T S ,Aung H L,Funabiki N, et al.An Implementation of Web-based Personal Platform for Programming Learning Assistant System with Instance File Update Function[J].Engineering Letters,2024,32(2):
  13. Zhou R ,Luo K ,Chen X , et al.Research on the Construction of Computer Courses Based on CBE-CDIO Engineering Education Concept: Taking the Course “JAVA Programming” as an Example[J].Contemporary Education Frontiers,2023,1(2):
  14. Jing Y ,Funabiki* N,Th S, et al.A Proposal of Hint Function for Java Programming Learning Assistant System[J].International Journal of Information and Education Technology,2023,13(11):
  15. Davi V .Designing Hexagonal Architecture with Java:Build maintainable and long-lasting applications with Java and Quarkus[M].Packt Publishing Limited:2023-09-29.DOI:10.0000/9781837630714.
  16. 刘伟冉.基于Java的网上选课系统设计和实现[J].科学技术创新,2020,(27):53-61.
  17. 袁义凡.基于认知负荷的高校选课系统界面设计研究[D].江苏大学,2020.DOI:10.27170/d.cnki.gjsuu.2020.002010.
  18. 连瑞梅.基于Java的选课管理系统的设计与实现[J].电脑知识与技术,2020,16(05):67-71+77.DOI:10.14004/j.cnki.ckt.2020.0523.
  19. 姜晓琴.网上选课系统的数据库设计与实现[J].数码世界,2020,(01):165.
  20. 曾青青.响应式网上选课系统的设计[J].机电信息,2019,(17):165+167.DOI:10.19514/j.cnki.cn32-1628/tm.2019.17.093.

致  谢

这次毕业设计能够完成,最重要的就是来自指导老师的帮助,老师不厌其烦的对我的论文及毕业设计提出非常有建设性的建议,我的毕设施能够完成离不开老师的帮助。我对老师由衷的表示感谢,

其次要感谢大学四年里学院里所有的任课老师的教导,老师们在我整个大学四年里给予了我丰富的知识,让我能够在大学中不虚度光阴,踏踏实实的学习,没有这些老师不辞辛劳的教诲,我无法完成这四年的学业。

最后,我要感谢我的家人和同学们。感谢父母在物质与精神上给予我无限的支持和鼓励。感谢我的同学们,在论文写作期间,你们给予了我许多宝贵的建议和帮助,让我在学术研究的道路上不再孤单。

再次感谢所有在我大学生活中给予我帮助和支持的人们。您们的关怀和鼓励将永远铭刻在我的心中,成为我未来前行的动力。

由于自己的水平有限,毕设仍然存在着很大的缺陷,各位老师若提出意见,我会努力改正。

点赞+收藏+关注 → 私信领取本源代码、数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值