springboot校园二手图书销售系统
目 录
随着互联网的普及和发展,网上购物变得越来越日常,出于对企业发展的考虑,诸多中小企业都希望搭建自己的购物网站。为了降低网站的响应时间、提高系统高并发性能、提升用户使用体验以及降低硬件需求度,从而降低网站建设成本,我们需要找到更优的技术和方法。
在此校园二手图书销售系统的开发项目中,我们采用了Java技术,并结合MYSQL数据库进行设计开发。通过对论题的各类需求分析说明,我们可以解释系统的各项需求,并进一步讨论网站的总体设计和详细设计。我们还给出了网站总体结构的搭建方法。
为了更好地实现上述目标,我们决定引入SpringBoot框架。SpringBoot是一个基于Spring Framework的开源框架,它简化了Java应用程序的开发过程,并提供了一种快速构建可独立运行的、生产级别的Spring应用程序的方式。
通过使用SpringBoot,我们可以轻松地构建一个可扩展的、高性能的网上购物网站。SpringBoot提供了丰富的功能和插件,例如自动配置、内嵌服务器、健康检查、性能监控等,这些功能可以帮助我们快速搭建和部署网站,并提供良好的用户体验。
在使用SpringBoot的过程中,我们还可以结合其他技术和工具,例如Spring MVC、MyBatis等,来进一步优化系统的性能和功能。通过灵活运用这些技术和工具,我们可以实现高并发处理、数据库优化、缓存管理等功能,从而提升系统的整体性能。
综上所述,通过采用Java技术、结合MYSQL数据库,并引入SpringBoot框架,我们可以设计和开发出一款功能强大、性能优越的校园二手图书销售系统。这将为中小企业搭建购物网站提供更优的技术和方法,降低网站建设成本,提升用户体验,促进企业的发展。
关键词:Java;MYSQL;图书销售管理;SpringBoot
Abstract
With the popularization and development of the Internet, online shopping has become more and more routine. Considering the development of enterprises, many small and medium-sized enterprises want to build their own shopping websites. In order to reduce website response time, improve system high concurrency performance, enhance user experience, and reduce hardware requirements, thereby reducing website construction costs, we need to find better technologies and methods.
In the development project of this campus second-hand book sales system, we adopted Java technology and combined it with the MYSQL database for design and development. By analyzing and explaining the various requirements of the topic, we can explain the various requirements of the system and further discuss the overall and detailed design of the website. We also provided a method for building the overall structure of the website.
In order to better achieve the above goals, we have decided to introduce the SpringBoot framework. SpringBoot is an open-source framework based on the Spring Framework, which simplifies the development process of Java applications and provides a quick way to build independently running, production level Spring applications.
By using SpringBoot, we can easily build a scalable and high-performance online shopping website. SpringBoot provides rich features and plugins, such as automatic configuration, embedded servers, health checks, performance monitoring, etc. These features can help us quickly build and deploy websites, and provide a good user experience.
In the process of using SpringBoot, we can also combine other technologies and tools, such as Spring MVC, MyBatis, etc., to further optimize the performance and functionality of the system. By flexibly applying these technologies and tools, we can achieve high concurrency processing, database optimization, cache management, and other functions, thereby improving the overall performance of the system.
In summary, by adopting Java technology, combining MYSQL database, and introducing the SpringBoot framework, we can design and develop a powerful and high-performance campus second-hand book sales system. This will provide better technology and methods for small and medium-sized enterprises to build shopping websites, reduce website construction costs, improve user experience, and promote the development of enterprises.
Keywords: Java; MYSQL; Book sales management; SpringBoot
1 绪论
1.1 研究背景及意义
现下大多数行业都在逐步的将电商都信息化带入到自己企业中,其中主要是以电商服务为主导的互联网平台。像目前主要致力于自己的二手图书,同时紧紧围绕二手图书来展开。通过互联网平台的赋能,能够给二手图书行业提供智能化的服务,在为用户提供实质性购买帮助的同时,提高自己二手图书的服务质量。所以二手图书销售系统更加符合时下图书行业的需求,更加能适应二手图书行业目前的竞争压力。该销售系统以“互联网+”B2C服务为模式,在为用户提供购买二手图书服务的同时,可以帮助二手图书实现销量的突破,同样也可以为二手图书行业的智能化发展做出努力。
1.2研究现状
校园二手图书销售系统是一个具有实际应用价值的课题。目前,随着互联网的普及和发展,越来越多的大学生和教育机构开始关注二手图书市场,并希望通过建立在线平台来方便交易。因此,相关领域的研究也逐渐增加。
(1)校园二手图书市场的需求分析
一些研究关注了大学生对二手图书市场的需求和使用情况。通过调查问卷、访谈等方法,研究人员发现,学生们普遍存在购买二手图书的需求,主要原因包括节省开支、获取廉价教材和扩大阅读范围等。这些需求分析结果为校园二手图书销售系统的设计提供了指导。
(2)在线平台的功能设计
针对校园二手图书销售系统,研究人员提出了不同的功能设计方案。其中包括用户注册和登录、图书信息发布和搜索、交易订单管理、支付和评价等功能。通过分析用户需求和竞品分析,研究者提出了更加全面和用户友好的功能设计方案,以提高用户体验和系统的可用性。
(3)技术与系统架构
研究者对校园二手图书销售系统的技术和系统架构进行了深入研究。一些研究采用了Java、Python等编程语言,并结合MySQL、MongoDB等数据库进行数据存储和管理。同时,使用Spring、Hibernate等框架来实现系统的功能和业务逻辑。这些技术选择和系统架构设计可以提高系统的性能和稳定性。
(4)用户体验和安全性
在校园二手图书销售系统的设计中,用户体验和安全性是两个重要的方面。研究人员通过界面设计、交互流程优化、用户评价反馈等方式来提升用户体验。同时,对于数据安全和交易安全,研究者提出了相关的安全措施和防护策略,以确保用户信息和交易数据的安全性。
总结起来,校园二手图书销售系统是一个涉及需求分析、功能设计、技术选择、系统架构、用户体验和安全性等多个方面的课题。目前的研究主要集中在用户需求分析、功能设计和技术与系统架构等方面。未来的研究可以进一步关注用户体验、系统性能优化、数据安全等问题,以提升校园二手图书销售系统的实际应用效果。
首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定是基于Mysql数据库,在Java的Springboot技术程序设计的基础上实现,设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。
1.4论文结构与章节安排
本文共分为六章,章节内容安排如下:
第一章:引言。第一章主要介绍了课题研究的背景意义,国内目前相关研究现状以及技术和本文的研究内容与主要工作。
第二章:系统需求分析。第三章主要从系统的用户、功能等方面进行需求分析。
第三章:系统设计。第四章主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统实现。第五章主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。第六章主要对系统的部分界面进行测试并对主要功能进行测试
第六章:总结。
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的校园二手图书销售系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对校园二手图书销售系统后台数据进行存储操作。
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
2 校园二手图书销售系统系统分析
本章内容概括了校园二手图书销售系统的可行性分析、功能分析以及用例分析。
2.1 可行性分析
2.1.1 技术可行性分析
在分析了校园二手图书销售系统的真实需求后,将图书销售系统所需要的角色划分整理成了下图2-1和图2-2。
从开发工具来看,由于校园二手图书销售系统是基于Java开发的,因此当前市面上的开发工具都可以来开发,这些功能强大的开发工具可以给我来设计毕设带来非常大的方便。
从校园二手图书销售系统的本身技术来说,对于我来开发一个校园二手图书销售系统这个毕设是不费事的。校园二手图书销售系统的开发可以简单的分为前台模块、后台模块开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。Web后台管理使用Java开发,数据库使用mysql,因此为我在开发校园二手图书销售系统这个毕设上省去了很多多余代码,这给我的毕设项目编写带来了极大的便利。
从用户体验来看,市面上很多被广泛使用的管理系统案例可以让我来参考,因此我可以综合网上的系统页面交互设计的优点,基于我的毕设项目特点来进行改版,最后达到令用户满意的页面交互体验。综上所述,从技术层面来看开发校园二手图书销售系统是可行的。
2.1.2 经济可行性分析
从校园二手图书销售系统的开发成本来看,校园二手图书销售系统的设计和开发都是我自己完成的,没有其他成本上的开销。
从校园二手图书销售系统的维护成本来看,校园二手图书销售系统的开发遵循一套完整的代码编写规范,并且校园二手图书销售系统的结构设计非常灵活,遵循高内聚低耦合的原则,因此易于维护和迭代开发。
在校园二手图书销售系统上线之后,上线前期我会根据真实需求来调查,对使用我开发的校园二手图书销售系统来制定一套符合的使用费。系统运行稳定后我会将推广范围到其他销售图书的企业中,他们可以自己来注册使用我的校园二手图书销售系统,只需要缴纳一点点的定金,我会给他们引入广告投资和自营业务。
综合以上的分析,校园二手图书销售系统所带来的经济效益将会带来极大的收益。并且随着我的推广,来使用我开发的校园二手图书销售系统的市场将越来越大,校园二手图书销售系统带来的利润也就越来越多。因此,从经济层面来看开发校园二手图书销售系统的是可行的。
校园二手图书销售系统的主要的服务对象是需要购买二手图书的人群,总的来说校园二手图书销售系统的使用还是比较简单的,一般不存在操作困难的事情,校园二手图书销售系统的管理人员需要对该校园二手图书销售系统有一定的了解,比如查看书籍、二手书籍购买等操作,如果不会,可以进行简单的培训就好了。
2.2 系统功能分析
校园二手图书销售系统我划分为了用户管理模块和管理员模块这两大部分。
前台用户管理模块:
- 用户注册登录:用户注册为会员并登录校园二手图书销售系统;用户对个人信息的增删改查,比如个人资料,密码修改。
(2)公告:用户可以查看前台的网站公告信息。
- 书籍资讯:用户在前台可以进行书籍资讯的查看并点赞、收藏和发表评论等操作。
- 二手书籍:用户在前台可以进行二手书籍的查看并收藏和加入购物车对喜欢的二手书籍进行立即购买等操作。
- 商城管理:用户在网站商城管理中的个人用户功能包括我的购物车、我的订单和我的地址,帮助用户方便地管理和查看其购物车内容、订单状态以及收货地址等信息。
- 意见反馈:首页的意见反馈是为用户提供了一个便捷的途径,让他们可以在浏览商城首页时立即提交意见、建议和问题,以促进沟通和改进。
- 信息内容:用户在信息内容中可以进行点赞、收藏和评论等操作,以表达对内容的喜爱、保存感兴趣的信息,并与其他用户互动和交流。
- 个人中心:用户的个人中心为用户提供一个集中管理个人信息、订单历史、物流配送和设置等功能的页面,方便用户查看和管理个人相关内容。
- 个人首页:用户的个人首页功能包含意见反馈、订单配送和收藏等。
- 意见反馈:个人中心中的意见反馈功能使用户可以方便地提交反馈、建议和问题,以帮助商城了解用户需求并改进服务,提供更好的用户体验。
- 订单配送:用户查看自己在商城购买的二手图书订单的物流配送跟踪信息等。
收藏:用户可以查看自己以往收藏起来的图书,同时可以移除自己的收藏夹。
后台管理员管理模块:
(1)系统用户:管理员可以对前台上注册过的用户信息进行管控,同时可以对管理员的信息进行管理。
(2)意见反馈管理:管理员的意见反馈管理功能包括意见反馈列表和意见反馈添加,让管理员能够方便地查看和管理用户提交的意见反馈,及时响应用户需求并进行问题解决。
(3)信息内容管理:管理员的信息内容管理功能包括信息内容列表和信息内容添加,使管理员能够轻松管理和更新商城的信息内容,确保内容的准确性和及时性。
(4)系统管理:管理员可以对校园二手图书销售系统中的轮播图进行发布和维护。
(5)公告管理:管理员可以对校园二手图书销售系统中的公告信息进行发布和维护。
(6)资源管理:管理员的资源管理功能包括书籍资讯和资讯分类,帮助管理员有效地管理和分类书籍相关的资讯信息,为用户提供丰富的阅读内容和更好的浏览体验。
(7)商城管理: 管理员的商城管理功能包括二手书籍管理、分类列表管理、订单列表管理(只有已付款订单才能进行配送发货)以及订单配送管理,旨在确保商城运营的顺畅和订单的及时配送,提供良好的购物体验给用户。
校园二手图书销售系统的非功能性需求比如校园二手图书销售系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1校园二手图书销售系统非功能需求表
安全性 | 主要指校园二手图书销售系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指校园二手图书销售系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响校园二手图书销售系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着校园二手图书销售系统的页面展示内容进行操作,就可以了。 |
可维护性 | 校园二手图书销售系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.3 系统用例分析
校园二手图书销售系统的完整UML用例图分别是图2-1和图2-2。在参与者上包括用户以及管理员。前台上用户角色用例包括用户是注册成为我们正是会员的用户、用户登录、网站公告、书籍资讯、二手书籍、商城管理、意见反馈、信息内容、个人中心,用户角色用例如图2-1所示。
图2-1 校园二手图书销售系统用户角色用例图
web后台管理上的管理员是维护整个校园二手图书销售系统中所有数据信息的,管理员可以进行登录、轮播图、公告、用户、意见反馈管理、信息内容管理、资源管理类、商城管理。管理员角色用例如图2-2所示。
对系统的数据流进行分析,系统的使用者分为二类,用户,管理员。系统主要对界面信息传送,登录信息的验证,注册信息的接收,用户各种操作的响应做处理。
系统顶层数据流图如下图所示。
图3-2 顶层数据流图
要判断用户是是什么身份,是根据登录的数据来判断后,跳转到对应的功能界面。在系统的内部用户就可以对数据进行操作,数据库中心就可以接收到系统传输的有效数据流来对数据sql语句进行对应操作。
系统底层数据流图如下图所示。
图3-3 底层数据流图
系统可以分为前台和后台两部分,每一种操作后系统都返回操作结果。前台和后台的数据连接主要通过数据库,既分别对数据库做不同的操作
本章主要通过对校园二手图书销售系统的可行性分析、功能需求分析、系统用例分析、数据流程分析,确定整个校园二手图书销售系统要实现的功能。同时也为校园二手图书销售系统的代码实现和测试提供了标准。
本章主要讨论的内容包括校园二手图书销售系统的功能模块设计、数据库系统设计。
3.1 系统架构设计
本校园二手图书销售系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1校园二手图书销售系统系统架构设计图
表现层(UI):又称UI层,主要完成本校园二手图书销售系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本校园二手图书销售系统时的舒适度。UI的界面设计也要适应不同版本的校园二手图书销售系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本校园二手图书销售系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本校园二手图书销售系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本校园二手图书销售系统的数据存储和管理功能。
3.2 系统模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本校园二手图书销售系统中的用例。那么接下来就要开始对本校园二手图书销售系统的架构、主要功能和数据库开始进行设计。校园二手图书销售系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2 校园二手图书销售系统功能模块图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个校园二手图书销售系统中主要的数据库表总E-R实体关系图。
图3-2 校园二手图书销售系统总E-R关系图
通过上一小节中校园二手图书销售系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表address (收货地址:)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | address_id | int | 10 | 0 | N | Y | 收货地址: | |
2 | name | varchar | 32 | 0 | Y | N | 姓名: | |
3 | phone | varchar | 13 | 0 | Y | N | 手机: | |
4 | postcode | varchar | 8 | 0 | Y | N | 邮编: | |
5 | address | varchar | 255 | 0 | N | N | 地址: | |
6 | user_id | mediumint | 8 | 0 | N | N | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | default | bit | 1 | 0 | N | N | 0 | 默认判断 |
表article (文章:用于内容管理系统的文章)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
表article_type (文章分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表cart (购物车)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | cart_id | int | 10 | 0 | N | Y | 购物车ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | img | varchar | 255 | 0 | N | N | 0 | 图片: |
4 | user_id | int | 10 | 0 | N | N | 0 | 用户ID: |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | state | int | 10 | 0 | N | N | 0 | 状态:使用中,已失效 |
8 | price | double | 9 | 2 | N | N | 0.00 | 单价: |
9 | price_ago | double | 9 | 2 | N | N | 0.00 | 原价: |
10 | price_count | double | 11 | 2 | N | N | 0.00 | 总价: |
11 | num | int | 10 | 0 | N | N | 1 | 数量: |
12 | goods_id | mediumint | 8 | 0 | N | N | 商品id:[0,8388607] | |
13 | type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
14 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 |
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表feedback (意见反馈)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | feedback_id | int | 10 | 0 | N | Y | 意见反馈ID | |
2 | feedback_person | int | 10 | 0 | Y | N | 0 | 反馈人 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | feedback_number | varchar | 64 | 0 | Y | N | 反馈编号 | |
5 | feedback_title | varchar | 64 | 0 | Y | N | 反馈标题 | |
6 | feedback_content | text | 65535 | 0 | Y | N | 反馈内容 | |
7 | respondent | varchar | 64 | 0 | Y | N | 回复人 | |
8 | reply_content | text | 65535 | 0 | Y | N | 回复内容 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表goods (商品信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | goods_id | mediumint | 8 | 0 | N | Y | 产品id:[0,8388607] | |
2 | title | varchar | 125 | 0 | Y | N | 标题:[0,125]用于产品和html的<title>标签中 | |
3 | img | text | 65535 | 0 | Y | N | 封面图:用于显示于产品列表页 | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
5 | price_ago | double | 8 | 2 | N | N | 0.00 | 原价:[1] |
6 | price | double | 8 | 2 | N | N | 0.00 | 卖价:[1] |
7 | sales | int | 10 | 0 | N | N | 0 | 销量:[0,1000000000] |
8 | inventory | int | 10 | 0 | N | N | 0 | 商品库存 |
9 | type | varchar | 64 | 0 | N | N | 商品分类: | |
10 | hits | int | 10 | 0 | N | N | 0 | 点击量:[0,1000000000]访问这篇产品的人次 |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:产品的主体内容 | |
12 | img_1 | text | 65535 | 0 | Y | N | 主图1: | |
13 | img_2 | text | 65535 | 0 | Y | N | 主图2: | |
14 | img_3 | text | 65535 | 0 | Y | N | 主图3: | |
15 | img_4 | text | 65535 | 0 | Y | N | 主图4: | |
16 | img_5 | text | 65535 | 0 | Y | N | 主图5: | |
17 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
19 | customize_field | text | 65535 | 0 | Y | N | 自定义字段 | |
20 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
21 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
22 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
23 | user_id | int | 10 | 0 | Y | N | 0 | 添加人 |
表goods_type (商品类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | int | 10 | 0 | N | Y | 商品分类ID: | |
2 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
3 | name | varchar | 255 | 0 | Y | N | 商品名称: | |
4 | desc | varchar | 255 | 0 | Y | N | 描述: | |
5 | icon | varchar | 255 | 0 | Y | N | 图标: | |
6 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
7 | source_field | 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 | 更新时间: |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表information_content (信息内容)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | information_content_id | int | 10 | 0 | N | Y | 信息内容ID | |
2 | information_number | varchar | 64 | 0 | Y | N | 信息编号 | |
3 | message_header | varchar | 64 | 0 | Y | N | 信息标题 | |
4 | information_categories | varchar | 64 | 0 | Y | N | 信息类别 | |
5 | information_images | varchar | 255 | 0 | Y | N | 信息图片 | |
6 | information_content | text | 65535 | 0 | Y | N | 信息内容 | |
7 | information_details | longtext | 2147483647 | 0 | Y | N | 信息详情 | |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | 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 | 更新时间 |
表logistics_delivery (物流配送)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | logistics_delivery_id | int | 10 | 0 | N | Y | 物流配送ID | |
2 | order_number | varchar | 64 | 0 | Y | N | 订单号 | |
3 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
4 | purchase_quantity | varchar | 64 | 0 | Y | N | 购买数量 | |
5 | total_transaction_amount | double | 11 | 2 | Y | N | 0.00 | 交易总额 |
6 | the_date_of_issuance | date | 10 | 0 | Y | N | 发货日期 | |
7 | delivery_number | varchar | 30 | 0 | Y | N | 配送订单 | |
8 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
9 | shipping_address | varchar | 64 | 0 | Y | N | 收货地址 | |
10 | delivery_status | varchar | 64 | 0 | Y | N | 配送状态 | |
11 | signing_status | varchar | 64 | 0 | Y | N | 签收状态 | |
12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
13 | contact_name | varchar | 255 | 0 | Y | N | 联系人名字 | |
14 | merchant_id | int | 10 | 0 | Y | N | 商家id | |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表order (订单)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | order_id | int | 10 | 0 | N | Y | 订单ID: | |
2 | order_number | varchar | 64 | 0 | Y | N | 订单号: | |
3 | goods_id | mediumint | 8 | 0 | N | N | 商品id:[0,8388607] | |
4 | title | varchar | 32 | 0 | Y | N | 商品标题: | |
5 | img | varchar | 255 | 0 | Y | N | 商品图片: | |
6 | price | double | 10 | 2 | N | N | 0.00 | 价格: |
7 | price_ago | double | 10 | 2 | N | N | 0.00 | 原价: |
8 | num | int | 10 | 0 | N | N | 1 | 数量: |
9 | price_count | double | 8 | 2 | N | N | 0.00 | 总价: |
10 | norms | varchar | 255 | 0 | Y | N | 规格: | |
11 | type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
12 | contact_name | varchar | 32 | 0 | Y | N | 联系人姓名: | |
13 | contact_email | varchar | 125 | 0 | Y | N | 联系人邮箱: | |
14 | contact_phone | varchar | 11 | 0 | Y | N | 联系人手机: | |
15 | contact_address | varchar | 255 | 0 | Y | N | 收件地址: | |
16 | postal_code | varchar | 9 | 0 | Y | N | 邮政编码: | |
17 | user_id | int | 10 | 0 | N | N | 0 | 买家ID: |
18 | merchant_id | mediumint | 8 | 0 | N | N | 0 | 商家ID: |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
21 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
22 | state | varchar | 16 | 0 | N | N | 待付款 | 订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
23 | remark | text | 65535 | 0 | Y | N | 订单备注 | |
24 | delivery_state | varchar | 16 | 0 | Y | N | 未配送 | 发货状态:未配送,已配送 |
25 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 折扣 |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表regular_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表second_hand_books (二手书籍)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | second_hand_books_id | int | 10 | 0 | N | Y | 二手书籍ID | |
2 | book_number | varchar | 64 | 0 | Y | N | 书籍编号 | |
3 | book_name | varchar | 64 | 0 | Y | N | 书籍名称 | |
4 | book_author | varchar | 64 | 0 | Y | N | 书籍作者 | |
5 | publication_time | date | 10 | 0 | Y | N | 出版时间 | |
6 | new_and_old_degree | varchar | 64 | 0 | Y | N | 新旧程度 | |
7 | book_introduction | text | 65535 | 0 | Y | N | 书籍介绍 | |
8 | cart_title | varchar | 125 | 0 | Y | N | 标题:[0,125]用于产品html的标签中 | |
9 | cart_img | text | 65535 | 0 | Y | N | 封面图:用于显示于产品列表页 | |
10 | cart_description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
11 | cart_price_ago | double | 8 | 2 | N | N | 0.00 | 原价:[1] |
12 | cart_price | double | 8 | 2 | N | N | 0.00 | 卖价:[1] |
13 | cart_inventory | int | 10 | 0 | N | N | 0 | 商品库存 |
14 | cart_type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
15 | cart_content | longtext | 2147483647 | 0 | Y | N | 正文:产品的主体内容 | |
16 | cart_img_1 | text | 65535 | 0 | Y | N | 主图1: | |
17 | cart_img_2 | text | 65535 | 0 | Y | N | 主图2: | |
18 | cart_img_3 | text | 65535 | 0 | Y | N | 主图3: | |
19 | cart_img_4 | text | 65535 | 0 | Y | N | 主图4: | |
20 | cart_img_5 | text | 65535 | 0 | Y | N | 主图5: | |
21 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
22 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | 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 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
3.4本章小结
整个校园二手图书销售系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 校园二手图书销售系统详细设计与实现
校园二手图书销售系统的详细设计与实现主要是根据前面的校园二手图书销售系统的需求分析和校园二手图书销售系统的总体设计来设计页面并实现业务逻辑。主要从校园二手图书销售系统界面实现、业务逻辑实现这两部分进行介绍。
4.1用户功能模块
4.1.1 前台首页界面
在校园二手图书销售系统的前台首页界面上采用了上+中+下的方式来布局界面,最右上角是登录+注册这+搜索这三个链接,下面依次是导航栏+轮播图以及下面的网站公告,下面依次是模块展示,其主界面展示如下图4-1所示。

图4-1 前台首页界面图
前台首页的关键代码如下。
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Query count = service.count(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.1.2 用户注册界面
不是校园二手图书销售系统中正式用户的是可以在线进行注册的,当填写上自己的账号+设置密码+确认密码+昵称+邮箱+手机号+身份后+用户名再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图4-2所示。

图4-2 前台用户注册界面图
用户注册的关键代码如下。
/**
* 注册
* @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.1.3 用户登录界面
校园二手图书销售系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到校园二手图书销售系统的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。

图4-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.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);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
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());
tokenService.save(accessToken);
// 返回用户信息
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, "账号或密码不正确");
}
}
4.1.4筛选二手书籍界面
在校园二手图书销售系统首页上筛选自己想要快速搜索的二手书籍后系统会快速匹配出的网站的全部图书信息显示出来,用户可根据自己的喜好来查阅。筛选图书界面如下图7所示。

图4-4筛选图书界面图
筛选图书的关键代码如下。
@RestController
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
/**
* 服务对象
*/
@Autowired
public AuthController(AuthService service) {
setService(service);
}
}
4.1.5 书籍资讯界面
当访客点击校园二手图书销售系统中导航栏上的“书籍资讯”后将会进入到该“书籍资讯”列表的界面,然后选择想要看的书籍资讯信息,点击进入到详细界面,也可以进行点赞+收藏+评论,书籍资讯界面如下图4-5所示。

图4-5书籍资讯界面图
4.1.6 二手书籍详情界面
当访客点击了任意书籍后将会进入该款书籍的详情界面,可以了解到该书籍的具体信息,同时可以对该书籍进行立即购买+点赞+收藏+加入购物车,书籍详情展示页面如图4-6所示。

图4-6 书籍详情界面图
4.1.7 书籍购买界面
用户可以在线进行书籍购买操作。书籍购买界面如下图4-7所示。

图4-7 书籍购买界面图
书籍购买的关键代码:
@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.2管理员功能模块
4.2.1资源管理界面
校园二手图书销售系统中的管理人员是可以对前台发布的书籍资讯进行管控,资源管理界面如下图4-8所示。

图4-8资源管理界面图
资源管理关键代码:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
4.2.3 二手书籍管理界面
校园二手图书销售系统中的管理人员是可以对校园二手图书销售系统的不同书籍的分类下的二手书籍信息进行维护和管理的,支持查看到各个图书的原价、卖价、新旧程度情况以及添加+删除书籍。二手书籍信息管理界面如下图4-9所示。

图4-9二手书籍信息管理界面图
二手书籍信息管理的关键代码如下。
@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());
}
4.2.4订单管理界面
校园二手图书销售系统中的管理人员是可以对订单信息进行维护管理,已付款的订单才能进行发货配送。订单管理界面如下图4-10所示。

图4-10订单管理界面图
订单管理关键代码:
@RequestMapping(value = {"/sum_group", "/sum"})
public Map<String, Object> sum(HttpServletRequest request) {
Query count = service.sum(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.2.5公告管理界面
校园二手图书销售系统中的管理人员是可以进行公告管理的,可以实现对公告的增删改查操作。公告管理界面如下图4-11所示。

图4-11公告管理界面图
公告管理关键代码:
@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());
}
5系统测试
5.1 系统测试用例
系统测试包括:用户登录功能测试、用户注册功能测试、图书展示功能测试、图书添加功能测试、添加公告功能测试,如表5-1、5-2、5-3、5-4、5-5所示:
表5-1 用户登录功能测试表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
用户登录模块测试 | 正确输入用户信息,用户成功登录 | 输入用户的信息 | 1.在密码框输入用户密码。2.点击登录 | 跳转到首页 | 正确 |
用户注册功能测试:
表5-2 用户登录功能测试表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
用户注册模块测试 | 正确输入用户星系,完成用户注册 | 输入用户的基本信息 | 在注册页面填写用户相应的信息,然后点击“注册”按钮。 | 提示成功并跳转到登录界面 | 正确 |
用户注册模块测试 | 用户注册失败 | 用户两次输入密码不一致 | 用户在注册页面填写信息时输入两个不一致的密码然后点击“注册”按钮。 | 注册失败提示两次密码输入不一致 | 正确 |
书籍资讯信息界面测试:
表5-3 书籍资讯信息界面测试表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
书籍资讯信息功能模块测试 | 书籍资讯信息正常的显示 | 浏览书籍资讯信息 | 在前台首页选择一个书籍分类进入分类列表,然后选择一个书籍 | 进入该书籍的详细信息界面 | 正确 |
管理员添加二手书籍功能测试:
表5-4 管理员添加二手书籍功能测试表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
管理员添加二手书籍功能测试 | 添加二手书籍成功的情况 | 输入新二手书籍的基本信息 | 后台选择“发布二手书籍”选项,然后填写新二手书籍基本信息点击“添加”按钮 | 新二手书籍添加成功 | 正确 |
管理员添加二手书籍功能测试 | 添加二手书籍失败的情况 | 输入二手书籍基本信息不完全 | 后台选择“发布二手书籍”选项,然后不完全填写书籍信息,点击“添加”按钮。 | 对应信息框后出现提示请输入XXXX信息 | 正确 |
管理员添加二手书籍功能测试 | 添加二手书籍失败的情况 | 管理员在价格框输入非数字字符 | 后台选择“发布二手书籍”选项然后再价格框输入非数字字符,点击“添加”按钮。 | 添加失败,提示“价格必须时货币格式!” | 正确 |
管理员添加公告功能测试:
表5-5 管理员添加公告功能测试表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
管理员添加公告功能测试 | 添加公告成功的情况 | 输入新公告的基本信息 | 后台选择“发布公告”选项,然后填写新公告基本信息点击“添加”按钮 | 新公告添加成功 | 正确 |
管理员添加公告功能测试 | 添加公告失败的情况 | 输入公告基本信息不完全 | 后台选择“发布公告”选项,然后不完全填写公告信息,点击“添加”按钮。 | 对应信息框后出现提示请输入XXXX信息 | 正确 |
管理员添加公告功能测试 | 添加公告失败的情况 | 管理员在价格框输入空白 | 后台选择“发布公告”选项然后再标题框输入空白,点击“添加”按钮。 | 添加失败,提示“标题必须填写!” | 正确 |
通过编写校园二手图书销售系统的测试用例,已经检测完毕用户登录功能测试、用户注册功能测试、书籍信息展示功能测试、二手书籍添加功能测试、添加公告功能测试,通过这几大模块为校园二手图书销售系统的后期推广运营提供了强力的技术支撑。
此时项目已经完成,即使实施的时间不是很长,但是这个过程中需要准备很长的一段时间去对系统设计开发所实际到的技术进行学习。在学习的过程中,我逐渐认识得到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是一个掌握了常用的性能和控制方法,我觉得挺容易的。从该系统中,系统的分析和设计的调查数据,并且已经经历了几个月,并努力几个月,该系统已经完成。很显然,该系统仍有很多不成熟,在系统设计过程中有许多技术缺陷存在。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过找专业的网站来解决这些问题,对于圆满完成我的毕业设计,他们也贡献了很大一部分力量。系统的开发环境和配置都是可以自行安装的,系统使用Springboot开发框架,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
系统投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。
多租户博客网站的主要特点有:
(1)简单大方,易于操作的 Web 页面;
(2)利用 Ajax 技术使页面进行无刷新更新;
(3)有良好的安全性和可扩展性,增强了系统的可靠性,使系统保持持久的生命力。
由于时间限制和本人能力条件有限,该系统还存在一些不足,今后也会出现许多新的开发技术,未来还可以对系统做出如下改进:
(1)优化系统页面,使页面更加美观且方便操作;
(2)优化搜索功能,提供多条件选择查询搜索;
(3)优化二手图书推荐功能,提高二手图书推荐的精准度;
(5)进一步提高系统的安全性,使系统更加健壮;
(6)优化数据和代码,提升软件效率,方便系统维护和扩展。
[1]Sartika D A R ,Wirawan F ,Putri N P , et al. Association between Iron-Folic Acid Supplementation during Pregnancy and Maternal and Infant Anemia in West Java, Indonesia: A Mixed-Method Prospective Cohort Study. [J]. The American journal of tropical medicine and hygiene, 2024,
[2]唐瑛. 服务设计思维下校园二手书籍交易平台设计研究 [J]. 大众文艺, 2023, (23): 13-15.
[3]崔臣,宋甲旭. 基于SpringBoot的校园二手交易系统研究 [J]. 无线互联科技, 2023, 20 (18): 31-34.
[4]张娅妮,陈永春. 校园二手资源共享平台的设计与实现 [J]. 现代信息科技, 2023, 7 (13): 6-12.
[5]Sunday O B ,Nduka O S . MySQL Database Server: Deploying Software Application to Enhance Visibility and Accountability [J]. Current Journal of Applied Science and Technology, 2023, 42 (4): 16-23.
[6]史晓菲,张润泽. 二手图书成读者经济之选[N]. 消费日报, 2022-09-22 (A04).
[7]刘玥垚,曾姿琪,彭佳慧等. 浅析大学校园二手图书资源循环使用的网络平台建设的必要[C]// 中国管理科学研究院教育科学研究所. 2022电脑校园网络论坛论文集. 湖南应用技术学院;, 2022: 3.
[8]阮诚德. 基于二手经济背景的二手图书电商发展模式研究——以多抓鱼公司为例 [J]. 企业改革与管理, 2022, (09): 68-70.
[9]王明松,秦永佩. 基于Go Web的二手图书交易平台的设计与实现 [J]. 电子质量, 2022, (03): 59-61.
[10]辜萍萍,郑宇辉. 校园二手图书租售管理平台设计与实现 [J]. 数字技术与应用, 2022, 40 (02): 127-130.
[11]章玲圆. 生态位视角下二手图书电商平台“多抓鱼”的生态位分析和优化策略 [J]. 新媒体研究, 2022, 8 (02): 61-64.
[12]赵龙,王风硕. 基于Vue的图书销售系统设计与实现 [J]. 电脑知识与技术, 2021, 17 (36): 81-82+85.
[13]苏锦超,李优茗,陈子慧等. 基于推荐系统的图书交易平台的设计与实现 [J]. 科技与创新, 2021, (12): 94-95.
[14]Cheng F . Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework [J]. Advances in Educational Technology and Psychology, 2021, 5 (2):
[15]王宠,袁月,代宁. 大学生二手图书交易运营模式研究——以“书百回”项目为例 [J]. 营销界, 2021, (20): 34-35.
[16]肖林,倪敏. 二手图书交易平台的设计与实现 [J]. 信息与电脑(理论版), 2021, 33 (07): 137-139.
[17]何瑞涓. 图书“断舍离”后归向何处?[N]. 中国艺术报, 2021-03-10 (008).
[18]薛琪. 基于SICAS理论下的二手图书电商营销策略分析——以“多抓鱼”为例 [J]. 今传媒, 2021, 29 (02): 67-69.
[19]王伟,何强,余贵丰等. 大学生二手图书循环利用创新模式探索——以河西学院“河西绿色书屋”为例 [J]. 科技与创新, 2021, (03): 77-78+81.
本次设计历时3个月。在这个毕业设计中,它离不开指导教师的指导,使事情基本顺利。指导老师无论是在毕业设计历经中,还是在论文做完中都给了了我特别大的助益。另1个方面,教师认真负责的工作姿态,谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的提高。在此,特向教师表示由衷的感激。
经过对该毕业设计的全部研究和开发,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多,这是这次毕业设计最好的收获。
最后,在整个系统开发过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在次,我由衷的向他们表示感激。
请关注点赞+私信博主,免费领取项目源码