本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询、插入、删除、修改。内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书号、价格字段。设计一个GUI界面进行书目管理。在该界面上有四个选项卡,分别是查询、插入、删除、修改。点击查询选项卡,出现的界面上有书名、作者、出版社、书号四个文本框,一个按钮和一个只读文本区。文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的“查询”按钮,可以在界面下方的文本区中显示出符合条件的书目详细信息。点击插入选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。在文本框中输入信息后,点击“插入”按钮,该书目信息插入数据库表中。点击删除选项卡,出现的界面上有书名文本框和一个按钮,输入书名后点击“删除”按钮,该书目信息从数据库表中删除。点击修改选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。输入的书名必须是已存在的,否则会弹出消息框显示出错信息。输入信息后,点击“修改”按钮,数据库表中的相应书目信息被修改为新值。源码:
BookInfo.java
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(“价格”); /
@Overridepublic int getRowCount() {//得到行数 // TODO Auto-generated method stub return this.rowData.size();}
@Overridepublic Object getValueAt(int row, int col) {//得到某行某列的数据 // TODO Auto-generated method stub return (this.rowData.get(row)).get(col);}
@Overridepublic 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); } }}
相关推荐
© 2020 asciim码
人生就是一场修行