项目背景

本网上系统是针对目前网上的实际需求,从实际工作出发,对过去的网上系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前最流行的B/S结构和java中流行的ssm框架和eclipse编辑器、MySQL 数据库设计并实现的 。本网上系统主要包括系统用户管理模块、图书信息管理模块、订单管理、新闻管理、登录模块、和退出模块等多个模块。它帮助网上实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了网上数据资源,有效的减少了网上的经济投入,大大提高了网上的效率。

功能设计

功能模块图

总体业务流程:以用户的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,管理系统等功能操作,以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,管理系统等功能操作。
系统的业务流程

数据流图的简称为DFD,是通过使用图形的方法对系统所具备的逻辑功能进行阐述,描述系统数据的流向和逻辑变换。由于该方法能将难以阐述的问题进行表述,因此被开发者广泛应用,是当前应用范围较为广泛的结构化系统分析方法。
零层数据流程是流程中最抽象的一层,它包括了用户注册与登录管理、用户功能管理和检索维护管理等功能模块,在登录注册模块使用到的数据存储有用户账户信息文档、用户信息文档,用户功能管理模块需要的存储是用户动态信息文档、图片信息文档,检索维护是通过以上这些文档信息通过关键词进行搜索。
系统的0层数据流图

1层数据流图中,数据实体包括普通用户和管理员,普通用户数据流程包括功能选择、图书信息管理、订单管理、;管理员用户数据流程包括图书信息管理、订单管理、系统管理;普通用户数据流包括操作信息、添加信息、浏览信息;管理员数据流包括添加信息、删除信息、修改信息、查询信息、浏览信息、提示信息等,数据表。
系统的1层数据流图

2层为管理员操作后台数据流图,管理员可以分别通过添加、修改和删除来对系统进行管理
系统的2层数据流图

系统主要是分为管理员端设计与用户端设计。用户端模块主要是系统中普通用户在注册、登录系统可以看到自己的基本信息,维护自己的信息;管理员端模块主要是管理员登录后对整个系统相关操作进行处理,可进行管理员的添加和删除,可对系统中的用户进行管理。
系统的功能结构图

功能截图

首页是网站的入口,主要包含了:图书信息、图书信息、用户注册、以及留言反馈等功能

为了确保系统安全性,系统操作员只有在后台登录界面输入正确的用户名、密码、权限以及验证码,单击“登录”按钮后才能够进入本系统的后台管理界面。

用户输入用户名、密码、电话、姓名等必填信息后,点击注册按钮完成用户的注册。

用户点击留言反馈进入留言反馈详细页,提交留言信息,成功发布留言,管理员管理用户的留言信息。

用户点击某个图书进入图书详细页,点击购买按钮进入购买页,提交订单信息,成功购买后,管理员管理用户的订单信息,审核订单信息。

系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。

图书信息添加功能主要指对其编号、名称等一些基本信息的添加、删除和修改。图书查询能根据编号、名称等多种条件对图书信息进行查询。

相关代码

数据库配置

# Tomcat
server:tomcat:uri-encoding: UTF-8port: 8080servlet:context-path: /springbootr1tjfspring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/springbootr1tjf?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8username: rootpassword: 123456#        driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
#        url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootr1tjf
#        username: sa
#        password: 123456servlet:multipart:max-file-size: 10MBmax-request-size: 10MBresources:static-locations: classpath:static/,file:static/#mybatis
mybatis-plus:mapper-locations: classpath*:mapper/*.xml#实体扫描,多个package用逗号或者分号分隔typeAliasesPackage: com.entityglobal-config:#主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";id-type: 1#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"field-strategy: 2#驼峰下划线转换db-column-underline: true#刷新mapper 调试神器refresh-mapper: true#逻辑删除配置logic-delete-value: -1logic-not-delete-value: 0#自定义SQL注入器sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjectorconfiguration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: true#springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)jdbc-type-for-null: 'null' 

控制层(controller)

package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){//      ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){//      ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){//        ValidatorUtils.validateEntity(user);UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {return R.error("用户名已存在。");}userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}

业务层(Service)


package com.service;import java.util.List;
import java.util.Map;import org.apache.ibatis.annotations.Param;import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.entity.UserEntity;
import com.utils.PageUtils;/*** 系统用户*/
public interface UserService extends IService<UserEntity> {PageUtils queryPage(Map<String, Object> params);List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);}

数据访问层(Dao)

package com.dao;import java.util.List;import org.apache.ibatis.annotations.Param;import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.UserEntity;/*** 用户*/
public interface UserDao extends BaseMapper<UserEntity> {List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);List<UserEntity> selectListView(Pagination page,@Param("ew") Wrapper<UserEntity> wrapper);}

计算机毕业设计-基于SSM的网上书店管理系统相关推荐

  1. java计算机毕业设计基于ssm的网上跳蚤市场高校二手闲置交易网站

    项目介绍 商品交易的需求和管理上的不断提升,商品交易管理的潜力将无限扩大,网上跳蚤市场在业界被广泛关注,本系统对此进行总体分析,将商品交易信息管理的发展提供参考.网上跳蚤市场对商品交易有着明显的带动效 ...

  2. java计算机毕业设计基于ssm的少儿编程管理系统(源代码+数据库+Lw文档)

    项目介绍 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷而又方便的网上少儿编程教育网 ...

  3. 计算机毕业设计-基于SSM的网上球鞋竞拍购买管理系统

    项目背景 随着科学技术的飞速发展,商家都在努力与现代先进技术接轨,通过科技手段提高自身的优势:对于网上球鞋竞拍系统当然也不能排除在外,随着网络技术的不断成熟,带动了网上球鞋竞拍系统,它彻底改变了过去传 ...

  4. 计算机毕业设计-基于SSM的学生成绩管理系统

    项目摘要 系统开发技术 Java语言 Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护.它还提供了对EJB(Enterprise JavaBeans)的全面支持,java serv ...

  5. [附源码]java+ssm计算机毕业设计基于SSM的饭店餐饮管理系统09695(源码+程序+数据库+部署)

    项目运行 项目含有源码(见文末).文档.程序.数据库.配套开发软件.软件安装教程 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ E ...

  6. 计算机毕业设计-基于ssm的问卷调查管理系统

    计算机毕业设计-基于ssm的问卷调查管理系统-线上调查问卷系统java代码 1.开发环境及工具下载 开发语言:Java 架构:B/S 框架:SSM(Spring.SpringMVC.MyBatis) ...

  7. 计算机毕业设计-基于SSM+Vue的公交路线管理系统-java公交管理系统代码

    计算机毕业设计-基于SSM+Vue的公交路线管理系统-java公交管理系统代码 1 开发环境及工具下载 开发语言:Java 架构:B/S 后台:SSM(Spring+SpringMVC+Mybatis ...

  8. java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈 ...

  9. java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运 ...

最新文章

  1. Hibernate5.x Idea搭建
  2. 网站地图能给网站的优化带来什么好处
  3. spark 提交任务到集群
  4. 接地脚是什么意思_史上最全的接地系统详解,值得收藏
  5. opengl加载显示3D模型ZGL类型文件
  6. SAP Spartacus部署到SAP Commerce Cloud,不同的系统设置不同的OCC Base url
  7. JQuery ZTree简单使用
  8. 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III
  9. [转载]函数getopt(),及其参数optind
  10. python横向输出字符串_Python字符串拼接和格式化输出
  11. 微信飞机大战游戏开发
  12. 最优化方法:三、线性规划
  13. 数学分析教程(科大)——6.3笔记+习题
  14. flac文件如何转换成mp3
  15. # 你也可以在你的微信 or QQ头像添加小国旗了,超简单!
  16. 秃鹫入门4,GDB调试与OpenCV图像库
  17. CSS常用英语词汇大全
  18. 网络推广能否为企业带来效益以及精彩回复
  19. 李晋的YIM每日签名
  20. 静态时序分析—串扰延迟分析(Crosstalk Delay Analysis)

热门文章

  1. 算法与程序设计相关知识
  2. python安装http server轻量应用服务器的方法
  3. 【计算机毕业设计】50.课程设计管理系统
  4. 黄致绮 荣获第六季完美童模全球总决赛 全国总冠军
  5. 数据结构:单链表包含(归并)
  6. MATLAB-非线性方程(组)求解
  7. [codeforces 1333A] Little Artem 读懂题+找规律+多举例
  8. IEEE论文参考文献格式
  9. 【手写源码-设计模式15】-责任链模式-基于人事请假单工作流场景
  10. rsa不同编程语言互相加解密