问题描述

实现简易版图书借阅管理系统,学生在系统里可以检索图书,借阅图书,归还图书等功能;管理员有完成书籍信息,学生信息维护等功能

需求分析

  1. 系统分为管理员账户,学生账户
  2. 管理员账户可以进行书籍,学生信息的维护(CRUD)。
  3. 学生账户可以借书,还书,检索图书

要点

开发语言:Java (jdk版本12+)

数据库:MySQL (版本8.0+)

工具:JDBC

交互场景:控制台

软件:IDEA,Navicat

数据库设计

实体关系:

数据库表设计:

注意:所有表的主键记得勾上自增

管理员表:

书籍表:

学生表:

借书表:

程序运行效果

以下为控制台交互效果

学生登录

-----------------图书管理系统     1.学生登录       2.管理员登录
-------------------
请输入身份:1
请输入账号:666
请输入密码:666登录成功!
---------------
1.借书
2.还书
3.检索
4.退出
---------------
请选择:
1
检索方式:1.书名  2.ISBN码
请选择:
2
请输入图书ISBN:3232
查找结果如下:
id      isbn        书名      作者      出版社     馆藏数量
2       3232        数据库设计       小A      上海出版社       6
-------1.借阅  2.重新输入查询  3.返回------
请选择:1
--借书登记--
借阅成功!
---------------
1.借书
2.还书
3.检索
4.退出
---------------
请选择:
2
----我要还书----
当前借阅记录:
id      isbn        书名      作者      出版社
2       3232        数据库设计       小A      上海出版社
-------1.还书   2.返回------
请选择:2
---------------
1.借书
2.还书
3.检索
4.退出
---------------
请选择:
3
检索方式:1.书名  2.ISBN码
请选择:
1
请输入书名:西游记
--------------------
查找结果如下:
id      isbn        书名      作者      出版社     馆藏数量
1       2132131     西游记     吴承恩     清华      7
-------1.重新输入查询  2.返回------
2
---------------
1.借书
2.还书
3.检索
4.退出
---------------
请选择:

管理员登录

-----------------图书管理系统     1.学生登录       2.管理员登录
-------------------
请输入身份:2
请输入账号:admin
请输入密码:admin登录成功!
--------------
1.学生管理
2.书籍管理
3.图书借阅一览
4.退出
--------------
请选择:
3
学生账号        学生姓名        书ISBN       书名      借出时间        应还时间
3       3       2132131     西游记     2022-06-08 09:41:43     2022-07-08 09:41:43
666     程序员小李       3232        数据库设计       2022-06-09 09:56:22     2022-07-09 09:56:22
---------------
--------------
1.学生管理
2.书籍管理
3.图书借阅一览
4.退出
--------------
请选择:
3
学生账号        学生姓名        书ISBN       书名      借出时间        应还时间
3       3       2132131     西游记     2022-06-08 09:41:43     2022-07-08 09:41:43
666     程序员小李       3232        数据库设计       2022-06-09 09:56:22     2022-07-09 09:56:22
---------------
--------------
1.学生管理
2.书籍管理
3.图书借阅一览
4.退出
--------------
请选择:
1
---------------
1.所有学生信息
2.查询学生信息
3.修改学生信息
4.删除学生信息
5.添加学生信息
6.返回
----------------
请选择:
2
请输入学生账号:
666
查询结果如下:
---------------
id  账号      姓名
8   666     程序员小李
---------------
1.所有学生信息
2.查询学生信息
3.修改学生信息
4.删除学生信息
5.添加学生信息
6.返回
----------------
请选择:
1
所有学生信息如下:
id  账号      姓名
1   123456      小红
2   222     小王
4   1       1
6   3       3
7   5       5
8   666     程序员小李
---------------
1.所有学生信息
2.查询学生信息
3.修改学生信息
4.删除学生信息
5.添加学生信息
6.返回
----------------
请选择:
6
--------------
1.学生管理
2.书籍管理
3.图书借阅一览
4.退出
--------------
请选择:
2
----------------
1.所有图书信息
2.添加图书信息
3.删除图书信息
4.修改图书信息
5.返回
----------------
请选择:
1
id      isbn        书名      作者      出版社     馆藏数量
1       2132131     西游记     吴承恩     清华      7
2       3232        数据库设计       小A      上海出版社       5
3       43423423        Java进价      小张      深圳出版社       50
6       5       5       5       8       6
------------
----------------
1.所有图书信息
2.添加图书信息
3.删除图书信息
4.修改图书信息
5.返回
----------------
请选择:
5
--------------
1.学生管理
2.书籍管理
3.图书借阅一览
4.退出
--------------

部分程序

数据库连接工具类

package com.tushu.utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class ConnDB {// 获取连接通道// Connection public static Connection getConnection() {Connection conn = null;// 1.加载驱动类try {// Mysql驱动Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接通道String url ="jdbc:mysql://localhost:3306/bm?useSSL=false&serverTimezone=Asia/Shanghai";String user = "root";String password = "root";conn = DriverManager.getConnection(url,user,password);} catch (ClassNotFoundException  e) {// 1.类名错误 2.外部jar没有引用e.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}// 关闭资源public  static void closeDB(ResultSet rs,Statement pst,Connection conn) {try {if(rs!=null) {rs.close();}if(pst!=null) {pst.close();}if(conn!=null) {conn.close();}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {System.out.println(ConnDB.getConnection());}
}

时间获取工具类

package com.tushu.utils;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class TimeTools {public static String  getTime() {Date date = new Date();SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");return dateFormat.format(date);}//获取当前时间往后一个月的时间public static String  getTime2() {Date date = new Date();Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MONTH, +1);SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");return dateFormat.format(calendar.getTime());}
}

CRUD方法封装类

package com.tushu.dao;
import com.tushu.utils.ConnDB;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public abstract class BaseDAO {// 共通的增删改方法public int update(String sql,Object[] arr) {Connection conn = ConnDB.getConnection();PreparedStatement pst = null;try {pst = conn.prepareStatement(sql);//对占位符赋值for (int i = 0; i < arr.length; i++) {pst.setObject(i+1, arr[i]);}int row = pst.executeUpdate();return row;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {ConnDB.closeDB(null, pst, conn);}return 0;}// 共通查询public <T>T select(String sql,Object[] arr){Connection conn = ConnDB.getConnection();PreparedStatement pst = null;ResultSet rs = null;T t = null;try {pst= conn.prepareStatement(sql);for (int i = 0; i < arr.length; i++) {pst.setObject(i+1, arr[i]);}rs = pst.executeQuery();// 对结果集的收集if(rs.next()) {// 收集对象的属性t = this.rowMapper(rs);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {ConnDB.closeDB(null, pst, conn);}return t;}// 查询结果集合public <T> List<T> selectAll(String sql,Object[] arr){List<T> list = new ArrayList<>();Connection conn = ConnDB.getConnection();PreparedStatement pst = null;ResultSet rs = null;try {pst= conn.prepareStatement(sql);for (int i = 0; i < arr.length; i++) {pst.setObject(i+1, arr[i]);}rs = pst.executeQuery();T t = null;// 对结果集的收集while(rs.next()) {// 收集对象的属性t = this.rowMapper(rs);// 添加到集合list.add(t);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {ConnDB.closeDB(null, pst, conn);}return list;}// 定义方法  每个查询的结果集获取对应的属性public  abstract <T> T rowMapper(ResultSet rs) throws SQLException;
}

篇幅有限,就不在这里展示全部代码了。


完整源码获取
点击下方公众号链接
微信扫描弹出的二维码关注 编程亿点有趣 公众号,回复关键字 借阅系统 ,即可获取源码。

本次分享到这!!!
下期见!!
拜拜!

数据库课程设计:图书借阅管理系统(控制台交互)相关推荐

  1. 数据库课程设计——图书管理管理系统(一)

    数据库课程设计--图书馆管理系统(一) 1.需求分析 系统的设计目标: Library系统(图书管理系统)是通过本系统软件,能帮助图书馆管理人员利用计算机,快速方便地对图书馆书籍,读者资料,借还书等进 ...

  2. Java课程设计-图书借阅管理系统

    摘要 图书管理工作是每个学校必须面对的工作,如何利用较为先进的技术开发高效.安全.各平台间相互数据共享的信息化平台,也就是设计出稳定.全面.有效的图书借阅管理系统,这就显得尤为重要.文中介绍了图书借阅 ...

  3. 查询学生选修课程管理系统java_JAVA数据库课程设计学生选课管理系统的

    <JAVA数据库课程设计学生选课管理系统的>由会员分享,可在线阅读,更多相关<JAVA数据库课程设计学生选课管理系统的(59页珍藏版)>请在人人文库网上搜索. 1.一.课程设计 ...

  4. 数据库课程设计-员工信息管理系统(基于python和MySQL实现)

    一.项目地址 具体项目相关信息可移步至我的Github查看,那里有整套项目文件以及课程设计报告等,仅供交流学习和参考,如有错误之处请多多指正哦. 二.系统定义 随着计算机技术的不断发展,计算机作为知识 ...

  5. java 数据库工资管理系统设计_数据库课程设计—企业工资管理系统(java版完整代码)...

    数据库课程设计-企业工资管理系统(java版完整代码) 数 据 库 课 程 设 计 报 告2016年 5月 20日 目 录企业工资管理系统姓 名 王 素 文班 级 软 133学 号 139074224 ...

  6. 计算机数据库课程设计,药品销售管理系统

    计算机数据库课程设计,药品销售管理系统 https://x-x.fun/i/Lb0b58c73eUr9

  7. oracle学生信息管理系统课程设计,数据库课程设计-学生信息管理系统的设计与实现.doc...

    数据库课程设计-学生信息管理系统的设计与实现 2011-2012课程设计II 学生信息管理系统的设计与实现 一 设计内容 建立一个简单的在校学生信息查询系统,可以让使用者查询到学生的一些简单的个人信息 ...

  8. 数据库课程设计--高校机房管理系统

    数据库课程设计--题目:机房管理系统   (cs架构)前端 jsp+easyui 后端 java+mysql 环境: Myeclipse 2016-cI-3 mysql-installer-commu ...

  9. 数据库课程设计超市信息管理系统

    目录 一.需求分析 1.系统需求分析描述 1.1.1系统需求说明: 1.1.2系统可行性分析: 1.1.3系统应用范围: 2.系统功能结构图 3.业务流程图 二.概念结构设计 1.实体描述 2.局部E ...

  10. 数据库课程设计(乐队管理系统)实现增删改查权限设置MVC

    为什么要做这个系统呢 这是一个数据库课程设计完成的作品 名字叫做Rainmaple乐队管理系统 首页部分 各种权限用户均可查看 - 简单的轮播 旗下的乐队信息(从数据库中读取) 后台部分 后台入口 简 ...

最新文章

  1. TCP建立连接与断开连接的过程
  2. lvs-健康检查方式
  3. WorldWind Java 版学习:1、启动过程
  4. win10下TensorFlow-GPU安装(GTX1660+CUDA10+CUDNN7.4)
  5. 1.php查询数据,数据查询 · thinkphp5 · 看云
  6. WCF Transaction
  7. bzoj3390[Usaco2004 Dec]Bad Cowtractors牛的报复*
  8. 矢量字体合并《注意事项》
  9. 23位子网掩码是多少_23位子网掩码包含哪几个网段
  10. IBM出手 蓝色巨人收购蓝色巨狼
  11. 为静态照片添加动画表情的iOS应用MugLife来了,网友惊呼「这技术等着被收购吧」
  12. Unity_7 如何使用遮挡剔除Occlusion Culling
  13. java调用腾讯地图根据经纬度获取位置信息
  14. rep论文阅读2:ResRep_Lossless CNN Pruning via Decoupling Remembering and Forgetting
  15. 光环国际20周年庆六城联动峰会「北京场」圆满结束!
  16. 服务器系统盘40g是什么,云服务器 40g系统盘
  17. 在window下查看占用tomcat进程,杀死进程并启用tomcat
  18. 十四、Nginx--rewrite规则
  19. 经典VU仪表的混音效果工具
  20. onecore\com\combase\dcomrem\channelb.cxx(6563)\combase.dll!76A59D9F: (caller: 75A95B54) ReturnHr(1)

热门文章

  1. 基本磁盘转换动态磁盘,再转换为基本磁盘,分区数据丢失
  2. 传智播客黑马程序员_新程序员的最佳播客,以及聆听他们的最佳工具
  3. IT简历写作注意事项
  4. java打印堆栈信息_Java 打印堆栈的几种方法
  5. Ubuntu 安装 bashtop 资源监视器
  6. IP模拟工具modify header
  7. ubuntu安装l2tp/ipsec
  8. js链接oracle数据库语法,js连接oracle数据库
  9. MaxScript读取excel数据
  10. Leetcode题解助手