基于java springboot的图书管理系统设计和实现

 🍅 作者主页:Java李杨勇 

🍅 简介:Java领域优质创作者🏆、Java奥斯卡 公号作者✌  简历模板、学习资料、面试题库、技术互助【关注我,都给你】

🍅 欢迎点赞 👍 收藏 ⭐留言 📝   

🍅  文末获取源码联系方式 📝   

前言

         随着网络技术的发展、计算机应用水平广泛提高,原来系统的时效性、数据的正确性、操作的方便性上都存在不足,已影响到系统的正常使用。经过考察比较,决定自己对图书管理系统重新设计,使系统能利用软件开发技术的成果,方便图书的管理。图书管理系统是典型的信息管理系统。系统介绍了图书系统的开发过程,设计中遇到的问题及解决方法以及提高当前应用程序或系统开发进度和改善工作性能。利用其提供的各种面向对象的开发工具首先在短时间内建立系统应用原型然后对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
      本次课程设计利用JAVA开发工具和Mysql数据库来开发这个图书管理系统。该系统要解决图书管理所要解决的问题,可以满足图书管理基本要求,包括添加、管理等功能。该系统能根据用户的需求,快捷方便的为读者提供借阅服务。

背景意义


        随着计算机的广泛应用,其逐步成为现代化的标志。图书馆或者一些企业内部,甚至是书店,在正常运行过程中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息、还书信息。因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高图书馆或者企业内部对图书存销的自动化的管理,能够更快速的满足读者的要求,提高各种工作的效率,现对其设计相应的系统。图书管理系统的主要功能是实现图书馆图书借阅和归还的管理的自动化。围绕这一主要功能,本系统涉及到以下核心功能:借阅管理,归还管理。除了这些核心功能外,还包括一些基本和辅助功能,它们是:用户管理、图书管理、图书查询。

 

 数据库设计

用户表

CREATE TABLE `NewTable` (
`admin_id`  int(11) NOT NULL AUTO_INCREMENT ,
`admin_name`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`admin_pwd`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`admin_email`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`admin_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=2
ROW_FORMAT=DYNAMIC
;

图书表

CREATE TABLE `NewTable` (
`book_id`  int(11) NOT NULL AUTO_INCREMENT ,
`book_name`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`book_author`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`book_publish`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`book_category`  int(11) NULL DEFAULT NULL ,
`book_price`  double NULL DEFAULT NULL ,
`book_introduction`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`book_id`),
FOREIGN KEY (`book_category`) REFERENCES `book_category` (`category_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
INDEX `book_category` (`book_category`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=72
ROW_FORMAT=DYNAMIC
;

图书类型

CREATE TABLE `NewTable` (
`category_id`  int(11) NOT NULL AUTO_INCREMENT ,
`category_name`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`category_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=51
ROW_FORMAT=DYNAMIC
;

图书借阅

CREATE TABLE `NewTable` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`user_id`  int(11) NULL DEFAULT NULL ,
`book_id`  int(11) NULL DEFAULT NULL ,
`date`  date NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
FOREIGN KEY (`book_id`) REFERENCES `book` (`book_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
INDEX `user_id` (`user_id`) USING BTREE ,
INDEX `book_id` (`book_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=67
ROW_FORMAT=DYNAMIC
;

功能截图

登录:

用户选择角色输入账号密码进行登录 

首页:

登录后的主要模块有

书籍管理《录入新书、类型管理、查询数据 》

用户管理《添加用户、查询用户》

借阅管理《借阅记录》

个人信息查看以及修改退出等

书籍管理:

 

用户管理:


借阅管理:

个人信息:

用户端

 用户登录后可以查看自己的借阅记录、以及去借书和归还书籍等操

代码实现

       这个项目功能比较简单、用的技术也是大家非常熟悉的技术、主要是springboot、springmvc、mybatis以前端的jquery、layui、html和css等基本样式。就拿登录来举一个完整例子吧、首先是前端静态页面的编写以及发送登录请求

<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" th:href="@{/layui/css/layui.css}"><style>body {/*width: 100%;*//*height: 100%;*/background: url("/images/background.png") no-repeat;/*background: url("static/images/a.png") no-repeat;*/background-size: cover;}#login_form {width: 400px;height: 300px;margin: 80px auto;padding: 30px;background-color: #f2f2f2;opacity: 0.9;}</style>
</head>
<body><div id="wrapper" style="margin-top: 260px"><div class="layui-container" id="login_form"><div><h1 style="color: red;text-align: center">图书管理系统</h1><br></div><form class="layui-form" id="my_form" method="post" action="/userLogin"><div class="layui-form-item"><label class="layui-form-label">用户名:</label><div class="layui-input-block"><input type="text" name="userName" id="username" autofocusplaceholder="请输入用户名" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">密 码:</label><div class="layui-input-block"><input type="password" name="password" id="password"placeholder="请输入密码" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">用户身份</label><div class="layui-input-block"><input class="form-check-input" type="radio" name="role" value="1" title="学生" checked><input class="form-check-input" type="radio" name="role" value="0" title="管理员"></div></div><div class="layui-form-item layui-col-md4 layui-col-md-offset4"><button id="sub_btn" class="layui-btn layui-btn-normal">登录</button></div></form></div>
</div><script th:src="@{/scripts/jquery.min.js}"></script>
<script th:src="@{/layui/layui.js}"></script><script th:inline="javascript">layui.use(['layer', 'form'], function () {let layer = layui.layer;let form = layui.form;form.render();$(function () {let flag = [[${session.flag}]];if (flag) {layer.msg("用户名或密码错误", {icon: 2,time: 2000 //2秒关闭(如果不配置,默认是3秒)});}});});$("#sub_btn").click(function () {let username = $("#username").val();let user_judge = check(username);// 首先判断用户名是否为空if (user_judge) {let password = $("#password").val();let pwd_judge = check(password);// 用户名不为空  , 判断密码是否为空if (pwd_judge) {let role_id = $('input[name="role"]:checked').val();// 如果role_id ==1 ,则是普通用户 , 直接提交表单if (role_id == 1) {$("#my_form").submit();} else {//如果是管理员 , 则将action 进行更改$("#my_form").attr("action", "/adminLogin")$("#my_form").submit();}} else {layer.alert("密码不能为空", {icon: 5});return false;}} else {layer.alert("用户名不能为空", {icon: 5});return false;}});// 校验表单中用户名 与 密码是否输入,  如果有值 -> 返回 true , 如果未输入 返回 false;function check(val) {val = val.toString().trim();return !(val == '');}</script>
</body>
</html>

    后台Controller接收到前端的登录请求之后执行参数校验、将前端传递过来的用户名密码以及用户角色进行判断验证、调用userService.userLogin方法执行用户登录验证、查询数据库当前账号密码是否正确、返回状态码给前端、前端根据状态码进行相对的页面跳转以及数据效应。

/*** 用户登录** @param userName* @return*/@PostMapping("/userLogin")public String userLogin(@Param("userName") String userName,@Param("password") String password, HttpServletRequest request) {User user = userService.userLogin(userName, password);if (null != user) {// flag = 0 表示用户名密码校验成功  【用于前端校验】request.getSession().setAttribute("flag", 0);request.getSession().setAttribute("user", user);return "user/index";}// flag 为 1 表示 登录失败 【用于前端校验】request.getSession().setAttribute("flag", 1);return "index";}

获取源码:

总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考 

查看下方微信公众号获取联系方式~

精彩系列推荐

Java毕设项目精品实战案例《100套》

HTML5大作业实战案例《100套》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux文件大小和目录,查看Linux目录和文件大小

1、查看 /opt 整个目录大小[rootlocalhost xml_onvif]# df -h /optFilesystem Size Used Avail Use% Mounted on/dev/sda2 18G 12G 5.3G 69% /2、查看 /opt 目录下的文件大小[rootlocalhost xml_onvif]# ls -lh /opt/total 442Mdrwxr-xr-x 6 ro…

基于javaspringboot+mybatis汽车信息管理系统设计和实现

演示地址 主要实现技术&#xff1a;Java、springmvc、springboot、mysql、mybaits、jQuery、js、css等、使用eclipse/idea运行。 主要功能模块 1.用户模块管理&#xff1a;用户登录、用户注册、用户的查询、添加、删除操作、 2.汽车类型管理&#xff1a;.汽车类型列表的展示…

linux推箱子脚本,【编程例题】标准C语言实现推箱子游戏!附解析!

今天我来分享一道对于初学C语言的同学非常有启发作用的编程例题&#xff0c;是用C语言实现单张地图推箱子的小游戏。这个游戏是基于Linux环境下编程的&#xff0c;所用工具为ubuntu、和gcc编译器。首先推箱子的地图&#xff0c;我们根据经典游戏推箱子中的其中一幅地图来自做&a…

基于JavaSwing+mysql的图书管理系统设计和实现

前言&#xff1a; 项目是使用Java swing开发&#xff0c;可实现基础数据维护、图书类型管理和维护、图书信息管理和维护、注销退出、关于作者简介等功能。界面设计比较简介、适合作为Java课设设计以及学习技术使用。 引言 随着计算机及网络技术的飞速发展&#xff0c;Intranet …

linux的vi把文件合并一行,学习Vim合并行的方法和技巧

刚接触 Vim 会觉得它的学习曲线非常陡峭&#xff0c;要记住很多命令。所以这个系列的分享&#xff0c;不会教你怎么配置它&#xff0c;而是教你怎么快速的使用它。在开发时为了代码美观&#xff0c;经常会把属性用换行的方式显示。title"批量编辑所属组织":visible.s…

基于JavaSwing+mysql的学生社团管理系统设计和实现

前言&#xff1a; 项目是使用Java swingmysql开发&#xff0c;可实现基础数据维护、用户登录注册、社团信息列表查看、社团信息添加、社团信息修改、社团信息删除以及退出注销等功能、界面设计比较简单易学、适合作为Java课设设计以及学习技术使用。 引言 随着全球信息化的迅猛…

linux 目录定义,linux根目录定义

linux根目录定义发布时间:2011-04-15 13:07:46来源:红联作者:www.saxue.com操作系统里面的根目录是非常重要的&#xff0c;linux的根目录&#xff0c;类似于windows下的我的电脑&#xff0c;是所有文件系统的父目录&#xff0c;根目录也也与开机&#xff0c;还原&#xff0c;系…

linux dhcp服务软包,dpkg包管理器详解

使用Debian或Ubuntu的linux用户肯定都用过或听过dpkg命令。“dpkg ”是“Debian Packager ”的简写。为 “Debian” 专门开发的套件管理系统&#xff0c;方便软件的安装、更新及移除。所有源自“Debian”的“Linux ”发行版都使用 “dpkg”。我的问题先说先我使用时的疑问。在使…

linux setarch 命令,6.22. Util-linux-2.23.1

安装的程序&#xff1a;addpart, agetty, blkid, blockdev, cal, cfdisk, chcpu,chrt, col, colcrt, colrm, column, ctrlaltdel, cytune, delpart,dmesg, eject, fallocate, fdformat, fdisk, findfs, findmnt,flock, fsck, fsck.cramfs, fsck.minix, fsfreeze, fstrim, getop…

linux里临时设置hbase参数,在centos下配置hbase环境并简单使用hbase shell

操作系统版本:centos7jdk版本:jdk-8u151-linux-x64.rpmhbase版本:hbase-1.2.6以单机模式安装运行配置centos为静态IP配置静态ipvi /etc/sysconfig/network-scripts/ifcfg-eth0IPADDR192.168.109.130NETMASK255.255.255.0配置网关vi /etc/sysconfig/networkGATEWAY192.168.109.2…

linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料

运行一个简单的脚本假设你有一个脚本叫&#xff1a;/usr/local/bin/myscript. &#xff0c;你想要每隔一小时就运行一次&#xff0c;Service 文件第一步&#xff0c;创建一个service文件&#xff0c;根据你Linux的发行版本放到相应的系统目录(在Arch中&#xff0c;这个目录是/e…

activemq使用linux内核机制,activemq基础之:(四)CentOS7 Linux搭建activemq

1、上传软件包/home/jdk-8u172-linux-x64.tar.gz/home/apache-activemq-5.15.8-bin.tar.gz2、解压tar -zxvf jdk-8u172-linux-x64.tar.gz -C /opttar -zxvf apache-activemq-5.15.8-bin.tar.gz -C /opt3、设置JDKvim /etc/profile加入&#xff1a;JAVA_HOME/opt/jdk1.8.0_172JR…

专栏订阅须知《必读》

作者介绍 专栏介绍&#xff1a; 本专栏是JavaWeb项目实战实战100套合集、目前作者还在更新整理、每一套都是经过作者精心测试运行调整无bug、订阅前先私聊博主、目前专栏列表还在慢慢整理更新中、部分精品私人定制项目在Java项目实战也能看见、需要的话可以联系博主 你能获取什…

linux闹钟软件下载,电量充满警示闹铃

电量充满警示闹铃中的服务功能非常贴心&#xff0c;不仅可以让用户随时查看自己手机的充电情况&#xff0c;而且充满后会有充电提示&#xff0c;让你更快速的了解手机电量状态&#xff0c;电量充满警示闹铃软件中最重要的就是警示功能&#xff0c;当用户的手机丢失或者被盗&…

Java Swing专栏订阅须知《必读》

订阅前请先花2分钟阅读一下本篇文章 作者介绍 Hello 我是奥斯卡、CSDN Java领域优质创作者、潜力新星、原力计划周榜前三作者 全网粉丝20W、阅读超百W、希望大家关注指导小奥、一起进步 专栏介绍&#xff1a; 本专栏是JavaSwing项目实战、目前作者还在更新整理、每一套都是经过…

lbp2900打印机linux驱动下载,佳能LBP2900打印机驱动

佳能LBP2900打印机驱动佳能LBP2900打印机驱动是一款由佳能官方推出的佳能LBP2900打印机驱动程序&#xff0c;佳能LBP2900打印机驱动操作简单、功能实用&#xff0c;能够有效解决打印机无法识别设备的问题&#xff0c;保证您进行正常的打印工作&#xff0c;是用户不可缺少的打印…

windows安装MySQL数据库【附安装文档和安装包】

MySQL下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1LE7jpBgcZFaQyLwYdXvvJQ&shflsharepset 提取码&#xff1a;ksx3 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 1,双击安装程序&#xff0c;进入安装页面&#xff1a;在下面的打钩…

万年历c语言大作业实验,用C语言写的一个万年历

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家&#xff0c;也给大家做个参考。#include#includeint input();void re_year(int year);void output(int year,int leap,int dis_day,int para);void main(){int year,leap,dis_day,para;while(1…

基于java springboot博客管理系统设计和实现

文末可参与投票哟 &#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java李阳勇 公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏…

基于JavaSwing ATM取款机系统的设计和实现

本项目演示地址链接 》 前言: 本项目是使用Java swing开发,可实现ATM系统/银行系统的基本登陆、转账、查询余额、存取款业务。界面设计比较简介、适合作为Java课设设计以及学习技术使用。 需求分析: 随着生活水平的提高,消费量的增大,开销也越来越大,自然离不开的就是钱…