系统使用技术:SSM
前端技术:bootstrap、css、js等
开发工具:eclipse或idea
数据库:mysql5.7
项目介绍:
该系统适合选择框架为SSM,基础中等或以下,做类似商城系统,要求页面美观度高的同学。主要功能包括:完整的商城业务流程,比如用户管理,商品管理、订单管理、分类管理等,满足商城的基本要求。
下面我们来看看功能。
系统登陆界面:
http://localhost:8080/technology/page/login.html
首页
查看热销商品
分类查看
可以按照分类查看商品
商品详情
可以查看商品详情
个人中心
用户登录后可以查看个人信息
购物车
可以查看购物车内商品
我的订单
可以查看个人订单信息
后台首页
可以统计商品、订单信息
用户管理
对用户进行管理
商品管理
对商品进行管理
订单管理
对订单进行管理
代码
用户登录:
/** * produces="application/json;charset=UTF-8":防止ajax获取中文时出现乱码 * @return 将数据回传给ajax */ @ResponseBody @RequestMapping(value = "/usertologin", method = RequestMethod.POST, produces = "application/json;charset=UTF-8") public Object usertologin( Integer uid, String upswd, HttpServletResponse response, HttpSession session) { //创建 JSONObject 对象,它会把放入的数据以 json 的数据格式存储,对于集合类型的数据还要用到 JSONArray 数组 JSONObject object = new JSONObject(); int i = loginSvc.checkUid(uid); if (i > 0) { // 证明账号存在,进行密码验证 object.put("num_i", i); object.put("SUCCESS_MESSAGE", "账号验证成功!"); int j = loginSvc.checkLogin(new User(uid, upswd)); if (j > 0) { // 密码正确,进行相同账号的登录验证 object.put("num_j", j); object.put("SUCCESS_MESSAGE2", "密码验证成功!"); User user_session = (User) CoreUtil.getSession().getAttribute(Constants.LOGIN_USER); if (user_session!=null) { //证明用户已登录,不允许相同账号的登录 object.put("ERROR_MESSAGE", "该账号已登录!"); return object.toString(); } else { //尚未有该用户登录,需要获取个人信息,保存用户名等,用以显示 /*String ipAddr = ToolsUtil.getIpAddr(request); System.out.println("当前用户IP为:" + ipAddr);*/ User user = loginSvc.showUserInfo(uid); /*保存信息,用于验证登录拦截器*/ session.setAttribute(Constants.LOGIN_USER, user); session.setAttribute("myinfo", user); String lasttime = ToolsUtil.getTime("yyyy-MM-dd HH:mm:ss", 0); User user2 = loginSvc.showUserInfo(uid); user2.setLasttime(lasttime); int k = loginSvc.upUser(user2); // 此处可以对k进行判断,提示等 String logintime = ToolsUtil.getTime("yyyy年MM月dd日 HH:mm:ss", 0); // 登录日志记录,此处为日志插入单独写了一个方法,调用即可 String descb = "您在【" + logintime + "】登录了本商城"; Log log = ToolsUtil.insertLog(uid, descb); int m = loginSvc.insertUserLog(log); } } else { object.put("ERROR_MESSAGE", "密码错误,请重新输入!"); } } else { object.put("ERROR_MESSAGE", "账号不存在!"); } return object.toString(); //由于前端ajax在接收服务器数据时一般是字符串,因此要用“.toString()”方法转化 }
生成订单:
@RequestMapping("/addOrder") public String addOrder( String orderaddress, @RequestParam(required = false) Integer[] pid, @RequestParam(required = false) int[] pronum, HttpSession session) { Order order = new Order(); int id = getLoginUserId(); order.setUid(id); order.setOrderaddress(orderaddress); /*Integer[] pid = {100001, 100002}; int[] pronum = {23, 31};*/ List<Map<String, Object>> prolist = productSvc.proSelByCIds(pid, pronum); List<OrderDetail> orderDetails = new ArrayList<OrderDetail>(); for (Map<String, Object> aProlist : prolist) { OrderDetail od = new OrderDetail(); od.setPid((Integer) aProlist.get("pid")); od.setPimg((String) aProlist.get("pimg")); od.setPname((String) aProlist.get("pname")); od.setPrice((Float) aProlist.get("price")); od.setOdetailnum((Integer) aProlist.get("pronum")); orderDetails.add(od); } /* 邮费 10-30 随机 */ Random random = new Random(); order.setPostalfee(random.nextInt(20) + 10); int i = orderSvc.addOrder(order, orderDetails); //会调用Dao,向order表插入数据 if(i>0){ String descb = "下单成功,订单号:【" + order.getOrdercode() + "】"; Log log = ToolsUtil.insertLog(UserUtil.getLoginUserId(), descb); loginSvc.insertUserLog(log); Order orderss = iorderDao.getOrderDetailById(order.getOrderid()); List<OrderDetail> details = orderss.getOdetails(); for(int i1= 0;i1<details.size();i1++){ Product p = iProductDao.proSelByCId(details.get(i1).getPid()); Product product = new Product(); int stock = p.getStock() - details.get(i1).getOdetailnum(); product.setStock(stock); product.setPid(details.get(i1).getPid()); iProductDao.updataStock(product); } } System.out.println("----------" + i); return "redirect:getMyOrders"; }
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,而且也与当前的热点话题关联,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,比较适合毕业设计和课程设计的相关应用。