基于Java Swing 的图书管理系统
本系统是基于Java和MySQL开发的一个简易的图书管理系统,其中数据库表如下:
drop database books;
create database books char set utf8;
use books;
create table user(
id int auto_increment primary key ,
username varchar(30) not null ,
password varchar(30) not null,
type varchar(30) not null
);
insert into user(username, password,type) value ('admin','admin','系统管理员');
select * from user where username = 'admin' and password = 'admin';
select *from user;
create table booktype(
id varchar(60) not null primary key ,
typename varchar(255) not null ,
typeremark text
);
insert into booktype values ('BK0001','科技类','科技文化类型');
insert into booktype values ('BK0002','文献类','文化类型');
select * from booktype;
create table book(
id varchar(30) not null primary key ,
bookname varchar(255) not null ,
autor varchar(255) not null ,
sex char(2) not null ,
price float not null ,
type varchar(255) not null ,
remark text
);
alter table book add constraint type foreign key (type) references booktype(typename);
insert into book(id, bookname, autor, sex, price, type, remark)VALUES ('1','软件工程','admin','男',90.9,'科技类','软件工程是一门工程化学科');
User实体类:
package com.book.util;
public class User {
private Integer id;
private String username;
private String password;
private String type;
public User(Integer id, String username, String password, String type) {
this.id = id;
this.username = username;
this.password = password;
this.type = type;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", type='" + type + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
BookType实体类:
package com.book.util;
public class BookType {
private String id;
private String typename;
private String typeremark;
public BookType(){
}
@Override
public String toString() {
return "BookType{" +
"id='" + id + '\'' +
", typename='" + typename + '\'' +
", typeremark='" + typeremark + '\'' +
'}';
}
public String getId() {
return id;
}
public BookType(String id,String typename, String typeremark) {
this.id = id;
this.typename = typename;
this.typeremark = typeremark;
}
public void setId(String id) {
this.id = id;
}
public String getTypename() {
return typename;
}
public void setTypename(String typename) {
this.typename = typename;
}
public String getTyperemark() {
return typeremark;
}
public void setTyperemark(String typeremark) {
this.typeremark = typeremark;
}
}
Book实体类:
package com.book.util;
public class Book {
private String id;
private String bookname;
private String autor;
private String sex;
private Float price;
private String type;
private String remark;
public Book() {
}
@Override
public String toString() {
return "Book{" +
"id='" + id + '\'' +
", bookname='" + bookname + '\'' +
", autor='" + autor + '\'' +
", sex='" + sex + '\'' +
", price=" + price +
", type='" + type + '\'' +
", remark='" + remark + '\'' +
'}';
}
public Book(String id, String bookname, String autor, String sex, Float price, String type, String remark) {
this.id = id;
this.bookname = bookname;
this.autor = autor;
this.sex = sex;
this.price = price;
this.type = type;
this.remark = remark;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
登录
LoginJFrame类:
package com.book.ui;
import com.book.dao.DB;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
public class LoginJFrame extends JFrame{
public LoginJFrame(String name,String pwd){
//1.设置标题
this.setTitle("登录");
setIconImage(Toolkit.getDefaultToolkit().getImage(RegisterJFrame.class.getResource("/images/LOGO1.PNG")));
//事件机制,点击,双击、长按、触摸、 动
//2.设置jframe位置和宽高
this.setBounds(200,200,600,600);
//界面关闭后,查询处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置不允许改变界面大小
this.setResizable(false);
//3.创建面板
JPanel jPanel = new JPanel();
//4.把面板添加到JFrame
this.add(jPanel);
//设置布局,采用绝对布局
jPanel.setLayout(null);
//设置页面背景
//开始绘画组件
JLabel jLabel = new JLabel("登录页面");
jLabel.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/bookManager.png")));
jLabel.setFont(new Font("宋体", Font.PLAIN, 26));
jLabel.setBounds(230,100,180,30);
//把组件添加到jPanel中
jPanel.add(jLabel);
//开始绘画用 户 名:组件
JLabel username = new JLabel("用 户 名:");
// username.setForeground(new Color(245, 255, 250));
username.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/userName.png")));
username.setBounds(120,150,80,30);
jPanel.add(username);
//开始绘画登录密码组件
JLabel password = new JLabel("密 码:");
//password.setForeground(new Color(245, 255, 250));
password.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/password.png")));
password.setBounds(120,200,80,30);
jPanel.add(password);
//输入框
JTextField usernameInput = new JTextField();
usernameInput.setBounds(200,150,200,30);
jPanel.add(usernameInput);
usernameInput.setText(name);
//密码框
JPasswordField passwordInput = new JPasswordField();
passwordInput.setBounds(200,200,200,30);
jPanel.add(passwordInput);
passwordInput.setText(pwd);
//登录
JButton loginbutton = new JButton("登录");
loginbutton.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/login.png")));
loginbutton.setForeground(new Color(0, 128, 0));
loginbutton.setBounds(160,250,80,30);
jPanel.add(loginbutton);
//重置
JButton registbutton = new JButton("重置");
registbutton.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/edit.png")));
registbutton.setBounds(260,250,80,30);
registbutton.setForeground(new Color(0, 128, 0));
jPanel.add(registbutton);
//注册
JButton zcbutton = new JButton("注册");
zcbutton.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/exit.png")));
zcbutton.setBounds(360,250,80,30);
zcbutton.setForeground(new Color(0, 128, 0));
jPanel.add(zcbutton);
//注册
zcbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//页面跳转
new RegisterJFrame().setVisible(true);
//页面销毁
LoginJFrame.this.dispose();
}
});
//点击登录处理
loginbutton.addActionListener(new ActionListener() {
//用户点击按钮时,会自动调用此方法
@Override
public void actionPerformed(ActionEvent e) {
//消息提示框
/*
* 1:获取用户名和密码
* 2:拿着用户名和密码和服务器里数据进行对比
* a:登录成功 弹出对话框登录成功,跳转到主页面,当前页面关闭
* b:登录失败 弹出对话框,提示登录失败*/
String username = usernameInput.getText();
String password = passwordInput.getText();
DB db = new DB();
try {
if (db.userLogin(username,password)){
//登录成功
JOptionPane.showMessageDialog(null,"恭喜你登录成功!");
MainJFrame frames = new MainJFrame();
//页面跳转
frames.setVisible(true);
//注销
LoginJFrame.this.dispose();
}else {
JOptionPane.showMessageDialog(null,"登录失败!请检查用户名或密码是否错误...");
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
});
//重置操作
registbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
usernameInput.setText("");
passwordInput.setText("");
}
});
//显示画面内容
this.setVisible(true);
}
public static void main(String[] args) {
new LoginJFrame("","");
}
}
注册
RegisterJFrame类:
package com.book.ui;
import com.book.dao.DB;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import java.awt.Toolkit;
import java.sql.SQLException;
public class RegisterJFrame extends JFrame{
private JTextField textField;
private JPasswordField passwordField;
private JPasswordField passwordField_1;
public RegisterJFrame() {
this.setBounds(200,200,600,600);
//界面关闭后,查询处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置不允许改变界面大小
this.setResizable(false);
setIconImage(Toolkit.getDefaultToolkit().getImage(RegisterJFrame.class.getResource("/images/LOGO1.PNG")));
getContentPane().setEnabled(false);
setResizable(false);
setAlwaysOnTop(true);
getContentPane().setFont(new Font("宋体", Font.PLAIN, 26));
getContentPane().setForeground(Color.WHITE);
getContentPane().setBackground(new Color(0, 128, 0));
setBackground(Color.MAGENTA);
setTitle("用户注册");
getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("欢迎注册");
lblNewLabel.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/bookManager.png")));
lblNewLabel.setForeground(new Color(248, 248, 255));
lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 26));
lblNewLabel.setBounds(230, 38, 197, 39);
getContentPane().add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("用 户 名:");
lblNewLabel_1.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/userName.png")));
lblNewLabel_1.setForeground(new Color(245, 255, 250));
lblNewLabel_1.setBackground(new Color(248, 248, 255));
lblNewLabel_1.setBounds(148, 118, 104, 18);
getContentPane().add(lblNewLabel_1);
JLabel lblNewLabel_2 = new JLabel("密 码:");
lblNewLabel_2.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/password.png")));
lblNewLabel_2.setForeground(new Color(245, 255, 250));
lblNewLabel_2.setBounds(148, 149, 114, 33);
getContentPane().add(lblNewLabel_2);
JLabel lblNewLabel_3 = new JLabel("确认密码:");
lblNewLabel_3.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/password.png")));
lblNewLabel_3.setForeground(new Color(245, 255, 250));
lblNewLabel_3.setBounds(148, 189, 104, 24);
getContentPane().add(lblNewLabel_3);
textField = new JTextField();
textField.setBounds(266, 115, 161, 24);
getContentPane().add(textField);
textField.setColumns(10);
passwordField = new JPasswordField();
passwordField.setBounds(266, 153, 161, 24);
getContentPane().add(passwordField);
passwordField_1 = new JPasswordField();
passwordField_1.setBounds(266, 189, 161, 24);
getContentPane().add(passwordField_1);
JComboBox comboBox = new JComboBox();
comboBox.setForeground(new Color(0, 128, 0));
comboBox.setModel(new DefaultComboBoxModel(new String[] {"请选择", "普通用户", "系统管理员"}));
comboBox.setBounds(266, 226, 161, 24);
getContentPane().add(comboBox);
JButton btnNewButton = new JButton("注册");
btnNewButton.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/login.png")));
btnNewButton.setForeground(new Color(0, 128, 0));
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//用户什么都没有输入
if(textField.getText().equals("")||passwordField.getText().equals("")||passwordField_1.getText().equals("")) {
JOptionPane.showMessageDialog(null, "用户名或密码不能为空!");
}else {
if(passwordField.getText().equals(passwordField_1.getText())) {
DB db = new DB();
String username = textField.getText();
String password = passwordField.getText();
String type = (String) comboBox.getSelectedItem();
System.out.println(type);
try {
if(db.userAdd(username,password,type)){
JOptionPane.showMessageDialog(null, "注册成功!");
//页面跳转
new LoginJFrame(username,password).setVisible(true);
//页面销毁
RegisterJFrame.this.dispose();
}
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}else {
JOptionPane.showMessageDialog(null, "二次输入密码不一致!");
}
}
}
});
btnNewButton.setBounds(160, 281, 95, 27);
getContentPane().add(btnNewButton);
JLabel lblNewLabel_4 = new JLabel("角 色:");
lblNewLabel_4.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/edit.png")));
lblNewLabel_4.setForeground(new Color(245, 255, 250));
lblNewLabel_4.setBounds(148, 229, 104, 18);
getContentPane().add(lblNewLabel_4);
JButton btnNewButton_1 = new JButton("重置");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//用户重置
textField.setText("");
passwordField.setText("");
passwordField_1.setText("");
}
});
btnNewButton_1.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/reset.png")));
btnNewButton_1.setForeground(new Color(0, 128, 128));
btnNewButton_1.setBounds(265, 281, 95, 27);
getContentPane().add(btnNewButton_1);
JButton login = new JButton("登录");
login.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//返回登录界面
new LoginJFrame("","").setVisible(true);
//关闭窗口
RegisterJFrame.this.dispose();
}
});
login.setIcon(new ImageIcon(RegisterJFrame.class.getResource("/images/login.png")));
login.setForeground(new Color(0, 128, 128));
login.setBounds(370, 281, 95, 27);
getContentPane().add(login);
//显示画面内容
this.setVisible(true);
}
public static void main(String [] args) {
new RegisterJFrame();
}
}
MainJFrame类:
package com.book.ui;
import javax.swing.*;
import java.awt.Toolkit;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import javax.swing.border.EmptyBorder;
public class MainJFrame extends JFrame{
private JPanel contentPane;
public MainJFrame() {
//设置不允许改变界面大小
this.setResizable(false);
setIconImage(Toolkit.getDefaultToolkit().getImage(MainJFrame.class.getResource("/images/LOGO1.PNG")));
setTitle("图书管理系统主界面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 665, 596);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("图书类别管理");
//鼠标点击事件,自动执行此方法
mnNewMenu.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
//直接跳转图书管理系统主页面
new BookManagerSystemJFrame().setVisible(true);
}
});
mnNewMenu.setIcon(new ImageIcon(MainJFrame.class.getResource("/images/bookTypeManager.png")));
menuBar.add(mnNewMenu);
JMenu mnNewMenu_1 = new JMenu("图书管理");
mnNewMenu_1.setIcon(new ImageIcon(MainJFrame.class.getResource("/images/bookManager.png")));
menuBar.add(mnNewMenu_1);
mnNewMenu_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
try {
new BookManagerJFrame().setVisible(true);
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
});
JMenu mnNewMenu_2 = new JMenu("关于");
mnNewMenu_2.setIcon(new ImageIcon(MainJFrame.class.getResource("/images/about.png")));
menuBar.add(mnNewMenu_2);
//关于界面信息展示
mnNewMenu_2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
new BookAboutJFrame().setVisible(true);
}
});
JMenu mnNewMenu_3 = new JMenu("安全退出");
mnNewMenu_3.setIcon(new ImageIcon(MainJFrame.class.getResource("/images/exit.png")));
menuBar.add(mnNewMenu_3);
//退出登录
mnNewMenu_3.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null,"确定要退出系统吗?","温馨提示:",1);
new LoginJFrame("","").setVisible(true);
MainJFrame.this.dispose();
}
});
contentPane = new JPanel();
contentPane.setBackground(new Color(0, 128, 0));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
this.setContentPane(contentPane);
contentPane.setLayout(null);
//显示画面内容
this.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainJFrame frame = new MainJFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
BookManagerSystemJFrame类:
package com.book.ui;
import com.book.dao.DB;
import com.book.util.BookType;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
public class BookManagerSystemJFrame extends JFrame{
private ArrayList<BookType> list = new ArrayList<>();
DB db = new DB();
private JPanel contentPane;
private JTable table;
private DefaultTableModel dtm = new DefaultTableModel();
private JLabel lblNewLabel;
private JTextField textField;
private JButton btnNewButton;
private JLabel lblNewLabel_1;
private JTextField textField_1;
private JLabel lblNewLabel_2;
private JTextField textField_2;
private JLabel lblNewLabel_3;
private JTextField textField_3;
private JButton btnNewButton_1;
private JButton btnNewButton_2;
private JButton btnNewButton_3;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BookManagerSystemJFrame frame = new BookManagerSystemJFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public BookManagerSystemJFrame() {
//设置不允许改变界面大小
this.setResizable(false);
setIconImage(Toolkit.getDefaultToolkit().getImage(BookManagerSystemJFrame.class.getResource("/images/LOGO1.PNG")));
setTitle("图书管理系统主页面");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 518, 567);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
table = new JTable();// 创建表格
table.setModel(dtm);// 设置表格的模式,采用的是默认格式
dtm.addColumn("编号");
dtm.addColumn("图书类别名称");
dtm.addColumn("图书类别描述");
JScrollPane scrollPane = new JScrollPane(table); // 滚动面板
scrollPane.setBounds(15, 97, 466, 147);
contentPane.add(scrollPane);
lblNewLabel = new JLabel("图书类别名称");
lblNewLabel.setBounds(49, 45, 101, 26);
contentPane.add(lblNewLabel);
textField = new JTextField();
textField.setBounds(164, 46, 185, 24);
contentPane.add(textField);
textField.setColumns(10);
/*系统鼠标点击,进行输出桌面*/
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int row = table.getSelectedRow();
textField_1.setText((String) table.getValueAt(row,0));;
textField_2.setText((String) table.getValueAt(row,1));
textField_3.setText((String) table.getValueAt(row,2));
}
});
/*查询操作*/
btnNewButton = new JButton("查询");
btnNewButton.setIcon(new ImageIcon(BookManagerSystemJFrame.class.getResource("/images/search.png")));
btnNewButton.setBounds(363, 45, 113, 27);
contentPane.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String str = textField.getText();
if (str.equals("")){
try {
showAll();
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}else {
try {
int count = dtm.getRowCount();
for (int i=0;i<count;i++){
dtm.removeRow(0);
}
list = (ArrayList<BookType>) db.likeQueryBookType(str);
for (int i=0;i<list.size();i++){
Vector vec = new Vector();
vec.add(list.get(i).getId());
vec.add(list.get(i).getTypename());
vec.add(list.get(i).getTyperemark());
System.out.println(list.get(i).getId());
dtm.addRow(vec);
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
});
lblNewLabel_1 = new JLabel("编号");
lblNewLabel_1.setBounds(14, 291, 72, 18);
contentPane.add(lblNewLabel_1);
textField_1 = new JTextField();
textField_1.setBounds(64, 288, 86, 24);
contentPane.add(textField_1);
textField_1.setColumns(10);
lblNewLabel_2 = new JLabel("图书类别名称");
lblNewLabel_2.setBounds(204, 291, 101, 18);
contentPane.add(lblNewLabel_2);
textField_2 = new JTextField();
textField_2.setBounds(310, 288, 166, 24);
contentPane.add(textField_2);
textField_2.setColumns(10);
lblNewLabel_3 = new JLabel("描述");
lblNewLabel_3.setBounds(15, 352, 39, 18);
contentPane.add(lblNewLabel_3);
textField_3 = new JTextField();
textField_3.setBounds(64, 349, 417, 70);
contentPane.add(textField_3);
textField_3.setColumns(10);
btnNewButton_1 = new JButton("添加");
btnNewButton_1.setIcon(new ImageIcon(BookManagerSystemJFrame.class.getResource("/images/add.png")));
btnNewButton_1.setBounds(93, 449, 113, 27);
contentPane.add(btnNewButton_1);
btnNewButton_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String id = textField_1.getText();
String booktype = textField_2.getText();
String bookmark = textField_3.getText();
if (id.equals("")||booktype.equals("")||bookmark.equals("")){
JOptionPane.showMessageDialog(null,"输入图书类别信息不能为空!");
}else {
BookType bookType = new BookType(id,booktype,bookmark);
try {
if(db.addBookType(bookType)){
JOptionPane.showMessageDialog(null,"添加图书类别信息成功!");
showAll();
}else {
JOptionPane.showMessageDialog(null,"添加图书类别信息失败!");
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
});
btnNewButton_2 = new JButton("修改");
btnNewButton_2.setIcon(new ImageIcon(BookManagerSystemJFrame.class.getResource("/images/modify.png")));
btnNewButton_2.setBounds(220, 449, 113, 27);
contentPane.add(btnNewButton_2);
btnNewButton_2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row == -1){
JOptionPane.showMessageDialog(null,"请选择要修改的行!");
}else{
String i = (String) table.getValueAt(row,0);
String id = textField_1.getText();
String booktype = textField_2.getText();
String bookremark = textField_3.getText();
if (!id.equals("")&&!booktype.equals("")) {
BookType type = new BookType(id, booktype, bookremark);
try {
if (db.UpdateBookTypeOne(type,i)){
JOptionPane.showMessageDialog(null,"修改数据成功!");
showAll();
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
}
});
btnNewButton_3 = new JButton("删除");
btnNewButton_3.setIcon(new ImageIcon(BookManagerSystemJFrame.class.getResource("/images/delete.png")));
btnNewButton_3.setBounds(347, 449, 113, 27);
contentPane.add(btnNewButton_3);
btnNewButton_3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row==-1){
JOptionPane.showMessageDialog(null,"请选择要删除的行!");
}else {
String id = (String) table.getValueAt(row,0);
try {
if (db.deleteBookTypeOne(id)){
JOptionPane.showMessageDialog(null,"删除图书类别信息成功!");
showAll();
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
});
}
public void showAll() throws SQLException, ClassNotFoundException {
list = (ArrayList<BookType>) db.allQueryBoolType();
int count = dtm.getRowCount();
for (int i=0;i<count;i++){
dtm.removeRow(0);
}
for (BookType books:list){
Vector vec = new Vector();
vec.add(books.getId());
vec.add(books.getTypename());
vec.add(books.getTyperemark());
dtm.addRow(vec);
}
textField_1.setText("");
textField_2.setText("");
textField_3.setText("");
}
}
BookManagerJFrame类:
package com.book.ui;
import com.book.dao.DB;
import com.book.util.Book;
import com.book.util.BookType;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class BookManagerJFrame extends JFrame {
private JPanel contentPane;
private JTable table;
private DefaultTableModel dtm = new DefaultTableModel();
private JTextField textField;
private JTextField textField_1;
private JComboBox comboBox;
private JButton btnNewButton;
private JLabel lblNewLabel_3;
private JTextField textField_2;
private JLabel lblNewLabel_4;
private JTextField textField_3;
private JLabel lblNewLabel_5;
private JTextField textField_4;
private JLabel lblNewLabel_6;
private JTextField textField_6;
private JLabel lblNewLabel_7;
private JTextField textField_5;
private JLabel lblNewLabel_8;
private JLabel lblNewLabel_9;
private JButton btnNewButton_1;
private JButton btnNewButton_2;
private JButton btnNewButton_3;
private JPanel jp1;
private JPanel jp2;
DB db = new DB();
List<Book> list = new ArrayList<>();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BookManagerJFrame frame = new BookManagerJFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public BookManagerJFrame() throws SQLException, ClassNotFoundException {
//设置不允许改变界面大小
this.setResizable(false);
//创建动态字符串数组,提取文件信息
ArrayList<String> str = new ArrayList<String>();
List<BookType> bt = new ArrayList<BookType>();
bt = db.allQueryBoolType();
str.add("请选择");
for(int i=0;i<bt.size();i++){
str.add(bt.get(i).getTypename());
}
setIconImage(Toolkit.getDefaultToolkit().getImage(BookManagerJFrame.class.getResource("/images/LOGO1.PNG")));
setTitle("图书管理");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 800, 720);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
table = new JTable();// 创建表格
table.setModel(dtm);// 设置表格的模式,采用的是默认格式
dtm.addColumn("编号");
dtm.addColumn("图书名称");
dtm.addColumn("作者");
dtm.addColumn("作者性别");
dtm.addColumn("价格");
dtm.addColumn("图书类别");
dtm.addColumn("图书描述");
JScrollPane scrollPane = new JScrollPane(table); // 滚动面板
scrollPane.setBounds(15, 97, 753, 243);
contentPane.add(scrollPane);
JLabel lblNewLabel = new JLabel("图书名称:");
lblNewLabel.setBounds(32, 45, 94, 18);
contentPane.add(lblNewLabel);
textField = new JTextField();
textField.setBounds(107, 42, 120, 24);
contentPane.add(textField);
textField.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("作者:");
lblNewLabel_1.setBounds(241, 45, 45, 18);
contentPane.add(lblNewLabel_1);
textField_1 = new JTextField();
textField_1.setBounds(289, 42, 86, 24);
contentPane.add(textField_1);
textField_1.setColumns(10);
JLabel lblNewLabel_2 = new JLabel("图书类别:");
lblNewLabel_2.setBounds(395, 45, 109, 18);
contentPane.add(lblNewLabel_2);
comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(str.toArray()));
comboBox.setBounds(478, 42, 106, 24);
contentPane.add(comboBox);
btnNewButton = new JButton("搜索");
btnNewButton.setIcon(new ImageIcon(BookManagerJFrame.class.getResource("/images/search.png")));
btnNewButton.setBounds(599, 41, 113, 27);
contentPane.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String bookname = textField.getText();
String autor = textField_1.getText();
String type = (String) comboBox.getSelectedItem();
if (bookname.equals("")&&autor.equals("")&&type.equals("请选择")){
try {
showAll();
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}else {
try {
list = db.linkSelectBook(type,bookname,autor);
int count = dtm.getRowCount();
for (int i=0;i<count;i++){
dtm.removeRow(0);
}
for (Book books:list){
Vector vec = new Vector();
vec.add(books.getId());
vec.add(books.getBookname());
vec.add(books.getAutor());
vec.add(books.getSex());
vec.add(books.getPrice());
vec.add(books.getType());
vec.add(books.getRemark());
dtm.addRow(vec);
}
textField_2.setText("");
textField_3.setText("");
textField_4.setText("");
textField_5.setText("");
textField_6.setText("");
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
});
lblNewLabel_3 = new JLabel("编号:");
lblNewLabel_3.setBounds(37, 436, 72, 18);
contentPane.add(lblNewLabel_3);
textField_2 = new JTextField();
textField_2.setBounds(95, 433, 147, 24);
contentPane.add(textField_2);
textField_2.setColumns(10);
lblNewLabel_4 = new JLabel("价格:");
lblNewLabel_4.setBounds(37, 481, 45, 18);
contentPane.add(lblNewLabel_4);
textField_3 = new JTextField();
textField_3.setBounds(95, 478, 147, 24);
contentPane.add(textField_3);
textField_3.setColumns(10);
lblNewLabel_5 = new JLabel("图书描述:");
lblNewLabel_5.setBounds(37, 520, 89, 18);
contentPane.add(lblNewLabel_5);
textField_4 = new JTextField();
textField_4.setBounds(130, 517, 622, 68);
contentPane.add(textField_4);
textField_4.setColumns(10);
lblNewLabel_6 = new JLabel("图书名称:");
lblNewLabel_6.setBounds(299, 436, 75, 18);
contentPane.add(lblNewLabel_6);
textField_6 = new JTextField();
textField_6.setColumns(10);
textField_6.setBounds(388, 433, 147, 24);
contentPane.add(textField_6);
lblNewLabel_7 = new JLabel("作者:");
lblNewLabel_7.setBounds(299, 481, 72, 18);
contentPane.add(lblNewLabel_7);
textField_5 = new JTextField();
textField_5.setBounds(388, 478, 147, 24);
contentPane.add(textField_5);
textField_5.setColumns(10);
lblNewLabel_8 = new JLabel("作者性别:");
lblNewLabel_8.setBounds(566, 436, 86, 18);
contentPane.add(lblNewLabel_8);
lblNewLabel_9 = new JLabel("图书类别");
lblNewLabel_9.setBounds(566, 481, 86, 18);
contentPane.add(lblNewLabel_9);
JRadioButton rdbtnNewRadioButton = new JRadioButton("男");
rdbtnNewRadioButton.setBounds(640, 436, 45, 23);
contentPane.add(rdbtnNewRadioButton);
JRadioButton rdbtnNewRadioButton_1 = new JRadioButton("女");
rdbtnNewRadioButton_1.setBounds(691, 436, 45, 23);
contentPane.add(rdbtnNewRadioButton_1);
JComboBox comboBox_1 = new JComboBox();
//动态字符串数组
comboBox_1.setModel(new DefaultComboBoxModel(str.toArray()));
comboBox_1.setBounds(648, 478, 104, 24);
contentPane.add(comboBox_1);
btnNewButton_1 = new JButton("添加");
btnNewButton_1.setIcon(new ImageIcon(BookManagerJFrame.class.getResource("/images/add.png")));
btnNewButton_1.setBounds(229, 613, 113, 27);
contentPane.add(btnNewButton_1);
btnNewButton_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String id = textField_2.getText();
String bookname=textField_6.getText();
String autor = textField_5.getText();
String price = textField_3.getText();
String remark = textField_4.getText();
String sex = "";
String type = (String) comboBox_1.getSelectedItem();
if(id.equals("")||bookname.equals("")||autor.equals("") ||price.equals("")||type.equals("请选择")){
JOptionPane.showMessageDialog(null,"输入信息不能为空!");
}else{
if(rdbtnNewRadioButton.isSelected()){
sex="男";
}else {
sex="女";
}
Book b = new Book(id,bookname,autor,sex,Float.valueOf(price),type,remark);
try {
if (db.addOneBook(b)){
JOptionPane.showMessageDialog(null,"添加图书信息成功!");
showAll();
rdbtnNewRadioButton.setSelected(true);
if (comboBox_1.getItemCount()>0){
comboBox_1.setSelectedIndex(0);
}
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
});
btnNewButton_2 = new JButton("修改");
btnNewButton_2.setIcon(new ImageIcon(BookManagerJFrame.class.getResource("/images/modify.png")));
btnNewButton_2.setBounds(376, 613, 113, 27);
contentPane.add(btnNewButton_2);
/*系统鼠标点击,进行输出*/
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int row = table.getSelectedRow();
textField_2.setText((String) table.getValueAt(row,0));;
textField_6.setText((String) table.getValueAt(row,1));
textField_5.setText((String) table.getValueAt(row,2));
textField_3.setText(String.valueOf(table.getValueAt(row,4)));
textField_4.setText((String) table.getValueAt(row,6));
}
});
btnNewButton_2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row == -1){
JOptionPane.showMessageDialog(null,"请选择要修改的行!");
}else{
String i = (String) table.getValueAt(row,0);
String id = textField_2.getText();
String bookname=textField_6.getText();
String autor = textField_5.getText();
String price = textField_3.getText();
String remark = textField_4.getText();
String sex = "";
String type = (String) comboBox_1.getSelectedItem();
if (id.equals("")||bookname.equals("")||autor.equals("") ||price.equals("")||type.equals("请选择")) {
JOptionPane.showMessageDialog(null,"修改信息不能为空!");
}else {
if(rdbtnNewRadioButton.isSelected()){
sex="男";
}else {
sex="女";
}
Book b = new Book(id,bookname,autor,sex,Float.valueOf(price),type,remark);
try {
if (db.updateOneBook(b,i)){
JOptionPane.showMessageDialog(null,"修改图书信息成功!");
showAll();
rdbtnNewRadioButton.setSelected(true);
if (comboBox_1.getItemCount()>0){
comboBox_1.setSelectedIndex(0);
}
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
}
});
btnNewButton_3 = new JButton("删除");
btnNewButton_3.setIcon(new ImageIcon(BookManagerJFrame.class.getResource("/images/delete.png")));
btnNewButton_3.setBounds(521, 613, 113, 27);
contentPane.add(btnNewButton_3);
btnNewButton_3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
if (row==-1){
JOptionPane.showMessageDialog(null,"请选择要删除的行!");
}else {
String id = (String) table.getValueAt(row,0);
try {
if (db.deleteOneBook(id)){
JOptionPane.showMessageDialog(null,"删除图书信息成功!");
showAll();
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}
}
});
/*搜索条件*/
jp1 = new JPanel();
jp1.setBorder(new TitledBorder(null,"搜索条件",TitledBorder.LEADING,TitledBorder.TOP,null,null));
jp1.setBounds(15, 13, 753, 73);
contentPane.add(jp1);
jp2 = new JPanel();
jp2.setBorder(new TitledBorder(null,"表单操作",TitledBorder.LEADING,TitledBorder.TOP,null,null));
jp2.setBounds(15, 386, 753, 274);
contentPane.add(jp2);
}
public void showAll() throws SQLException, ClassNotFoundException {
list = db.allSelectBook();
int count = dtm.getRowCount();
for (int i=0;i<count;i++){
dtm.removeRow(0);
}
for (Book books:list){
Vector vec = new Vector();
vec.add(books.getId());
vec.add(books.getBookname());
vec.add(books.getAutor());
vec.add(books.getSex());
vec.add(books.getPrice());
vec.add(books.getType());
vec.add(books.getRemark());
dtm.addRow(vec);
}
textField_2.setText("");
textField_3.setText("");
textField_4.setText("");
textField_5.setText("");
textField_6.setText("");
}
}
连接数据库代码
DB类:
package com.book.dao;
import com.book.util.Book;
import com.book.util.BookType;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DB {
private String name = "root";
private String password = "123456";
private String URL = "jdbc:mysql://localhost:3306/books?useSSL=false&useUnicode=true&characterEncoding=UTF-8";
private Connection conn = null;
private Statement st = null;
private ResultSet rs = null;
private PreparedStatement pstm;
private String Driver = "com.mysql.jdbc.Driver";
public Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName(Driver);
conn = DriverManager.getConnection(URL,name,password);
if (conn!=null){
System.out.println("连接数据库成功!");
}
return conn;
}
/*用户登录查询记录*/
public boolean userLogin(String name,String password) throws SQLException, ClassNotFoundException {
String sql = "select * from user where username = ? and password = ?";
boolean flag = false;
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,name);
pstm.setObject(2,password);
rs = pstm.executeQuery();
if (rs.next()){
flag=true;
System.out.println(rs.next());
System.out.println("登录成功");
}
return flag;
}
//用户注册
public boolean userAdd(String name, String password, String type) throws SQLException, ClassNotFoundException {
boolean flag = false;
String sql = "insert into user(username, password,type) value (?,?,?)";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,name);
pstm.setObject(2,password);
pstm.setObject(3,type);
int r = pstm.executeUpdate();
if (r!=0){
flag=true;
System.out.println("注册成功!");
}
return flag;
}
//添加图书类别信息
public boolean addBookType(BookType bookType) throws SQLException, ClassNotFoundException {
boolean flag = false;
String sql = "insert into booktype value (?,?,?)";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,bookType.getId());
pstm.setObject(2,bookType.getTypename());
pstm.setObject(3,bookType.getTyperemark());
int r = pstm.executeUpdate();
if (r!=0){
flag=true;
System.out.println("添加图书类别信息成功!");
}
return flag;
}
//模糊查询图书信息类型
public List<BookType> likeQueryBookType(String typeString) throws SQLException, ClassNotFoundException {
typeString = "%"+typeString+"%";
List<BookType>list = new ArrayList<>();
BookType bookType = null;
String sql = "select * from booktype where typename like ?";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,typeString);
rs = pstm.executeQuery();
while (rs.next()){
bookType = new BookType();
bookType.setId(rs.getString("id"));
bookType.setTypename(rs.getString("typename"));
bookType.setTyperemark(rs.getString("typeremark"));
list.add(bookType);
System.out.println(bookType.toString());
}
return list;
}
//查询图书类别全部信息
public List<BookType> allQueryBoolType() throws SQLException, ClassNotFoundException {
List<BookType>list = new ArrayList<>();
BookType bookType = null;
String sql = "select * from booktype";
pstm = this.getConnection().prepareStatement(sql);
rs = pstm.executeQuery();
while (rs.next()){
bookType = new BookType();
bookType.setId(rs.getString("id"));
bookType.setTypename(rs.getString("typename"));
bookType.setTyperemark(rs.getString("typeremark"));
list.add(bookType);
System.out.println(bookType.toString());
}
return list;
}
/*删除图书类别*/
public boolean deleteBookTypeOne(String id) throws SQLException, ClassNotFoundException {
boolean flag = false;
String sql = "delete from booktype where id = ?";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,id);
int r = pstm.executeUpdate();
if (r!=0){
flag=true;
System.out.println("删除图书类别信息成功!");
}
return flag;
}
/*修改图书类别*/
public boolean UpdateBookTypeOne(BookType bookType,String id) throws SQLException, ClassNotFoundException {
boolean flag = false;
String sql = "update booktype set id=? , typename=? , typeremark=? where id=?";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,bookType.getId());
pstm.setObject(2,bookType.getTypename());
pstm.setObject(3,bookType.getTyperemark());
pstm.setObject(4,id);
int r = pstm.executeUpdate();
if (r!=0){
flag=true;
System.out.println("修改图书类别信息成功!");
}
return flag;
}
/*查询图书信息*/
public List<Book> allSelectBook() throws SQLException, ClassNotFoundException {
String sql = "select * from book";
List<Book>list = new ArrayList<>();
Book book = null;
pstm = this.getConnection().prepareStatement(sql);
rs = pstm.executeQuery();
while (rs.next()){
book = new Book();
book.setId(rs.getString("id"));
book.setBookname(rs.getString("bookname"));
book.setAutor(rs.getString("autor"));
book.setSex(rs.getString("sex"));
book.setPrice(rs.getFloat("price"));
book.setType(rs.getString("type"));
book.setRemark(rs.getString("remark"));
list.add(book);
System.out.println(book.toString());
}
return list;
}
/*模糊查询*/
public List<Book> linkSelectBook(String type,String bookname,String autor) throws SQLException, ClassNotFoundException {
bookname = "%"+bookname+"%";
autor = "%"+autor+"%";
//type = "%"+type+"%";
String sql = "select * from book where type = ? and bookname like ? and autor like ?";
List<Book>list = new ArrayList<>();
Book book = null;
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,type);
pstm.setObject(2,bookname);
pstm.setObject(3,autor);
rs = pstm.executeQuery();
while (rs.next()){
book = new Book();
book.setId(rs.getString("id"));
book.setBookname(rs.getString("bookname"));
book.setAutor(rs.getString("autor"));
book.setSex(rs.getString("sex"));
book.setPrice(rs.getFloat("price"));
book.setType(rs.getString("type"));
book.setRemark(rs.getString("remark"));
list.add(book);
System.out.println(book.toString());
}
return list;
}
/*修改图书信息*/
public boolean updateOneBook(Book book,String id) throws SQLException, ClassNotFoundException {
boolean flag = false;
String sql = "update book set id=? , bookname=? , autor=? ,sex=? ,price=? ,type=? ,remark=? where id=?";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,book.getId());
pstm.setObject(2,book.getBookname());
pstm.setObject(3,book.getAutor());
pstm.setObject(4,book.getSex());
pstm.setObject(5,book.getPrice());
pstm.setObject(6,book.getType());
pstm.setObject(7,book.getRemark());
pstm.setObject(8,id);
int r = pstm.executeUpdate();
if (r!=0){
flag=true;
System.out.println("修改图书信息成功!");
}
return flag;
}
/*删除图书信息*/
public boolean deleteOneBook(String id) throws SQLException, ClassNotFoundException {
boolean flag = false;
String sql = "delete from book where id = ?";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,id);
int r = pstm.executeUpdate();
if (r!=0){
flag=true;
System.out.println("删除图书信息成功!");
}
return flag;
}
/*添加图书信息*/
public boolean addOneBook(Book book) throws SQLException, ClassNotFoundException {
boolean flag = false;
String sql = "insert into book VALUES (?,?,?,?,?,?,?)";
pstm = this.getConnection().prepareStatement(sql);
pstm.setObject(1,book.getId());
pstm.setObject(2,book.getBookname());
pstm.setObject(3,book.getAutor());
pstm.setObject(4,book.getSex());
pstm.setObject(5,book.getPrice());
pstm.setObject(6,book.getType());
pstm.setObject(7,book.getRemark());
int r = pstm.executeUpdate();
if (r!=0){
flag=true;
System.out.println("添加图书信息成功!");
}
return flag;
}
/*关闭连接*/
public void Close() throws SQLException {
if (conn!=null){
conn.close();
}
if (pstm!=null){
pstm.close();
}
if (rs!=null){
rs.close();
}
}
}