本文整理自网络,侵删。
(完整代码+实训报告):
链接: https://pan.baidu.com/s/1E6BhEaHMa6Wch5yf6YAjOA 提取码: vnrx
觉着有用就点个赞哦~
一,功能
- 管理员登录
- 图书借阅信息管理
- 图书信息管理
- 管理员更改密码
- 退出系统
二,工具
- 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》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。