本文共 7992 字,大约阅读时间需要 26 分钟。
本系统旨在为图书管理提供一个简洁实用的解决方案,涵盖注册登录、图书管理等核心功能。系统采用Java语言搭建,结合Swing界面设计,确保功能全面且易于使用。
系统界面采用简洁设计,主要包含注册、登录、图书管理等功能模块。用户可通过注册登录后,访问图书管理界面,进行添加、删除、修改和查询操作。
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);
db_bookdb_book.sql脚本项目已发布至公众号“Java一号”,请搜索关键词获取。
转载地址:http://muytz.baihongyu.com/