Java Swing图书管理系统,功能完善,直接使用 窗体版本-104

今天为大家分享一个java语言编写的图书管理程序-104,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。

主要功能

项目背景

随着社会的进步,信息技术的广泛应用,数字管理的优势日趋显著。针对中小型图书馆或图书室管理落后的情况,设计实现一个图书信息管理系统,通过与计算机的结合使用对中小型图书馆或图书室的各种图书信息进行管理可以给管理员和用户带来以下不同的方便:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工作效率,也是图书馆等部门管理科学化、正规化的重要标志之一。而且计算机管理的成本不断降低。因此,开发一这样的中小型图书管理软件已经很有必要,并且实现研究服务于实践的原则。随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。我国的学校的图书管理也正在逐步与国际接轨。图书管理环节、图书管理方式以及管理的理念都在发生深刻的变化,图书管理工作当然也在变化,因此就要求图书管理工作者学会和掌握计算机应用技术,实现图书管理工作信息化管理,因此很有必须开发一个基于窗体的的图书管理系统。

主要功能

java语言编写的图书管理程序-104,系统分为普通用户和系统管理员。他们的功能分别如下:

普通用户主要功能

  1. 主要是查看库存图书和借阅情况

  1. 借阅图书

  1. 归还图书

  1. 修改密码

系统管理员主要功能

  1. 可以对所有图书进行管理以及对图书进行包括添加、删除、修改的管理

  1. 对用户进行增删改查

3 对图书分类进行增删改查

4 修改管理员密码

5 饼状图图查看图书借阅分布情况

6 查看已经借阅出去的清单

运行效果

关键代码

package view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import utils.DBUtil;

/**
 * 登录界面
 * 
 * @author 何兴旺
 *
 */
public class LogIn extends JFrame {
    private JLabel labTitle = new JLabel("图书信息管理系统登录");
    private Font font = new Font("隶书", Font.BOLD, 34);
    private JButton btnSure = new JButton("登录");
    private JButton btnCancel = new JButton("重置");
    private JButton btnZhuce = new JButton("注册");
    private JPanel panBtn = new JPanel();

    private JLabel labLoginName = new JLabel("用户名:");
    private JLabel labPWD = new JLabel("密    码:");
    private JTextField jtfLoginName;
    private JPasswordField jpfPWD;
    private JPanel panMain = new JPanel();

    public LogIn() {
        setTitle("登录界面");
        // setDefaultLookAndFeelDecorated(true);
        this.setSize(500, 350);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        init();
        add(labTitle, BorderLayout.NORTH);
        add(panBtn, BorderLayout.SOUTH);
        add(panMain, BorderLayout.CENTER);
    }

    private void init() {
        labTitle.setFont(font);
        labTitle.setHorizontalAlignment(JLabel.CENTER);
        labTitle.setForeground(Color.RED);
        // labTitle.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        labTitle.setBackground(Color.BLUE);
        // 单选框
        JRadioButton JB1 = new JRadioButton("管理员登录");
        JRadioButton JB2 = new JRadioButton("用户登录");
        // 加入组,避免出现可以两个都选择的情况
        ButtonGroup bg = new ButtonGroup();
        JB2.setSelected(true);// 默认选中'用户登录'

        jtfLoginName = new JTextField("", 10);
        jpfPWD = new JPasswordField(16);

        labLoginName.setSize(100, 40);
        labLoginName.setLocation(50, 50);
        labLoginName.setHorizontalAlignment(JLabel.RIGHT);
        labPWD.setSize(100, 40);
        labPWD.setLocation(50, 50 + 40 + 10);
        labPWD.setHorizontalAlignment(JLabel.RIGHT);

        jtfLoginName.setSize(200, 40);
        jtfLoginName.setLocation(50 + 100 + 20, 50);
        jpfPWD.setSize(200, 40);
        jpfPWD.setLocation(50 + 100 + 20, 50 + 40 + 10);
        jpfPWD.setEchoChar('*');

        JB1.setSize(90, 20);
        JB1.setLocation(125, 175);
        JB2.setSize(80, 20);
        JB2.setLocation(275, 175);

        btnSure.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (JB2.isSelected()) {
                    Statement stmt = DBUtil.getStatement();
                    String name = jtfLoginName.getText().trim();
                    String pwd = new String(jpfPWD.getPassword()).trim();
                    String sql = "select * from user where username='" + name
                            + "' AND userpsw='" + pwd + "';";
                    try {
                        ResultSet rs = stmt.executeQuery(sql);
                        if (rs.next()) {
                            JOptionPane.showConfirmDialog(LogIn.this,
                                    "登陆成功,欢迎进入!", "登陆成功",
                                    JOptionPane.CLOSED_OPTION);
                            dispose();
                            new LibraryUserFrame().setVisible(true);
                            LibraryUserFrame.USER_NAME = name;
                        } else {
                            JOptionPane.showMessageDialog(null, "账号或密码错误!");
                        }
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                    }
                    /*
                     * UserDao UD = new UserDao(); UserBean uBean =
                     * UD.findUser(name, pwd); if (uBean != null) {
                     * JOptionPane.showConfirmDialog(LogIn.this, "登陆成功,欢迎进入!",
                     * "登陆成功", JOptionPane.CLOSED_OPTION); dispose();
                     * LibraryUserFrame LU = new LibraryUserFrame();
                     * LU.setVisible(true); LibraryUserFrame.USER_NAME = name;
                     * }else { JOptionPane.showMessageDialog(null, "账号或密码错误!");
                     * }
                     */

                } else {
                    Statement stmt = DBUtil.getStatement();
                    String name = jtfLoginName.getText().trim();
                    String pwd = new String(jpfPWD.getPassword()).trim();
                    String sql = "select * from root where rootName='" + name
                            + "' AND rootPWD='" + pwd + "';";
                    try {
                        ResultSet rs = stmt.executeQuery(sql);
                        if (rs.next()) {
                            JOptionPane.showConfirmDialog(LogIn.this,
                                    "登陆成功,欢迎进入!", "登陆成功",
                                    JOptionPane.CLOSED_OPTION);
                            dispose();
                            LibraryRootFrame LR = new LibraryRootFrame();
                            LR.setVisible(true);
                            LibraryRootFrame.USER_NAME = name;
                        } else {
                            JOptionPane.showMessageDialog(null, "账号或密码错误!");
                        }
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                    }
                }
            }
        });

        btnCancel.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                jtfLoginName.setText("");
                jpfPWD.setText("");
            }
        });

        btnZhuce.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                dispose();
                new ZhuceFrame().setVisible(true);
            }
        });

        panBtn.add(btnSure);
        panBtn.add(btnCancel);
        panBtn.add(btnZhuce);
        // 把单选按钮加入组
        bg.add(JB1);
        bg.add(JB2);

        panMain.setLayout(null);
        panMain.add(labLoginName);
        panMain.add(labPWD);
        panMain.add(jtfLoginName);
        panMain.add(jpfPWD);
        panMain.add(JB1);
        panMain.add(JB2);
        ImageIcon img = new ImageIcon("image/ZhuCe.png");
        // 要设置的背景图片
        JLabel imgLabel = new JLabel(img);
        // 将背景图放在标签里。
        panMain.add(imgLabel, new Integer(Integer.MIN_VALUE));
        // 将背景标签添加到jfram的LayeredPane面板里。
        imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
        // 设置背景标签的位置
        Container contain = this.getContentPane();
        ((JPanel) contain).setOpaque(false);
    }

    public static void main(String[] args) {
        new LogIn().setVisible(true);
    }
}

项目总结

经过半个月的熬夜编码,我终于完成图书管理系统的设计与开发,达到了预期的目标。在开发的过程中过程中遇到不少困难,通过查阅相关资料,反复琢磨,请教同学,问题最终都得以解决。虽然系统的基本功能都已实现,但还是存在系统不稳定,操作提示操作不够友好等多个问题尚待解决。这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助,在此对他们表示感谢。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值