java GUI 图书管理系统
运行环境:
idea jdk1.8 mysql8 tomcat15
总目录:
DROP TABLE IF EXISTS 借还书记录;
DROP TABLE IF EXISTS 图书;
DROP TABLE IF EXISTS 读者;
DROP TABLE IF EXISTS 管理员;
CREATE TABLE 图书(
图书_id INT(10) PRIMARY KEY,
图书_name char(10),
作者 char(10),
出版社 char(20),
状态 char(10)
);
INSERT INTO 图书 VALUES
(1,'中国货币史','彭信威','上海人民出版社','未借出'),
(2,'光明共和国','安德烈斯巴尔瓦','广西师范大学出版社','未借出'),
(3,'坏小孩','紫金陈','湖南文苑出版社','已借出');
CREATE TABLE 读者(
读者_id INT(10) PRIMARY KEY,
读者_account char(10),
读者_password varchar(10)
);
INSERT INTO 读者 VALUES
(1,'201511979','123456');
CREATE TABLE 管理员(
管理员_id INT(10) PRIMARY KEY,
管理员_account char(10),
管理员_password varchar(10)
);
INSERT INTO 管理员 VALUES
(1,'220','220123');
CREATE TABLE 借还书记录(
图书_id INT(10),
图书_name char(10),
读者_id INT(10),
读者_account char(10),
借阅时间 DATE,
归还时间 DATE,
状态 char(10),
PRIMARY KEY (图书_id,读者_id),
FOREIGN KEY (图书_id) REFERENCES 图书(图书_id),
FOREIGN KEY (读者_id) REFERENCES 读者(读者_id)
);
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/**library**?useUnicode=true&characterEncoding=utf-8&&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Hongkong
username=**用户名**
password=**密码**
(library为数据库名,root填mysql用户名,password填mysql用户密码)
package 数据.数据表.图书管理系统;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class dbutils{
private static String driver,url,username,password;
private static Connection con;
static {
//读取属性配置文件
Properties prop = new Properties();
//得到文件输入流
InputStream ips = dbutils.class.getClassLoader().getResourceAsStream("library.properties");
//把文件流加载到prop对象中
try
{
prop.load(ips);
driver = prop.getProperty("driver");
url = prop.getProperty("url");
username = prop.getProperty("username");
password = prop.getProperty("password");
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static Connection getConn() throws SQLException{
try
{
Class.forName(driver);
// System.out.println("数据库驱动加载成功!");
}
catch (ClassNotFoundException e)
{
// System.out.println("数据库驱动加载失败!");
e.printStackTrace();
}
try
{
con = DriverManager.getConnection(url , username , password ) ;
// System.out.println("数据库连接成功!");
}
catch(SQLException se)
{
// System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
return con;
}
public static void close(Connection conn,Statement stat,ResultSet rs) throws SQLException {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
throw e;
}
}
if(stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
throw e;
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw e;
}
}
}
public static void main(String[] args) throws SQLException{
getConn();
}
}
package 数据.数据表.图书管理系统;
public class 读者{
private int id;
private String 账户名;
private String 密码;
public 读者(int id,String 账户名,String 密码){
this.id = id;
this.账户名 = 账户名;
this.密码 = 密码;
}
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String get账户名(){
return 账户名;
}
public void set账户名(String 账户名){
this.账户名 = 账户名;
}
public String get密码(){
return 密码;
}
public void set密码(String 密码){
this.密码 = 密码;
}
}
package 数据.数据表.图书管理系统;
public class 管理员{
private int id;
private String 账户名;
private String 密码;
public 管理员(int id,String 账户名,String 密码){
this.id = id;
this.账户名 = 账户名;
this.密码 = 密码;
}
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String get账户名(){
return 账户名;
}
public void set账户名(String 账户名){
this.账户名 = 账户名;
}
public String get密码(){
return 密码;
}
public void set密码(String 密码){
this.密码 = 密码;
}
}
package 数据.数据表.图书管理系统;
public class 图书{
private int id;
private String 书名;
private String 作者;
private String 出版社;
private String 状态;
public 图书(int id,String 书名,String 作者,String 出版社,String 状态){
this.id = id;
this.书名 = 书名;
this.作者 = 作者;
this.出版社 = 出版社;
this.状态 = 状态;
}
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String get书名(){
return 书名;
}
public void set书名(String 书名){
this.书名 = 书名;
}
public String get作者(){
return 作者;
}
public void set作者(String 作者){
this.作者 = 作者;
}
public String get出版社(){
return 出版社;
}
public void set出版社(String 出版社){
this.出版社 = 出版社;
}
public String get状态(){
return 状态;
}
public void set状态(String 状态){
this.状态 = 状态;
}
}
package 数据.数据表.图书管理系统;
import java.util.Date;
public class 借还书记录{
private int 图书id;
private String 书名;
private int 读者id;
private Date 借阅时间;
private Date 归还时间;
private String 状态;
public 借还书记录(int 图书id,String 书名,int 读者id,Date 借阅时间,Date 归还时间,String 状态){
this.图书id = 图书id;
this.书名 = 书名;
this.读者id = 读者id;
this.借阅时间 = 借阅时间;
this.归还时间 = 归还时间;
this.状态 = 状态;
}
public int get图书id(){
return 图书id;
}
public void set图书id(int 图书id){
this.图书id = 图书id;
}
public String get书名(){
return 书名;
}
public void set书名(String 书名){
this.书名 = 书名;
}
public int get读者id(){
return 读者id;
}
public void set读者id(int 读者id){
this.读者id = 读者id;
}
public Date get借阅时间(){
return 借阅时间;
}
public void set借阅时间(Date 借阅时间){
this.借阅时间 = 借阅时间;
}
public Date get归还时间(){
return 归还时间;
}
public void set归还时间(Date 归还时间){
this.归还时间 = 归还时间;
}
public String get状态(){
return 状态;
}
public void set状态(String 状态){
this.状态 = 状态;
}
}
package 数据.数据实体.图书管理系统;
import 数据.数据表.图书管理系统.dbutils;
import 数据.数据表.图书管理系统.读者;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class 读者_操作{
public List<读者> 搜索all() throws SQLException{
List<读者> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("select * from 读者 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<读者> 搜索(String input) throws SQLException{
List<读者> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("select * from 表1 where 读者_id = ? OR 读者_account = ? OR 读者_password = ? ");
stmt.setString(1,input);
stmt.setString(2,input);
stmt.setString(3,input);
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<? extends Object> 增加(String []input) throws SQLException{
List<读者> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("INSERT into 读者 (读者_id,读者_account,读者_password) VALUE (?,?,?)");
for(int i=0;i<input.length;i++)
{
stmt.setString(i+1,input[i]);
}
stmt.executeUpdate();
stmt = con.prepareStatement("select * from 读者 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<? extends Object> 删除(String input) throws SQLException{
List<读者> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("DELETE FROM 读者 where 读者_id = ? ");
stmt.setString(1,input);
stmt.executeUpdate();
stmt = con.prepareStatement("select * from 读者 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<读者> 修改(String []input) throws SQLException{
List<读者> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("UPDATE 读者 SET 读者_account = ?,读者_password = ? WHERE 读者_id = ?");
for(int i = 0;i<input.length;i++)
{
stmt.setString(i+1,input[i]);
}
stmt.executeUpdate();
stmt = con.prepareStatement("select * from 读者 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<读者> result(Connection con,PreparedStatement stmt,ResultSet res) throws SQLException{
List<读者> list = new ArrayList<>();
try{
while(res.next()){
int ID = res.getInt("读者_id");
String 账户 = res.getString("读者_account");
String 密码 = res.getString("读者_password");
读者 reader = new 读者(ID,账户,密码);
list.add(reader);
}
}
catch(SQLException e){
e.printStackTrace();
}
finally
{
dbutils.close(con,stmt,res);
}
return list;
}
}
package 数据.数据实体.图书管理系统;
import 数据.数据表.图书管理系统.dbutils;
import 数据.数据表.图书管理系统.管理员;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class 管理员_操作{
public List<管理员> 搜索all() throws SQLException{
List<管理员> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("select * from 管理员 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<管理员> result(Connection con,PreparedStatement stmt,ResultSet res) throws SQLException{
List<管理员> list = new ArrayList<>();
try{
while(res.next()){
int ID = res.getInt("管理员_id");
String 账户 = res.getString("管理员_account");
String 密码 = res.getString("管理员_password");
管理员 administrator = new 管理员(ID,账户,密码);
list.add(administrator);
}
}
catch(SQLException e){
e.printStackTrace();
}
finally
{
dbutils.close(con,stmt,res);
}
return list;
}
}
package 数据.数据实体.图书管理系统;
import 数据.数据表.图书管理系统.dbutils;
import 数据.数据表.图书管理系统.图书;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class 图书_操作{
public List<图书> 搜索all() throws SQLException{
List<图书> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("select * from 图书 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<图书> 搜索(String input) throws SQLException{
List<图书> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("select * from 图书 where 图书_id = ? OR 图书_name = ? OR 作者= ? OR 出版社 = ? OR 状态 = ?");
stmt.setString(1,input);
stmt.setString(2,input);
stmt.setString(3,input);
stmt.setString(4,input);
stmt.setString(5,input);
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<? extends Object> 增加(String []input) throws SQLException{
List<图书> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("INSERT into 图书 (图书_id,图书_name,作者,出版社,状态) VALUE (?,?,?,?,?)");
for(int i=0;i<input.length;i++)
{
stmt.setString(i+1,input[i]);
}
stmt.executeUpdate();
stmt = con.prepareStatement("select * from 图书 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<? extends Object> 删除(String input) throws SQLException{
List<图书> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("DELETE FROM 图书 where 图书_id = ? ");
stmt.setString(1,input);
stmt.executeUpdate();
stmt = con.prepareStatement("select * from 图书 ");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<图书> 借阅(String input) throws SQLException{
List<图书> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("UPDATE 图书 SET 状态 = ? WHERE 图书_id = ?");
stmt.setString(1,"已借出");
stmt.setString(2,input);
stmt.executeUpdate();
stmt = con.prepareStatement("select * from 图书");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<图书> 归还(String input) throws SQLException{
List<图书> list = new ArrayList<>();
Connection con = dbutils.getConn();
PreparedStatement stmt = null;
ResultSet res = null;
stmt = con.prepareStatement("UPDATE 图书 SET 状态 = ? WHERE 图书_id = ?");
stmt.setString(1,"未借出");
stmt.setString(2,input);
stmt.executeUpdate();
stmt = con.prepareStatement("select * from 图书");
res = stmt.executeQuery();
list = result(con,stmt,res);
return list;
}
public List<图书> result(Connection con,PreparedStatement stmt,ResultSet res) throws SQLException{
List<图书> list = new ArrayList<>();
try{
while(res.next()){
int ID = res.getInt("图书_id");
String 书名 = res.getString("图书_name");
String 作者 = res.getString("作者");
String 出版社 = res.getString("出版社");
String 状态 = res.getString("状态");
图书 book = new 图书(ID,书名,作者,出版社,状态);
list.add(book);
}
}
catch(SQLException e){
e.printStackTrace();
}
finally
{
dbutils.close(con,stmt,res);
}
return list;
}
}
package 图书管理;
import 数据.数据实体.图书管理系统.读者_操作;
import 数据.数据表.图书管理系统.读者;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.List;
public class 读者登录{
private JFrame frame;
private JPanel 读者登录页面;
private JTextField textField1;
private JPasswordField passwordField1;
private JButton 登录Button;
private JButton 注册Button;
private JButton 切换管理员Button;
public 读者登录(){
读者_操作 reader =new 读者_操作();
注册Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
new 读者注册().界面();
frame.dispose();
}
});
登录Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
try{
List<读者> list = reader.搜索all();
String []s = new String[list.size()];
int count=0;
for(int i = 0;i<list.size();i++)
{
s[i]=list.get(i).get账户名();
if(s[i].equals(textField1.getText()))
{
count=i;
}
}
if(!s[count].equals(textField1.getText()))
{
JOptionPane.showMessageDialog(null, "用户名不存在!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(!list.get(count).get密码().equals(passwordField1.getText()))
{
JOptionPane.showMessageDialog(null, "密码输入错误!", "警告",JOptionPane.WARNING_MESSAGE);
}
else
{
new 读者借还书().界面();
frame.dispose();
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
});
切换管理员Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
new 管理员登录().界面();
frame.dispose();
}
});
}
public static void main(String[] args){
界面();
}
public static void 界面()
{
读者登录 读者 = new 读者登录();
读者.frame = new JFrame("DDPL图书系统—读者登录");
读者.frame.setContentPane(读者.读者登录页面);
读者.frame.setSize(400,250);
居中显示(读者.frame,读者.frame.getWidth(),读者.frame.getHeight());
读者.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
读者.frame.pack();
读者.frame.setVisible(true);
}
public static void 居中显示(JFrame frame,int width,int height)
{
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
frame.setLocation((screenWidth - width)/2, (screenHeight-height)/2);
}
}
package 图书管理;
import 数据.数据实体.图书管理系统.读者_操作;
import 数据.数据表.图书管理系统.读者;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.List;
public class 读者注册{
private JFrame frame;
private JPanel 读者注册页面;
private JButton 创建新用户Button;
private JButton 重新输入Button;
private JTextField textField1;
private JTextField textField2;
private JTextField textField3;
public 读者注册(){
读者_操作 reader =new 读者_操作();
创建新用户Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
List<读者> list = null;
try{
list = reader.搜索all();
String []s = new String[list.size()];
String []s2 = new String[list.size()];
int count=0;
for(int i = 0;i<list.size();i++)
{
s[i]=list.get(i).get账户名();
s2[i]=list.get(i).get密码();
if(s[i].equals(textField1.getText()))
{
count=i;
}
}
if(textField1.getText().equals("") || textField2.getText().equals("") || textField3.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "输入不能为空!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(s[count].equals(textField1.getText()))
{
JOptionPane.showMessageDialog(null, "账户名已存在!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(s2[count].equals(textField2.getText()))
{
JOptionPane.showMessageDialog(null, "密码已存在!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(!textField2.getText().equals(textField3.getText()))
{
JOptionPane.showMessageDialog(null, "两次密码输入必须一致!", "警告",JOptionPane.WARNING_MESSAGE);
}
else
{
String []ss={String.valueOf(list.size()+1),textField1.getText(),textField2.getText()};
reader.增加(ss);
new 读者登录().界面();
frame.dispose();
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
});
重新输入Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
textField1.setText("");
textField2.setText("");
textField3.setText("");
}
});
}
public static void main(String[] args){
界面();
}
public static void 界面()
{
读者注册 读者 = new 读者注册();
读者.frame = new JFrame("DDPL图书系统—读者注册");
读者.frame.setContentPane(读者.读者注册页面);
读者.frame.setSize(400,300);
居中显示(读者.frame,读者.frame.getWidth(),读者.frame.getHeight());
读者.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
读者.frame.pack();
读者.frame.setVisible(true);
}
public static void 居中显示(JFrame frame,int width,int height)
{
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
frame.setLocation((screenWidth - width)/2, (screenHeight-height)/2);
}
}
package 图书管理;
import 数据.数据实体.图书管理系统.图书_操作;
import 数据.数据表.图书管理系统.图书;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class 读者借还书{
private JFrame frame;
private JPanel 读者操作界面;
private JButton 查询Button;
private JButton 借阅Button;
private JTextField 编号;
private JTextField 名称;
private JTextField 作者;
private JTextField 出版社;
private JTable table1;
private DefaultTableModel tableModel;
private JButton 归还Button;
private JButton 查询所有Button;
private JButton 刷新Button;
private JRadioButton 未借出RadioButton;
private JRadioButton 已借出RadioButton;
private ButtonGroup group;
private String[] columnNames = { "图书名称", "作者","出版社","状态" };
public 读者借还书(){
图书_操作 book = new 图书_操作();
查询Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
tableModel.setRowCount( 0 );
ArrayList<Object> list = new ArrayList<>();
list.add(编号.getText());
list.add(名称.getText());
list.add(作者.getText());
list.add(出版社.getText());
if(未借出RadioButton.isSelected())
{
list.add("未借出");
}
if(已借出RadioButton.isSelected())
{
list.add("已借出");
}
for(Object o:list)
{
try{
List<图书> list_图书 = book.搜索((String)o);
for(图书 l : list_图书)
{
String[] tableValues = { l.get书名(), l.get作者(),l.get出版社(),l.get状态() };
tableModel.addRow(tableValues);
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
查询所有Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
tableModel.setRowCount( 0 );
try{
List<图书> list_图书 = book.搜索all();
for(图书 l : list_图书)
{
String[] tableValues = { l.get书名(), l.get作者(),l.get出版社(),l.get状态() };
tableModel.addRow(tableValues);
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
});
刷新Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
编号.setText("");
名称.setText("");
作者.setText("");
出版社.setText("");
group.clearSelection();
tableModel.setRowCount( 0 );
}
});
借阅Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
int selectedRow = table1.getSelectedRow();
if (selectedRow != -1) // 判断是否存在被选中行
{
tableModel.setValueAt("已借出",selectedRow, 3);
try{
List<图书> list_图书 = book.搜索((String)tableModel.getValueAt(selectedRow,0));
int count=0;
for(int i=0;i<list_图书.size();i++)
{
if(((String)tableModel.getValueAt(selectedRow,0)).equals(list_图书.get(i).get书名()))
{
count = i;
}
}
List<图书> list_图书2 = book.借阅(Integer.toString(list_图书.get(count).getId()));
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
归还Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
int selectedRow = table1.getSelectedRow();
if (selectedRow != -1) // 判断是否存在被选中行
{
tableModel.setValueAt("未借出",selectedRow, 3);
try{
List<图书> list_图书 = book.搜索((String)tableModel.getValueAt(selectedRow,0));
int count=0;
for(int i=0;i<list_图书.size();i++)
{
if(((String)tableModel.getValueAt(selectedRow,0)).equals(list_图书.get(i).get书名()))
{
count = i;
}
}
List<图书> list_图书2 = book.归还(Integer.toString(list_图书.get(count).getId()));
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
}
public static void main(String[] args){
界面();
}
public static void 界面()
{
读者借还书 读者 = new 读者借还书();
读者.frame = new JFrame("DDPL图书系统—读者借阅");
读者.frame.setContentPane(读者.读者操作界面);
读者.frame.setSize(800,700);
居中显示(读者.frame,读者.frame.getWidth(),读者.frame.getHeight());
读者.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
读者.frame.pack();
读者.frame.setVisible(true);
读者.group = new ButtonGroup();
读者.group.add(读者.未借出RadioButton);
读者.group.add(读者.已借出RadioButton);
}
public static void 居中显示(JFrame frame,int width,int height)
{
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
frame.setLocation((screenWidth - width)/2, (screenHeight-height)/2);
}
private void createUIComponents(){
// TODO: place custom component creation code here
String[][] tableValues = null;
tableModel = new DefaultTableModel(tableValues,columnNames);
table1 = new JTable(tableModel);
table1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置单选模式
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
tcr.setHorizontalAlignment(JLabel.CENTER);//居中显示
table1.setDefaultRenderer(Object.class, tcr);//设置渲染器
JTableHeader tableHeader = table1.getTableHeader();//获取表头
tableHeader.setPreferredSize(new Dimension(tableHeader.getWidth(), 30));// 设置表头大小
tableHeader.setFont(new Font("楷体", Font.BOLD, 20));//设置表头文字属性
tableHeader.setReorderingAllowed(false);// 设置表格列不可重排
table1.setRowHeight(25);//设置行高
table1.setFont(new Font("楷体", 0, 18));//设置单元格文字属性
}
}
package 图书管理;
import 数据.数据实体.图书管理系统.管理员_操作;
import 数据.数据表.图书管理系统.管理员;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.List;
public class 管理员登录{
private JFrame frame;
private JPanel 管理员登录界面;
private JTextField textField1;
private JPasswordField passwordField1;
private JButton 确认Button;
private JButton 重写Button;
private JButton 切换读者Button;
public 管理员登录(){
管理员_操作 administrator = new 管理员_操作();
切换读者Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
new 读者登录().界面();
frame.dispose();
}
});
确认Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
try{
List<管理员> list = administrator.搜索all();
String []s = new String[list.size()];
String []s2 = new String[list.size()];
int count=0;
for(int i = 0;i<list.size();i++)
{
s[i]=list.get(i).get账户名();
s2[i]=list.get(i).get密码();
if(s[i].equals(textField1.getText()))
{
count=i;
}
}
if(!s[count].equals(textField1.getText()))
{
JOptionPane.showMessageDialog(null, "账户名不存在!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(!s2[count].equals(passwordField1.getText()))
{
JOptionPane.showMessageDialog(null, "密码输入有误!", "警告",JOptionPane.WARNING_MESSAGE);
}
else
{
new 图书与读者信息管理().界面();
frame.dispose();
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
});
重写Button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
textField1.setText("");
passwordField1.setText("");
}
});
}
public static void main(String[] args){
界面();
}
public static void 界面()
{
管理员登录 管理员 = new 管理员登录();
管理员.frame = new JFrame("DDPL图书系统—管理员登录");
管理员.frame.setContentPane(管理员.管理员登录界面);
管理员.frame.setSize(400,250);
居中显示(管理员.frame,管理员.frame.getWidth(),管理员.frame.getHeight());
管理员.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
管理员.frame.pack();
管理员.frame.setVisible(true);
}
public static void 居中显示(JFrame frame,int width,int height)
{
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
frame.setLocation((screenWidth - width)/2, (screenHeight-height)/2);
}
}
package 图书管理;
import 数据.数据实体.图书管理系统.图书_操作;
import 数据.数据实体.图书管理系统.读者_操作;
import 数据.数据表.图书管理系统.图书;
import 数据.数据表.图书管理系统.读者;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class 图书与读者信息管理{
private JFrame frame;
private JTabbedPane tabbedPane1;
private JPanel 管理员操作界面;
private JTable 图书表;
private JTextField 图书编号;
private JTextField 图书名称;
private JTextField 作者;
private JTextField 出版社;
private JButton 图书_查询;
private JButton 图书_借阅;
private JButton 图书_归还;
private JButton 图书_查询所有;
private JButton 读者_查询;
private JButton 读者_删除;
private JButton 读者_修改;
private JButton 读者_查询所有;
private JButton 读者_刷新;
private JTable 读者表;
private JTextField 读者编号;
private JTextField 读者账号;
private JTextField 读者密码;
private JButton 图书_删除;
private JButton 图书_刷新;
private JRadioButton 未借出RadioButton;
private JRadioButton 已借出RadioButton;
private JButton 图书_增加;
private JButton 读者_增加;
private ButtonGroup group;
private DefaultTableModel 图书_tableModel;
private String[] 图书_columnNames = { "图书id","图书名称", "作者","出版社","状态" ,"借阅日期","归还日期"};
private DefaultTableModel 读者_tableModel;
private String[] 读者_columnNames = { "读者_id", "读者账户","读者密码" };
public 图书与读者信息管理(){
图书_操作 book = new 图书_操作();
读者_操作 reader = new 读者_操作();
图书_查询.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
图书_tableModel.setRowCount( 0 );
ArrayList<Object> list = new ArrayList<>();
list.add(图书编号.getText());
list.add(图书名称.getText());
list.add(作者.getText());
list.add(出版社.getText());
if(未借出RadioButton.isSelected())
{
list.add("未借出");
}
if(已借出RadioButton.isSelected())
{
list.add("已借出");
}
for(Object o:list)
{
try{
List<图书> list_图书 = book.搜索((String)o);
for(图书 l : list_图书)
{
String[] tableValues = {String.valueOf(l.getId()),l.get书名(), l.get作者(),l.get出版社(),l.get状态(),"","" };
图书_tableModel.addRow(tableValues);
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
图书_查询所有.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
图书_tableModel.setRowCount( 0 );
try{
List<图书> list_图书 = book.搜索all();
for(图书 l : list_图书)
{
String[] tableValues = {String.valueOf(l.getId()),l.get书名(), l.get作者(),l.get出版社(),l.get状态(),"","" };
图书_tableModel.addRow(tableValues);
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
});
图书_刷新.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
图书编号.setText("");
图书名称.setText("");
作者.setText("");
出版社.setText("");
group.clearSelection();
图书_tableModel.setRowCount( 0 );
}
});
图书_借阅.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
int selectedRow = 图书表.getSelectedRow();
if (selectedRow != -1) // 判断是否存在被选中行
{
图书_tableModel.setValueAt("已借出",selectedRow, 4);
try{
book.借阅(((String)图书_tableModel.getValueAt(selectedRow,0)));
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
图书_归还.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
int selectedRow = 图书表.getSelectedRow();
if (selectedRow != -1) // 判断是否存在被选中行
{
图书_tableModel.setValueAt("未借出",selectedRow, 4);
try{
book.归还(((String)图书_tableModel.getValueAt(selectedRow,0)));
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
图书_删除.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
int selectedRow = 图书表.getSelectedRow();
if (selectedRow != -1) // 判断是否存在被选中行
{
try{
book.删除(((String)图书_tableModel.getValueAt(selectedRow,0)));
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
图书_增加.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
List<图书> list_图书 = null;
try{
list_图书 = book.搜索all();
}
catch(SQLException ex){
ex.printStackTrace();
}
String []s = new String[list_图书.size()];
int count=0;
for(int i = 0;i<list_图书.size();i++)
{
s[i]=Integer.toString(list_图书.get(i).getId());
if(s[i].equals(图书编号.getText()))
{
count=i;
}
}
if(图书编号.getText().equals("") || 图书名称.getText().equals("") || 作者.getText().equals("") || 出版社.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "输入不能为空!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(s[count].equals(图书编号.getText()))
{
JOptionPane.showMessageDialog(null, "图书编号已存在!", "警告",JOptionPane.WARNING_MESSAGE);
}
else
{
ArrayList<Object> list = new ArrayList<>();
list.add(图书编号.getText());
list.add(图书名称.getText());
list.add(作者.getText());
list.add(出版社.getText());
if(未借出RadioButton.isSelected())
{
list.add("未借出");
}
if(已借出RadioButton.isSelected())
{
list.add("已借出");
}
String [] str = list.toArray(new String[list.size()]);
try{
book.增加(str);
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
读者_查询.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
读者_tableModel.setRowCount( 0 );
ArrayList<Object> list = new ArrayList<>();
list.add(读者编号.getText());
list.add(读者账号.getText());
list.add(读者密码.getText());
for(Object o:list)
{
try{
List<读者> list_读者 = reader.搜索((String)o);
for(读者 l : list_读者)
{
String[] tableValues = {String.valueOf(l.getId()),l.get账户名(),l.get密码() };
读者_tableModel.addRow(tableValues);
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
读者_查询所有.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
读者_tableModel.setRowCount( 0 );
try{
List<读者> list_读者 = reader.搜索all();
for(读者 l : list_读者)
{
String[] tableValues = {String.valueOf(l.getId()),l.get账户名(),l.get密码() };
读者_tableModel.addRow(tableValues);
}
}
catch(SQLException ex){
ex.printStackTrace();
}
}
});
读者_刷新.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
读者编号.setText("");
读者账号.setText("");
读者密码.setText("");
读者_tableModel.setRowCount( 0 );
}
});
读者_删除.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
int selectedRow = 读者表.getSelectedRow();
if (selectedRow != -1) // 判断是否存在被选中行
{
try{
reader.删除(((String)读者_tableModel.getValueAt(selectedRow,0)));
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
读者_修改.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
读者_tableModel.setRowCount( 0 );
ArrayList<Object> list = new ArrayList<>();
list.add(读者账号.getText());
list.add(读者密码.getText());
list.add(读者编号.getText());
String [] str = list.toArray(new String[list.size()]);
try{
reader.修改(str);
}
catch(SQLException ex){
ex.printStackTrace();
}
}
});
读者_增加.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
List<读者> list_读者 = null;
try{
list_读者 = reader.搜索all();
}
catch(SQLException ex){
ex.printStackTrace();
}
String []s = new String[list_读者.size()];
String []s2 = new String[list_读者.size()];
int count=0,count2 =0;
for(int i = 0;i<list_读者.size();i++)
{
s[i]=Integer.toString(list_读者.get(i).getId());
if(s[i].equals(读者编号.getText()))
{
count=i;
}
s2[i]=(list_读者.get(i).get账户名());
if(s2[i].equals(读者编号.getText()))
{
count2=i;
}
}
if(读者编号.getText().equals("") || 读者账号.getText().equals("") || 读者密码.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "输入不能为空!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(s[count].equals(读者编号.getText()))
{
JOptionPane.showMessageDialog(null, "读者编号已存在!", "警告",JOptionPane.WARNING_MESSAGE);
}
else if(s2[count2].equals(读者账号.getText()))
{
JOptionPane.showMessageDialog(null, "读者账号已存在!", "警告",JOptionPane.WARNING_MESSAGE);
}
else
{
ArrayList<Object> list = new ArrayList<>();
list.add(读者编号.getText());
list.add(读者账号.getText());
list.add(读者密码.getText());
String [] str = list.toArray(new String[list.size()]);
try{
reader.增加(str);
}
catch(SQLException ex){
ex.printStackTrace();
}
}
}
});
}
public static void main(String[] args){
界面();
}
public static void 界面()
{
图书与读者信息管理 管理员 = new 图书与读者信息管理();
管理员.frame = new JFrame("DDPL图书系统—管理员管理");
管理员.frame.setContentPane(管理员.管理员操作界面);
管理员.frame.setSize(800,800);
居中显示(管理员.frame,管理员.frame.getWidth(),管理员.frame.getHeight());
管理员.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
管理员.frame.pack();
管理员.frame.setVisible(true);
管理员.group = new ButtonGroup();
管理员.group.add(管理员.未借出RadioButton);
管理员.group.add(管理员.已借出RadioButton);
}
public static void 居中显示(JFrame frame,int width,int height)
{
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
frame.setLocation((screenWidth - width)/2, (screenHeight-height)/2);
}
private void createUIComponents(){
// TODO: place custom component creation code here
String[][] tableValues = null;
图书_tableModel = new DefaultTableModel(tableValues,图书_columnNames);
图书表 = new JTable(图书_tableModel);
图书表.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置单选模式
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();//单元格渲染器
tcr.setHorizontalAlignment(JLabel.CENTER);//居中显示
图书表.setDefaultRenderer(Object.class, tcr);//设置渲染器
JTableHeader tableHeader = 图书表.getTableHeader();//获取表头
tableHeader.setPreferredSize(new Dimension(tableHeader.getWidth(), 30));// 设置表头大小
tableHeader.setFont(new Font("楷体", Font.BOLD, 20));//设置表头文字属性
tableHeader.setReorderingAllowed(false);// 设置表格列不可重排
图书表.setRowHeight(25);//设置行高
图书表.setFont(new Font("楷体", 0, 18));//设置单元格文字属性
图书表.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
图书表.setAutoscrolls(true);
读者_tableModel = new DefaultTableModel(tableValues,读者_columnNames);
读者表 = new JTable(读者_tableModel);
读者表.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置单选模式
DefaultTableCellRenderer tcr2 = new DefaultTableCellRenderer();//单元格渲染器
tcr2.setHorizontalAlignment(JLabel.CENTER);//居中显示
读者表.setDefaultRenderer(Object.class, tcr2);//设置渲染器
JTableHeader tableHeader2 = 读者表.getTableHeader();//获取表头
tableHeader2.setPreferredSize(new Dimension(tableHeader2.getWidth(), 30));// 设置表头大小
tableHeader2.setFont(new Font("楷体", Font.BOLD, 20));//设置表头文字属性
tableHeader2.setReorderingAllowed(false);// 设置表格列不可重排
读者表.setRowHeight(25);//设置行高
读者表.setFont(new Font("楷体", 0, 18));//设置单元格文字属性
读者表.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
读者表.setAutoscrolls(true);
}
}