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

这是一个使用Java语言和Swing开发的图书管理系统,具备借阅、归还、图书管理等功能,支持数据库MySQL。程序提供了美观的界面和完整源码,适用于中小型图书馆管理。登录模块是程序的入口,包括用户名和密码验证,成功后进入主界面。

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

开发环境

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

系统框架

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

主要功能

项目背景

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

主要功能

java语言编写的图书管理程序-019:主要功能如下:

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

  1. 借阅图书

  1. 归还图书

  1. 修改密码

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

  1. 对用户进行增删改查

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

运行效果

关键代码

/*
 * Login.java
 *
 * Created on __DATE__, __TIME__
 */

package com.agen.library.window;

import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import com.agen.library.factory.DAOFactory;
import com.agen.library.util.GlobalUser;
import com.agen.library.vo.User;


public class Login extends javax.swing.JFrame {

    private static final long serialVersionUID = -2176093732040600809L;

    public Login() {
        super("Library Manager System");
        Image ime = Toolkit.getDefaultToolkit().getImage(
                getClass().getResource("/images/ico.png"));
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        setIconImage(ime);
        initComponents();
        setLocationRelativeTo(null);
        this.setResizable(false);

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    // GEN-BEGIN:initComponents
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jPasswordField1 = new javax.swing.JPasswordField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                formKeyPressed(evt);
            }

            public void keyTyped(java.awt.event.KeyEvent evt) {
                formKeyTyped(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("微软雅黑", 0, 14));
        jLabel2.setText("\u7528\u6237\u540d\uff1a");

        jLabel3.setFont(new java.awt.Font("微软雅黑", 0, 14));
        jLabel3.setText("\u5bc6   \u7801\uff1a");

        jTextField1.setFont(new java.awt.Font("微软雅黑", 0, 14));
        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        jPasswordField1.setFont(new java.awt.Font("微软雅黑", 0, 12));
        jPasswordField1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jPasswordField1KeyTyped(evt);
            }
        });

        jButton1.setBackground(new java.awt.Color(223, 216, 216));
        jButton1.setFont(new java.awt.Font("微软雅黑", 0, 14));
        jButton1.setText("\u767b\u9646");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setBackground(new java.awt.Color(223, 216, 216));
        jButton2.setFont(new java.awt.Font("微软雅黑", 0, 14));
        jButton2.setText("\u53d6\u6d88");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jLabel1.setIcon(new javax.swing.ImageIcon(
                getClass().getResource("/images/login_main.jpg"))); // NOI18N

        jMenu1.setText("File");
        jMenu1.setFont(new java.awt.Font("微软雅黑", 0, 14));

        jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
                java.awt.event.KeyEvent.VK_Q,
                java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem1.setText("Exit");
        jMenuItem1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jMenuItem1MouseClicked(evt);
            }
        });
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Help");
        jMenu2.setFont(new java.awt.Font("微软雅黑", 0, 14));

        jMenuItem2.setText("About");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem2);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jLabel1)
                .addGroup(
                        layout.createSequentialGroup()
                                .addContainerGap()
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.TRAILING,
                                                false)
                                                .addComponent(
                                                        jLabel2,
                                                        javax.swing.GroupLayout.Alignment.LEADING)
                                                .addGroup(
                                                        javax.swing.GroupLayout.Alignment.LEADING,
                                                        layout.createSequentialGroup()
                                                                .addComponent(
                                                                        jLabel3)
                                                                .addPreferredGap(
                                                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                                .addGroup(
                                                                        layout.createParallelGroup(
                                                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                                                .addGroup(
                                                                                        layout.createSequentialGroup()
                                                                                                .addGap(10,
                                                                                                        10,
                                                                                                        10)
                                                                                                .addComponent(
                                                                                                        jButton1)
                                                                                                .addGap(47,
                                                                                                        47,
                                                                                                        47)
                                                                                                .addComponent(
                                                                                                        jButton2))
                                                                                .addComponent(
                                                                                        jPasswordField1)
                                                                                .addComponent(
                                                                                        jTextField1,
                                                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                        197,
                                                                                        Short.MAX_VALUE))
                                                                .addContainerGap()))));
        layout.setVerticalGroup(layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(
                        layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(
                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel2)
                                                .addComponent(
                                                        jTextField1,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        24,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(
                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel3)
                                                .addComponent(
                                                        jPasswordField1,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        23,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(
                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jButton1)
                                                .addComponent(jButton2))
                                .addContainerGap(
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        Short.MAX_VALUE)));

        pack();
    }// </editor-fold>
        // GEN-END:initComponents

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {

        // TODO add your handling code here:
        About.start();
    }

    private void jPasswordField1KeyTyped(java.awt.event.KeyEvent evt) {
        if (evt.getKeyChar() == '\n') {
            String name = jTextField1.getText(); // 获取用户名
            String pass = String.valueOf(jPasswordField1.getPassword());// 获取密码
            User user = null;

            // 未输入用户名
            if (name.equals("") || name == null) {
                JOptionPane.showMessageDialog(this, "用户名不允许为空!", "cuowu", 0);
                return;
            }
            try {
                user = DAOFactory.getIUserDAOInstance().findById(name);
                if (user != null) {
                    if (user.getPass() != null && user.getPass().equals(pass)) {

                        GlobalUser.LOGIN_USER = user; // 记录当前用户

                        // 进入主界面
                        Main.start();
                        this.dispose();
                    } else {
                        JOptionPane.showMessageDialog(this, "用户名或密码错误!");
                        return;
                    }
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if (user == null) {
                JOptionPane.showMessageDialog(this, "用户名或密码错误!", "消息", 0);
                return;
            }

        }

    }

    private void formKeyTyped(java.awt.event.KeyEvent evt) {

    }

    private void formKeyPressed(java.awt.event.KeyEvent evt) {

    }

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        jTextField1.setText("");
        jPasswordField1.setText("");
        jTextField1.requestFocus();

    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String name = jTextField1.getText(); // 获取用户名
        String pass = String.valueOf(jPasswordField1.getPassword());// 获取密码
        User user = null;

        // 未输入用户名
        if (name.equals("")) {
            JOptionPane.showMessageDialog(this, "用户名不允许为空!");
            return;
        }
        try {
            user = DAOFactory.getIUserDAOInstance().findById(name);
            if (user != null) {
                if (user.getPass() != null && user.getPass().equals(pass)) {

                    GlobalUser.LOGIN_USER = user; // 记录当前用户

                    // 进入主界面
                    Main.start();
                    this.dispose();
                } else {
                    JOptionPane.showMessageDialog(this, "用户名或密码错误!", "消息", 0);
                    return;
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (user == null) {
            JOptionPane.showMessageDialog(this, "用户名或密码错误!", "消息", 0);
            return;
        }

    }

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        if (JOptionPane.showConfirmDialog(this, "你确定要退出吗?", "提示",
                JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
            System.exit(0);
        }
    }

    private void jMenuItem1MouseClicked(java.awt.event.MouseEvent evt) {
        System.exit(1);
    }

    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Login().setVisible(true);
            }
        });
    }

    // GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JPasswordField jPasswordField1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration//GEN-END:variables

}
图书馆管理系统使用说明书 配置源程序 附加数据库SQL Server 2000 (1)将TM\05\Database文件夹中的扩展名为db_library_Data.MDF和db_library_Log.LDF的两个文件拷贝到SQL Server安装路径下的Data文件夹中。 (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。 (3)将弹出“附加数据库”对话框,在该对话框中单击【 】按钮,选择所要附加数据库的db_library_Data.MDF文件,单击【确定】按钮,即可完成数据库的附加操作。 发布与运行 (1)将光盘\TM\05\libraryManager文件夹拷贝到MyEclipse的工作空间中。 (2)启动MyEclipse。 (3)选择“文件”/“导入”菜单项,展开“常规”节点,选择“现有项目到工作空间中”子节点,如图1.1所示。 图1.1 “导入”窗口 (4)单击【下一步】按钮,单击【浏览】按钮,选择程序所在目录,然后勾选“将项目复制到工作空间中”复选框,如图1.2所示。 图1.2 “导入”窗口 (5)单击【完成】按钮。 (6)在项目上单击鼠标右键,依次选择“新建”/“文件夹”命令,新建一个“lib”文件夹,然后,将SQL Server 2000数据库驱动文件“msbase.jar、mssqlserver.jar、msutil.jar”拷到该文件夹中。在该文件上单击鼠标右键,选择“构建路径”/“添加至构建路径”命令。 (7)在导入工程的src文件中,找到可执行的主类,在该类上单击鼠标右键,选择“运行方式”/“Java应用程序”项,如图1.3所示,完成程序配置 图1.3 选择菜单项 使用说明 系统介绍 图书馆管理系统图书馆管理工作中不可缺少的部分,它对于图书馆的管理者和使用者都非常重要,所以图书馆管理系统应该为管理者与读者提供充足的信息和快捷的数据处理手段,但长期以来,人们使用传统的人工方式或性能较低的图书馆管理系统管理图书馆的日常事务,操作流程比较繁琐。一个成功的图书馆管理系统应提供快速的图书信息检索功能、快捷的图书借阅、归还流程。从读者与图书馆管理员的角度出发,本着以读者借书、还书快捷、方便的原则,本系统具有以下特点:  确保系统具有良好的系统性能,友好的用户界面。  较高的处理效率,便于使用和维护。  采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期。  系统尽可能简化图书馆管理员的重复工作,提高工作效率。  简化数据查询、统计难度。 操作注意事项 (1)本系统管理员用户名为:tsoft,密码为:111。 (2)图书类别信息和图书信息是不可以删除的。 操作流程 (1)用户输入用户名及密码,单击“登录”按钮,进入图书馆管理界面,如图1.4所示。 图1.4 图书馆管理主界面 (2)单击“基础数据维护”菜单下的“读者信息管理”/“读者信息添加”命令,对读者信息进行添加操作。 (3)单击“基础数据维护”菜单下的“读者信息管理”/“读者修改与删除”命令,对读者信息进行修改及删除操作。 (4)单击“基础数据维护”菜单下的“图书类别管理”/“图书类别添加”命令,对图书类别信息进行添加操作。 (5)单击“基础数据维护”菜单下的“图书类别管理”/“图书类别修改”命令,对图书类别信息进行修改操作。 (6)单击“基础数据维护”菜单下的“图书信息管理”/“图书信息添加”命令,对图书信息进行添加操作。 (7)单击“基础数据维护”菜单下的“图书信息管理”/“图书修改”命令,对图书信息进行查询及修改操作。 (8)单击“新书订购管理”菜单下的“新书订购”命令,对订购新书信息进行添加操作。 (9)单击“新书订购管理”菜单下的“验收新书”命令,对订购的新书信息进行验收操作。 (10)单击“借阅管理”菜单下的“图书借阅”命令,对图书借阅信息进行添加操作。 (11)单击“借阅管理”菜单下的“图书归还”命令,对图书归还信息进行添加操作。 (12)单击“借阅管理”菜单下的“图书搜索”命令,对图书信息进行查询操作。 (13)单击“系统维护”菜单下的“更改口令”命令,对当前管理员的密码进行修改操作。 (14)单击“系统维护”菜单下的“用户管理”/“用户添加”命令,对用户信息进行添加操作。 (15)单击“系统维护”菜单下的“用户管理”/“用户修改与删除”命令,对用户信息进行修改及删除操作。 (16)单击“基础数据维护”菜单下的“退出系统”命令,退出当前操作系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

计算机程序

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

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

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

打赏作者

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

抵扣说明:

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

余额充值