基于springboot框架高中信息技术学考题库及考试小程序的设计与实现 计算机 专业毕业设计程序源码38215

                                                 摘 要

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序考题库及考试系统的开发全过程。通过分析微信小程序高中信息技术学考题库及考试系统管理的不足,创建了一“个计算机管理微信小程序考题库及考试系统的方案。文章介绍了微信小程序高中信息技术学考题库及考试的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。

本微信小程序考试系统管理员功能有系统用户管理、知识盘点管理、留言交流管理、练习成绩管理、考试成绩管理、班级名称管理、系统管理、网站公告管理、资源管理等。用户可以注册登录,查看考试资料,参加考试等。因而具有-定的实用性。

本微信小程序高中信息技术学考题库及考试系统,后台采用是springboot框架,Java语言,MYSQL 数据库设计开发,微信小程序用微信开发者工具开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得微信小程序高中信息技术学考题库及考试系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高微信小程序高中信息技术学考题库及考试系统管理效率。

关键词:高中信息技术学考题库及考试小程序;Java;MySQL;springboot

                                             ABSTRACT

With the deepening and widespread application of information technology in management, the implementation of management information systems has gradually matured in technology. This article introduces the entire development process of the WeChat mini program exam question library and exam system. By analyzing the shortcomings of the management of the WeChat mini program high school information technology exam question library and exam system, a plan for managing the WeChat mini program exam library and exam system by computer was created. The article introduces the system analysis part of the WeChat mini program high school information technology exam question library and exam, including feasibility analysis, etc. The system design part mainly introduces the system function design and database design.

The administrator functions of this WeChat mini program exam system include system user management, knowledge inventory management, message exchange management, practice score management, exam score management, class name management, system management, website announcement management, resource management, etc. Users can register and log in, view exam materials, participate in exams, and more. Therefore, it has certain practicality.

This WeChat mini program uses the Springboot framework, Java language, and MYSQL database design and development for the high school information technology exam question library and exam system. The WeChat mini program is developed using the WeChat developer tool, fully ensuring the stability of the system. The system has the characteristics of clear interface, simple operation, and complete functions, making the management of the high school information technology exam question bank and exam system in WeChat mini programs systematic and standardized. The use of this system frees management personnel from heavy work and achieves paperless office work, effectively improving the efficiency of WeChat mini program high school information technology exam question bank and exam system management.

Keywords: High school information technology exam question bank and exam mini program; Java; MySQL; Springboot

    录

第一章 引言 1

第一节 研究背景 1

 系统设计思想 1

 研究目的 2

 研究现状 3

 研究方法 4

 开发技术和开发特点 4

  论文结构说明 6

第二章 需求分析 7

第一节 系统可行性分析 7

第二节 系统需求分析 8

第三节 系统流程分析 9

第四节 系统用例分析 11

第三章 系统总体设计 13

第一节 系统架构设计 13

第二节 系统顺序图设计 14

第三节 系统功能模块设计 15

 用户模块设计 15

 数据库设计 15

第四章 关键模块的设计与实现 24

第一节 首页模块 24

第二节 注册模块 26

第三节 登录模块 27

第四节 留言交流模块 28

第五节 用户管理模块 29

 知识盘点管理模块 29

 练习成绩管理模块 30

 考试成绩管理模块 31

 网站公告管理模块 32

 密码修改模块 34

第五章 系统测试 37

第一节 系统测试的目的 37

第二节 系统测试用例 37

第三节 系统测试结果 39

第六章 结论 40

参考文献 41

致谢 43

第一章 引言

第一节 研究背景

随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理微信小程序高中信息技术学考题库及考试系统的相关信息成为必然。开发合适的高中信息技术学考题库及考试小程序,可以方便管理人员对微信小程序高中信息技术学考题库及考试系统的管理,提高信息管理工作效率及查询效率,有利于更好的为人们服务。

第二节 系统设计思想

一个成功的网站应明确建设网站的目的,确定网站的功能,确定网站规模、投入费用,进行必要的市场分析等。只有详细的策划,才能避免在网站建设中出现的很多问题,使网站建设能顺利进行。同时,--个大型的计算机网站系统,必须有一个正确的设计指导思想,通过合理选择数据结构、网络结构、操作系统以及开发环境,构成一个完善的网络体系结构,才能充分发挥计算机信息管理的优势。根据现实生活中网民的实际需求,本系统的设计按照下述原则进行。

1.有效性:实际上这里的有效性包括两个方面的意思:有用性和可用性。有用性是指站点潜在的能满足用户需求的功能,而可用性是指能够通过站点的操作实现特定的目标。可以看出一个站点如果不能恰当运行或设计得非常槽糕就不是一个好站点。可用站点的效益应该非常高,并易于学习,在实现用户目标时令人满意而不出错。

2.高可靠性:一个实用的网站同时必须是可靠的,本设计通过合理而先进的网络设计以及软、硬件的优化选型,可保证网站的可靠性与容错性。

3.高安全性:在设计中,将充分利用网络软、硬件提供的各种安全措施,既可以保证用户共享资源,充分考虑系统及数据资源的容灾、备份、恢复的要求。为系统提供强大的数据库备份工具。可以保证关键数据的安全性。操作权限级,设置不同的角色确保每一步的操作权限,可以由管理员进行设置。

4.先进性:采用目前国际上最先进的开发技术,使用Java开发技术,MYSQL作为
网站后台数据库。采用这些技术降低了以后的系统运营成本,提高了系统的稳定性和易维护性。

5.采用标准技术:本网站的所有设计遵循国际上现行的标准进行,以提高系统的
开放性。

6.外观和技术平衡:系统采用Web风格的界面设计,界面友好、美观,使用方便,易学易用。网站设计的关键问题是外观和技术的平衡。外现不好的网站令人厌烦,站点可以运行很好,但却不能带动用户积极性,相反,如果外观非常有表现力,但技术有限,用户则会感到非常失望。在外观与技术之间需要确定一个清晰而连续的关系,即外观与站点的意图相关,对不同类型的网站处理方法不同。

第三节 研究目的

随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会。各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合。微信小程序高中信息技术学考题库及考试系统的信息化程度体现在将互联网与信息技术应用于经营与管理,以现代化工具代替传统手工作业。无疑,使用网络信息化管理使信息管理更先进、更高效、更科学,信息交流更迅速。

对于之前微信小程序高中信息技术学考题库及考试系统的管理,大部分都是使用传统的人工方式去管理,这样导致了管理效率低下、出错频率高。而且,时间一长的话,积累下来的数据信息不容.易保存,对于查询、更新还有维护会带来不少问题。对于数据交接也存在很大的隐患。如果采用电子化的存储方式就会带来很大的改善,而且给用户的查询带来了很大便利,因此设计一个微信小程序高中信息技术学考题库及考试系统刻不容缓,能够提高信息的管理水平。

第四节 研究现状

随着社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络传播的生活方式逐渐受到广大人民群众的喜爱。越来越多的互联网爱好者开始在互联网上满足他们的基本需求,同时逐渐进入各个用户的生活起居。互联网具有许多优点,例如便利性,速度,高效率和低成本。因此,类似于考题库及考试系统,满足用户工作繁忙的需求,不仅是方便用户随时查看信息的途径,而且还能提高管理效率。

本文首先以基于微信小程序的高中信息技术学考题库及考试过程的基本问题作为研究对象。在开发系统之前,我们对现有状况进行了详细的调查和分析。最后,我们利用计算机技术开发了一套完整合适的基于微信小程序的高中信息技术学考题库及考试小程序。该系统的实现主要优势是:该系统主要采用计算机技术开发,它方便快捷;系统可以通过管理员界面查看用户的所有信息管理。

基于微信小程序的高中信息技术学考题库及考试软件是一款方便、快捷、实用的信息服务查询软件。随着智能网络在全球市场的不断普及以及各种智能平台的使用,系统的开发与人们的日常需求相关,作为中国主流智能的技术开发系统,自然需要这样的软件来满足更多用户的需求和体验。

第五节 研究方法

首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定选用Java平台来设计开发本系统,Mysql作为设计数据库的工具。即利用Java语言实现用户界面,并同数据库连接起来实现完整的通信功能。之后,设计出系统大致的功能模块。主要从方便用户(学生用户和教师用户)和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。

第六节 开发技术和开发特点

一、开发技术

本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。后端部分:采用SpringBoot作为开发框架,同时集成MyBatis、Redis等相关技术。

二、JavaScript 运行模式

作为一种具有重要意义的高级脚本语言,JavaScript已经普遍应用于Web,它能够实现多种动态功能,让用户体验到更加流畅精致的浏览体验。JavaScript脚本通常被嵌入到HTML中,以实现其特有的功能和用户体验。

(1)是一种不需要预先编译的解释性脚本语言,

(2)它可以提供丰富的信息和功能。可以在HTML页面上增加交互性,从而提升用户体验。

(3)它可以自动生成代码。这种脚本语言不需要预先编译,可以用来解释数据。嵌入HTML页面可以大大提高效率,而将其转换为js文件则能够更好地实现结构与行为的分离。

(4)一种跨平台特性使得它能够在多种浏览器环境中运行,从Windows到Linux,从Mac到Android,再到iOS,满足用户的多样化需求。

(5) JavaScript脚本语言与众不同,具备独特的基础数据类型、复杂的表达式、精确的算法以及完善的编程结构。JavaScript可以支持四种常见的数据类别,以及两种独特的数据类别,以便更有效地处理图像和文档。变量可以用来存储信息,而表达式则可以用来处理更复杂的数据。

三、B/S体系工作原理

采用B/S架构,浏览器为满足用户需求而发出请求,服务器响应迅速。

Internet上的用户可以轻松获取各种内容,包括文字、图像、动画、视频、音乐、游戏、社区、应用程序、搜索引擎、社区论坛等;

每台Web服务器可以通过多种方式与数据库服务器连接,从而更好地管理和分析数据库中存储大量的数据。

Web服务器可以将程序从外部下载到本地,当遇到与数据库相关的指令时,它会将其传递给数据库服务器,以便进行解释和执行,最终将结果反馈给用户。通过建立一个庞大的联系网络,使得世界各地的人们能够相互联系、共同分享信息和资源。通过这种架构,各家公司都能够创建属于自己的Internet网络。

B/S 模式下,用户可以从多台服务器发出请求,而这些服务器会根据用户的要求,自动处理和反馈,而其余的任务则交由Web Server来实现。随着该框架结构的普及,加上其内建的浏览器,在应用和使用广泛的当今软件应用领域,已经成为一种主流的架构。

图1-1 B/S 模式

四、 Mysql

Mysql数据库已经成为了一种强大的工具,能够在多个用户之间进行数据交换,同时还能够根据需要进行灵活的配置。在这种情况下,服务器与客户端的区别仅仅是软件层面的概念,与硬件设备并无直接联系。

Mysql是一款受推崇的关系型数据库管理系统,其优异的性能和易于操作的特性,以及跨越多个平台的能力,使Mysql成为了众多软件开发人员的第一选择。这种数据库不同于其他关系型数据库,它通过对用户权限和角色的设定,对数据库进行有效的控制和管理,具有一套独特的管理机制。Mysql显然是一款具有出色的容错能力、可靠性和高效率的数据库管理工具。

优势一:MySQL拥有独特的权限分配机制,能够根据用户的身份和业务逻辑为用户提供更多的选择,从而使MySQL的安全性和完整性大大提高,远超其它关系型数据库。

优势二:MySQL功能强大,可支持多种动画、图形、声音等多种数据类型,说明能满足多种数据处理需求。

优势三:MySQL具有多种功能,可以支持多种平台的开发,支持多种编程语言,让用户可以方便的访问和使用MySQL数据库。

五、 Navicat

Navicat是一套专为简化数据库的管理系统管理成本而设计的可靠的比那个还便宜的数据库管理工具。它的设计满足了中小型企业的数据库管理员,开发者和他们的需求。Navicat是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。NavicatforMySQL是一套理想的管理和开发MySQL或MariaDB的解决方案,支持单一程序,可同时连接MySQL和MariaDB,这种功能齐备的前端软件提供了直观、强大的数据库管理、开发和维护的图形界面,为MySQL或MariaDB新手和专业人员提供了一套综合的工具。Navicat for  Mysql可连接到任何本机或远程Mysql和MariaDB服务器。它可以用于Mysql数据库服务器版本3.21或以上和MariaDB5.0或以上,与Drizzle、OurDelta和Percona Server兼容。

六、Java

Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,Java servlet API,JSP(Java server pages),和XML技术。Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。

Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。

七、前后端分离

(一)前端vue

Vue是一款轻巧、高效、渐进式的JavaScript框架,主要用于用户界面的构建,尤其适用于SPA开发。VueFramework采用组件化开发,可以让代码变得更加模块化,易于维护和使用,而且还支持双向绑定数据,虚拟DOM,模板渲染等高级特性,让开发更高效。Vue框架有以下几个优点:

优势一:VueFramework以简单易懂、入门门槛极低、无需太多前置知识基础、较为平缓的学习曲线为设计理念。

优势二:VueFramework采用了虚拟DOM技术,因此在数据更新时只会对改变的部分进行渲染,性能大幅提升。

优势三:VueFramework尺寸只有20KB左右,非常小巧,可以根据项目需要有选择的加载一些特性和插件。

优势四:基于VUE框架的插件和工具非常多,社群活跃,遇到问题可以快速解答并支持。

优势五:VUE框架的核心思想是组件化,可以把一个大的应用分成多个小的部件,这样既有利于代码的取用,又便于代码的维护。

总之,VUE框架非常适合中小型项目的快速搭建,还可以和其他框架、库进行组合,扩大使用前景。

  • 后端springboot

Spring框架是一个由Java公司发布的开放式框架,旨在通过其可扩展的特性来支持多种不同的编码方式。尽管Spring框架不会影响任何特定的编码方式,但其出色的性价比和可扩展性,已经成为EJB(EnterpriseJavaBeans)框架的重要组成部分,并且一直得到越来越多的人的青睐。Spring框架不仅可以有效地支撑开发,而且还可以充分利用其独有的控制反转功能,以及支撑多种持久性技术,从而将托管对象的生命周期变得更加容易,并且可以支撑声明性的事务处理,还可以支撑多种Web框架,从而有效地推动开发。Spring框架拥有强大的IOC功能,可以轻松地实现Java对象的调度与操作,从而更好地支持项目的运行。此外,Spring还支持将java对象的生命周期进行可视化,以实现更加灵活的调度与操作。Spring框架提供了一种新的、高效的容器设计工具,它能够根据XML文件和AOP注解的指引,从多个源中提取和组织相应的参数,从而实现多种功能。此外,它还提供了一种面向服务的框架,它能够根据用户的需求,自动调整参数,从而提高系统的效率和性能。Spring框架的AOP框架具有强大的功能,可以满足各种复杂的需求。尽管AspectJ框架的性能不及其他框架,但是Spring AOP的出色表现使其在各种应用场景中都具有出色的表现,例如:在事务处理、远程控制、网络安全、数据共享、文件共享、网络安全协议、网络安全协议。Java的事务处理框架提供了一种灵活的方式,可以将不同的内容、不同的时间段、不同的类型的数据进行处理,并且可以将这些处理结果存储到一起。此外,Spring还提供了一系列的事务模型。Spring的事务框架提供了一种灵活的方式,它允许用户根据需要调整事务的类型,例如XML、Java等,同时还支持快速的消息传输、缓冲等特性,从而有效地帮助开发者处理日益增长的数据需求。这款应用程序拥有强大的功能,能够兼容各种常见的数据处理框架,包括Java、iBATS/MyBATIs、Hibernate、Java)数据对象(JDO)、Apache OJB、Apache Cayne等,并能够将其与Spring的事务处理功能相结合,从而实现更加高效的数据处理。SpringMVC最初的目的是要替代StrutsWeb框架,因此,开发者决定将其与传统的web页面框架进行改造,使其能更好地支持用户的访问。这样,SpringMVC就能更好地支持用户的需求,从而提高web页面的性能。

七节  论文结构说明

本文一共分为六章,每章具体内容介绍如下:

第一章,引言,首先介绍了高中信息技术学考题库及考试小程序的背景,通过传统考试的对比,指出开发高中信息技术学考题库及考试小程序的研究现状,接着对该论文的结构进行说明。

第二章,需求分析,对系统进行可行性分析、系统功能需求分析以及非功能性需求分析等。

第三章,系统总体设计,通过对当前用户的需求分析来阐述该系统的整体架构以及数据库分析设计,确定各功能模块以及最终系统需要实现的功能。

第四章,关键模块的设计与实现,根据设计目标对各个主要功能模块分别进行详细设计,主要功能代码及其实现过程和功能界面设计。

第五章,系统测试,根据用户实际需求,对该系统主要功能模块进行测试。

第六章,结论

第二章 需求分析

第一节 系统可行性分析

一、技术可行性分析

高中信息技术学考题库及考试小程序在数据的存储上使用的MYSQL数据库,在高中信息技术学考题库及考试小程序开发中使用了了Java、IDEA、Tomcat这些开发工具的使用,能够给我们的编写工作带来许多的便利。系统采用B/S模式开发,使系统的可扩展性和维护性更好,减少系统配置代码以及编程代码,目前最流行的是B/S模式(B/SModel)

二、经济可行性分析

在开发高中信息技术学考题库及考试小程序中所使用的开发软件像IDEA开发工具、tomcat服务器、springboot开发框架、MySQL5.7数据库、Photoshop图片处理软件等,这些环境从网上就能免费下载,而且网上都有安装的教程,根据教程一步一步的操作,就可以安装成功,不需要花任何费用,并且高中信息技术学考题库及考试小程序是自己设计并编码实现的,数据库是使用流行mysql进行数据的存储,开源的mysql等技术的使用,减少系统开发费用。

三、操作可行性分析

操作方面主要考虑的是用户在使用以及管理人员在管理的时候,是否简单可行,没有任何计算机基础的用户能否使用,开发的高中信息技术学考题库及考试小程序在设计的时候秉承简单易学的理念,在用户进入系统后都会有固定的导航按钮,只要认字就可以操作完成,而且管理员在管理方面也只需简单的增删改查即可完成。

在这个项目的设计中,我借鉴了大量的成功案例,深入分析了它们的操作界面和功能,并结合了多个案例,以人为本,简化了操作,使本项目即使计算机基础知识的人也能轻而易举地完成。由于这些原因,这个操作是可行的。

四、法律可行性分析

系统从法律层面上来没有对第三方有其他放有法律层面的问题,系统数据库采用的Mysql开源社区数据库、框架采用的是开源的springboot。系统资讯和相关内容也是法律层面的。在源码的管理上采用git开源进行管理,所以在法律可行性上是成立的。

第二节 系统需求分析

一、功能需求分析

高中信息技术学考题库及考试小程序分为三大部分:管理员模块(AdminModule)教师用户模块(teacherusersModule)和学生用户模块(studentUserModule)

(一)管理员:

(1)登录:在数据库中直接设置管理员的用户名和密码,管理员可以在后台输入用户名+密码进行登陆操作。

(2)个人中心:个人资料的修改和个人账号登陆的密码修改,在经过登录之后可由自己管理。

(3)系统用户管理:对于存在于系统中的用户,管理员可以通过点击“系统用户管理”菜单的方式进行管理。

(4)知识盘点管理:管理员可以对知识盘点进行增删改查。

(5)留言交流管理:管理员对留言交流信息进行评论回复。

(6)练习成绩管理:管理员可以对练习成绩进行增删改查。

(7)考试成绩管理:管理员可以对考试成绩进行增删改查。

(8)班级名称管理:管理员可以对班级名称进行增删改查。

(9)资源管理:管理员可以对考试题库进行维护管理。

(10)网站公告管理:管理员对公告信息进行增删改查。

(11)系统管理:管理员对轮播图进行增删改查。

(二)用户:

(1)首页信息:当用户登录或者注册成功之后,进入后端信息系统的前台,就可以看到导航栏,轮播图等信息,用户可以根据自己个人的需求进行查看;

(2)请使用“登录”或“登录”两个按钮来完成注册。“登录”按钮需要填写您的用户名+密码,并且系统将检查您是否已经完成登录。“登录”按钮则需要您输入您的用户信息,并获取您的账号和密码。“注册”按钮则需要您输入您的个人资料,才能完成登录;

(3)考试题库:用户点击“考试题库”这个菜单按钮,可以在线进行考试题库的测试题测试。

(4)知识盘点信息:用户在查询想要了解的知识盘点时,可以进入查看知识盘点的详细介绍,这样就可以更加清楚全面的了解知识盘点信息。

(5)网站公告:用户可以在公告页面进行公告浏览查看等。

(6)留言交流:点击“留言交流”后跳转到留言交流提交界面,选择留言交流类型,输入学生账号、学生姓名、学生学号、班级名称、留言内容、提交时间,然后点击提交留言交流就完成了。

(7)通过“我的”按钮,用户可以轻松访问和控制个人中心的所有内容,包括账号、密码和其他重要信息,从而实现更加便捷的管理功能;

(三)教师用户:

(1)登录:在数据库中直接设置教师用户的用户名和密码,由管理员在后台添加,输入用户名+密码可以进行登陆操作。

(2)个人中心:个人资料的修改和个人账号登陆的密码修改,在经过登录之后可由自己管理。

(3)知识盘点管理:教师可以对知识盘点进行增删改查。

(4)留言交流管理:教师可以对留言交流信息进行维护。

(5)练习成绩管理:教师可以对练习成绩进行增删改查。

(6)考试成绩管理:教师可以对考试成绩进行增删改查。

(7)资源管理:管理员可以对考试题库进行维护管理。

二、非功能性需求分析

高中信息技术学考题库及考试小程序的安全性、可靠性、性能和可扩展性是其重要的考量因素,它们不仅满足了用户对于功能性的要求,还为用户提供了更多的便利。根据表格2-1,我们可以清楚地看到这一点:

2-1 高中信息技术学考题库及考试小程序非功能需求表

安全性

主要指高中信息技术学考题库及考试小程序数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指高中信息技术学考题库及考试小程序能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响高中信息技术学考题库及考试小程序占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着高中信息技术学考题库及考试小程序的页面展示内容进行操作,就可以了。

可维护性

高中信息技术学考题库及考试小程序开发的可维护性是非常重要的,经过测试,可维护性没有问题

第三节 系统流程分析

开发人员可以通过对上述业务流程的运用,以符合和线条的方式,对系统的运行机制进行更好的理解,并对用户在使用系统时的体验进行演示。另外,业务流程也能帮助开发者找到系统中的bug并且加以完善一、新增数据。

一、增添数据

当用户成功登录系统,即可获得指定的编号,这些编号由系统生成,而用户无权更改,只需要提供指定的编号,而其余的信息则需要由用户自行完成,完成之后,系统会对所提交的信息进行审核,如果审核结果符合要求,则表明增加数据已获得成功;否则,则说明未获得成功,如图2-1所示。

图2-1  数据增加流程图

二、修改数据

在数据修改过程中,与之前提到的数据增加过程相似,如图2-2所示。

图2-2  数据修改流程图

三、删除数据

当系统中出现了一些无效信息时,管理人员应采取措施将其删除处理,而图2-3则提供了删除这些无效信息过程的流程图。

图2-3  数据删除流程图

第四节 系统用例分析

学生用户角色在高中信息技术学考题库及考试小程序中的使用示意图如图2-4所示:

图2-4学生用户角色用例图

教师用户角色在高中信息技术学考题库及考试小程序中的使用示意图如图2-5所示:

图2-5教师用户角色用例图

高中信息技术学考题库及考试小程序中管理员角色用例图如图2-6所示:

图2-6管理员角色用例图

第三章 系统总体设计

本章将深入探究高中信息技术学考题库及考试小程序的各种功能模块,以及如何构建一个高效的数据库。

第一节 系统架构设计

基于springboot的高中信息技术学考题库及考试小程序由用户界面(UI)、业务流程层(BLL)、数据层(DL)三个层次组成。

图3-1高中信息技术学考题库及考试小程序架构设计图

表现层(UI):UI层是高中信息技术学考题库及考试小程序的核心部分,负责实现用户界面的交互,在使用该系统的过程中,为用户带来便捷的操作体验,让用户感受到更舒适的氛围。UI界面设计应该灵活应对各种不同的高中信息技术学考题库及考试小程序和尺寸,以确保良好的兼容性和可用性。UI交互功能必须具有合理性,以便用户能够获得与之相匹配的交互结果,因此,表现层必须与业务逻辑层紧密结合,以实现良好的交互体验。

业务逻辑层(BLL):BLL层(BLL)主要完成本基于微信小程序的高中信息技术学考题库及考试的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。

数据层(DL):通过将mysql数据库作为数据层,由于本基于微信小程序的高中信息技术学考题库及考试的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本基于微信小程序的高中信息技术学考题库及考试的数据存储和管理功能。

第二节 系统顺序图设计

一、登录模块

该模块旨在为管理人员和用户提供权限登录功能,其登录顺序如图3-2所示。

图3-2登录顺序图

二、添加信息模块

在登录之前,无论是管理员还是用户都能够轻松地完成添加信息的任务,具体的步骤请参考图3-3。

图3-3 添加信息顺序图

第三节 系统功能模块设计

高中信息技术学考题库及考试小程序整体的功能模块包括管理员这个模块,实现了对电影数据相关信息的查询管理,系统功能模块如图所示。

图3-4高中信息技术学考题库及考试小程序功能模块图

第四节 用户模块设计

一、用户模块设计

本系统的用户包括管理员,教师用户和学生用户三种用户模块的功能基本是相同的,学生用户比管理员多了一个注册功能,所以以用户模块的结构图为例进行分析,用户模块结构图为例进行分析,如下图:

图3-5用户模块结构图

二、评论管理模块设计

高中信息技术学考题库及考试小程序是一个交流性质的公开平台,用户在平台上提交评论,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的评论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:

图3-6评论管理模块结构图

三、知识盘点管理模块设计

高中信息技术学考题库及考试小程序是中需要存储不少知识盘点信息,其模块功能结构,具体的结构图如下:

图3-7知识盘点信息模块结构图

四、练习成绩管理模块设计

高中信息技术学考题库及考试小程序是中需要存储不少练习成绩信息,其模块功能结构,具体的结构图如下:

图3-8练习成绩模块结构图

五节 数据库设计

在数据库设计的三个主要步骤中,第一个是需求的分析,第二个是设计概念模型,最后是建立数据库表(datable-list)。在这三个步骤之间,需求分析是必不可少的,而概念模型的设计则涉及到概念模型与逻辑结构的设计。

一、数据库概念结构设计

下面是整个高中信息技术学考题库及考试小程序中主要的数据库表总E-R实体关系图。

           图3-9 高中信息技术学考题库及考试小程序总E-R关系图

通过高中信息技术学考题库及考试小程序,我们发现它需要大量的E-R图表,其中包括一些重要的数据库模型图,它们能够帮助我们更好地理解和分析数据。

图3-10 考试成绩E-R图

图3-11 题库E-R图

图3-12 学生用户E-R图

图3-13 留言交流E-R图

二、数据库逻辑结构设计

经过高中信息技术学考题库及考试小程序的数据分析,我们发现,为了更好地展示E-R关系图,我们需要创建大量的数据表。我将重点介绍几种常见的数据库表结构设计方法。

表名:class_name,班级名称表

表3-1 class_name

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

class_name_id

int

10

0

N

Y

班级名称ID

2

class_id

varchar

64

0

Y

N

班级编号

3

class_name

varchar

64

0

Y

N

班级名称

4

recommend

int

10

0

N

N

0

智能推荐

5

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表名:collect,收藏表

表3-2 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,评论表

表3-3 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:

表名:exam,考试表

表3-4 exam

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

exam_id

mediumint

8

0

N

Y

考试id

2

name

varchar

32

0

N

N

考试名称:[2,32]

3

duration

int

10

0

Y

N

答题时长

4

score

double

9

2

Y

N

总分

5

status

varchar

10

0

Y

N

状态:启用、禁用

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表名:exam_question,试题表

表3-5 exam_question

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

exam_question_id

mediumint

8

0

N

Y

2

type

varchar

20

0

Y

N

类型

3

title

varchar

255

0

Y

N

题目

4

question_item

varchar

500

0

Y

N

选项

5

answer

varchar

500

0

Y

N

参考答案

6

score

double

9

2

Y

N

总分

7

question_order

int

10

0

Y

N

排序

8

exam_id

mediumint

7

0

Y

N

所属试卷

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表名:exam_question,试题库表

表3-6 exam_question

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

exam_question_id

mediumint

8

0

N

Y

2

subject_name

varchar

255

0

Y

N

科目名称

3

type

varchar

20

0

Y

N

类型

4

title

varchar

255

0

Y

N

题目

5

question_item

varchar

500

0

Y

N

选项

6

answer

varchar

500

0

Y

N

参考答案

7

score

double

9

2

Y

N

总分

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表名:exam_scores,考试成绩表

表3-7exam_scores

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

exam_scores_id

int

10

0

N

Y

考试成绩ID

2

student_account

int

10

0

Y

N

0

学生账号

3

student_name

varchar

64

0

Y

N

学生姓名

4

student_id

varchar

64

0

Y

N

学生学号

5

class_name

varchar

64

0

Y

N

班级名称

6

exam_name

varchar

64

0

Y

N

考试名称

7

exam_scores

int

10

0

Y

N

0

考试成绩

8

grade_ranking

int

10

0

Y

N

0

成绩排行

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表名:knowledge_audit,知识盘点表

表3-8knowledge_audit

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

knowledge_audit_id

int

10

0

N

Y

知识盘点ID

2

course_name

varchar

64

0

Y

N

课程名称

3

course_category

varchar

64

0

Y

N

课程类别

4

course_cover

varchar

255

0

Y

N

课程封面

5

teaching_courseware

varchar

255

0

Y

N

教学课件

6

teaching_videos

varchar

255

0

Y

N

教学视频

7

lecture_teacher

varchar

64

0

Y

N

讲课老师

8

release_time

datetime

19

0

Y

N

发布时间

9

hits

int

10

0

N

N

0

点击数

10

praise_len

int

10

0

N

N

0

点赞数

11

recommend

int

10

0

N

N

0

智能推荐

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表名:message_exchange,留言交流表

表3-9message_exchange

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

message_exchange_id

int

10

0

N

Y

留言交流ID

2

student_account

int

10

0

Y

N

0

学生账号

3

student_name

varchar

64

0

Y

N

学生姓名

4

student_id

varchar

64

0

Y

N

学生学号

5

class_name

varchar

64

0

Y

N

班级名称

6

message_content

text

65535

0

Y

N

留言内容

7

submission_time

datetime

19

0

Y

N

提交时间

8

examine_state

varchar

16

0

N

N

未审核

审核状态

9

examine_reply

varchar

16

0

Y

N

审核回复

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表名:notice,公告信息表

表3-10notice

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表名:practice_results,练习成绩表

表3-11 practice_results

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

practice_results_id

int

10

0

N

Y

练习成绩ID

2

student_account

int

10

0

Y

N

0

学生账号

3

student_name

varchar

64

0

Y

N

学生姓名

4

student_id

varchar

64

0

Y

N

学生学号

5

class_name

varchar

64

0

Y

N

班级名称

6

exercise_name

varchar

64

0

Y

N

练习名称

7

practice_results

int

10

0

Y

N

0

练习成绩

8

grade_ranking

int

10

0

Y

N

0

成绩排行

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表名:student_users,学生用户表

表3-12student_users

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_users_id

int

10

0

N

Y

学生用户ID

2

student_name

varchar

64

0

Y

N

学生姓名

3

student_id

varchar

64

0

Y

N

学生学号

4

class_name

varchar

64

0

Y

N

班级名称

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

recommend

int

10

0

N

N

0

智能推荐

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表名:exam_question,试题表

表3-13exam_question

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

exam_question_id

mediumint

8

0

N

Y

2

subject_name

varchar

255

0

Y

N

科目名称

3

type

varchar

20

0

Y

N

类型

4

title

varchar

255

0

Y

N

题目

5

question_item

varchar

500

0

Y

N

选项

6

answer

varchar

500

0

Y

N

参考答案

7

score

double

9

2

Y

N

总分

8

question_order

int

10

0

Y

N

排序

9

exam_id

mediumint

7

0

Y

N

所属试卷

10

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表名:user_answer,用户答题表

表3-14user_answer

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_answer_id

mediumint

8

0

N

Y

2

user_id

mediumint

7

0

N

N

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

3

exam_id

mediumint

7

0

N

N

0

考试id

4

score

double

9

2

Y

N

0.00

分数

5

answers

text

65535

0

Y

N

答案

6

score_detail

text

65535

0

Y

N

评分详情

7

objective_score

double

9

2

Y

N

0.00

客观题得分

8

subjective_score

double

9

2

Y

N

0.00

主观题得分

9

score_state

tinyint

4

0

Y

N

0

评分状态

10

nickname

varchar

255

0

Y

N

提交人

11

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表名:teacher_users,教师用户表

表3-15teacher_users

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

teacher_users_id

int

10

0

N

Y

教师用户ID

2

teachers_name

varchar

64

0

Y

N

教师姓名

3

teacher_id

varchar

64

0

N

N

教师工号

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

recommend

int

10

0

N

N

0

智能推荐

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

更新时间

表名:user,用户表

表3-16user

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

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

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

第四章 关键模块的设计与实现

基于前期对高中信息技术学考题库及考试小程序的需求分析以及整体架构,我们精心设计了一个页面,以便更好地展示出用户的行为,并且能够更加有效地实现业务逻辑。本文将重点介绍高中信息技术学考题库及考试小程序界面和业务逻辑。

第一节 首页模块

该项目的首页页面包含以下几个部分:

导航栏:用于导航网站的各个板块,其中有首页,考试题库,知识盘点,留言交流,后台管理,收藏、基本信息、练习成绩、考试成绩,以及退出登录这几个板块

知识盘点推荐:在首页上展示一些推荐的知识盘点,这些推荐知识盘点系统会随机显示八个,点开可以查看知识盘点信息,包括课程名称,课程类别,课程封面,教学课件,教学视频,讲课老师,发布时间,点击次数统计以及点赞,收藏。

搜索框:在知识盘点信息板块,我们可以通过课程名称查询,讲课老师查询,教学课件查询,查询数据库中所存的知识盘点数据。在知识盘点咨询板块可以通过对标题的查询,查看相关知识盘点的咨询,这些咨询是由教学视频提供,随机选择了八个进行插入排版。

首页主要分别展示各个模块的最新动态,浏览者可以很清楚地看到不同模块的最新更新内容。并且系统首页每个部分可以跳转到相对应的模块,方便浏览者选择感兴趣的地方。

首页载入流程图如下所示。

图4-1 首页载入流程

首页如下图所示。

图4-2 首页界面图

首页逻辑代码如下。

@Configuration

@Slf4j

public class WebAppConfig implements WebMvcConfigurer {

    @Override

    public void addInterceptors(InterceptorRegistry registry) {

        //登录拦截的管理器

        InterceptorRegistration registration = registry.addInterceptor(loginInterceptor());

        //拦截的地址

        registration.addPathPatterns("/**");

        //方行的地址

//registration.excludePathPatterns("/**");

        //根据需要拦截,一般设置所有地址拦截,放行公共连接

    }

    @Bean

    public LoginInterceptor loginInterceptor(){

        return new LoginInterceptor();

    }

}

第二节 注册模块

高中信息技术学考题库及考试小程序的注册登录操作,用户都是从同一个注册登录页面进行注册登录,若是还未有系统账号,则进行注册操作;若是已注册账号,则用户在操作时,输入账号、密码,再选择相应的角色,如“用户”等。

用户注册流程图如下所示。

图4-3 用户注册流程

用户注册界面如下图所示。

图4-4 用户注册界面

注册逻辑代码如下。

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

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

        // 查询用户

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

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

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

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

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

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

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

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

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

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

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

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

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

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

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

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

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

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

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

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

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

第三节 登录模块

在高中信息技术学考题库及考试小程序模块输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面。

用户登录流程图如下所示。

        

图4-5 登录流程图

登录界面如下图所示。

              

图4-6 登录界面图

登录逻辑代码如下。

/**

     * 登录

     * @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.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

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

第四节 留言交流管理模块

用户执行留言交流,并可以操作相关内容,例如查看,编辑。留言交流的添加操作是建立在留言交流信息的列表基础上,单击查留言交流信息下的交流链接;然后单击“留言交流”进行添加,添加成功后的信息会载入到留言交流查询列表中。

留言交流流程图如下所示。

图4-7 留言交流流程图

图4-8 留言交流界面图

留言交流管理逻辑代码。

@RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        Query select = service.select(service.readQuery(request), service.readConfig(request));

        List resultList = select.getResultList();

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

 public Query 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 runEntitySql(sql.toString());

    }

第五节 用户管理模块

用户只有注册后才能获得登录使用权限,此时选择注册用户选项,系统会自动转到用户注册。在注册该部分信息时,系统会自动调用ADD函数,然后在给出的文本框中填写完该用户的基本信息后,选择确认即可完成注册。注册后系统会自动转到检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。

用户管理流程图如下所示。

图4-7 用户管理流程图

用户管理界面如下图所示。

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

}

    public Map<String,String> readConfig(HttpServletRequest request){

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

        map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));

        map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));

        map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));

        map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));

        map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));

        map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));

        map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));

        map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));

        return map;

}

    public Map<String,String> readQuery(HttpServletRequest request){

        String queryString = request.getQueryString();

        if (queryString != null && !"".equals(queryString)) {

            String[] querys = queryString.split("&");

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

            for (String query : querys) {

                String[] q = query.split("=");

                map.put(q[0], q[1]);

            }

            map.remove(FindConfig.PAGE);

            map.remove(FindConfig.SIZE);

            map.remove(FindConfig.LIKE);

            map.remove(FindConfig.ORDER_BY);

            map.remove(FindConfig.FIELD);

            map.remove(FindConfig.GROUP_BY);

            map.remove(FindConfig.MAX_);

            map.remove(FindConfig.MIN_);

            return map;

        }else {

            return new HashMap<>();

        }

}

    @Transactional

    public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){

        StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");

            }else {

                sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");

            }

第六节 知识盘点管理模块

管理员执行知识盘点管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加知识盘点”,可以通过知识盘点添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到知识盘点查询列表中,管理员可进行编辑以及修改。

知识盘点添加流程图如下所示。

图4-9 知识盘点添加流程图

知识盘点添加如下图所示。

图4-10知识盘点添加界面图

知识盘点查询界面如下所示。

图4-11知识盘点查询界面图

知识盘点管理逻辑代码如下。

@RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

    @Transactional

    public void delete(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");

        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));

        log.info("[{}] - 删除操作:{}",table,sql);

        Query query1 = runCountSql(sql.toString());

        query1.executeUpdate();

    }

第七节 练习成绩管理模块

管理员执行练习成绩管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加练习成绩”,可以通过练习成绩添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到练习成绩查询列表中,管理员可进行编辑以及修改。

练习成绩添加流程图如下所示。

图4-12 练习成绩添加流程图

练习成绩添加如下图所示。

图4-13练习成绩添加界面图

练习成绩查询界面如下所示。

图4-14练习成绩查询界面图

练习成绩管理逻辑代码如下。

@RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

    @Transactional

    public void delete(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");

        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));

        log.info("[{}] - 删除操作:{}",table,sql);

        Query query1 = runCountSql(sql.toString());

        query1.executeUpdate();

    }

第八节 考试成绩管理模块

用户选择考试成绩添加记录,管理员审核考试成绩信息,管理所有用户的考试成绩记录。

考试成绩管理流程图如下所示。

图4-15 考试成绩管理流程图

考试成绩维护界面如下所示。

图4-16 考试成绩维护界面

考试成绩管理逻辑代码如下:

@RequestMapping(value = {"/avg_group", "/avg"})

public Map<String, Object> avg(HttpServletRequest request) {

        Query count = service.avg(service.readQuery(request), service.readConfig(request));

        return success(count.getResultList());

}

第九节网站公告管理模块

在主页左侧菜单栏中点击“网站公告管理”按钮,再从二级目录中点击“新增公告”按钮,进入到新增公告界面。在此处公告可以添加公告的标题、正文。

在主页左侧菜单栏中点击“网站公告管理”按钮,再从二级目录中点击“查询公告”按钮,进入到查询公告界面。在此处公告可以查询当前所有公告记录。

公告展示界面如下图所示。

图4-17 公告展示界面

公告管理界面如下图所示。

图4-18 公告管理界面

网站公告管理逻辑代码如下:

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

}

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

        StringBuffer sql = new StringBuffer("INSERT INTO ");

        sql.append("`").append(table).append("`").append(" (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

        }

        sql.deleteCharAt(sql.length()-1);

        sql.append(") VALUES (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("'").append(entry.getValue()).append("'").append(",");

            }else {

                sql.append(entry.getValue()).append(",");

            }

        }

        sql.deleteCharAt(sql.length() - 1);

        sql.append(")");

        log.info("[{}] - 插入操作:{}",table,sql);

        Query query = runCountSql(sql.toString());

        query.executeUpdate();

    }

第十节 密码修改模块

 用户使用该高中信息技术学考题库及考试小程序注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败,下面的图片展示的就是该板块对应的工作面。

密码修改流程图如下所示。

              

图4-18 密码修改流程图

个人信息界面如图所示。

图4-19个人信息界面图

密码修改界面如图所示。

图4-20密码修改界面图

密码修改逻辑代码如下。

/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String,
String> data, HttpServletRequest request){
// 根据 Token 获取 UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据 UserId 和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
Query ret = service.count(query, service.readConfig(request));

List list = ret.getResultList();
Object s = list.get(0);
int count = Integer.parseInt(list.get(0).toString());
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}

第五章 系统测试

第一节 系统测试的目的

在系统开发的最后阶段,系统测试显得尤为重要,它不仅可以帮助我们更好地理解软件的设计,还能提高开发效率。由于系统开发过程中可能存在诸多缺陷,即使是最优秀的系统开发工程师也无法避免这些缺陷。因此,通过进行系统测试,我们可以有效地纠正这些bug,从而为后续的系统维护和升级提供有力的支持。经过严格的系统测试,开发者们能够更加坚定地认识到系统的性能,从而更有动力去推动后续的系统更新。

第二节 系统测试用例

系统测试包括:用户登录功能测试、知识盘点展示功能测试、知识盘点添加、知识盘点搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示:

用户登录功能测试:

表5-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

知识盘点查看功能测试:

表5-2 知识盘点查看功能测试表

用例名称

知识盘点查看

目的

测试知识盘点查看功能

前提

用户登录

测试流程

点击知识盘点列表

预期结果

可以查看到所有知识盘点

实际结果

实际结果与预期结果一致

管理员添加知识盘点界面测试:

表5-3 管理员添加知识盘点界面测试表

用例名称

知识盘点发布测试用例

目的

测试知识盘点发布功能

前提

用户正常登录情况下

测试流程

1)点击知识盘点管理就,然后点击添加后并填写信息。

2)点击进行提交。

预期结果

提交以后,页面首页会显示新的知识盘点 

实际结果

实际结果与预期结果一致

知识盘点搜索功能测试:

表5-4知识盘点搜索功能测试表

用例名称

知识盘点搜索测试

目的

测试知识盘点搜索功能

前提

测试流程

1)在搜索框填入搜索关键字。

2)点击搜索按钮。

预期结果

页面显示包含有搜索关键字的知识盘点

实际结果

实际结果与预期结果一致

密码修改功能测试:

表5-5 密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

第三节 系统测试结果

经过对高中信息技术学考题库及考试小程序的测试,我们已经完成了5大模块的检测,包括用户登录、知识盘点查看、知识盘点添加、知识盘点搜索以及密码修改功能,这些功能为后续的推广运营提供了强有力的技术支持。

                                              第六章 结论

经过长时间的努力,我终于完成了这项系统设计。在此期间,我深入研究了系统开发中所涉及的相关知识,并且发现了自身的不足,从而更好地掌握了必要的应用技能,进一步的学习使我的知识储备更加丰富,最终完成了这项艰巨的任务。当面临挑战时,我会立即向老师寻求帮助,并利用专业的网络资源和论坛平台,以期望能够一步步地克服困境。系统设计过程不容易,你需要不断充实自己,有勇气克服困难。尽管系统开发的一些功能尚未完善,但我仍然会尽最大努力去改进,以便让用户体验更加出色。这次成功的尝试,让我感到无比欣慰,因为它是我第一次尝试,而且我会继续努力,打造出更加出色的系统。

当初,因为对一些编程语言的系统实施方法并不十分精通,使得开发变得极其艰巨。然而,最终,我成功利用一款特定的字典软件,克服了这一重重挑战。从而,我也深刻认识到,只要努力,才能够改善自身的英语水平,从而为未来的职业及生涯打下坚实的基础。经历了毕业设计的挑战,让我收获颇丰。最初,由于缺乏相关的开发知识,只能逐步尝试,但随着时间的推移,越来越了解了相关的文献与资料,并且能够成功地将其应用到实践当中。此外,该系统也为网络学习提供了强大的支持,让我能够更好地完成论文的撰写,并且拥抱挑战,以及探索生活中的各种未知。通过毕业设计,我深刻地体验到了如何把所掌握的理论转化为可行的行动。这使得我明白,要想取得成功,就需要不断努力,坚定地走下去。

                                                参考文献

 [1]李洋,刘婷.MySQL数据库安全加固技术的研究[J].科技与创新,2023(13):120-122.DOI:10.15913/j.cnki.kjycx.2023.13.035.

[2]毛天宇,王星宇,常瑞等.面向Java语言生态的软件供应链安全分析技术[J].软件学报,2023,34(06):2628-2640.DOI:10.13328/j.cnki.jos.006852.

[3]孟思明.基于SpringBoot框架选购系统的设计与实现[J].中国设备工程,2023(11):94-95.

[4]李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.DOI:10.19850/j.cnki.2096-4706.2023.11.019.

[5]岳峰,段政伟.基于SpringBoot框架的营区手机管控平台设计与实现[J].无线互联科技,2023,20(11):49-52.

[6]韩晓龙,张海伦. SpringBoot框架多配置文件的合并方法及系统[P]. 山东省:CN116089370A,2023-05-09.

[7]朱金波.Java编程语言在计算机软件开发中的应用优势分析[J].信息记录材料,2023,24(05):68-70.DOI:10.16009/j.cnki.cn13-1295/tq.2023.05.062.

[8]邓阳名,顾潇,梁爱媚.基于Java语言的数据库访问技术应用研究[J].中国新通信,2023,25(08):83-85.

[9]付恩狄,姚明亮,梁宇柔等.基于JAVA技术的设备绝缘状态自动化监控方法[J].电气自动化,2023,45(02):36-38+41.

[10]赵将.Java语言在计算机软件开发中的应用[J].数字技术与应用,2023,41(03):160-162.DOI:10.19695/j.cnki.cn12-1369.2023.03.46.

[11]刘丹青,李超,王青海.基于Java技术的藏汉双语学前教育云平台设计与实现[J].信息技术,2023,47(02):17-23.DOI:10.13274/j.cnki.hdzj.2023.02.004.

[12]李娟,边玲,李海瑛等.基于微信小程序的手机在线考试系统设计[J].无线互联科技,2023,20(04):58-61+89.

[13]苏佳旭,白燕,温晓东.基于Web前端与MySQL数据库的自然灾害应急信息共享平台设计与实现[J].电脑知识与技术,2023,19(05):74-77.DOI:10.14004/j.cnki.ckt.2023.0274.

[14]徐海燕.JAVA编程在计算机应用软件中的应用特征与技术[J].电子技术与软件工程,2023(03):29-32.

[15]佟羽齐,刘德华,张栎柯等.基于SpringBoot框架的钻前管理系统的设计与实现[J].信息与电脑(理论版),2023,35(02):111-113.

[16]何良超,冯国柱. 基于微信小程序的技术监督安全培训系统设计与实现[C]//中国电力技术市场协会.2022年电力行业技术监督工作交流会暨专业技术论坛论文集.2022年电力行业技术监督工作交流会暨专业技术论坛论文集,2022:1253-1258.DOI:10.26914/c.cnkihy.2022.044323.

[17]张丽景,张文川.基于对比分析法的高职“MySQL数据库”课程设计——以兰州石化职业技术大学为例[J].现代信息科技,2022,6(21):188-191.DOI:10.19850/j.cnki.2096-4706.2022.21.046.

[18]马延立.基于微信小程序的在线考试系统设计与实现[J].信息记录材料,2022,23(06):151-154.DOI:10.16009/j.cnki.cn13-1295/tq.2022.06.010.

[19]王素珍.基于微信小程序的会计职称考试培训系统设计[J].微型电脑应用,2022,38(04):156-159.

[20]王曼维,杨荻,李岩等.基于SpringBoot框架的智慧医疗问诊系统设计与实现[J].中国医学装备,2022,19(03):133-136.

[21]丁翀,许哲,宋彬等.基于微信小程序的放射培训考试系统设计与实现[J].河南科技,2022,41(05):10-15.DOI:10.19968/j.cnki.hnkj.1003-5168.2022.05.002.

[22]李胜男. 基于微信的课堂测试小程序设计[D].西安电子科技大学,2022.DOI:10.27389/d.cnki.gxadu.2022.002367.

[23]高欣宇,芦立华. 基于微信小程序的公务员助考系统[P]. 上海市:CN113570483A,2021-10-29.

[24]Xinbin H,Yongbin B,Lisen Y, et al. Design and Implementation of Information System Based on Java Technology Platform[J]. Journal of Physics: Conference Series,2021,2033(1).

[25]Xiaona Q. Application of Java Technology in Dynamic Web Database Technology[J]. Journal of Physics: Conference Series,2021,1744(4).

[26]Huang M T. Design and Implementation of App System for Legal Consulting Based on JAVA Technology[J]. Procedia Computer Science,2020,166(C).

                                                   致谢

到此,整个高中信息技术学考题库及考试小程序就算完成了,虽然过程十分艰难,但是等到都完成的时候,我感觉无比的自豪,虽然设计的系统还存在许多的纰漏,但是我已经拼劲全力,给自己的大学四年画上了一个圆满的句号。写到这里有许多思绪想要表达,但是回首大学四年的学习生涯,才发现留在记忆里的东西就像无穷无尽的代码一样多,用言语很难表达出所念所想,但是有一些最重要的感谢话还是要表达出来。

在这里我首先要感谢的就是大学四年来所有教过我的老师,是他们教会了我很多的专业知识和做人的道理,从一进校门对开发系统的一窍不通,对于老师所留的结课作业总是抱怨累心难做,到现在能自主开发一个管理系统,里面包含了前台框架、后台框架、业务流程、我非常感激我的指导老师们,在大学期间你们帮助我掌握了数据挖掘,数据结构、操作系统等各种知识,并且让我能够将它们统一运用,最终完成了整个系统。在开发这个系统的过程中,我遇到了无数的问题,但是无论是线上还是线下,我都会向导师寻求帮助,而导师也总是耐心地指导我如何实现这个功能,如何让系统变得更加完善,最终,我也通过自己查阅相关资料,解决了许多问题。通过“老师,谢谢您,您辛苦了”的指导,我大大提升了自身的解决问题的能力,比起传授知识,更重要的是,它让我受益匪浅,我将继续努力,向老师学习,让自己的智慧得到更大的发挥!最后我还要感谢我的室友、同学,在一起学习这四年,他们不但学习上给了我很多建议,在生活上更加给了我帮助,正是有他们的帮助,我的大学生涯才如此完美。

最后,希望自己在未来的道路上能够越走越远,不辜负在大学的学习以及老师们的细致的教导,追风赶月莫停留,平荒尽处是春山。

                           免费领取源码,请点赞关注私信博主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值