java GUI 图书管理系统

java GUI 图书管理系统

java GUI 图书管理系统

运行环境:
idea jdk1.8 mysql8 tomcat15
总目录:
java GUI 图书管理系统_第1张图片
java GUI 图书管理系统_第2张图片

一、数据库的建立

创建library数据库:
java GUI 图书管理系统_第3张图片

查询代码:

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)
);

二、数据库连接之DBUtils

library.properties:

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用户密码)

DBUtils:

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();
    }
}

三、数据实体类封装

目录:

java GUI 图书管理系统_第4张图片

1.读者

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.密码 = 密码;
    }
}

2.管理员

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.密码 = 密码;
    }
}

3.图书

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.状态 = 状态;
    }
}

4.借还书记录

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.状态 = 状态;
    }
}

四、数据操作功能类

1.读者_操作

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;
    }
}

2.管理员_操作

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;
    }
}

3.图书_操作

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;
    }
}

五、GUI可视化

1.页面设计

读者登录

java GUI 图书管理系统_第5张图片

读者注册

java GUI 图书管理系统_第6张图片

读者借还书

java GUI 图书管理系统_第7张图片

管理员登录

java GUI 图书管理系统_第8张图片

管理员操作

使用tabbedPane分页
java GUI 图书管理系统_第9张图片
java GUI 图书管理系统_第10张图片

2.java代码

读者登录

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);
    }
}

六、效果展示

读者使用

登录

java GUI 图书管理系统_第11张图片

注册

java GUI 图书管理系统_第12张图片

读者使用系统借还书

java GUI 图书管理系统_第13张图片

管理员使用

管理员登录

java GUI 图书管理系统_第14张图片

管理员管理图书及读者信息

java GUI 图书管理系统_第15张图片
java GUI 图书管理系统_第16张图片

你可能感兴趣的:(java,GUI,java,mysql,gui,可视化)