Java毕业设计实战之线上水果超市商城的实现
主要技术实现:spring、 springmvc、 redis、 springboot、 mybatis 、session、 jquery 、 md5 、bootstarp.js tomcat、、拦截器等。
主要功能实现: 前端:登录、注册、商品分类查看、浏览水果商品、订单管理、发表评论、收藏商品、购物车管理、个人订单管理查看、个人信息查看修改、地址管理等
后台管理员:后台登录、数据统计、系统版本信息等、管理员管理、角色管理、订单管理、通知公告管理、商品种类、和商品详情管理
主要功能截图如下:
用户填写相关信息进行注册:
水果商品数据列表查看:也可以根据关键字搜索水果商品信息
水果商品详情管理:点击可以查看水果商品购买详情数据、可以进行数量操作、加入订单和购物车以及收藏商品和查看排行等功能
我的购物车详情:可以结算以及继续购物和删除购物车信息等操作
订单详情管理:
我的个人信息管理:可以进行密码修改、订单查看管理、收藏查看管理、收获地址管理
我的评论查看:
我的收藏;可以移除收藏
后台管理员端主要实现: 超级管理员admin登录
系统首页:主要功能用户、角色、通知公告信息、商品种类以及商品详情管理和用户管理以及订单信息管理等数据操作。
后台菜单管理:
用户管理:
通知公告列表展示以及内容添加:
后台管理员对水果商品的管理:
上传商品详情信息:
商品评论数据维护:
订单管理和维护:
项目使用eclipse和idea运行、推荐idea、源码架构:
数据库设计ER图:
订单信息控制层:
@Controller @RequestMapping("/orderInfo") public class OrderInfoController { @Autowired private IOrderInfoBiz orderInfoBiz; @RequestMapping("/addOrderInfo") @ResponseBody public Integer addOrderInfo(String ono, String odate, String ano, String price) { Integer in = 0; try { in = orderInfoBiz.addOrderInfo(ono, odate,ano,price); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return in; } @RequestMapping("/getOrder") @ResponseBody public List<OrderInfo> getOrder(String mno) { return orderInfoBiz.getOrder(mno); } @RequestMapping("/getallOrder") @ResponseBody public List<OrderInfo> getallOrder(String mno) { return orderInfoBiz.getallOrder(mno); } @RequestMapping("/setStatus") @ResponseBody public Integer setStatus(String ono) { System.out.println("修改1"); return orderInfoBiz.setStatus(ono); } @RequestMapping("/getOrderByPage") @ResponseBody public List<OrderInfo> getOrderByPage(String mno, Integer page) { return orderInfoBiz.getOrderByPage(mno,page); } @RequestMapping("/getPage") @ResponseBody public Integer getPage(String mno) { int total=orderInfoBiz.getTotal(mno); int page=total%2==0?total/2:total/2+1; return page; } }
商品管理控制层:
@Controller @RequestMapping("/goodsInfo") public class GoodsInfoController { @Autowired private IGoodsInfoBiz goodsInfoBiz; @RequestMapping("/findAll") @ResponseBody public List<GoodsInfo> findAll() { return goodsInfoBiz.findAll(); } @RequestMapping("/find") @ResponseBody public GoodsInfo find(String str) { System.out.println(goodsInfoBiz.find(str)); return goodsInfoBiz.find(str); } @RequestMapping("/findByTno") @ResponseBody public List<GoodsInfo> findByTno(String tno,String start) { return goodsInfoBiz.findByTno(tno,start); } @RequestMapping("/updateBal") @ResponseBody public Integer updateBal(String[] gnos,String[] nums) { return goodsInfoBiz.updateBal(gnos,nums); } @RequestMapping("/finds") @ResponseBody public List<GoodsInfo> finds() { return goodsInfoBiz.finds(); } @RequestMapping("/upload") @ResponseBody public Map<String, Object> add(@RequestParam("upload")MultipartFile pic,HttpServletRequest request) { Map<String, Object> map = new HashMap<String, Object>(); if(pic.isEmpty()){ return map; } try{ String savePath = "images/goods"; String path = request.getServletContext().getRealPath(""); String temp = request.getServletContext().getInitParameter("uploadPath"); if(temp != null){ savePath = temp; } //在用户上传的文件名的前面加上时间戳 savePath += "/" + new Date().getTime() + "_" +pic.getOriginalFilename(); File dest = new File(new File(path).getParentFile(),savePath); //将本地图片保存到服务器 pic.transferTo(dest); map.put("fileName", pic.getOriginalFilename()); map.put("uploaded", 1); map.put("url","../../../"+savePath); }catch(IllegalStateException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); } return map; } //管理员端的商品信息 @RequestMapping("/addGood") @ResponseBody public int addGood(@RequestParam Map<String,Object> map,@RequestParam MultipartFile pic, HttpServletRequest request){ int result =-1; if(pic.isEmpty()){ result=-2;//说明没有图片需要上传 } String savePath=""; try { String path= request.getServletContext().getRealPath(""); String temp = request.getServletContext().getInitParameter("uploadpath"); if(!StringUtil.checkNull(temp)){ savePath = temp; } savePath="images/goods/"+pic.getOriginalFilename(); File dest = new File(path, savePath); //将图片存到服务器的指定文件夹 pic.transferTo(dest); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } map.put("pics", savePath); result=goodsInfoBiz.addGood(map); return result; } @RequestMapping("/findgoods") @ResponseBody public List<GoodsInfo> findgoods() { return goodsInfoBiz.findgoods(); } @RequestMapping("/del") @ResponseBody public int del(String gno) { return goodsInfoBiz.del(gno); } @RequestMapping("/getPage") @ResponseBody public Integer getPage(String tno) { int total=goodsInfoBiz.getTotal(tno); int page=total%10==0?total/10:total/10+1; return page; } }
购物车信息控制层:
@Controller @RequestMapping("/cartInfo") public class CartInfoController { @Autowired private ICartInfoBiz cartInfoBiz; @RequestMapping("/finds") @ResponseBody public List<GoodsInfo> finds(String mno) { return cartInfoBiz.finds(mno); } @RequestMapping("/update") @ResponseBody public Integer update(String cno, Integer num) { return cartInfoBiz.update(cno, num); } @RequestMapping("/del") @ResponseBody public Integer del(String cno) { return cartInfoBiz.del(cno); } @RequestMapping("/add") @ResponseBody public Integer add(String mno, String gno, Integer num) { return cartInfoBiz.add(mno,gno,num); } @RequestMapping("/checkCar") @ResponseBody public Integer checkCar(String mno, String gno) { return cartInfoBiz.checkCar(mno,gno); } @RequestMapping("/dels") @ResponseBody public Integer dels(String[] gnos)throws IOException { return cartInfoBiz.dels(gnos); } }
管理信息控制层:
@Controller @RequestMapping("/admin") public class AdminInfoController { @Autowired private IAdminInfoBiz adminInfoBiz; @RequestMapping("/checkLogin") @ResponseBody public Object checkLogin(HttpSession session) { Object obj = session.getAttribute("currentLoginUser"); if(obj == null){ return "{\"code\":\"101\"}"; } else { return obj; } } @RequestMapping("/login") @ResponseBody public int login(String aname, String pwd, HttpSession session) { AdminInfo af = adminInfoBiz.login(aname, pwd); int result = 0; if(af != null){ session.setAttribute("currentLoginUser", af); result = 1; } return result; } @RequestMapping("/success") public String loginSuccess(HttpSession session) { if(session.getAttribute("currentLoginUser") != null){ return "/WEB-INF/back/page/index.html"; } else { return "/bk/index.html";//以/开头从项目目录开始算 } } @RequestMapping("/findAll") @ResponseBody public List<AdminInfo> findAll() { return adminInfoBiz.findAll(); } @RequestMapping("/add") @ResponseBody public int add(String aname, String pwd, String tel) { return adminInfoBiz.add(aname,pwd,tel); } @RequestMapping("/update") @ResponseBody public int update(String aid,String tel) { return adminInfoBiz.update(aid,tel); } @RequestMapping("/del") @ResponseBody public int del(String aid) { return adminInfoBiz.del(aid); } /*@RequestMapping("/upload") @ResponseBody public Map<String, String> upload(MultipartFile pics, HttpServletRequest request, @RequestParam Map<String, Object> params) { if (pics.isEmpty()){ return Collections.emptyMap(); } String savePath = "../pics"; try{ String path = request.getServletContext().getRealPath(""); String temp = request.getServletContext().getInitParameter("uploadpath"); if(!StringUtil.checkNull(temp)){ savePath = temp; } savePath += "/" + new Date().getTime() + "_" + new Random().nextInt(10000) + "-" + pics.getOriginalFilename(); File dest = new File(path, savePath); //将图片存到服务器的指定文件 pics.transferTo(dest); } catch (IllegalStateException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } params.put("photo", savePath); if(adminInfoBiz.updatephoto(params) > 0){ Map<String, String> map = new HashMap<String, String>(); map.put("savepath", savePath); return map; } else { return Collections.emptyMap(); } }*/ }
菜单信息控制层:
@Controller @RequestMapping("/menberInfo") public class MenberInfoController { @Autowired private IMenberInfoBiz menberInfoBiz; @RequestMapping("/logout") private Object logout(HttpSession session) { session.removeAttribute("LoginUser"); return "logoutsuccess"; } @RequestMapping("/checkLogin") @ResponseBody public Object checkLogin(HttpSession session) { Object obj = session.getAttribute("LoginUser"); if(obj == null){ return "{\"code\":\"101\"}"; } else { return obj; } } @RequestMapping("/login") @ResponseBody public Integer login(String nickname, String pwd, HttpSession session) { MenberInfo mf = menberInfoBiz.login(nickname, pwd); int result = 0; if(mf != null){ session.setAttribute("LoginUser", mf); result = 1; } return result; } @RequestMapping("/getTotal") public Integer getTotal(String no) { return menberInfoBiz.getTotal(no); } @RequestMapping("/reg") @ResponseBody public int reg(@RequestParam Map<String, Object> map) { return menberInfoBiz.reg(map); } @RequestMapping("/checkName") @ResponseBody public int checkName(String nickname) { return menberInfoBiz.checkName(nickname); } @RequestMapping("/checkTel") @ResponseBody public int checkTel(String tel) { return menberInfoBiz.checkTel(tel); } @RequestMapping("/checkEmail") @ResponseBody public int checkEmail(String email) { return menberInfoBiz.checkEmail(email); } @RequestMapping("/findAll") @ResponseBody public List<MenberInfo> findAll() { return menberInfoBiz.findAll(); } @RequestMapping("/del") @ResponseBody public int del(String mno) { return menberInfoBiz.del(mno); } /*@RequestMapping("/upload") @ResponseBody public Map<String, String> upload(MultipartFile pics, HttpServletRequest request, @RequestParam Map<String, Object> params) { if (pics.isEmpty()){ return Collections.emptyMap(); } String savePath = "../pics"; try{ String path = request.getServletContext().getRealPath(""); String temp = request.getServletContext().getInitParameter("uploadpath"); if(!StringUtil.checkNull(temp)){ savePath = temp; } savePath += "/" + new Date().getTime() + "_" + new Random().nextInt(10000) + "-" + pics.getOriginalFilename(); File dest = new File(path, savePath); //将图片存到服务器的指定文件 pics.transferTo(dest); } catch (IllegalStateException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } params.put("photo", savePath); if(adminInfoBiz.updatephoto(params) > 0){ Map<String, String> map = new HashMap<String, String>(); map.put("savepath", savePath); return map; } else { return Collections.emptyMap(); } }*/ }
到此这篇关于Java毕业设计实战之线上水果超市商城的实现的文章就介绍到这了,更多相关Java 线上水果超市商城内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://blog.csdn.net/pastclouds/article/details/122323021
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解
这篇文章主要介绍了Java 8 Stream Collectors 功能与操作方法,结合实例形式详细分析了Java 8 Stream Collectors 功能、操作方法及相关注意事项,需要的朋友可以参考下...2020-05-20- 这篇文章主要介绍了Java线程池中的各个参数如何合理设置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-19
- 在Java中,我们可以利用多线程来最大化地压榨CPU多核计算的能力,下面这篇文章主要给大家介绍了关于java中多线程与线程池基本使用的相关资料,需要的朋友可以参考下...2021-09-13