圖書管理系統java版_java

來源:互聯網
上載者:User

本文的目的就是通過圖書管理系統掌握資料庫編程技術,能正確串連資料庫,能對資料庫中資訊進行查詢、插入、刪除、修改。
內容:在資料庫中建立一張書目資訊表,包括書名、作者、出版社、出版日期、書號、價格欄位。設計一個GUI介面進行書目管理。在該介面上有四個選項卡,分別是查詢、插入、刪除、修改。點擊查詢選項卡,出現的介面上有書名、作者、出版社、書號四個文字框,一個按鈕和一個唯讀文本區。文字框內容可以為空白,輸入相應的查詢資訊後(例如根據書名查詢可以僅輸入書名),點擊介面上的“查詢”按鈕,可以在介面下方的文本區中顯示出合格書目詳細資料。點擊插入選項卡,出現的介面上有書名、作者、出版社、出版日期、書號、價格文字框,一個按鈕。在文字框中輸入資訊後,點擊“插入”按鈕,該書目資訊插入資料庫表中。點擊刪除選項卡,出現的介面上有書名文字框和一個按鈕,輸入書名後點擊“刪除”按鈕,該書目資訊從資料庫表中刪除。點擊修改選項卡,出現的介面上有書名、作者、出版社、出版日期、書號、價格文字框,一個按鈕。輸入的書名必須是已存在的,否則會彈出訊息框顯示出錯資訊。輸入資訊後,點擊“修改”按鈕,資料庫表中的相應書目資訊被修改為新值。
源碼:

BookInfo.java

 * 項目名稱:圖書管理系統  * 版本:  1.0  * 建立者: 張俊強  * 建立時間:2016/5/26  * */ package librarySystem;  import java.awt.*;  import javax.swing.*;  import java.awt.event.*; import java.sql.*;  @SuppressWarnings("serial") public class BookInfo extends JFrame implements ActionListener{   //主角面上的控制項   private JLabel inputLabel;   private JTextField inputText;   private JButton searchBut;    private JTable bookTable;   private JScrollPane bookScroll;   private JButton addBut;   private JButton modifyBut;   private JButton deleteBut;   private JButton refreshBut;   private BookTableModel bookTableModel;   public static void main(String[] args) throws SQLException {     // TODO Auto-generated method stub     BookInfo bookInfo=new BookInfo();     bookInfo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     bookInfo.setBounds(350, 150, 600, 400);     bookInfo.setVisible(true); //   bookInfo.importSQL();//匯出資料     bookInfo.setMinWindowLayout();//設定資料   }   public BookInfo() throws SQLException{     //建立主介面上的控制項     inputLabel=new JLabel("請輸入書名:");     inputText=new JTextField(10);     searchBut=new JButton("查詢");     bookTableModel=new BookTableModel();          bookTable=new JTable(bookTableModel);     bookScroll=new JScrollPane(bookTable);          addBut=new JButton("添加");     modifyBut=new JButton("修改");     deleteBut=new JButton("刪除");     refreshBut=new JButton("重新整理");     searchBut.addActionListener(this);     addBut.addActionListener(this);     refreshBut.addActionListener(this);     modifyBut.addActionListener(this);     deleteBut.addActionListener(this);    }    void setMinWindowLayout(){     //主介面布局     Container con1=new Container();     con1.setLayout(new FlowLayout());     con1.add(inputLabel);     con1.add(inputText);     con1.add(searchBut);     con1.add(refreshBut);     Container con2=new Container();     con2.setLayout(new FlowLayout());     con2.add(addBut);     con2.add(modifyBut);     con2.add(deleteBut);     this.setLayout(new BorderLayout());     this.add(con1,BorderLayout.NORTH);     this.add(bookScroll,BorderLayout.CENTER);     this.add(con2,BorderLayout.SOUTH);     this.validate();   }   @Override   public void actionPerformed(ActionEvent e) {     // TODO Auto-generated method stub     if(e.getSource()==searchBut){       if(!this.inputText.getText().equals("")){         String bookName=this.inputText.getText();         String sql="SELECT * FROM book_info WHERE book_name ='"+bookName+"'";         try {         bookTableModel=new BookTableModel(sql);         bookTable.setModel(bookTableModel);       } catch (SQLException e1) {         // TODO Auto-generated catch block         e1.printStackTrace();       }                }else{         JOptionPane.showMessageDialog(this,"輸入不可為空", "提示",JOptionPane.PLAIN_MESSAGE);       }     }     else if(e.getSource()==addBut){       @SuppressWarnings("unused")       AddBookDialog addWin=new AddBookDialog(this,"添加圖書",true);       this.refreshTable();     }     else if(e.getSource()==refreshBut){       this.refreshTable();     }     else if(e.getSource()==deleteBut){       int rowNum=bookTable.getSelectedRow();       if(rowNum<0||rowNum>bookTable.getRowCount()){                JOptionPane.showMessageDialog(this,"未選中", "提示",JOptionPane.PLAIN_MESSAGE);       }       else{         //System.out.print(bookName);         int n = JOptionPane.showConfirmDialog(null, "確認刪除嗎?", "確認刪除框", JOptionPane.YES_NO_OPTION);         if (n == JOptionPane.YES_OPTION) {           String bookNum=(String) bookTable.getValueAt(rowNum, 0);           String sql="DELETE FROM book_info WHERE book_num= '"+bookNum+"'";           bookTableModel.deleteBook(sql);           this.refreshTable();           JOptionPane.showMessageDialog(this,"刪除成功", "提示",JOptionPane.PLAIN_MESSAGE);         } else if (n == JOptionPane.NO_OPTION) {           return;         }       }     }     else if(e.getSource()==modifyBut){       bookTable.setModel(bookTableModel);       int rowNum=bookTable.getSelectedRow();       if(rowNum<0||rowNum>bookTable.getRowCount()){                JOptionPane.showMessageDialog(this,"未選中", "提示",JOptionPane.PLAIN_MESSAGE);       }       else{         @SuppressWarnings("unused")         ModifyBook modifyWin=new ModifyBook(this,"修改資訊",true,bookTableModel,rowNum);         this.refreshTable();       }     }        }   public void refreshTable(){     BookTableModel searchBook;     try {       searchBook = new BookTableModel("SELECT * FROM book_info");       bookTable.setModel(searchBook);       bookTableModel=searchBook;     } catch (SQLException e1) {       // TODO Auto-generated catch block       e1.printStackTrace();     }   } } 

BookTableModel.java

package librarySystem; import java.sql.*; import java.util.*;  /*  * 圖書表模型  * */ import javax.swing.table.*; @SuppressWarnings("serial") public class BookTableModel extends AbstractTableModel{   //表的元素   private Vector<Vector<String>> rowData;   private Vector<String> colName;   // 資料庫   private PreparedStatement stmt;   private ResultSet result;   public BookTableModel(String sql) throws SQLException{     this.initData(sql);   }   public BookTableModel() throws SQLException{     this.initData("SELECT * FROM book_info");   }   public void initData(String sql) throws SQLException{     setRowData(new Vector<Vector<String>>());     setColName(new Vector<String>());     getColName().add("書號");     getColName().add("書名");     getColName().add("作者");     getColName().add("出版社");     getColName().add("出版時間");     getColName().add("價格");     /*      * 資料庫的匯入      * */     try {       Class.forName("com.mysql.jdbc.Driver");     } catch (ClassNotFoundException e) {       // TODO Auto-generated catch block       e.printStackTrace();     }     String url= "jdbc:mysql://localhost:3306/device";     String user="root";     String password="zjq1314520";     Connection con=DriverManager.getConnection(url,user,password);     stmt = con.prepareStatement(sql);     result=stmt.executeQuery();     importSQL();   }   void importSQL() throws SQLException{     // TODO Auto-generated method stub     @SuppressWarnings("unused")     boolean signNull=true;     while(result.next()){       Vector<String> item=new Vector<String>();       for(int i=1;i<7;i++){         item.add(result.getString(i));       }       getRowData().add(item);       signNull=false;     }     result.close();   }   @Override   public int getColumnCount() {//得到列數     // TODO Auto-generated method stub     return this.colName.size();   }    @Override   public int getRowCount() {//得到行數     // TODO Auto-generated method stub     return this.rowData.size();   }    @Override   public Object getValueAt(int row, int col) {//得到某行某列的資料     // TODO Auto-generated method stub     return (this.rowData.get(row)).get(col);   }    @Override   public String getColumnName(int column) {     // TODO Auto-generated method stub     return this.colName.get(column);   }      public Vector<Vector<String>> getRowData() {     return rowData;   }   public void setRowData(Vector<Vector<String>> rowData) {     this.rowData = rowData;   }   public Vector<String> getColName() {     return colName;   }   public void setColName(Vector<String> colName) {     this.colName = colName;   }   public void addBook(String sql){     try {       stmt.executeUpdate(sql);     } catch (SQLException e) {       // TODO Auto-generated catch block       e.printStackTrace();     } //   initData("SELECT * FROM book_info");   }   public void deleteBook(String sql){     try {       stmt.executeUpdate(sql);     } catch (SQLException e1) {       // TODO Auto-generated catch block       e1.printStackTrace();     }   } } 

AddBookDialog.java

package librarySystem;  import java.awt.*; import java.awt.event.*; import java.sql.SQLException;  import javax.swing.*;  @SuppressWarnings("serial") public class AddBookDialog extends JDialog implements ActionListener{   private JLabel bookNumLabel;   private JLabel bookNameLabel;   private JLabel bookWriterLabel;   private JLabel bookPublishLabel;   private JLabel bookPriceLabel;   private JLabel bookTimeLabel;   private JTextField bookNumText;   private JTextField bookNameText;   private JTextField bookWriterText;   private JTextField bookPublishText;   private JTextField bookPriceText;   private JTextField bookTimeText;      private JButton submitBut;   private JButton cancelBut;   public AddBookDialog(Frame owner,String title,boolean model){     //父視窗,視窗名,是否是強制回應視窗     super(owner,title,model);     bookNumLabel=new JLabel("書  號:");     bookNameLabel=new JLabel("書  名:");     bookWriterLabel=new JLabel("作  者:");     bookPublishLabel=new JLabel("出版社:");     bookPriceLabel=new JLabel("價  格:");     bookTimeLabel=new JLabel("出版時間:");          bookNumText=new JTextField(10);     bookNameText=new JTextField(10);     bookWriterText=new JTextField(10);     bookPublishText=new JTextField(10);     bookPriceText=new JTextField(10);     bookTimeText=new JTextField(9);          submitBut=new JButton("確認");     cancelBut=new JButton("取消");     submitBut.addActionListener(this);     cancelBut.addActionListener(this);     this.setBounds(350,150,400,260);     this.setResizable(false);     this.setLayout(new BorderLayout());     initLayout();   }   public void initLayout(){     Container[] con1=new Container[6];     for(int i=0;i<6;i++) con1[i]=new Container();     con1[0].setLayout(new FlowLayout());     con1[0].add(bookNumLabel);     con1[0].add(bookNumText);          con1[1].setLayout(new FlowLayout());     con1[1].add(bookNameLabel);     con1[1].add(bookNameText);          con1[2].setLayout(new FlowLayout());     con1[2].add(bookWriterLabel);     con1[2].add(bookWriterText);          con1[3].setLayout(new FlowLayout());     con1[3].add(bookPublishLabel);     con1[3].add(bookPublishText);          con1[4].setLayout(new FlowLayout());     con1[4].add(bookPriceLabel);     con1[4].add(bookPriceText);          con1[5].setLayout(new FlowLayout());     con1[5].add(bookTimeLabel);     con1[5].add(bookTimeText);          Container con2=new Container();     con2.setLayout(new BorderLayout());     con2.add(con1[0],BorderLayout.NORTH);     con2.add(con1[1],BorderLayout.CENTER);     con2.add(con1[2],BorderLayout.SOUTH);          Container con3=new Container();     con3.setLayout(new BorderLayout());     con3.add(con1[3],BorderLayout.NORTH);     con3.add(con1[4],BorderLayout.CENTER);     con3.add(con1[5],BorderLayout.SOUTH);          Container con4=new Container();     con4.setLayout(new FlowLayout());     con4.add(submitBut);     con4.add(cancelBut);     Container con5=new Container();     con5.setLayout(new BorderLayout());     con5.add(con2,BorderLayout.NORTH);     con5.add(con3,BorderLayout.CENTER);     con5.add(con4,BorderLayout.SOUTH);          this.add(con5,BorderLayout.CENTER);     this.validate();     this.setVisible(true);   }   @Override   public void actionPerformed(ActionEvent e) {     // TODO Auto-generated method stub     if(e.getSource()==submitBut){       if(bookNumText.getText().equals("")||bookNameText.getText().equals("")||           bookWriterText.getText().equals("")||bookPublishText.getText().equals("")||           bookPriceText.getText().equals("")||bookTimeText.getText().equals("")){         //System.out.println("輸入失敗");         JOptionPane.showMessageDialog(this,"輸入不能有空", "提示",JOptionPane.PLAIN_MESSAGE);       }       else{         //System.out.println("輸入成功");         String sql="insert into "             + "book_info(book_num,book_name,book_writer,publish_house,book_price,publish_time)"             + "values('"+bookNumText.getText()+"','"+bookNameText.getText()+"','"+bookWriterText.getText()+"','"+bookPublishText.getText()+"','"+bookPriceText.getText()+"','"+bookTimeText.getText()+"')";         try {           BookTableModel book=new BookTableModel();           book.addBook(sql);         } catch (SQLException e1) {           // TODO Auto-generated catch block           e1.printStackTrace();         }         JOptionPane.showMessageDialog(this,"添加成功", "提示",JOptionPane.PLAIN_MESSAGE);         this.setVisible(false);       }     }     if(e.getSource()==cancelBut){       this.setVisible(false);     }   } } 

ModifyBook.java

package librarySystem;  import java.awt.*; import java.awt.event.*; import java.sql.SQLException; import javax.swing.*;  @SuppressWarnings("serial") public class ModifyBook extends JDialog implements ActionListener{   private JLabel bookNumLabel;   private JLabel bookNameLabel;   private JLabel bookWriterLabel;   private JLabel bookPublishLabel;   private JLabel bookPriceLabel;   private JLabel bookTimeLabel;   private JTextField bookNumText;   private JTextField bookNameText;   private JTextField bookWriterText;   private JTextField bookPublishText;   private JTextField bookPriceText;   private JTextField bookTimeText;   private JButton submitBut;   private JButton cancelBut;   private BookTableModel bookModel;   private int rowNum;   public ModifyBook(Frame owner,String title,boolean type,BookTableModel model,int row){     super(owner,title,type);     bookModel=model;     rowNum=row;     bookNumLabel=new JLabel("書  號:");     bookNameLabel=new JLabel("書  名:");     bookWriterLabel=new JLabel("作  者:");     bookPublishLabel=new JLabel("出版社:");     bookPriceLabel=new JLabel("價  格:");     bookTimeLabel=new JLabel("出版時間:");          bookNumText=new JTextField(10);     bookNameText=new JTextField(10);     bookWriterText=new JTextField(10);     bookPublishText=new JTextField(10);     bookPriceText=new JTextField(10);     bookTimeText=new JTextField(9);          submitBut=new JButton("確認修改");     cancelBut=new JButton("取消");     submitBut.addActionListener(this);     cancelBut.addActionListener(this);     this.setBounds(350,150,400,260);     this.setResizable(false);     this.setLayout(new BorderLayout());     this.setValue();     this.initLayout();        }   public void initLayout(){     Container[] con1=new Container[6];     for(int i=0;i<6;i++) con1[i]=new Container();     con1[0].setLayout(new FlowLayout());     con1[0].add(bookNumLabel);     con1[0].add(bookNumText);          con1[1].setLayout(new FlowLayout());     con1[1].add(bookNameLabel);     con1[1].add(bookNameText);          con1[2].setLayout(new FlowLayout());     con1[2].add(bookWriterLabel);     con1[2].add(bookWriterText);          con1[3].setLayout(new FlowLayout());     con1[3].add(bookPublishLabel);     con1[3].add(bookPublishText);          con1[4].setLayout(new FlowLayout());     con1[4].add(bookPriceLabel);     con1[4].add(bookPriceText);          con1[5].setLayout(new FlowLayout());     con1[5].add(bookTimeLabel);     con1[5].add(bookTimeText);          Container con2=new Container();     con2.setLayout(new BorderLayout());     con2.add(con1[0],BorderLayout.NORTH);     con2.add(con1[1],BorderLayout.CENTER);     con2.add(con1[2],BorderLayout.SOUTH);          Container con3=new Container();     con3.setLayout(new BorderLayout());     con3.add(con1[3],BorderLayout.NORTH);     con3.add(con1[4],BorderLayout.CENTER);     con3.add(con1[5],BorderLayout.SOUTH);          Container con4=new Container();     con4.setLayout(new FlowLayout());     con4.add(submitBut);     con4.add(cancelBut);     Container con5=new Container();     con5.setLayout(new BorderLayout());     con5.add(con2,BorderLayout.NORTH);     con5.add(con3,BorderLayout.CENTER);     con5.add(con4,BorderLayout.SOUTH);     this.add(con5,BorderLayout.CENTER);     this.validate();     this.setVisible(true);   }   public void setValue(){     this.bookNumText.setText((String) bookModel.getValueAt(rowNum, 0));     this.bookNumText.setEditable(false);          this.bookNameText.setText((String) bookModel.getValueAt(rowNum, 1));     this.bookWriterText.setText((String) bookModel.getValueAt(rowNum, 2));     this.bookPublishText.setText((String) bookModel.getValueAt(rowNum, 3));     this.bookTimeText.setText((String) bookModel.getValueAt(rowNum, 4));     this.bookPriceText.setText((String) bookModel.getValueAt(rowNum, 5));     this.validate();   }   @Override   public void actionPerformed(ActionEvent e) {   // System.out.println(bookPriceText.getText());     // TODO Auto-generated method stub     if(e.getSource()==submitBut){       if(bookNumText.getText().equals("")||bookNameText.getText().equals("")||           bookWriterText.getText().equals("")||bookPublishText.getText().equals("")||           bookPriceText.getText().equals("")||bookTimeText.getText().equals("")){         //System.out.println("輸入失敗");         JOptionPane.showMessageDialog(this,"修改不能有空", "提示",JOptionPane.PLAIN_MESSAGE);       }       else{         int n = JOptionPane.showConfirmDialog(null, "確認修改嗎?", "確認修改框", JOptionPane.YES_NO_OPTION);         if (n == JOptionPane.YES_OPTION) {           String sql="UPDATE book_info SET book_name ='"+bookNameText.getText()+"', book_writer= '"+bookWriterText.getText()+"',publish_house='"+bookPublishText.getText()+"',book_price='"+bookPriceText.getText()+"',publish_time='"+bookTimeText.getText()+"' WHERE book_num = '"+bookNumText.getText()+"' ";           try {             BookTableModel book=new BookTableModel();             book.addBook(sql);           } catch (SQLException e1) {             // TODO Auto-generated catch block             e1.printStackTrace();           }           JOptionPane.showMessageDialog(this,"修改成功", "提示",JOptionPane.PLAIN_MESSAGE);           this.setVisible(false);         } else if (n == JOptionPane.NO_OPTION) {           return;         }       }     }     if(e.getSource()==cancelBut){       this.setVisible(false);     }   }   } 

程式運行結果:
主介面:


查詢介面:


添加圖書介面:



修改介面:



刪除操作:



資料庫介面:


以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.