Java+MySQL实现图书管理系统(完整代码)


本文整理自网络,侵删。

(完整代码+实训报告):

链接: https://pan.baidu.com/s/1E6BhEaHMa6Wch5yf6YAjOA 提取码: vnrx

觉着有用就点个赞哦~

一,功能

  1. 管理员登录
  2. 图书借阅信息管理
  3. 图书信息管理
  4. 管理员更改密码
  5. 退出系统

二,工具

  • Eclipse Version: 2018-09 (4.9.0)
  • MySQL Workbench 8.0 CE
  • mysql-connector-java-8.0.13.jar

三、效果图:

登录界面:

主界面:

借阅书籍管理:

个人书库管理:

更改密码:

四、数据库设计

1)图书表

2)用户表

两个数据表间没有关联:

五、JAVA层次分析

(1)逻辑图

(2)包结构,采用MVC三层架构组织各个模块

六、主要Java代码分析

Dao类(以BookDao为例)

package pers.cyz.dao;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
 
import pers.cyz.model.Book;
import pers.cyz.util.DBUtil;
 
/**
 * 数据库图书表信息数据访问对象类,包含增加图书信息、删除图书信息
 * 、更新图书信息、查询图书信息、查询借阅信息和归还图书
 * 
 * @author 1651200111 陈彦志
 */
public class BookDao {
 
 
	/**
	 * 增加图书信息
	 */
 public void addBook(Book book) throws Exception{
 	// 首先拿到数据库的连接
 Connection con = DBUtil.getConnection();
 String sql="insert into tb_books"
 		// ISBN、书名、图书价格、图书作者、出版社
 		+ "(ISBN, book_name, book_price, book_author, published_house,"
 		// 分类号、借书人姓名、借书人电话、借书日期,已借天数
 		+ "book_category, borrower_name, borrower_phone) "
 		+ "values("
 		/*
 		 * 参数用?表示,相当于占位符,然后在对参数进行赋值。当真正执行时,
 		 * 这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。这样就会减少对数据库的操作
 		 */
 		+ "?,?,?,?,?,?,?,?)";
 /*
 * prepareStatement这个方法会将SQL语句加载到驱动程序conn集成程序中,
 * 但是并不直接执行,而是当它调用execute()方法的时候才真正执行;
 */
 PreparedStatement psmt = con.prepareStatement(sql);
 // 先对应SQL语句,给SQL语句传递参数
 psmt.setString(1, book.getISBN());
 psmt.setString(2, book.getBookName());
 psmt.setFloat(3, book.getPrice());
 psmt.setString(4, book.getAuthor());
 psmt.setString(5, book.getPublishHouse());
 psmt.setString(6, book.getBookCategory());
 
 if (book.getBorrowerName() == null || book.getBorrowerName() == "") {
 	psmt.setString(7, null);
 }
 else {
 	 psmt.setString(7, book.getBorrowerName());
 }
 
 if (book.getBorrowerPhone() == null || book.getBorrowerPhone() == "") {
 	 psmt.setString(8, null); 
 }
 else {
 	psmt.setString(8, book.getBorrowerPhone()); 
 }
 
 //执行SQL语句
 psmt.execute();
 
 }
	
 
 /**
 * 删除图书信息
 */
 public void delBook(int ID) throws SQLException{
 	 // 首先拿到数据库的连接
 Connection con=DBUtil.getConnection();
 String sql="" + 
 "DELETE FROM tb_books "+ 
 // 参数用?表示,相当于占位符
 "WHERE ID = ?";
 // 预编译sql语句
 PreparedStatement psmt = con.prepareStatement(sql);
 // 先对应SQL语句,给SQL语句传递参数
 psmt.setInt(1, ID);
 // 执行SQL语句
 psmt.execute(); 
 }
	 
 
	/**
	 * 更新图书信息
	 */
 public void changeBook(Book book) throws SQLException{
 	// 首先拿到数据库的连接
 Connection con=DBUtil.getConnection();
 String sql="update tb_books "
 		+ "set ISBN = ?, book_name = ?, book_price = ?, book_author = ?"
 + ",published_house = ?, book_category = ?, borrower_name = ?, borrower_phone = ? "
 // 参数用?表示,相当于占位符 
 		+ "where ID = ?";
 // 预编译sql语句
 PreparedStatement psmt = con.prepareStatement(sql);
 // 先对应SQL语句,给SQL语句传递参数
 psmt.setString(1, book.getISBN());
 psmt.setString(2, book.getBookName());
 psmt.setFloat(3, book.getPrice());
 psmt.setString(4, book.getAuthor());
 psmt.setString(5, book.getPublishHouse());
 psmt.setString(6, book.getBookCategory());
 if (book.getBorrowerName().equals("")) {
 	psmt.setString(7, null);
 }
 else {
 	 psmt.setString(7, book.getBorrowerName());
 }
 
 if (book.getBorrowerPhone().equals("")) {
 	psmt.setString(8, null);
 }
 else {
 	 psmt.setString(8, book.getBorrowerPhone());
 }
 psmt.setInt(9, book.getID());
 // 执行SQL语句
 psmt.execute(); 
 }
 
	 
 
	/**
	 * 查询书籍信息
	 */
	public List<Book> query() throws Exception{	 
		Connection con = DBUtil.getConnection();	 
		Statement stmt = con.createStatement();	 
		ResultSet rs = stmt.executeQuery("select "
				// ISBN、书名、作者、图书价格、出版社
				+ "ID, ISBN, book_name, book_author, book_price, published_house, "
				// 分类号、借书人姓名、借书人电话
				+ "book_category, borrower_name, borrower_phone "
				+ "from tb_books");	 
		List<Book> bookList = new ArrayList<Book>();	 
		Book book = null;	 
		// 如果对象中有数据,就会循环打印出来
		while (rs.next()){	 
			book = new Book();	 
			book.setID(rs.getInt("ID"));
			book.setISBN(rs.getString("ISBN"));
			book.setBookName(rs.getString("book_name"));	 
			book.setAuthor(rs.getString("book_author"));
			book.setPrice(rs.getFloat("book_price"));
			book.setPublishHouse(rs.getString("published_house"));
			book.setBookCategory(rs.getString("book_category"));
			book.setBorrowerName(rs.getString("borrower_name"));
			book.setBorrowerPhone(rs.getString("borrower_phone"));
			bookList.add(book);	 
		}	 
		return bookList;	 
	}
 
 
	/**
	 * 查询借阅信息
	 * 
	 * @return
	 * 		bookList
	 */
	public List<Book> borrowQuery() throws Exception{	 
		Connection con = DBUtil.getConnection();	 
		Statement stmt = con.createStatement();	 
		ResultSet rs = stmt.executeQuery(""
				// ID、书名、借书人姓名、借书人电话
				+ "SELECT ID, book_name, borrower_name, borrower_phone "
				+ "FROM tb_books "
				+ "WHERE borrower_name IS NOT NULL"
				);	 
		List<Book> bookList = new ArrayList<Book>();	 
		Book book = null;	 
		// 如果对象中有数据,就会循环打印出来
		while (rs.next()){	 
			book = new Book();	 
			book.setID(rs.getInt("ID"));
			book.setBookName(rs.getString("book_name"));	 
			book.setBorrowerName(rs.getString("borrower_name"));
			book.setBorrowerPhone(rs.getString("borrower_phone"));
			bookList.add(book);	 
		}	 
		return bookList;	 
	}
 
	/**
	 * 更新图书信息,归还图书
	 */
 public void returnBook(Book book) throws SQLException{
 	// 首先拿到数据库的连接
 Connection con=DBUtil.getConnection();
 String sql="UPDATE tb_books "
 		// ISBN、图书名称、作者、价格
 		+ "SET "
 		// 借书人姓名、借书人电话
 		+ "borrower_name = ?, borrower_phone = ? "
 // 参数用?表示,相当于占位符 
 		+ "WHERE ID = ?";
 // 预编译sql语句
 PreparedStatement psmt = con.prepareStatement(sql);
 // 先对应SQL语句,给SQL语句传递参数
 psmt.setString(1, book.getBorrowerName());
 psmt.setString(2, book.getBorrowerPhone());
 psmt.setInt(3, book.getID());
 // 执行SQL语句
 psmt.execute(); 
 }

}

重点内容 :

JDBC进行简单的数据库增删改查

详细参考:http://1000zx.cn/article/204374.htm

Model类(以Book为例)

package pers.cyz.model;
 
/**
 * 图书模型类,包含数据库图书表各对应的字段get、set方法
 * 
 * @author 1651200111 陈彦志
 */
public class Book {
	private int ID;
	// ISBN号
	private String ISBN;
	// 图书名称
	private String bookName;
	// 图书价格
	private float price;
	// 图书作者
	private String author;
	// 出版社
	private String publishedHouse;
	// 图书分类号
	private String bookCategory;
	// 借书人姓名
	private String borrowerName;
	// 借书人电话
	private String borrowerPhone;
 
	/**
	 * 获取ID
	 */
	public int getID() {
		return ID;
	}
	/**
	 * 设置ID
	 */
	public void setID(int iD) {
		ID = iD;
	}
	
	/**
	 * 获取ISBN
	 */
	public String getISBN() {
		return ISBN;
	}
	/**
	 * 设置ISBN
	 */
	public void setISBN(String iSBN) {
		ISBN = iSBN;
	}
	
	
	/**
	 * 获取图书名称
	 */
	public String getBookName() {
		return bookName;
	}
	/**
	 * 设置图书名称
	 */
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	
	
	/**
	 * 获取图书价格
	 */
	public float getPrice() {
		return price;
	}
	/**
	 * 设置图书价格
	 */
	public void setPrice(float price) {
		this.price = price;
	}
	
	
	/**
	 * 获取图书作者
	 */
	public String getAuthor() {
		return author;
	}
	/**
	 * 设置图书作者
	 */
	public void setAuthor(String author) {
		this.author = author;
	}
	
	
	/**
	 * 获取出版社
	 */
	public String getPublishHouse() {
		return publishedHouse;
	}
	/**
	 * 设置出版社
	 */
	public void setPublishHouse(String publishedHouse) {
		this.publishedHouse = publishedHouse;
	}
	
	
	/**
	 * 获取图书分类信息
	 */
	public String getBookCategory() {
		return bookCategory;
	}
	/**
	 * 设置图书分类信息
	 */
	public void setBookCategory(String bookCategory) {
		this.bookCategory = bookCategory;
	}
	
	
	/**
	 * 获取借书人姓名
	 */
	public String getBorrowerName() {
		return borrowerName;
	}
	/**
	 * 设置借书人姓名
	 */
	public void setBorrowerName(String borrowerName) {
		this.borrowerName = borrowerName;
	}
	
	
	/**
	 * 获取借书人电话
	 */
	public String getBorrowerPhone() {
		return borrowerPhone;
	}
	/**
	 * 设置借书人电话
	 */
	public void setBorrowerPhone(String borrowerPhone) {
		this.borrowerPhone = borrowerPhone;
	}
 
}

重点内容 :

阅读剩余部分

相关阅读 >>

mysql和oracle哪个好

mysql实现大量数据转换为数组

mysql怎么换行?

mysql多久可以学会?

mysql用户名是什么

了解 mysql 体系架构

18个常用的mysql命令

mysql在cmd里中文乱码解决办法

mysql什么情况下会死锁

mysql之左右连接的区别

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...