摘 要
随着科技的快速迭代和人们环保意识的提高,共享经济逐渐成为社会发展的重要趋势。然而,在现实生活中,人们的消费水平大大提高,存在很多闲置物品无人问津,造成了一定的资源浪费和环境污染。与此同时,许多人需要使用这些闲置物品,却不知道如何获取。这种情况下,基于Java Web的Unishare闲置物品共享系统就显得尤为重要。
本文首先总结介绍了Unishare闲置物品共享系统的研究背景、主要研究内容及研究的目的和意义,然后阐述了平台的具体业务需求,并根据平台需求对系统结构以及功能模块等进行了详细地设计,整个系统可以划分为多个不同的功能模块,能够很好地满足用户需求。在分析系统功能需求时,对整个系统的总体架构以及功能模块等进行了分析,并选择采用Java开发语言,利用SSM技术框架,采取MySQL数据库实现数据的储存和处理,通过Java Web实现用户及数据的交互,进行设计和实施系统完成了对各个模块的开发工作。系统开发完成之后进行了部署,同时进行了系统的测试过程,通过测试证明了系统在功能以及性能等方面都达到了预期的要求,具有较高的稳定性与可靠性。
关键词:Java Web; 闲置物品共享系统; springboot; MySQL; 共享经济
ABSTRACT
With the rapid iteration of science and technology and the improvement of people's environmental awareness, the sharing economy has gradually become an important trend in social development. However, in real life, people's consumption level has greatly improved, and there are many idle items that are ignored, causing certain resource waste and environmental pollution. At the same time, many people need to use these idle items but do not know how to obtain them. In this case, the Unishare idle item sharing system based on Java Web becomes particularly important.
This article first summarizes and introduces the research background, main research content, purpose and significance of the Unishare idle item sharing system. Then, it elaborates on the specific business requirements of the platform and designs the system structure and functional modules in detail according to the platform requirements. The entire system can be divided into multiple different functional modules, which can well meet user needs. When analyzing the functional requirements of the system, the overall architecture and functional modules of the entire system were analyzed. Java development language was chosen, SSM technology framework was used, MySQL database was adopted for data storage and processing, and Java Web was used for user and data interaction. The system was designed and implemented to complete the development work of each module. After the completion of system development, deployment was carried out, and the system testing process was also carried out. Through testing, it was proven that the system has met the expected requirements in terms of functionality and performance, and has high stability and reliability
Keywords: Java Web; Idle item sharing system; Springboot; MySQL; Sharing economy.
目 录
1 课题概论
1.1 背景
1.2 内容
1.3 目的和意义
2 系统分析
2.1 需求分析
2.2 可行性分析
2.2.1 技术可行性
2.2.2 经济可行性
2.2.3 操作可行性
2.2.4 社会可行性
2.3 系统功能分析
2.4 系统业务流程分析
2.5 系统数据流程分析
3 系统设计
3.1 系统技术环境
3.2 系统界面设计
3.2.1 用户登录、注册界面
3.2.2 前台用户界面
3.2.4 后台管理界面
3.3 系统数据库设计
3.3.1 E-R图设计
3.3.2 数据表设计
4 系统实施与测试
4.1 核心配置及代码
4.1.1 核心配置
4.1.2 用户注册、登录
4.1.3 闲置商城
4.1.4 购买订单
4.1.5 租聘订单
4.1.6 订单配送
4.1.7 用户签收
4.2 系统测试
4.2.1 登录、注册测试
4.2.2 功能测试
5 结束语
1 课题概论
1.1 背景
随着科技的快速迭代和人们环保意识的提高,共享经济逐渐成为社会发展的重要趋势。然而当前现代社会消费水平的提高,人们购买新物品的速度也逐渐加快,导致许多闲置物品堆积在家中。这些闲置物品占据空间,造成了一定的资源浪费,也增加了环境负担。在互联网技术和信息技术高速发展,及资源回收再利用的理念被提倡的背景下,通过科学技术来实现的闲置物品共享平台成为了一种新兴的应用形式。基于Java Web技术,通过Java语言的springboot开源框架,利用关系型数据库MySQL来构建的安全、高效、便捷、友好的Unishare闲置物品共享系统,旨在为用户提供一个便捷的共享平台,满足用户闲置物品的共享与利用需求。同时,相对传统的废品回收方式,闲置物品共享系统更注重物品的再利用,推动资源的循环利用和减少不必要的消费,并且可以提供便捷全面的闲置物品共享服务,保障闲置物品交易、购买、租赁的安全性,提高用户之间的交流交互,提升用户的体验感和满意度。因此,研究闲置物品共享系统不仅可以解决个人闲置物品管理难题,也有利于减少资源浪费,促进可持续发展。
1.2 内容
首先通过对用户需求的调研,了解用户需要一个怎样的交易平台,确定系统应该具备的功能和特性,进行系统的功能模块、流程和特点等方面的设计。随后设计系统的整体架构,选择适合的Java Web开发框架、前端技术和数据库技术,以支持系统的设计和实现。最后根据系统设计和技术选型,进行系统的前端和后端开发,包括页面设计、数据处理和业务实现,并对系统进行全面测试。
本Unishare闲置物品共享系统通过对用户的需求分析,可以分为普通用模块和管理员模块,以上模块又可以分成细小的功能模块。例如,普通用户可以注册登录系统,实现搜索和浏览通知公告、新闻资讯、闲置商城等信息;可在闲置商城中选择自己自己心仪和需要的物品,进行购买或租赁,并实现在线支付,提供配送服务;可以修改自己的账号信息和密码;同时可以通过系统与其他使用者进行交流沟通,添加为好友;并可以在个人中心内对自己的商品类型、闲置商城、购买订单、租赁订单、用户签收等信息进行管理,发布自己的闲置物品信息到商城中,确定自己订单的情况。而管理员则可以对系统中的信息和使用系统的用户进行管理,具体具有包括系统用户、商品类型管理、闲置商城管理、购买订单管理、租赁订单管理、订单配送管理、用户签收管理、系统管理、通知公告管理、资源管理、等方面的功能,保证系统的正常运转,方便用户及时获取信息和使用相关功能。
1.3 目的和意义
随着科技的快速迭代和人们环保意识的提高,共享经济逐渐成为社会发展的重要趋势。然而,在现实生活中,人们的消费水平大大提高,存在很多闲置物品无人问津,造成了一定的资源浪费和环境污染。与此同时,许多人需要使用这些闲置物品,却不知道如何获取。这种情况下,基于Java Web的Unishare闲置物品共享系统就显得尤为重要。该系统能够有效解决闲置物品的利用和共享问题,推动社会资源的合理利用,减少浪费。系统通过将闲置物品信息集中管理,方便用户快速搜索和获取所需物品,用户通过该系统获取物品,避免了购买新物品的成本,减少了经济负担。同时,还可以帮助闲置物品拥有者将闲置物品共享出去,有效降低了资源的浪费和环境污染,对环保事业具有积极意义。因此,Unishare闲置物品共享系统将助力共享经济,在促进资源整合利用等方面发挥积极作用。
2 系统分析
2.1 需求分析
系统需求分析是软件开发过程中的关键步骤,通过分析用户需求、功能需求和非功能需求,确定系统开发的目标和范围,为系统的设计和实现提供指导。通过需求分析,可以明确系统需要实现的功能和特性,确保开发的系统能够满足用户和业务的需求。可以帮助确定系统开发的范围和限制,避免开发过程中范围扩大或目标模糊的情况发生。通过细致的需求分析,可以发现和解决需求之间的矛盾和冲突,确保系统设计和开发的一致性和稳定性。明确系统需求可以为开发团队提供清晰的开发方向和目标,有利于分工合作、减少开发过程中的返工和沟通成本,提高开发效率。系统需求分析可以帮助开发团队提前发现风险和问题,并采取相应措施进行规避和管理,降低项目开发风险。
根据实际的用户需求和市场调查,分析解闲置物品共享系统主要需求包括以下方面:
用户管理:系统需要提供用户注册、登录、个人信息管理等功能,确保用户可以方便地使用系统。
物品管理:用户可以发布自己的闲置物品信息,包括物品名称、描述、照片等,同时系统需要支持物品的分类和搜索功能,方便用户浏览和查找感兴趣的物品。
交易管理:系统需要提供交易功能,包括用户可以发起交易请求、确认交易、评价交易等,确保交易过程安全可靠。
交流互动:系统可以建立用户之间的交流互动模块,包括评论、功能等,促进用户之间的交流和互动,同时帮助用户更好地选择信任的交易对象和物品。
配送签收:系统需要提供配送和签收服务,让用户享有便捷、全面的服务。
安全与隐私保护:系统需要确保用户信息和交易信息的安全保密,防止信息泄露或被恶意利用。
根据以上需求,可以设计系统架构、功能模块和交互流程,为用户提供方便、安全和高效的闲置物品共享服务。
2.2 可行性分析
2.2.1 技术可行性
Unishare闲置物品共享系统主要采用了Java语言,使用springboot框架, 采取Model 模型,运用B/S结构,利用MySQL数据库并配合Java Web技术作为开发工具技术,设计了功能完备、使用简单、界面友好的前端用户界面,并建立、维护了一个数据完整、安全、稳定性强的后台管理系统。
Java作为一种常用的编程语言,具有广泛的应用领域和成熟的开发生态系统,来它提供了丰富的库和工具,能够快速解决相关web框架,使开发人员能够轻松构建各种功能模块。springboot框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器,能够整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发。而MySQL作为一种关系型数据库管理系统,具有数据完整性高、稳定性好的特点,适合处理Unishare闲置物品共享系统的数据存储和管理需求,因此在技术方面是可行的。
2.2.2 经济可行性
开发本Unishare闲置物品共享系统的技术都是可以从网上直接免费下载,可以降低开发成本,而且选择的环境、开发工具及技术,都在学校进行过系统的学习,所以可以由本人来独立操作完成,设计开发系统的源代码,不需要额外的话费,如果后期想要进行运营,只要把配置到服务器上,花费服务器的租赁费用,在使用中可以进行增加广告收益,因此在经济方面是可行的。
2.2.3 操作可行性
Unishare闲置物品共享系统的登录界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,此系统所选择的开发技术能够使系统更加完善,并具有易操作、易管理、交互性好的特点,在操作上是非常简单的,能够确保用户快速上手使用,因此在操作方面是可行的。
2.2.4 社会可行性
社会可行性主要包括法律和用户两个方面,下面将从这两方面进行分析。
(1)法律可行性
本系统是学习开发所制作的程序,并不用作商业用途,是在根据实际调研的结果结合现有的Unishare闲置物品共享系统后得出的,而且系统制作的全部过程都是在个人的工作电脑中完成的,使用的都是开源和免费的开发环境、分析软件和数据库,不存在侵权问题。
(2)用户可行性
操作人员或者客户只需要具备一定的Java操作常识,不需要精通计算机技能。此外系统管理人员,只需要在再熟悉下使用Tomcat服务器的操作流程,只要掌握一定的计算机知识即可,在正式上线运营之前,仅需要对操作人员进行简单的熟悉流程培训即可。所以从用户可行性上也是可行的。
2.3 系统功能分析
在系统开发设计前,应该对功能做初步设想,清楚这个管理系统有什么板块,每个板块有什么功能,整体的设计是否满足使用者的需求,接着对所开发的系统功能进行的详细分析总结,从而设计出完整的系统并将其实现。用户和开发人员的交流分析,使其达到最佳理解程度,使系统功能达到最佳。
根据使用该系统的用户角色可以划分为普通用户和管理员, 角色用例如下图所示。
Unishare闲置物品共享系统普通用户角色用例图如下所示。
图3-1 普通用户角色用例图
Unishare闲置物品共享系统管理员角色用例图如下所示。
图3-2 管理员角色用例图
Unishare闲置物品共享系统中主要定义了以下的角色及其可使用功能或者权限,如表2-1所示。
表2-1 本系统定义的角色及其可使用功能或者权限
角色名称 | 可使用的功能或者是拥有的权限 |
系统前台普通用户 | 可查收系统通知公告和新闻资讯等信息,查看所有闲置商城信息,并可进行购买和租赁,能够和其他用户交流沟通,同时可对自己的闲置商城、订单等相关信息进行管理功 |
系统后台管理员 | 拥有对所有功能,可对系统进行管理,维护和更新系统信息,确保系统正常运转 |
结合本Unishare闲置物品共享系统的需求分析及角色用例分析,本Unishare闲置物品共享系统的总体设计功能结构模块图如下所示。
图2-3 系统功能结构图
根据系统需求调研分析,并结合系统总体的功能要求,从用户角度分析可以分为普通用户模块和管理员模块,以上模块又可细分为总体不同的功能模块。具体功能模块说明如下所示:
(1)前台普通用户功能模块:
注册登录:游客可以以通过注册成为系统用户,使用账号密码可以进行登录,使用系统功能。首页:普通用户可以查看轮播图、新闻资讯、闲置商城推荐等信息,并可以使用系统其他功能。通知公告:普通用户可以查看管理员发布的包括关于我们、联系方式、网站介绍等所有通知公告信息详情内容。新闻资讯:普通用户可以查看管理员发布的所有新闻资讯信息详情内容,支持局部、筛选、排序搜索,并支持热门文章推荐,可以对某一篇新闻资讯进行点赞、收藏和评论。用户沟通:普通用户可以和其他用户进行交流,可以添加好友,发起群聊沟通信息。闲置商城:普通用户可以查看发布的所有闲置商城信息详情内容,支持商品类型、商品名称、排序搜索,可以对某一篇闲置商城信息进行点赞、收藏和评论,并可以点击购买和租赁操作。我的账户:普通用户对个人资料进行查看和管理,包括修改密码和修改资料。点击修改密码,可以修改账号密码,密码修改成功之后需要使用新密码进行登录;点击修改资料可以修改包括头像、昵称、邮箱、用户姓名、用户性别、联系电话等信息。个人中心:普通用户可以对自己的个人首页、商品类型、闲置商城、购买订单、租赁订单、用户签收、用户签收、收藏等信息进行管控和查看以上信息的详情内容。普通用户在发布自己闲置商品信息的同时可以购买其他用户的闲置商品。例如,可以添加发布自己的商品类型、闲置商城等信息,确定购买或租赁自己闲置物品的订单的支付情况,并提供配送服务,确定其的签收。并可以对自己购买或租赁的订单进行支付,确定配送情况,进行签收。(2)后台管理管理员功能模块:
登录:管理员账号密码由系统生成,可以使用账号密码可以登录系统后台,使用系统功能,进行管理,并可对个人信息和密码进行管理。系统用户:管理员可以对普通用户和管理员等新系统用户信息进行管控,可以查看系统用户信息详情内容,进行增改删查操作。商品类型管理:管理员可以查看所有商品类型详情内容,进行增改删查,支持商品类型搜索。闲置商城管理:管理员可以查看所有闲置商城信息详情内容,进行增改删查,支持商品类型、商品名称搜索,并可以查看评论信息。购买订单管理:管理员可查看购买订单信息详情内容,进行查询和删除操作,支持商品类型、商品名称、支付状态搜索,并可点击配送、支付操作。租赁订单管理:管理员可查看租赁订单信息详情内容,进行查询和删除操作,支持商品类型、商品名称、支付状态搜索,并可点击配送、支付操作。订单配送管理:管理员可查看订单配送信息详情内容,进行查询和删除操作,支持商品类型、商品名称搜索,并可点击签收操作。用户签收管理:管理员可查看租赁订单信息详情内容,进行查询和删除操作,支持商品类型、商品名称搜索。系统管理:管理员可以对首页的轮播图进行管理和查阅信息详情内容,进行增删改查操作,支持标题搜索。通知公告管理:管理员可以对通知公进行管理和查阅信息详情内容,进行增删改查操作,支持标题、标签、分类搜索。资源管理:管理员可以对新闻资讯、资讯分类进行管理和查阅信息详情内容,进行增删改查操作;其中新闻资讯支持标题、标签、分类搜索和查看评论信息;资讯分类支持类型名称搜索。
2.4 系统业务流程分析
Unishare闲置物品共享系统的设计与实现主要的目的就是实现用户搜索和浏览闲置商城信息,在线购买和租赁闲置物品,并进行支付操作,享受配送服务,可签收订单;同时用户在查看其他用户发布的闲置商城信息的同时可以自己发布自己的闲置信息,并进行配送和查看签收状态。其业务流程图如下图所示。
图2-4 业务流程图
2.5 系统数据流程分析
数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,数据流程图描述数据流动、存储、处理的逻辑关系,它不但可以表达数据在系统内部的逻辑流向,而且还可以表达系统的逻辑功能和数据的逻辑转换。数据流程图的绘制是针对每一项业务的业务流程图进行的。
顶层数据流程是流程中最抽象的一层,它包括了注册与登录管理、用户功能管理和检索维护管理等功能模块,在登录注册模块使用到的数据存储有用户账户信息文档、用户信息文档,用户功能管理模块需要的存储是用户动态信息文档、评论信息文档、图片信息文档,检索维护是通过以上这些文档信息通过关键词进行搜索。
系统的顶层数据流图如下图所示。
图2-5 系统的数据流程图(顶层)
系统的底层数据流图如下图所示。
图2-6 系统的数据流程图(底层)
3 系统设计
3.1 系统技术环境
Java:Java是一种跨平台的编程语言,广泛应用于大型企业系统和Web应用开发中。Java开发环境通常包括Java开发工具包(JDK)、集成开发环境(IDE)如Eclipse、IntelliJ IDEA,以及各种Java框架和库。
Spring框架技术:Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。
Spring Boot框架技术:SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
MVVM模式:MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。
B/S体系结构:B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。
MyBatis框架技术:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。。
Maven :Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
redis介绍:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
3.2 系统界面设计
3.2.1 用户登录、注册界面
普通用户注册后可以使用账号密码可进行登录,使用系统功能。用户登录时按照要求输入账号和密码,系统中函数在数据库中查询账号和密码,并匹配账号、密码和身份信息,若匹配的则进入相应系统页面,例如普通用户登录成功将进入前台用户界面,管理员则进入后台管理界面,否则证明非该网站用户,跳回网站首页。
例如,用户注册界面如下图所示。
3-1 用户注册界面
例如,用户登录界面如下图所示。
3-2 用户登录界面
3.2.2 前台用户界面
普通用户可登录系统前台使用首页、通知公告、新闻资讯、用户沟通、闲置商城、我的账户、个人中心(个人首页、商品类型、闲置商城、购买订单、租赁订单、订单配送、用户签收、收藏)等功能,以下罗列部分前台用户关键功能模块。
前台首页界面普通用户登录进入系统后首先进入前台首页界面,可以查看轮播图、新闻资讯、闲置商城推荐等信息,并可以使用系统其他功能(通知公告、新闻资讯、用户沟通、闲置商城、我的账户、个人中心)。界面如下图所示。
图3-3 前台首页界面
用户沟通界面普通用户可以和其他用户进行交流,可以添加好友,发起群聊沟通信息。界面如下图所示。
图3-4 用户沟通界面
闲置商城界面普通用户可以查看发布的所有闲置商城信息详情内容,支持商品类型、商品名称、排序搜索,可以对某一篇闲置商城信息进行点赞、收藏和评论,并可以点击购买和租赁操作。
例如,闲置商城搜索界面如下图所示。
图3-5 闲置商城搜索界面
例如,闲置商城详情界面如下图所示。
图3-6 闲置商城详情界面
例如,闲置商城购买界面如下图所示。
图3-7 闲置商城购买界面
个人中心界面普通用户可以对自己的个人首页、商品类型、闲置商城、购买订单、租赁订单、订单配送、用户签收、收藏等信息进行管控和查看以上信息的详情内容。普通用户在发布自己闲置商品信息的同时可以购买其他用户的闲置商品。例如,可以添加发布自己的商品类型、闲置商城等信息,确定购买或租赁自己闲置物品的订单的支付情况,并提供配送服务,确定其的签收状态。并可以对自己购买或租赁的订单进行支付,确定配送情况,进行签收。
例如,个人中心闲置商城添加界面如下图所示。
图3-8 个人中心闲置商城添加界面
例如,个人中心购买订单界面如下图所示。
图3-9 个人中心购买订单界面
例如,个人中心订单配送界面如下图所示。
图3-10 个人中心订单配送界面
例如,个人中心用户签收界面如下图所示。
图3-11 个人中心用户签收界面
3.2.4 后台管理界面
管理员可登录进入系统后台进行管理,具有系统用户、商品类型管理、闲置商城管理、购买订单管理、租赁订单管理、订单配送管理、用户签收管理、系统管理、通知公告管理、资源管理等功能,以下罗列部分后台管理关键功能模块。
系统用户界面管理员可以对普通用户和管理员等新系统用户信息进行管控,可以查看系统用户信息详情内容,进行增改删查操作。界面如下所示。
图3-12 系统用户界面
闲置商城管理界面管理员可以查看所有闲置商城信息详情内容,进行增改删查,支持商品类型、商品名称搜索,并可以查看评论信息。界面如下所示。
图3-13 闲置商城管理界面
购买订单管理界面管理员可查看购买订单信息详情内容,进行查询和删除操作,支持商品类型、商品名称、支付状态搜索,并可点击配送、支付操作。界面如下所示。
图3-14 购买订单管理界面
租赁订单管理界面管理员可查看租赁订单信息详情内容,进行查询和删除操作,支持商品类型、商品名称、支付状态搜索,并可点击配送、支付操作。界面如下所示。
图3-15 租赁订单管理界面
订单配送管理界面管理员可查看订单配送信息详情内容,进行查询和删除操作,支持商品类型、商品名称搜索,并可点击签收操作。界面如下所示。
图3-16 订单配送管理界面
系统管理界面管理员可以对首页的轮播图进行管理和查阅信息详情内容,进行增删改查操作,支持标题搜索。界面如下所示。
图3-17 系统管理界面
通知公告管理界面管理员可以对通知公进行管理和查阅信息详情内容,进行增删改查操作,支持标题、标签、分类搜索。界面如下所示。
图3-18通知公告管理界面
资源管理界面管理员可以对新闻资讯、资讯分类进行管理和查阅信息详情内容,进行增删改查操作;其中新闻资讯支持标题、标签、分类搜索和查看评论信息;资讯分类支持类型名称搜。界面如下所示。
图3-19资源管理界面
3.3 系统数据库设计
3.3.1 E-R图设计
该Unishare闲置物品共享系统中由普通用户模块和管理员模块这两大部分组成,主要涉及到的实体有普通用户、管理员、闲置商城管理、购买订单管理、租赁订单管理、订单配送管理、用户签收管理、系统管理、通知公告管理、资源管理等。实体与实体之间的联系主要分为一对一、一对多、多对多三种关系。在本Unishare闲置物品共享系统实体之间的具体关系如下图所示:
图3-20 系统的E-R图
3.3.2 数据表设计
通过上文的Unishare闲置物品共享系统总E-R关系图可以得出一共需要创建很多个数据表。在此罗列包括普通用户、文章(新闻资讯)、通知公告、闲置商城、购买订单、租赁订单、订单配送、用户签收、用户沟通等几个主要的数据库表结构设计,具体如下所示:
表3-1 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 | contact_phone_number | varchar | 16 | 0 | Y | N |
| 联系电话 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
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 | 更新时间 |
表3-2 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 |
| 文章描述 |
表3-3 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 | 更新时间: |
表3-4 idle_mall (闲置商城)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | idle_mall_id | int | 10 | 0 | N | Y |
| 闲置商城ID |
2 | seller_customers | int | 10 | 0 | Y | N | 0 | 卖家用户 |
3 | seller_address | varchar | 64 | 0 | Y | N |
| 卖家地址 |
4 | product_type | varchar | 64 | 0 | Y | N |
| 商品类型 |
5 | product_name | varchar | 64 | 0 | Y | N |
| 商品名称 |
6 | product_images | varchar | 255 | 0 | Y | N |
| 商品图片 |
7 | item_pricing | int | 10 | 0 | Y | N | 0 | 商品单价 |
8 | lease_date_price | int | 10 | 0 | Y | N | 0 | 租赁日价 |
9 | product_introduction | text | 65535 | 0 | Y | N |
| 商品简介 |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表3-5 purchase_order (购买订单)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | purchase_order_id | int | 10 | 0 | N | Y |
| 购买订单ID |
2 | seller_customers | int | 10 | 0 | Y | N | 0 | 卖家用户 |
3 | seller_address | varchar | 64 | 0 | Y | N |
| 卖家地址 |
4 | product_type | varchar | 64 | 0 | Y | N |
| 商品类型 |
5 | product_name | varchar | 64 | 0 | Y | N |
| 商品名称 |
6 | item_pricing | int | 10 | 0 | Y | N | 0 | 商品单价 |
7 | purchasing_users | int | 10 | 0 | Y | N | 0 | 购买用户 |
8 | purchase_time | date | 10 | 0 | Y | N |
| 购买时间 |
9 | receiving_address | varchar | 64 | 0 | Y | N |
| 收货地址 |
10 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
11 | pay_type | varchar | 16 | 0 | Y | N |
| 支付类型: 微信、支付宝、网银 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表3-6 lease_orders (租赁订单)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | lease_orders_id | int | 10 | 0 | N | Y |
| 租赁订单ID |
2 | seller_customers | int | 10 | 0 | Y | N | 0 | 卖家用户 |
3 | product_type | varchar | 64 | 0 | Y | N |
| 商品类型 |
4 | product_name | varchar | 64 | 0 | Y | N |
| 商品名称 |
5 | lease_date_price | int | 10 | 0 | Y | N | 0 | 租赁日价 |
6 | purchasing_users | int | 10 | 0 | Y | N | 0 | 购买用户 |
7 | lease_days | int | 10 | 0 | Y | N | 0 | 租赁天数 |
8 | total_rental_price | varchar | 64 | 0 | Y | N |
| 租赁总价 |
9 | receiving_address | varchar | 64 | 0 | Y | N |
| 收货地址 |
10 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
11 | pay_type | varchar | 16 | 0 | Y | N |
| 支付类型: 微信、支付宝、网银 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表3-7 order_delivery (订单配送)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | order_delivery_id | int | 10 | 0 | N | Y |
| 订单配送ID |
2 | seller_customers | int | 10 | 0 | Y | N | 0 | 卖家用户 |
3 | seller_address | varchar | 64 | 0 | Y | N |
| 卖家地址 |
4 | product_type | varchar | 64 | 0 | Y | N |
| 商品类型 |
5 | product_name | varchar | 64 | 0 | Y | N |
| 商品名称 |
6 | purchasing_users | int | 10 | 0 | Y | N | 0 | 购买用户 |
7 | receiving_address | varchar | 64 | 0 | Y | N |
| 收货地址 |
8 | delivery_status | varchar | 64 | 0 | Y | N |
| 配送状态 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表3-8 user_signed_for (用户签收)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_signed_for_id | int | 10 | 0 | N | Y |
| 用户签收ID |
2 | seller_customers | int | 10 | 0 | Y | N | 0 | 卖家用户 |
3 | seller_address | varchar | 64 | 0 | Y | N |
| 卖家地址 |
4 | product_type | varchar | 64 | 0 | Y | N |
| 商品类型 |
5 | product_name | varchar | 64 | 0 | Y | N |
| 商品名称 |
6 | purchasing_users | int | 10 | 0 | Y | N | 0 | 购买用户 |
7 | receiving_address | varchar | 64 | 0 | Y | N |
| 收货地址 |
8 | product_status | varchar | 64 | 0 | Y | N |
| 商品状态 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表3-9 user_chat_read(用户沟通)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_chat_read_id | varchar | 255 | 0 | N | Y |
| 用户沟通id |
2 | user_id | int | 10 | 0 | Y | N |
| 接收人id |
3 | send_user_id | int | 10 | 0 | Y | N |
| 发送人id |
4 | group_id | int | 10 | 0 | Y | N |
| 群聊id |
5 | type | int | 10 | 0 | Y | N |
| 类型1-点对点消息,2-群聊消息 |
6 | create_time | timestamp | 19 | 0 | Y | N | CURRENT_TIMESTAMP | 时间 |
7 | message | text | 65535 | 0 | Y | N |
| 消息 |
4 系统实施与测试
4.1 核心配置及代码
4.1.1 核心配置
(1)数据库连接
连接数据库的文件在Resources 文件夹下的application.yml文件。
server:
port: 5000
servlet:
context-path: /api
spring:
mvc:
static-path-pattern: /upload/**
resources:
static-locations: file:此处填写地址/project93355/server/src/main/resources/static
datasource:
jdbc:mysql://127.0.0.1:3306/projectxxxxx?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
jackson:
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
redis:
host: 127.0.0.1
port: 6379
password:
database: 2
lettuce:
pool:
max-idle: 30
min-idle: 10
max-active: 30
max-wait: 10000
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: com.project.demo.entity
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
use-column-label: true
map-underscore-to-camel-case: false
lazy-loading-enabled: true
aggressive-lazy-loading: false
use-generated-keys: true(2)配置文件
# 服务端口
server.port=8090
# 服务名
spring.application.name=studentdailytrack
# MySQL数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/student_daily_track?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
#smtp邮箱服务器
spring.mail.host=smtp.qq.com
#你邮箱账户
spring.mail.username=973517376@qq.com
#你邮箱第三方授权码
spring.mail.password=fosfdsgobxtcbdei
#编码类型
spring.mail.default-encoding=UTF-8
spring.mail.properties.smtp.starttls.enable=true
#发件人
spring.mail.from=973517376@qq.com
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.port=465
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.socketFactory.class= javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
4.1.2 用户注册、登录
注册服务/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
登录服务/**
* 登录
* @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, "账号或密码不正确");
}
}
4.1.3 闲置商城
PRIMARY KEY (idle_mall_id))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '闲置商城';
insert into `idle_mall` values (1,0,'卖家地址1','商品类型1','商品名称1','/api/upload/1573868031610716161.jpg',1,1,'商品简介1',469,164,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (2,0,'卖家地址2','商品类型2','商品名称2','/api/upload/1574324930663677953.jpg',2,2,'商品简介2',500,711,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (3,0,'卖家地址3','商品类型3','商品名称3','/api/upload/1744162427831844864.jpg',3,3,'商品简介3',91,423,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (4,0,'卖家地址4','商品类型4','商品名称4','/api/upload/1574324865966538752.jpg',4,4,'商品简介4',686,534,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (5,0,'卖家地址5','商品类型5','商品名称5','/api/upload/1573868132919934977.jpg',5,5,'商品简介5',1,190,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (6,0,'卖家地址6','商品类型6','商品名称6','/api/upload/1574324768247644161.jpg',6,6,'商品简介6',197,155,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (7,0,'卖家地址7','商品类型7','商品名称7','/api/upload/1744162603350884353.jpg',7,7,'商品简介7',761,305,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (8,0,'卖家地址8','商品类型8','商品名称8','/api/upload/1573867851146592256.jpg',8,8,'商品简介8',55,187,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (9,0,'卖家地址9','商品类型9','商品名称9','/api/upload/1744162549076590593.jpg',9,9,'商品简介9',235,203,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (10,0,'卖家地址10','商品类型10','商品名称10','/api/upload/1573867692425740288.jpg',10,10,'商品简介10',92,712,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (11,0,'卖家地址11','商品类型11','商品名称11','/api/upload/1573867934198005760.jpg',11,11,'商品简介11',518,307,'2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `idle_mall` values (12,0,'卖家地址12','商品类型12','商品名称12','/api/upload/1573867592374812673.jpg',12,12,'商品简介12',493,762,'2024-04-11 21:29:44','2024-04-11 21:29:44');
4.1.4 购买订单
DROP TABLE IF EXISTS `purchase_order`;
CREATE TABLE `purchase_order`(purchase_order_id int(11) NOT NULL AUTO_INCREMENT COMMENT '购买订单ID',
`seller_customers` int(11) DEFAULT 0 comment '卖家用户',
`seller_address` varchar(64) comment '卖家地址',
`product_type` varchar(64) comment '商品类型',
`product_name` varchar(64) comment '商品名称',
`item_pricing` int(11) DEFAULT 0 comment '商品单价',
`purchasing_users` int(11) DEFAULT 0 comment '购买用户',
`purchase_time` date comment '购买时间',
`receiving_address` varchar(64) comment '收货地址',
`pay_state` varchar(16) DEFAULT '未支付' NOT NULL comment '支付状态',
`pay_type` varchar(16) DEFAULT '' comment '支付类型: 微信、支付宝、网银',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (purchase_order_id))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '购买订单';
insert into `purchase_order` values (1,0,'卖家地址1','商品类型1','商品名称1',1,0,'2024-04-11','收货地址1','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (2,0,'卖家地址2','商品类型2','商品名称2',2,0,'2024-04-11','收货地址2','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (3,0,'卖家地址3','商品类型3','商品名称3',3,0,'2024-04-11','收货地址3','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (4,0,'卖家地址4','商品类型4','商品名称4',4,0,'2024-04-11','收货地址4','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (5,0,'卖家地址5','商品类型5','商品名称5',5,0,'2024-04-11','收货地址5','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (6,0,'卖家地址6','商品类型6','商品名称6',6,0,'2024-04-11','收货地址6','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (7,0,'卖家地址7','商品类型7','商品名称7',7,0,'2024-04-11','收货地址7','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (8,0,'卖家地址8','商品类型8','商品名称8',8,0,'2024-04-11','收货地址8','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (9,0,'卖家地址9','商品类型9','商品名称9',9,0,'2024-04-11','收货地址9','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (10,0,'卖家地址10','商品类型10','商品名称10',10,0,'2024-04-11','收货地址10','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (11,0,'卖家地址11','商品类型11','商品名称11',11,0,'2024-04-11','收货地址11','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `purchase_order` values (12,0,'卖家地址12','商品类型12','商品名称12',12,0,'2024-04-11','收货地址12','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
4.1.5 租聘订单
DROP TABLE IF EXISTS `lease_orders`;
CREATE TABLE `lease_orders`(lease_orders_id int(11) NOT NULL AUTO_INCREMENT COMMENT '租赁订单ID',
`seller_customers` int(11) DEFAULT 0 comment '卖家用户',
`product_type` varchar(64) comment '商品类型',
`product_name` varchar(64) comment '商品名称',
`lease_date_price` int(11) DEFAULT 0 comment '租赁日价',
`purchasing_users` int(11) DEFAULT 0 comment '购买用户',
`lease_days` int(11) DEFAULT 0 comment '租赁天数',
`total_rental_price` varchar(64) comment '租赁总价',
`receiving_address` varchar(64) comment '收货地址',
`pay_state` varchar(16) DEFAULT '未支付' NOT NULL comment '支付状态',
`pay_type` varchar(16) DEFAULT '' comment '支付类型: 微信、支付宝、网银',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (lease_orders_id))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '租赁订单';
insert into `lease_orders` values (1,0,'商品类型1','商品名称1',1,0,1,'租赁总价1','收货地址1','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (2,0,'商品类型2','商品名称2',2,0,2,'租赁总价2','收货地址2','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (3,0,'商品类型3','商品名称3',3,0,3,'租赁总价3','收货地址3','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (4,0,'商品类型4','商品名称4',4,0,4,'租赁总价4','收货地址4','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (5,0,'商品类型5','商品名称5',5,0,5,'租赁总价5','收货地址5','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (6,0,'商品类型6','商品名称6',6,0,6,'租赁总价6','收货地址6','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (7,0,'商品类型7','商品名称7',7,0,7,'租赁总价7','收货地址7','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (8,0,'商品类型8','商品名称8',8,0,8,'租赁总价8','收货地址8','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (9,0,'商品类型9','商品名称9',9,0,9,'租赁总价9','收货地址9','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (10,0,'商品类型10','商品名称10',10,0,10,'租赁总价10','收货地址10','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (11,0,'商品类型11','商品名称11',11,0,11,'租赁总价11','收货地址11','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `lease_orders` values (12,0,'商品类型12','商品名称12',12,0,12,'租赁总价12','收货地址12','未支付','支付宝','2024-04-11 21:29:44','2024-04-11 21:29:44');
4.1.6 订单配送
DROP TABLE IF EXISTS `order_delivery`;
CREATE TABLE `order_delivery`(order_delivery_id int(11) NOT NULL AUTO_INCREMENT COMMENT '订单配送ID',
`seller_customers` int(11) DEFAULT 0 comment '卖家用户',
`seller_address` varchar(64) comment '卖家地址',
`product_type` varchar(64) comment '商品类型',
`product_name` varchar(64) comment '商品名称',
`purchasing_users` int(11) DEFAULT 0 comment '购买用户',
`receiving_address` varchar(64) comment '收货地址',
`delivery_status` varchar(64) comment '配送状态',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (order_delivery_id))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '订单配送';
insert into `order_delivery` values (1,0,'卖家地址1','商品类型1','商品名称1',0,'收货地址1','配送状态1','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (2,0,'卖家地址2','商品类型2','商品名称2',0,'收货地址2','配送状态2','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (3,0,'卖家地址3','商品类型3','商品名称3',0,'收货地址3','配送状态3','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (4,0,'卖家地址4','商品类型4','商品名称4',0,'收货地址4','配送状态4','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (5,0,'卖家地址5','商品类型5','商品名称5',0,'收货地址5','配送状态5','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (6,0,'卖家地址6','商品类型6','商品名称6',0,'收货地址6','配送状态6','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (7,0,'卖家地址7','商品类型7','商品名称7',0,'收货地址7','配送状态7','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (8,0,'卖家地址8','商品类型8','商品名称8',0,'收货地址8','配送状态8','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (9,0,'卖家地址9','商品类型9','商品名称9',0,'收货地址9','配送状态9','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (10,0,'卖家地址10','商品类型10','商品名称10',0,'收货地址10','配送状态10','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (11,0,'卖家地址11','商品类型11','商品名称11',0,'收货地址11','配送状态11','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `order_delivery` values (12,0,'卖家地址12','商品类型12','商品名称12',0,'收货地址12','配送状态12','2024-04-11 21:29:44','2024-04-11 21:29:44');
4.1.7 用户签收
DROP TABLE IF EXISTS `user_signed_for`;
CREATE TABLE `user_signed_for`(user_signed_for_id int(11) NOT NULL AUTO_INCREMENT COMMENT '用户签收ID',
`seller_customers` int(11) DEFAULT 0 comment '卖家用户',
`seller_address` varchar(64) comment '卖家地址',
`product_type` varchar(64) comment '商品类型',
`product_name` varchar(64) comment '商品名称',
`purchasing_users` int(11) DEFAULT 0 comment '购买用户',
`receiving_address` varchar(64) comment '收货地址',
`product_status` varchar(64) comment '商品状态',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (user_signed_for_id))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '用户签收';
insert into `user_signed_for` values (1,0,'卖家地址1','商品类型1','商品名称1',0,'收货地址1','商品状态1','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (2,0,'卖家地址2','商品类型2','商品名称2',0,'收货地址2','商品状态2','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (3,0,'卖家地址3','商品类型3','商品名称3',0,'收货地址3','商品状态3','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (4,0,'卖家地址4','商品类型4','商品名称4',0,'收货地址4','商品状态4','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (5,0,'卖家地址5','商品类型5','商品名称5',0,'收货地址5','商品状态5','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (6,0,'卖家地址6','商品类型6','商品名称6',0,'收货地址6','商品状态6','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (7,0,'卖家地址7','商品类型7','商品名称7',0,'收货地址7','商品状态7','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (8,0,'卖家地址8','商品类型8','商品名称8',0,'收货地址8','商品状态8','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (9,0,'卖家地址9','商品类型9','商品名称9',0,'收货地址9','商品状态9','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (10,0,'卖家地址10','商品类型10','商品名称10',0,'收货地址10','商品状态10','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (11,0,'卖家地址11','商品类型11','商品名称11',0,'收货地址11','商品状态11','2024-04-11 21:29:44','2024-04-11 21:29:44');
insert into `user_signed_for` values (12,0,'卖家地址12','商品类型12','商品名称12',0,'收货地址12','商品状态12','2024-04-11 21:29:44','2024-04-11 21:29:44');
4.2 系统测试
4.2.1 登录、注册测试
表5-1 登录测试用例
测试用例编号 | YL_01 | |
测试用例名称 | 系统使用者登录 | |
测试用例描述 | 登录者正确输入账号、密码 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入正确的用户名、密码和验证码 | 提示“登录成功”,并进入系统 | 预期结果 |
输入错误的用户名、密码和验证码 | 提示“登录失败”,并返回登录界面 | 预期结果 |
不输入用户名、密码和验证码 | 提示“请输入完整” | 预期结果 |
表5-2 注册测试用例
测试用例编号 | YL_02 | |
测试用例名称 | 系统使用者注册账号 | |
测试用例描述 | 使用者正确输入注册信息进行账号注册 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
正确输入系统不存在的注册信息 | 提示“注册成功” | 预期结果 |
输入系统已存在的注册信息 | 提示“注册失败”,并返回注册界面 | 预期结果 |
不输入注册信息的某一相关信息内容 | 提示“请输入完整” | 预期结果 |
4.2.2 功能测试
表5-3 添加新闻资讯功能测试用例
测试用例编号 | YL_04 | |
测试用例名称 | 系统使用者进行添加新闻资讯 | |
测试用例描述 | 使用者正确输入新闻资讯的相关信息内容 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入正确完整的新闻资讯的相关信息内容 | 提示“添加成功”,并进入系统 | 预期结果 |
不输入的新闻资讯的某一相关信息内容 | 提示“请输入完整” | 预期结果 |
表5-4 添加闲置商城功能测试用例
测试用例编号 | YL_04 | |
测试用例名称 | 系统使用者进行添加闲置商城 | |
测试用例描述 | 使用者这正确输入闲置商城的相关信息内容 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入正确完整的闲置商城的相关信息内容 | 提示“添加成功”,并进入系统 | 预期结果 |
不输入的闲置商城的某一相关信息内容 | 提示“请输入完整” | 预期结果 |
5 结束语
在对Unishare闲置物品共享系统进行设计与开发时,通过对用户需求和市场趋势的分析,我们选择采用Java编程语言、JavaScript、AJAX、MyBatis技术、Tomcat服务器、springboot开源框架,使用关系型数据库MySQL,基于Java Web,快速部署和实施了一个界面友好、操作简单、数据安全、功能全面、处理高效的系统。同时借鉴了相似国内外优秀系统的优点,从界面到系统设计都保证了管理员以及用户能够方便操作。
目前本Unishare闲置物品共享系统正在试运行阶段,各功能均运行正常,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正。经过严格的测试,能够确保系统的每个界面的操作符合常规逻辑,显示出非常出色的性能,它的精度、可靠性、稳健性都达到了极高的水平,而且它还支持快速、精细的点击操作,使用者的使用感受更加良好。此外,它还支持各种主流浏览器,满足不同的使用要求。
Unishare闲置物品共享系统的部署与实施,充分考虑用户的需求,提供简单易用的界面,便捷的操作流程,并进行个性化推荐,主要运行完成了用户注册、登录、首页、通知公告、新闻资讯、用户沟通、闲置商城、我的账户、个人中心(个人首页、商品类型、闲置商城、购买订单、租赁订单、订单配送、用户签收、收藏)等功能模块。该系统的研究与实现有助于闲置物品的再利用,推动共享经济的发展,促进资源的合理利用和循环利用,提升社会整体的资源利用。
参考文献:
[1]Aung T S ,Aung H L,Funabiki N, et al.An Implementation of Web-based Personal Platform for Programming Learning Assistant System with Instance File Update Function[J].Engineering Letters,2024,32(2):
[2]Volkan H A .WebCollectives: A light regular expression based web content extractor in Java[J].SoftwareX,2023,24
[3]崔臣,宋甲旭.基于SpringBoot的校园二手交易系统研究[J].无线互联科技,2023,20(18):31-34.
[4]张远路,李旭.大学生旧物互联共享的现状及对策研究[J].现代商贸工业,2023,44(15):42-43.DOI:10.19311/j.cnki.1672-3198.2023.15.015.
[5]刘曼璐.情感化理念下的校园闲置交易平台设计研究[D].北京建筑大学,2023.DOI:10.26943/d.cnki.gbjzc.2023.000025.
[6]刘玉茹.面向信任的闲置物品交易平台治理机制研究[D].北京邮电大学,2023.DOI:10.26969/d.cnki.gbydu.2023.003238.
[7]何流.共享经济背景下闲置物品共享平台的服务设计研究[D].景德镇陶瓷大学,2023.DOI:10.27191/d.cnki.gjdtc.2023.000101.
[8]D. A H ,Shiva H .What drives demand for paid access to a sharing box with underused items? A choice experiment with Swedish consumers[J].Journal of Cleaner Production,2023,393
[9]Yang Y .Design and Implementation of Student Information Management System Based on Springboot[J].Advances in Computer, Signals and Systems,2022,6(6):
[10]李玉媚,白云,杨萧嘉,等.高校闲置资源交易系统设计与创新——以杭州下沙高教园区为例[J].数字技术与应用,2022,40(09):171-176.DOI:10.19695/j.cnki.cn12-1369.2022.09.52.
[11]梁智睿,陈佳琪,陈欣,等.基于学生客户群体的闲置资源交易平台设计与实现探究[J].中国市场,2022,(24):150-152.DOI:10.13939/j.cnki.zgsc.2022.24.150.
[12]赵冰,刘星含,杨泰森,等.基于微信小程序的校园二手闲置物品交易平台的设计与实现[J].电脑知识与技术,2022,18(21):64-66.DOI:10.14004/j.cnki.ckt.2022.1254.
[13]卞学成,吴伟伟,石铭,等.“互联网+”背景下社区闲置物品交易平台构建[J].电脑知识与技术,2022,18(14):40-41+44.DOI:10.14004/j.cnki.ckt.2022.0829.
[14]李涛,赵莉莉,关梦瑶,等.共享经济背景下的闲置物品共享平台分析及对策研究[J].老字号品牌营销,2022,(08):65-67.
[15]杨博闻.前后端分离的校园闲置物品交易平台开发[J].福建电脑,2022,38(02):90-92.DOI:10.16707/j.cnki.fjpc.2022.02.021.
[16]郑兴,巩淼森.社区物品共享模式分析与服务设计策略[J].设计,2021,34(21):86-89.
[17]杜瑞欣,闫明佳,梁恒嘉,等.大学生校园共享网络服务平台的建设研究[J].今日财富(中国知识产权),2021,(10):118-120.
[18]武千禧,周丰婕.共享经济背景下二手闲置物品交易平台租赁模式研究[J].河北企业,2021,(07):33-35.DOI:10.19885/j.cnki.hbqy.2021.07.010.
[19]郑兴.社区场景下的物品共享服务设计研究[D].江南大学,2021.DOI:10.27169/d.cnki.gwqgu.2021.000178.
[20]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):
[21]张洋洋,王丹,越豪杰,等.校园闲置物品交易平台建设和管理研究[J].无线互联科技,2021,18(08):62-63.
[22]汪琛玉,向丹丹,魏素,等.大学生闲置资源共享平台的可行性分析[J].电脑知识与技术,2021,17(07):61-63.DOI:10.14004/j.cnki.ckt.2021.0730.
[23]曾奕杰.共享经济视角下校园二手物品发布平台设计与实现[J].现代信息科技,2021,5(03):171-175.DOI:10.19850/j.cnki.2096-4706.2021.03.044.
[24]Rina S .Analysis of language features of English corpus based on Java Web[J].Microprocessors and Microsystems,2021,80103611-.
[25]马楠,郑国凯.互联网背景下大学生闲置物品多元融合处理方式的探讨[J].营销界,2021,(05):27-28.
[26]梁雪峰.项目化教学在Java Web网站开发课程中的探究与实践[J].电脑与信息技术,2020,28(06):71-74.DOI:10.19414/j.cnki.1005-1228.2020.06.022.
[27]谢松清,张桂花.基于MVC的校园闲置物品置换系统设计[J].信息与电脑(理论版),2020,32(01):98-99.
致 谢
伴随着设计的完成,大学生涯也随之即将结束。大学期间是我最珍惜的时光,大学时光中学会了很多,也成长了很多,这段时光中每一段回忆都刻在脑海中。感谢一起学习,一起成长同学们,和成长过程悉心教导的老师们,非常感激有你们的陪伴。
首先感谢我的指导老师,设计的完成离不开老师的一系列指导。在毕业设计的完成过程中,老师给出了很多中肯的建议,正是由于老师一丝不苟的工作态度,我的设计才能顺利的完成。
最后,感谢在大学生涯中每一位教导我的老师,是你们教给了我丰富的知识,更教会了我遇到问题时,如何去应对并解决。谢谢你们的帮助与支持。