基于Jsp和MySQL实现的校园二手物品交易系统

基于Jsp和MySQL实现的校园二手物品交易系统 摘 要 校园二手物品交易系统主要用于解决处理学生在校期间遗留下各种二手物品的交易问题,同时,交易平台也给在校学生提供新物品需求

本文包含相关资料包-----> 点击直达获取<-------

基于Jsp和MySQL实现的校园二手物品交易系统

摘 要

校园二手物品交易系统主要用于解决处理学生在校期间遗留下各种二手物品的交易问题,同时,交易平台也给在校学生提供新物品需求。广交地稀人广,宿舍资源更是供不应求。有些闲置物品食之无味,弃之可惜,关键是极大地占用了宿舍空间。阳光校园二手交易平台是以广交院为平台而设计的二手交易网,利用简单快捷的交易方式为广交大学生提供便利的二手物品交流平台。

本文研究了一个校园二手物品交易系统,该系统基于B/S架构模式,使用SSM框架开发,并根据现有的网络二手交易系统设计优化而成。系统主要以Java语言作为开发基础,使用了Jsp+Sping+SpringMVC+Mybatis等技术,采用MyEclipse作为开发工具,以MySql作为数据库工具,使用Tomcat作为Web服务 器。本系统分为前台模块和后台管理模块,其中前台模块实现了物品分类、物 品详情、用户注册、用户登录、物品发布、在线支付和用户个人中心等功能; 后台管理模块实现用户管理、物品管理、订单管理、钱包管理和系统设置等功能。本系统功能比较完善,界面友好,操作简单,方便在校生实现资源再利用。

利用现代信息技术手段实现的校园二手物品网络交易大大减低了物品在交 易过程中的成本,更重要的是,这些交易过程不会受到空间和时间上的限制,所以无论从提升校园整体形象上还是从经济利益上,都有着十分重要的意义。

关键词 :校园二手物品,交易系统, SSM,Jsp,MySql,maven框架

第一章 绪论

1.1 设计背景、目的及意义

1.1.1 设计背景

"二手市场"实际上就是旧货市场。而就校园二手市场的交易物品类别比较丰富,例如日常用品、电子设施、书刊文献等均为校园二手市场里普遍存在的物品,并且因学生的日常用品具有较强的重复应用特性与学生本身的不稳定性因素,让校园二手市场存在着较为稳定的需要,此类二手市场的存在增加了资源的应用率,应该得到大家鼓励和认同的。然而因为校园二手市场的运营制度存在较大的漏洞,所以应创建一个科学合理的治理制度来实现规范管理,进而推动二手物品此类资源的合理分配,同时还提高了学校的治理。

随着互联网和网络购物日益深入社会生活,以网站作为信息交流平台,进行信息交流、购物供需等等已成为大学生不可或缺的生活方式。技术的不断发展以及产品的不断更新换代使得人们对物质文化需要越来越高,随之而来的问题便是二手物品日积月累却得不到更好的利用,发挥其更大的价值。特别是在校大学生手里一般会有较多的二手物品,其通用性也比较广泛,在这种情况下,校园二手交易网的重要性不言而喻。利用互联网的强大性构建一个校园二手交易平台,不仅有利用人们发挥物品的最大价值,同时也对人际交流,信息沟通有着极好的促进作用。

1.1.2 设计目的和意义

近年来,在国家不断倡导节俭型校园的精神推动下,大部分高校己经形成了二手物品交易的热潮。二手物品的交易与再利用体现了当代大学生节约环保 的生活理念与校园文化。每一年大一新生的到校就意 味着即将有一届毕业生就要离开校园,走向工作岗位,他们不可能将几年来留存下的书籍、生活用品等都带走,甚至有些物品己成为累赘,这时出售或者转让是为一种不错的选择, 这样大量二手物品的交易需求在高校大学生中一年年传承。大多数大学生的消费水平并不高,都希望能够买到物美又价廉的物品,通过校园内的二手交易跳蚤市场寻找自己需要的廉价物品是现阶段的主要途径,然而校内的跳蚤市场往往时间短暂,都集中在毕业季,毕业生一走,大规模的跳蚤市场就会消失,很难彻底便利的满足广大学子的交易需求,并且高校跳蚤市场在促进大学生节约环保意识的同时,却伴随着影响校园正常秩序的阴影。

随着高校教育信息化技术的不断普及和深化,计算机和因特网已经成为高校师生日常生活不可或缺的一部分, Internet技术给传统高校二手交易带来了新的生机。通过Internet技 术建设一个校园二手交易平台使交易都通过网络进行,完美的满足了广大学子的交易需求,也解决了高校的日常管理问题。

基于以上原因,选择"校园二手物品交易系统的设计与实现"既符合校园的文化与情怀,也强化了校园跳蚤市场的网络化信息发布与交易。同时,搭建针对校园二手网络交易网也是为了响应党的十八大提出的"节能减排"的号召,能够充分合理的利用二手物品,体现出可持续发展的要求,减少不可再生能源的浪费,保护我们共同生活的家园。更重要的是能够满足在校师生快速节奏的生活方式,满足他们的供求需要,为双方搭建一个信任交易的平台。

第二章 相关技术介绍

2.1 Javascript

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

2.2 Ajax

Ajax全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML), 是指一种创建交互式网页应用的网页开发技术。Ajax技术可以提供高度交互的 Web应用,给予用户更丰富的页面浏览体验,Ajax功能的实现主要依靠XMLHttpRequest对象及其属性和方法、发送请求和处理响应。

2.3 MySQL

MySQL是一个开放源码的小型关联式数据库管理系统,被广泛地应用在Internet上的中小型网站中。由于其体积小速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

2.4 SSM框架

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容) 。常作为数据源较简单的web项目的框架。

Sping

Spring是一个开源框架,是于2003年兴起的一个轻量级的Java开发框架由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。

SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web FIow里面。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller, Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中 struts。

Mybatis

MyBatis是一个基于Java的持久层框架,mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过 sqlSessionFactory拿到一个sqlSession, 再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

2.5 Maven框架

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

2.6 JSP

JSP本是一个简化的Servlet设计,有点类似ASP技术,它是在传统的网页HTML (标准通用标记语言的子集)文件(*.htm,* .html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux 下运行,也能在其他操作系统上运行。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。JSP(JavaServer Pages) 是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

2.7 B/S模式

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser) 实现,但是主要事务逻辑在服务器端(Server) 实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO) 。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,以不同的接入方式访问和操作共同 的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全

B/S模式应用系统网络结构图

2.8 BootStrap

Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态 CSS语言Less写成。

2.9 系统开发平台及运行环境

2.9.1 系统开发平台

MyEclipse

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEcIipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse) 是对Eclipse ID E的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服 务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。

Tomcat服务器

Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户 不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响 应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat时,它实际上作为一个与Apache 独立的进程单独运行的。

Tomcat的环境主要有以下几方面技术优势:

  • Tomcat中的应用程序是一个WAR (Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包

  • 在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压

  • Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功 能:处理htmI页面

  • Tomcat也可以与其它一些软件集成起来实现更多的功能

2.9.2 运行环境

  • 操作系统 : Windows 7以上版本

  • 服务器软件 : Tomcat7.0以 上版本

  • 浏览器 : IE、Fire Fox、Google Chrome。

第三章 系统需求分析

阳光二手校园交易平台系统开发意图在于帮助校园师生更好的处理闲置物品。应用目标是确保每个用户都能完整合理地利用资源。本二手交易平台管理系统的用户包括系统管理员和普通用户和游客。系统管理员负责交易平台的管理工作,如各种基本信息的录入、修改、删除、查询、统计和管理系统用户等功能。普通用户使用该系统完成自己基本信息或者交易物品的基本信息的查询与统计管理等功能。游客使用该系统完成相关物品查询等。

3.1 功能需求分析

校园二手物品交易系统是根据各大高校二手市场的实际情况按照网络化的需求开发的,它的目标非常明确,即通过建立高校二手网络交易平台,将原来定时定点摆摊式的二手物品线下交易方式转变成通过网络平台进行交易的线上模式,使校园二手交易更加便捷、安全、规范和有针对性。

系统功能需求整体上分为用户使用功能和系统管理功能,其中用户使用功 能包括用户浏览物品、用户登录、用户注册、用户搜索物品、用户发布物品、用户查看个人信息等功能;系统管理功能包括管理员管理物品分类、管理员管理物品、管理员管理订单、管理员管理用户等功能。

根据以上功能需求分析,通过用例图来描述系统的主要功能。构建用例模型的第一步是确定模型中的使用者有哪些,确定使用者的原则有:谁是系统的 维护者、谁是系统的参与者等。维护者处于系统内部,对系统有绝对的控制权;而参与者-般都位于系统的外部,处于系统的控制之外。

现在确定本系统用例模型有三种,分别是游客、注册用户和系统管理员。下面分别对这三个角色的功能进行描述:

3.1.1 游客

游客是未注册的用户,他们可以浏览物物品,可以搜索物品,如需购买物品,必须先注册成为网站用户。游客主要功能如下(图3-1为游客用例图):

  • 浏览物品

  • 搜索物品

  • 注册成为网站用户

3.1.2 注册用户

注册用户是经过网站合法认证的用户,登录网站后可以浏览物品、搜索物品、发布物品、关注物品、购买物品和查看个人中心。注册用户主要功能如下(图3-2为注册用户用例图):

3.1.3 系统管理员

系统管理员主要负责系统的后台管理工作,主要功能如下(图3-3为系统管理员用例图):

在确定了系统用户和用户功能后就可以构建校园二手物品交易系统的用例图了,整个系统的用例图如图3-4系统总体用例图所示:

3.2 非功能需求分析

  • 系统的实用性 :系统的实用性是指系统设计开发的功能要尽量简单、实用,用户在使用系统过程中能够感受到系统的快捷、方便,不存在很多累赘和多余的操作或者功能

  • 系统的安全性 :校园二手物品交易系统中记录了重要用户信息,包括用户的个人隐私信和、账户金额等信息,这些信息要具有很高的保密性和经济价值。因此,要求系统要具有一定的安全性,能够保证重要数据信息不被轻易窃取和破坏

  • 系统的稳定性 :系统稳定性差则预示着系统在用户使用时,可能会出现数据操作错误,页面响应时间过长或者干脆无法响应等,因此系统的稳定性是用户对系统评价的重要指标之一。系统应采用稳定的操作系统、数据库、中间件等,以保证系统的稳定性

  • 系统的开放性 :系统的开放性是指系统具有良好的可兼容性,可以在Windows的大部分版本的操作系统中正常的运行,另外,也支持不同浏览器版本,能够在微软的IE浏览器、谷歌浏览器等常用的浏览器上正常运行。系统的易升级和管理也是系统开放性的表现

3.3 可行性分析

可行性分析主要是指在当前己有的具体条件下,网站系统的开发是否己具备了必要的条件和资源,分析概括起来包括网站经济可行性、网站技术可行性分析分析和网站操作可行性分析三个方面。

3.3.1 经济可行性

网站的经济可行性分析主要是指网站的开发成本与收益之间的评估,分析网站建设带来的经济效益以及建设维护网站所需费用。

  • 网站所需费用。由于本网站系统是立足于校园,加之学院鼓励大学生自主创业,通过申请得到一台配置较高的服务器,开发团队由本人组织相关学生自主研发,成本相对较低

  • 通过调查研究,我校90%以上的学生希望能购买到二手书籍及相关学习用品,80%以上学生不介意购买电子产品,主要愿意是这些产品更新较快,没有必要花费那么多金钱购买全新的产品,75%以上的学生想要购买诸如体育用品和生活用品等,而据另一项调查,85%以上的同学都愿意出售自己的一些二手物品,而且70%的同学有过摆地摊出售二手物品的经历。因此,建立一个专门针对我校学生的二手物品交易网络平台是必要的。一是可以提高学校的整体形象,加强学校的管理,二是可以为学生减少损失

3.3.2 技术可行性

本系统基于Jsp+SSM+Tomcat+MySQL+Maven, 并采用B/S模式,由于JSP、SSM功能强大,而Tomcat和MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用JSP、SSM、Tomcat、MySQL和Maven是开发轻平台的最佳组合从而说明本系统在技术方面可行。

硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。

3.3.3 操作可行性

本系统是基于B/S架构的,与传统的BBS发布信息非常相似,用户不需要进行特别的学习就可以实现物品购买和物品信息的发布。而对于系统的管理员,由于会配备系统管理的相关说明书,即使不是专业学科的系统管理员也可以很方便快捷地操作后台的管理系统。

第四章 系统设置

系统设计是把用户需求转化为系统的最重要开发环节,解决了"应该怎么做系统"的问题。在本章节中,主要是在系统需求分析的基础上,对系统架构、系统功能模块设计、系统工作流程设计和系统数据库设计进行阐述。

4.1系统框架

校园二手物品交易系统采用SSM(Spring MVC+Spring+Mybatis)框架开发,是标准的MVC模式,将整个系统划分为views层,controllers层,services层,mappers层四层。其中,Spring MVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。整个系统架构运行流程如图4-1所示:

  • views层 :与controllers层结合比较紧密,需要二者结合起来协同工发,主要负责前台Jsp页面的表示

  • controllers层 :控制器,导入services层,因为services中的方法是我们使用到的,controllers通过接收前端传过来的参数进行业务操作,在返回一个指定的路径或者数据表

  • services层 :存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,它有接口还有接口的实现方法,在接口的实现方法中需要导入mappers层,mappers层是直接跟数据库打交道的,它也是个接口,有方法名字,具体实现方法也在里面,services是供我们使用的方法

  • mappers层 :对数据库进行数据持久化操作,它的方法语句是直接针对数据库操作的,而service层是针对我们controller,也就是针对我们使用者

4.2 系统功能模块设计

实质上,校园二手物品交易系统的综合性相对较强,复杂程度相对较高,可对现有软件进行充分利用,进行系统设计与规划。构建完善成熟的校园二手物品交易系统,其中涉及到以下内容,即前台网页界面、处理程序、MySQL 后台数据库系统等,在网站页面中显示出以下内容,例如物品图片、物品名称、物品价格、物品信息等。处理程序其实也就是对用户提交表单与相关操作进行处理,存储在后台数据库的信息有用户数据、物品数据和订单数据等。

因此,校园二手物品交易系统需要具备前台功能和后台功能,其中,前台功能实现以下功能,用户注册、用户登录、物品推荐、物品分类、物品搜索、物品发布、物品详情、物品求购、我的主页。系统前台功能如图4-2所示:

系统后台功能实现以下功能,物品分类管理、物品管理、订单管理、用户管理。系统后台功能如图4-3所示:

4.3 系统工作流程设计

系统工作流程包含用户工作流程和管理员工作流程,如图4-5显示:

4.4 数据库设计

数据库的设计关系到整个应用系统的运行效率,数据库设计得好,不仅有利于日常数据的维护更新,而且可以提高系统的运行效率,缩短数据查询响应周期,增加网站的流量^[9]^。合理的数据库设计可以使围绕它支持的Web页面的Java代码简单化,易于实现,并且可以提高数据存储的效率,保证数据的完整一致。校园二手物品交易系统采用MySQL作为后台数据库开发工具。

4.4.1 数据库概念设计

概念模型用于信息世界的建模,与具体的DBMS无关。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型。人们常常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统和具体的DBMS,而是概念级的模型,然后再把模型转换为计算机上某一个DBMS支持的数据模型。实际上,概念模型是现实世界到机器世界的一个中间层次。

信息世界中包含的基本概念有实体和联系。

  • 实体 (entity) :客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课、一个供应物、一个部门、一本 书、一位读者等都是实体

  • 联系 (relationship) :在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是组成实体的各属性之间的联系。两个实体型之间的联系可以分为3类,一对一联系,(1:1);一对多联系(1 : n);多对多联系(m : n)

概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示信息世界中的常用概念。概念模型的表示方法很多,其中最为常用的是P.P.S.Chen于1976年提出的实体,联系方法(Entity-Relationship Approach)简记为E-R表示法)。该方法用E-R图来描述现实世界的概念模型,称为实体-联系模型,简称E-R模型。根据数据流程分析,绘制校园二手物品交易系统的全局E-R模型如图4-6。

根据系统分析的主要实体有:用户、物品、角色分类、订单、收藏、评论、回复、物品图、一级分类和二级分类。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):

用户实体

物品实体

角色分类实体

订单实体

收藏实体

评论实体

回复实体

物品图实体

一级分类实体

二级分类实体

4.4.2数据库逻辑设计

数据库逻辑设计主要是把数据库概念设计时设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。它包括数据项、记录及记录间的联系、安全性和一致性约束等等。导出的逻辑结构是否与概念模式一致,从功能和性能上是否满足用户的要求,要进行模式评价。

本系统数据库名称为secondshop,数据库中包括:

  • 用户表(user_table)

  • 物品表(good_table)

  • 角色分类表(role_table)

  • 订单表(order_table)

  • 收藏表(collect_table)

  • 评论表(reply_table)

  • 回复表(review_table)

  • 物品图表(image_table)

  • 一级分类表(first_type_table)

  • 二级分类表(second_type_table)

各表数据结构如下:

用户表(user_table) ,存储用户信息

字段名称 数据类型 主键 是否空 说明
id int Y N 用户ID
name varchar N Y 用户昵称
mobile varchar N Y 手机号
email varchar N Y 邮箱
password varchar N Y 密码
code varchar N Y 用户标签
photo_url varchar N Y 头像地址
role_id int N Y 角色编号
gender varchar N Y 性别
registr_date datetime N Y 注册时间
status_id int N Y 用户状态ID

物品表(good_table) ,存储物品信息

字段名称 数据类型 主键 是否空 说明
id int Y N 物品ID
name varchar N Y 物品名
photo_url varchar N Y 物品图片地址
first_type_id int N Y 一级分类ID
second_type_id int N Y 二级分类ID
describe varchar N Y 描述
upload_date datetime N Y 发布日期
prise float N Y 价格
status_id int N Y 物品状态ID
user_id int N Y 用户ID
update datetime N Y 更新日期

角色分类表(role_table) ,存储角色分类信息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
code varchar N N 用户标签
role varchar N N 角色

订单表(order_table) ,存储订单信息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
good_name varchar N Y 物品名
seller varchar N Y 买家
seller_id int N Y 卖家ID
customer varchar N Y 买家名
customer_id int N Y 买家ID
good_id int N Y 物品ID
money int N Y 价格
submit_date datetime N Y 订单提交时间
end_date datetime N Y 订单结束时间
status_id int N Y 订单状态

收藏表(collect_table) ,存储收藏信息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
good_id int N Y 物品ID
good_name varchar N Y 物品名称
user_id int N Y 用户ID

评论表(reply_table) ,存储信息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
review_id int N Y 回复的ID
from_user varchar N Y 评论者昵称
from_user_id int N Y 评论者ID
to_user varchar N Y 回复者昵称
to_user_id int N Y 回复者ID
text varchar N Y 评论内容
upload_date datetime N Y 评论时间
status int N Y 评论的状态

回复表(review_table) ,存储信息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
good_id int N Y 物品ID
from_user_id int N Y 评论者ID
from_user varchar N Y 评论者昵称
to_user_id int N Y 回复者ID
to_user varchar N Y 回复者昵称
text varchar N Y 评论内容
upload_date datetime N Y 评论时间
status int N Y 评论的状态

物品图表(image_table) ,存储物品图息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
good_id int N Y 物品ID
name varchar N Y 物品名
url varchar N Y 地址

一级分类表(first_type_table) ,存储一级分类信息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
name varchar N Y 一级分类名

二级分类表(second_type_table) ,存储二级分类信息

字段名称 数据类型 主键 是否空 说明
id int Y N ID
first_type_id int N Y 一级分类ID
name varchar N Y 分类名

第五章 校园二手物品交易系统实现

本章节介绍了校园二手物品交易系统的实现,包括关键代码、用户模块和管理员模块的实现过程。

5.1 关键代码

本系统使用Maven,pom.xml是配置Maven的,而Maven是整个系统最重要的一部分。它主要是用来用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。

pom.xml

```xml 4.0.0 com.wzh.secondshop wzh-secondshop war 1.0-SNAPSHOT wzh-secondshop Maven Webapp http://maven.apache.org javax javaee-web-api 6.0 provided org.springframework spring-context 4.3.3.RELEASE commons-logging commons-logging org.springframework spring-webmvc 4.3.3.RELEASE jstl jstl 1.2

    <!-- Bean Validation -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.2.4.Final</version>
    </dependency>

    <!--MySQL-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>

    <!--Database Connection Pool-->
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>

    <!--MyBatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.0</version>
    </dependency>
    <!--MyBatis-Spring-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.0</version>
    </dependency>

    <!--Spring JDBC-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.3.3.RELEASE</version>
    </dependency>

    <!--Bridge logging from JCL to SLF4j-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.21</version>
    </dependency>
    <!--http://logback.qos.ch/index.html-->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.7</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>RELEASE</version>
    </dependency>

    <!--Jackson-->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.7</version>
    </dependency>

    <!--file upload-->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>

</dependencies>

<build>
    <finalName>wzh-secondshop</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
                <showWarnings>true</showWarnings>
            </configuration>
        </plugin>
    </plugins>
</build>

```

注册页面前端jsp代码:register.jsp

```jsp

); background-size: cover">

新用户注册

姓名
性别
手机
邮箱
密码
确认密码
返回
${status}

">

">

">

"> ```

处理物品业务逻辑代码:GoodsController.java

```java @RequestMapping(value = "/", method = RequestMethod.GET) public String getHomeGoods( ModelMap model, @RequestParam(required = false, defaultValue = "") String searchText, @RequestParam(required = false) Integer secondTypeId, @RequestParam(required = false, defaultValue = "0") int offset, @RequestParam(required = false, defaultValue = "40") int limit) { List goods = goodService.getGoodsBySearchAndType(searchText, secondTypeId, offset, limit); double goodsNum = goodService.getGoodsBySearchAndTypeCount(searchText, secondTypeId); List firstTypes = typeService.getAllFirstType(); for (FirstType firstType : firstTypes) { firstType.setSecondType(typeService .getSecondTypeByFirstTypeId(firstType.getId())); } model.addAttribute("firstTypes", firstTypes); model.addAttribute("goods", goods); model.addAttribute("pages", Math.ceil(goodsNum / limit)); model.addAttribute("goodsNum", goodsNum); model.addAttribute("offset", offset); model.addAttribute("limit", limit); return "home/homeGoods"; }

@RequestMapping(value = "/goods/goodInfo", method = RequestMethod.GET) public String getGoodInfo(ModelMap model, HttpSession httpSession, @RequestParam(required = false) Integer goodId) { Good goodInfo = goodService.getGoodById(goodId); if (goodInfo == null) { return "goods/error"; } Integer collect = 1; User user = (User) httpSession.getAttribute("user"); if (user == null) { collect = 0; } else { if (collectService.getCollect(goodId, user.getId())) { collect = 2; } } List images = imageService.getImageByGoodId(goodId); User goodUser = userService.getUserById(goodInfo.getUserId()); goodInfo.setGoodUser(userService.getUserById(goodInfo.getUserId())); goodInfo.setGoodSecondType(typeService.getSecondTypeById(goodInfo .getSecondTypeId())); List reviews = reviewService.gerReviewByGoodId(goodId); for (Review review : reviews) { review.setReplys(reviewService.gerReplyByReviewId(review.getId())); } List goods = goodService.getRECGoods(goodInfo.getSecondTypeId(), goodInfo.getId()); model.addAttribute("message", message); model.addAttribute("reviews", reviews); model.addAttribute("goodInfo", goodInfo); model.addAttribute("images", images); model.addAttribute("goodUser", goodUser); model.addAttribute("goods", goods); model.addAttribute("collect", collect); message = ""; return "goods/goodInfo"; }

@RequestMapping(value = "/goods/goodInfo", method = RequestMethod.POST) public String putReview( @RequestParam(value = "goodId", required = false) Integer goodId, @RequestParam(value = "reviewId", required = false) Integer reviewId, @RequestParam(value = "fromUserId", required = false) Integer fromUserId, @RequestParam(value = "toUserId", required = false) Integer toUserId, @RequestParam(value = "fromUser", required = false) String fromUser, @RequestParam(value = "toUser", required = false) String toUser, @RequestParam(value = "replyText", required = false, defaultValue = "") String replyText, @RequestParam(value = "reviewText", required = false, defaultValue = "") String reviewText) { if (reviewText.equals("")) { if (replyText.equals("")) { message = "内容不能为空!"; return "redirect:/goods/goodInfo?goodId=" + goodId; } else { Reply reply = new Reply(); reply.setReviewId(reviewId); reply.setFromUser(fromUser); reply.setFromUserId(fromUserId); reply.setToUser(toUser); reply.setToUserId(toUserId); reply.setText(replyText); if (reviewService.insertReply(reply) == 1) { message = "回复成功!"; return "redirect:/goods/goodInfo?goodId=" + goodId; } else { message = "回复失败!"; return "redirect:/goods/goodInfo?goodId=" + goodId; } } } else { Review review = new Review(); review.setGoodId(goodId); review.setFromUser(fromUser); review.setFromUserId(fromUserId); review.setToUserId(toUserId); review.setText(reviewText); if (reviewService.insertReview(review) == 1) { message = "评论成功!"; return "redirect:/goods/goodInfo?goodId=" + goodId; } else { message = "评论失败!"; return "redirect:/goods/goodInfo?goodId=" + goodId; } } }

@RequestMapping(value = "/goods/publishGood", method = RequestMethod.GET) public String getPublishGood(ModelMap model, HttpSession session) { User user = (User) session.getAttribute("user"); if (user == null) { return "redirect:/"; } Good good = new Good(); List firstTypes = typeService.getAllFirstType(); List goods = goodService.getAllGoods(0, 5); model.addAttribute("goods", goods); model.addAttribute("good", good); model.addAttribute("firstTypes", firstTypes); return "goods/publishGood"; }

@RequestMapping(value = "/goods/publishGood", method = RequestMethod.POST) public String getGoodId(ModelMap model, HttpSession session, @Valid Good good) { List firstTypes = typeService.getAllFirstType(); User user = (User) session.getAttribute("user"); List goods = goodService.getAllGoods(0, 5); good.setUserId(user.getId()); good.setPhotoUrl("/statics/image/goods/default/nophoto.png"); if (goodService.insertGood(good) != 1) { System.out.println("插入物品失败!"); } model.addAttribute("goods", goods); model.addAttribute("good", good); model.addAttribute("firstTypes", firstTypes); return "goods/

参考文献

  • 九江职业大学二手商品交易系统设计与实现(电子科技大学·刘芸琦)
  • 新疆财经大学二手商品交易系统的设计与实现(大连理工大学·徐娜)
  • 基于SSM与JQuery的微校园在线系统(曲阜师范大学·许亚男)
  • 基于SSM与JQuery的微校园在线系统(曲阜师范大学·许亚男)
  • 基于云平台的校园二手商品交易系统的设计与实现(贵州大学·白忠军)
  • J2EE核心技术研究及其在校园网上的应用与实现(西南交通大学·邵军)
  • 基于O2O的某高校二手物品交易平台的设计与实现(江西财经大学·何丹)
  • 基于J2EE的校园二手物品网络预交易系统的设计与实现(山东师范大学·于萧)
  • 基于JSP的学生就业信息管理系统设计与实现(吉林大学·马骁)
  • 推荐算法在校园二手交易平台中的研究与应用(武汉轻工大学·赵壮)
  • 学生综合信息管理平台的设计与实现(吉林大学·刘铁刚)
  • 基于web的高职院校学生综合管理系统设计与开发(电子科技大学·杨轩)
  • 基于JSP的校园网站的设计与实现(吉林大学·张帆)
  • 校园学生自助交易平台的设计与实现(东北大学·王世伟)
  • 学生管理系统的设计与实现(电子科技大学·贾林蓉)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码工坊 ,原文地址:https://m.bishedaima.com/yuanma/35537.html

相关推荐

发表回复

登录后才能评论