摘 要
随着信息技术的发展,人们的生活方式和工作模式发生了巨大变化。互联网的普及使得信息的获取和交流变得前所未有的便捷。图书分享作为一种文化交流的方式,也需要与时俱进,采用更先进的技术手段来提高效率和服务质量。传统的图书管理方式通常依赖手工记录或简单的电子表格,这种方式不仅效率低下,而且容易出错。对于大规模的图书分享系统来说,这样的管理模式难以满足用户日益增长的需求。
基于Spring Boot的“启程”图书分享系统,该平台结合了APP应用和MySQL数据库,旨在服务普通用户、荐书官用户和管理员,“启程”图书分享系统实现包含多项关键功能,涵盖系统用户、图书类型管理、图书信息管理、推荐信息管理、荐书官专栏管理、热门图书管理、活动信息管理、报名信息管理、阅读记录管理、在线反馈管理、系统管理(轮播图管理)、网站公告管理、资源管理(新闻资讯、资讯分类)、交流管理等多个领域的管理与互动。通过使用Spring Boot技术框架,实现了快速开发和灵活部署的优势,同时借助APP提供用户友好的交互界面,以及MySQL数据库管理数据持久化与安全性,能够有效支持平台功能的实现与扩展。通过该技术,能够实现平台的快速迭代更新和稳定性维护,确保平台长期稳定运行。
通过本文设计与实现的“启程”图书分享系统,不仅解决了传统图书管理方式存在的问题,还通过引入先进的技术手段提升了系统的功能性和用户体验,同时对文化传播和技术进步有着重要意义。
关键词:“启程”图书分享系统;Spring Boot框架;APP;MySQL
Abstract
With the development of information technology, people's lifestyle and working patterns have changed dramatically. The popularity of the Internet makes the acquisition and exchange of information become unprecedented convenient. As a way of cultural exchange, book sharing also needs to keep pace with The Times and adopt more advanced technical means to improve the efficiency and service quality. Traditional books often rely on manual records or simple spreadsheets, which are not only inefficient but also error-prone. For large-scale book-sharing systems, such a management mode is difficult to meet the growing needs of users.
The "departure" book-sharing system based on the Spring Boot, The platform combines APP applications and the MySQL database, Aim to serve ordinary users, recommendation users and administrators, The "Start" book sharing system includes a number of key functions, Cover system users, book type management, book information management, recommend information management, recommended officer column management, popular book management, information management, registration information management, reading record management, online feedback management, system management (rotation chart management), website announcement management, resource management (news and information, information classification), communication management, and other fields of management and interaction. Through the Spring Boot technology framework, the advantages of rapid development and flexible deployment, while the APP to provide user-friendly interactive interface, as well as MySQL database management data persistence and security, can effectively support the implementation and expansion of platform functions. Through this technology, the rapid iterative update and stability maintenance can be realized to ensure the long-term stable operation of the platform.
The "departure" book sharing system designed and realized in this paper not only solves the problems existing in the traditional book management mode, but also improves the functionality and user experience of the system through the introduction of advanced technical means, which is of great significance to cultural communication and technological progress.
Keywords: "departure" book-sharing system; Spring Boot framework; APP; MySQL
1 前 言
1.1 选题背景
1.2 研究意义
1.3 国内外研究现状
1.3.1 国内研究现状
1.3.2 国外研究现状
1.4 系统的特点
1.5 论文结构与章节安排
2 关键技术
2.1 Java
2.2 MySQL
2.3 Spring Boot框架
2.4 B/S模式
2.5 uni-app
3 系统分析
3.1 可行性分析
3.1.1 技术可行性
3.1.2 经济可行性
3.1.3 操作可行性
3.2 功能需求分析
3.3 系统性能分析
3.4 系统流程分析
3.4.1 程序操作流程
3.4.2 登录流程
3.4.3 注册流程
4 系统设计
4.1 总体设计
4.1.1 框架设计
4.1.2 功能模块设计
4.2 数据库设计
4.2.1 E-R图
4.2.1 数据库表结构设计
5 系统实现
5.1 系统环境分析
5.2 系统前台模块
5.2.1 用户登录界面
5.2.2 用户注册界面
5.2.3 普通用户首页界面
5.2.5 荐书官用户首页界面
5.3 后台管理模块
6 系统测试
6.1 测试目的与意义
6.2 测试用例
6.3 测试分析
7 结束语
参考文献
致 谢
随着信息技术的发展,人们的生活方式和工作模式发生了巨大变化。互联网的普及使得信息的获取和交流变得前所未有的便捷。图书分享作为一种文化交流的方式,也需要与时俱进,采用更先进的技术手段来提高效率和服务质量[1]。
传统的图书管理方式通常依赖手工记录或简单的电子表格,这种方式不仅效率低下,而且容易出错。对于大规模的图书分享系统来说,这样的管理模式难以满足用户日益增长的需求。
Spring Boot作为一个简化了新Spring应用初始搭建以及开发过程的框架,为快速构建独立运行的生产级Spring应用提供了便利[2]。而小程序则提供了一种无需下载安装即可使用的应用形式,非常适合用于构建图书分享平台,因为它能够降低用户的使用门槛,提升用户体验。
设计并实现一个基于Spring Boot框架的家校通系统具有重要的意义:通过采用Spring Boot和小程序技术,可以实现自动化、智能化的图书管理系统,大大提高了图书管理和分享的效率。
利用小程序的优势,用户无需安装额外的应用程序,只需扫描二维码或搜索即可快速访问图书分享平台,享受便捷的服务。
一个设计良好的图书分享系统能够帮助不同地区的读者轻松交换阅读体验和心得,促进了文化的传播和交流。
将现代软件工程技术应用于图书分享领域,不仅能解决实际问题,还能推动相关技术的发展,如云计算、大数据分析等在图书管理中的应用。
数字化图书分享有助于减少纸质书籍的使用,对环境保护具有积极意义,符合可持续发展的理念。
综上所述,“启程”图书分享系统的设计与实现不仅解决了传统图书管理方式存在的问题,还通过引入先进的技术手段提升了系统的功能性和用户体验,同时对文化传播和技术进步有着重要意义。
在国内,随着信息技术的发展,尤其是互联网技术和移动技术的普及,基于Spring Boot的企业级应用开发变得越来越普遍。Spring Boot因其简化配置、快速启动和强大的集成能力,成为了构建现代企业级应用的首选框架之一。许多企业和开发者都倾向于使用Spring Boot来搭建高效、可扩展的应用系统[3]。
同时,微信小程序作为一种轻量级的应用程序,由于其无需下载安装、即用即走的特点,在国内得到了广泛应用和发展。众多企业和开发者利用微信小程序开发了各种类型的应用,包括但不限于电商购物、餐饮服务、社区论坛等,其中也包括一些图书馆服务系统和图书管理平台。
对于图书管理系统而言,传统的图书管理系统多为C/S架构或B/S架构,但随着移动互联网的发展,越来越多的图书管理系统开始向移动端迁移,或者增加微信小程序端以提供更便捷的服务[4]。
在国际上,Spring Boot同样受到广泛的关注和应用。它不仅被用于构建企业内部的信息系统,也被应用于开发面向公众的服务平台。此外,Spring Boot还经常与其他技术如云计算、大数据分析等结合使用,以满足不同业务场景的需求[5]。
至于小程序,虽然微信小程序主要在中国大陆流行,但类似的概念和技术也在全球范围内得到发展,例如Facebook的Instant Games、Google的Progressive Web Apps (PWA)等,这些技术都旨在提供一种无需下载即可使用的轻量级应用体验。
对于图书管理系统,国际上的研究更多地集中在如何通过先进的技术手段提高图书馆的自动化水平和服务质量,如采用RFID技术实现自助借还书服务,利用大数据和人工智能技术提升图书推荐系统的准确性等[6]。
(1)“启程”图书分享系统中的web后台管理中的后端不再使用古老的jsp+javabean+servlet技术,而是使用当前主流的Spring Boot框架,它减少Java配置代码,简化编程代码,目前Spring Boot框架也是很多企业选择的框架之一。
(2)“启程”图书分享系统中的前端使用的是uni-app框架,它是使用Vue.js 开发所有前端应用的框架,可应用多平台,性能优秀,周边生态丰富且开发学习成本低。
(3)“启程”图书分享系统中数据库用的MySQL,它执行效率高,运行速度快,安全性能也很高,同时无平台限制。
本文共分为七章,章节内容安排如下:
第一章:引言,主要介绍“启程”图书分享系统领域研究的背景和意义,概述研究的现状和系统特点。
第二章:关键技术,主要探讨和说明实现“启程”图书分享系统的关键技术。
第三章:系统分析,主要从“启程”图书分享系统的可行性、功能、性能等方面进行分析,为后续系统设计提供理论支持。
第四章:系统设计,主要对“启程”图书分享系统功能模块、数据库进行功能设计。
第五章:系统实现,主要介绍了“启程”图书分享系统各个顾客用户的功能、系统界面的实现。
第六章:系统测试,主要对“启程”图书分享系统进行测试,验证功能完整性、稳定性和安全性,评估系统在实际运行中的性能表现。
第七章:结束语。总结全文研究内容,提出对“启程”图书分享系统的展望和建议,指出研究的不足和可优化之处,为相关领域的进一步探索提供参考。
Java是一种跨平台的编程语言,广泛用于开发各种类型的应用程序,包括Web应用、移动应用和大型软件系统。在“启程”图书分享系统中,Java通常用于后端开发,提供强大的处理能力和稳定性。同时Java是一种面向对象的编程语言,支持封装、继承和多态等特性,使代码更易于维护和重用。还拥有丰富的标准库和第三方框架,如Spring、Hibernate等,可以大大提高开发效率。
MySQL是一种流行的开源关系型数据库管理系统,用于存储和管理数据。在“启程”图书分享系统中,MySQL可以用于数据存储、数据查询和数据管理等方面,用户可以免费使用和修改源代码,为平台提供可靠和高性能的数据库支持。MySQL支持多种存储引擎,如InnoDB和MyISAM,可以根据不同的应用场景选择合适的存储引擎,以提高性能;提供了多种数据安全机制,如用户权限管理、数据加密和备份恢复等,确保数据的安全性。
Spring Boot是一个用于构建微服务的Java框架,简化了Spring应用程序的开发和部署过程。Spring Boot通过自动配置和约定优于配置的理念,简化了Spring应用程序的开发过程,使开发者可以更快地构建和部署应用程序;拥有丰富的生态系统,如Spring Cloud、Spring Security等,可以满足各种企业级应用的需求。在“启程”图书分享系统中,Spring Boot可以帮助开发团队快速搭建后端服务,并实现各种功能模块的集成和管理。
B/S模式(Browser/Server模式)是一种网络应用架构,其中浏览器(Browser)作为客户端与服务器(Server)进行通信。这种模式使用户可以通过普通的Web浏览器访问应用程序,而无需安装额外的客户端软件。用户通过浏览器发送请求,服务器接收并处理这些请求,然后将结果返回给浏览器显示给用户。在“启程”图书分享系统中,uni-app结合B/S模式B/S模式的优势包括跨平台的兼容性,用户可以在不同操作系统和设备上访问应用程序。此外,维护和部署也更为简便,并且能够实现较高的安全性,因为服务器端控制了应用程序和数据的访问权限。
uni-app是一个跨平台的应用开发框架,可以同时用于开发微信小程序、H5应用、Android和iOS应用等,减少了开发成本和时间。uni-app提供了丰富的组件库和插件,可以快速构建各种功能模块,提高开发效率。通过优化渲染引擎和网络请求,提高了应用程序的性能和用户体验。App端支持原生渲染,可支撑更流畅的用户体验。小程序端的性能优于市场其他框架。同时基于通用的前端技术栈,采用vue语法+微信小程序api,无额外学习成本。
从技术角度来看,Spring Boot作为一种轻量级、快速构建的Java框架,能够提高开发效率,降低系统的复杂程度,易于维护和升级。同时,MySQL作为关系型数据库,能够支持平台数据的存储与管理,保障系统的稳定性和高效性。因此,本系统具有技术可行性。
从经济角度来看,基于Spring Boot搭建“启程”图书分享系统的投入成本相对较低,因为Spring Boot本身是一个免费、开源的框架,可以节省开发成本。同时,使用MySQL作为数据库也具有成本效益高的优势。APP作为平台的使用界面,能够更好地吸引用户参与,从而提升平台的商业化价值,增加商业合作和广告推广等收入来源。因此,本系统具有经济可行性。
从操作角度来看,Spring Boot的简洁性和高度集成的特点使得系统的部署和运行相对简单,容易维护和管理。同时,APP作为用户主要的操作入口,有利于用户体验的优化,提升用户的参与度和留存率。因此,本系统具有操作可行性。
综合来看,基于Spring Boot的“启程”图书分享系统的设计与实现在经济、技术、操作等方面都具有较高的可行性,能够为用户提供便捷的服务,促进图书分享的理念。
本系统可以分为:普通用户、荐书官用户和管理员三大角色。
前台APP端:系统前台用户可以划分为普通用户、荐书官用户等使用者,主要包括首页(推荐、图书信息、鉴书官专栏、热门图书、活动信息、在线交流)、交流论坛、新闻资讯、我的(基本信息、收藏、评论、统计、报名信息、阅读记录、在线反馈、推荐信息、交流论坛)等功能。
后台管理端:管理员可登录系统后台进行管理,拥有系统用户、图书类型管理、图书信息管理、推荐信息管理、荐书官专栏管理、热门图书管理、活动信息管理、报名信息管理、阅读记录管理、在线反馈管理、系统管理(轮播图管理)、网站公告管理、资源管理(新闻资讯、资讯分类)、交流管理等功能。
普通用户角色用例如下图所示。
-
-
-
-
-
- 普通用户用例图
-
-
-
-
系统前台APP端普通用户具体功能说明如下所示。
- 注册登录:游客可以通过注册成为系统用户,使用账号密码可登录系统前台,使用系统功能。
- 首页:普通用户登录系统后首先进入首页界面,可查看轮播图、推荐、图书信息、鉴书官专栏、热门图书、活动信息、在线交流等信息和其他系统功能导航栏。
- 交流论坛:普通用户可发布交流信息,并支持搜索其他交流信息,可点击查看详情,可点赞、收藏和评论某一交流信息。
- 新闻资讯:普通用户可查看管理员发布的所有新闻资讯信息,支持搜索文章,可点击查看详情,可点赞、收藏和评论某一新闻资讯。
- 我的:普通用户可对基本信息、收藏、评论、统计、报名信息、阅读记录、在线反馈、交流论坛等信息进行管控。
荐书官用户角色用例如下图所示。
-
-
-
-
-
- 荐书官用户用例图
-
-
-
-
系统前台APP端荐书官用户具体功能说明如下所示。
- 登录:荐书官用户使用管理员添加的账号密码可进行登录系统前台,使用系统功能。
- 首页:荐书官用户登录系统后首先进入首页界面,可查看轮播图、推荐、图书信息、鉴书官专栏、热门图书、活动信息、在线交流等信息和其他系统功能导航栏。
- 交流论坛:荐书官用户可发布交流信息,并支持搜索其他交流信息,可点击查看详情,可点赞、收藏和评论某一交流信息。
- 新闻资讯:荐书官用户可查看管理员发布的所有新闻资讯信息,支持搜索文章,可点击查看详情,可点赞、收藏和评论某一新闻资讯。
- 我的:荐书官用户可对基本信息、收藏、评论、推荐信息、交流论坛等信息进行管控。
管理员角色用例如下图所示。
、
-
-
-
-
-
- 管理员用例图
-
-
-
-
系统后台管理端管理员具体功能说明如下所示。
- 登录:管理员账号密码由系统生成,可使用账号密码可进行登录系统后台,使用系统功能进行管理,并可对自己的个人信息和密码进行管控。
- 系统用户:管理员可对普通用户、荐书官用户和管理员等用户信息进行管控,包括进行增删改查操作,可点击详情进行查阅,荐书官用户的账号信息需管理员添加。
- 图书类型管理:管理平台上存在的图书分类。
- 图书信息管理:对图书的信息进行增删改查操作。
- 推荐信息管理:管理和更新首页推荐的图书信息。
- 荐书官专栏管理:负责荐书官发布的文章或视频内容的审核与发布。
- 热门图书管理:按点击量来管理显示在热门图书板块的内容。
- 活动信息管理:发布、编辑和删除各类线上线下活动的信息。
- 报名信息管理:查看并处理用户的活动报名信息。
- 阅读记录管理:查看用户的阅读历史记录。
- 在线反馈管理:收集并回复用户的反馈意见。
- 系统管理:管理员可管理首页轮播图片。
- 网站公告管理:发布或修改重要公告。
- 资源管理:管理员可对新闻资讯、资讯分类进行管理,进行增删改查操作,新闻资讯支持标题搜索,可点击详情和查看评论进行查阅;资讯分类支持类型名称搜索。
- 交流管理:管理员可对交流论坛、论坛分类进行管理,进行增删改查操作,并可监督所有用户的交流信息。
对于Spring Boot“启程”图书分享系统的设计与实现,下面是系统性能分析表:
-
-
-
-
- 性能需求表
-
-
-
项目 |
内容 |
响应时间 |
系统对用户请求的响应时间需在500ms以内 |
并发用户数 |
系统需要支持1000个并发用户同时访问 |
吞吐量 |
系统每秒需要处理1000个请求 |
可用性 |
系统需要保证每月99.9%的可用性 |
数据安全 |
用户敏感数据需要加密存储,并支持数据库备份和恢复 |
数据一致性 |
系统中的数据操作需保证ACID特性,确保数据一致性 |
扩展性 |
系统需要支持水平扩展,能够方便地增加服务器节点以应对高请求量 |
可维护性 |
系统代码需要清晰易懂、结构良好,方便团队成员维护和修改 |
日志记录 |
系统需要记录用户操作日志、异常日志以及系统运行日志 |
监控报警 |
系统需要实时监控运行状态,当系统异常时能够及时发送警报通知相关人员 |
缓存设置 |
针对频繁使用的数据,系统需要进行合适的缓 |
用户访问平台网站,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如下图所示。
用户访问平台的网站,进入登录页面页面,入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如下图所示。
未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如下图所示。
-
-
-
-
-
- 注册流程图
-
-
-
-
B/S架构,即浏览器/服务器架构,是一种基于Web的分布式计算范式。在此架构中,应用程序的逻辑被巧妙地区分为客户端和服务器两部分。具体而言,客户端借助广泛使用的浏览器界面,进行应用访问与操作;而服务器端则肩负起业务逻辑处理、数据存储及管理的核心职责。值得一提的是,客户端无需安装特定的软件,用户仅需通过浏览器输入相应的URL地址,即可轻松访问应用程序,这一特性极大地提升了用户的使用便捷性和系统的维护效率。服务器端通常采用高性能的计算机和数据库系统,能够处理大量并发请求和复杂的业务逻辑。B/S架构的优势在于其跨平台性和易于维护性,开发者可以通过更新服务器端的代码来实现整个系统的升级和维护,而无需逐一更新客户端。
功能模块设计是系统开发过程中的重要阶段,它旨在将系统划分为不同的模块,每个模块负责完成特定的功能或任务。“启程”图书分享系统由多个功能模块组成,每个模块下又包含具体的功能操作。功能模块图如下图所示。
E-R图有助于理清系统中的数据结构和关系,为后续的数据库表结构设计提供指导。在进行数据库设计之前,首先需要先绘制实体-关系(E-R)图。E-R图将帮助我们理清业务中的实体(Entity)及它们之间的关系(Relationship),从而为后续的数据库表设计提供基础。根据前文可以得出本“启程”图书分享系统拥有多个实体,在此列举主要实体,各个实体之间联系总E-R图如下图所示。
在E-R图确定后,接下来可以根据实体和关系的属性设计数据库表结构。在E-R图明确了实体和它们之间的关系后,接下来可以开始设计数据库表结构。每个实体对应一个数据库表,每个属性对应表中的字段。如下列表格所示,在此列举主要数据表。
表 4-1-access_token(登陆访问时长)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
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-activity_information(活动信息)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
activity_information_id |
int |
是 |
是 |
活动信息ID | |
2 |
activity_name |
varchar |
64 |
否 |
否 |
活动名称 |
3 |
activity_type |
varchar |
64 |
否 |
否 |
活动类型 |
4 |
cover_image |
varchar |
255 |
否 |
否 |
封面图片 |
5 |
activity_time |
varchar |
64 |
否 |
否 |
活动时间 |
6 |
activity_location |
varchar |
64 |
否 |
否 |
活动地点 |
7 |
read_books_together |
text |
65535 |
否 |
否 |
共读书籍 |
8 |
activity_details |
longtext |
4294967295 |
否 |
否 |
活动详情 |
9 |
hits |
int |
是 |
否 |
点击数 | |
10 |
praise_len |
int |
是 |
否 |
点赞数 | |
11 |
collect_len |
int |
是 |
否 |
收藏数 | |
12 |
comment_len |
int |
是 |
否 |
评论数 | |
13 |
enrollment_information_limit_times |
int |
是 |
否 |
报名限制次数 | |
14 |
create_time |
datetime |
是 |
否 |
创建时间 | |
15 |
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-book_information(图书信息)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
book_information_id |
int |
是 |
是 |
图书信息ID | |
2 |
book_name |
varchar |
64 |
否 |
否 |
图书名称 |
3 |
book_type |
varchar |
64 |
否 |
否 |
图书类型 |
4 |
cover_image |
varchar |
255 |
否 |
否 |
封面图片 |
5 |
authors_name |
varchar |
64 |
否 |
否 |
作者姓名 |
6 |
work_status |
varchar |
64 |
否 |
否 |
作品状态 |
7 |
publishing_house |
varchar |
64 |
否 |
否 |
出版社 |
8 |
section_number_of_general_chapter |
varchar |
64 |
否 |
否 |
总章节数 |
9 |
book_introduction |
longtext |
4294967295 |
否 |
否 |
图书简介 |
10 |
hits |
int |
是 |
否 |
点击数 | |
11 |
praise_len |
int |
是 |
否 |
点赞数 | |
12 |
collect_len |
int |
是 |
否 |
收藏数 | |
13 |
comment_len |
int |
是 |
否 |
评论数 | |
14 |
recommend |
int |
是 |
否 |
智能推荐 | |
15 |
recommend_information_limit_times |
int |
是 |
否 |
推荐限制次数 | |
16 |
reading_records_limit_times |
int |
是 |
否 |
记录限制次数 | |
17 |
create_time |
datetime |
是 |
否 |
创建时间 | |
18 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-7-book_judge_column(鉴书官专栏)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
book_judge_column_id |
int |
是 |
是 |
鉴书官专栏ID | |
2 |
book_name |
varchar |
64 |
否 |
否 |
图书名称 |
3 |
book_type |
varchar |
64 |
否 |
否 |
图书类型 |
4 |
cover_image |
varchar |
255 |
否 |
否 |
封面图片 |
5 |
authors_name |
varchar |
64 |
否 |
否 |
作者姓名 |
6 |
work_status |
varchar |
64 |
否 |
否 |
作品状态 |
7 |
publishing_house |
varchar |
64 |
否 |
否 |
出版社 |
8 |
section_number_of_general_chapter |
varchar |
64 |
否 |
否 |
总章节数 |
9 |
book_introduction |
longtext |
4294967295 |
否 |
否 |
图书简介 |
10 |
hits |
int |
是 |
否 |
点击数 | |
11 |
praise_len |
int |
是 |
否 |
点赞数 | |
12 |
collect_len |
int |
是 |
否 |
收藏数 | |
13 |
comment_len |
int |
是 |
否 |
评论数 | |
14 |
create_time |
datetime |
是 |
否 |
创建时间 | |
15 |
update_time |
timestamp |
是 |
否 |
更新时间 | |
16 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
17 |
source_id |
int |
否 |
否 |
来源ID | |
18 |
source_user_id |
int |
否 |
否 |
来源用户 |
表 4-8-book_type(图书类型)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
book_type_id |
int |
是 |
是 |
图书类型ID | |
2 |
book_type |
varchar |
64 |
否 |
否 |
图书类型 |
3 |
create_time |
datetime |
是 |
否 |
创建时间 | |
4 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-9-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-10-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-11-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-12-enrollment_information(报名信息)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
enrollment_information_id |
int |
是 |
是 |
报名信息ID | |
2 |
activity_name |
varchar |
64 |
否 |
否 |
活动名称 |
3 |
activity_type |
varchar |
64 |
否 |
否 |
活动类型 |
4 |
activity_time |
varchar |
64 |
否 |
否 |
活动时间 |
5 |
activity_location |
varchar |
64 |
否 |
否 |
活动地点 |
6 |
ordinary_user |
int |
否 |
否 |
普通用户 | |
7 |
user_name |
varchar |
64 |
否 |
否 |
用户姓名 |
8 |
registration_date |
date |
否 |
否 |
报名日期 | |
9 |
registration_remarks |
text |
65535 |
否 |
否 |
报名备注 |
10 |
activity_status |
varchar |
64 |
否 |
否 |
活动状态 |
11 |
create_time |
datetime |
是 |
否 |
创建时间 | |
12 |
update_time |
timestamp |
是 |
否 |
更新时间 | |
13 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
14 |
source_id |
int |
否 |
否 |
来源ID | |
15 |
source_user_id |
int |
否 |
否 |
来源用户 |
表 4-13-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-14-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-15-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-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-novel_chapters(小说章节)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
novel_chapters_id |
int |
是 |
是 |
小说章节ID | |
2 |
chapter_name |
varchar |
64 |
否 |
否 |
章节名称 |
3 |
sort |
int |
否 |
否 |
排序 | |
4 |
chapter_content |
longtext |
4294967295 |
否 |
否 |
章节内容 |
5 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
6 |
source_field |
varchar |
255 |
否 |
否 |
来源字段 |
7 |
novel_reading_id |
int |
否 |
否 |
小说ID | |
8 |
create_time |
datetime |
是 |
否 |
创建时间 | |
9 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-18-online_feedback(在线反馈)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
online_feedback_id |
int |
是 |
是 |
在线反馈ID | |
2 |
title_name |
varchar |
64 |
否 |
否 |
标题名称 |
3 |
type_of_feedback |
varchar |
64 |
否 |
否 |
反馈类型 |
4 |
feedback_user |
int |
否 |
否 |
反馈用户 | |
5 |
feedback_date |
date |
否 |
否 |
反馈日期 | |
6 |
feedback_content |
text |
65535 |
否 |
否 |
反馈内容 |
7 |
examine_state |
varchar |
16 |
是 |
否 |
审核状态 |
8 |
examine_reply |
varchar |
255 |
否 |
否 |
审核回复 |
9 |
create_time |
datetime |
是 |
否 |
创建时间 | |
10 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-19-ordinary_user(普通用户)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
ordinary_user_id |
int |
是 |
是 |
普通用户ID | |
2 |
user_name |
varchar |
64 |
否 |
否 |
用户姓名 |
3 |
user_age |
varchar |
64 |
否 |
否 |
用户年龄 |
4 |
user_gender |
varchar |
64 |
否 |
否 |
用户性别 |
5 |
examine_state |
varchar |
16 |
是 |
否 |
审核状态 |
6 |
user_id |
int |
是 |
否 |
用户ID | |
7 |
create_time |
datetime |
是 |
否 |
创建时间 | |
8 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-20-popular_books(热门图书)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
popular_books_id |
int |
是 |
是 |
热门图书ID | |
2 |
book_name |
varchar |
64 |
否 |
否 |
图书名称 |
3 |
book_type |
varchar |
64 |
否 |
否 |
图书类型 |
4 |
cover_image |
varchar |
255 |
否 |
否 |
封面图片 |
5 |
authors_name |
varchar |
64 |
否 |
否 |
作者姓名 |
6 |
work_status |
varchar |
64 |
否 |
否 |
作品状态 |
7 |
publishing_house |
varchar |
64 |
否 |
否 |
出版社 |
8 |
section_number_of_general_chapter |
varchar |
64 |
否 |
否 |
总章节数 |
9 |
book_introduction |
longtext |
4294967295 |
否 |
否 |
图书简介 |
10 |
hits |
int |
是 |
否 |
点击数 | |
11 |
praise_len |
int |
是 |
否 |
点赞数 | |
12 |
collect_len |
int |
是 |
否 |
收藏数 | |
13 |
comment_len |
int |
是 |
否 |
评论数 | |
14 |
recommend |
int |
是 |
否 |
智能推荐 | |
15 |
create_time |
datetime |
是 |
否 |
创建时间 | |
16 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-21-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-22-reading_records(阅读记录)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
reading_records_id |
int |
是 |
是 |
阅读记录ID | |
2 |
book_name |
varchar |
64 |
否 |
否 |
图书名称 |
3 |
book_type |
varchar |
64 |
否 |
否 |
图书类型 |
4 |
authors_name |
varchar |
64 |
否 |
否 |
作者姓名 |
5 |
ordinary_user |
int |
否 |
否 |
普通用户 | |
6 |
user_name |
varchar |
64 |
否 |
否 |
用户姓名 |
7 |
duration_unit |
varchar |
64 |
否 |
否 |
时长单位 |
8 |
reading_duration |
double |
否 |
否 |
阅读时长 | |
9 |
record_date |
date |
否 |
否 |
记录日期 | |
10 |
note_information |
text |
65535 |
否 |
否 |
备注信息 |
11 |
create_time |
datetime |
是 |
否 |
创建时间 | |
12 |
update_time |
timestamp |
是 |
否 |
更新时间 | |
13 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
14 |
source_id |
int |
否 |
否 |
来源ID | |
15 |
source_user_id |
int |
否 |
否 |
来源用户 |
表 4-23-recommendation_officer_user(荐书官用户)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
recommendation_officer_user_id |
int |
是 |
是 |
荐书官用户ID | |
2 |
name_of_personnel |
varchar |
64 |
否 |
否 |
人员姓名 |
3 |
age_of_personnel |
varchar |
64 |
否 |
否 |
人员年龄 |
4 |
gender_of_staff |
varchar |
64 |
否 |
否 |
人员性别 |
5 |
examine_state |
varchar |
16 |
是 |
否 |
审核状态 |
6 |
user_id |
int |
是 |
否 |
用户ID | |
7 |
create_time |
datetime |
是 |
否 |
创建时间 | |
8 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-24-recommend_information(推荐信息)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
recommend_information_id |
int |
是 |
是 |
推荐信息ID | |
2 |
book_name |
varchar |
64 |
否 |
否 |
图书名称 |
3 |
book_type |
varchar |
64 |
否 |
否 |
图书类型 |
4 |
authors_name |
varchar |
64 |
否 |
否 |
作者姓名 |
5 |
recommend_user |
int |
否 |
否 |
推荐用户 | |
6 |
name_of_personnel |
varchar |
64 |
否 |
否 |
人员姓名 |
7 |
recommend_date |
date |
否 |
否 |
推荐日期 | |
8 |
reasons_for_recommend |
text |
65535 |
否 |
否 |
推荐理由 |
9 |
examine_state |
varchar |
16 |
是 |
否 |
审核状态 |
10 |
examine_reply |
varchar |
255 |
否 |
否 |
审核回复 |
11 |
book_judge_column_limit_times |
int |
是 |
否 |
发布限制次数 | |
12 |
create_time |
datetime |
是 |
否 |
创建时间 | |
13 |
update_time |
timestamp |
是 |
否 |
更新时间 | |
14 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
15 |
source_id |
int |
否 |
否 |
来源ID | |
16 |
source_user_id |
int |
否 |
否 |
来源用户 |
表 4-25-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-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_chat_friend(聊天用户好友)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
user_chat_friend_id |
int |
是 |
是 |
ID | |
2 |
user_id |
int |
是 |
否 |
用户ID | |
3 |
friend_user_id |
int |
是 |
否 |
用户好友ID | |
4 |
friend_user_name |
varchar |
255 |
否 |
否 |
好友名称 |
5 |
create_time |
timestamp |
是 |
否 |
创建时间 | |
6 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-29-user_chat_group(聊天用户群聊)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
user_chat_group_id |
int |
是 |
是 |
ID | |
2 |
group_id |
int |
否 |
否 |
群聊ID | |
3 |
group_name |
varchar |
255 |
否 |
否 |
群聊名称 |
4 |
user_id |
int |
否 |
否 |
用户ID | |
5 |
create_time |
timestamp |
是 |
否 |
创建时间 | |
6 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-30-user_chat_read(聊天用户消息)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
user_chat_read_id |
varchar |
255 |
是 |
是 |
ID |
2 |
user_id |
int |
否 |
否 |
接收人ID | |
3 |
send_user_id |
int |
否 |
否 |
发送人ID | |
4 |
group_id |
int |
否 |
否 |
群聊ID | |
5 |
type |
int |
否 |
否 |
类型1-点对点消息,2-群聊消息 | |
6 |
create_time |
timestamp |
否 |
否 |
时间 | |
7 |
message |
text |
65535 |
否 |
否 |
消息 |
表 4-31-user_group(用户组)
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
1 |
group_id |
mediumint |
是 |
是 |
用户组ID | |
2 |
display |
smallint |
是 |
否 |
显示顺序 | |
3 |
name |
varchar |
16 |
是 |
否 |
名称 |
4 |
description |
varchar |
255 |
否 |
否 |
描述 |
5 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
6 |
source_field |
varchar |
255 |
否 |
否 |
来源字段 |
7 |
source_id |
int |
是 |
否 |
来源ID | |
8 |
register |
smallint |
否 |
否 |
注册位置 | |
9 |
create_time |
timestamp |
是 |
否 |
创建时间 | |
10 |
update_time |
timestamp |
是 |
否 |
更新时间 |
考虑到“启程”图书分享系统主要面对部分人群,网站的访问量不大。系统处理、统计分析工作简单,Tomcat服务器能够满足中小型网络用户的数据处理,通过互联网Internet 接入及MySQL 5.6以上的数据库应用的需求点。系统具体开发环境如下表所示:
-
-
-
-
- 系统环境表
-
-
-
项目 |
开发环境 |
操作系统 |
Windows 11、Windows 10、Windows 8、Windows 7 |
开发语言 |
Java |
使用框架 |
Spring Boot、uni-app |
体系结构 |
三层B/S体系结构 |
开发工具 |
IDEA(2020版)/MyEclipse(2017)/Eclipse、Vs Code |
数据库 |
MySQL 5.6以上 |
数据库管理工具 |
Navicat |
JDK版本 |
Java 1.8 |
Maven |
apache-maven 3.6.1-bin |
Tomcat |
apache-tomcat-7.0.88 |
移动端 |
iOS、Android、Web(响应式)、以及各种小程序 |
用户输入用户名和密码后,系统首先对这些输入进行基本的格式验证,确保用户名和密码符合系统设定的格式要求(如长度、特殊字符要求等)。系统接收到用户输入后,会根据用户名查找系统中存储的用户信息数据库或者其他持久化存储方式。系统需要验证密码的正确性,验证成功即可成功登录。
-
-
-
-
-
- 用户登录界面设计
-
-
-
-
登录关键代码如下:
/**
* 登录
* @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, "账号或密码不正确");
}
}
用户注册时,系统要求用户提供必要的信息,例如用户名、密码、电子邮件地址等。这些信息通常由用户在注册表单中输入,并通过前端验证确保格式的正确性。注册过程完成后,系统会为新用户创建一个账户。这包括分配一个唯一的用户ID和设置初始的权限或者角色。
-
-
-
-
-
- 用户注册界面设计
-
-
-
-
注册关键代码如下:
/**
* 注册
* @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);
}
普通用户登录系统后首先进入首页界面,可查看轮播图、网站公告、推荐、图书信息、鉴书官专栏、热门图书、活动信息、在线交流等信息和其他系统功能导航栏。
例如,普通用户前台首页主界面图如下所示。
-
-
-
-
-
- 普通用户首页主界面设计
-
-
-
-
例如,普通用户前台首页鉴书官专栏界面图如下所示。
-
-
-
-
-
- 普通用户鉴书官专栏界面设计
-
-
-
-
例如,普通用户前台首页活动信息界面图如下所示。
-
-
-
-
-
- 普通用户活动信息界面设计
-
-
- 普通用户我的界面
-
-
普通用户可对基本信息、收藏、评论、统计、报名信息、阅读记录、在线反馈、交流论坛等信息进行管控。例如,普通用户我的主界面图如下所示。
-
-
-
-
-
- 普通用户我的主界面设计
-
-
-
-
例如,普通用户我的阅读记录界面图如下所示。
-
-
-
-
-
- 普通用户阅读记录界面设计
-
-
-
-
荐书官用户登录系统后首先进入首页界面,可查看轮播图、网站公告、留言信息、教师请假、活动信息、推荐信息、新闻资讯等信息和其他系统功能导航栏。
例如,荐书官用户前台首页主界面图如下所示。
-
-
-
-
-
- 荐书官用户首页主界面设计
-
-
-
-
例如,荐书官用户前台首页图书信息界面图如下所示。
-
-
-
-
-
- 荐书官用户图书信息界面设计
-
-
- 荐书官用户我的界面
-
-
荐书官用户可对基本信息、收藏、评论、推荐信息、交流论坛等信息进行管控。
例如,荐书官用户我的主界面图如下所示。
-
-
-
-
-
- 荐书官用户我的主界面设计
-
-
-
-
例如,荐书官用户我的推荐信息界面图如下所示。
管理员可对普通用户、荐书官用户和管理员等用户信息进行管控,包括进行增删改查操作,可点击详情进行查阅,荐书官用户的账号信息由管理员添加生成。
-
-
-
-
-
- 系统用户界面设计
-
-
-
-
添加系统用户信息关键代码:
@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);
}
-
-
- 图书信息管理界面
-
管理员可查看所有图书信息,进行增改删查操作,支持图书名称、图书类型、作者姓名搜索,可点击详情、评论和内容设置操作。
-
-
-
-
-
- 图书信息管理界面设计
-
-
- 荐书官专栏管理界面
-
-
管理员可查看所有荐书官专栏信息,进行查询和删除操作,支持图书名称、图书类型、作者姓名搜索,可进行详情、评论和内容设置等操作。
-
-
-
-
-
- 荐书官专栏管理界面设计
-
-
- 系统管理界面
-
-
管理员可对轮播图信息进行管理,进行增删改查操作,支持标题搜索,可点击详情进行查阅。
-
-
-
-
-
- 系统管理界面设计
-
-
-
-
上传图片关键代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
-
-
- 资源管理界面
-
管理员可对新闻资讯、资讯分类进行管理,进行增删改查操作,新闻资讯支持标题、标签、分类搜索,可点击详情和查看评论进行查阅;资讯分类支持类型名称搜索。
-
-
-
-
-
- 资源管理界面设计
-
-
-
-
在软件开发生命周期中,系统测试占据着举足轻重的地位。通过进行全面而系统的测试,我们能够确保软件在实际使用环境中具备稳定运行的能力,从而满足用户的多样化需求,并显著提升软件的整体质量与可靠性。这一过程不仅有助于识别并修复潜在问题,还能为软件的持续优化提供有力支撑。
随着现代信息的快速发展,在社会各大领域中已经都开始应用网络信息技术,在应用网络技术的同时人们也开始把软件的质量问题作为了一个重要焦点来关注,因为一个软件的好与坏它决定着这个系统在市场上的生存,所以我们必须要把软件质量来做好,这样才有一定的生存能力。对于用户来说它们首先选用的都是保证这个系统软件的质量问题,因为一个系统的软件质量决定着用户在后期上成本经济的问题。图6-1就是纠错测试流程。
-
-
-
-
-
- 测试与纠错信息流程
-
-
-
-
在系统的功能验证阶段,我们将对全部的功能界面进行全面测试。具体而言,我们将模拟用户行为,输入各类数据并进行提交操作,随后仔细观察和分析每个页面的响应反馈。这一过程旨在验证系统的功能完整性,确保页面所呈现的功能与预期相符,并能够完全实现预设的交互逻辑。通过这种全面细致的测试方法,我们将确保系统在实际应用中能够稳定、准确地响应用户需求。
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
-
-
-
-
- 系统登录功能测试用例
-
-
-
功能描述 |
用于系统登录 | |
测试目的 |
检测登录时的合法性检查 | |
测试数据以及操作 |
预期结果 |
实际结果 |
输入的用户名和密码带有非法字符 |
提示用户名或者密码错误 |
与预期结果一致 |
输入的用户名或者密码为空 |
提示用户名或者密码错误 |
与预期结果一致 |
输入的用户名和密码不存在 |
提示用户名或者密码错误 |
与预期结果一致 |
输入正确的用户名和密码 |
登录成功 |
与预期结果一致 |
下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
-
-
-
-
- 注册功能测试用例
-
-
-
功能描述 |
用于用户注册 | |
测试目的 |
检测用户注册时的合法性检查 | |
测试数据以及操作 |
预期结果 |
实际结果 |
输入的手机号不合法 |
提示请输入正确的手机号码 |
与预期结果一致 |
输入的字段为空 |
提示必填项不能为空 |
与预期结果一致 |
输入的密码少于6位 |
提示密码必须为6-12位 |
与预期结果一致 |
输入的密码大于12位 |
提示密码必须为6-12位 |
与预期结果一致 |
下表是图书信息管理功能的测试用例,检测了图书信息中对图书信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员登录系统。
-
-
-
-
- 图书信息管理的测试用例
-
-
-
功能描述 |
用于图书信息 | |
测试目的 |
检测图书信息时的各种操作的运行情况 | |
测试数据以及操作 |
预期结果 |
实际结果 |
点击添加图书信息,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
点击添加图书信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改图书信息,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改图书信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击删除图书信息,选择图书信息删除 |
提示删除成功 |
与预期结果一致 |
点击搜索图书信息,输入存在的图书信息名 |
查找出相应图书信息 |
与预期结果一致 |
点击搜索图书信息,输入不存在的学生名称 |
不显示图书信息 |
与预期结果一致 |
下表是阅读记录管理功能的测试用例,检测了阅读记录中对阅读记录的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员、普通用户登录系统。
-
-
-
-
- 阅读记录管理的测试用例
-
-
-
功能描述 |
用于阅读记录 | |
测试目的 |
检测阅读记录时的各种操作的运行情况 | |
测试数据以及操作 |
预期结果 |
实际结果 |
点击添加阅读记录,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
点击添加阅读记录,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改阅读记录,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改阅读记录,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击删除阅读记录,选择阅读记录删除 |
提示删除成功 |
与预期结果一致 |
点击搜索阅读记录,输入存在的阅读记录名 |
查找出相应阅读记录信息 |
与预期结果一致 |
点击搜索阅读记录,输入不存在的阅读记录名 |
不显示阅读记录信息 |
与预期结果一致 |
下表是活动信息管理功能的测试用例,检测了活动信息中对活动信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员登录系统。
-
-
-
-
- 活动信息管理的测试用例
-
-
-
功能描述 |
用于活动信息 | |
测试目的 |
检测活动信息时的各种操作的运行情况 | |
测试数据以及操作 |
预期结果 |
实际结果 |
点击添加活动信息,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
点击添加活动信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改活动信息,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改活动信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击删除活动信息,选择活动信息删除 |
提示删除成功 |
与预期结果一致 |
点击搜索活动信息,输入存在的活动信息名称 |
查找出相应活动信息信息 |
与预期结果一致 |
点击搜索活动信息,输入不存在的活动信息名称 |
不显示活动信息信息 |
与预期结果一致 |
下表是推荐信息管理功能的测试用例,检测了推荐信息中对推荐信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;管理员、荐书官用户登录系统。
-
-
-
-
- 推荐信息管理的测试用例
-
-
-
功能描述 |
用于推荐信息 | |
测试目的 |
检测推荐信息时的各种操作的运行情况 | |
测试数据以及操作 |
预期结果 |
实际结果 |
点击添加推荐信息,必填项合法输入,点击保存 |
提示添加成功 |
与预期结果一致 |
点击添加推荐信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改推荐信息,必填项修改为空,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击修改推荐信息,必填项输入不合法,点击保存 |
提示必填项不能为空 |
与预期结果一致 |
点击删除推荐信息,选择推荐信息删除 |
提示删除成功 |
与预期结果一致 |
点击搜索推荐信息,输入存在的推荐信息名称 |
查找出相应推荐信息信息 |
与预期结果一致 |
点击搜索推荐信息,输入不存在的推荐信息名称 |
不显示推荐信息信息 |
与预期结果一致 |
本“启程”图书分享系统开发与设计满足相关信息的管理需求,在设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了管理员以及会员能够方便操作。系统的主要特点和优点归纳如下:
(1)本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给客户带来了极大的方便。
(2)该“启程”图书分享系统开发与设计内容全面,管理方便可以及时的全面的处理各种错误,异常,这样避免了很多因客户的马虎操作而出现的失误,其操作方便,会员界面友好,能够上网的人都可以很好的进行操作。
经过对上述的测试结果分析,所有基本功能齐全,操作简单,系统运行性能良好,系统安全可靠,能促进APP管理的发展,发展前景广阔。
通过开发“启程”图书分享系统,我深刻体会到软件开发的完整流程。首先,在确定开发目标后,我进行了详细的需求分析,明确了系统所需的各项功能。接下来,我设计了系统的功能框架和数据库结构,包括实体和数据表的设计。随后,我实现了各个功能模块的详细界面,并进行了全面的功能测试。尽管在这个过程中遇到了各种挑战,但通过反复分析和深入思考,借助相关文献和解决方案,我成功地解决了这些问题,最终使“启程”图书分享系统顺利运行。
虽然该系统在功能上基本满足了用户的需求,但仍有许多需要改进的地方。在接下来的开发阶段,我计划进行以下改进:
用户界面设计:目前的操作页面虽然满足了简易操作的要求,但在多样化设计方面还有提升空间。我将考虑引入更多丰富的设计元素,使界面更加美观和用户友好。
安全性能优化:针对系统安全性能的增强,需要进一步优化系统的整体防护能力。具体而言,将要对程序退出的安全性进行加强,确保在退出过程中不存在数据泄露或系统不稳定的风险。同时,对系统的并发处理能力进行升级,以确保在高并发场景下系统能够保持稳定的运行状态。这些改进措施将共同提升系统的安全性能,确保在各种使用场景下,系统都能为用户提供安全、可靠的服务。
性能优化:在性能优化方面,将着重于对程序的数据结构和代码逻辑进行精细化调整。通过优化,旨在确保系统能在高负载下保持稳定且高效的运行状态。优化后的系统应具备快速处理大量事务的能力,显著缩短事务处理时间,从而提高整体工作效率。同时,致力于降低服务器资源的占用率,以实现资源的高效利用和成本的有效控制。这些优化措施将共同提升系统的整体性能,为用户提供更加流畅、高效的服务体验。
通过这些改进,我希望能够进一步提升“启程”图书分享系统的用户体验和性能,使其更加贴合实际需求。
- 臧雅丽. 公共图书馆图书资料现代化管理初探 [J]. 参花, 2025, (04): 126-128.
- 沈煜皓. 信息潮下图书管理新象 [J]. 文化产业, 2025, (01): 62-64.
- 张美恋. 智慧图书馆背景下高校图书管理与采购新模式探索 [J]. 数字通信世界, 2024, (12): 199-201.
- 郝愿. 图书管理工作的优化路径 [J]. 参花, 2024, (34): 128-130.
- Zhao Y ,Che Y . AI-driven resource scheduling optimisation model and its system architecture design for digital library management [J]. Applied Mathematics and Nonlinear Sciences, 2025, 10 (1):
- Li X ,Deng J ,Liu J . Energy–carbon–green certificates management strategy for integrated energy system using carbon–green certificates double-direction interaction [J]. Renewable Energy, 2025, 238 121937-121937.
- Hutchings J ,Lothian R ,Jones A , et al. Exploring the Feasibility and Acceptability of a Brief Online Dialogic Book-Sharing Training for Teaching Support Staff [J]. Children, 2024, 11 (12): 1423-1423.
- 张书垚. 信息化时代下医院纸质图书管理问题研究 [J]. 华东纸业, 2024, 54 (11): 91-93.
- 张圆圆. 刍议图书资料管理中的信息化技术 [J]. 数字通信世界, 2024, (10): 117-119.
- 钱森,牛政翰. 基于ROS的图书管理移动机器人的系统设计与实验研究 [J]. 电子机械工程, 2024, 40 (05): 86-92.
- 文丽雅. 网络信息视域下医院图书管理新模式思考 [J]. 采写编, 2024, (09): 165-166+192.
- 单雨欣. 高校图书馆电子资源管理系统设计 [J]. 软件, 2024, 45 (09): 160-162.
- 王春秀. SOA框架下高校图书索引系统的集成与开发 [J]. 数字技术与应用, 2024, 42 (08): 185-187.
- Cena L ,Trainini A ,Murray L , et al. Early parent-child intervention with Dialogic Book-Sharing: effects on child communicative and socio-emotional development and on parenting. Study protocol for a multicentre randomised controlled trial in Italy [J]. Trials, 2024, 25 (1): 395-395.
- 郭亚丽. 基于物联网的智能图书馆管理系统应用 [J]. 中国战略新兴产业, 2024, (14): 51-53.
- 何娟. 《跬步探路》图书分享会以棋会友——世界冠军郑惟桐讲述成长故事 [J]. 人民周刊, 2024, (09): 91-92.
- 吴伟钦. 图书馆员在网络社交平台中的知识分享行为分析——以小红书为案例的研究 [J]. 公关世界, 2024, (07): 23-25.
- Williams E M ,Owen C ,Hutchings J . School-based delivery of a dialogic book sharing intervention: a feasibility study of Books Together [J]. Frontiers in Education, 2024, 9
- Hanne I R ,Irén E B ,Veslemøy R , et al. Teacher–Child Interactions During Toy Play and Book Sharing [J]. Early Education and Development, 2024, 35 (2): 234-249.
- 刘文婷. 不同形态图书直播对阅读生态的影响研究——基于营销式、分享式、场景式直播的比较分析 [J]. 河南图书馆学刊, 2024, 44 (01): 118-122.
- 辽宁少年儿童出版社《风之子》图书分享会在京举行 [J]. 全国新书目, 2023, (03): 25.
- Zhao Y ,Che Y . AI-driven resource scheduling optimisation model and its system architecture design for digital library management [J]. Applied Mathematics and Nonlinear Sciences, 2025, 10 (1):
这次毕业设计能够完成,最重要的就是来自指导老师的帮助,老师不厌其烦的对我的论文及毕业设计提出非常有建设性的建议,我的毕设施能够完成离不开老师的帮助。我对老师由衷的表示感谢,
其次要感谢大学四年里学院里所有的任课老师的教导,老师们在我整个大学四年里给予了我丰富的知识,让我能够在大学中不虚度光阴,踏踏实实的学习,没有这些老师不辞辛劳的教诲,我无法完成这四年的学业。
最后,我要感谢我的家人和同学们。感谢父母在物质与精神上给予我无限的支持和鼓励。感谢我的同学们,在论文写作期间,你们给予了我许多宝贵的建议和帮助,让我在学术研究的道路上不再孤单。
再次感谢所有在我大学生活中给予我帮助和支持的人们。您们的关怀和鼓励将永远铭刻在我的心中,成为我未来前行的动力。
由于自己的水平有限,毕设仍然存在着很大的缺陷,各位老师若提出意见,我会努力改正。
点赞+收藏+关注 → 私信领取本源代码、数据库