在前面知识的铺垫下,我尝试着自己独立实现一个系统,想了很久决定做一个图书馆管理系统,用来练练手。我们要来了解一下图书管理系统都要做啥,都需要什么表,都需要实现哪些功能。
首先,我们知道,图书管理系统中肯定要有借书、还书,这是两个最核心的功能,然后还要有用户注册登陆,管理员管理书籍,定期上架图书或者下架图书等等,综合来看,我们将图书管理系统功能规划如下:
查看图书列表、借阅图书、归还书籍、用户注册、用户登陆这几个是普通用户应该具备的功能
查看图书借阅记录、用户登陆这是普通管理员应该有的权限
用户登陆、新增图书进入图书列表、下架图书这是超级管理员应该有的权限
因此,由此可知,数据库的设计需要涉及到如下数据表:
1.用户个人信息表用户名用户学生号用户登陆密码
3.图书信息表图书名图书编号图书出版社书籍类型
4.用户角色表角色id角色名(中文翻译)角色名(英文)这里分中英文是因为英文角色名在角色控制权限中要用到中文的角色名为了便于用户识别角色
5.用户角色关联表用户学生号角色id
6.资源表资源id资源名字资源url这里是将所有所有接口都进行了封装进入数据库便于为用户分配对应权限进行访问
7.角色资源关联表角色id资源id
总的来说,数据表大致就是这七张了,我们接下来就开始进行项目的准备工作了。
一、准备工作
1.数据库设计,我们第一阶段先实现前三张表,先把图书馆管理系统功能都给实现,角色权限都先给到普通用户,等到第二阶段的时候再将端口分配出去给到普通管理员和超级管理员。
(1)用户信息表
createtablelibrary.sys_user(`id`intNOTNULLAUTO_INCREMENT,`user_name`varchar(50)defaultnull,`user_id`varchar(50)defaultnull,`user_password`varchar(50)defaultnull);(2)书籍信息表
createtablelibrary.sys_book(`id`intNOTNULLAUTO_INCREMENT,`book_name`varchar(50)defaultnull,`book_code`varchar(50)defaultnull,`book_publisher`varchar(50)defaultnull,`book_type`varchar(50)defaultnull);(3)借阅记录表
createtablelibrary.borrowing_records(`id`intNOTNULLAUTO_INCREMENT,`user_id`varchar(50)defaultnull,`book_code`varchar(50)defaultnull,`operate_time`TIMESTAMPDEFAULTnow(),`borrowing_status`varchar(10)defaultnull);对数据表进行插入操作:
insertintolibrary.sys_book(id,book_name,book_code,book_publisher,book_type)values(1,"Java","111111","北京出版社","计算机")insertintolibrary.sys_book(id,book_name,book_code,book_publisher,book_type)values(2,"web","111112","天津出版社","计算机")insertintolibrary.sys_book(id,book_name,book_code,book_publisher,book_type)values(3,"安徒生童话","111113","内蒙古出版社","文学")2.redis环境搭建
4.接下来就是springboot项目搭建了
首先新建一个maven项目,然后对项目目录进行分类,便于后面不同代码放入不同目录
(1)application.properties文件对mybatis配置redis配置数据库配置
#MySql配置spring.datasource.url=jdbc:mysql://47.100.59.91:3306/libraryspring.datasource.username=rootspring.datasource.password=Aa12345&_#Mybatis配置mybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=library.system.dtomybatis.configuration.map-underscore-to-camel-case=true#redis配置spring.redis.host=localhostspring.redis.port=6379(2)pom文件引入依赖
(4)前端返回头Resultsresult类实现用于将后端拿到的数据返给前端到时候看看项目代码就明白了这里就不进行赘述。
(5)token生成加密和解密在util目录下tokenUtil实现
(7)controller层、service层、dao层注解都加上。
上面说了个大概具体还是要看代码如果有迷惑或者不明白的地方欢迎留言我们一起讨论。
接下来就开始实现各个功能了.
二、功能实现
1.用户注册
controller层:
//用户注册@PostMapping("/registerUser")publicResultregisterUser(@RequestBodySysUsersysUser){Resultresult=Results.successWithData(userService.RegisterUser(sysUser),BaseEnums.SUCCESS.code(),BaseEnums.SUCCESS.desc());returnresult;}service层:
//用户注册publicObjectRegisterUser(SysUsersysUser);//用户注册publicObjectRegisterUser(SysUsersysUser){SysUsersysUser1=userMapper.selectUserByUserId(sysUser);if(sysUser1!=null&&sysUser1.equals(null)){return"用户已存在,请登陆!";}Booleanresult=userMapper.insertOneUser(sysUser);returnresult;}dao层:
这样一来,用户注册就顺利实现了。
2.用户借书与还书
//用户角色借阅书本@PostMapping("/borrowBooks")publicResultborrowBooks(@RequestParam("bookCode")StringbookCode,HttpServletRequestrequest){Resultresult=Results.successWithData(userService.borrowBooks(bookCode,request));returnresult;}//用户角色还书@PostMapping("returnBooks")publicResultreturnBooks(@RequestParam("bookCode")StringbookCode,HttpServletRequestrequest){Resultresult=Results.successWithData(userService.returnBooks(bookCode,request));returnresult;}service层:
三、收尾工作
我们这里对项目进行了一个大概的介绍,更加详细的内容就不进行介绍了,将项目核心功能说明白即可,具体想要学明白还是回去撸代码才行。在看代码过程中有问题欢迎浏览讨论。