需求分析实现简易版图书借阅管理系统,学生在系统里可以检索图书,借阅图书,归还图书等功能;管理员有完成书籍信息,学生信息维护等功能
要点
- 系统分为管理员账户,学生账户
- 管理员账户可以进行书籍,学生信息的维护(CRUD)。
- 学生账户可以借书,还书,检索图书
开发语言: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 block
e.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 block
e.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 block
e.printStackTrace();
}finally {
ConnDB.closeDB(null, pst, conn);
}
return 0;
}
// 共通查询
public 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 block
e.printStackTrace();
}finally {
ConnDB.closeDB(null, pst, conn);
}
return t;
}
// 查询结果集合
public List selectAll(String sql,Object[] arr){
List 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 block
e.printStackTrace();
}finally {
ConnDB.closeDB(null, pst, conn);
}
return list;
}
// 定义方法 每个查询的结果集获取对应的属性
public abstract T rowMapper(ResultSet rs) throws SQLException;
}
篇幅有限,就不在这里展示全部代码了。
完整源码获取:微信扫描以下二维码关注 编程亿点有趣 公众号,回复关键字 借阅系统 ,即可获取源码
本次分享到这!!!
下期见!!
拜拜!



