目 录
摘 要
随着信息技术的发展,传统文物管理方式逐渐显露出效率低下、数据分散不易管理以及信息共享困难等弊端。依赖纸质记录和人工处理不仅耗时而且容易出错,极大地限制了文物信息的及时更新与传播,降低了公众获取文物知识的便捷性。为解决这些问题,提高文物管理的效率和准确性,设计并开发了一款基于SpringBoot框架的文物管理小程序。该系统采用Java语言编写,使用Spring Boot框架构建,并结合MySQL数据库进行数据存储,前端则使用Vue技术栈实现。同时,通过微信小程序的形式提供服务,并利用协同过滤算法推荐文物信息,增强用户体验。功能上,支持文物信息的录入、查询、修改及删除;文化视频的上传与管理;在线答题测试等。
此SpringBoot文物管理小程序旨在提升文物管理工作的现代化水平,确保文物信息的安全性和准确性,促进文物知识的普及。管理员可以通过后台管理系统完成用户注册信息审核、文物类型及年代监管、文化视频管理、敏感词控制、发布公告通知等多项任务。普通用户则可以享受浏览文物信息、参与文化答题、观看文化视频、阅读新闻资讯以及在交流论坛中互动等功能。这种分层管理模式既提高了文物管理的专业性,又增加了公众参与度,有助于文化遗产的保护与传承。
关键词:文物管理;微信小程序;SpringBoot框架;
Abstract
With the development of information technology, traditional cultural relic management methods have gradually revealed drawbacks such as low efficiency, scattered data that is difficult to manage, and difficulties in information sharing. Relying on paper records and manual processing is not only time-consuming but also prone to errors, greatly limiting the timely updating and dissemination of cultural relic information, and reducing the convenience for the public to obtain cultural relic knowledge. To address these issues and improve the efficiency and accuracy of cultural relic management, a cultural relic management mini program based on the SpringBoot framework has been designed and developed. The system is written in Java language, built using Spring Boot framework, and combined with MySQL database for data storage. The front-end is implemented using Vue technology stack. At the same time, services are provided through WeChat mini programs, and collaborative filtering algorithms are used to recommend cultural relic information, enhancing user experience. Functionally, it supports the input, query, modification, and deletion of cultural relic information; Upload and management of cultural videos; Online quiz tests, etc.
This SpringBoot cultural relic management mini program aims to enhance the modernization level of cultural relic management work, ensure the security and accuracy of cultural relic information, and promote the popularization of cultural relic knowledge. Administrators can complete multiple tasks such as user registration information review, cultural relic type and age supervision, cultural video management, sensitive word control, and announcement notification through the backend management system. Ordinary users can enjoy functions such as browsing cultural relics information, participating in cultural quizzes, watching cultural videos, reading news and information, and interacting in communication forums. This hierarchical management model not only enhances the professionalism of cultural relic management, but also increases public participation, which is conducive to the protection and inheritance of cultural heritage.
Keywords: cultural relic management; WeChat Mini Program; SpringBoot framework;
1 .绪 论
1.1研究背景
随着信息技术的快速发展和数字化进程的加快,文物管理的方式也面临着新的挑战与机遇。传统的文物管理模式多依赖纸质档案记录和人工管理,存在信息更新滞后、数据存储分散、查询效率低下等问题,难以满足当前高效、智能化的管理需求。此外,传统方式在文物信息共享、公众文化传播以及互动体验方面也存在明显不足,导致文物资源的利用率不高,公众参与度较低。基于此,亟需借助现代信息技术,构建一个高效、安全、便捷的文物管理平台。本文提出基于Spring Boot的文物管理小程序的设计与开发课题,旨在通过整合数据库技术、前后端分离架构及微信小程序等技术手段,优化文物信息的管理流程,提高文物知识传播的广度与深度,推动文物管理向智能化、数字化方向发展,为文物保护与利用提供有力的技术支撑。
1.2目的及意义
随着文物保护和文化遗产管理需求的不断增加,传统管理方式的局限性日益显现,亟需借助现代技术手段提升管理效率与保护效果。开发文物管理小程序的目的在于通过技术创新,优化文物的管理流程,提高信息管理的便捷性与准确性。该系统能够实现文物信息的实时更新与快速查询,为管理人员提供高效的操作界面,从而减少人为错误,提升数据的准确度和安全性。
此外,文物管理小程序还具有重要的文化传播意义。通过系统平台,用户可以轻松访问到各类文物的信息、文化视频和历史资料,增强公众对文化遗产的认知和兴趣。系统中的文物答题功能能够提高文化教育水平,激发用户对传统文化的学习热情,从而起到更好的普及文化知识、弘扬传统文化的作用。
通过建立这样一个信息化平台,文物管理不再局限于纸质档案和传统的人工操作,而是转向更加智能化、现代化的管理模式。这不仅能有效提升文物保护和管理的效率,还能推动社会对文化遗产保护的重视和参与,为文物保护和文化传承注入新的活力。
1.3国内外研究现状
在国内,随着信息技术的发展,文物管理的信息化进程逐渐加速。近年来,许多研究聚焦于基于互联网和大数据技术的文物管理系统的设计与实现。例如,中国国家文物局推出的“全国文物信息管理系统”就是一个典型的案例。该系统能够实现文物数据的集中管理和信息共享,为全国范围内的文物保护提供了数据支持。然而,尽管该系统在大规模文物数据的管理上取得了一定的成效,但由于系统架构较为陈旧,更新和扩展的灵活性差,导致系统在面对海量数据时的响应速度较慢,且在用户体验上存在一定的提升空间。此外,文物管理领域还出现了如“文物电子档案管理系统”等相关研究项目,具有较好的数据存储与查询功能,但在智能化、可视化功能的实现上仍有所欠缺。
在国外,许多发达国家也开展了文物保护与管理的信息化建设。例如,美国的“文化遗产数字化项目”通过数字化文物资料和构建文化遗产数据库,推动了全球文物资源的共享与传播。这个系统的优点是具有很高的开放性与跨平台互操作性,用户可以通过各种设备访问文物信息,极大地促进了文物保护的全球协作。然而,这一系统的缺点在于,数据的精确度和更新频率受到一定的制约,尤其是在一些小型文物和地方性遗产的管理上,存在信息滞后的问题。此外,欧洲的“欧洲文化遗产数字平台”也是一个成功的案例,提供了丰富的文物信息资源,但在用户交互和智能推荐方面,尚有进一步提升的空间。
综合来看,国内外的文物管理系统已经取得了一定的进展,但在智能化、数据更新、跨平台兼容性等方面仍有许多值得改进的地方。国内虽然在数据集成和资源共享方面有所突破,但对于智能化管理、用户交互体验等方面的研究还相对较为薄弱。而国外的文物管理系统尽管在跨国合作和信息资源开放方面具有优势,但在具体的文物保护技术与智能化应用上也面临一定的挑战。随着技术的不断发展,未来的文物管理系统必将更加智能化、个性化,并能够实现更加高效和精准的文化遗产保护。
1.4相关技术介绍
1.4.1 B/S框架
浏览器/服务器(B/S)架构是一种以浏览器和服务器为基础的系统架构模式,用户通过浏览器与服务器进行互动。B/S架构简化了客户端的安装和管理,用户无需在自己的设备上安装复杂的软件,仅需使用通用浏览器即可访问应用程序。服务器端主要处理业务逻辑和数据存储,而客户端则主要负责展示用户界面和数据交互[1]。B/S架构的设计使得系统更新和维护主要集中在服务器端,从而减少了维护成本。
B/S架构通常利用Web技术来实现,涉及HTML、CSS和JavaScript等技术。用户在浏览器中发起请求,服务器接收请求并返回数据。数据传输通常通过HTTP或HTTPS协议进行,B/S架构的灵活性使其适用于在线购物、信息管理系统和社交网络等多种应用场景[2]。由于其扩展性良好,B/S架构能够轻松支持大量用户访问,适应不断变化的业务需求。
1.4.2Java语言
作为一种流行的高级编程语言,Java具备跨平台能力、面向对象的特性以及庞大的标准库。借助Java虚拟机(JVM),Java代码能够实现跨平台运行,意味着开发者只需编写一次代码,便能在任何安装了JVM的系统上运行[3]。Java的面向对象特性简化了代码的复用和模块化,有助于软件的维护和升级。此外,Java支持多线程,允许程序同时处理多个任务,从而增强应用性能。
Java语言以其简洁明了的语法结构吸引了众多开发者。其标准库涵盖了数据结构、输入输出、网络编程等多个功能模块,为开发者提供了丰富的工具,有效减少了开发中的重复工作。Java的应用范围广泛,包括企业级应用、移动应用、Web开发以及大数据处理等多个领域。
1.4.3 SpringBoot框架
SpringBoot框架是基于Spring框架的开源项目,简化Java应用程序的开发过程。SpringBoot通过约定优于配置的理念,减少了传统Spring应用的繁琐配置,开发者可以快速搭建和部署应用程序。框架提供了一系列默认配置,支持自动化配置,简化了应用启动的复杂性[4]。SpringBoot内置了嵌入式Web服务器,使得开发者能够独立运行Java应用,无需外部容器。
SpringBoot支持微服务架构,开发者可以轻松创建和管理多个微服务。框架集成了丰富的功能模块,包括安全、数据访问和消息中间件等,支持RESTful API和JSON数据格式的处理[5]。SpringBoot还提供了强大的监控和管理功能,允许开发者实时监控应用的健康状态和性能指标。借助SpringBoot,开发者能够高效构建和维护现代企业级应用,满足复杂业务需求。
1.4.4 MySQL数据库
作为一款开源的关系型数据库管理系统,MySQL被广泛用于Web应用和企业级数据存储。它支持结构化查询语言,使得开发者能够利用标准语句执行数据的创建、读取、更新和删除操作[6]。数据库以表格形式组织数据,确保数据的完整性和约束条件得以定义。MySQL的存储引擎机制允许用户根据需求选择不同的存储引擎,从而优化性能和功能。
MySQL以其高性能和可扩展性著称,能够支持大规模数据存储和高并发访问。该系统还提供了全面的用户权限管理和数据加密安全特性。
1.4.5 Vue技术
Vue是一个逐步发展的JavaScript框架,主要用来构建用户界面。它采用组件化的开发方式,使开发者能够将应用分解为独立且可复用的组件,这不仅提升了开发速度,也增强了代码的可维护性[7]。框架的核心库主要关注视图层,提供了数据绑定和DOM操作的功能,并拥有简洁的API。Vue的虚拟DOM技术优化了应用性能,减少了对真实DOM的操作频率。
Vue实现了双向数据绑定,能够自动同步视图与模型的变更。通过Vue的指令系统,开发者可以简化数据的展示和事件的处理。Vue同样支持路由和状态管理,这使得构建复杂的单页应用变得更为简单[8]。利用Vue的生态系统,开发者可以利用众多工具和库来扩展应用功能,以适应各种业务场景。Vue在前端开发领域逐渐成为了一个主流选择,并受到了广泛的关注和应用。
1.4.6微信开发者工具
作为一款专门为小程序度身定制、持续改进、提供便利操作的软件,微信开发者可以扫描二维码进行访问,从而达到小程序快速开发、调试的目的。针对用户的具体需求,我们有能力开发出各种屏幕尺寸的微型应用。在视图布局结束之后,可以利用编辑功能快速地对当前视图界面进行调整。
开发者工具为控制台提供了功能,以便于进行调试,并将信息输出。编码上传到腾讯服务器时,需要填写版本号、备注信息等核对,以保证编码的安全性与准确性。查看资源文件可快速对项目文件目录进行调整并进行断点调试。远程调试技术可以很容易地开发到手机,PC端的应用。当地数据存储功能可以显示区域内信息。采用子父层级布局,可以让视图的调试更加方便。微信小程序代码体积要控制在2M范围内,在开发过程中需要对合法域名信息及服务器域名进行严格把关。微信开发者工具已经成为开发中不可缺少的组成部分,并且正在不断改进与完善,对小程序开发起到方便与支持作用。
2 .可行性分析
2.1技术可行性
文物管理小程序的技术可行性较高,基于Spring Boot、Vue、MySQL等成熟技术框架,具备强大的数据处理能力和高效的前后端分离架构。微信小程序平台的普及性与易用性,确保了系统能在广泛的终端上运行,具有较好的兼容性与扩展性。协同过滤算法的引入也能提供个性化推荐,提升用户体验。整体技术架构稳定,能够满足文物管理系统对数据高效存储、快速查询及智能推送的需求。
2.2经济可行性分析
从经济角度来看,文物管理小程序的开发成本较低。采用开源的技术框架(如Spring Boot、Vue)可以有效降低软件开发费用,且使用云服务器和数据库进行数据存储的模式也具有较低的维护成本。通过搭建该系统,可以提高文物管理效率,减少人力投入和管理成本,尤其在长期运营中,系统能为文化遗产保护和相关产业带来更高的经济效益,具有较好的经济回报潜力。
2.3市场可行性
随着文化遗产保护日益受到重视,文物管理小程序的市场需求呈现增长趋势。政府和相关文化机构对于文物保护的投入逐年增加,推动了信息化管理的需求。国内外众多文物保护单位和博物馆也开始关注智能化、数字化管理系统。文物管理小程序能够满足这一需求,适用于多个领域,包括博物馆、文化遗产保护组织和旅游景区等,因此在市场上具有广阔的应用前景和较高的市场可行性。
3 .系统需求分析
3.1系统总体流程设计
3.1.1程序操作流程
用户访问平台网站,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如下图所示。

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

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

图3-3注册流程图
3.2功能需求分析
普通用户功能分析:
注册登录:普通用户可通过微信授权快捷注册并登录系统,完善个人信息后即可使用全部功能,保障用户身份真实性和数据安全。
首页:用户进入小程序主界面,可快速访问各类功能模块,系统智能推荐文物信息与热门文化内容,提升浏览效率和用户体验。
文化答题:用户可选择不同科目进行在线答题,系统自动批改选择题并显示分数,主观题由管理员评分,用户可查看评语及错题记录。
文化视频:提供丰富的文化视频资源,用户可搜索或分类浏览,查看视频详情,支持在线播放、点赞、收藏、评论等互动操作。
文物信息:用户可搜索文物名称或按分类浏览,查看详细文物资料,包括图文介绍与视频展示,支持点赞、收藏与评论功能。
新闻资讯:平台定期发布与文物相关的新闻动态与文化资讯,用户可在线阅读、评论互动,及时获取最新文化信息。
交流论坛:用户可在论坛发布话题、回复他人帖子,支持点赞、收藏与评论,促进文化交流与公众参与,增强社区氛围。
通知公告:系统发布重要通知与活动公告,用户可实时查看最新动态,了解平台更新与管理相关信息。
我的:个人中心模块,用户可修改基本信息、查看收藏内容、评论记录、错题列表以及发布的论坛信息,实现一站式账户管理。
普通用户角色用例如下图所示。

图3-4文物管理小程序注册用户角色用例图
管理员功能分析:
登录:管理员通过账号密码登录系统,进入后台管理界面,系统设有权限验证机制,确保仅授权人员可访问核心管理功能。
后台首页:展示平台整体运行数据,包括文化视频数量、文物信息总量、考试成绩分布、试卷平均分等统计图表,便于管理员全面掌握系统状态。
系统用户管理:可查看和管理所有用户(管理员、普通用户、管理用户),审核管理用户的注册申请,分配或禁用用户权限,保障系统安全运行。
文物类型管理:对文物分类信息进行增删改查操作,规范文物归类体系,提升信息检索效率与管理条理性。
文物年代管理:支持查询、查看详情及监管文物所属年代信息,维护历史背景数据的准确性与完整性。
文化视频管理:实现对上传视频的查询、查看详情与内容监管,确保视频资源符合规范,提升文化传播质量。
文物信息管理:可查询文物详细信息并进行监管,确保文物资料完整、准确,及时更新或下架异常内容。
系统管理:管理首页轮播图展示内容,并设置敏感词库,自动过滤评论区不良词汇,保障平台内容健康合规。
通知公告管理:发布、编辑或删除系统通知与平台公告,向用户传达重要信息,增强平台互动与沟通效率。
资源管理:管理新闻资讯内容及其分类,支持添加、修改、删除资讯文章,并监管用户评论,维护平台内容质量。
文物答题管理:管理答题模块中的科目、试题库、错题记录和试卷列表,支持题库导入、试卷生成与成绩分析等功能。
交流管理:监管交流论坛内容,管理论坛分类,查看并处理用户评论,维护良好的文化交流环境。
管理员角色用例如下图所示。

图3-5文物管理小程序管理员角色用例图
管理用户功能分析:
注册登录:管理用户需先完成注册,提交信息后由系统管理员审核,审核通过方可登录后台管理系统,确保操作人员身份合法与数据安全。
后台首页:提供可视化数据统计面板,展示文化视频数量、考试成绩分布、试卷平均分等图表,帮助管理人员快速掌握平台运行情况。
文物类型管理:支持对文物分类信息进行增删改查操作,便于统一规范文物归类,提升信息管理的条理性和检索效率。
文物年代管理:可查询、重置、删除或新增文物所属年代信息,维护文物历史背景数据的准确性与完整性。
文化视频管理:实现文化视频内容的上传、编辑、删除和查询功能,同时可查看用户评论,保障视频资源的质量与合规性。
文物信息管理:支持添加、修改、删除文物信息,包括名称、数量、简介、图片及视频上传等功能,并可查看用户评论,实现文物资料的全面管理。
科目列表:对答题模块中的考试科目进行管理,包括新增、删除、修改和查询,满足不同类别知识测试需求。
试题库:支持题库的增删改查操作,同时提供文档下载与批量导入功能,便于高效维护大量试题数据,提升题库更新效率。
错题记录:可查看用户答题过程中产生的错题数据,用于分析常见错误,优化试题内容,提高学习效果。
试卷列表:支持试卷的创建、编辑、删除与查询,提供自动评分功能,并可查看考生得分情况,实现考试全过程数字化管理。
管理用户角色用例如下图所示。

图3-6文物管理小程序管理用户角色用例图
3.3性能需求分析
鉴于以上分析的功能性需求,非功能需求在项目的设计种也是一项不可忽略的工作,具体体现如表3.1 所示。
表3.1 系统非功能需求表
| 需求类型 | 描述 |
| 性能 | 网站应具有高性能,能够快速响应用户请求,保持稳定的性能水平,支持高并发访问和大规模数据处理。 |
| 可靠性 | 网站应具有高可靠性,确保网站稳定运行,防止网站故障和数据丢失,提供数据备份和恢复机制。 |
| 安全性 | 网站应具有高安全性,保护用户隐私信息和数据安全,采用加密传输技术、访问控制和身份验证机制。 |
| 可用性 | 网站应具有高可用性,保证网站全天候运行,最大限度减少网站故障和维护时间,提供灾备和故障转移功能。 |
| 易用性 | 网站应具有良好的易用性,用户界面设计友好,操作简单直观,提供清晰的指导和帮助文档。 |
| 可维护性 | 网站应具有良好的可维护性,易于维护和升级,提供模块化和结构化代码,方便开发人员进行维护和修改。 |
| 可扩展性 | 网站应具有良好的可扩展性,支持新增功能和模块的集成,具备良好的架构设计和扩展性能。 |
3.4安全性需求分析
为了确保文物管理小程序的安全性和用户数据的保护,必须从多个方面进行安全性需求分析和规划,包括但不限于数据安全、用户认证与授权、网络安全及内容安全等。
数据安全:系统需要采用加密技术对存储在数据库中的敏感信息(如用户个人信息、文物详细资料等)进行加密处理,防止数据泄露。同时,应定期备份数据,并制定应急恢复计划,以应对可能的数据丢失或损坏情况。
用户认证与授权:为保证系统的访问安全,所有用户(包括管理员、普通用户和管理用户)都需通过严格的注册和登录验证流程。采用多因素身份验证机制(例如密码加短信验证码),确保只有授权用户才能访问系统资源。不同角色应具有不同的权限级别,限制对敏感操作的访问。
网络安全:在网络层面,应使用SSL/TLS协议加密客户端与服务器之间的通信,防止数据在传输过程中被窃取或篡改。此外,还需部署防火墙、入侵检测系统等安全措施,增强对外部攻击的防御能力。
内容安全:平台需设置敏感词过滤系统,自动检测并屏蔽不当言论或恶意信息,维护良好的交流环境。对于上传的内容(如文化视频、文物信息等),应进行严格审核,确保其合法合规。同时,建立有效的举报机制,允许用户报告违规行为或内容,及时采取相应措施。
综上所述,文物管理小程序的安全性需求涵盖了数据保护、用户认证与授权、网络防护以及内容监管等多个关键领域,旨在构建一个既开放又安全的文化交流平台,保障用户的合法权益,促进文化遗产的有效管理和传承。
4 .系统设计
本章主要讨论的内容包括文物管理小程序的功能模块设计、数据库系统设计。
4.1系统架构设计
在系统架构设计中,我将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图所示。

图4-1文物管理小程序架构设计图
表示层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。
业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。
数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。
这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。
4.2系统模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本文物管理小程序中的用例。那么接下来就要开始对本文物管理小程序的架构、主要功能和数据库开始进行设计。文物管理小程序根据前面章节的需求分析得出,文物管理小程序的功能模块图如下图所示。

图4-2文物管理小程序功能模块图
4.3系统活动图设计
系统须支撑整个机构不同层面的多种职能,而各功能模块间存在着多种关联信息,组成一个有机整体,并针对就业数据自身特点和面临的现实条件,对系统进行流程图设计。活动图是一种用于对系统的动态行为建模的另一种常用图表,通常用于可视化展示系统中各个活动的执行顺序、流程控制和数据交互,展现从一个活动到另一个活动的控制流,活动图在本质上是一种流程图;但活动图着重表现从一个活动到另一个活动的控制流。因此,这里列举了2个业务活动图。
(1)用户注册的业务流程如下。
在整体用户注册业务中,当用户进行注册时,管理员会根据用户的情况来执行注册操作。整个用户注册流程的活动图如下图所示。

图4-3 用户注册流程活动图
(2)用户登录查询的业务流程如下。
用户注册登录,系统从数据库获取用户数据信息,登录成功用户进入查询页面,用户输入查询关键字,数据库查询用户所输入的关键字,查询成功显示查询的模块信息,查询失败不显示。用户登录查询功能的活动图如下图所示。

图4-4用户登录查询活动图
(3)管理员添加信息的业务流程如下。
此活动图描述了管理员添加信息。管理员可以通过信息管理模块页面选择要添加的基本信息。添加成功传入数据库中,失败则不添加。管理员可以保存信息并更新系统中的信息。管理员添加信息功能的活动图如下图所示。

图4-5管理员添加信息活动图
4.4时序图设计
4.4.1注册时序图
用户通过注册模块发送注册请求,系统完成注册后返回确认信息。随后,用户通过登录模块发送登录请求,系统验证用户信息后允许访问目标系统。用户完成操作后可选择退出,系统终止会话。注册时序图,如图下所示。

图4-6注册时序图
4.4.2登录时序图
管理员输入登录信息后,登录界面将信息传递至前台管理界面,随后通过SpringBoot框架读取数据库中的用户信息并返回。系统验证信息,若验证成功则登录成功,若验证失败则返回错误提示。登录时序图如图下所示。

图4-7登录时序图
4.4.3管理员修改用户信息时序图
管理员输入登录信息后,进入用户信息管理模块,选择增删改查操作并提交命令至数据库。数据库执行操作后返回成功状态,系统显示用户管理界面并提示操作成功。管理员修改用户信息时序图如图下所示。

图4-8管理员修改用户信息时序图
4.4.4管理员管理系统信息时序图
管理员通过访问系统发起请求,系统接收访问后转向系统信息模块进行管理操作。管理完成后,系统返回管理结果至系统,最终反馈给管理员,管理员可选择退出。管理员管理系统信息时序图如图下所示。

图4-9管理员管理系统信息时序图
4.5数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
4.5.1数据库概念结构设计
数据库概念结构设计主要涉及数据库的实体和实体之间的关系。通过实体-关系模型或者其他适当的模型,我将定义系统中涉及的各个实体以及它们之间的联系。下面我将罗列主要的实体属性图和系统E-R图。
- 普通用户实体属性如下图所示。

图4-10普通用户实体属性图
- 文物信息实体属性如下图所示。

图4-11文物信息实体属性图
- 文化视频实体属性如下图所示。

图4-12文化视频实体属性图
- 用户答题实体属性如下图所示。

图4-13用户答题实体属性图
- 试题实体属性如下图所示。

图4-14试题实体属性图
下面是整个文物管理小程序中主要的数据库表总E-R实体关系图。

图4-15文物管理小程序总E-R关系图
4.5.2数据库逻辑结构设计
通过上一小节中文物管理小程序中总E-R关系图上得出一共需要创建多个数据表。在此主要罗列几个主要的数据库表结构设计。
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-age_of_cultural_relics(文物年代)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | age_of_cultural_relics_id | int | 是 | 是 | 文物年代ID | |
| 2 | age_of_cultural_relics | varchar | 64 | 否 | 否 | 文物年代 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-3-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-4-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID |
表 4-9-cultural_relics_information(文物信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | cultural_relics_information_id | int | 是 | 是 | 文物信息ID | |
| 2 | name_of_cultural_relics | varchar | 64 | 是 | 是 | 文物名称 |
| 3 | cultural_relics_pictures | varchar | 255 | 否 | 否 | 文物图片 |
| 4 | types_of_cultural_relics | varchar | 64 | 否 | 否 | 文物类型 |
| 5 | age_of_cultural_relics | varchar | 64 | 否 | 否 | 文物年代 |
| 6 | number_of_cultural_relics | varchar | 64 | 是 | 否 | 文物数量 |
| 7 | manage_users | int | 否 | 否 | 管理用户 | |
| 8 | cultural_relics_video | varchar | 255 | 否 | 否 | 文物视频 |
| 9 | introduction_of_cultural_relics | text | 65535 | 否 | 否 | 文物简介 |
| 10 | cultural_relics_details | longtext | 4294967295 | 否 | 否 | 文物详情 |
| 11 | hits | int | 是 | 否 | 点击数 | |
| 12 | praise_len | int | 是 | 否 | 点赞数 | |
| 13 | collect_len | int | 是 | 否 | 收藏数 | |
| 14 | comment_len | int | 是 | 否 | 评论数 | |
| 15 | recommend | int | 是 | 否 | 智能推荐 | |
| 16 | create_time | datetime | 是 | 否 | 创建时间 | |
| 17 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-culture_video(文化视频)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | culture_video_id | int | 是 | 是 | 文化视频ID | |
| 2 | video_title | varchar | 64 | 否 | 否 | 视频标题 |
| 3 | video_cover | varchar | 255 | 否 | 否 | 视频封面 |
| 4 | types_of_cultural_relics | varchar | 64 | 否 | 否 | 文物类型 |
| 5 | number_of_videos | varchar | 64 | 是 | 否 | 视频数量 |
| 6 | video_file | varchar | 255 | 否 | 否 | 视频文件 |
| 7 | hits | int | 是 | 否 | 点击数 | |
| 8 | praise_len | int | 是 | 否 | 点赞数 | |
| 9 | collect_len | int | 是 | 否 | 收藏数 | |
| 10 | comment_len | int | 是 | 否 | 评论数 | |
| 11 | create_time | datetime | 是 | 否 | 创建时间 | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-exam_question_database(试题库)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | exam_question_id | mediumint | 是 | 是 | 试题库ID | |
| 2 | subject_name | varchar | 255 | 否 | 否 | 科目名称 |
| 3 | type | varchar | 20 | 否 | 否 | 类型 |
| 4 | title | varchar | 255 | 否 | 否 | 题目 |
| 5 | question_item | varchar | 500 | 否 | 否 | 选项 |
| 6 | answer | varchar | 500 | 否 | 否 | 参考答案 |
| 7 | score | double | 否 | 否 | 总分 | |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-forum(论坛)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | forum_id | mediumint | 是 | 是 | 论坛ID | |
| 2 | display | smallint | 是 | 否 | 排序 | |
| 3 | user_id | mediumint | 是 | 否 | 用户ID | |
| 4 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 5 | praise_len | int | 否 | 否 | 点赞数 | |
| 6 | hits | int | 是 | 否 | 访问数 | |
| 7 | title | varchar | 125 | 是 | 否 | 标题 |
| 8 | keywords | varchar | 125 | 否 | 否 | 关键词 |
| 9 | description | varchar | 255 | 否 | 否 | 描述 |
| 10 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 11 | tag | varchar | 255 | 否 | 否 | 标签 |
| 12 | img | text | 65535 | 否 | 否 | 封面图 |
| 13 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 15 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 16 | avatar | varchar | 255 | 否 | 否 | 发帖人头像 |
| 17 | type | varchar | 64 | 是 | 否 | 论坛分类 |
| 18 | istop | int | 是 | 否 | 是否置顶 |
表 4-13-forum_type(论坛分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 3 | description | varchar | 255 | 否 | 否 | 描述 |
| 4 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 5 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 6 | icon | varchar | 255 | 否 | 否 | 分类图标 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-14-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-15-manage_users(管理用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | manage_users_id | int | 是 | 是 | 管理用户ID | |
| 2 | name_of_personnel | varchar | 64 | 否 | 否 | 人员姓名 |
| 3 | personnel_mobile_phone | varchar | 16 | 是 | 是 | 人员手机 |
| 4 | personnel_position | varchar | 64 | 否 | 否 | 人员职位 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-16-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-ordinary_user(普通用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_user_id | int | 是 | 是 | 普通用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | users_mobile_phone | varchar | 16 | 是 | 是 | 用户手机 |
| 4 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 5 | user_id | int | 是 | 否 | 用户ID | |
| 6 | create_time | datetime | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-18-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-19-sensitive_vocabulary(敏感词汇)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | sensitive_vocabulary_id | int | 是 | 是 | 敏感词汇ID | |
| 2 | sensitive_vocabulary | varchar | 64 | 否 | 否 | 敏感词汇 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-20-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-21-subject(科目)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | subject_id | int | 是 | 是 | 科目ID | |
| 2 | name | varchar | 255 | 否 | 否 | 科目名称 |
| 3 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-22-subject_exam(考试)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | exam_id | mediumint | 是 | 是 | 考试id | |
| 2 | subject_name | varchar | 255 | 否 | 否 | |
| 3 | name | varchar | 32 | 是 | 否 | 考试名称:[2,32] |
| 4 | duration | int | 否 | 否 | 答题时长 | |
| 5 | score | double | 否 | 否 | 总分 | |
| 6 | status | varchar | 10 | 否 | 否 | 状态:启用、禁用 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间: | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间: | |
| 9 | user_id | int | 否 | 否 | 出题人 |
表 4-23-subject_exam_question(试题)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | exam_question_id | mediumint | 是 | 是 | 试题ID | |
| 2 | subject_name | varchar | 255 | 否 | 否 | 科目名称 |
| 3 | type | varchar | 20 | 否 | 否 | 类型 |
| 4 | title | varchar | 255 | 否 | 否 | 题目 |
| 5 | question_item | varchar | 500 | 否 | 否 | 选项 |
| 6 | answer | varchar | 500 | 否 | 否 | 参考答案 |
| 7 | score | double | 否 | 否 | 总分 | |
| 8 | question_order | int | 否 | 否 | 排序 | |
| 9 | exam_id | mediumint | 是 | 是 | 所属试卷 | |
| 10 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 11 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-24-subject_user_answer(用户答题)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_answer_id | mediumint | 是 | 是 | 用户答题ID | |
| 2 | user_id | mediumint | 是 | 否 | 用户ID | |
| 3 | exam_id | mediumint | 是 | 否 | 考试id | |
| 4 | score | double | 否 | 否 | 分数 | |
| 5 | answers | text | 65535 | 否 | 否 | 答案 |
| 6 | score_detail | text | 65535 | 否 | 否 | 评分详情 |
| 7 | objective_score | double | 否 | 否 | 客观题得分 | |
| 8 | subjective_score | double | 否 | 否 | 主观题得分 | |
| 9 | score_state | tinyint | 否 | 否 | 评分状态 | |
| 10 | nickname | varchar | 255 | 否 | 否 | 提交人 |
| 11 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 13 | comment_desc | varchar | 255 | 否 | 否 | 评语 |
表 4-25-types_of_cultural_relics(文物类型)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | types_of_cultural_relics_id | int | 是 | 是 | 文物类型ID | |
| 2 | types_of_cultural_relics | varchar | 64 | 否 | 否 | 文物类型 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-26-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-27-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-28-user_answer_wrong(用户错题)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_answer_id | mediumint | 是 | 是 | 用户错题ID | |
| 2 | subject_name | varchar | 255 | 否 | 否 | 科目名称 |
| 3 | question_item | varchar | 255 | 否 | 否 | 选项 |
| 4 | title | varchar | 255 | 否 | 否 | 题目 |
| 5 | type | varchar | 255 | 否 | 否 | 题目类型 |
| 6 | exam_id | mediumint | 是 | 是 | 考试ID | |
| 7 | score | double | 否 | 否 | 分数 | |
| 8 | answers | text | 65535 | 否 | 否 | 用户提交的答案 |
| 9 | answer | text | 65535 | 否 | 否 | 参考答案 |
| 10 | score_detail | text | 65535 | 否 | 否 | 评分详情 |
| 11 | objective_score | double | 否 | 否 | 客观题得分 | |
| 12 | subjective_score | double | 否 | 否 | 主观题得分 | |
| 13 | score_state | tinyint | 否 | 否 | 评分状态 | |
| 14 | nickname | varchar | 255 | 否 | 否 | 提交人 |
| 15 | user_id | int | 是 | 否 | 提交人ID | |
| 16 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 17 | update_time | timestamp | 是 | 否 | 更新时间 |
5 .系统实现
5.1前端首页模块
前台首页模块主要包括各类信息的展示,如用户注册登录状态、热门文物信息推荐、最新新闻资讯以及轮播图展示等。用户可以通过前台首页快速了解系统的主要功能和最新动态。首页设计注重用户体验,布局清晰,色彩搭配和谐,使用户在使用过程中能够轻松找到所需信息。同时,首页还提供了便捷的导航链接,方便用户跳转到其他功能模块。前台首页模块展示如下图所示。

图5-1前台首页模块图
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.3登录模块
文物管理小程序中的前台上注册后的用户是可以通过自己的用户名+密码进行登录的,当用户输入完整的自己的用户名+密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的用户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到文物管理小程序的首页中,否则将会提示相应错误信息,登录模块如下图所示。

图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.4前端注册用户功能模块
5.4.1文化答题模块
用户可以选择不同科目进行在线答题,系统自动评分选择题,填写题和主观题由管理员评论和评分。用户可以查看自己答题的分数和错题记录,进行针对性复习。模块如下图所示:

图5-4考试列表模块图
5.4.2文化视频模块
用户可以搜索和查看文化视频的详细信息,支持点赞、收藏、评论等互动功能。用户还可以观看视频内容,了解文物和文化背景,增强文化知识的学习体验。模块如下图所示。

图5-5文化视频详情模块图
5.4.3文物信息模块
用户可通过系统搜索文物名称,查看详细的文物信息。每个文物页面提供点赞、收藏、评论等功能,用户可深入了解文物的历史背景与相关资料,同时观看相关的文物视频。模块如下图所示。

图5-6文物信息列表模块图
5.4.4交流论坛模块
用户可以在论坛中发布帖子、回复评论,并参与文化交流。论坛支持点赞、收藏和评论,促进用户之间的互动与讨论,提升文化素养和学习兴趣。模块如下图所示。

图5-7发布论坛模块图
5.4.5“我的”模块
用户可在个人中心修改基本信息、查看收藏和评论记录。还可查看错题列表、交流论坛的历史记录,便于管理个人学习进度与互动记录,提升用户体验和管理便利性。模块如下图所示。

图5-8“我的”模块图
5.5后端管理用户功能模块
5.5.1文物类型模块
管理用户可在后台对文物类型进行管理,支持查询、重置、删除及添加操作。系统能够根据文物类型进行分类管理,方便用户高效地进行文物信息的管理与检索。模块如下图所示。

图5-9文物类型管理模块图
5.5.2文物信息管理模块
管理用户可查询、重置、删除及添加文物信息,包括文物名称、数量、简介、文物视频等资料。该功能使得文物信息的更新与维护更加高效,保证文物数据的准确性与完整性。模块如下图所示。

图5-10添加文物信息模块图
5.5.3文物答题管理模块
文物答题模块为管理用户提供了全面的管理功能,包括对科目列表、试题库、错题记录和试卷列表的管理。管理用户可以查询、重置、删除或添加科目,确保提供多样化的学习内容;对试题库进行管理,支持批量导入和编辑试题,提高试题管理的效率;同时,管理用户能够查看并分析用户的错题记录,为用户提供针对性的学习指导,帮助他们集中突破薄弱环节。此外,管理用户还可生成和管理试卷,查看用户成绩和评分,提供灵活的考试管理选项,以满足不同教育需求。
例如,添加试题模块如下图所示。

图5-11添加试题模块图
例如,试卷列表模块如下图所示。

图5-12试卷列表模块图
5.6后端管理员功能模块
5.6.1后台首页模块
管理员登录后台后,首页展示文化视频、文物信息、考试成绩、试卷平均分等统计图。通过这些数据图表,管理员能够快速掌握系统整体运行状况,了解用户参与情况以及文化学习和考试成绩的分布。模块如下图所示。

图5-13后台首页模块图
5.6.2用户管理模块
管理员负责管理系统中的所有用户,包括普通用户和管理用户。管理员可以审核管理用户的注册信息,确保所有用户符合规定的使用要求,管理用户权限,确保系统的安全性和合规性。流程图如下所示。

图5-14用户管理流程图
用户管理模块如下图所示。

图5-15用户管理模块图
添加系统用户信息关键代码:
@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.6.3系统管理模块
系统管理模块包括轮播图和敏感词的管理。管理员可以对网站首页的轮播图进行添加、修改和删除,以增强用户体验。敏感词管理可以确保系统内容符合规定,避免不适当信息的传播。
例如,添加轮播图模块如下图所示。

图5-16添加轮播图模块图
上传图片关键代码如下:
@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, "上传失败");
}
5.6.4资源管理模块
在资源管理方面,管理员可以对新闻资讯进行新增、删除、查询和查看详情,确保资讯的及时更新和准确性。管理员还可以对资讯分类进行管理,包括新增分类、删除分类、查询分类和查看分类详情等操作,方便用户根据不同的体育类型快速找到所需资讯,提高用户体验。模块如下图所示。

图5-17资源管理模块图
上传图片关键代码如下:
@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, "上传失败");
}
5.6.5交流管理模块
管理员负责管理交流论坛及论坛分类,并对论坛的评论进行查看和管理。确保论坛内容健康、积极,用户互动得到有效监管,同时也促进文化讨论和学术交流的活跃性。模块如下图所示。
图5-18交流管理模块
6 .系统测试
6.1系统测试的目的
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性[10]。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
6.2测试方法
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
6.3测试用例
6.3.1用户登录功能测试
表6-1 用户登录功能测试表
| 用例名称 | 用户登录系统 |
| 目的 | 测试用户通过正确的用户名和密码可否登录功能 |
| 前提 | 未登录的情况下 |
| 测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
| 预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
| 实际结果 | 实际结果与预期结果一致 |
6.3.2创建数据测试
在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。
创建数据用例如表6-2 所示。
表6-2 创建数据测试用例
| 测试用例编号 | YL_02 | |
| 测试用例名称 | 系统使用者进行创建数据 | |
| 测试用例描述 | 使用者输入要创建的数据 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 输入完整并且格式正确的数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
| 核心位置数据但非必要位置不输入数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
| 核心数据位置不输入数据 | 提示“创建失败” | 预期结果 |
6.3.3修改数据测试
在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。
修改数据用例如表6-3所示。
表6-3 修改数据测试用例
| 测试用例编号 | YL_03 | |
| 测试用例名称 | 系统使用者进行修改数据 | |
| 测试用例描述 | 使用者对可修改的数据项进行修改 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 将现有数据修改成正确的数据 | 提示“修改成功”,并显示所有数据 | 预期结果 |
| 将现有数据修改成错误的数据 | 提示“修改失败” | 预期结果 |
6.3.4查询数据测试
在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。
查询数据用例如表6-4所示。
表6-4 查询数据测试用例
| 测试用例编号 | YL_04 | |
| 测试用例名称 | 系统使用者进行查询数据 | |
| 测试用例描述 | 全部查询以及输入关键词查询 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 界面自动查询全部 | 显示对应所有记录 | 预期结果 |
| 输入已存在且能匹配成功的关键字 | 显示所查询到的数据 | 预期结果 |
| 输入不存在的关键字 | 显示数据界面为空 | 预期结果 |
6.4测试结果
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
本论文设计并开发了一套基于Spring Boot、Vue和MySQL的文物管理小程序,通过微信小程序平台实现了文化遗产的高效管理与传播。系统功能涵盖了文物信息管理、文化视频管理、文物答题、用户管理等多个模块,能够满足文物保护、文化传播及用户学习的需求。采用协同过滤推荐算法,优化了文物信息推荐功能,提升了用户的个性化体验。
在开发过程中,技术的选择和架构设计使系统具备了高效的数据处理能力和灵活的功能扩展性。同时,系统的安全性设计确保了文物数据的保护和用户隐私的安全。通过对文物管理的数字化与自动化,系统显著提高了管理效率,减少了人工操作的复杂性。
未来,随着技术的不断发展,文物管理小程序可以进一步完善智能化推荐、数据分析等功能,推动文化遗产的数字化保护工作向更高水平迈进。同时,平台的可扩展性也为后续的跨领域应用和文化产业合作提供了良好的基础。
- 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
- 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
- 尹应荆.JAVA编程语言在计算机软件开发中的应用[J].石河子科技,2023,(05):45-47.
- 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
- 熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2021,15(36):76-77.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 周晓玉,崔文超.基于Web技术的数据库应用系统设计[J].信息与电脑(理论版),2023,35(09):189-191.
- 阮全凑.如何有效提升文物保护管理水平[J].收藏与投资,2025,16(03):126-128.DOI:10.19897/j.cnki.scytz.2025.03.045.
- 王奕瑾.网络文物保护平台数据管理系统设计与实现[J].电脑编程技巧与维护,2024,(08):91-93.DOI:10.16184/j.cnki.comprg.2024.08.025.
- 索荣遥.基于WebGIS的文物资源管理系统设计与实现[J].测绘与空间地理信息,2024,47(07):119-122.
- 张暑军,刘颖.文物保护数字化管理系统设计与实现[J].电脑知识与技术,2024,20(09):61-64.DOI:10.14004/j.cnki.ckt.2024.0380.
- 张子健,雒伟群.西藏考古文物在线管理系统设计与实现[J].西藏科技,2023,45(09):63-68.
- 沈一敏.基于互联网平台提升博物馆宣传效能分析[J].文化产业,2022,(18):116-118.
- 吴广.基于新媒体平台的公众考古宣传实践与思考[J].文化创新比较研究,2017,1(14):79-80.
- 杜瑛,刘冬杰.基于Spring Boot+Vue的场地预约管理系统的设计[J].电脑知识与技术,2022,18(23):31-32+35.
- Wang Y ,Fan W .Design of Media Industry's Device Reservation Management System Based on Internet of Things[J].Media and Communication Research,2024,5(1):
- Mengdie G ,Rui S ,Shulin Y , et al.Research on copyright appointment registration microplatform system based on vue[J].MATEC Web of Conferences,2022,355
- Jessica E L ,Sanoussi M A Y ,Mehdi E C , et al.A comprehensive review of State-of-The-Art methods for Java code generation from Natural Language Text[J].Natural Language Processing Journal,2023,3
文物管理小程序设计与实现工作已结束,虽然过程中充满挑战,但内心充满自豪和满足。感谢大学四年间教导我的所有老师,他们的专业知识与人生智慧让我成长为能独立完成系统的学生。特别感谢指导老师,他耐心解答疑惑,引导我解决问题,提升自主解决能力。室友和同学们的宝贵建议和支持也让我取得长足进步。未来,我将继续努力追求卓越,不辜负所学所悟和老师期望。坚信坚定信念和不懈努力,未来定能取得更辉煌成就。期待更美好未来!
此外,文物管理小程序设计与实现不仅是技术挑战,挫折和困难是成长的垫脚石,让我更深入理解问题,精确找到解决方案。每次解决问题,都感到满足和自豪。
对于未来,我充满期待和信心。无论道路多崎岖,只要保持坚定信念,持续努力,定能取得更大成就。期待将知识和技能运用到实际中,为社会做出更大贡献。
最后,感谢所有帮助和支持我的人。你们的教诲、鼓励和支持让我有今天的成就。我会继续努力,不辜负期望,为实现更美好的未来而奋斗。

339

被折叠的 条评论
为什么被折叠?



