二手书交易系统

简介: 二手书交易系统

一.系统描述

会员:会员注册,基本信息修改;二手书籍出售信息的编辑、修改、发布(发布后不可再修改)、关闭(关闭后他人不可再留言);查询并维护自己的出售信息,查询他人发布的出售信息并可以留言,可以对他人的留言进行回复;

管理员:会员管理(权限管理,例如是否可以发布出售信息,取消用户会员资格等),出售信息管理(管理员拥有对虚假消息进行管理的权力,可以屏蔽虚假消息)。


二.所采用的Java EE技术(如MVC架构,JSP/Servlet,EL,JSTL,JDBC等)

MVC架构 Jsp Servlet EL表达式 jstl JDBC filter Listener


三.数据库设计(ER图)(少了书和评论的关系)

2018122814580746.png


四.实验的主要模块功能及其实现

2018122814580746.png

1.登录注册模块

登录:用户在网页输入账号密码和验证码之后,后台会先验证验证码是否正确,然后根据账号密码查找数据库是否存在该用户,如果存在,验证通过,系统会将该用户存进session对象中,以便后期验证;验证不通关则提示错误信息。如果会员不输入任何内容就按了登录按钮,系统会提示输入内容为空,请重新输入。

注册:新用户通过点击注册按钮,输入个人基本信息,管理员会在后台为其授权为会员和授权其能出售书籍的权限。

2.个人中心模块

一:展示个人信息,并且可以对个人信息进行修改。其中展示个人信息功能主要是系统从session中获取登录用户的对象,然后有选择地将信息展示出来。对个人信息地修改功能主要是通过用户点击修改按钮,系统会根据用户地id找到对象,将其信息回填到跳转地页面中,然后用户有选择地修改个人信息。

二:展示个人书籍模块,这个模块底层是个多表查询,其sql语句为:

SELECT b.book_id, b.book_name," +
                    "b.price," +
                    "b.content," +
                    "b.store," +
                    "bt.book_type_name FROM " +
                    "users u " +
                    "LEFT JOIN user_book ub ON u.u_id = ub.u_id " +
                    "LEFT JOIN book b ON ub.book_id = b.book_id " +
                    "LEFT JOIN book_type bt ON bt.book_type_id = b.book_type_id "+
                    "WHERE u.u_id = ?"

通过左连接的方式查询到用户所上传的书本,将数据存到List集合,然后展示出来。

3.上传闲置书籍

因为创建数据表的时候定义了书和用户之间的关系为多对多,创建了一个中间表表示二者的关系,所以写这个功能的时候,需要实时更新这个中间表之间的值,不能只是简单的插入功能,我是在插入完成之后,执行查询语句,查询数据库中最后一本书的主键,然后将这个主键和用户的id插入到数据库中间表中。

4.查看书籍详情

这个功能主要是查看主页中展示出来的某本书的详细信息,并且可以在下面对书进行评论和查看别人的评论

5.修改书籍信息

这个功能跟修改个人信息有点相似,主要是先找到这本书,将信息回填到新跳转的页面中,然后根据用户意愿修改。根据需求,如果这本书已经发售,则不能再修改信息。(这个由jsp页面设置了el表达式来完成)。

6.评论

评论(两层型)分为评论和回复功能

评论:正常的插入操作,先根据书的id获取这本书的信息,如果这个本书可以评论,则执行插入操作,评论表中有一个字段是parentId,这个id存的是回复评论中,上一条评论的id,所以第一次评论都直接赋值为-1。

回复评论:回复评论功能和评论功能差不多,就是将parentId设置为父评论的id。

7.查看评论

评论显示很复杂,首先需要根据书的id获取关于这本书的全部评论,准备了三个集合:

List<Common> commons = new ArrayList<>();
Map<Integer, List<Common>> reply = new HashMap<>();
Map<Integer, String> userNames = new HashMap<>();

通过增强for循环,将评论的人的id和名字存进userNames中,如果评论记录的parentId为-1,则将其存进commons表中,他是一条评论的开始(顶楼),否则将其存进reply表中(子评论)

8.防止用户未登录也可以访问资源

对于浏览器不登陆也能访问系统内部页面的情况,创建一个filter,用于对浏览器是否登录的状态判定。当浏览器发起访问服务端资源的请求时,filter会拦截该请求,看这个浏览器是否登录,再放行。


五、程序运行时的输入数据/输出结果

1.登录

2018122814580746.png

2.注册

2018122814580746.png

3.个人中心

2018122814580746.png

4.修改个人信息

2018122814580746.png

5.我的书籍(包含发布和未发布的)

2018122814580746.png

6.上传闲置

2018122814580746.png

7.查看书籍详情

2018122814580746.png

8.评论

2018122814580746.png

9.权限管理

2018122814580746.png

六、问题与收获

一.问题

1.用原始的技术独立开发一个管理系统挺不容易的,遇到最大的困难还是前端问题吧,后端写好之后,不知道前端页面怎么实现,写完总感觉与自己想的不太一样,写之前想到的样式,不知道叫什么名字,也不知道怎么实现。前端有待加强。

2.后端遇到的问题中,个人认为评论功能最难实现了。因为要设置回复功能,不能只是简单的一层评论,在网上看了好多博文,发现评论分好三种,一种是前面提到过的单一评论,另外就是嵌套递归评论,这种虽可以回复,可是消耗的资源太大,其次就是两层型,不仅可以评论,也不消耗资源。

3.其次就是创建数据库的问题,看着需求不是很看的懂,创建的数据表不完美。

二.收获

通过本次的项目练习,对servlet jdbc jsp等技术都有了一个新的认识,通过一些业务的处理,对多表操作更加熟练了,也加深了sql语句的认识。此外,通过本次的项目,也加强了debug的能力。对于定点查找bug的能力更熟练了。

一个课程实验,觉得还行的话,求个一键三连,支持支持

相关文章
|
算法 机器人 测试技术
(币安、ok、欧易)交易所行情机器人系统开发
(币安、ok、欧易)交易所行情机器人系统开发
|
7月前
|
人工智能 搜索推荐 大数据
秒合约跟单系统开发源码|现货期权交易系统案例
Web 3.0的时代,我们将看到一个完全去中心化的互联网环境,这将彻底改变互联网的面貌。
|
前端开发 安全 测试技术
抢拍竞拍理财系统开发搭建部署设计
抢拍竞拍理财系统开发搭建部署设计
|
人工智能 大数据 云计算
ippswap兑换底池质押项目系统开发|ippswap交易质押流程分析
Web3.0的核心应该是“用户自主”,并不一定非要“去中心化”
|
Kubernetes 容器
撮合交易系统简介
为了应对更高峰值的成交量,国内各金融机构,主要是交易所和银联、中心之间需求越来越多
440 0
撮合交易系统简介
|
JavaScript Java 关系型数据库
ssm易物小店交换系统-二手咸鱼交易系统
通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以易物小店的实际应用需要出发,架构系统来改善现易物小店工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对交易进行有效的管理。本系统是利用ssm框架而设计的一款结合用户的实际情况而设计的平台,利用VUE技术来将可供用户和管理员来使用的所有界面来显示出来,利用Java语言技术来编程实现用户和管理员所执行的各类操作业务逻辑,以MySQL数据库来存取系统的数据。采用B/S模式,使用者容易上手,能够给用户更好的体验。
135 0
|
Kubernetes Shell Docker
Uinswap交易所项目系统开发技术方案(买卖涨模式)
Uinswap交易所项目系统开发技术方案(买卖涨模式)
117 0
|
存储 编译器 区块链
DAPP单双币质押拆分理财系统开发逻辑分析
DAPP单双币质押拆分理财系统开发逻辑分析
|
数据挖掘
借贷理财流动性挖矿开发详情丨借贷理财流动性挖矿系统开发(案例及源码)
 The"sharing"of the metauniverse ontology can be expressed in the form of standardization,which is the best order obtained by consensus within a certain range on the basis of scientific research and theoretical practice.The standards of the universe can be divided into five categories:basic,technolo
|
安全 5G
dapp借贷理财挖矿开发案例丨dapp借贷理财挖矿系统开发(开发逻辑及方案)丨dapp借贷理财挖矿系统源码
  Blockchain is a distributed ledger that is open to all.It uses blockchain data structure to verify and store data,and uses cryptography to ensure the security of data transmission and access.It has the characteristics of decentralization,tamper-proof,transparency and openness.