1、系统概述
基于ssm的图书管理系统是为学校或者工作单位的图书馆开发的,为了使图书馆的工作人员在管理图书馆时更加方便快捷,统计图书馆的书籍,为图书馆的书籍进行合理的分类,当读者在查找某类书籍的时候可以最快的找到,作为图书馆的管理人员有对图书馆的书籍、用户以及其他方面的管理权限,作为学生或者用户可以对图书馆进行查询的操作,通过注册自己的账号,图书馆管理系统使管理人员管理更加方便,使用户查找书籍更加快捷。
2、需求分析
2.1 系统功能分析
2.2 非功能性需求
用户界面要求
客户端采用IE等主流浏览器,平台的界面风格遵循网页设计规范,直观清晰,大部分操作只需轻点鼠标即可。并且,界面设计风格与综合应用平台基本保持一致。
对于系统数据的采集和平台输出的相关资料,如订单数据、用户信息数据和密码修改界面,图书管理和进行各种必要的数据统计处理
3、系统设计
3.1 数据库和表设计
用户信息表:
收藏信息表:
订单信息表:
历史订单信息表:
商品基本信息表:
商品功能属性表:
图片信息表:
3.2系统框架设计
建设方案从用户实际应用需求出发,采用目前业界流行使用、功能强大的新技术,结合可实现先进信息处理、高效业务处理、保证良好的业务可扩展、高度安全应用平台的要求,从而确定出整个系统的设计思路,系统的结构图如下:
4、系统实现及测试
4.1登录模块
功能描述:用户或者管理员输入账号和密码,判断账号密码是否正确,若正确则判断是管理员还是用户并跳转到相应的主页,若密码错误则出现提示信息。
后端实现:根据前端传来的id和密码进行校验,并用Session进行存储管理员或者用户对象,最后返回登录成功或失败的信息。
关键代码:
@RequestMapping("/checklogin")
@ResponseBody
public String checkLogin(HttpSession session,HttpServletRequest request) throws IOException {
User user = loginService.checkLogin(request.getParameter("username"), MD5Util.encode2hex(request.getParameter("password")));
// String user = user1.getUid();
if (user != null) {
// HttpSession session=request.getSession();
session.setAttribute("user",user.getUid());
System.out.println("UCK:"+user);
return "success";
} else { return "fail";}
}
4.2用户管理模块
功能描述:查看用户ID、用户名、年龄、性别、Email、电话、状态、角色等信息,并可以修改、删除信息,以及添加新的用户
效果图:
后端实现:根据前端传来的id和密码进行校验,并用Session进行存储管理员或者用户对象,最后返回登录成功或失败的信息。
@RequestMapping("/all")
public ModelAndView all(@RequestParam(value = "page",defaultValue="1")int page, @RequestParam(value = "size",defaultValue="8")int size) throws Exception {
ModelAndView modelAndView = new ModelAndView();
PageInfo<User> pageInfo =userService.listUser(page, size);
modelAndView.addObject("pageInfo",pageInfo);
modelAndView.setViewName("admin/allusers");
return modelAndView;
}
4.3用户管理模块
功能描述:查看商品的ID、品牌、商品名称、颜色、工作范围、工作时长、净重、尺寸、蓝牙协议、电池容量、状态、买家ID,以及审核商品和删除商品。
效果图:
后端实现:利用PageHelper进行分页处理,根据商品Id进行修改信息和删除,根据审核表单属性添加修改商品信息,当商品的状态为“可出售”时,商品检索处才会出现该商品。
关键代码:
@RequestMapping(value = "/audited",method = RequestMethod.POST)
@ResponseBody
public String editlala(String carId,String level,String engine,String gearbox,String bodyStructure,String size,String maximumspeed,String cargoVolume,String islocked) {
CarInfo carInfo=carInfoService.selectByPrimaryKey(carId);
carInfo.setLevel(level);
carInfo.setEngine(engine);
carInfo.setGearbox(gearbox);
carInfo.setBodyStructure(bodyStructure);
carInfo.setSize(size);
carInfo.setMaximumspeed(maximumspeed);
carInfo.setCargoVolume(cargoVolume);
carInfo.setIslocked(islocked);
carInfoService.updateByPrimaryKey(carInfo);
return "success";
}
@RequestMapping("/editgood/{id}")
public ModelAndView editgood(@PathVariable("id") String id) {
ModelAndView modelAndView = new ModelAndView();
CarInfo carInfo= carInfoService.selectByPrimaryKey(id);
modelAndView.addObject("Good",carInfo);
modelAndView.setViewName("admin/audited");
return modelAndView;
}
4.4订单管理模块
功能描述:根据订单的状态来分类显示,如未确认、已确认、已取消、已完成。显示订单ID、商品ID、款式、价格、定金、卖家ID、验货地址、买家Id、下单时间、订单状态,以及可以删除订单。
效果图:
后端实现:利用PageHelper进行分页处理,根据商品Id进行删除,将订单状态作为关键字,进行条件查询,然后分类显示所有订单。
关键代码:
@RequestMapping("/allorders")
public ModelAndView allorders(@RequestParam(value = "page",defaultValue="1")int page, @RequestParam(value = "size",defaultValue="8")int size) throws Exception {
ModelAndView modelAndView = new ModelAndView();
PageInfo<Order> pageInfo =orderService.listOrders(page,size);
modelAndView.addObject("pageInfo",pageInfo);
modelAndView.setViewName("admin/allorders");
return modelAndView;
}
@RequestMapping("/cancel")
public ModelAndView cancel() throws Exception {
ModelAndView modelAndView = new ModelAndView();
List<Order> OrderList =orderService.selectByStatus("已取消");
modelAndView.addObject("CancelList",OrderList);
modelAndView.setViewName("admin/cancel");
return modelAndView;
}
@RequestMapping("/finish")
public ModelAndView finish() throws Exception {
ModelAndView modelAndView = new ModelAndView();
List<Order> OrderList =orderService.selectByStatus("已完成");
modelAndView.addObject("FinishList",OrderList);
modelAndView.setViewName("admin/finish");
return modelAndView;
}
4.5预约商品模块
功能描述:用户点击“预约商品”按钮,前台返回“预约成功”或“您已经下单”的信息,后台会根据前台传来的商品ID,用户ID生成订单。
效果图
String user_id = (String) session.getAttribute("user");
//对已有订单处理
List<Order> orders = orderMapper.selectByBid(user_id);
for (Order order: orders) {
if(order.getCarId().equals(id)) return "fail";
}
//添加新订单
Random random = new Random();
int result = random.nextInt(60000) % 30001 + 30000;
String order_id = String.valueOf(result);
CarInfo carInfo = carInfoService.selectByPrimaryKey(id);
String seller_id = carInfo.getUid();
//获取系统时间测试
Date dt=new Date();//如果不需要格式,可直接用dt,dt就是当前系统时间
Order order = new Order(order_id,id,carInfo.getConfName(),carInfo.getPrice(),carInfo.getPrice()*0.1,seller_id,carInfo.getAddress(),user_id,dt,"未确认");
orderMapper.insert(order);
4.5预约商品模块
功能描述:用户点击“收藏商品”按钮,前台返回“添加收藏成功”或“您已添加收藏”的信息,后台会根据前台传来的商品ID,用户ID记录到收藏列表中。
效果图:
后端实现:利用Session获取当前用户的所有收藏,若用户已经对某商品添加收藏,就会返回fail,前台提示用户已经对此商品进行收藏。否则会记录用户的Id和商品的ID到收藏列表中。
关键代码:
@RequestMapping("/collection")
public ModelAndView collection(HttpSession session){
String user_id = (String) session.getAttribute("user");
ModelAndView modelAndView = new ModelAndView();
List<FavKey> favKeyList = fdavMapper.selectByUid(user_id);
List<CarInfo> itemsList = new ArrayList<CarInfo>();
for (FavKey favKey:favKeyList) {
CarInfo carInfo;
String car_id=favKey.getCarId();
carInfo=carInfoService.selectByPrimaryKey(car_id);
itemsList.add(carInfo);
}
// System.out.println("SSS:"+itemsList);
modelAndView.addObject("itemsList",itemsList);
modelAndView.setViewName("user/collection");
return modelAndView;
}