首页 > 编程 > Java > 正文

图书管理系统java版

2019-11-26 14:13:55
字体:
来源:转载
供稿:网友

本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询、插入、删除、修改。
内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书号、价格字段。设计一个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);   }  }  } 

程序运行结果:
主界面:

查询界面:

添加图书界面:

修改界面:

删除操作:

数据库界面:

关于管理系统的更多内容请点击《管理系统专题》进行学习

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表