背景
设计一个网上书城管理系统,通过这个系统能够满足网上书城的管理及用户的图书信息管理及购物功能。系统的主要功能包括:首页、个人中心、用户管理、图书类型管理、图书分类管理、图书信息管理、我的收藏管理、系统管理、订单管理等功能。
管理员可以根据系统给定的账号进行登录,登录后可以进入网上书城管理系统,对网上书城管理系统所有模块进行管理。包括查看和修改自己的个人信息以及登录密码。
该系统为每一个用户都分配了一个用户账号,用户通过账号的登录可以在系统中查看网上书城信息及对个人信息进行修改等功能。
系统架构
可以将网上书城管理系统的功能分为管理员和用户两个部分,系统的主要功能包括首页、个人中心、用户管理、图书类型管理、图书分类管理、图书信息管理、我的收藏管理、系统管理、订单管理等内容。任何用户只要进入网站不需登录也可浏览到的信息,后台管理是针对已登录的用户看到满意的网上书城信息而设计的。
1、一般用户的功能及权限
 所谓一般用户就是指还没有注册的过客,他们可以浏览主页面上的信息。但如果有中意的网上书城信息时,要登录注册,只有注册成功才有的权限。
2、管理员的功能及权限
 用户信息的添加和管理,网上书城详细信息添加和管理和文档信息添加和管理以及网站信息管理,这些都是管理员的功能。
3、系统功能结构图
 系统功能结构图是系统设计阶段,系统功能结构图只是这个阶段一个基础,整个系统的架构决定了系统的整体模式,是系统的根据。网上书城管理系统的整个设计结构如图:

数据库设计
网上书城管理系统是两种身份的用户,主要涉及管理员和用户。每个身份都是操作起来都是清楚方便的。对于一些网上书城信息,这是任何人都可以查看的,但是如果用户想进入后台管理,则必须是已经进行登录的用户,或者想修改网上书城信息的话,也是需要用户为登录状态。这些用户的基本信息都由管理员对其统一管理。
概念模型ER图
概念模型与数据建模用户的观点一致,用于信息世界的建模工具。通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。
 用户注册实体图如图:
 
 图书信息实体图如图:
 
 购物车实体图如图:

数据库模型
数据库概念结构设计后,可以数据库概念转化实际的数据模型,这是一种数据库的逻辑结构,就是将概念结构与支持数据库管理系统的模型相符合。具体的表设计如下:

 
 
 
详细系统设计
管理员功能模块
管理员登录系统后,可以对首页、个人中心、用户管理、图书类型管理、图书分类管理、图书信息管理、我的收藏管理、系统管理、订单管理等功能进行相应操作,如图:

 用户管理,在用户管理页面可以对索引、用户名、姓名、性别、头像、邮箱、手机等信息进行详情,修改或删除等操作,如图:

 图书类型管理,在图书类型管理页面可以对索引、图书类型等信息进行修改和删除等操作,如图:

用户后台功能模块
用户登录进入系统后台,可以对首页、个人中心、我的收藏管理、订单管理等功能进行相应操作,如图:

系统代码实现
由于涉及到的代码较多,此处只展示部分的代码实现。
图书分类代码
@RestController
@RequestMapping("/tushufenlei")
public class TushufenleiController {
    @Autowired
    private TushufenleiService tushufenleiService;
    
    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,TushufenleiEntity tushufenlei,
		HttpServletRequest request){
        EntityWrapper<TushufenleiEntity> ew = new EntityWrapper<TushufenleiEntity>();
		PageUtils page = tushufenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tushufenlei), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,TushufenleiEntity tushufenlei, 
		HttpServletRequest request){
        EntityWrapper<TushufenleiEntity> ew = new EntityWrapper<TushufenleiEntity>();
		PageUtils page = tushufenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tushufenlei), params), params));
        return R.ok().put("data", page);
    }
	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( TushufenleiEntity tushufenlei){
       	EntityWrapper<TushufenleiEntity> ew = new EntityWrapper<TushufenleiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( tushufenlei, "tushufenlei")); 
        return R.ok().put("data", tushufenleiService.selectListView(ew));
    }
	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(TushufenleiEntity tushufenlei){
        EntityWrapper< TushufenleiEntity> ew = new EntityWrapper< TushufenleiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( tushufenlei, "tushufenlei")); 
		TushufenleiView tushufenleiView =  tushufenleiService.selectView(ew);
		return R.ok("查询图书分类成功").put("data", tushufenleiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        TushufenleiEntity tushufenlei = tushufenleiService.selectById(id);
        return R.ok().put("data", tushufenlei);
    }
    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        TushufenleiEntity tushufenlei = tushufenleiService.selectById(id);
        return R.ok().put("data", tushufenlei);
    }
    
    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody TushufenleiEntity tushufenlei, HttpServletRequest request){
    	tushufenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(tushufenlei);
        tushufenleiService.insert(tushufenlei);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody TushufenleiEntity tushufenlei, HttpServletRequest request){
    	tushufenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(tushufenlei);
        tushufenleiService.insert(tushufenlei);
        return R.ok();
    }
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody TushufenleiEntity tushufenlei, HttpServletRequest request){
        //ValidatorUtils.validateEntity(tushufenlei);
        tushufenleiService.updateById(tushufenlei);//全部更新
        return R.ok();
    }
 
订单管理入口代码
 
@RestController
 @RequestMapping(“/orders”)
 public class OrdersController {
 @Autowired
 private OrdersService ordersService;
/**
 * 后端列表
 */
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,OrdersEntity orders,
	HttpServletRequest request){
	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
		orders.setUserid((Long)request.getSession().getAttribute("userId"));
	}
    EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
	PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
    return R.ok().put("data", page);
}
/**
 * 前端列表
 */
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,OrdersEntity orders, 
	HttpServletRequest request){
    EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
	PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
    return R.ok().put("data", page);
}
/**
 * 列表
 */
@RequestMapping("/lists")
public R list( OrdersEntity orders){
   	EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
  	ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
    return R.ok().put("data", ordersService.selectListView(ew));
}
 /**
 * 查询
 */
@RequestMapping("/query")
public R query(OrdersEntity orders){
    EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
	ew.allEq(MPUtil.allEQMapPre( orders, "orders")); 
	OrdersView ordersView =  ordersService.selectView(ew);
	return R.ok("查询订单成功").put("data", ordersView);
}
                


















