基于javaweb+mysql的springboot图书商城管理系统(java+springboot+vue+elementui+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot图书商城管理系统(java+springboot+vue+elementui+mysql)
项目介绍
管理员:首页、个人中心、用户管理、卖家管理、图书类型管理、图书信息管理、图书信息、系统管理 、订单管理
卖家: 首页、个人中心、图书信息管理、订单管理
用户: 首页、图书信息、图书资讯、个人中心、购物车
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;
技术栈
后端:SpringBot(Spring+SpringMVC+Mybatis)
前端:Vue
使用说明
项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,控制台提示运行成功后再去运行前端项目; 5. 管理员用户名密码:admin/admin 普通用户名密码:user/123456
文档介绍(课题背景与意义、系统实现功能、课题研究现状、系统相关技术、java技术、B/S架构、Mysql介绍、Mysql环境配置、Springboot框架、系统需求分析、系统功能、可行性研究、经济可行性、技术可行性、运行可行性、事件可行性、系统业务过程分析、系统业务过程分析、系统用例图、系统设计、数据库设计、系统整体设计、系统设计思想、系统流程图、系统详情设计、系统功能模块、系统功能模块、管理员功能模块):
图书商城首页展示:
图书信息展示页面:
图书信息详情页面:
购物车展示页面:
个人中心详情展示:
后台登陆管理页面:
图书归还列表详情:
图书借阅列表:
图书信息详情:
System.out.println(reader.getRdID());
OutputStream out = null;//创建一个输出流对象
try {
out = response.getOutputStream();//
response.setHeader("Content-disposition","attachment; filename="+"Reader.xls");//filename是下载的xls的名,建议最好用英文
response.setContentType("application/msexcel;charset=UTF-8");//设置类型
response.setHeader("Pragma","No-cache");//设置头
response.setHeader("Cache-Control","no-cache");//设置头
response.setDateHeader("Expires", 0);//设置日期头
String rootPath = request.getSession().getServletContext().getRealPath("/");
ex.exportExcel(rootPath,title,headers, dataset, out);
* @Title : updateStatus
* @功能描述: TODO 更改证件的状态
* @开发者:陈强
* @参数: @param reader
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="/updateStatus",method={RequestMethod.POST,RequestMethod.GET})
@RequiresPermissions(value={"reader:updateStatus","iterm:all"},logical=Logical.OR)
public String updateStatus(Reader reader)
readerService.updateStatusByrdID(reader);
return "WEB-INF/readerJsp/readerStatus";
borrow.setIdOverMoney(0);
borrow.setIdPunishMoney(0);
borrow.setIsHasReturn("未还");
borrow.setOperatorRet("");
System.out.println(borrow.getBkID() + borrow.getRdID() + borrow.getOperatorLend());
// 更新
Parameter parameter = new Parameter();
parameter.setBkID(borrow.getBkID());
parameter.setRdID(borrow.getRdID());
// 比较证件是否有效
Parameter parameter1 = borrowService.getReaderInfoByID(parameter);
if (parameter1.getRdStatus().equals("有效") && (DateExchangeUtil.GetDayFormDate(new Date(),
@RequiresPermissions(value={"borrow:deleteBorrow","iterm:all"},logical=Logical.OR)
public String DeleteBorrow(Parameter parameter,RedirectAttributes ra,@RequestParam("id")int id)
if(parameter.getIsHasReturn().equals("未还"))
Parameter pmt=borrowService.getReaderInfoByID(parameter);
Parameter temp=new Parameter();
temp.setBkID(parameter.getBkID());
temp.setRdID(parameter.getRdID());
temp.setRdBorrowQty(pmt.getRdBorrowQty()-1);
temp.setBkStatus("在馆");
borrowService.updateReader(temp);
borrowService.updateBookByID(temp);
@RequestMapping(value = "/borrowOperator", method = { RequestMethod.POST, RequestMethod.GET })
@RequiresPermissions(value={"borrow:borrowOperator","iterm:all"},logical=Logical.OR)
public String BorrowOperator(@Validated Borrow borrow,BindingResult br,Model model,@RequestParam("tool")String radion,@RequestParam("operator")String operator
) throws Exception
if (br.hasErrors()) {
String Message = null;
List<ObjectError> errors = br.getAllErrors();
for (ObjectError objectError : errors) {
model.addAttribute("message", Message + objectError.getDefaultMessage());
return "error";
Borrow row=borrowService.getBorrow(borrow);
ReaderType readerType=borrowService.findReaderTypeByrdID(borrow.getRdID());
if(row.getIsHasReturn().equals("已还"))
ExportExcelUtil ex = new ExportExcelUtil();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
String title = "Reader信息记录";
String[] headers = { "用户名","姓名","性别","读者类型","单位名称","电话号码","邮箱","证件状态","办证日期","已借书数量","读者角色","照片"};
List<String[]> dataset = new ArrayList<String[]>();
for(int i=0;i<readerList.size();i++)
Reader reader=readerList.get(i);
String borrowQty=Integer.toString(reader.getRdBorrowQty());
String date=format.format(reader.getRdDateReg());
dataset.add(new String[]{reader.getRdID(),reader.getRdName(),reader.getRdSex(),reader.getRdType(),
dataset.add(new String[]{reader.getRdID(),reader.getRdName(),reader.getRdSex(),reader.getRdType(),
reader.getRdDept(),reader.getRdPhone(),reader.getRdEmail(),reader.getRdStatus(),
date,borrowQty,reader.getRdAdminRoles(),reader.getRdPhoto()});
System.out.println(reader.getRdID());
OutputStream out = null;//创建一个输出流对象
try {
out = response.getOutputStream();//
response.setHeader("Content-disposition","attachment; filename="+"Reader.xls");//filename是下载的xls的名,建议最好用英文
response.setContentType("application/msexcel;charset=UTF-8");//设置类型
response.setHeader("Pragma","No-cache");//设置头
response.setHeader("Cache-Control","no-cache");//设置头
* @Title : FindReader
* @功能描述: TODO 查找reader信息实现数据库的分页。
* @开发者:陈强
* @参数: @param start
* @参数: @param model
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/findReader")
public class BorrowContorller {
@Autowired
private BorrowService borrowService;
/**
* @Title : comeBorrow
* @功能描述: TODO 来到借书页面
* @开发者:陈强 @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/toBorrow")
@RequiresPermissions(value={"borrow:toBorrow","iterm:all"},logical=Logical.OR)
public String comeBorrow() {
* @功能描述: TODO 将数据导出
* @开发者:陈强
* @参数: @param parameter
* @参数: @param request
* @参数: @param response
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/exportExcel")
public String ExportExcel(Parameter parameter,HttpServletRequest request,HttpServletResponse response)
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/findStatusByrdID")
@RequiresPermissions(value={"reader:findStatusByrdID","iterm:all"},logical=Logical.OR)
public String findStatusByrdID(@RequestParam("rdID")String rdID,Model model)
String status= readerService.findStatusByrdID(rdID);
model.addAttribute("status", status);
model.addAttribute("rdID", rdID);
/**
* @Title : logOut
* @功能描述: TODO 用户注销登陆
* @开发者:陈强
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping("/logout")
public String logOut()
userRealm.clearCached();
return "login";
/**
if(start<0) start=0;
if(start>count)start-=10;
int end=start+10;
parameter.setStart(start);
parameter.setEnd(end);
List<Borrow> borrowList=borrowService.selectBorrowInfo(parameter);
model.addAttribute("BorrowList",borrowList);
model.addAttribute("parameter", parameter);
return "WEB-INF/bookJsp/bookBorrowInfo";
/**
* @Title : DeleteBorrow
public String InsertBorrow(@Validated Borrow borrow, BindingResult br, Model model,
@RequestParam("DateOut") String DateOut) throws Exception {
if (br.hasErrors()) {
String Message = null;
List<ObjectError> errors = br.getAllErrors();
for (ObjectError objectError : errors) {
model.addAttribute("message", Message + objectError.getDefaultMessage());
return "error";
ReaderType readerType = borrowService.findReaderTypeByrdID(borrow.getRdID());
borrow.setIdContinueTimes(0);
borrow.setIdDateOut(DateExchangeUtil.StringToDate(DateOut));
borrow.setIdDateRetPlan(
parameter.setEnd(end);
parameter.setStart(start);
List<SysUR> permission=userLoginMapper.selectPermission(parameter);
model.addAttribute("permission", permission);
model.addAttribute("parameter", parameter);
return "WEB-INF/readerJsp/permissionPage";
@RequestMapping(value="deletePermission")
@RequiresPermissions(value={"permission:deletePermission","iterm:all"},logical=Logical.OR)
public String DeletePermission(Parameter parameter,RedirectAttributes ra,SysUR sysUR)
userLoginMapper.deletePermission(sysUR);
ra.addAttribute("start", parameter.getStart());
return "redirect:/Userlogin/selectPermission";
model.addAttribute("permission", permission);
model.addAttribute("parameter", parameter);
return "WEB-INF/readerJsp/permissionPage";
@RequestMapping(value="deletePermission")
@RequiresPermissions(value={"permission:deletePermission","iterm:all"},logical=Logical.OR)
public String DeletePermission(Parameter parameter,RedirectAttributes ra,SysUR sysUR)
userLoginMapper.deletePermission(sysUR);
ra.addAttribute("start", parameter.getStart());
return "redirect:/Userlogin/selectPermission";
读者管理控制层:
@Controller
@RequestMapping("/reader")
@RequiresRoles(value={"BookManager","SysManager","Manager"},logical=Logical.OR)
return "WEB-INF/readerJsp/readerPermission";
/**
* @Title : InsertPermission
* @功能描述: TODO 插入权限
* @开发者:陈强
* @参数: @param sysUR
* @参数: @return
* @返回类型:String
* @throws :
*/
@RequestMapping(value="insertPermission",method={RequestMethod.GET,RequestMethod.POST})
@RequiresPermissions(value={"permission:insertPermission","iterm:all"},logical=Logical.OR)
public String InsertPermission(SysUR sysUR)