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

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

开发环境

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

系统框架

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

主要功能

项目背景

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

主要模块

管理员模块

用户管理:用户增加,删除,修改

图书分类管理:图书分类增加、图书分类删除、图书分类修改

图书管理:图书增加,图书删除,图书修改

用户借阅图书统计:查看图书馆图书借阅情况

普通用户模块:

用户登陆:通过输入用户名和密码,系统校验进入主界面;否则提示用户名或者密码错,重新输入

用户借阅图书:选择查询出来的图书,进行借阅

用户归还图书:归还借阅的图书

修改密码:修改自己的密码信息

实现效果

1 用户登陆

2 系统主界面

3 图书信息管理界面

4 读者信息管理

5 修改个人信息

6 查找图书

7 借阅图书

8 归还图书

9 管理员管理

核心代码

package cn.zld.dao;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

import cn.zld.pojo.Constants;
import cn.zld.pojo.ManagerInfo;

/**
 * 管理员数据处理
 *
 * @author 
 * @project:图书管理系统
 *
 */
public class ManagerDao {

    public static List<ManagerInfo> managers;

    /**
     * 增加一个新管理员
     *
     * @param manager
     */
    public static boolean registerNewManager(ManagerInfo manager) {
        try {
            if (managers == null) {
                managers = getAllManager();
            }
            for(int i=0;i<managers.size();i++){
                if(managers.get(i).getManagerName().equals(manager.getManagerName())){
                    javax.swing.JOptionPane.showMessageDialog(null, "管理员的名字已存在,无法添加!");
                    return false;
                }
            }
            managers.add(manager);
            File file = new File(Constants.MANAGERFILEPATH);
            FileOutputStream fout = new FileOutputStream(file);
            // 将文件流转成对象流
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fout);
            objectOutputStream.writeObject(managers);
            fout.close();
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 获取所有的管理员
     *
     * @param managers
     */
    @SuppressWarnings("unchecked")
    public static List<ManagerInfo> getAllManager() {
            managers = new ArrayList<ManagerInfo>();
            ManagerInfo manager=new ManagerInfo();//初始化一个管理员,并使得该管理员为超级管理员
            manager.setManagerName("admin");
            manager.setPwd("admin");
            manager.setId(Constants.ID);
            manager.setAge(20);
            manager.setLevel("超级管理员");
            manager.setSex("男");
            managers.add(manager);
            try {
                File file = new File(Constants.MANAGERFILEPATH);
                if (!file.exists()) {// 初始化文件不存在的话则创建该文件
                    System.out.println("文件不存在,创建新初始化文件!");
                    file.getParentFile().mkdirs();
                    file.createNewFile();
                    FileOutputStream fout = new FileOutputStream(file);
                    // 将文件流转成对象流,并写入初始化对象
                    ObjectOutputStream objectOutputStream = new ObjectOutputStream(
                            fout);
                    objectOutputStream.writeObject(managers);
                }
                FileInputStream fin = new FileInputStream(file);
                // 将文件流转成对象流
                ObjectInputStream objectOutputStream = new ObjectInputStream(
                        fin);
                managers = (List) objectOutputStream.readObject();
                fin.close();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        return managers;
    }

    /**
     * 更新管理员的信息
     *
     * @param reader:要更新的管理员对象
     * @return:操作成功返回true,操作失败返回false
     */
    public static boolean updateManager(ManagerInfo manager) {
        // 对其进行异常处理
        try {
            if (managers == null) {
                managers = getAllManager();
            }
            for (int i=0;i<managers.size();i++) {
                ManagerInfo  managerinfo=managers.get(i);
                if (managerinfo.getId() == manager.getId()) {
                    managers.remove(managerinfo);// 将旧对象删除
                    managers.add(manager);// 将新对象加入
                    File file = new File(Constants.MANAGERFILEPATH);
                    FileOutputStream fout = new FileOutputStream(file);
                    // 将文件流转成对象流
                    ObjectOutputStream objectOutputStream = new ObjectOutputStream(
                            fout);
                    objectOutputStream.writeObject(managers);
                    fout.close();
                    managers=getAllManager();
                }
            }
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 删除一个管理员
     *
     * @param manager:要删除的管理员对象
     * @return:操作成功返回true,操作失败返回false
     */
    public static boolean deleteManager(ManagerInfo manager) {
        // 对其进行异常处理
        try {
            if (managers == null) {
                managers = getAllManager();
            }
            for (int i=0;i<managers.size();i++) {
                ManagerInfo  managerinfo=managers.get(i);
                if (managerinfo.getId() == manager.getId()) {
                    managers.remove(managerinfo);// 将旧对象删除
                    File file = new File(Constants.MANAGERFILEPATH);
                    FileOutputStream fout = new FileOutputStream(file);
                    // 将文件流转成对象流
                    ObjectOutputStream objectOutputStream = new ObjectOutputStream(
                            fout);
                    objectOutputStream.writeObject(managers);
                    fout.close();
                }
            }
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return false;
        }
    }
}

package cn.zld.component;

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JPanel;

/**
 * 图片panel控件
 *
 * @author 
 * @project:图书管理系统 
 *
 */
public class Panel extends JPanel {
    private static final long serialVersionUID = -8251916094895167058L;
    /** * 居中 */
    public static final String CENTRE = "Centre";
    /** * 平铺 */
    public static final String TILED = "Tiled";
    /** * 拉伸 */
    public static final String SCALED = "Scaled";
    /** * 背景图片 */
    private Image backgroundImage;
    /** * 背景图片显示模式 */
    private String imageDisplayMode;
    /** * 背景图片显示模式索引(引入此属性有助于必要时扩展) */
    private int modeIndex;

    /** * 构造一个没有背景图片的JImagePane */
    public Panel() {
        this(null, CENTRE);
    }

    /**
     * * 构造一个具有指定背景图片和指定显示模式的JImagePane *
     *
     * @param image
     *            背景图片 *
     * @param modeName
     *            背景图片显示模式
     */
    public Panel(Image image, String modeName) {
        super();
        setBackgroundImage(image);
        setImageDisplayMode(modeName);
    }

    /**
     * * 设置背景图片
     *
     * @param image
     *            背景图片
     */
    public void setBackgroundImage(Image image) {
        this.backgroundImage = image;
        this.repaint();
    }

    /**
     * * 获取背景图片 *
     *
     * @return 背景图片
     */
    public Image getBackgroundImage() {
        return backgroundImage;
    }

    /**
     * * 设置背景图片显示模式 *
     *
     * @param modeName
     *            模式名称,取值仅限于 ImagePane.TILED ImagePane.SCALED ImagePane.CENTRE
     *
     */
    public void setImageDisplayMode(String modeName) {
        if (modeName != null) {
            modeName = modeName.trim(); // 居中
            if (modeName.equalsIgnoreCase(CENTRE)) {
                this.imageDisplayMode = CENTRE;
                modeIndex = 0;
            } // 平铺
            else if (modeName.equalsIgnoreCase(TILED)) {
                this.imageDisplayMode = TILED;
                modeIndex = 1;
            } // 拉伸
            else if (modeName.equalsIgnoreCase(SCALED)) {
                this.imageDisplayMode = SCALED;
                modeIndex = 2;
            }
            this.repaint();
        }
    }

    /**
     * * 获取背景图片显示模式 *
     *
     * @return 显示模式
     */
    public String getImageDisplayMode() {
        return imageDisplayMode;
    }

    /***************************************************************************
     * * 绘制组件
     *
     * @see javax.swing.JComponent#paintComponent(Graphics)
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g); // 如果设置了背景图片则显示
        if (backgroundImage != null) {
            int width = this.getWidth();
            int height = this.getHeight();
            int imageWidth = backgroundImage.getWidth(this);
            int imageHeight = backgroundImage.getHeight(this);
            switch (modeIndex) {
            // 居中
            case 0: {
                int x = (width - imageWidth) / 2;
                int y = (height - imageHeight) / 2;
                g.drawImage(backgroundImage, x, y, this);
                break;
            } // 平铺
            case 1: {
                for (int ix = 0; ix < width; ix += imageWidth) {
                    for (int iy = 0; iy < height; iy += imageHeight) {
                        g.drawImage(backgroundImage, ix, iy, this);
                    }
                }
                break;
            }
                // 拉伸
            case 2: {
                g.drawImage(backgroundImage, 0, 0, width, height, this);
                break;
            }
            }
        }
    }
}

项目总结

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

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java Swing是一种面向对象的GUI工具包,其中包括许多有用的类和方法。借助这些工具,开发者们可以轻松地创建漂亮的图形用户界面(GUI)应用程序。而Java Swing图书管理系统则是一个利用Java Swing开发的管理系统,它用于提高图书馆的管理效率,为读者提供更加方便快捷的借阅、归还、浏览等服务,同时,也为图书馆管理员提供了数据管理、维护信息的工具。 Java Swing图书管理系统的主要功能包括: 1. 图书管理:包括图书的添加、删除、修改、搜索等功能; 2. 读者管理:包括读者信息的添加、删除、修改、查询等功能; 3. 借阅管理:包括借阅记录的添加、删除、修改、查询等功能; 4. 在线查询:提供图书的在线查询服务,包括书名、作者、ISBN等信息的搜索; 5. 统计报表:可生成各种图书馆报表,包括图书统计、读者统计、借阅统计等,提供直观的数据分析。 Java Swing图书管理系统具有操作简单、响应速度快、功能丰富等优点,可适用于各种规模的图书馆,既可降低图书馆管理成本,又可以提高工作效率和读者满意度。 总之,Java Swing图书管理系统是一款强大、实用的软件工具,不仅方便了读者的借还图书,也为图书馆管理员提供了更加智能、高效的信息管理工具。它的不断更新和升级,不仅会带来更加丰富的功能和更好的用户体验,也将成为图书管理行业发展的趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

计算机程序

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

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

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

打赏作者

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

抵扣说明:

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

余额充值