电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java+MySQL 圖書管理系統(tǒng)

瀏覽:152日期:2022-08-14 18:49:23
一,功能

管理員登錄圖書借閱信息管理圖書信息管理管理員更改密碼退出系統(tǒng)

二,工具

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

三、效果圖:

登錄界面:

Java+MySQL 圖書管理系統(tǒng)

主界面:

Java+MySQL 圖書管理系統(tǒng)

借閱書籍管理:

Java+MySQL 圖書管理系統(tǒng)

個人書庫管理:

Java+MySQL 圖書管理系統(tǒng)

更改密碼:

Java+MySQL 圖書管理系統(tǒng)

四、數(shù)據(jù)庫設計

Java+MySQL 圖書管理系統(tǒng)

1)圖書表

Java+MySQL 圖書管理系統(tǒng)

2)用戶表

Java+MySQL 圖書管理系統(tǒng)

兩個數(shù)據(jù)表間沒有關聯(lián):

Java+MySQL 圖書管理系統(tǒng)

五、JAVA層次分析

(1)邏輯圖

Java+MySQL 圖書管理系統(tǒng)

(2)包結構,采用MVC三層架構組織各個模塊

Java+MySQL 圖書管理系統(tǒng)

六、主要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; /** * 數(shù)據(jù)庫圖書表信息數(shù)據(jù)訪問對象類,包含增加圖書信息、刪除圖書信息 * 、更新圖書信息、查詢圖書信息、查詢借閱信息和歸還圖書 * * @author 1651200111 陳彥志 */public class BookDao { /** * 增加圖書信息 */ public void addBook(Book book) throws Exception{ // 首先拿到數(shù)據(jù)庫的連接 Connection con = DBUtil.getConnection(); String sql='insert into tb_books' // ISBN、書名、圖書價格、圖書作者、出版社 + '(ISBN, book_name, book_price, book_author, published_house,' // 分類號、借書人姓名、借書人電話、借書日期,已借天數(shù) + 'book_category, borrower_name, borrower_phone) ' + 'values(' /* * 參數(shù)用?表示,相當于占位符,然后在對參數(shù)進行賦值。當真正執(zhí)行時, * 這些參數(shù)會加載在SQL語句中,把SQL語句拼接完整才去執(zhí)行。這樣就會減少對數(shù)據(jù)庫的操作 */ + '?,?,?,?,?,?,?,?)'; /* * prepareStatement這個方法會將SQL語句加載到驅動程序conn集成程序中, * 但是并不直接執(zhí)行,而是當它調用execute()方法的時候才真正執(zhí)行; */ PreparedStatement psmt = con.prepareStatement(sql); // 先對應SQL語句,給SQL語句傳遞參數(shù) 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()); } //執(zhí)行SQL語句 psmt.execute(); } /** * 刪除圖書信息 */ public void delBook(int ID) throws SQLException{ // 首先拿到數(shù)據(jù)庫的連接 Connection con=DBUtil.getConnection(); String sql='' + 'DELETE FROM tb_books '+ // 參數(shù)用?表示,相當于占位符 'WHERE ID = ?'; // 預編譯sql語句 PreparedStatement psmt = con.prepareStatement(sql); // 先對應SQL語句,給SQL語句傳遞參數(shù) psmt.setInt(1, ID); // 執(zhí)行SQL語句 psmt.execute(); } /** * 更新圖書信息 */ public void changeBook(Book book) throws SQLException{ // 首先拿到數(shù)據(jù)庫的連接 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 = ? ' // 參數(shù)用?表示,相當于占位符 + 'where ID = ?'; // 預編譯sql語句 PreparedStatement psmt = con.prepareStatement(sql); // 先對應SQL語句,給SQL語句傳遞參數(shù) 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()); // 執(zhí)行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; // 如果對象中有數(shù)據(jù),就會循環(huán)打印出來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; // 如果對象中有數(shù)據(jù),就會循環(huán)打印出來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{ // 首先拿到數(shù)據(jù)庫的連接 Connection con=DBUtil.getConnection(); String sql='UPDATE tb_books ' // ISBN、圖書名稱、作者、價格 + 'SET ' // 借書人姓名、借書人電話 + 'borrower_name = ?, borrower_phone = ? ' // 參數(shù)用?表示,相當于占位符 + 'WHERE ID = ?'; // 預編譯sql語句 PreparedStatement psmt = con.prepareStatement(sql); // 先對應SQL語句,給SQL語句傳遞參數(shù) psmt.setString(1, book.getBorrowerName()); psmt.setString(2, book.getBorrowerPhone()); psmt.setInt(3, book.getID()); // 執(zhí)行SQL語句 psmt.execute(); } }

重點內容 :

JDBC進行簡單的數(shù)據(jù)庫增刪改查

詳細參考:https://www.cnblogs.com/Qian123/p/5339164.html#_labelTop

Model類(以Book為例)

package pers.cyz.model; /** * 圖書模型類,包含數(shù)據(jù)庫圖書表各對應的字段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;} }

重點內容 :

主要就是數(shù)據(jù)庫對應表中各對應的字段get、set方法

Eclipse技巧:

Shift + alt + s -> Generate Getters and Setters -> Select all -> Generate 自動生成set、get方法

Java+MySQL 圖書管理系統(tǒng)Java+MySQL 圖書管理系統(tǒng)

Controller類(以BookAction為例)

package pers.cyz.controller; import java.util.List; import javax.swing.JTable;import javax.swing.JTextField; import pers.cyz.dao.BookDao;import pers.cyz.model.Book; /** * 圖書信息行為控制類,包含增加圖書、刪除圖書 * 、 修改圖書、和初始化個人書庫管理窗體表格 * * @author 1651200111 陳彥志 */public class BookAction { /** * 初始化窗體表格 * @return * results */@SuppressWarnings('rawtypes')public Object[][] initializTable(String[] columnNames) throws Exception{BookDao bookDao = new BookDao();List list = bookDao.query();Object[][] results = new Object[list.size()][columnNames.length];for(int i = 0; i < list.size(); i++) {Book book = (Book)list.get(i);results[i][0] = book.getID();results[i][1] = book.getBookName();results[i][2] = book.getAuthor();results[i][3] = book.getPrice();results[i][4] = book.getISBN();results[i][5] = book.getPublishHouse();results[i][6] = book.getBookCategory();String borrowerName = book.getBorrowerName();if (borrowerName == null) {borrowerName = '';results[i][7] = borrowerName;}else {results[i][7] = borrowerName;}String borrowerPhone = book.getBorrowerPhone();if (borrowerPhone == null) {borrowerPhone = '';results[i][8] = borrowerPhone;}else {results[i][8] = borrowerPhone;}} return results;} /** * 添加圖書信息 */public void addBookInformation (JTextField textFieldISBN, JTextField textFieldName,JTextField textFieldPrice, JTextField textFieldAuthor, JTextField textFieldPublishedHouse, JTextField textFieldBookCategory, JTextField textFieldBorrowName, JTextField textFieldBorrowPhone) throws Exception { BookDao bookDao=new BookDao(); Book book=new Book(); book.setISBN(textFieldISBN.getText()); book.setBookName(textFieldName.getText()); float price = Float.parseFloat(textFieldPrice.getText()); book.setPrice(price); book.setAuthor(textFieldAuthor.getText()); book.setPublishHouse(textFieldPublishedHouse.getText()); book.setBookCategory(textFieldBookCategory.getText()); if (textFieldBorrowName.getText() == null ||textFieldBorrowName.getText() == '' ) { book.setBorrowerName(null); } else { book.setBorrowerName(textFieldBorrowName.getText()); } if (textFieldBorrowPhone.getText() == null || textFieldBorrowPhone.getText() == '') { book.setBorrowerPhone(null); } else { book.setBorrowerPhone(textFieldBorrowPhone.getText()); } //添加圖書 bookDao.addBook(book);} /** * 刪除圖書信息 */public void delBookInformation (JTable table) throws Exception {int selRow = table.getSelectedRow();int ID = Integer.parseInt(table.getValueAt(selRow, 0).toString()); BookDao bookDao=new BookDao(); Book book=new Book(); book.setID(ID); // 刪除圖書信息 bookDao.delBook(ID);}/** * 修改圖書信息 */public void changeBookInformation (JTextField textFieldISBN, JTextField textFieldName,JTextField textFieldPrice, JTextField textFieldAuthor, JTextField textFieldPublishedHouse, JTextField textFieldBookCategory, JTextField textFieldBorrowerName, JTextField textFieldBorrowerPhone, JTable table) throws Exception{ BookDao bookDao=new BookDao(); Book book=new Book(); int selRow = table.getSelectedRow();int ID = Integer.parseInt(table.getValueAt(selRow, 0).toString()); book.setID(ID); book.setISBN(textFieldISBN.getText()); book.setBookName(textFieldName.getText()); book.setAuthor(textFieldAuthor.getText()); float price = Float.parseFloat(textFieldPrice.getText()); book.setPrice(price); book.setPublishHouse(textFieldPublishedHouse.getText()); book.setBookCategory(textFieldBookCategory.getText()); book.setBorrowerName(textFieldBorrowerName.getText()); book.setBorrowerPhone(textFieldBorrowerPhone.getText()); //修改圖書 bookDao.changeBook(book); }}

util類(以DBUtil為例)

package pers.cyz.util; import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException; /** * 連接數(shù)據(jù)庫類,包含一個對外提供獲取數(shù)據(jù)庫連接的方法 * * @author 1651200111 陳彥志 */public class DBUtil {// 數(shù)據(jù)庫連接路徑private static final String URL = 'jdbc:mysql://127.0.0.1:3306/db_books?'+ 'useUnicode = true & serverTimezone = GMT'// MySQL在高版本需要指明是否進行SSL連接+ '& characterEncoding = utf8 & useSSL = false';private static final String NAME = 'root';private static final String PASSWORD = 'root';private static Connection conn = null;// 靜態(tài)代碼塊(將加載驅動、連接數(shù)據(jù)庫放入靜態(tài)塊中) static{ try { // 加載驅動程序 Class.forName('com.mysql.cj.jdbc.Driver'); // 獲取數(shù)據(jù)庫的連接 conn = DriverManager.getConnection(URL, NAME, PASSWORD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } // 對外提供一個方法來獲取數(shù)據(jù)庫連接 public static Connection getConnection(){ return conn; }}

util類(以BackgroundImage為例)

package pers.cyz.util; import java.awt.Container; import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel; /** * 設置背景圖片類 * * @author 1651200111 陳彥志 */public class BackgroundImage {public BackgroundImage(JFrame frame,Container container,String ImageName) {// 限定加載圖片路徑ImageIcon icon= new ImageIcon('res/' + ImageName);final JLabel labelBackground = new JLabel();ImageIcon iconBookManageSystemBackground = icon;labelBackground.setIcon(iconBookManageSystemBackground);// 設置label的大小labelBackground.setBounds(0,0,iconBookManageSystemBackground.getIconWidth(),iconBookManageSystemBackground.getIconHeight());// 將背景圖片標簽放入桌面面板的最底層frame.getLayeredPane().add(labelBackground,new Integer(Integer.MIN_VALUE));// 將容器轉換為面板設置為透明JPanel panel = (JPanel)container;panel.setOpaque(false);} }

重點內容 :

將圖片標簽放在窗體底層面板,然后將窗體轉化為容器,將容器面板設為透明,背景圖片就設置好了,之后就可以直接在該容器中添加組件

將所有兩個或兩個以上類需要用到的代碼段全部封裝到了公共類。整體按照MVC三層架構組織

參考文章:https://www.cnblogs.com/Qian123/p/5339164.html#_labelTop

參考文章:https://blog.csdn.net/acm_hmj/article/details/52830920

源碼打包下載地址:www.jb51.net/codes/769916.html

到此這篇關于Java+MySQL 圖書管理系統(tǒng)的文章就介紹到這了,更多相關Java 圖書管理內容請搜索好吧啦網以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 六维力传感器_三维力传感器_二维力传感器-南京神源生智能科技有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 章丘丰源机械有限公司 - 三叶罗茨风机,罗茨鼓风机,罗茨风机 | 真空乳化机-灌装封尾机-首页-温州精灌 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 无水硫酸铝,硫酸铝厂家-淄博双赢新材料科技有限公司 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 国际高中-国际学校-一站式择校服务-远播国际教育 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 湖南自考_湖南自学考试| 泉州陶瓷pc砖_园林景观砖厂家_石英砖地铺石价格 _福建暴风石英砖 | 尊享蟹太太美味,大闸蟹礼卡|礼券|礼盒在线预订-蟹太太官网 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 |