基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

文末获取项目下载方式


一、项目背景介绍:

随着社会信息化的快速发展,图书馆作为知识传播和学术研究的重要场所,扮演着不可替代的角色。然而,传统的图书馆借阅方式存在一些问题,如人工操作复杂、排队等待时间长、信息交流不便等。为了提高用户体验、优化图书管理效率,图书馆借阅系统的引入成为了迫切需求。

目前,一些图书馆已经开始引入计算机技术来改进借阅流程,并且不断涌现出各种图书借阅系统。这些系统通过应用先进的技术手段,例如互联网和移动设备等,实现了更高效、便捷的图书借阅方式,受到了广泛的欢迎和应用。

然而,在一些小型图书馆或教育机构中,仍然存在着借阅过程繁琐、信息不透明、借还效率低等问题。因此,开发一套基于Spring Boot、Vue.js和uni-app的图书借阅系统具有重要的实际意义和研究价值。

该系统将利用Spring Boot提供的快速开发和便捷部署的特性,基于Vue.js构建友好的用户界面,并使用uni-app实现跨平台的移动应用。通过这个系统,用户可以方便地浏览图书信息、进行在线借阅、查询借阅记录等操作;管理员可以进行图书管理、借阅管理、统计分析等工作。这将大大提高图书馆的服务质量和管理效率。

因此,本研究旨在设计与实现一套基于Spring Boot、Vue.js和uni-app的图书借阅系统,以满足用户借阅需求,提高图书馆服务质量和管理效率,促进图书馆建设的数字化和智能化进程。通过对系统的开发和实施,将探索先进技术在图书借阅领域的应用,为类似机构提供参考和借鉴。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
    Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
  3. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  4. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
  5. smart:微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
    全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。微信小程序、微信订阅号、微信服务号、微信企业号是并行的体系。
    微信小程序是一种不用下载就能使用的应用,也是一项创新,经过将近两年的发展,已经构造了新的微信小程序开发环境和开发者生态。微信小程序也是这么多年来中国IT行业里一个真正能够影响到普通程序员的创新成果,已经有超过150万的开发者加入到了微信小程序的开发,与我们一起共同发力推动微信小程序的发展,微信小程序应用数量超过了一百万,覆盖200多个细分的行业,日活用户达到两个亿,微信小程序还在许多城市实现了支持地铁、公交服务。微信小程序发展带来更多的就业机会,2017年小程序带动就业104万人,社会效应不断提升。
  6. Redis:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
    Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

三、系统功能模块介绍:

基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第1张图片

四、数据库设计:

1:advertisement(advertisement)

字段名 类型 默认值 列注释
id bigint NULL 主键
title varchar NULL 发送标题
type tinyint NULL 类型
Banner
提示
弹窗
content text NULL 发送内容
cover varchar NULL 图片
state tinyint NULL 状态
creator bigint NULL 创建者
add_time datetime NULL 创建时间
editor bigint NULL 编辑者
edit_time datetime NULL 编辑时间
deleted tinyint NULL 逻辑删除

2:attachment(attachment)

字段名 类型 默认值 列注释
id int NULL 主键
file_name varchar NULL 文件原名
file_size int NULL 附件大小
file_type varchar NULL 附件类型
name varchar NULL 附件名称
url varchar NULL 附件地址
save_path varchar NULL 保存路径
add_time datetime NULL 添加时间

3:dict(dict)

字段名 类型 默认值 列注释
id int NULL 主键
name varchar NULL 组名
code varchar NULL 编码
remark varchar NULL 信息

4:dict_item(dict_item)

字段名 类型 默认值 列注释
id int NULL 主键
dict_id int NULL 组id
name varchar NULL 名称
info varchar NULL 说明

5:notice(notice)

字段名 类型 默认值 列注释
id bigint NULL id
title varchar NULL 公告标题
content text NULL 公告内容
creator bigint NULL 创建人
editor bigint NULL 编辑人
add_time datetime NULL 添加时间
edit_time datetime NULL 编辑时间
deleted tinyint NULL 删除标记

6:org(org)

字段名 类型 默认值 列注释
id bigint NULL 主键
pid bigint NULL 上级
name varchar NULL 名称
shortname varchar NULL 简称
level tinyint NULL 级别
id_path varchar NULL 路径
name_path varchar NULL 部门名路径
contact_name varchar NULL 联系人
phone varchar NULL 联系电话
email varchar NULL Email
info varchar NULL 描述
state tinyint NULL 是否有效
creator bigint NULL 创建人
add_time datetime NULL 添加时间
editor bigint NULL 编辑人
edit_time datetime NULL 编辑时间
address varchar NULL 地址
deleted tinyint NULL 逻辑删除

7:setting(setting)

字段名 类型 默认值 列注释
id int NULL 主键
type int NULL 类型
name varchar NULL 名称
code varchar NULL
value varchar NULL
value_type varchar NULL 值数据类型
info varchar NULL 说明

8:staff(staff)

字段名 类型 默认值 列注释
id bigint NULL id
name varchar NULL 姓名
mobile varchar NULL 手机号
password varchar NULL 密码
birthday date NULL 生日
gender tinyint NULL 性别
id_card varchar NULL 身份证
school varchar NULL 毕业院校
degree tinyint NULL 学历
head_img varchar NULL 头像
hire_date date NULL 入职日期
fire_date date NULL 离职日期
intro varchar NULL 简介
state tinyint NULL 在职状态
creator bigint NULL 创建人
add_time datetime NULL 创建时间
editor bigint NULL 编辑人
edit_time datetime NULL 编辑时间
deleted tinyint NULL 是否删除
org_id bigint NULL 所属组织部门ID

9:‘员工角色’(staff_role)

字段名 类型 默认值 列注释
id int NULL 自增id
staff_id bigint NULL 员工id
role_id int NULL 角色id

10:sys_log(sys_log)

字段名 类型 默认值 列注释
id bigint NULL 主键
operator bigint NULL 操作人
user_id bigint NULL 用户id
type varchar NULL 类型
info varchar NULL 信息
path varchar NULL 路径
url varchar NULL 请求地址
method varchar NULL 请求方法
param text NULL 参数
ip varchar NULL IP地址
browser_name varchar NULL 浏览器名
browser_ver varchar NULL 浏览器版本
os_name varchar NULL 系统名称
add_time datetime NULL 日志时间
time_cost int NULL 响应时间毫秒
org_id bigint NULL 所属组织ID

11:‘权限’(sys_permission)

字段名 类型 默认值 列注释
id int NULL 自增id
name varchar NULL 菜单名称
url varchar NULL url
code varchar NULL 代码
enabled smallint NULL 是否启用 1 启用,0 禁用
group_name varchar NULL 分组

12:‘角色’(sys_role)

字段名 类型 默认值 列注释
id int NULL 自增id
name varchar NULL 角色名称
code varchar NULL 角色编码

13:‘角色权限’(sys_role_permission)

字段名 类型 默认值 列注释
id int NULL 自增id
role_id int NULL 角色id
permission_id int NULL 菜单id

14:‘用户表’(user)

字段名 类型 默认值 列注释
id bigint NULL 用户主键
name varchar NULL 昵称
avatar varchar NULL 头像
mobile varchar NULL 手机号/账号
password varchar NULL 密码
balance decimal NULL 余额
login_times int NULL 登录次数
latest_login_time datetime NULL 上次登录时间
latest_login_ip varchar NULL 上次登录ip
remark varchar NULL 备注
state tinyint NULL 账号状态
add_time datetime NULL 注册时间
deleted tinyint NULL 逻辑删除

15:‘图书表’(z_book)

字段名 类型 默认值 列注释
id int NULL id
info_id int NULL 书本信息id
code varchar NULL 书本编号
state int NULL 状态
user_id bigint NULL 借阅者
library_id int NULL 图书馆id
editor bigint NULL 更新者
edit_time datetime NULL 更新时间
deleted int NULL 逻辑删除

16:‘图书信息表’(z_bookinfo)

字段名 类型 默认值 列注释
id int NULL id
code varchar NULL 图书编码
name varchar NULL 书名
author varchar NULL 主编/作者
cover varchar NULL 封面
isbn bigint NULL isbn
press varchar NULL 出版社
version tinyint NULL 版次
public_time date NULL 出版时间
num_pages int NULL 页数
introduce varchar NULL 简介
type_id int NULL 类型id
creator bigint NULL 创建者
add_time datetime NULL 创建时间
editor bigint NULL 更新者
edit_time datetime NULL 更新时间
deleted tinyint NULL 逻辑删除
b_num int NULL 借阅次数
v_num int NULL 查看次数

17:‘图书类型表’(z_booktype)

字段名 类型 默认值 列注释
id int NULL id
name varchar NULL 类型名字
code varchar NULL 代码
introduce varchar NULL 简介
subarea varchar NULL 分区
num int NULL 排号

18:‘图书借阅记录’(z_borrow)

字段名 类型 默认值 列注释
id int NULL id
bn varchar NULL 借阅号
user_id bigint NULL 用户id
book_id int NULL 书本号
add_time datetime NULL 借阅时间
overdue_date date NULL 逾期日期
state int NULL 借阅状态
return_time datetime NULL 归还时间
remark varchar NULL 备注
deleted int NULL 逻辑删除

19:z_idCard(z_idCard)

字段名 类型 默认值 列注释
id bigint NULL
name varchar NULL
id_no varchar NULL
state int NULL
address varchar NULL
birthday varchar NULL
sex int NULL
age int NULL
user_id int NULL

20:‘身份信息表’(z_idcard)

字段名 类型 默认值 列注释
id int NULL id
name varchar NULL 名字
id_no varchar NULL 身份证号码
state int NULL 审核状态
remark varchar NULL 验证结果信息
address varchar NULL 地址
birthday date NULL 生日
sex int NULL 性别
age int NULL 年龄
user_id bigint NULL 用户id

21:‘图书馆表’(z_library)

字段名 类型 默认值 列注释
id int NULL
name varchar NULL 名字
short_name varchar NULL 简称
code varchar NULL 编码
address varchar NULL 地址
admin bigint NULL 管理员
introduce varchar NULL 介绍
creator bigint NULL 创建者
add_time datetime NULL 创建时间
editor bigint NULL 编辑者
edit_time datetime NULL 编辑时间
deleted tinyint NULL 逻辑删除

22:z_overdue(z_overdue)

字段名 类型 默认值 列注释
id int NULL id
dn varchar NULL 逾期单号
book_id int NULL 图书id
borrow_id int NULL 借阅id
user_id bigint NULL 用户id
overdue_date date NULL 逾期日期
return_date date NULL 归还时间
pay_type int NULL 支付方式
amount decimal NULL 金额
pay_time datetime NULL 支付时间
state int NULL 状态
deleted tinyint NULL 逻辑删除
remark varchar NULL 备注

23:z_recharge(z_recharge)

字段名 类型 默认值 列注释
id int NULL 主键
rn varchar NULL 充值单号
user_id bigint NULL 用户id
pay_type int NULL 支付方式
amount decimal NULL 充值金额
state int NULL 状态
remark varchar NULL 备注
pay_time datetime NULL 充值时间
deleted int NULL 逻辑删除

24:z_section(z_section)

字段名 类型 默认值 列注释
id int NULL id
title varchar NULL 章节
content varchar NULL 内容
info_id int NULL 关联图书

五、功能模块:

  1. 小程序端(用户端)-登录注册:用户通过手机号进行登录注册,系统模拟短信验证码的功能进行校验

基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第2张图片

  1. 系统首页:用户可以在系统首页查看公告信息,借阅记录,图书检索,当前借阅情况,预期缴费,以及图书推荐等功能。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第3张图片

  2. 图书详情:详情包括图书的基本信息,图书的章节目录,以及图书所在的图书馆和剩余的可借书的状态等,点击扫码借阅可以借阅图书

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第4张图片

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第5张图片

  3. 图书分类:用户可以在图书分类页面根据不同的分类检索图书,并查看图书的详细信息,也可以通过扫码借阅功能进行借书。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第6张图片

  4. 个人中心:用户可以在个人中心页面查看图书借阅即将预期情况,预期未归还情况,欠缴费单量,以及借阅记录等信息。也可以进行在线充值、模拟借书还书操作,以及管理自己的个人信息。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第7张图片

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第8张图片

  5. 运营驾驶舱:管理员可以在运营驾驶舱页面查看数据中心的统计信息。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第9张图片

  6. 用户管理:管理员可以在用户管理页面管理所有用户的账户信息以及充值记录。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第10张图片

  7. 图书管理:管理员可以在图书管理页面管理图书信息以及图书类型,同时也可以管理书店信息。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第11张图片

  8. 借阅管理:管理员可以在借阅管理页面查看所有借阅记录、预期缴费情况等信息。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第12张图片

  9. 用户公告管理:管理员可以在用户公告管理页面管理用户公告信息。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第13张图片

  10. 数据中心:管理员可以在数据中心页面查看图书统计信息、用户统计信息以及借阅统计信息等。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第14张图片

  11. 部门人员管理:管理员可以在部门人员管理页面管理部门信息和员工信息。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第15张图片

  12. 系统管理:管理员可以在系统管理页面管理内部公告和系统参数等。

    基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台_第16张图片

六、代码示例:

@RestController
@RequestMapping(USER_APP_URL_PREFIX+"/borrow")
@Api(value = "借阅记录移动端接口", tags = "移动端接口")
public class UBorrowController {
    @Autowired
    private BorrowService borrowService;

    @ApiOperation("借阅记录")
    @GetMapping("/list")
    public Object list(@RequestParam("state") Integer state) {
        BorrowListParamDTO param = new BorrowListParamDTO(UserAuthUtil.getCurrentUserId(),state);
        return borrowService.getBorrowList(param);
    }
    @ApiOperation("归还记录")
    @GetMapping("/listPage")
    public Object listPage(@RequestParam(value = "page", defaultValue = "") Integer page,
                             @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize,
                             @RequestParam(value = "state", defaultValue = "-1")Integer state) {
        BorrowListParamDTO param = new BorrowListParamDTO(UserAuthUtil.getCurrentUserId(),state);
        param.setPage(page);
        param.setPageSize(pageSize);
        return JsonResponseUtil.paginate(borrowService.getBorrowListPage(param));
    }

    @ApiOperation("删除借阅记录")
    @Log(description = "删除借阅记录", type = "借阅记录管理")
    @PostMapping("/delete")
    public Object delete(@RequestBody CommonParamDTO param) {
        if (borrowService.removeById(param.getId())) {
            return JsonResponseUtil.success();
        } else {
            return JsonResponseUtil.error("删除失败");
        }
    }
    @ApiOperation("续借")
    @Log(description = "续借", type = "用户续借", isStaff = false)
    @PostMapping("/renew")
    public Object renew(@RequestBody CommonParamDTO param) {
        UpdateWrapper<Borrow> wrapper = new UpdateWrapper<>();
        //续上30天
        wrapper.lambda().eq(Borrow::getId,param.getId()).eq(Borrow::getState,1)
                .set(Borrow::getState,2).setSql("overdue_date = DATE_ADD(overdue_date, INTERVAL 30 DAY)");
        if (borrowService.update(wrapper)) {
            return JsonResponseUtil.success();
        } else {
            return JsonResponseUtil.error("续借失败");
        }
    }

    @ApiOperation("借阅详情")
    @GetMapping("/info")
    public Object info(@RequestParam("id")Integer id) {
        return borrowService.getBorrowInfo(id);
    }
}

七、项目总结:

开发基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台是作为毕设作品进行设计的,这个毕设作品是我在校进行知识学习的一个毕业考核项目,也是检验我通过网络工具,图书工具等学习工具进行自学的能力水平,让我在根据程序开发的需求分析初步完成程序功能之外,还接触了程序的测试过程,了解程序测试的具体的过程,以及遇到问题怎么去寻找相应的解决办法等等,毕业作品的制作以及设计才是学校对我真正的考验。

在程序软件没能进行开发之前,我去了学校的图书馆借了有关数据库操作的书籍,在查看了sqlserver和mysql两种数据库的相关知识之后,我最后选择了我比较熟悉的mysql数据库。在编程语言的抉择上,由于自己之前接触过Java程序的开发,所以为了让我尽快在短时间内完成程序制作,我确定用Java编程语言进行程序编程。另外我从百度上下载了很多的有关信息增加,信息删除等操作的源代码,并通过不断调试以及完成配套的数据库的设计,开始完成程序的各个部分的功能。每当我粗心大意,致使我深陷程序开发困扰不能自拔之时,值得庆幸的是,我就会得到老师,还有我的寝室同学的耐心指导。

历经长达几个月的毕业作品制作,我凭借自己的知识技能,还有大家的指导帮助,能够在学校规定的时间段之内提交毕业作品。虽然已经算是完成了毕业作品,但是付出了这么多心血,还是想把这个作品做得更加完美一点。针对我的毕业作品学生信息管理系统,我觉得还有很多方面需要完善,第一就是界面上需要细微调整,比如色彩搭配有点违背广众的审美,需要细微调整,还有系统里面的字体大小也需要调大一点,太小的字体看起来有些费眼。然后在程序的功能上因为自己的入门开发水平的影响,所以目前只能做到这个境界,这个系统相比其他类似系统来说功能很简单,逻辑结构设计得也比较合理。

自己一个人完成程序的开发,我不仅亲自体验了程序的开发流程,体验到了程序开发的各种不易。这种体验也还加深了我对知识的尊重。学海无涯,知识不是大学短短四年就能学完的,在大学学到的知识在最终经历检验时,才会深深地明白自己的知识积累原来还很浅薄。所以今后不管身在何处,自己的学习心态一定要时刻体现出来,要深刻明白知识学到手里就是自己的。同时,自己也不必过多抱怨学到的知识没有用处,相信学到的知识总会有派上用处的那天。不要等到需要用时再去学习知识,那样就会导致自己错失很多本该属于自己的机遇。

八、源码获取:

大家点赞、收藏、关注、评论啦 、查看获取项目下载链接,博主联系方式

链接点击直达:下载链接

你可能感兴趣的:(毕设相关,java,spring,boot,uni-app)