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

  1. bookTable=new JTable(bookTableModel);
  2. bookScroll=new JScrollPane(bookTable);
  3. addBut=new JButton("添加");
  4. modifyBut=new JButton("修改");
  5. deleteBut=new JButton("删除");
  6. refreshBut=new JButton("刷新");
  7. searchBut.addActionListener(this);
  8. addBut.addActionListener(this);
  9. refreshBut.addActionListener(this);
  10. modifyBut.addActionListener(this);
  11. 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();
}

  1. }else{
  2. JOptionPane.showMessageDialog(this,"输入不能为空", "提示",JOptionPane.PLAIN_MESSAGE);
  3. }
  4. }
  5. else if(e.getSource()==addBut){
  6. @SuppressWarnings("unused")
  7. AddBookDialog addWin=new AddBookDialog(this,"添加图书",true);
  8. this.refreshTable();
  9. }
  10. else if(e.getSource()==refreshBut){
  11. this.refreshTable();
  12. }
  13. else if(e.getSource()==deleteBut){
  14. int rowNum=bookTable.getSelectedRow();
  15. if(rowNum<0||rowNum>bookTable.getRowCount()){
  16. JOptionPane.showMessageDialog(this,"未选中", "提示",JOptionPane.PLAIN_MESSAGE);
  17. }
  18. else{
  19. //System.out.print(bookName);
  20. int n = JOptionPane.showConfirmDialog(null, "确认删除吗?", "确认删除框", JOptionPane.YES_NO_OPTION);
  21. if (n == JOptionPane.YES_OPTION) {
  22. String bookNum=(String) bookTable.getValueAt(rowNum, 0);
  23. String sql="DELETE FROM book_info WHERE book_num= '"+bookNum+"'";
  24. bookTableModel.deleteBook(sql);
  25. this.refreshTable();
  26. JOptionPane.showMessageDialog(this,"删除成功", "提示",JOptionPane.PLAIN_MESSAGE);
  27. } else if (n == JOptionPane.NO_OPTION) {
  28. return;
  29. }
  30. }
  31. }
  32. else if(e.getSource()==modifyBut){
  33. bookTable.setModel(bookTableModel);
  34. int rowNum=bookTable.getSelectedRow();
  35. if(rowNum<0||rowNum>bookTable.getRowCount()){
  36. JOptionPane.showMessageDialog(this,"未选中", "提示",JOptionPane.PLAIN_MESSAGE);
  37. }
  38. else{
  39. @SuppressWarnings("unused")
  40. ModifyBook modifyWin=new ModifyBook(this,"修改信息",true,bookTableModel,rowNum);
  41. this.refreshTable();
  42. }
  43. }

}
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(“出版时间:”);

  1. bookNumText=new JTextField(10);
  2. bookNameText=new JTextField(10);
  3. bookWriterText=new JTextField(10);
  4. bookPublishText=new JTextField(10);
  5. bookPriceText=new JTextField(10);
  6. bookTimeText=new JTextField(9);
  7. submitBut=new JButton("确认");
  8. cancelBut=new JButton("取消");
  9. submitBut.addActionListener(this);
  10. cancelBut.addActionListener(this);
  11. this.setBounds(350,150,400,260);
  12. this.setResizable(false);
  13. this.setLayout(new BorderLayout());
  14. 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);

  1. con1[1].setLayout(new FlowLayout());
  2. con1[1].add(bookNameLabel);
  3. con1[1].add(bookNameText);
  4. con1[2].setLayout(new FlowLayout());
  5. con1[2].add(bookWriterLabel);
  6. con1[2].add(bookWriterText);
  7. con1[3].setLayout(new FlowLayout());
  8. con1[3].add(bookPublishLabel);
  9. con1[3].add(bookPublishText);
  10. con1[4].setLayout(new FlowLayout());
  11. con1[4].add(bookPriceLabel);
  12. con1[4].add(bookPriceText);
  13. con1[5].setLayout(new FlowLayout());
  14. con1[5].add(bookTimeLabel);
  15. con1[5].add(bookTimeText);
  16. Container con2=new Container();
  17. con2.setLayout(new BorderLayout());
  18. con2.add(con1[0],BorderLayout.NORTH);
  19. con2.add(con1[1],BorderLayout.CENTER);
  20. con2.add(con1[2],BorderLayout.SOUTH);
  21. Container con3=new Container();
  22. con3.setLayout(new BorderLayout());
  23. con3.add(con1[3],BorderLayout.NORTH);
  24. con3.add(con1[4],BorderLayout.CENTER);
  25. con3.add(con1[5],BorderLayout.SOUTH);
  26. Container con4=new Container();
  27. con4.setLayout(new FlowLayout());
  28. con4.add(submitBut);
  29. con4.add(cancelBut);
  30. Container con5=new Container();
  31. con5.setLayout(new BorderLayout());
  32. con5.add(con2,BorderLayout.NORTH);
  33. con5.add(con3,BorderLayout.CENTER);
  34. con5.add(con4,BorderLayout.SOUTH);
  35. this.add(con5,BorderLayout.CENTER);
  36. this.validate();
  37. 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 “

  1. + "book_info(book_num,book_name,book_writer,publish_house,book_price,publish_time)"
  2. + "values('"+bookNumText.getText()+"','"+bookNameText.getText()+"','"+bookWriterText.getText()+"','"+bookPublishText.getText()+"','"+bookPriceText.getText()+"','"+bookTimeText.getText()+"')";
  3. try {
  4. BookTableModel book=new BookTableModel();
  5. book.addBook(sql);
  6. } catch (SQLException e1) {
  7. // TODO Auto-generated catch block
  8. e1.printStackTrace();
  9. }
  10. JOptionPane.showMessageDialog(this,"添加成功", "提示",JOptionPane.PLAIN_MESSAGE);
  11. this.setVisible(false);
  12. }
  13. }
  14. if(e.getSource()==cancelBut){
  15. this.setVisible(false);
  16. }

}
}
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(“出版时间:”);

  1. bookNumText=new JTextField(10);
  2. bookNameText=new JTextField(10);
  3. bookWriterText=new JTextField(10);
  4. bookPublishText=new JTextField(10);
  5. bookPriceText=new JTextField(10);
  6. bookTimeText=new JTextField(9);
  7. submitBut=new JButton("确认修改");
  8. cancelBut=new JButton("取消");
  9. submitBut.addActionListener(this);
  10. cancelBut.addActionListener(this);
  11. this.setBounds(350,150,400,260);
  12. this.setResizable(false);
  13. this.setLayout(new BorderLayout());
  14. this.setValue();
  15. 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);

  1. con1[1].setLayout(new FlowLayout());
  2. con1[1].add(bookNameLabel);
  3. con1[1].add(bookNameText);
  4. con1[2].setLayout(new FlowLayout());
  5. con1[2].add(bookWriterLabel);
  6. con1[2].add(bookWriterText);
  7. con1[3].setLayout(new FlowLayout());
  8. con1[3].add(bookPublishLabel);
  9. con1[3].add(bookPublishText);
  10. con1[4].setLayout(new FlowLayout());
  11. con1[4].add(bookPriceLabel);
  12. con1[4].add(bookPriceText);
  13. con1[5].setLayout(new FlowLayout());
  14. con1[5].add(bookTimeLabel);
  15. con1[5].add(bookTimeText);
  16. Container con2=new Container();
  17. con2.setLayout(new BorderLayout());
  18. con2.add(con1[0],BorderLayout.NORTH);
  19. con2.add(con1[1],BorderLayout.CENTER);
  20. con2.add(con1[2],BorderLayout.SOUTH);
  21. Container con3=new Container();
  22. con3.setLayout(new BorderLayout());
  23. con3.add(con1[3],BorderLayout.NORTH);
  24. con3.add(con1[4],BorderLayout.CENTER);
  25. con3.add(con1[5],BorderLayout.SOUTH);
  26. Container con4=new Container();
  27. con4.setLayout(new FlowLayout());
  28. con4.add(submitBut);
  29. con4.add(cancelBut);
  30. Container con5=new Container();
  31. con5.setLayout(new BorderLayout());
  32. con5.add(con2,BorderLayout.NORTH);
  33. con5.add(con3,BorderLayout.CENTER);
  34. con5.add(con4,BorderLayout.SOUTH);
  35. this.add(con5,BorderLayout.CENTER);
  36. this.validate();
  37. this.setVisible(true);

}
public void setValue(){
this.bookNumText.setText((String) bookModel.getValueAt(rowNum, 0));
this.bookNumText.setEditable(false);

  1. this.bookNameText.setText((String) bookModel.getValueAt(rowNum, 1));
  2. this.bookWriterText.setText((String) bookModel.getValueAt(rowNum, 2));
  3. this.bookPublishText.setText((String) bookModel.getValueAt(rowNum, 3));
  4. this.bookTimeText.setText((String) bookModel.getValueAt(rowNum, 4));
  5. this.bookPriceText.setText((String) bookModel.getValueAt(rowNum, 5));
  6. 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);
}
}
}

更多相关文章

  1. Android输入法之——如何禁止横屏时全屏http://blog.csdn.net/na
  2. android 修改系统程序图标大小
  3. SqlServer修改数据库文件及日志文件存放位置
  4. 修改数据库为多用户模式
  5. 根据sql脚本修改数据库表结构的几种解决方案
  6. 使用phpMyAdmin修改MySQL数据库root用户密码的方法
  7. 一条SQL语句修改多表多字段的信息的具体实现
  8. 高通平台android9.0设置开机默认横屏显示
  9. Android(安卓)P 系统设置默认值

随机推荐

  1. Android 4.0应用界面设计分析
  2. Android Handler 线程消息机制
  3. Android串口通信:抱歉,学会它真的可以为所
  4. Android gradle build 修改文件名称及目
  5. android教父高焕堂 成都之行
  6. 处理ArcGIS Android工程和ADT v17中的依
  7. 【Android】源码分析 - Handler消息机制
  8. 一个简单的Android进程管理器(初稿)
  9. 花了 6 个月整理了 100 篇 Android 干货
  10. Android教父高焕堂:开源只是手段,开放才是