目 录
摘 要
本文介绍了基于Spring Boot框架的校园万能墙系统的设计和实现过程。该系统旨在为校园内师生提供一个便捷的信息发布与交流平台,具备信息发布、评论互动、点赞收藏等基本功能。文章首先概述了系统的需求和目标,随后详细描述了系统的架构设计、数据库设计以及关键模块的实现细节。
在架构设计方面,本文采用了基于Spring Boot的前后端分离架构,前端使用Vue.js框架进行开发,后端则采用Spring Boot框架搭建RESTful API接口。数据库设计方面,系统选用了MySQL作为存储后端,并设计了合理的表结构和关联关系,以确保数据的完整性和查询效率。
本文对系统进行了测试与性能分析,验证了系统的稳定性和性能表现。通过实际应用证明,该系统能够有效满足校园内信息发布与交流的需求,提升了校园信息化水平,为师生提供了一个便捷、高效的交流平台。
关键词:springboot;Java语言;校园万能墙系统;MySQL
Abstract
This article introduces the design and implementation process of a campus universal wall system based on the Spring Boot framework. The system aims to provide a convenient information publishing and communication platform for teachers and students on campus, with basic functions such as information publishing, comment interaction, likes and collections. The article first provides an overview of the system's requirements and objectives, followed by a detailed description of the system's architecture design, database design, and implementation details of key modules.
In terms of architecture design, this article adopts a front-end and back-end separation architecture based on Spring Boot. The front-end is developed using the Vue.js framework, while the back-end uses the Spring Boot framework to build RESTful API interfaces. In terms of database design, the system has chosen MySQL as the storage backend and designed a reasonable table structure and association relationships to ensure data integrity and query efficiency.
This article conducted testing and performance analysis on the system, verifying its stability and performance. Through practical application, it has been proven that the system can effectively meet the needs of information dissemination and communication on campus, improve the level of campus informatization, and provide a convenient and efficient communication platform for teachers and students.
Key words:Springboot; Java language; Campus Universal Wall System; MySQL
1 绪论
1.1研究背景与意义
校园万能墙系统研究背景及意义是随着互联网的普及和社交媒体的兴起,学生们需要一个平台来表达自己的想法和情感,同时也需要一个平台来获取信息、交流思想和结交朋友。而校园万能墙系统正是为了满足这些需求而设计的。为学生提供一个表达自己想法和情感的平台,有助于学生们建立自信,增强沟通能力,培养良好的心理素质。增进学生之间的友谊和团结,通过在墙上留言、评论和互动,学生们可以结识更多的朋友,拓宽人际交往圈子。为校园内师生提供便捷的信息发布与交流平台,提升校园信息化水平。
1.2研究现状
随着信息技术的快速发展和智能手机的普及,校园社交应用逐渐成为了学生生活中不可或缺的一部分。校园万能墙系统作为其中的一种应用,旨在为学生提供一个综合信息发布、交流互动的平台。近年来,校园万能墙系统的研究与发展呈现出以下现状:
现代的校园万能墙系统不仅提供了基本的信息发布功能,还融入了评论、点赞、转发、私信等社交互动功能。此外,为了满足学生多样化的需求,一些系统还加入了课程表查询、失物招领、活动报名等实用功能。随着移动互联网技术的发展,校园万能墙系统在技术层面也不断创新。用户体验是评价一个系统好坏的重要标准。当前的校园万能墙系统注重用户界面的简洁美观,提供流畅的操作体验。同时,系统还通过优化算法减少信息过载,确保用户能够快速获取到感兴趣的内容。在信息安全和隐私保护方面,校园万能墙系统也面临着巨大的挑战。为了保障用户信息的安全,系统需要采用先进的加密技术和安全防护措施。同时,系统还需要制定严格的隐私政策,确保用户个人信息的合法使用。为了适应不同设备和操作系统的需求,校园万能墙系统需要具备良好的跨平台兼容性。这意味着系统需要能够在手机、平板、电脑等多种设备上顺畅运行,为用户提供一致的使用体验。
校园万能墙系统在功能、用户体验、安全与隐私保护以及跨平台兼容性等方面都取得了显著的进展。然而,随着技术的不断发展和用户需求的变化,校园万能墙系统仍需要持续创新和改进,以更好地满足学生的需求并提升校园信息化水平。
1.3论文结构与章节安排
本文共分为六章,章节内容安排如下:
第一章为引言,此章节对所设计和实现的系统的背景和意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。
第二章为系统需求分析,章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。
第三章为系统的设计,主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。
第四章就是对系统的实现,根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试
第六章:总结。
2相关技术介绍
2.1springboot框架介绍
Spring Boot是一个基于Java的开源框架,用于快速构建独立的、生产级别的Spring应用程序。它提供了一种简化的方式来配置和构建Spring应用程序,大大减少了开发人员的工作量和配置复杂性。
Spring Boot的设计理念是约定优于配置,它采用了自动化配置的原则,通过推断应用程序的环境来为开发人员提供合理的默认设置。开发人员只需关注业务逻辑的实现,而不需要进行繁琐的配置。同时,Spring Boot还提供了丰富的起步依赖(starter dependencies),这些依赖项可以方便地集成常用的第三方库和框架,使开发人员能够更加便捷地构建功能强大的应用程序。
Spring Boot还具备诸多其他优势。首先,它内嵌了一个轻量级的Servlet容器,如Tomcat或Jetty,因此无需额外配置和安装外部服务器。其次,它提供了健康检查、监控、度量等管理功能,有助于对应用程序的运行状态进行监控和管理。此外,Spring Boot还支持各种数据访问技术、安全认证、缓存、消息队列等功能的集成。总之,Spring Boot是一个强大的后端框架,通过简化配置和自动化集成,极大地提高了开发效率,并能构建出稳定、高效的应用程序。它的优秀设计和丰富功能使得它成为了开发者们的首选框架之一。
2.2JavaScript
JavaScript(简称“JS”)是一种轻量级的、解释型或即时编译型的编程语言。它最初是为浏览器设计的,用于在网页上添加交互性,使网页内容能够根据用户的操作或其他事件做出动态响应。随着其不断的发展和应用领域的拓宽,JavaScript也已经被广泛用于非浏览器环境,如服务器端编程(如Node.js)等。
JavaScript基于原型编程,并且支持多种编程范式,包括面向对象、命令式、声明式(如函数式编程)等。它采用弱类型的变量类型,对使用的数据类型未做出严格的要求,设计简单紧凑。
JavaScript的主要功能包括:交互式操作、表单验证、网页特效、Web游戏、服务器脚本开发等。它通常是通过嵌入在HTML中来实现这些功能的,使得网页能够为用户提供更流畅美观的浏览效果。
此外,JavaScript还有文档对象模型(DOM)和浏览器对象模型(BOM)两大组成部分。DOM描述了处理网页内容的方法和接口,而BOM则描述了与浏览器进行交互的方法和接口。
总的来说,JavaScript是一种功能强大、灵活且易于学习的编程语言,它在Web开发领域具有举足轻重的地位,并且随着技术的不断进步,其应用领域也在不断扩大。
2.3Mysql数据库
MySQL是一个开源的关系型数据库管理系统(RDBMS),由MySQL AB公司开发,后被甲骨文收购。它使用C和C++编写,可运行于多种操作系统如Unix、Linux和Windows。MySQL功能强大、简单易用、管理便捷,且运行速度快、可靠安全。它支持多线程和多CPU,能满足多种应用场景的需求。
MySQL提供丰富的数据类型,如数值、日期时间、字符串和二进制等,以及多种存储引擎如InnoDB、MyISAM和MEMORY,可根据需要灵活选择。它提供大量数据库操作命令,如创建、修改、删除数据库和表格,以及数据的增删改查等。此外,它还支持多种索引,以提高查询性能。
MySQL在全球范围内应用广泛,是许多大型网站和独立软件开发商的首选。其开源、免费、高效、灵活和易用的特点,使其成为当前速度最快的SQL数据库之一。
2.3Vue.js 主要功能
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。
3 系统分析
系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。
3.1 可行性分析
系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及法律层面的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。
3.1.1 技术可行性分析
校园万能墙系统存储所用mysql数据库和开发工具IDEA,Tomcat等应用可以为我们编写工作提供很多方便。系统使用SpringBoot框架进行开发,使系统的可扩展性和维护性更佳,减少Java配置代码,简化编程代码,目前SpringBoot框架也是很多企业选择的框架之一。
3.1.2 经济可行性分析
从经济可行性的角度考虑,工程在开发阶段要求有1台开发PC;生产阶段要求有web服务器,数据库服务器。一台个人PC在经济上并不存在太大问题,后期系统部署投产时,对服务器投资不会太大,在经济上相对可行。
3.1.3 法律可行性分析
系统从法律层面上来没有对第三方有其他放有法律层面的问题,系统数据库采用的Mysql 开源社区数据库、框架采用的是开源的SpringBoot。系统资讯和相关内容也是法律层面的。在源码的管理上采用git开源进行管理,所以在法律可行性上是成立的。
3.2 系统功能分析
3.2.1 功能性分析
校园万能墙系统我划分为了学生用户管理模块、教师用户模块和管理员模块这三大部分。
学生用户管理模块:
(1)注册登录:点击“注册”,输入注册相关信息后点击页面的“注册”按钮,提示注册成功后,回到首页,点击“登录”按钮,根据注册输入的账号密码登录系统,登录时校验输入的账号密码,输入正确登录成功,输入错误会有提示信息;
(2)查看校园万能墙系统的首页信息:校园万能墙系统的首页信息包含了首页、信息交流、学校公告、学校资讯、新闻通知、学生发布、教师发布、二手物品。
(3)学校资讯:用户点击“学校资讯”菜单后,系统将显示所有的学校资讯信息。用户可以根据条件进行学校资讯的筛选,也可以输入关键词进行局部搜索。点击新闻标题后,用户可以进入学校资讯的详细展示界面。在该界面上,用户可以收藏、点赞和评论相应的新闻内容。
(4)信息交流:用户点击“信息交流”菜单后,系统将展示所有的信息交流信息。用户可以按照分类查看帖子信息,或者输入关键词进行局部搜索。点击帖子标题后,用户将进入帖子的详细展示界面。在该界面上,用户可以点赞、收藏、评论,并且还可以点击“发布内容”以输入自己的帖子信息。
(5)学生发布:用户可以浏览“学生发布”菜单,查看所有学生发布信息。用户可以根据特定条件或输入关键词进行筛选和查询。点击学生发布后,用户可以进入详细展示界面,在此界面可以进行收藏、点赞和评论操作。
(6)二手物品:用户可以浏览“二手物品”菜单,查看所有二手物品。用户可以根据特定条件或输入关键词进行筛选和查询。点击二手物品后,用户可以进入详细展示界面,在此界面可以进行收藏、点赞和评论操作。
(7)我的账户:查看并修改个人资料跟密码;
(8)我的收藏:用户点击“我的收藏”,会显示出自己收藏的所有信息,点击某一条收藏可以查看信息详细介绍,同时删除收藏;
(9)学校公告:用户可以点击“学校公告”菜单查看管理员在后台发布的所有学校公告信息,并查看学校公告的详细内容。
管理员管理模块:
(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。
(2)轮播图/学校公告管理:管理员可以对首页展示的轮播图/学校公告进行增加、删除、修改和查询操作。
(3)资源管理:管理员点击“资源管理”菜单后,可以对其下子菜单学校资讯和学校资讯分类进行增加、删除、修改和查询操作。
(4)系统用户:管理员点击“系统用户”菜单后,可以对系统中存在的用户进行管理,包括管理员用户、教师用户和学生用户。管理员可以进行用户信息的添加、查看、编辑、删除等操作。
(5)交流管理:管理员点击“交流管理”菜单后,可以对其下的信息交流和交流分类进行增加、删除、修改和查询操作。
(6)学生发布:管理员在点击“学生发布”菜单后,系统会展示所有的学生发布。管理员可以根据学生用户或者学生姓名进行查询,并具有添加新学生发布的权限。在选择特定学生发布后,管理员可以进行添加、修改、查询和删除操作,同时管理用户提交的评论信息
(7)二手物品:管理员点击“二手物品”菜单后,系统将展示所有的二手物品。管理员可以根据物品名称或者物品类别进行查询,并具有添加、修改、删除相关二手物品的权限,还可以管理评论信息
3.2.2 非功能性分析
校园万能墙系统的非功能性需求比如校园万能墙系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1校园万能墙系统非功能需求表
安全性 | 主要指校园万能墙系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指校园万能墙系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响校园万能墙系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着校园万能墙系统的页面展示内容进行操作,就可以了。 |
可维护性 | 校园万能墙系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3 系统用例分析
校园万能墙系统的完整UML用例图分别是图3-1和图3-2。
图3-1就是管理员角色的用例展示。
图3-1 校园万能墙系统管理员角色用例图
图3-2就是学生用户角色的用例展示。
图3-2 校园万能墙系统学生用户角色用例图
图3-3就是教师用户角色的用例展示。
图3-3 校园万能墙系统教师用户角色用例图
3.4 系统流程分析
业务流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。
(1)数据增加流程
用户成功登入系统后就能够实现增加数据的操作,增加数据的编号是特定的,系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证合法通过就显示增加数据成功了,相反的话,就没有增加成功,图3-3显示的就是在增加数据时的流程。
图2-1 数据增加流程图
(2)数据修改流程
数据修改时的流程和上面介绍的数据增加时的流程差不多,如图3-4所示。
图3-4 数据修改流程图
(3)数据删除流程
如果系统里面存在一些没有用的数据的话,相关的管理人员还可以对这些数据进行删除,图3-5就是数据删除时的流程图。
图3-5 数据删除流程图
4 系统设计
本章主要讨论的内容包括校园万能墙系统的功能模块设计、数据库系统设计。
4.1 系统功能模块设计
4.1.1整体功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本校园万能墙系统中的用例。那么接下来就要开始对本校园万能墙系统的架构、主要功能和数据库开始进行设计。校园万能墙系统根据前面章节的需求分析得出,其总体设计模块图如图4-1所示。
图4-1 校园万能墙系统功能模块图
4.1.2用户模块设计
本系统的用户包括管理员和用户两种用户模块的功能基本是相同的,用户比管理员多了一个注册功能,所以以用户模块的结构图为例进行分析,用户模块结构图为例进行分析,如下图:
图4-2用户模块结构图
4.1.3 评论管理模块设计
校园万能墙系统是一个交流性质的公开平台,用户在平台上提交评论,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的评论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:
图4-3评论管理模块结构图
4.1.4学校资讯管理模块设计
校园万能墙系统为用户提供了一个学校资讯查询的平台,管理员在后台实现对学校资讯的管理,具体的结构图如下:
图4-4学校资讯管理模块结构图
4.2 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
4.2.1 数据库概念结构设计
在数据库概念模型设计的时候,一般都采用E-R实体图进行展示,在实体图中可以展示出数据库表中的所有字段名称,本校园万能墙系统中的主要的数据库E-R模型图如下图所示。
图4-5 学生用户信息E-R关系图
图4-6 教师发布信息E-R关系图
图4-7 学生发布信息E-R关系图
图4-8 评论信息E-R关系图
图4-9公告信息E-R关系图
下面是整个校园万能墙系统中主要的数据库表总E-R实体关系图。
图4-11 校园万能墙系统总E-R关系图
4.3.2 数据库逻辑结构设计
通过上一小节中校园万能墙系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表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: |
表forum (论坛)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表information_classification (信息分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | information_classification_id | int | 10 | 0 | N | Y | 信息分类ID | |
2 | information_categories | 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 | 更新时间 |
表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 | 更新时间: |
表second_hand_items (二手物品)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | second_hand_items_id | int | 10 | 0 | N | Y | 二手物品ID | |
2 | item_name | varchar | 64 | 0 | Y | N | 物品名称 | |
3 | item_category | varchar | 64 | 0 | Y | N | 物品类别 | |
4 | item_specifications | varchar | 64 | 0 | Y | N | 物品规格 | |
5 | quantity_of_items | int | 10 | 0 | Y | N | 0 | 物品数量 |
6 | item_price | varchar | 64 | 0 | Y | N | 物品价格 | |
7 | item_photos | varchar | 255 | 0 | Y | N | 物品照片 | |
8 | item_description | text | 65535 | 0 | Y | N | 物品描述 | |
9 | usage | text | 65535 | 0 | Y | N | 使用情况 | |
10 | item_details | longtext | 2147483647 | 0 | Y | N | 物品详情 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表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_release (学生发布)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_release_id | int | 10 | 0 | N | Y | 学生发布ID | |
2 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | information_name | varchar | 64 | 0 | Y | N | 信息名称 | |
5 | information_categories | varchar | 64 | 0 | Y | N | 信息类别 | |
6 | release_time | datetime | 19 | 0 | Y | N | 发布时间 | |
7 | urgency_level | varchar | 64 | 0 | Y | N | 紧急程度 | |
8 | information_cover | varchar | 255 | 0 | Y | N | 信息封面 | |
9 | information_content | text | 65535 | 0 | Y | N | 信息内容 | |
10 | information_details | longtext | 2147483647 | 0 | Y | N | 信息详情 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表student_users (学生用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | student_no | varchar | 64 | 0 | N | N | 学生学号 | |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表teacher_release (教师发布)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_release_id | int | 10 | 0 | N | Y | 教师发布ID | |
2 | teacher_users | int | 10 | 0 | Y | N | 0 | 教师用户 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | information_name | varchar | 64 | 0 | Y | N | 信息名称 | |
5 | information_categories | varchar | 64 | 0 | Y | N | 信息类别 | |
6 | release_time | datetime | 19 | 0 | Y | N | 发布时间 | |
7 | urgency_level | varchar | 64 | 0 | Y | N | 紧急程度 | |
8 | information_cover | varchar | 255 | 0 | Y | N | 信息封面 | |
9 | information_content | text | 65535 | 0 | Y | N | 信息内容 | |
10 | information_details | longtext | 2147483647 | 0 | Y | N | 信息详情 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表teacher_users (教师用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_users_id | int | 10 | 0 | N | Y | 教师用户ID | |
2 | teacher_no | varchar | 64 | 0 | N | N | 教师工号 | |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
5 系统详细设计
校园万能墙系统的详细设计与实现主要是根据前面的校园万能墙系统的需求分析和校园万能墙系统的总体设计来设计页面并实现业务逻辑。主要从校园万能墙系统界面实现、业务逻辑实现这两部分进行介绍。
5.1用户功能模块
5.1.1 前台首页界面
当进入校园万能墙系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是信息交流,其主界面展示如下图5-1所示。
图5-1 前台首页界面图
5.1.2 用户注册界面
在校园万能墙系统中,用户可以进行注册和登录操作。当用户点击右上角的“注册”按钮时,需填写账号、密码、确认密码、昵称、邮箱、手机号等信息,并选择身份,填写身份信息后点击“注册”按钮。系统将首先验证输入是否有空数据,然后验证密码和确认密码是否匹配,最后验证输入的账户名是否与数据库中已注册账户名重复。只有在所有验证通过后,用户才能成功注册。其用注册界面展示如下图5-2所示。
图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所示。
![](https://i-blog.csdnimg.cn/direct/20bfbea1378f4afb9fd36986ea15894c.png)
图5-3用户登录界面图
登录关键代码如下:
/**
* 登录
* @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.4 教师发布详情界面
用户可以点击“教师发布”菜单查看所有教师发布信息,按条件或输入关键词进行查询。点击教师发布后可进入详细展示界面,在此界面可以进行收藏、点赞和评论操作。教师发布详情界面如下图5-4所示。
![](https://i-blog.csdnimg.cn/direct/ca2a0060a8384039af34aa7a381ae1c1.png)
图5-4教师发布详情界面图
5.1.5信息交流界面
用户点击系统菜单中的“信息交流”,系统将显示所有的信息交流。用户可以按照分类查看帖子信息,或者通过输入关键词进行局部搜索来定位感兴趣的帖子。当用户点击某个帖子时,系统将进入帖子的详细展示界面。在该界面,用户可以进行点赞、收藏和评论等操作。此外,用户也可以点击“发布内容”按钮,输入帖子信息并发表自己的帖子。信息交流展示页面如图5-5所示。
图5-5信息交流界面图
5.1.6二手物品详情界面
用户可以点击“二手物品”菜单查看所有二手物品,按条件或输入关键词进行查询。点击二手物品后,可以进入详细展示界面,在此界面用户可以进行收藏、点赞和评论操作。二手物品详情界面如下图4-6所示。
图5-6二手物品详情界面图
5.2管理员功能模块
5.2.1系统用户管理界面
管理员点击“用户管理”这一菜单会显示管理员、教师用户和学生用户这三个子菜单,管理员可以对这三个角色的信息进行增删改查操作。界面如下图5-7所示。
图5-7系统用户管理界面图
系统用户管理关键代码如下:
@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-8所示。
图5-8学生发布管理界面图
学生发布管理关键代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
5.2.3 教师发布管理界面
管理员点击“教师发布”会显示出所有的教师发布信息,支持输入教师姓名对教师发布信息进行查询,如果想要添加新的教师发布信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条教师发布信息,点击“删除”进行删除,也可以对用户提交的教师发布评论的信息进行管控。界面如下图5-9所示。
图5-9教师发布管理界面图
教师发布管理关键代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
5.2.4 学校公告管理界面
管理员点击“学校公告管理”菜单可以查看到系统中的所有学校公告信息,对已经存在的学校公告,管理员可以修改,也可以添加新的学校公告或者删除学校公告。界面如下图5-11所示。
图5-11学校公告管理界面图
学校公告管理关键代码如下:
@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.2.5学校资讯管理界面
管理员点击“学校资讯”会显示出所有的学校资讯,支持选择标题或者封面图对学校资讯进行查询,如果想要添加新的学校资讯,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条学校资讯,点击“删除”进行删除,也可以对用户提交的学校资讯评论的信息进行管控,界面如下图4-12所示。
图5-12学校资讯管理界面图
6系统测试
6.1 系统测试用例
系统测试包括:用户登录功能测试、学校资讯展示功能测试、学生发布添加、学生发布搜索、密码修改,如表6-1、6-2、6-3、6-4、6-5所示:
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码能否成功登录系统 |
前提 | 未登录状态 |
测试流程 | 1. 进入登录页面 |
2. 输入正确的用户名和密码 | |
预期结果 | 成功登录系统,跳转到登录成功界面 |
实际结果 | 实际结果与预期结果一致 |
结论 | 通过 |
学校资讯查看功能测试:
表6-2 学校资讯查看功能测试表
用例名称 | 学校资讯查看 |
目的 | 测试学校资讯查看功能 |
前提 | 用户已登录 |
测试流程 | 点击学校资讯列表 |
预期结果 | 可以查看所有的学校资讯信息 |
实际结果 | 实际结果与预期结果一致 |
结论 | 通过 |
管理员添加学生发布管理界面测试:
表6-3 管理员添加学生发布管理界面测试表
用例名称 | 管理员添加学生发布管理界面 |
目的 | 测试管理员添加学生发布功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1. 管理员点击学生发布,然后点击添加按钮 |
2. 填写相关信息并提交 | |
预期结果 | 提交后,页面首页会显示新的学生发布 |
实际结果 | 实际结果与预期结果一致 |
结论 | 通过 |
学生发布搜索功能测试:
表6-4学生发布搜索功能测试表
用例名称 | 学生发布搜索功能 |
目的 | 测试学生发布搜索功能 |
前提 | 无 |
测试流程 | 1. 在搜索框中填入搜索关键字 |
2. 点击搜索按钮 | |
预期结果 | 页面显示包含搜索关键字的学生发布 |
实际结果 | 实际结果与预期结果一致 |
结论 | 通过 |
密码修改搜索功能测试:
表6-5 密码修改功能测试表
用例名称 | 密码修改功能测试 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1. 修改密码并完成填写 |
2. 点击提交按钮 | |
预期结果 | 使用新密码可以成功登录系统 |
实际结果 | 实际结果与预期结果一致 |
通过 |
6.2 系统测试结果
通过编写校园万能墙系统的测试用例,已经检测完毕用户登录模块、学校资讯展示模块、学生发布添加模块、学生发布搜索模块、密码修改模块,通过这五大模块为校园万能墙系统的后期推广运营提供了强力的技术支撑。
结论
在校园万能墙系统开发之前,需要进行用户需求分析以确定系统的可行性、功能需求和其他需求。可行性分析包括技术可行性、经济可行性和管理可行性等方面的分析,以确保系统实施的可行性。
本文总结了校园万能墙系统的背景和现状,进一步阐述了系统的具体业务需求,并根据需求对系统的结构和功能模块进行了详细设计,将系统划分为多个不同的功能模块。在功能需求分析阶段,对系统的整体架构和功能模块进行了分析,并选择了适合的系统开发技术来完成各个模块的开发工作。完成开发后,进行系统部署并进行了测试,测试结果证明系统在功能和性能方面都达到了预期要求,具有较高的稳定性和可靠性。
参考文献
[1]孙铁强,刘俊,于洪健等. 基于SpringBoot框架的在线监测和专家系统的研究 [J]. 自动化应用, 2024, 65 (04): 15-16+19.
[2]束方鹏,张逸. 基于SpringBoot框架的数据转换系统及方法[P]. 江苏省: CN117289914B, 2024-02-02.
[3]韩小龙,司珍,吕晓峰等. 基于面向对象编程的Java语言程序设计方法分析 [J]. 集成电路应用, 2024, 41 (01): 228-229.
[4]谭光兴,甘景,戚秋晨. 基于Java语言的远程数据采集系统设计与实现 [J]. 科技与创新, 2024, (01): 19-22.
[5]赵旭东. 计算机软件开发与设计中Java语言的应用研究 [J]. 信息与电脑(理论版), 2023, 35 (24): 31-33.
[6]吴昊,张丹. 基于SpringBoot框架的大学生网上兼职系统设计与实现 [J]. 电脑知识与技术, 2023, 19 (35): 68-72.
[7]刘明,杨胜飞,张冶锋等. 基于SpringBoot框架的长距离输水工程水量监测系统设计 [J]. 云南水力发电, 2023, 39 (11): 359-362.
[8]Liang C . School Vehicle Management System Based on JAVA Language [J]. Academic Journal of Computing & Information Science, 2023, 6 (9):
[9]Yang Y . Design and Implementation of Student Information Management System Based on Springboot [J]. Advances in Computer, Signals and Systems, 2022, 6 (6):
[10]高志平. 基于SpringBoot框架与ITIL方法的运维管理系统的设计与实现[D]. 华东师范大学, 2021.
[11]刘欣,李亮亮,牛聪. 基于Vue和SpringBoot框架的流域监管平台的研究和应用[C]// 《中国防汛抗旱》杂志社,中国水利学会减灾专业委员会,水利部防洪抗旱减灾工程技术研究中心(中国水利水电科学研究院防洪抗旱减灾研究中心). 第十一届防汛抗旱信息化论坛论文集. 黄河水利委员会信息中心;郑州黄河河务局;, 2021: 5.
[12]Liu S . Explore Java Language and Android Mobile Software Development [J]. International Journal of Frontiers in Engineering Technology, 2021, 3.0 (2.0):
[13]Kline K . The Java Language Extension for SQL Server Is Now Open Source [J]. Database Trends and Applications, 2020, 34 (4): 31-31.
致 谢
在本文的最后,我要由衷地感谢我的导师和团结友爱的同学们,在大学生活即将结束之际给予了我无尽的帮助和鼓励。我找不到合适的词语来表达我对他们深深的感激之情。特别感谢我的导师,在选题过程中与我进行了深入的交流,并在毕业设计期间给予了指导。四年的学习生活让我受益良多,老师们丰富的学术知识和认真负责的态度让我受益匪浅。在此,我衷心感谢曾经给予我帮助和指导的所有老师!
我们的论文得益于许多学者的贡献,他们的研究成果为我们提供了宝贵的指导,使我们能够更好地完成这篇文章。感谢我的同学和朋友,在我写作和排版过程中给予热情的帮助,使我能够顺利完成这篇论文。
感谢在大学时期遇见的朋友们,你们给了我无数的温暖和快乐,让我对这个校园充满留恋之情。最后,感谢我的父母、辅导员、班长和室友们,他们对我在大学生活中的关心和理解,让我能够保持乐观并追求自己热爱的事物。虽然我有限的能力,但我努力完善这篇论文,并真诚希望老师和同学们能够给予宝贵的指导和意见!