服务器之家

服务器之家 > 正文

图书管理系统java版

时间:2020-05-12 12:30     来源/作者:zjq_1314520

本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询、插入、删除、修改。

内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书号、价格字段。设计一个GUI界面进行书目管理。在该界面上有四个选项卡,分别是查询、插入、删除、修改。点击查询选项卡,出现的界面上有书名、作者、出版社、书号四个文本框,一个按钮和一个只读文本区。文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的“查询”按钮,可以在界面下方的文本区中显示出符合条件的书目详细信息。点击插入选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。在文本框中输入信息后,点击“插入”按钮,该书目信息插入数据库表中。点击删除选项卡,出现的界面上有书名文本框和一个按钮,输入书名后点击“删除”按钮,该书目信息从数据库表中删除。点击修改选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。输入的书名必须是已存在的,否则会弹出消息框显示出错信息。输入信息后,点击“修改”按钮,数据库表中的相应书目信息被修改为新值。

源码:

BookInfo.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
* 项目名称:图书管理系统
 * 版本: 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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);
 }
 }
}

程序运行结果:主界面:

图书管理系统java版

查询界面:

图书管理系统java版

添加图书界面:

图书管理系统java版

图书管理系统java版

修改界面:

图书管理系统java版

图书管理系统java版

删除操作:

图书管理系统java版

图书管理系统java版

数据库界面:

图书管理系统java版

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

相关文章

热门资讯

歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部