您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页Java实训:图书馆管理系统(含代码文件,报告)

Java实训:图书馆管理系统(含代码文件,报告)

来源:伴沃教育

代码介绍

- 实体类

  • Book,User

- 工具类

  • AverageUser(用户进入图书界面,按钮监听),BackGroundPanel(背景设置),Database(链接数据库),DropBook,Head,Main,register,UpdatePasswd

- 界面类

  • Admin,LibraryManage,MyFrame

部分代码

主类Main

package 工具类;
import 界面类.MyFrame;
public class Main {

    public static void main(String[] args) {
      new MyFrame().init();
    }
}

MyFrame类

package 界面类;

import 工具类.*;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;

/*
* 初始界面
* */

public class MyFrame extends JFrame  {
public static JFrame f = new JFrame("图书馆管理系统");
public static JButton but3 = new JButton("重置");


        public static void init() {
            //主键预设
                //b1为最大的容器,b2,b3,b4,b5分别为横向排列各模块的容器
                Box b1 = Box.createVerticalBox();
                Box b2 = Box.createHorizontalBox();
                Box b3 = Box.createHorizontalBox();
                Box b4 = Box.createHorizontalBox();
                Box b5 = Box.createHorizontalBox();

                //预设字体及大小
                Font f1 = new Font("楷体", Font.PLAIN, 30);
                Font f2 = new Font("楷体", Font.PLAIN, 35);
                Font f3 = new Font("楷体", Font.PLAIN, 25);
                //创建界面中各个组件
                JLabel j1 = new JLabel("欢迎图书管理系统", JLabel.CENTER);
                JLabel user = new JLabel("账号:", JLabel.CENTER);
                JLabel passwd = new JLabel("密码:", JLabel.CENTER);
                JButton but1 = new JButton("登录");
                JButton but2 = new JButton("取消");
                // JButton but3 = new JButton("重置");
                JButton but4 = new JButton("注册");
                JTextField in1 = new JTextField(20);
                JPasswordField in2 = new JPasswordField(20);

            //主页面背景设置
            JPanel panel = null;
            try {
                panel = new BackGroundPanel(ImageIO.read(new File("D:\\图片\\e二次元\\20221022.3.png")));
            } catch (IOException e) {
                e.printStackTrace();
            }

            //第一个输入框监听键盘回车事件,并检测是否输入了账号和密码
           in1.addKeyListener(new KeyAdapter() {
               @Override
               public void keyTyped(KeyEvent e) {
               //判断是否为回车符
                if(e.getKeyChar() == KeyEvent.VK_ENTER){
                    //如果两个文本框为空,提示输入账号和密码,若不为空则创建验证界面
                    if (in1.getText().length() == 0 && in2.getText().length() == 0)
                        JOptionPane.showMessageDialog(null, "请输入账号和密码", "提示", JOptionPane.INFORMATION_MESSAGE);
                    else if (in2.getText().length() == 0) {
//                        JOptionPane.showMessageDialog(null, "请输入密码", "提示", JOptionPane.INFORMATION_MESSAGE);
                        in2.requestFocus();
                    }else{
                    }
                }
               }
           });

            //第二个输入框监听回车事件,并检测是否输入了账号和密码
            in2.addKeyListener(new KeyAdapter() {
                @Override
                public void keyTyped(KeyEvent e) {
                    //判断按下的按键是否为回车键
                    if (e.getKeyChar() == KeyEvent.VK_ENTER) {
                        //如果两个文本框为空,提示输入账号和密码,若不为空则创建验证界面
                        if (in1.getText().length() == 0 && in2.getText().length() == 0)
                            JOptionPane.showMessageDialog(null, "请输入账号和密码", "提示", JOptionPane.INFORMATION_MESSAGE);
                        else if (in2.getText().length() == 0)
                            JOptionPane.showMessageDialog(null, "请输入密码", "提示", JOptionPane.INFORMATION_MESSAGE);
                        else if (in1.getText().length() == 0)
                            JOptionPane.showMessageDialog(null, "请输入账号", "提示", JOptionPane.INFORMATION_MESSAGE);
                        else{
                            but1.doClick();
                        }
                    }
                }
            });

            //登录按钮的点击事件,两个输入框不为空则判断账号密码
            JPanel finalPanel = panel;
            but1.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    //如果两个文本框为空,提示输入账号和密码,若不为空则创建验证界面
                    if (in1.getText().length() == 0 || in2.getText().length() == 0)
                        JOptionPane.showMessageDialog(null, "请将账号和密码输入完整",
                                "提示", JOptionPane.INFORMATION_MESSAGE);
                    else {

//                        AverageUser.Subpage();
                        String name = in1.getText();//获取账号
                        char[] chars = in2.getPassword();//获取密码
                        String password = new String(chars);
                        int i = Database.QueryUser(name ,password);//获取用户的权限
                        System.out.println(i);
                        switch(i){
                            case 0 :
                                JOptionPane.showMessageDialog(finalPanel,"登录成功!","通知",JOptionPane.INFORMATION_MESSAGE);
                                AverageUser.Subpage();//普通用户的界面
                                Head.UserName = name;
                                f.setVisible(false);
                                break;//普通用户登录页面
                            case 1:
                                JOptionPane.showMessageDialog(finalPanel,"登录成功!","通知",JOptionPane.INFORMATION_MESSAGE);
                                Admin.Subpage();//管理员的界面
                                SwingUtilities.updateComponentTreeUI(MyFrame.f);
                                Head.UserName=name;
                                break;//管理员用户登录页面
                                default:
                                JOptionPane.showMessageDialog(finalPanel, "密码或者账户输入错误", "警告", JOptionPane.WARNING_MESSAGE);
                        }
                    }
                }
            });

            //注册按钮的点击事件,弹出注册界面
            but4.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                  //跳入注册 连接数据库 弹出注册界面
                 Database.CreateAccount();
                register.Subpage();
                }
            });
            //重置按钮设置
            but3.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 点击重置按钮后,清空文本框和密码框
                    in1.setText("");
                    in2.setText("");
                }
            });


            //取消的按钮事件,点击退出程序
            but2.addActionListener(new AbstractAction() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            });

    //代码块  组件安装

            //添加首行欢迎词
            b1.add(Box.createVerticalStrut(50));
            j1.setFont(f2);
            j1.setForeground(Color.pink);
            b5.add(j1);
            b1.add(b5);

            //添加中部登录账号及密码的文字和输入框
            b1.add(Box.createVerticalStrut(60));
            b2.add(Box.createHorizontalStrut(120));
            user.setFont(f1);
            user.setForeground(Color.black);
            b2.add(user);
            in1.setFont(f3);
            b2.add(in1);
            b2.add(Box.createHorizontalStrut(130));
            b1.add(b2);
            b1.add(Box.createVerticalStrut(40));
            b3.add(Box.createHorizontalStrut(120));
            passwd.setFont(f1);
            passwd.setForeground(Color.black);
            b3.add(passwd);
            b3.add(in2);
            b3.add(Box.createHorizontalStrut(130));
            b1.add(b3);

            //下端两个按钮添加至垂直容器
            b1.add(Box.createVerticalStrut(40));
            b4.add(Box.createHorizontalStrut(100));
            but1.setFont(f3);
            but1.setToolTipText("点击登录");
            b4.add(but1);

            //重置按钮
            b4.add(Box.createHorizontalStrut(40));
            but3.setFont(f3);
            but3.setToolTipText("点击重置");
            b4.add(but3);
            //注册按钮
            b4.add(Box.createHorizontalStrut(40));
            but4.setFont(f3);
            but4.setToolTipText("点击重置");
            b4.add(but4);

            //退出按钮
            b4.add(Box.createHorizontalStrut(40));
            but2.setFont(f3);
            but2.setToolTipText("点击退出系统");
            b4.add(but2);
            b4.add(Box.createHorizontalStrut(100));

            b1.add(b4);
            b1.add(Box.createVerticalStrut(100));
           //设置窗口图标
            try {
                f.setIconImage(ImageIO.read(new File("D:\\图片\\卡通\\R-C (4).jpg")));
            } catch (IOException e) {
                e.printStackTrace();
            }


            //竖直排列的box容器添加至自定义背景的panel容器中,并将panel添加至窗体容器f中
            panel.add(b1);
            f.add(panel);
            //设置不可缩放、窗体容器大小、居中排列、显示窗体、退出时结束进程
            f.setResizable(false);
            f.setSize(700, 500);
            f.setLocationRelativeTo(null);
            f.setVisible(true);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

}

Book类

package 实体类;

import java.util.Date;

public class Book {
    private int id;//图书序号
    private String author;//作者
    private String name;//书名
    private String pages;//出版社
    private String price;//价格
    private Date time;//出版时间
    private Double size;//库存数量
    private String type;//分类

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPages() {
        return pages;
    }

    public void setPages(String pages) {
        this.pages = pages;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    public Double getSize() {
        return size;
    }

    public void setSize(Double size) {
        this.size = size;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", author='" + author + '\'' +
                ", name='" + name + '\'' +
                ", pages=" + pages +
                ", price='" + price + '\'' +
                ", time=" + time +
                ", size=" + size +
                ", type='" + type + '\'' +
                '}';
    }
}

运行结果示例

拿去用需要改的地方

Database类,数据库链接代码
passwd要改成自己数据库的代码
url的library1是我已经创建的库,使用时要改成自己的库

      private static final String user = "root";
        private static final String passwd = "mysql";
        private static final String driver = "com.mysql.cj.jdbc.Driver";
        private static final String url = "jdbc:mysql://127.0.0.1:3306/library1?useServerPrepStmts=true&serverTimezone=GMT";

MyFrame类的51行图片路径自己改
类似图片文件路径还有很多地方要改的。

            //主页面背景设置
            JPanel panel = null;
            try {
                panel = new BackGroundPanel(ImageIO.read(new File("D:\\图片\\e二次元\\20221022.3.png")));
            } catch (IOException e) {
                e.printStackTrace();
            }

管理员注册的验证码为1a2b,代码中也有。

    public static boolean AVcode(){

        // 弹出带有文本框的对话框,并获取文本框的内容
        String input = JOptionPane.showInputDialog(null, "请输入注册验证码");
        if (input.equals("1a2b"))return true;
        else return false;

    }

书籍信息都是在数据库表里面添加的,也可以用管理员登录,然后添加书籍。
代码是一年前写的,有些遗漏的东西,也有写报错的地方,但都是小问题。只要看懂代码,完成实训没问题的。不懂得可以问AI,散修要学会自己用AI解决问题。(哈哈哈,加油)[👉]
通过百度网盘分享的文件:java
链接:https://删pan.baidu.com/s/1pMb3GW9NFINCg0C-LpfEzg
提取码:1234

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务