java连接mysql数据库实现图书馆管理系统

article/2025/11/9 8:27:02

图书馆管理系统,具体功能包括:
1. 用户登录
2. 用户注册
3. 新图书入库
4. 图书信息查询
5. 图书更新(修改)
6. 旧图书删除
7. 办理借阅证登记
8. 图书借阅管理
完整项目:https://download.csdn.net/download/sger123/12887202

//数据库连接    MySQL:8.0.14
public class DBConnection {public static final String DRIVER ="com.mysql.cj.jdbc.Driver";public static final String URL="jdbc:mysql://localhost:3306/library_management_system?serverTimezone=GMT%2B8";//library_management_system 是自己创建的数据库名字// public static final String URL="jdbc:mysql://localhost:3306/library_management_system";mysql5.0的public static final String USER="root";public static final String PASSWORD="123456";Connection conn =null;public DBConnection(){try{Class.forName(DRIVER);}catch (ClassNotFoundException e) {e.printStackTrace();}try{conn= DriverManager.getConnection(URL,USER,PASSWORD);}catch (SQLException e) {e.printStackTrace();}}public Connection getConnection(){return this.conn;}public void close(){if(this.conn!=null){try{this.conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

管理员表
在这里插入图片描述
图书表
在这里插入图片描述
读者表
在这里插入图片描述

借阅表
在这里插入图片描述
借阅表的外键关系
在这里插入图片描述

javaBean

//图书类
public class Book {private int book_id;          //图书编号private String book_name;      //书名private String book_author;   //作者private String book_press;   //出版社public Book(int book_id, String book_name, String book_author, String book_press) {this.book_id = book_id;this.book_name = book_name;this.book_author = book_author;this.book_press = book_press;}public int getBook_id() {return book_id;}public void setBook_id(int book_id) {this.book_id = book_id;}public String getBook_name() {return book_name;}public void setBook_name(String book_name) {this.book_name = book_name;}public String getBook_author() {return book_author;}public void setBook_author(String book_author) {this.book_author = book_author;}public String getBook_press() {return book_press;}public void setBook_press(String book_press) {this.book_press = book_press;}
//读者类
public class User {private int user_id;   //借阅证private String  user_name;private int user_age;private String user_sex;private String user_phone;public User(int user_id, String user_name, int user_age, String user_sex, String user_phone) {this.user_id = user_id;this.user_name = user_name;this.user_age = user_age;this.user_sex = user_sex;this.user_phone = user_phone;}public int getUser_id() {return user_id;}public void setUser_id(int user_id) {this.user_id = user_id;}public String getUser_name() {return user_name;}public void setUser_name(String user_name) {this.user_name = user_name;}public int getUser_age() {return user_age;}public void setUser_age(int user_age) {this.user_age = user_age;}public String getUser_sex() {return user_sex;}public void setUser_sex(String user_sex) {this.user_sex = user_sex;}public String getUser_phone() {return user_phone;}public void setUser_phone(String user_phone) {this.user_phone = user_phone;}
}
//借阅类
public class Borrow {private  int user_id;private int book_id;public Borrow(int user_id, int book_id) {this.user_id = user_id;this.book_id = book_id;}public int getUser_id() {return user_id;}public void setUser_id(int user_id) {this.user_id = user_id;}public int getBook_id() {return book_id;}public void setBook_id(int book_id) {this.book_id = book_id;}
}

DBDao类

public class DBDao {private DBConnection dbConnection = null;private Connection conn = null;/* private static String username;private static String password;*/static Scanner input = new Scanner(System.in);public DBDao() {this.dbConnection =new DBConnection();this.conn = dbConnection.getConnection();}//管理员登陆public boolean denglu(){System.out.println("----管理员登录----");System.out.println("输入用户名:");String adminName=input.next();System.out.println("输入密码:");String adminPwd=input.next();String sql="SELECT ADMIN_NAME,ADMIN_PWD FROM ADMIN WHERE ADMIN_NAME=? AND ADMIN_PWD=?";PreparedStatement ptmt= null;try {ptmt = conn.prepareStatement(sql);ptmt.setString(1, adminName);ptmt.setString(2, adminPwd);ResultSet rs=ptmt.executeQuery();if (rs.next()) {System.out.println("登录成功!");return true;} else {System.out.println("账号或密码不正确,请重新登录!\n");return false;}} catch (SQLException e) {e.printStackTrace();}return false;}//管理员注册public boolean zhuce(){System.out.println("----管理员注册----");System.out.println("输入用户名:");String adminName=input.next();System.out.println("输入密码:");String adminPwd1=input.next();System.out.println("再次确认密码");String adminPwd2=input.next();if(adminPwd1.equals(adminPwd2)){String password=adminPwd1;String sql="INSERT INTO ADMIN(ADMIN_NAME,ADMIN_PWD) VALUES(?,?)";PreparedStatement ptmt= null;try {ptmt = conn.prepareStatement(sql);ptmt.setString(1, adminName);ptmt.setString(2, password);ptmt.execute();System.out.println("注册成功!");return true;} catch (SQLException e) {e.printStackTrace();}}else{System.out.println("你输入的两次密码不一致,请重新注册!");return false;}return false;}//新图书入库public boolean insertBook(Book book){boolean flag = false;PreparedStatement pstmt = null;String sql = "insert into book(book_id,book_name,book_author,book_press) values(?,?,?,?)";try {pstmt = conn.prepareStatement(sql); //模糊查询pstmt.setInt(1, book.getBook_id());pstmt.setString(2,book.getBook_name());pstmt.setString(3, book.getBook_author());pstmt.setString(4,book.getBook_press());if (pstmt.executeUpdate() > 0) {flag = true;}} catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return flag;}//查询所有图书信息public boolean bookInof(){Statement stmt =null;String sql="select * from book";try{stmt=conn.createStatement();//执行查询数据库的SQL语句   ,返回一个结果集(ResultSet)对象。ResultSet Book = stmt.executeQuery(sql);System.out.println("图书编号"+"   书名"+"                               " +"作者"+"                  出版社");while(Book.next()){ //如果对象中有数据,就会循环打印出来System.out.printf("%-10s",Book.getString("book_id"));System.out.printf("%-30s",Book.getString("book_name"));System.out.printf("%-20s",Book.getString("book_author"));System.out.printf("%-20s\n",Book.getString("book_press"));}}catch (SQLException e) {e.printStackTrace();} finally {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}return true;}//查询该图书编号图书信息public  boolean searchBook(int id){PreparedStatement pstmt=null;String sql="SELECT book_id,book_name,book_author,book_press FROM book WHERE book_id=?";try{pstmt=conn.prepareStatement(sql);pstmt.setInt(1, id);ResultSet rs=pstmt.executeQuery();while(rs.next()){System.out.println("图书编号:"+rs.getInt(1)+"\t"+"书名:"+rs.getString(2)+"\t"+"图书作者:"+rs.getString(3)+"\t"+"出版社:"+rs.getString(4));}}catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return true;}//用图书编号修改图书信息public boolean bookUpdate(int id,Book book){boolean flag=false;PreparedStatement pstmt = null;String sql="UPDATE book SET book_name=?,book_author=?,book_press=? WHERE book_id=?";try{pstmt=conn.prepareStatement(sql);pstmt.setString(1, book.getBook_name());pstmt.setString(2, book.getBook_author());pstmt.setString(3, book.getBook_press());pstmt.setInt(4, book.getBook_id());if (pstmt.executeUpdate() > 0) {flag = true;}} catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return flag;}//按编号删除旧图书public boolean delelteBook(int id){boolean flag=false;PreparedStatement pstmt=null;String sql="DELETE FROM book WHERE book_id=?";try{pstmt=conn.prepareStatement(sql);pstmt.setInt(1, id);     //接收id传入sql语句if (pstmt.executeUpdate() > 0) {        // 至少已经更新了一行flag = true;}} catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return flag;}//办理借阅证public boolean  loanCard(User user){boolean flag = false;PreparedStatement pstmt = null;String sql = "insert into user(user_id,user_name,user_age,user_sex,user_phone) values(?,?,?,?,?)";try {pstmt = conn.prepareStatement(sql); //模糊查询pstmt.setInt(1, user.getUser_id());pstmt.setString(2, user.getUser_name());pstmt.setInt(3, user.getUser_age());pstmt.setString(4, String.valueOf(user.getUser_sex()));pstmt.setString(5, user.getUser_phone());if (pstmt.executeUpdate() > 0) {flag = true;}} catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return flag;}//用借书证搜索读者public boolean searchUser(int id){PreparedStatement pstmt=null;String sql="SELECT user_id,user_name,user_age,user_sex,user_phone FROM user WHERE user_id=?";try{pstmt=conn.prepareStatement(sql);pstmt.setInt(1, id);ResultSet rs=pstmt.executeQuery();while(rs.next()){System.out.println("读者借书证号:"+rs.getInt(1)+"\t"+"读者姓名:"+rs.getString(2)+"\t"+"读者年龄:"+rs.getString(3)+"\t"+"读者性别"+rs.getString(4)+"\t"+"读者联系方式"+rs.getString(5));}}catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return true;}//搜索所有拥有借书证读者public boolean userInof(){Statement stmt =null;String sql="select * from user";try{stmt=conn.createStatement();//执行查询数据库的SQL语句   ,返回一个结果集(ResultSet)对象。ResultSet Book = stmt.executeQuery(sql);System.out.println("借书证号"+"   读者姓名"+"                 " +"读者年龄"+"  读者性别"+"      联系方式");while(Book.next()){ //如果对象中有数据,就会循环打印出来System.out.printf("%-10s",Book.getString("user_id"));System.out.printf("%20s",Book.getString("user_name"));System.out.printf("%20s",Book.getString("user_age"));System.out.printf("%20s",Book.getString("user_sex"));System.out.printf("%20s\n",Book.getString("user_phone"));}}catch (SQLException e) {e.printStackTrace();} finally {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}return true;}//借书public boolean borrow(Borrow borrow){if(serachBorrow(borrow.getBook_id())){return false;}boolean flag = false;PreparedStatement pstmt = null;String sql = "insert into borrow(user_id,book_id) values(?,?)";try {pstmt = conn.prepareStatement(sql); //模糊查询pstmt.setInt(1, borrow.getUser_id());pstmt.setInt(2,borrow.getBook_id());if (pstmt.executeUpdate() > 0) {flag = true;}} catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return flag;}//还书public boolean return_book(Borrow borrow){boolean flag=false;PreparedStatement pstmt=null;String sql="DELETE FROM borrow WHERE user_id=? and book_id=?";try{pstmt=conn.prepareStatement(sql);pstmt.setInt(1, borrow.getUser_id());pstmt.setInt(2, borrow.getBook_id());if (pstmt.executeUpdate() > 0) {flag = true;}} catch (SQLException e) {e.printStackTrace();} finally {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}return flag;}//在借阅表中搜索该图书public boolean serachBorrow(int book_id){String sql="SELECT book_id FROM borrow WHERE book_id=?";PreparedStatement ptmt= null;try {ptmt = conn.prepareStatement(sql);ptmt.setInt(1, book_id);ResultSet rs=ptmt.executeQuery();if (rs.next()) {System.out.println("图书已被借走!\n");return true;} else {return false;}} catch (SQLException e) {e.printStackTrace();}return false;}
}

Main类

public class Main {public static Scanner scanner=new Scanner(System.in);public static DBDao dbDao=new DBDao();public static void main(String[] args) {Main main=new Main();System.out.println("欢迎使用图书馆管理系统");System.out.println("1.登陆         2.注册");System.out.println("请选择你要进行的操作:");int choose1=scanner.nextInt();switch (choose1){case 1:if( dbDao.denglu()){main.caozuo();}break;case 2:if(dbDao.zhuce()){dbDao.denglu();}else{System.out.println("注册失败");}break;}}//登陆后才能进行操作public  void caozuo(){int a=-1;while(a==-1) {System.out.println();System.out.println("---------------------管理员操作-----------------------");System.out.println(" 1.新图书入库\t" +"2.	图书信息查询\t" +"3.	图书更新(修改)\t" +"4.	旧图书删除\t" +"5.	办理借阅证登记\t" +"6.	图书借阅管理\t" +"7.退出操作");System.out.println("请选择你要进行的操作:");int choose2 = scanner.nextInt();switch (choose2) {case 1:insertNewbook();break;case 2:dbDao.bookInof();break;case 3:updatebook();break;case 4:deleteBook();break;case 5:loanCard();break;case 6:loanManagement();break;case 7:a=0;System.out.println("欢迎下次使用本系统");break;}}}//新图书入库public  void insertNewbook() {System.out.println("请输入要插入的图书编号:");int book_id=scanner.nextInt();System.out.println("请输入要插入的图书名称:");String  book_name=scanner.next();System.out.println("请输入要插入的图书作者:");String  book_author=scanner.next();System.out.println("请输入要插入的图书出版号:");String  book_press=scanner.next();Book book=new Book(book_id,book_name,book_author,book_press);if(dbDao.insertBook(book)){System.out.println("新图书入库成功!");}else{System.out.println("新图书入库失败!");}}//修改图书public void updatebook(){System.out.println("请输入要修改的图书的编号:");int book_id=scanner.nextInt();System.out.println("查询到该图书信息:");dbDao.searchBook(book_id);System.out.println("请输入修改后的图书名称:");String  book_name=scanner.next();System.out.println("请输入修改后的图书作者:");String  book_author=scanner.next();System.out.println("请输入修改后的图书出版号:");String  book_press=scanner.next();Book book=new Book(book_id,book_name,book_author,book_press);if(dbDao.bookUpdate(book_id,book)){System.out.println("图书信息修改成功!");}else{System.out.println("图书信息修改失败!");}}public void deleteBook() {System.out.println("请输入要删除的图书编号");int book_id=scanner.nextInt();if(dbDao.delelteBook(book_id)){System.out.println("删除成功!");}else{System.out.println("删除失败!");}}//办理借阅证public void loanCard(){System.out.println("办理借阅证登记:");SimpleDateFormat simpleDateFormat=new SimpleDateFormat("MMDDmmss");Date date=new Date();int user_id = Integer.parseInt(simpleDateFormat.format(date));System.out.println("请输入该读者的名字:");String  user_name=scanner.next();System.out.println("请输入该读者的年龄:");int  user_age=scanner.nextInt();System.out.println("请输入该用户的性别:");String  user_sex=scanner.next();System.out.println("请输入该读者的联系方式:");String user_phone=scanner.next();Pattern p = Pattern.compile("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$");Matcher m = p.matcher(user_phone);if(m.matches()){User user=new User(user_id,user_name,user_age,user_sex,user_phone);if(dbDao.loanCard(user)){System.out.println("借阅证登记成功!");System.out.println("该读者的借书证号为"+user_id);}else{System.out.println("借阅证登记失败!");}}else{System.out.println("输入的手机号格式不对");System.out.println("借阅证登记失败!");}}//图书借阅管理public  void loanManagement() {System.out.println("1.借书        2.还书       3.读者信息");System.out.println("请选择操作");int choose3=scanner.nextInt();switch (choose3){case 1:borrow();   //借书break;case 2:return_book(); //还书break;case 3:user();break;}}public  void borrow() {System.out.println("请输入该读者的借书证号:");int user_id=scanner.nextInt();System.out.println("请输入要借的图书编号:");int book_id=scanner.nextInt();Borrow borrow=new Borrow(user_id,book_id);if(dbDao.borrow(borrow)){System.out.println("借书成功");}else{System.out.println("借书失败");}}public  void return_book() {System.out.println("请输入该读者的借书证号:");int user_id=scanner.nextInt();System.out.println("请输入要还的图书编号:");int book_id=scanner.nextInt();Borrow borrow=new Borrow(user_id,book_id);if(dbDao.return_book(borrow)){System.out.println("还书成功");}else{System.out.println("还书失败");}}public  void user() {dbDao.userInof();}}

http://chatgpt.dhexx.cn/article/P4rHNLcN.shtml

相关文章

图书馆管理系统(使用数据库实现)

到现在,终于结束了javaSE基础部分的学习。结束前最后一个项目就是使用数据库实现图书管理系统。 整体项目功能流程结构图: 项目开发前的准备: 软件需求说明书 是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解&…

图书馆管理系统(Java Web)

图书馆管理系统(Java Web) 概述 基于Spring Spring MVC MyBatis的图书馆管理系统,使用Maven进行包管理。主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 项目演示 演示地址 &…

创建和管理图书管理系统数据库

1. 使用对象资源管理器建立名为“book”的数据库。数据文件和日志文件采用默认方式。 2.使用T-SQL命令建立名为“bookmanager”的数据库,并自定义数据文件和日志文件。 create database bookmanager on primary (namebookmanager_data, file…

数据库课程设计实验报告--图书馆管理系统

一、系统平台 开发工具:Eclipse java Mars 数据库 MySQL server,Navicat可视化工具 操作系统:win10 声明:由于该项目已是四年前大一时所做,时隔已久,且本人已不从事java相关工作,恕不能解答…

图书管理系统 数据库课程实验设计

本课设系软件工程大二学生作,拙笔狂言,恭请斧正。 开发工具:Eclipse 2020-12,Microsoft SQL server 2012 程序语言:Java 引 言 选题题目:图书管理系统 选题背景: (1)图书…

图书馆管理系统(数据库版)

图书馆管理系统(数据库版) 目录: 图书馆管理系统(数据库版)项目框架项目分包数据库列表代码分析工具包所用到的接口: 分享一波:总结: 项目框架 项目分包 上面为本次项目的分包建包示…

图书管理系统(数据库)

一、项目分析 1、项目功能分析 项目功能模块主要分为三个模块,登录模块、管理员模块、操作员模块。 登录模块包括登录功能,注册功能,登录日志功能,修改密码以及找回密码。 管理员模块包括工作日志功能、图书借阅金额设定、操作员…

数据库系统设计大作业:图书馆管理系统

数据库系统设计大作业:图书馆管理系统 参考https://blog.csdn.net/dimo__/article/details/84936685中的设计思路,设计了本系统 1 需求分析 针对图书馆的图书管理系统数据库设计,分别对图书馆的读者、一般工作人员和部门负责人进行详细地分…

简单用数据库实现图书管理系统

目录 一、摘要 2、基本功能 二、前言 三、主体 3.1需求分析 3.1.1 数据需求分析 3.1.2 功能需求分析 3.2概要设计 3.2.1 数据字典 3.2.2 ERD(实体关系图) 3.2.3 DFD数据流图 3.3 逻辑设计 3.3.1 E-R模型向关系模型的转换规则 3.3.2 E-R图转…

MySQL数据库期末项目 图书馆管理系统

1 项目需求分析 1.1 项目名称 图书馆管理系统 1.2 项目功能 在以前大多部分图书馆都是由人工直接管理,其中每天的业务和操作流程非常繁琐复杂,纸质版的登记信息耗费了大量的人力物力。因此图书馆管理系统应运而生,该系统采用智能化设计&#…

tar文件是什么?怎么解压?

例如在使用coco数据集的时候,下载下来是这样的两个文件: 恕我无知,之前完全没见过这种格式的文件。 经过一番咨询,原来是一种压缩文件,里面藏了很多内容,看它的大小就能猜到。 这种文件一般的压缩软件貌似…

常用的tar解压命令总结

ヘ^ヽ、  /⌒、  ,   |   ̄7  (⌒r⌒7/   レ   \/ ̄\」 _/         { _フ ●       ゝ _人   ο  ●  ナ   ト、&…

linux中.tar文件怎么解压

linux中.tar文件怎么解压 1、打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 tar -jcvf pack.tar.bz2 pack/ #打包压缩为一个.bz2格式的压缩包 tar -Jcvf pack.tar.xz pack/ #打包压缩为一个.xz格式的压缩包 2、解…

Linux 解压tar

Linux系统中tar压缩包怎么解压?Linux系统中有一个tar压缩包格式的文件需要解压,但是linux系统中没有找到tar的命令,该怎么办呢?下面我们就来看看详细的教程,需要的朋友可以参考下 在Linux的默认的版本中不是所有的命令…

解压缩命令tar zip rar

文章目录 打包和压缩的概念tar常用独立命令打包压缩查阅tar包内有哪些文件解压缩到指定目录(默认是当前目录)只将tar内的部分文件解压出来其他命令(其他) zip和unziprar和unrar 打包和压缩的概念 tar命令可以为linux的文件和目录创建档案 利用tar,可以为某一特定文件…

【hardware】什么是H桥电路?

前言 初玩智能车的小伙伴肯定会涉及到驱动电机正反转的时候,那么该如何控制智能车呢?这就要讲到双H桥了,让我来给你们分析吧! 1.三极管 讲到双H桥,那么首先得介绍两种三极管,S8550(PNP型&#x…

关于H桥的理解和应用

很多用电器对电源极性要求不高,如点灯,正反接都可以工作,而且现象都差不多,也有的用电器对电源极性敏感,而且接反了就不工作,例如多数半导体器件,LED等;但也有的用电器对电源极性敏感…

H桥驱动电路原理【转】

H桥驱动电路原理 一、H桥驱动电路 图4.12中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图4.12及随后的两个图都只是示意图,而…

STM32F1基于H桥的电机控制程序分析

这里写自定义目录标题 N-MOS H桥结构控制原理MOS驱动调速的实现控制程序编写 N-MOS H桥结构 控制原理 N-MOS的G极与S级的电压差大于某一值的时候,D极和S极之间导通,DS电阻极小,可看作导线,否则DS之间视为断路。 因此有以下控制方…

一份很用心的H桥驱动扫盲教程

什么是H桥? H桥是一个比较简单的电路,通常它会包含四个独立控制的开关元器件(例如MOS-FET),它们通常用于驱动电流较大的负载,比如电机,至于为什么要叫H桥(H-Bridge),因为…