博客
关于我
java图书管理系统(界面版本)
阅读量:585 次
发布时间:2019-03-11

本文共 7992 字,大约阅读时间需要 26 分钟。

Java图书管理系统设计与实现

系统概述

本系统旨在为图书管理提供一个简洁实用的解决方案,涵盖注册登录、图书管理等核心功能。系统采用Java语言搭建,结合Swing界面设计,确保功能全面且易于使用。

功能模块

1. 用户界面设计

系统界面采用简洁设计,主要包含注册、登录、图书管理等功能模块。用户可通过注册登录后,访问图书管理界面,进行添加、删除、修改和查询操作。

2. 注册与登录功能

  • 注册功能:支持账号和密码的注册,确保账号唯一性。
  • 登录功能:通过账号和密码验证用户身份,支持后台管理功能。

3. 图书管理功能

  • 图书列表:展示所有图书信息,支持按编号、名称等条件查询。
  • 图书更新:提供添加、删除、修改功能,确保数据及时更新。

系统核心代码

用户管理

package bookmanage.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import bookmanage.model.User;import bookmanage.utils.DbUtil;public class UserDao {    public User getUserByAccout(String accout) {        Connection connection = DbUtil.getConnection();        String sql = "select accout, pass from t_user where accout=?";        try {            PreparedStatement ps = connection.prepareStatement(sql);            ps.setString(1, accout);            ResultSet rs = ps.executeQuery();            if (rs.next()) {                User user = new User(rs.getString("accout"), rs.getString("pass"));                DbUtil.close(connection, ps);                return user;            }        } catch (SQLException e) {            e.printStackTrace();        }        return null;    }    public boolean insertUser(User user) {        Connection connection = DbUtil.getConnection();        String sql = "insert into t_user (accout, pass) values (?, ?)";        try {            PreparedStatement ps = connection.prepareStatement(sql);            ps.setString(1, user.getAccout());            ps.setString(2, user.getPass());            if (!ps.execute()) {                DbUtil.close(connection, ps);                return true;            }        } catch (SQLException e) {            e.printStackTrace();        }        return false;    }}

图书管理

package bookmanage.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import bookmanage.dao.BookDao;import bookmanage.model.Book;public class CrudBookPanel extends JPanel implements ActionListener {    private JButton addBtn, deleteBtn, updateBtn, findBtn;    private JLabel idLabel, nameLabel, numLabel, priceLabel;    private JTextField idJTextField, nameJTextField, numJTextField, priceJTextField;    private String bookIdText;    private String bookNameText;    private String bookNumText;    private String bookPriceText;    private Integer numBook;    private Float priceBook;    private BookDao bookDao;    public CrudBookPanel() {        bookDao = new BookDao();        addBtn = new JButton("增加图书");        addBtn.addActionListener(this);        addBtn.setActionCommand("addbook");        deleteBtn = new JButton("删除图书");        deleteBtn.addActionListener(this);        deleteBtn.setActionCommand("deletebook");        updateBtn = new JButton("修改图书");        updateBtn.addActionListener(this);        updateBtn.setActionCommand("updatebook");        findBtn = new JButton("查询图书");        findBtn.addActionListener(this);        findBtn.setActionCommand("findbook");        idLabel = new JLabel("图书编号");        nameLabel = new JLabel("图书名称");        priceLabel = new JLabel("图书价格");        numLabel = new JLabel("图书数量");        idJTextField = new JTextField(12);        nameJTextField = new JTextField(12);        numJTextField = new JTextField(12);        priceJTextField = new JTextField(12);        this.setLayout(new GridLayout(6, 2, 2, 2));        this.add(idLabel);        this.add(idJTextField);        this.add(nameLabel);        this.add(nameJTextField);        this.add(priceLabel);        this.add(priceJTextField);        this.add(numLabel);        this.add(numJTextField);        this.add(addBtn);        this.add(deleteBtn);        this.add(updateBtn);        this.add(findBtn);    }    @Override    public void actionPerformed(ActionEvent e) {        if (e.getActionCommand().equals("addbook")) {            addbook();        } else if (e.getActionCommand().equals("deletebook")) {            deleteBook();        } else if (e.getActionCommand().equals("updatebook")) {            updateBook();        } else if (e.getActionCommand().equals("findbook")) {            findBook();        }    }    private void findBook() {        bookIdText = idJTextField.getText().trim();        Book book = bookDao.getBookById(bookIdText);        if (bookIdText.isEmpty()) {            JOptionPane.showMessageDialog(this, "图书编号不能为空");        } else if (book != null) {            try {                nameJTextField.setText(book.getName());                numJTextField.setText(String.valueOf(book.getNum()));                priceJTextField.setText(String.valueOf(book.getPrice()));            } catch (Exception e) {                JOptionPane.showMessageDialog(this, "图书查询异常,请联系管理员");            }        } else {            JOptionPane.showMessageDialog(this, "图书不存在");        }    }    private void updateBook() {        bookIdText = idJTextField.getText().trim();        bookNameText = nameJTextField.getText().trim();        bookNumText = numJTextField.getText().trim();        bookPriceText = priceJTextField.getText().trim();        if (bookIdText.isEmpty() || bookNameText.isEmpty() || bookNumText.isEmpty() || bookPriceText.isEmpty()) {            JOptionPane.showMessageDialog(this, "请输入完整信息");            return;        }        try {            if (bookDao.getBookById(bookIdText) == null) {                JOptionPane.showMessageDialog(this, "输入正确的图书编号");                return;            }            numBook = Integer.parseInt(bookNumText);            priceBook = Float.parseFloat(bookPriceText);            bookDao.updateBook(new Book(bookIdText, bookNameText, numBook, priceBook));            JOptionPane.showMessageDialog(this, "图书修改成功");        } catch (NumberFormatException e) {            JOptionPane.showMessageDialog(this, "输入正确的图书数量和价格");            e.printStackTrace();        }    }    private void deleteBook() {        bookIdText = idJTextField.getText().trim();        if (bookIdText.isEmpty()) {            JOptionPane.showMessageDialog(this, "图书编号不能为空");        } else if (bookDao.getBookById(bookIdText) != null) {            try {                bookDao.deleteBookById(bookIdText);                JOptionPane.showMessageDialog(this, "图书删除成功");            } catch (Exception e) {                JOptionPane.showMessageDialog(this, "图书删除异常,请联系管理员");            }        } else {            JOptionPane.showMessageDialog(this, "图书不存在");        }    }    private void addbook() {        bookIdText = idJTextField.getText().trim();        bookNameText = nameJTextField.getText().trim();        bookNumText = numJTextField.getText().trim();        bookPriceText = priceJTextField.getText().trim();        if (bookIdText.isEmpty() || bookNameText.isEmpty() || bookNumText.isEmpty() || bookPriceText.isEmpty()) {            JOptionPane.showMessageDialog(this, "请输入完整信息");            return;        }        try {            if (bookDao.getBookById(bookIdText) != null) {                JOptionPane.showMessageDialog(this, "图书编号重复");                return;            }            numBook = Integer.parseInt(bookNumText);            priceBook = Float.parseFloat(bookPriceText);            bookDao.insertBook(new Book(bookIdText, bookNameText, numBook, priceBook));            JOptionPane.showMessageDialog(this, "图书增加成功");        } catch (NumberFormatException e) {            JOptionPane.showMessageDialog(this, "输入正确的图书数量和价格");            e.printStackTrace();        }    }}

数据库设计

CREATE TABLE t_book (    id VARCHAR(20) NOT NULL PRIMARY KEY,    name VARCHAR(255) NOT NULL,    num INT(11) NOT NULL,    price FLOAT(10, 2) NOT NULL);CREATE TABLE t_user (    accout VARCHAR(255) NOT NULL PRIMARY KEY,    pass VARCHAR(255) NOT NULL);

如何运行

  • Java环境搭建
  • MySQL数据库安装
  • 创建数据库db_book
  • 执行db_book.sql脚本
  • 在Eclipse中打开项目
  • 运行程序
  • 开源获取

    项目已发布至公众号“Java一号”,请搜索关键词获取。

    注意事项

    • 项目基于Swing,适合学习Java基础和图书管理系统开发。
    • 界面设计简洁,功能实现全面,适合个人学习和小型项目使用。
    • 后续可根据需求扩展功能或美化界面。

    转载地址:http://muytz.baihongyu.com/

    你可能感兴趣的文章
    oracle零碎要点---ip地址问题,服务问题,系统默认密码问题
    查看>>
    oracle零碎要点---oracle em的web访问地址忘了
    查看>>
    Oracle零碎要点---多表联合查询,收集数据库基本资料
    查看>>
    Oracle静默安装
    查看>>
    【Bert101】变压器模型背后的复杂数学【02/4】
    查看>>
    Oracle面试题:Oracle中truncate和delete的区别
    查看>>
    ThreadLocal线程内部存储类
    查看>>
    thinkphp 常用SQL执行语句总结
    查看>>
    Oracle:ORA-00911: 无效字符
    查看>>
    Text-to-Image with Diffusion models的巅峰之作:深入解读 DALL·E 2
    查看>>
    Tensorflow.python.framework.errors_impl.ResourceExhaustedError:无法分配内存[操作:AddV2]
    查看>>
    TCP基本入门-简单认识一下什么是TCP
    查看>>
    tableviewcell 中使用autolayout自适应高度
    查看>>
    Symbolic Aggregate approXimation(SAX,符号聚合近似)介绍-ChatGPT4o作答
    查看>>
    Orcale表被锁
    查看>>
    svn访问报错500
    查看>>
    sum(a.YYSR) over (partition by a.hy_dm) 不需要像group by那样需要分组函数。方便。
    查看>>
    ORCHARD 是什么?
    查看>>
    Struts2中使用Session的两种方法
    查看>>
    order by rand()
    查看>>