【《基于Java Web的校园二手交易平台设计与实现》14000字】_第1页
【《基于Java Web的校园二手交易平台设计与实现》14000字】_第2页
【《基于Java Web的校园二手交易平台设计与实现》14000字】_第3页
【《基于Java Web的校园二手交易平台设计与实现》14000字】_第4页
【《基于Java Web的校园二手交易平台设计与实现》14000字】_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于JavaWeb的校园二手交易平台设计与实现摘要在如今大学校园中,校园二手货品的交易主要通过少量学生的自发摆摊,校内论坛等形式交易,而这些方式有明显的局限性,如影响校园管理,交易效率低下,信息不完全等,远远无法满足学生的需求。校内大学生没有可靠的出售和购买渠道,高校内缺少一个规范可靠,便利高效的网上闲置交易平台。基于上述的状况,本文对校园二手交易平台进行了研究与设计。该系统基于B/S架构,运用Java语言进行编写,采用springboot集成框架进行快速搭建开发环境,前端采用Layui框架,JavaScript等技术,后端开发则使用Spring框架,并通过thymeleaf与前端进行信息交互,结合持久层的mybaits框架和数据底层的Mysql数据库进行数据设计,并以springboot内置的Tomcat为web服务器来部署项目,项目整体使用maven技术进行管理。关键词:网上购物;校园二手交易;spingboot;B/S架构目录第一章绪论 第一章绪论1.1选题背景与意义1.1.1选题背景 随着我国的经济的发展和国民经济能力的提升,相比十年前的校园生活,现在大多数大学生的购物消费水平都有显著的提高。网上购物的方式渐渐在高校大学生中流行开来,如近年来大热的淘宝,京东等B2C模式的交易,可是校园里的C2C交易模式终不温不火,这导致校内学生的二手物品的处理成为问题[[]祎梦.校园电子商务模式的研究与探讨[D].山东师范大学,2020.]。一方面高校学生的冲动购物会带来大量的闲置,另一方面有一部分大学生的校园生活不宽裕,需要购买二手物品节约开支。通过对本高校部分学生的不完全统计,数据显示大约有53%的学生表示有出售闲置物品的意愿,60%的学生接受二手物品,甚至有[]祎梦.校园电子商务模式的研究与探讨[D].山东师范大学,2020.每逢毕业季,校园里就会有毕业生的大量闲置物品,每到新学期的开始,学生也会有巨大的二手书籍和生活用品的需求,在理论上校园市场交易应该发展良好,但在实际的校园生活中,二手交易主要通过学生自发的摆摊,校内论坛或者QQ群的信息交流来进行,整个校园的二手信息得不到有效的整合,求购与收购信息分散,不完全,学生间闲置的供求关系得不到妥善的处理。1.1.2选题意义当代高校的大学生中有大量的待出售的闲置,通过上述的一些方式固然可以解决一部分问题,可是要从根本上帮助大学生,就需要一个信息全面的校内交易平台。通过这个平台,学生既可以把自己的二手物品发布出去让其他人看到,也可以看到其他同学的各式各样的闲置物品,选择收藏或者购买。它给学生提供了一个二手物品信息全面而规范的互动平台,可以增强学生之间的交流,甚至可以帮助同学们结交到志同道合的新朋友,既便利了学生的生活,也降低了当代大学生的生活成本。此外,校园二手平台的交易覆盖范围在校内,它的职能和服务的人群更精准,可以切实根据学生的需求进行调整。同学们在校园内进行线上线下的交易,安全性和便捷性都会提高很多。总之,开发这样一个校园二手交易平台有很大的实用价值和市场潜力。1.2国内外选题研究现状在一些欧美国家,由于计算机网络技术的发展,其电子商务在很早就开始发展。欧美国家的自由度较高,人民的消费观念比较前卫,很早就意识到二手物品的巨大价值,所以二手物品的交易在欧美一开始就有很热烈的市场反响,发展更是日新月异。例如早在1995年,创立于加利福尼亚州圣荷西的ebay,就已经开始经营电子商务了,目前eBay网站上拥有超过十亿条用户listing,来自全世界各个国家,包括着服饰、家具、二手汽车等各种物品。此外还有ThredUp,它是美国一个大型二手物品寄售网站,网站的交易过程十分简单,用户在网站的进行出售后,只需要将二手衣物打包装进一个统一化的袋子里就可以了,之后会由ThredUP派专人取走,衣服经ThredUP检验合格后才可以可出售,在买家收到货后,用户网站绑定的信用卡上会立刻收到付款,简单易操作[[]曲蕴慧.校园二手交易平台的构建与实现[J].电子设计工程,2014,22(006):70-72.[]曲蕴慧.校园二手交易平台的构建与实现[J].电子设计工程,2014,22(006):70-72.我国的电子商务起步较晚,但速度发展极快,特别是近些年互联网与智能手机的普及,催生了国内很多电子商务巨头公司,很大程度上拉动了国内网上购物的消费总额。在二手物品交易方面,中国三大二手物品交易平台主要是阿里巴巴旗下的闲鱼、58同城旗下转转和京东旗下的爱回收,自兴起以来,占电子商务销售总额的比例越来越高。其中的闲鱼发展势头最迅速,深受年轻群体的喜爱,在闲鱼上你可以买到天南海北的二手闲置。闲鱼不参与具体交易,交易过程皆由用户来进行协商,自由度较高,它在整个国内享有很高的知名度,平均日活跃用户超过5000万,在它的带领下,渐渐形成了较大规模的二手交易市场[[]广萍,胡靖珩."闲鱼"现状分析及对策——基于用户调研与分析[J].办公自动化,2020(17).[]广萍,胡靖珩."闲鱼"现状分析及对策——基于用户调研与分析[J].办公自动化,2020(17).1.3本文的主要工作1.对校园二手交易平台这一课题提出一些客观性的观点,对课题的发展背景和研究意义以及国内外的研究现状进行简述。2.对项目开发过程可能用到的主要理论和相关技术进行介绍3.在对校园学生了解的基础上进行系统的需求分析,分析系统角色,系统功能,设计可行性的分析等几个方面进行详细阐述。4.先介绍系统设计的整体架构,随后对用户所需要实现功能模块的设计,管理员功能模块的设计,数据库的逻辑与物理设计等进行介绍。5.从系统的总体架构,各个模块功能,部分核心代码等方面来介绍系统的具体实现过程6.对系统的功能和性能进行测试,保证系统的预期运行效果。7.总结系统的优点与缺点,回顾开发过程中遇到的问题和解决方案,对系统的扩展性和后续的工作进行展望第二章相关基础理论和技术介绍2.1Spring,springboot框架简述Spring:Spring框架是一个免费开放源代码的J2EE应用程序框架。是针对bean的生命周期进行管理的轻量级容器,属于非入侵式框架。它支持事务的处理和对框架的整合。Spring的灵活而全面的扩展集和第三方库,可以使开发人员可以构建大量的应用程序。框架的核心思想为控制反转和依赖注入。Springboot: Springboot是对spring进行升级后的一个全新的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,具有开箱即用,自动装配等特点。该框架使用了特定的方式来进行配置,从而使开发人员能够更加专注于业务逻辑,SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决[[]云飞.JavaEE开发的颠覆者:SpringBoot实战[M].电子工业出版社,2016.[]云飞.JavaEE开发的颠覆者:SpringBoot实战[M].电子工业出版社,2016.2.2Ajax技术Ajax即异步JavaScript和XML,是一种用于创建快速动态网页的技术。AJAX可以在不重新加载整个页面的情况下对网页局部信息进行刷新,减轻与服务端的数据传输量,提升用户的浏览体验。2.3ThymeleafThymeleaf是springboot推荐的用于渲染HTML内容的模板引擎,类似传统的JSP,它可以高效的与SpringMVC等Web框架进行整合,而且它与SpringBoot完美结合,SpringBoot提供了Thymeleaf的默认配置,并且为Thymeleaf设置了视图解析器。它还可以快速实现表单绑定、属性编辑器、国际化等功能。2.4Mybatis框架简述MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射,MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作,可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO为数据库中的记录[[]乔岚.基于MyBatis和Spring的JavaEE数据持久层的研究与应用.信息与电脑,2017.[]乔岚.基于MyBatis和Spring的JavaEE数据持久层的研究与应用.信息与电脑,2017.特点:简单易学:没有任何第三方依赖,通过文档和源代码的阅读,就可以基本对它进行使用。灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。2.5MySQLMySQL是目前最流行的SQL数据库管理系统,而且是一款开源,高效的软件。MySQL数据库服务器非常快速,可靠,可扩展且易于使用而且还可以跨平台,常见的Linux、Windows、FreeBSD系统都可以进行移植使用。它还是一个客户端/服务器系统,由支持不同后端的多线程SQLServer,几个不同的客户端程序和库,管理工具以及广泛的应用程序编程接口组成,可以使用大量的MySQL软件[[]胡敏.Web系统下提高MySQL数据库安全性的研究与实现[D].北京邮电大学,2015.[]胡敏.Web系统下提高MySQL数据库安全性的研究与实现[D].北京邮电大学,2015.2.6开发环境与环境配置IntelliJIDEA:该软件是Java编程语言开发的集成环境,可以最大程度的加快开发的速度,简单而又功能强大,拥有大量的快捷键,代码检查,智能编辑等功能。在IntelliJIDEA中,集成版本控制系统以及多种支持的语言与框架随时可用,无需另外安装插件,完美支持maven开发方式[[][]陈立兵.IntelliJIDEA——开发人员利器[J].程序员,2009(1):118-120.Maven: Maven是一个项目管理工具,可以对Java项目进行构建、依赖导入与管理。Maven可以统一集中管理好项目所需要的相关依赖包,不需要程序员再去一一寻找,并且能够自动解决重复和冲突问题,快速整合第三方插件和框架。第三章系统需求分析3.1系统可行性分析3.1.1技术可行性 技术可行性就是依据现有的技术判断能否达到网站构建的基本要求,以及能否顺利进行后期的开发与拓展。在开发所用计算系统方面,Win7以上的操作系统都可以满足开发项目的运行环境,在此二手交易系统中,用到最多的就是批量处理大量数据,结合对校园内学生的数量与交易量的估计,使用Mysql数据库足以满足中小型网站的数据并发访问和存储量。基于web的后端开发框架可以使用spring系列技术,网站的性能与功能方面的需求用spring完全可以做到。集成开发环境选择的是IntelliJIDEA,它拥有智能的开发插件,支持maven项目和各类版本工具(git、svn等),因此该系统的构建在技术方面是可行的。3.1.2经济可行性 在开发软件方面,所选用的mysql数据库是开源免费的,所用的相关框架也是开源的技术,所以前期开发成本基本可以忽略。在网站部署所需费用方面,因开发采用springboot技术开发,后期可以直接将项目打包部署到学校的官网服务器上,可以在学校官网新开一个二手交易入口或者构建一个独立网站供广大学生使用,在和校方进行合理沟通后,可以以较低的成本解决网站部署问题。综上所述,该系统的构建在经济也是可行的。3.2需求概述需求的分析是软件开发过程中必不可少的一个环节,通过需求分析,我们要回答系统必须做什么这个问题,即对目标提出完整,准确,清晰,具体的要求[[]陆惠恩.实用软件工程[M].清华大学出版社,2006.]。在本二手交易系统开发前,我们需要真正分析学生的需求,详细考虑[]陆惠恩.实用软件工程[M].清华大学出版社,2006.3.3功能性需求3.3.1系统角色分析角色或者执行者(Actor)是指与系统产生交互的外部用户或者外部系统。本系统的使用角色主要分为游客、普通用户和系统管理员三种。以下是对每个角色的详细介绍。游客:游客没有进行登录时,只可以浏览物品,没有权限进行其他操作,可以进行注册成为普通用户来拥有更多的功能,游客用例图如图3-1所示。普通用户:普通用户是经过信息注册过的用户,可以通过账号密码登录,可以浏览二手物品信息,既可以发布物品,也可以购买物品,查看订单等。用户的用例图如图3-2所示。系统管理员:管理员对整个平台进行管理,可以管理用户,也可以管理商品,保证平台的规范化的同时也要维护系统稳定,管理员的用例图如图3-3所示。图3-1游客用例图图3-2用户用例图图3-3管理员用例图3.3.2用户前端系统功能注册登录:用户进入系统首页,系统显示登录与注册选择,用户输入手机号和密码后进行登录,系统检查是否有此用户信息,若存在此用户且密码正确,允许用户进入。若不存在此用户或用户输入账号密码有误,拒绝登录,并在本页面显示相应的提示信息。用户若忘记密码,可以在通过邮箱的验证来重置密码。游客模式:若想以游客身份进入网站,直接在登录界面点击游客模式即可进入,登录后可以查看商品,也可以点击登录注册成为一名新用户。浏览商品:无论游客和用户,都可以拥有浏览商品的功能,可以按分类查看不同的商品,可以点击单个商品查看详细信息,还可以通过模糊匹配来查找想要的商品,系统需要给用户提供多种方式来进行浏览。闲置管理:用户可以在网站主界面选择发布闲置物品,在填写系统要求的信息后方可进行发布,发布后会实时更新到商品展示模块。用户在闲置发布后,如果发现信息有误可选择对闲置进行信息修改,也可以在不想出售时下架闲置。收藏商品:用户在查看商品详情信息时,对心仪的商品可以进行收藏,方便下次登录进行查看或购买,在点击收藏后,可以在收藏夹中进行查看,收藏夹的内容可以删除。购买商品:用户在商品详情页可以对商品进行购买,购买后系统会提示用户及时与卖家联系,进行线下交易。用户可以在我的订单查看卖家和商品的一些基本信息。信息通知与查看:用户购买商品或者管理员下架商品时都会给卖家发送相关通知消息,卖家登录后可以对信息查看,删除信息。个人信息修改:在个人中心对信息进行修改,例如修改个人头像,昵称等,手机和邮箱一经注册绑定便不可以修改,保证用户的唯一性。3.3.3管理端系统功能登录:管理员进入特定的后台界面,使用特定的账号密码进行登录,若账户或密码输入错误,就无法正常的登录,给出相应的提示。商品管理:管理员可以查看平台上所有待出售的商品,可以按名称进行搜索匹配,对不符合规定的商品,管路员有权限对商品进行强制下架。用户管理:管理员可以看到所有用户,通过搜索框来搜寻特定用户,管理员有权限对操作违规的用户进行一段时间的禁用,对于严重违反平台规定的用户,管理员可以对其进行注销,清除该用户在平台的数据。查看商品:浏览平台所有商品,查看所有商品的详细信息,包括图片说明,名称,价格等具体信息。3.4非功能性需求3.4.1界面需求页面应具有简单明了的导航指示和清晰的布局,链接和空链接,带给用户良好的交互体验。3.4.2响时间求3数据库服务器,访问无效界面等,避免出现长时间等待甚至无响应,影响用户的使用[[][]高星宇,张家骏.校园二手交易平台的设计与实现[J].福建电脑,2020,v.36(02):91-可性需求7*24统正常运行,正确提示相关内容。3.4.4可展性求系统的设计要求满足可扩展性,以适应将来功能修改和扩展的需求。第四章系统总体设计4.1系统设计原则本二手交易平台的主要目的是服务学生,方便学生在通过网络上进行二手物品交易。原则是做到用户浏览界面友好,操作简单,信息可靠,交易安全。具体做到:1.交互体验良好:界面美观友好,操作便捷,实用性高。2.信息实时更新:为充分展现网站的实时性,二手交易平台采用动态网页技术实现内容发布,保证平台上信息的及时性。3.多样性:平台支持生活上的各种闲置物品的发布与查看,提供多种信息搜索及查看方式,用户对上架物品可以有较多的选择权。4.信息有效性:采用学号,手机号,院系等多种用户信息的注册,保证双方交易的真实性,降低交易风险。5.交易安全性:完整结合买家和卖家以及二手物品之间的信息,提供一个交流沟通的平台,同时为了确保用户资金安全性,平台不提供支付服务,买卖双方在线下在交易时付款。6.可用性:即要构建的系统需要功能齐全,能够基本满足学生的闲置需求。4.2系统总体设计4.2.1软件架构设计目前使用最广泛的软件体系结构是B/S和C/S两种结构,结合校园二手交易的平台的需求和定位,本系统选择B/S架构来实现,B/S架构即使用浏览器和服务器的结合开发系统。用户的操作主要在浏览器来完成,程序中极少的事务操作在前端,大部分的事务逻辑操作都在服务端进行,对用户的请求采取分层处理,保证了数据的独立性。系统的核心开发框架选择SpringBoot来实现,springboot开箱即用,可以整合spring,mybatis等大量框架,并且自动装配,省去了大量配置xml的工作,使程序员专注于业务逻辑的代码编写。在springboot中将整个系统分为四层,分别为view层:负责数据的渲染,浏览器界面的展示,controller层:负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到view层,Service层:存放业务逻辑处理,可以调用mapper层进行数据库的操作,但不是直接对数据库进行操作,提供controller层调用方法,Mapper层:负责与数据库的交互,把数据存放到持久层中的数据库相关表中,同时提供增删改查的操作[[]王能.基于B/S结构的校园二手物品交易平台的构建[J].信息与电脑:理论版,2012(6):80-81.]。具体流程如图4[]王能.基于B/S结构的校园二手物品交易平台的构建[J].信息与电脑:理论版,2012(6):80-81.图4-1流程图4.2.2功能结构设计系统开发过程中,分为前台与后台开发,前台系统主要为用户和游客提供闲置交易的服务,后台系统用来管理员对进行用户及商品数据的管理和系统的维护。功能设计图如图4.2所示。图4-2功能设计图4.3功能模块设计4.3.1前端子系统设计登陆注册模块设计:用户在点击注册按钮,如实填写注册信息成为用户后才可以登陆网站首页,进行购物等一系列操作,在注册时会对用户的部分信息检查,已经注过的手机号或邮箱不允许重复注册。注册成功后,输入账号密码进行登陆,输入错误或用户状态异常会登陆失败,给出相关提示。用户注册与登录时序图如图4-3所示:图4-3登陆注册模块商品浏览模块设计:用户在平台主界面可以浏览各种商品,可以按类型查看商品,也可以模糊搜索一些商品,系统会根据用户在前台的不同请求从数据库中查询不同的商品进行分页展示。时序图如图4-4所示图4-4商品浏览模块闲置管理模块设计:用户应该在登陆后可以发布自己想要出售的闲置,点击发布按钮进入信息填写界面,填写完整的信息后传入数据库中,同时在商品展示区实时更新。用户可以对自己的闲置进行管理,进入个人闲置中心后可以选择修改闲置的信息重新发布或直接删除闲置。该模块时序图如图4-5所示 图4-5闲置管理模块购物与订单模块设计: 用户在查看商品的详细页时,用户可以对喜欢的闲置购买,点击购买会弹出购买确认的询问,在确认购买后系统会提醒买家及时与卖家电话联系,同时给卖家发送一条新消息。购买成功后会更新相应商品的状态,而且买家与卖家都可以在个人的订单中心查看该商品订单的信息。模块时序图如图4-6所示图4-6购物与订单模块用户收藏模块设计: 在查看商品的详情页中,用户同样可以点击收藏,该商品的信息就会存入个人的收藏夹中,用于下次登录时购买或查看。当该商品被出售或下架时,收藏夹中的商品状态也会被立即修改,保证信息的准确性。用户可以把已出售或下架的商品移除个人收藏夹。收藏模块的时序图如图4-7所示图4-7用户收藏模块个人信息修改模块设计:用户可以在个人中心对自己的信息进行修改,如个人头像,密码等重要信息都可以进行修改,点击确认修改后,用户的信息就会被更新,刷新界面就会看到修改后的信息。该模块设计的时序图如4-8所示图4-8个人信息修改模块4.3.2后端子系统设计商品管理模块设计:管理员在登录后可以对所有商品进行管理,管理员有权限强制下架某件违规商品,点击下架后,商品的状态会立刻被改变,商品展示区的该商品将不会被展示。此外管理员还可以在对整个商品库的商品进行搜索。设计时序图如4-9所示图4-9商品管理模块用户管理模块设计:管理员可以对系统中的用户管理,当管理员选择禁用某用户时,管理端显示的用户状态会发生改变,用户短时间会无法登陆进行正常操作,当管理员删除用户时,数据库中的用户表中该用户的数据会被删除,用户发布的商品也会被一并清空。设计时序图如4-10示图4-10用户管理模块4.4系统数据库设计4.4.2数据库概念模型设计 数据库的概念模型设计通过对用户需求进行抽象与归纳,把现实中的概念抽象成实体,分析并描述出实体与实体间的关系,形成一个独立于具体DBMS的概念模型。本系统通过对校园情况的分析,把问题抽象出具体的实体关系。通过分析,该系统整体数据库概念模型的E-R图如图4-11示。图4-11系统E-R图由图4-12知,我们可以从整个校园二手系统中抽象出用户,商品,管理员,订单,信息等实体。各个实体的属性将在下面列出。用户实体:抽象出用户的基本信息,有用户id,名称,电话等属性,属性图如4-12示。图4-12用户实体商品实体:把商品的属性结合起来抽象为实体,有商品id,商品名称,价格的基本属性。属性图如4-13图4-13商品实体收藏夹实体:用户的收藏商品时,可以抽象出一个收藏夹实体,用来吗描述用户收藏的信息,如收藏名称,收藏时间等属性,属性图如4.14示。图4-14收藏实体订单实体:,描述卖家与买家交易产生的订单,有订单id,订单名称等属性,属性图如4-15示图4-15订单实体 管理员实体:由管理员角色抽象出管理员的一些基本属性,如账号,密码等属性。如图4-16。图4-16管理员实体 信息实体:管理员或用户发发送的信息,主要有信息内容,发送时间等属性。如图4-17图4-17信息实体4.4.3数据库逻辑设计数据库逻辑设计阶段主要任务是把数据库概念阶段设计好的系统E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。在实际应用中,需要在数据库中存储大量的用户和商品的数据,因此数据库的设计必须规范,高效,科学,保证信息的正确性。该系统选用的数据库为Mysql,新建的数据库名为market,一共设计了六个数据表,分别为用户表,商品表,收藏夹表,订单表,管理员表以及信息表。用户表(user)包含用户注册要用到的所有信息,主要用来注册用户的登陆,以及对用户的增,删,改,查等功能,如表REF_Ref70501767\p\h4-1所示。表4.1用户信息表字段名称数据类型主键是否空说明user_idvarchar(36)YN用户iduser_namevarchar(40)NY用户昵称user_phonevarchar(11)NN手机号user_emailvarchar(20)NN邮箱user_passwordvarchar(14)NY密码user_describevarchar(200)NY用户自我描述user_imagevarchar(50)NY头像地址user_vercodevarchar(6)NY用户验证码user_sexvarchar(2)NN性别user_timevarchar(30)NN注册时间user_statevarchar(4)NN用户状态商品表(goods)此表包含着用户发布商品的所有信息,用户和管理员都可以对此表进行增删改查操作,如表REF_Ref70502223\p\h4-2所示。表4-2商品表字段名称数据类型主键是否空说明goods_idvarchar(36)YN商品idgoods_namevarchar(40)NN商品名称goods_oldpricefloatNN商品原价goods_newpricefloatNN商品现价goods_typevarchar(10)NN商品类型goods_numbersintNN商品数量goods_describevarchar(200)NY商品描述goods_timevarchar(30)NN商品发布时间goods_statevarchar(5)NN商品状态goods_owneridvarchar(36)NN商品卖家idgoods_imagevarchar(50)NN商品图片地址收藏表(collection)此表包含用户收藏商品基本信息,只有用户有权对此表进行操作,如表REF_Ref70502319\p\h4-3所示。表4-3收藏表字段名称数据类型主键是否空说明collect_idvarchar(36)YN收藏idcollect_timevarchar(30)NN收藏时间collect_goodsnamevarchar(40)NN收藏商品名称collect_pricefloatNN收藏商品价格collect_typevarchar(10)NN收藏商品类型collect_ownernamevarchar(40)NY卖家昵称collect_msgvarchar(200)NY收藏商品简述collect_statevarchar(5)NN闲置状态collect_myidvarchar(36)NN收藏者idcollect_owneridvarchar(36)NN卖家idcollect_goodsidvarchar(36)NN商品id订单表(order)包含了对交易信息及商品信息的描述,如表REF_Ref70502429\p\h4-4所示。表4-4订单表字段名称数据类型主键是否空说明order_idvarchar(36)YN订单idorder_goodsnamevarchar(40)NY订单商品名order_pricefloatNN交易价格order_goodstypevarchar(10)NN交易商品类型order_ownernamevarchar(40)NY卖家昵称order_mynamevarchar(40)NY买家昵称order_phonevarchar(11)NN买家电话order_phone2varchar(11)NN卖家电话order_timevarchar(30)NN交易时间管理员表(admin)该表是对系统管理员的个人信息,管路员可以对表中部分数据项操作,如表REF_Ref70502454\p\h4-5所示。表4-5管理员表字段名称数据类型主键是否空说明admin_numvarchar10)YN管理员账号admin_passwordvarchar(10)NN管理员密码admin_namevarchar(20)NY管理员名称admin_msgvarchar(200)NY管理员简述信息表(messgae)包含用户和管理员发送的信息的全部属性,用户可以进行删除操作,如表REF_Ref70502480\p\h4-6所示。表4-6信息表字段名称数据类型主键是否空说明message_idvarchar(36)YN消息idmessage_contentvarchar(100)NY消息内容message_statevarchar(4)NN信息状态message_timevarchar(30)NN发送时间message_receiveidvarchar(36)NN接收方id第五章系统实现本章节介绍了校园二手物品交易系统功能的实现,因该系统功能较多,实现代码较繁琐,这里只给出游客模块、用户模块和管理员模块的中部分关键功能的实现过程和部分关键代码。5.1项目配置设置本系统采用maven对Java项目进行管理,核心是POM,在pom.xml中我们可以引入各种框架的依赖包,maven会自动导入相关依赖,此外该xml文件还包含了项目的基本信息,项目构建的信息等等,显著提升了开发效率,该项目也用到了springboot启动依赖包,thymeleaf模板引擎,mybatis依赖包以及一些工具类的依赖[[]杨锦山,王辉.基于SpringBoot的项目信息管理系统的设计与实现[J].电子技术与软件工程,2020(9).]。pom[]杨锦山,王辉.基于SpringBoot的项目信息管理系统的设计与实现[J].电子技术与软件工程,2020(9).<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web-services</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>基于springboot的自动装配和开箱即用特点,大多数SpringBoot应用只需要很少的Spring配置,但对于数据库的数据源,路径映射,框架设置,编码等,需要我们在项目的application.yaml中进行独立的配置,配置文件部分代码如下所示。spring:#mysql数据源datasource:username:rootpassword:123456url:jdbc:mysql://localhost:3306/market?serverTimezone=UTC&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name:com.mysql.cj.jdbc.Driverservlet:multipart:max-file-size:100MBmax-request-size:1000MBdevtools:restart:enabled:true#设置开启热部署additional-paths:src/main/java#重启目录exclude:WEB-INF/**freemarker:cache:false#页面不加载缓存,修改即时生效mybatis:type-aliases-package:com.xia.market.pojomapper-locations:classpath:xia/mapper/*.xmlconfiguration:map-underscore-to-camel-case:true5.2游客功能实现在登录主界面可以选择游客模式直接进入相应的界面,程序会对游客和用户进行区分,游客的界面只有商品展示和登录的功能,登录成为用户后才可以拥有更多的操作。游客界面如图5-1所示。图5-1游客界面5.3用户功能实现5.3.1用户注册实现点击注册进入注册界面,如图5-2所示,填写用户基本信息,在填写信息时,会对一些用户的输入进行检查,如邮箱的格式,必填项不可为空,手机号邮箱不可重复注册等,信息符合条件的用户才可以成功注册。在这里特别指出,在手机号和邮箱的唯一性的验证中,当用户的鼠标焦点离开输入框时,通过Ajax方式带着数据向后端发送验证请求,查询数据库中是否有此数据的记录,若数据有重复,后端会将错误信息封装在response消息体中,浏览器在对信息解析与判断后会动态的在输入框后给出提示。代码如下所示。前端js:layui.use('jquery',function(){$=layui.$;$("#phoneCertify").blur(function(){$.ajax({type:"POST",async:false,//设置同步方式,非异步!url:"checkPhone",data:{'phone':$("#phoneCertify").val()},scriptCharset:'utf-8',success:function(data){$(".phone").text(data.key)}});});});后端controller处理://检查电话是否合法@ResponseBody@RequestMapping(value="checkPhone",produces="application/json;charset=utf-8")publicStringphone(@RequestParam("phone")Stringphone){HashMap<String,Object>map=newHashMap<>();if(phone.length()==11){Useruser=userService.SelectUserByphone(phone);if(user!=null){map.put("key","该手机号已注册");}else{map.put("key","");}}else{map.put("key","");}returnJSONObject.toJSONString(map);}}图5-2注册界面5.3.2用户登录实现用户输入账号密码进行登录,点击登录,如图5-3所示,浏览器通过先发起请求向后端发送数据,service层通过账号查询出该用户密码,并与用户输入进行身份比对,身份合法后再查询该用户的状态,状态正常才可以进入用户主界面。浏览器的Session对象能存储特定用户会话所需的属性及配置信息,所以在用户登录成功后把用户的id,phone信息和登录状态信息Userlogin放在session中,在进行收藏夹查看,订单查看的操作时,可直接取session中的数据查询数据库。若用户在注销后,会把Userlogin变量从session中删除,此时想通过url进入主界面或其他用户界面,在springboot中配置的拦截器在检查到Userlogin的信息不存在时会对该操作进行拦截,将界面直接定位到index.html。部分实现代码如下。登录前验证代码:functionlogintest(){$(".loginFlag").text("");$.ajax({type:"GET",url:"checkUser",dataType:"json",async:false,//设置同步方式,非异步!data:{'phone':$(".userPhone").val(),'password':$(".userPassword").val()},success:function(data){$(".loginFlag").val(data.key);console.log($(".loginFlag").val())}});if($(".loginFlag").val()==="ok"){returntrue;}if($(".loginFlag").val()==="error"){layer.alert('账号或密码输入错误');returnfalse;}if($(".loginFlag").val()==="forbid"){layer.alert('您已被暂时禁用');returnfalse;}}后端controller验证代码:@ResponseBody@RequestMapping(value="checkUser")publicStringloginCheck(Stringphone,Stringpassword,HttpServletRequestrequest){HashMap<String,String>map=newHashMap<String,String>();Useruser=userService.SelectUserByphone(phone);if(user==null){map.put("key","error");}else{if(user.getUserPassword().equals(password)==true){if(user.getUserState().equals("正常")){request.getSession().setAttribute("loginuser","permit");request.getSession().setAttribute("phone",phone);map.put("key","ok");}else{map.put("key","forbid");}}else{map.put("key","error");}}returnJSONObject.toJSONString(map);}图5-3用户登录界面5.3.3闲置管理实现用户点击主界面的发布可以进行闲置的发布,填写想出手商品的二手信息,其中商品名称,商品图片说明都是必填项,用户填写完整后发布,商品区会实时显示出该商品。如图5-4所示。点击我的闲置,用户发布过的闲置会分页显示,对个人发布的闲置商品进行管理,可以查看基本信息,可以点击修改进入修改界面,如图5-5所示,修改后重新发布,或者点击下架从平台中删除该商品。图5-4闲置显示界面图5-5修改界面5.3.4商品浏览实现 用户在主界面查看待售的商品,可以在搜索框内输入商品名字模糊搜索,可以点击类别查看某一类型的商品,当用户的商品请求方式不同时,前端会发送不同标识信息,系统中用户flag变量实现标志位信息的存储,后端controller层方法会根据request请求中标识位的数据来查询商品信息,并由thymeleaf负责把数据渲染到html界面,如图5-6所示,点击展示区的单个商品会进入商品详情页,查看该商品更多的信息,选择收藏或购买,如图5-7所示。部分实现代码如下所示。后端查询不同商品实现代码:@RequestMapping("/query")publicStringquery(Modelmodel,StringpageNumber,StringgoodsType,Stringcontent,Integerflag,HttpSessionsession){StringuserId=(String)session.getAttribute("userId");if(flag==1){inti=goodsService.queryGoodsnumber();session.setAttribute("goodsNumber",i);intpageNum=Integer.parseInt(pageNumber);System.out.println((pageNum-1)*12);List<Goods>goods=goodsService.selectPagegoods((pageNum-1)*12,12);session.setAttribute("goodsList",goods);}if(flag==2){inti=goodsService.SelectnumberBytype(goodsType);System.out.println(i);session.setAttribute("goodsNumber",i);intpageNum=Integer.parseInt(pageNumber);List<Goods>goods=goodsService.SelectgoodsBytype(goodsType,(pageNum-1)*12,12);System.out.println(goods.toString());session.setAttribute("goodsList",goods);}if(flag==3){inti=goodsService.SelectnumberByname(content);System.out.println(i);session.setAttribute("goodsNumber",i);intpageNum=Integer.parseInt(pageNumber);List<Goods>goods=goodsService.selectPageByname(content,(pageNum-1)*12,12);session.setAttribute("goodsList",goods);}Stringloginuser=(String)session.getAttribute("loginuser");if(loginuser==null){return"tourist::show";}else{return"show::show";}}前端商品渲染代码:<divclass="layui-col-md10layui-col-md-offset1"id="mianGoods"><divth:fragment="show"class="showGoods"><inputtype="hidden"name="pageNumber"value="1"id="pageNumber"><inputtype="hidden"name="goodsNumber"th:value="${session.goodsNumber}"id="goodsNumber"><ul><lith:each="goods:${session.goodsList}"><ath:href="@{/User/lookGoods/{goodsId}(goodsId=${goods.getGoodsId()})}"target="_blank"><divclass="layui-col-md3"onclick="lookGoods()"><divstyle="max-height:430px;max-width:280px"class="everyGoods"><imgth:src="@{/User/showImages/{goodsId}(goodsId=${goods.getGoodsId()})}"style="width:100%;height:360px"></img><label><h4th:text="${goods.getGoodsName()}"></h4></label><label>原价:¥<spanth:text="${goods.getGoodsOldprice()}"></span></label><label><spanth:text="'现价:¥'+${goods.getGoodsOldprice()}"class="newPrice"></span></label><br><label><spanth:text="'更新于'+${goods.getGoodsTime()}"class="update"></span></label></div></div></a></li></ul></div></a></div>图5-6搜索界面图5-7商品详情页5.3.5收藏功能实现用户在商品页点击收藏按钮把商品放入收藏夹,用户不可以收藏自己的发布的商品,否则会收藏失败。在收藏夹中可以查看商品的价格,状态等实时信息,当商品的信息改变时,收藏夹中的信息也会变化。收藏夹实现界面如图5-8所示。图5-8收藏界面5.3.6购买与订单管理实现用户可以选择购买该商品,点击购买后,刷新主界面,该商品会从商品区中消失,所有收藏该用户的收藏夹中该商品状态会被改为已售。在用户点击购买时,浏览器会向后端发送异步请求,业务逻辑层会根据商品id查询该商品的卖家信息,若与用户是同一人,controller层的方法会把信息通过HashMap键值对的形式返回前端,提示用户无法购买自己的商品。用户购买成功后平台会给出购买成功提示,而且系统会自动根据卖家id给卖家发送一条消息,卖家可以在消息栏中查看到购买买家信息和购买时间等,同时也会生成一条订单记录,用户可以在我的订单中看到该订单的一些信息。实现效果图如图5-9,5-10所示,部分代码如下所示。购买商品时,后台实现代码:@ResponseBody@RequestMapping("buygoods")publicStringbuyGoods(StringgoodsName,StringgoodsPrice,StringgoodsType,StringownerName,StringgoodsId,StringownerId,Stringphone,HttpSessionsession){Orderorder=newOrder();HashMap<String,Object>map=newHashMap<>();//设置myid,mynameStringmyid=(String)session.getAttribute("userId");Useruser1=userService.SelectUserByid(myid);StringuserName1=(String)session.getAttribute("userName");Orderorder1=ordersService.queryOrderbyids(goodsName,user1.getUserPhone());if(myid.equals("")){map.put("key",4);}else{if(ownerId.equals(myid)){map.put("key",1);}else{if(order1==null){//订单idorder.setOrderId(UUID.randomUUID().toString());//买家名称order.setOrderMyname(userName1);order.setOrderPhone(user1.getUserPhone());//设置时间Datedate=newDate();StringstrDateFormat="yyyy-MM-ddHH:mm:ss";SimpleDateFormatsdf=newSimpleDateFormat(strDateFormat);Stringformat=sdf.format(date);order.setOrderTime(format);//价格order.setOrderPrice(goodsPrice);//商品名称order.setOrderGoodsname(goodsName);//卖家名称Useruser=userService.SelectUserByid(ownerId);order.setOrderOwnername(user.getUserName());order.setOrderPhone2(user.getUserPhone());//生成订单ordersService.insertOrder(order);goodsService.updateState("已售",goodsId);//增加信息Messagemessage=newMessage();message.setMessageId(UUID.randomUUID().toString());message.setMessageState("未读");message.setMessageTime(format);message.setMessageReceiveid(ownerId);StringuserName=userService.SelectUserByid(myid).getUserName();Stringcontent=userName+"购买了你的"+goodsName+"。";message.setMessageContent(content);messageService.addMessage(message);//更改收藏夹的商品collectionService.updateState("已售",goodsId);map.put("key",2);}if(order1!=null){map.put("key",3);}}}returnJSONObject.toJSONString(map);}图5-9订单界面图5-10消息界面5.4管理员功能实现5.4.1登录实现输入http://localhost:8080/admin进入管理员登录界面,输入管理员账号和密码登录,实现界面如图5-11所示。

图5-11管理员登录界面5.4.2用户管理实现管理员在管理界面点击用户管理选项,会在右边局部刷新,分页显示出用户信息的表格,如图5-12所示,管理员可以按名字搜索用户,可以有禁用,解禁,删除等操作。点击禁用与解禁,用户表格中的状态实时显示变化,并更新到用户数据表中。图5-12用户管理界面5.4.3商品管理实现该部分对商品的管理功能进行了实现,商品显示的表格实现使用layui的数据表格,layui会把按页数和页面大小请求到的数据进行显示。如图5-13所示,管理员对商品可以进行下架,可以按名称搜索商品后重载表格信息,匹配信息存于where变量的,在对layui表格重载时,会把该变量信息放在request请求中供controller层的方法处理。当管理员下架商品时,系统还会自动给该商品的发布者发送消息。部分代码如下。前端表格渲染代码:<divclass="layui-fluid"><!--闲置--><divclass="layui-row"style="margin-top:3%"><divclass="layui-col-md10layui-col-md-offset1"><divclass="demoTable">搜索闲置:<divclass="layui-inline"><inputclass="layui-input"name="id"id="demoReload"autocomplete="off"placeholder="闲置名称"></div><buttonclass="layui-btn"data-type="reload"id="searchTransport">搜索</button></div><tableclass="layui-hide"id="test"lay-filter="demo"></table></div></div></div><scriptth:inline="none">varid;layui.use('layer',function(){var$=layui.jquery,layer=layui.layer;});layui.use('table',function(){vartable=layui.table;table.render({elem:'#test',url:'/admin/goodsadmin',where:{Name:''},page:{limit:12 //初始每页几条数据},id:'testReload',cellMinWidth:60//,skin:'line'//行边框风格,even:true//开启隔行背景,cols:[[{type:'checkbox'},{field:'goodsName',title:'闲置名称'},{field:'goodsType',title:'类型'}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论