基于Springboot+VUE的校园二手书交易平台【论文、源码、开题报告】
利用二手交易平台订阅服务,如Kindle上的二手书资源丰富。 #生活技巧# #节省生活成本# #节约生活成本# #二手书交易平台#
博主介绍:全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到
千套JAVA项目实战持续更新中~
百套小程序APP项目实战持续更新中~
百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我
❤️文末获取源码联系❤️ ⚠️一定要先收藏⚠️
第4章 系统设计
4.1 系统设计的原则
在系统设计过程中,也需要遵循相应的设计原则,这些设计原则可以帮助设计者在短时间内设计出符合设计规范的设计方案。设计原则主要有可靠性,安全性,可定制化,可扩展性,可维护性,可升级性以及客户体验等原则。下面就对这些原则进行简要阐述。
可靠性:一个软件是否可靠决定了其是否被用户使用,设计不可靠的软件,用户很容易就遗弃;
安全性:程序软件承担了信息的保存与管理等事务,安全性不足的软件会导致使用者承担巨大的损失;所以系统安全也是需要考虑进入的;
可定制化:市场环境从来都不是一直固定不变,面对客户群体的改变,以及使用环境的改变,市场需求的改变等因素,程序软件也要易于调整以适应各种变化;
可扩展性:程序软件在运行使用期间,也需要及时引进当下的新技术来进行系统优化,主要就是在系统功能层面,系统性能层面上进行相应的扩展,只有这样才能让系统在实际生活中继续占有市场;
可维护性:程序软件的维护需要一定量的资金,不管是排除现有程序错误,还是变更软件的现有需求,都需要在软件技术上投入一定资金,所以易于维护的软件程序就可以降低技术层面的资金消耗;
可升级性:程序软件的投入使用,会面临用户数量增多的情况,用户对软件的使用率也会提升,所以系统面临这种情况,仍然需要通过升级保持性能的合理,这样才能够适应市场;
客户体验:设计出来的程序软件在界面上不能够太复杂,要遵循界面设计的原理设计出简单,方便操作的功能操作界面,让用户易于接受软件,并乐于使用软件提供的功能。
4.2 系统结构设计
在系统结构设计上,经综合考虑还是选择比C/S更省资金的B/S结构模式,现如今浏览器已经实现了普及,并在技术上逐渐完善和成熟,它在节约软件开发成本的基础上,还能实现原本用专业软件操作才能实现的强大功能。总之,B/S结构是当下全新的,认可度高的系统构造技术。系统结构设计图通过绘制,效果展示如下:
图4-1 系统结构设计图
4.3功能结构设计
在管理员功能模块确定下来的基础上,对管理员各个功能进行设计,确定管理员功能的详细模块。绘制的管理员功能结构见下图。
图4.3 管理员功能结构图
4.4数据库设计
与功能结构设计一样,数据库设计也是程序开发不可避免的设计环节,数据库设计最主要的目的就是帮助运行程序存储相应的数据信息。数据库设计包含的内容有数据表结构的设计,也包含了数据库E-R图的设计。
4.4.1 数据库E-R图在绘制E-R图之前,先要找出数据库的实体,明确各个实体具有的属性,比如用户信息这个实体,它具备的属性包括了用户的姓名属性,用户的密码属性,用户的创建时间属性等,所以明确了用户这个实体,以及用户实体具备的属性之后,就需要根据这些信息绘制用户实体对应的实体属性图了。绘制软件选用当下认可度高,使用范围广,操作便利的微软旗下的Visio工具。
4.4.2 数据库表结构在进行这部分设计之前,需要明白和掌握数据类型以及各个数据类型的长度范围等知识,因为在一张具体的数据表中,为了方便理解,这里就举个简单的例子。比如用户信息表,这个表格的字段就是用户这个实体具备的属性,这时就需要对字段进行数据类型,以及字段长度的设置,也要设置一个主键来作为用户信息表的唯一标识。这些都是数据库表结构设计需要完成的内容。根据校园二手书交易平台的功能设计以及数据库设计要求,展示该系统的数据表结构。
表4.1收货地址表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
yonghu_id
Integer
创建用户
是
3
address_name
String
收货人
是
4
address_phone
String
电话
是
5
address_dizhi
String
地址
是
6
isdefault_types
Integer
是否默认地址
是
7
insert_time
Date
添加时间
是
8
update_time
Date
修改时间
是
9
create_time
Date
创建时间
是
表4.2购物车表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
yonghu_id
Integer
所属用户
是
3
tushu_id
Integer
图书
是
4
buy_number
Integer
购买数量
是
5
create_time
Date
添加时间
是
6
update_time
Date
更新时间
是
7
insert_time
Date
创建时间
是
表4.3用户反馈表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
yonghu_id
Integer
提问用户
是
3
chat_issue
String
问题
是
4
issue_time
Date
问题时间
是
5
chat_reply
String
回复
是
6
reply_time
Date
回复时间
是
7
zhuangtai_types
Integer
状态
是
8
chat_types
Integer
数据类型
是
9
insert_time
Date
创建时间
是
表4.4字典表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
dic_code
String
字段
是
3
dic_name
String
字段名
是
4
code_index
Integer
编码
是
5
index_name
String
编码名字
是
6
super_id
Integer
父字段id
是
7
beizhu
String
备注
是
8
create_time
Date
创建时间
是
表4.5公告信息表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
news_name
String
公告标题
是
3
news_photo
String
公告图片
是
4
news_types
Integer
公告类型
是
5
news_content
String
公告详情
是
6
create_time
Date
创建时间
是
表4.6图书表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
yonghu_id
Integer
用户
是
3
tushu_name
String
图书名称
是
4
tushu_photo
String
图书图片
是
5
tushu_zuozhe
String
作者
是
6
tushu_chubanshe
String
出版社
是
7
tushu_types
Integer
图书类型
是
8
tushu_kucun_number
Integer
图书库存
是
9
tushu_old_money
BigDecimal
图书原价
是
10
tushu_new_money
BigDecimal
现价
是
11
tushu_clicknum
Integer
点击次数
是
12
shangxia_types
Integer
是否上架
是
13
tushu_delete
Integer
逻辑删除
是
14
tushu_content
String
图书简介
是
15
create_time
Date
创建时间
是
表4.7图书留言表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
tushu_id
Integer
图书
是
3
yonghu_id
Integer
用户
是
4
tushu_liuyan_text
String
留言内容
是
5
reply_text
String
回复内容
是
6
insert_time
Date
留言时间
是
7
update_time
Date
回复时间
是
8
create_time
Date
创建时间
是
表4.8图书订单表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
tushu_order_uuid_number
String
订单号
是
3
address_id
Integer
送货地址
是
4
tushu_id
Integer
图书
是
5
yonghu_id
Integer
用户
是
6
buy_number
Integer
购买数量
是
7
tushu_order_courier_number
String
快递单号
是
8
tushu_order_courier_name
String
快递公司
是
9
tushu_order_true_price
BigDecimal
实付价格
是
10
tushu_order_types
Integer
订单类型
是
11
tushu_order_payment_types
Integer
支付类型
是
12
insert_time
Date
订单创建时间
是
13
create_time
Date
创建时间
是
表4.9图书求购表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
yonghu_id
Integer
用户
是
3
tushuqiugou_name
String
图书名称
是
4
tushuqiugou_photo
String
图书图片
是
5
tushuqiugou_zuozhe
String
作者
是
6
tushuqiugou_chubanshe
String
出版社
是
7
tushu_types
Integer
图书类型
是
8
tushuqiugou_types
Integer
图书求购状态
是
9
tushuqiugou_content
String
图书详情
是
10
create_time
Date
创建时间
是
表4.10用户表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
yonghu_name
String
用户姓名
是
3
yonghu_phone
String
用户手机号
是
4
yonghu_id_number
String
用户身份证号
是
5
yonghu_photo
String
用户头像
是
6
yonghu_email
String
电子邮箱
是
7
create_time
Date
创建时间
是
表4.11用户表表
序号
列名
数据类型
说明
允许空
1
Id
Int
id
否
2
username
String
用户名
是
3
password
String
密码
是
4
role
String
角色
是
5
addtime
Date
新增时间
是
系统实现系统实现这个章节的内容主要还是展示系统的功能界面设计效果,在实现系统基本功能,比如修改,比如添加,比如删除等管理功能的同时,也显示出系统各个功能的界面实现效果,该部分内容一方面与前面提到的系统分析,系统设计的内容相呼应,另一方面也是一个实际成果的展示。
5.1管理员功能实现
5.1用户信息管理如图5.1显示的就是用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,
还进行了对用户名称的模糊查询的条件
图5.1 用户信息管理页面
5.2 图书类型管理如图5.2显示的就是图书类型管理页面,此页面提供给管理员的功能有:查看已发布的图书类型数据,修改图书类型,图书类型作废,即可删除,还进行了对图书类型名称的模糊查询 图书类型信息的类型查询等等一些条件。
图5.2 图书类型管理页面
5.3图书信息管理如图5.3显示的就是图书信息管理页面,此页面提供给管理员的功能有:根据图书信息进行条件查询,还可以对图书信息进行新增、修改、查询操作等等
图5.3 图书信息管理页面
JAVA后端代码实现
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
//ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
//ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
源码获取
大家点赞、收藏、关注 ,让更多需要的同学看到
不同开发语言专栏推荐订阅:
千套JAVA项目实战持续更新中~
百套小程序APP项目实战持续更新中~
百套Python实战项目持续更新中~
下方有我的微信名片
网址:基于Springboot+VUE的校园二手书交易平台【论文、源码、开题报告】 https://www.yuejiaxmz.com/news/view/529501
相关内容
【开题报告】基于Springboot+vue校园二手交易平台(程序+源码+论文) 计算机毕业设计基于Springboot+vue的二手书交易平台系统(需求文档)
【开题报告】基于Springboot+vue校园二手物品交易平台(程序+源码+论文) 计算机毕业设计
【开题报告】基于Springboot+vue校园二手智能交易平台APP(程序+源码+论文) 计算机毕业设计
基于springboot的校园二手交易平台 毕业设计开题报告
基于SpringBoot+Vue的校园二手图书交易平台设计与实现
基于springboot的校园二手书交易平台【论文、源码、开题报告】
基于SpringBoot+Vue的校园二手书交易平台管理系统设计与实现毕设(文档+源码)
【开题报告】基于Springboot+vue校园二手交易平台微信小程序(程序+源码+论文) 计算机毕业设计
基于springboot的C2C二手交易系统的设计与实现(源码+论文)