近年来,随着科技的不断发展和数字音频的普及,许多人对怀旧的唱片产生了浓厚的兴趣。这种回归传统的趋势在很大程度上是一种怀旧情感和对音乐品质的追求。当人们听到过去的歌曲时,会更好的产生一种迫切想要回到过去的情感和愿望,老歌可以缓解人们面对快节奏生活的压力,为了帮助人们缓解压力和更好的面对生活,怀旧唱片售卖系统显得格外重要。
本系统的前端使用Java先进的编程语言,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软件架构设计以及程序编码的工作,采取Mysql作为后台数据的主要存储单元,采用springboot框架进行业务系统的编码及其开发,实现了本系统的全部功能。通过使用该技术,我们可以大大提高唱片售卖的效率,使得我们的怀旧唱片售卖变得更加迅速、精确和方便。此外,该技术还可以实现售卖网站的主要功能:建立个性化的唱片商城、音乐资讯管理、唱片管理等。
本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对怀旧唱片售卖系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现怀旧唱片售卖系统和部署运行使用它。
(一)设计背景
当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级,市面上的电脑和笔记本的性能都得到提升,可以支持的软件也逐渐增多,因此,在计算机上安装软件来发挥其高效地信息处理的作用,则很受人们的青睐。
现有的线下怀旧唱片售卖存在许多问题,如通过人工形式处理、售卖率低下、缺乏个性化管理、数据维护困难和信息不透明等。在面对庞大的怀旧唱片信息数量时,单纯依靠人力就显得不适宜了,首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,设计与实现一个基于springboot的怀旧唱片售卖系统具有重要的意义和实践价值,对怀旧唱片信息进行集中管理,可以真正避免传统管理的缺陷。
通过使用Java技术,可以实现系统的网络化、自动化和智能化,提高管理效率和准确性。系统可以全面管理唱片信息,包括音乐资讯、唱片商城、订单列表、订单配送等。此外,系统还可以根据不同唱片的特点和需求,提供个性化的唱片推荐列表和音乐资讯发布等,更好地体现人性化的系统设计。
实现怀旧唱片售卖系统的现代化和信息化,可以推动怀旧唱片售卖系统的发展和研究,促进对经典唱片音质回归的追求。怀旧唱片售卖系统的实现可以最大化运用怀旧唱片售卖系统提供的功能,让系统在满足高效率处理数据的同时,也能始终稳定运行,为用户提供更多的怀旧唱片资源的购买和音乐资讯的分享。
综上所述,设计和实现一个基于springboot的怀旧唱片售卖系统具有重要的意义和实践价值。它可以解决怀旧唱片现有售卖方式的不足,提高音乐爱好者对怀旧唱片的关注,推动怀旧唱片售卖系统的进程,为怀旧唱片信息化管理提供支持。
(二)研究目的
本设计的目的就是构建一个基于springboot的怀旧唱片售卖系统,以满足怀旧唱片在互联网+时代的需求,优化怀旧唱片信息的管理方式,并解决现有系统的不足之处。该系统的设计目的如下:
(1)实现怀旧唱片信息的全面管理:通过Java 技术,设计和开发一个网络化的系统,可以全面管理怀旧唱片信息。
(2)提高管理效率和准确性:利用springboot和Java技术的自动化和智能化特性,可以大大提高数据的管理效率,减少人为错误,保证数据的准确性。
(3)增强个性化管理:针对不同唱片的特点和需求,系统可以提供个性化的唱片推荐列表和音乐资讯发布等,更好地体现人性化的系统设计。
(4)方便数据维护:系统设计应考虑数据维护的便利性,以便于数据的更新、备份和恢复等操作,确保数据的安全性和完整性。
(5)提高信息透明度:通过系统实现怀旧唱片信息的及时更新和可视化展示,使用户能够及时了解怀旧唱片的上新、音乐资讯的发布等信息,以便及时购买到自己喜欢的怀旧唱片。
(6)推动怀旧唱片信息化进程:通过实现怀旧唱片信息管理的现代化和信息化,推动了怀旧唱片售卖系统的发展和研究,为怀旧唱片信息化管理提供支持。
(7)提升怀旧唱片的管理效率和售卖质量:系统的实现可以提高对怀旧唱片信息管理的效率,同时也可以提高售卖质量,更好地提升用户的购买体验。
(三)本平台主要使用的核心技术
MySQL数据库已经成为网络上的一种强大的工具,它能够支持多个用户,并且能够根据客户端和服务端的需求进行调整,从而满足不同的需求。在这里,服务端和客户端只是一种软件上的概念,而我们所使用的计算机硬件则没有必要完全相互匹配。
MySQL作为一个受到广泛认可的开放式DBMS,其卓越的性能和易于操作的特性,以及其在多种操作环境中的灵活性,让其成为了众多AP中的首选。此外,MySQL还具有良好的跨平台性,让软件开发人员对其有着极高的评价。与传统的关联式数据库系统形式大相径庭,MySQL拥有一套完善的数据库管理策略,以确保用户的安全、稳健、安全。MySQL具备良好的容错、安全、快速、稳健的特点,使得mysql成为一款极其实用的数据库管理工具。
MySQL拥有一种独特的权限分配机制,可以根据用户的身份和业务逻辑,为用户提供更多的选择,从而大大提高了MySQL的安全性和完整性,远超过其他关系型数据库。
MySQL具有强大的功能,能够处理各种数据类型,包括动态、静态、多种语言,从而使用户能够轻松访问多种数据。
MySQL具有多种功能,它能够支持多种平台的开发,并且支持多种编程语言,使得用户能够轻松访问和使用MySQL数据库。
Tomcat是一种免费的服务器,它能够有效地处理大量的网络访问,特别是在访问量较少的情况下。当将Tomcat安装在电脑上时,它能够自动分析前端HTML页面的请求,从而提高网络的性能。事实上,Tomcat是对Apache的一种延伸[7],但它与Apache之间的关系更加紧密,因为它们在不同的进程中运行,而且它们之间也有着自己的独立性。
Tomcat最初由戴维森公司开发,但随着时间的推移,它逐渐成长为一个开源的服务器。后来,它被sun公司转移到了Apache软件基金会。最近,tomcat服务器经过了大量的重新设计和改进,使它更加易于使用。Tomcat负载均衡算法是一种免费的开源软件,它能够有效地减少硬件投入,使得它在一般的小企业网站服务器上的应用更加灵活,并且能够满足当前和未来的扩展需求。此外,它还可以作为其他类似应用的参考,以提高效率。
Java语言在计算机的程序应用过程当中,属于非常重要的一个应用软件,因为它的性能比较高,而且能够应用在多重领域当中,因此该程序在计算机的软件程序应用当中的范围相对来说是比较广泛的。而从专业的技术角度来说,Java程序的应用的实用性也是非常强的,这是因为它与传统的C语言或C++相比没有太大的基本结构的变化,也就是说它的语法结构是相对单一,而且具有稳定的特性,还有更重要的一点是Java程序语言的基本参考对象就是C语言,所以他的程序编写并不是很复杂,而且还能够起到优化工作效率提升系统设计本身的基础功能的作用,因此他也就受到了非常广泛的程序员们的青睐。在此次进行系统设计开发研究的过程当中,还发现Java程序语言之所以能够得到市场上更多用户的好评和青睐,其根本原因在于他能够具备各种语言的自身独特优点的展现,也就是说它的兼容性是常强的。因此,我们因此我们可以说在任何一个程序的开发过程当中,Java语言程序的应用是必不可少的,它他在程序员进行改动的时候,哪怕是一个程序字母的改动,都可以形成一种特定的程序,这是 Java程序,非常独特的另一个优点。不仅如此,Java源程序的可移植性也是非常大,而且它的安全系数很高,能够通过不同方式进行移植到其他程序当中,而且可以兼容不同程序的系统,在运行的过程当中,其安全系数也是非常强的,能够确保用户在使用网络的过程当中去确保网络的安全,而正是基于这样的可移植性,为程序员节约了很多的系统语言程序的开发设计的时间,这是非常难得的一种自有优势。
Spring框架是一个由Java公司发布的开放式框架,旨在通过其可扩展的特性来支持多种不同的编码方式。尽管Spring框架不会影响任何特定的编码方式,但其出色的性价比和可扩展性,已经成为EJB(EnterpriseJavaBeans)框架的重要组成部分,并且一直得到越来越多的人的青睐。Spring框架不仅可以有效地支撑开发,而且还可以充分利用其独有的控制反转功能,以及支撑多种持久性技术,从而将托管对象的生命周期变得更加容易,并且可以支撑声明性的事务处理,还可以支撑多种Web框架,从而有效地推动开发。Spring框架拥有强大的IOC功能,可以轻松地实现Java对象的调度与操作,从而更好地支持项目的运行。此外,Spring还支持将java对象的生命周期进行可视化,以实现更加灵活的调度与操作。Spring框架提供了一种新的、高效的容器设计工具,它能够根据XML文件和AOP注解的指引,从多个源中提取和组织相应的参数,从而实现多种功能。此外,它还提供了一种面向服务的框架,它能够根据用户的需求,自动调整参数,从而提高系统的效率和性能。Spring框架的AOP框架具有强大的功能,可以满足各种复杂的需求。尽管AspectJ框架的性能不及其他框架,但是Spring AOP的出色表现使其在各种应用场景中都具有出色的表现,例如:在事务处理、远程控制、网络安全、数据共享、文件共享、网络安全协议、网络安全协议。Java的事务处理框架提供了一种灵活的方式,可以将不同的内容、不同的时间段、不同的类型的数据进行处理,并且可以将这些处理结果存储到一起。此外,Spring还提供了一系列的事务模型。Spring的事务框架提供了一种灵活的方式,它允许用户根据需要调整事务的类型,例如XML、Java等,同时还支持快速的消息传输、缓冲等特性,从而有效地帮助开发者处理日益增长的数据需求。这款应用程序拥有强大的功能,能够兼容各种常见的数据处理框架,包括Java、iBATS/MyBATIs、Hibernate、Java)数据对象(JDO)、Apache OJB、Apache Cayne等,并能够将其与Spring的事务处理功能相结合,从而实现更加高效的数据处理。SpringMVC最初的目的是要替代StrutsWeb框架,因此,开发者决定将其与传统的web页面框架进行改造,使其能更好地支持用户的访问。这样,SpringMVC就能更好地支持用户的需求,从而提高web页面的性能。
(四)设计思路以及特点
本系统是针对当前怀旧唱片售卖的需求和问题,结合先进的技术框架设计而成。它旨在解决怀旧唱片信息规范化、售卖问题以及高效管理等问题。首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定选用sprinbgoot技术框架来设计开发本系统,Mysql作为设计数据库的工具。利用Java语言实现用户界面,并同数据库连接起来实现完整的通信功能。之后,设计出系统大致的功能模块。系统功能模块主要从方便系统用户和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。
本系统的设计按照互联网时代下兴起的线上售卖平台进行,实现了唱片信息管理的科学化、高效化,大大提高了唱片信息统计效率和售卖质量。通过本系统的应用,可以更好地满足怀旧唱片信息管理的需求,提升整体管理水平。
1、根据用户的身份,系统可以为其设定不同的登录权限,从而提供多样化的操作界面,以满足用户的需求。
2、连接数据库是系统的核心技术,它对于整个系统的运行至关重要。
3、为了确保数据的完整性与可靠性,我们需要确保所有的信息都是经过严格的验证,以便于任何人都可以访问、使用,同时也要求每个用户都要及时完成数据的备份,以确保信息的完整与可靠。
4、设计界面是非常重要的,它能够让用户感觉到亲切。
5、分析怀旧唱片信息化的现状。
6、研究市面上类似系统的现状及问题点。
7、本研究旨在深入探讨系统平台的架构、构建、数据库管理、安全性和功能实现等方面的内容。
8、研究如何利用多种IT工具来提升平台的性能,并确保其可靠性和安全性。
9、进行系统的详细功能设计并完成测试。
这款怀旧唱片售卖系统的设计特点:
(1)用户友好:简洁大方的页面布局,流畅的操作体验。
(2)先进技术框架:利用springboot、Java和MySQL等技术实现高效管理。
(3)自动化与智能化:自动处理和存储怀旧唱片信息,支持智能分析。
(4)实时性与准确性:实时更新和存储信息,确保信息的准确性和及时性。
(5)安全性:采取严格的安全措施,保障怀旧唱片信息的安全性和完整性。
(6)可定制性:根据学校需求和特点进行系统定制。
(7)易用性:简单明了的操作界面,方便用户进行操作和管理。
(8)可扩展性:具备可扩展性,适应系统售卖规模和唱片管理需求的变化。
第二章 设计实施
(一)平台需求分析
这款怀旧唱片售卖系统的使用范围主要是各类音乐爱好者,对怀旧唱片有情怀的、喜爱收集的用户等。通过该系统,可以有效地进行怀旧唱片信息管理,包括音乐资讯、唱片商城、订单列表等,为怀旧唱片的管理和决策提供数据支持。
为了满足用户的需求,怀旧唱片售卖系统将系统划分为两个部分:管理员和用户,每个部分都有独特的功能,以便更加便捷地管理信息。此外,系统还具有简单易操作的特点,可以更加精确、全面地实现用户的需求。以下是关于该功能的详细描述:
用户模块:
(1)首页信息:当用户进入本怀旧唱片售卖系统的前台的时候,首先展示在眼前的是导航栏、网站公告、音乐资讯、唱片商城、商城管理等信息,用户可以根据自己个人的需求进行查看;
(2)注册登录:在系统的右上角有登录+注册按钮,如果用户想要登录到系统当中,可以点击“登录”按钮,然后填写号用户名+密码,点击“登录”按钮,系统会对你的用户名密码进行核对,正确的话就会登录成功了,如果没有账号的话,可以点击右上角的“注册”按钮,然后根据提示输入好用户信息,就可以得到账号和密码了;
(3)网站公告:当用户点击“网站公告”这一菜单按钮,会显示管理员在后台发布的所有的网站公告信息,可以查看详情;
(4)音乐资讯:当用户点击“音乐资讯”这一菜单按钮,会显示管理员在后台发布的所有的音乐资讯信息,支持通过关键词对资讯进行搜索,选择需要的音乐资讯点击可以进入到音乐资讯详细的介绍界面,在详细界面可以查看到资讯的编辑用户、用户姓名、资讯标题、资讯标签、发布时间、资讯分类、资讯视频等信息,同时可以进行点赞、收藏、评论操作;
(5)唱片商城:当用户点击“唱片商城”这一菜单按钮,会显示管理员在后台发布的唱片商品信息列表,支持通过关键词对商品进行搜索,选择感兴趣的唱片点击可以进入到唱片详情介绍界面,在详情界面可以查看商品的名称、价格、分类等信息,同时可以进行点赞、收藏、加入购物车或者立即购买操作,对商品的评论在购买完成后可进行;
(6)商城管理:当用户点击“商城管理”这一菜单按钮,会出现包括“我的购物车”、“我的订单”、“我的地址”三个子菜单,选择某一子菜单查看详情,并可进行添加、修改和删除操作;
(7)用户账户:当用户点击右上角显示用户名称的这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料、登录系统的密码以及头像进行设置管理;点击“个人中心”可以对个人首页、订单配送和收藏进行管理。
管理员模块:
(1)登录:管理员在后台可以通过账号和密码进行登录,管理员的账号和密码是在数据库中直接设定的,如果忘记密码可以点击“忘记密码”进行密码找回;
(2)系统用户:管理员点击“系统用户”这一菜单会显示管理员和注册用户这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作;
(3)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图进行增删改查。
(4)网站公告:管理员点击“网站公告”菜单可以查看到系统中的所有网站公告信息,对已经存在的网站公告,管理员可以修改,也可以添加新的公告或者删除公告。
(5)资源管理:管理员点击“资源管理”会显示出所有的音乐资讯信息,同时可以对音乐资讯进行分类增删改查;支持输入关键词对音乐资讯信息进行查询,也可以选择某一条音乐资讯信息,点击“删除”进行删除,也可以对用户提交的音乐资讯评论的信息进行管控;
(6)商城管理:管理员点击“商城管理”会显示出所有的唱片商品信息,可以对唱片信息进行增删改查;支持输入关键词对唱片信息进行查询,如果想要添加新的唱片信息,点击“唱片添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条唱片信息,点击“删除”进行删除,也可以点击后面的“发布”按钮对唱片的发布信息进行更新维护;同时对唱片商城用户提交的订单列表进行维护,办理订单审核,生成订单配送等。
首先,系统的实用性是我们在设计过程中重点考虑的要素。我们通过对怀旧唱片售卖系统的深入调查和细致规划,确保系统的功能和操作流程符合实际需求,为使用者带来便利。简洁的界面设计使得操作者能够迅速上手,同时录入信息的过程也变得简单直观。
其次,可扩展性在系统设计中占据了重要的地位。随着网络技术的不断进步,功能扩展是不可避免的。因此,我们采取了模块化的设计思路,使系统在结构上具有良好的可扩展性。这样,根据用户的需求,可以轻松地增加所需的功能模块,或者根据实际情况进行扩展。
在系统的安全保密性方面,我们采取了严格的措施。对于系统的信息,我们必须确保其安全性和保密性,防止任何形式的泄露。为此,我们实施了权限管理,不同的用户只能进行与其身份相对应的操作。例如,用户登录后只能查看自己的信息,而管理者不仅可以查看自己的信息,还有权管理用户的信息。这种设计既保证了系统的安全性,又明确了各方的职责。
最后,系统的易维护性也是我们关注的重要方面。我们设计的系统架构使得系统的结构更加清晰,有利于后期的维护和升级。即使系统在运行过程中出现一些小问题,我们也可以迅速地进行维护和修复,确保系统的稳定运行。
综上所述,我们通过优化系统的实用性、可扩展性、安全保密性和易维护性,旨在打造一个高效、安全、易于使用和维护的怀旧唱片售卖系统。
(二)系统总体设计
1.系统功能结构设计
怀旧唱片售卖系统总体分为用户模块和后台管理员模块。模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。
综上所述,系统功能结构图如下图所示。
图2-1 怀旧唱片售卖系统功能结构
2.系统用户设计
根据需求分析,我们将用户划分为两个不同的模块,分别是用户模块和系统管理员模块。
用户用例图如下所示。
图2-2 用户用例图
管理员用例图如下所示。
图2-3 管理员用例图
3.系统流程设计
管理员权限下的工作流程主要为:管理员通过系统界面提供登录按钮并点击,转入管理员登录界面,并在界面上填入相应的管理员账户和管理员密码,进入管理员权限下的后台系统,并且在系统左侧导航条设置了相应的操作功能。
用户权限下的工作流程主要为:用户通过管理员添加的登录信息功能,在登录界面进行个人身份验证,并且进入用户的个人后台界面,并进行相应的操作。
怀旧唱片售卖系统的业务流程如下图所示。
图2-4 系统业务流程图
开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合,存储在一起的这些数据也是按照一定的组织方式进行的。目前,数据库能够服务于多种应用程序,则是源于它存储方式最佳,具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段时间的发展,从最初的不为人知,到现在的人尽皆知,其相关技术也越发成熟,同时也拥有着坚实的理论基础。
怀旧唱片售卖系统的E-R图主要是根据注册用户以及管理员的实际需求设计的,用户注册以后可以查看音乐资讯,只有注册登录以后才可以进行资讯查看、唱片购买、点赞收藏、评论等;管理员对整个系统的公告、用户、轮播图管理、音乐资讯、唱片商城、订单列表、订单配送等进行综合管理。怀旧唱片售卖系统采用的是MYSQL的数据库进行存储的,数据库里面储存了很多的表信息,在此罗列出来一些主要的数据库E-R模型图。
(1)下图是用户实体和其具备的属性。
图2-5用户实体属性图
(2)下图是商品实体和其具备的属性。
图2-6 商品实体属性图
(3)下图是公告信息实体和其具备的属性。
图2-7 公告信息实体属性图
(4)下图是购物车实体和其具备的属性。
图2-8 购物车实体属性图
(5)下图是评论实体和其具备的属性。
图2-9 评论实体属性图
(6)下图是商品订单实体和其具备的属性。
图2-10 商品订单实体属性图
怀旧唱片售卖系统总E-R图如下。
图2-11 系统总E-R图
数据库是怀旧唱片售卖系统的数据处理的基础,也是为界面数据的展示与存储的关键。怀旧唱片售卖系统的数据库表如下。
数据库名:project09932
文档版本:1.0.0
文档描述:数据库设计文档
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 默认判断 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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]用于产品规格描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 添加人 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 未配送 | 发货状态:未配送,已配送 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | record_mall_id | int | 10 | 0 | N | Y | 唱片商城ID | |
2 | singer | varchar | 64 | 0 | Y | N | 歌手 | |
3 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
4 | cart_title | varchar | 125 | 0 | Y | N | 标题:[0,125]用于产品html的标签中 | |
5 | cart_img | text | 65535 | 0 | Y | N | 封面图:用于显示于产品列表页 | |
6 | cart_description | varchar | 255 | 0 | Y | N | 描述:[0,255]用于产品规格描述 | |
7 | cart_price_ago | double | 8 | 2 | N | N | 0.00 | 原价:[1] |
8 | cart_price | double | 8 | 2 | N | N | 0.00 | 卖价:[1] |
9 | cart_inventory | int | 10 | 0 | N | N | 0 | 商品库存 |
10 | cart_type | varchar | 64 | 0 | N | N | 未分类 | 商品分类: |
11 | cart_content | longtext | 2147483647 | 0 | Y | N | 正文:产品的主体内容 | |
12 | cart_img_1 | text | 65535 | 0 | Y | N | 主图1: | |
13 | cart_img_2 | text | 65535 | 0 | Y | N | 主图2: | |
14 | cart_img_3 | text | 65535 | 0 | Y | N | 主图3: | |
15 | cart_img_4 | text | 65535 | 0 | Y | N | 主图4: | |
16 | cart_img_5 | text | 65535 | 0 | Y | N | 主图5: | |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | name | varchar | 64 | 0 | Y | N | 姓名 | |
3 | gender | varchar | 64 | 0 | Y | N | 性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
第三章 设计成果
本系统采用了Java和M ySQL数据库技术来实现怀旧唱片售卖系统。开发过程中,我们使用了Eclipse和Navicat软件。整体采用了基于B/S模式的springboot开源框架,利用Java编程语言的强大来实现系统的整体功能。
选择Springboot作为开发工具的主要原因如下:
1.9.1可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
1.9.2内嵌Tomcat或Jetty等Servlet容器;
1.9.3提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
1.9.4尽可能自动配置Spring容器;
1.9.5提供准备好的特性,如指标、健康检查和外部化配置;
1.9.6绝对没有代码生成,不需要XML配置。
通过以上优化,我们能够更好地满足系统需求,提高系统的性能和可靠性,同时方便用户进行操作和管理。
(一) 登录模块的实现
在登录界面中输入用户名+密码,然后选择相应的角色,点击“登录”按钮,系统会在用户数据库表中匹配相应用户的帐户,如果用户名+密码正确,则会登录到系统中每个用户的主管理界面,否则会提示相应的信息,如果是忘记了密码,请返回登录界面。
用户登录流程图如下所示。
图3-1 用户登录流程
想要进入系统用户输入准确的姓名和密码,系统才会自动启动,并且会对用户的身份进行检查,若发现身份信息不符合要求,则会自动返回主界面,以便用户可以安全的登录使用。
系统登录界面如下图所示。
图3-2 系统登录界面
登录关键代码如下所示。
/**
* 登录
* @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, "账号或密码不正确");
}
}
(二) 用户子系统模块的实现
首页主要分别展示各个模块的最新动态,浏览者可以很清楚地看到不同模块的最新更新内容。并且系统首页每个部分可以跳转到相对应的模块,方便浏览者选择感兴趣的地方。
首页载入流程图如下所示。
图3-3 首页载入流程
首页如下图所示。
图3-4 首页界面
当用户点击右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等信息后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可注册成功。
用户注册流程图如下所示。
图3-5注册流程图
用户注册界面展示图如下所示。
图3-6 用户注册界面
注册关键代码如下所示。
/**
* 注册
* @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);
}
当您完成/注册操作,您就能够更新您的个人资料。您需要确保您的inputname值能够和您所属的实体类型的参数完全对应。当您更新您的个人资料时,您的账号密码应当保持完整,不能出现任何错误。您需要确保您的账号密码是唯一的,才能继续使用。
修改密码关键代码如下所示。
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
int count = service.selectBaseCount(service.count(query, service.readConfig(request)));
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
用户可以发表自己的评论。将页面session中的用户账号userId和发表留言文字框内容传入控制层PinglunAction,调用addPinglun方法,通过PinglunDAOImp向数据库评论区插入,将结果返回plq.jsp界面。
评论发布流程图如下图所示。
图3-7评论发布流程图
评论发布界面如下所示。
图3-8评论发布界面
新增评论关键代码如下所示。
@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);
}
游客只能查看唱片商城的商品,不能进行任何购买、评论操作。注册用户可以选择自己喜欢的唱片,加入购物车、收藏、评论或者立即购买。
加入购物车流程图如下所示。
图3-9加入购物车流程图
我的购物车界面如下所示。
图3-10我的购物车展示界面
商品列表展示界面如下所示。
图3-11商品列表展示界面
商品详情展示界面如下所示。
图3-12商品详情展示界面
(三) 管理员功能模块的实现
管理员在后台可以通过账号和密码进行登录,管理员的账号和密码是在数据库中直接设定的,如果忘记密码可以点击“忘记密码”进行密码找回。
后台登录界面展示如下所示。
z
z
图3-13商品详情展示界面
管理员点击“系统管理”菜单可以查看到系统中的所有轮播图信息,对已经存在的轮播图信息,管理员可以修改,也可以添加新的轮播图或者删除轮播图。
轮播图添加界面如下所示。
图3-14轮播图添加界面
管理员点击“资源管理”会显示出所有的音乐资讯信息,支持输入资讯分类或者关键词对音乐资讯信息进行查询,如果想要添加新的音乐资讯信息,点击“音乐资讯添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条音乐资讯信息,点击“删除”进行删除,也可以点击后面的“发布”按钮对音乐资讯的新闻发布信息进行更新维护。
音乐资讯添加界面如下图所示。
图3-15音乐资讯添加界面
资讯图片上传关键代码如下所示。
@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, "上传失败");
}
管理员点击“商城管理”会显示出所有的唱片商城信息、分类信息、订单信息、订单配送信息,支持输入唱片名称或唱片分类对唱片信息进行查询,如果想要添加新的唱片信息,点击“唱片添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条唱片信息,点击“删除”进行删除,也可以点击后面的“发布”按钮对唱片的新闻发布信息进行更新维护。
唱片商城管理界面如下图所示。
图3-16唱片商城管理界面
获取商城列表数据关键代码如下所示。
@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);
}
管理员拥有对所有订单的查询、删除的功能。
订单列表界面如下图所示。
图3-17订单列表界面
删除某一订单数据关键代码如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
第四章 作品特点与总结
这款怀旧唱片售卖系统是基于springboot技术的系统,主要用于管理怀旧唱片售卖的信息。该系统的特点在于其简明扼要的设计,注重实用性和可扩展性,同时方便了管理员对用户的唱片购买、订单配送等内容的全面掌握。
首先,从系统的角度讲,怀旧唱片售卖系统设计与实现的过程中,它的难点在于功能的确定,对系统结构的设计,还有设计性能优良的数据库,以及采用成熟的技术实现系统功能等,这些是我面临的困难。针对这些难点,我采取了一定的措施。在不知道系统的功能时,我在网上寻找了很多相似系统,并把这些系统的大致功能进行了记载,把对本系统有用的功能部分进行了采用。另外,我也从网上获取了大量关于系统设计方面的知识,包括系统模块划分,设计原则,数据库表的设计与创建等知识,也从软件开发类博客中,获取了程序编码的技术知识,包括数据增删改代码模块的编写与使用。
其次,在本系统编码完成其对应功能后,我对系统的所有功能进行了耐心的测试,最后发现我开发的系统是合格的,可以进行验收。因为本系统除了具备简洁美观的界面外,在功能上可以满足使用者对于数据操作的需求,并且本系统的功能与系统分析设计的功能保持高度一致,而且系统运行稳定,面对用户的误操作,也建立了报错反馈机制,系统的质量可靠。唯一不足的就是系统数据表的设计在字段考虑上并不全面,为字段匹配的数据类型也不精确,还有系统代码部分,有很多地方还没有进行注释,代码编写不够简洁等。
再次,从文档的角度来讲,在完成怀旧唱片售卖系统制作后,对其制作过程需要进行描述,包括如何进行的需求分析,如何完成系统的设计,以及实现的系统功能的运行效果等都要进行描述。这期间我也花费了将近一个月时间来完成,为了达到学院要求的文档排版标准,我也多次在导师建议下,学习办公软件的使用,还有排版技巧。功夫不负有心人,我编写的文档在面临多次编写修改后终于完成了。
总而言之,怀旧唱片售卖系统是一款实用的怀旧唱片信息管理工具,其简洁的设计、强大的功能以及良好的易用性使得怀旧唱片的售卖可以更加轻松地对售卖信息进行全面管理。尽管该系统还有待进一步完善,但已经具备了良好的基础和潜在的发展空间。通过本项目制作,我开始明白,很多知识并不只是来源于书本,来源于老师课堂上讲解的知识,也需要来源于各大学习网站以及生活实践等。至此,我还是会继续努力,保持新知识的主动学习习惯。
参考文献
[1]王红霞,陈志云,王静. 基于云计算的高校怀旧唱片售卖系统设计与实现[J]. 计算机技术与发展,2020,30(1):1-5.
[2]张明,王娟,张鹏. 基于大数据的高校怀旧唱片售卖系统设计与实现[J]. 现代电子技术,2020,33(12):127-130.
[3]李婷,王娜,李勇. 基于Web的高校怀旧唱片售卖系统的设计与实现[J]. 电脑知识与技术,2021,17(4):35-38.
[4]高晶,张宁,高亮. 基于移动终端的高校怀旧唱片售卖系统设计与实现[J]. 电脑知识与技术,2022,18(1):9-13.
[5]王晓琳,赵海霞,王宇. 云计算在高校怀旧唱片售卖系统中的应用研究[J]. 电脑知识与技术,2022,18(6):9-13.
[6]王丽丽,王志和,王慧. 基于物联网的高校怀旧唱片售卖系统设计[J]. 计算机技术与发展,2023,34(1):9-14.
[7]王梅,李静,李娜. 基于B/S架构的高校怀旧唱片售卖系统设计与实现[J]. 计算机技术与发展,2023,34(2):9-15.
[8]高洁,刘鹏,张力民. 基于大数据的高校怀旧唱片售卖系统优化研究[J]. 计算机应用与软件,2023,40(3):9-14.
[9]王建华,李晓宇,张宁. 基于移动应用的高校怀旧唱片售卖系统设计与实现[J]. 计算机应用与软件,2023,40(4):6-11.
[10]王丽娟,刘鹏,张力民. 基于云计算的高校怀旧唱片售卖系统架构设计[J]. 计算机应用与软件,2023,40(5):9-14.
[11]李小聪,张丽丽,赵晓峰. 基于人工智能的高校怀旧唱片售卖系统设计与实现[J]. 计算机技术与发展,2020,30(11):1-6.
[12]王永和,李晓晨,王宇. 融合人工智能与大数据技术的怀旧唱片售卖系统设计与实现[J]. 计算机应用与软件,2021,38(5):9-15.
[13]张芳,王明哲,王宇. 基于机器学习的怀旧唱片售卖系统设计与实现[J]. 计算机应用与软件,2022,40(3):9-14.
[14]马宁,王瑶瑶,王晓丽. 基于深度学习的怀旧唱片售卖系统设计与实现[J]. 计算机应用与软件,2023,41(1):9-14.
[15]王志强,李婷婷,王宇. 基于自然语言处理的怀旧唱片售卖系统设计与实现[J]. 计算机应用与软件,2023,41(5):9-14.
免费领取源码,请点赞关注私信博主