博客
关于我
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/

    你可能感兴趣的文章
    Objective-C实现memset函数功能(附完整源码)
    查看>>
    Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
    查看>>
    Objective-C实现merge sort归并排序算法(附完整源码)
    查看>>
    Objective-C实现mergesort归并排序算法(附完整源码)
    查看>>
    Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
    查看>>
    Objective-C实现Miller-Rabin素性测试程序(附完整源码)
    查看>>
    Objective-C实现Miller-Rabin素性测试程序(附完整源码)
    查看>>
    Objective-C实现MinhashLSH算法(附完整源码)
    查看>>
    Objective-C实现MinhashLSH算法(附完整源码)
    查看>>
    Objective-C实现MinHeap最小堆算法(附完整源码)
    查看>>
    Objective-C实现minimum cut最小切割流算法(附完整源码)
    查看>>
    Objective-C实现minimum partition最小分区算法(附完整源码)
    查看>>
    Objective-C实现MSRCR算法(附完整源码)
    查看>>
    Objective-C实现multilayer perceptron classifier多层感知器分类器算法(附完整源码)
    查看>>
    Objective-C实现multiplesThreeAndFive三或五倍数的算法 (附完整源码)
    查看>>
    Objective-C实现n body simulationn体模拟算法(附完整源码)
    查看>>
    Objective-C实现naive string search字符串搜索算法(附完整源码)
    查看>>
    Objective-C实现natural sort自然排序算法(附完整源码)
    查看>>
    Objective-C实现nested brackets嵌套括号算法(附完整源码)
    查看>>
    Objective-C实现nevilles method多项式插值算法(附完整源码)
    查看>>