Eclipse+Java+Swing实现图书管理系统(详细代码)

目录
  • 一、系统介绍
  • 二、系统展示
    • 1.注册
    • 2.登录
    • 5.管理员端-添加图书类别
    • 6.管理员端-修改图书类别
    • 7.管理员端-添加图书
    • 8.管理员端-修改图书
    • 9.管理员端-管理用户信息
    • 10.管理员端-查询借阅信息
  • 三、部分代码
    • AdminMainFrm.java
    • BookAddFrm.java
    • BookManagerFrm.java
    • BookInfoFrm.java
    • BookTypeAddFrm.java
    • BookTypeManagerFrm.java
    • BorrowDetailFrm.java
    • LoginFrm.java
    • RegisterFrm.java
    • UserBorrowDetail.java
    • UserInfoFrm.java
    • UserMainFrm.java
    • UserManagerFrm.java

一、系统介绍

该系统实现用户注册登录功能。用户端实现书籍查询,借书,还书功能。用户能够查询自己的借书记录。管理员能够上架图书,下架图书,添加图书类别,修改图书类别,删除图书类别,添加图书信息,修改图书信息,修改用户信息,查询图书借阅归还记录。

二、系统展示

1.注册

2.登录

3.用户端-图书查询及借阅

4.用户端-借阅记录及归还

5.管理员端-添加图书类别

6.管理员端-修改图书类别

7.管理员端-添加图书

8.管理员端-修改图书

9.管理员端-管理用户信息

10.管理员端-查询借阅信息

三、部分代码

基本类什么的就不列出来了,直接上页面。

AdminMainFrm.java

package com.sjsq.view;

import java.awt.event.ActionEvent;

import javax.swing.GroupLayout;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;

public class AdminMainFrm extends JFrame {

    private JDesktopPane jD_table;
    private JMenu jMenu1;
    private JMenu jMenu2;
    private JMenu jMenu3;
    private JMenu jMenu4;
    private JMenuBar jMenuBar1;
    private JMenuItem jMenuItem1;
    private JMenuItem jMenuItem2;
    private JMenuItem jMenuItem3;
    private JMenuItem jMenuItem4;
    private JMenuItem jMenuItem5;
    private JMenuItem jMenuItem6;
    private JMenuItem jMenuItem7;
    
    
    public AdminMainFrm() {
        initComponents();
        // 设置位置
        setBounds(100, 200, 1050, 650);
        // 居中显示
        this.setLocationRelativeTo(null);
    }

    private void initComponents() {

        jD_table = new JDesktopPane();
        jMenuBar1 = new JMenuBar();
        jMenu1 = new JMenu();
        jMenu2 = new JMenu();
        jMenuItem1 = new JMenuItem();
        jMenuItem2 = new JMenuItem();
        jMenu3 = new JMenu();
        jMenuItem4 = new JMenuItem();
        jMenuItem5 = new JMenuItem();
        jMenu4 = new JMenu();
        jMenuItem6 = new JMenuItem();
        jMenuItem7 = new JMenuItem();
        jMenuItem3 = new JMenuItem();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("管理员主界面");

        jMenu1.setText("基本数据管理");

        jMenu2.setText("类别管理");
        jMenu2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu2ActionPerformed(evt);
            }

            private void jMenu2ActionPerformed(ActionEvent evt) {
                

            }
        });

        jMenuItem1.setText("图书类别添加");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem1);

        jMenuItem2.setText("图书类别修改");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem2);

        jMenu1.add(jMenu2);

        jMenu3.setText("书籍管理");

        jMenuItem4.setText("书籍添加");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem4);

        jMenuItem5.setText("书籍修改");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem5);

        jMenu1.add(jMenu3);

        jMenu4.setText("用户管理");

        jMenuItem6.setText("用户信息");
        jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem6ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem6);

        jMenuItem7.setText("借还信息");
        jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem7ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem7);

        jMenu1.add(jMenu4);

        jMenuItem3.setText("退出系统");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem3);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addComponent(jD_table, GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addComponent(jD_table, GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE));

        pack();
    }
        

    // 借还信息
    private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {
        BorrowDetailFrm b = new BorrowDetailFrm();
        b.setVisible(true);
        this.jD_table.add(b);
    }

    // 用户信息
    private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {
        UserInfoFrm userInfoFrm = new UserInfoFrm();
        userInfoFrm.setVisible(true);
        this.jD_table.add(userInfoFrm);
    }

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        BookTypeAddFrm addFrm = new BookTypeAddFrm();
        addFrm.setVisible(true);
        this.jD_table.add(addFrm);
    }

    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
        BookManagerFrm bookManagerFrm = new BookManagerFrm();
        bookManagerFrm.setVisible(true);
        this.jD_table.add(bookManagerFrm);

    }

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
        BookAddFrm bookAddFrm = new BookAddFrm();
        bookAddFrm.setVisible(true);
        this.jD_table.add(bookAddFrm);
    }

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
        BookTypeManagerFrm bookTypeManagerFrm = new BookTypeManagerFrm();
        bookTypeManagerFrm.setVisible(true);
        this.jD_table.add(bookTypeManagerFrm);
    }

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
        int i = JOptionPane.showConfirmDialog(null, "确认退出系统");
        if (i == 0) {
            this.dispose();
        }
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AdminMainFrm().setVisible(true);
            }
        });
    }
}

BookAddFrm.java

package com.sjsq.view;

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.table.DefaultTableModel;

import com.sjsq.dao.BookDao;
import com.sjsq.dao.BorrowDetailDao;
import com.sjsq.model.Book;
import com.sjsq.model.BorrowDetail;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;
import com.sjsq.util.TimeUtil;

public class BookInfoFrm extends JInternalFrame {
    
    private JTextField bookIdText;
    private JTextField bookName;
    private JTextField bookNameText;
    private JTable bookTable;
    private JButton jB_borrow;
    private JButton jButton1;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JPanel jPanel1;
    private JScrollPane jScrollPane1;
    
    DbUtil dbUtil = new DbUtil();
    BookDao bookDao = new BookDao();
    BorrowDetailDao borrowDetailDao = new BorrowDetailDao();

    
    public BookInfoFrm() {
        initComponents();
        fillTable(new Book());
        setTitle("书籍信息");
        this.setLocation(200, 50);
    }

    private void fillTable(Book book) {
        DefaultTableModel model = (DefaultTableModel) bookTable.getModel();
        model.setRowCount(0);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            book.setStatus(1);
            ResultSet list = bookDao.list(con, book);
            while (list.next()) {
                Vector rowData = new Vector();
                rowData.add(list.getInt("id"));
                rowData.add(list.getString("book_name"));
                rowData.add(list.getString("type_name"));
                rowData.add(list.getString("author"));
                rowData.add(list.getString("remark"));
                model.addRow(rowData);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    
    private void initComponents() {

        jScrollPane1 = new JScrollPane();
        bookTable = new JTable();
        jPanel1 = new JPanel();
        jLabel1 = new JLabel();
        bookNameText = new JTextField();
        jButton1 = new JButton();
        jB_borrow = new JButton();
        jLabel2 = new JLabel();
        bookIdText = new JTextField();
        jLabel3 = new JLabel();
        bookName = new JTextField();

        setClosable(true);

        bookTable.setModel(new DefaultTableModel(new Object[][] {

        }, new String[] { "编号", "书名", "类型", "作者", "描述" }) {
            boolean[] canEdit = new boolean[] { false, false, false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        bookTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                bookTableMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(bookTable);

        jLabel1.setText("书籍名称:");

        bookNameText.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bookNameTextActionPerformed(evt);
            }
        });

        jButton1.setText("查询");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addGap(42, 42, 42).addComponent(jLabel1).addGap(36, 36, 36)
                        .addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, 130,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 149, Short.MAX_VALUE)
                        .addComponent(jButton1).addGap(45, 45, 45)));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGap(23, 23, 23)
                        .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jButton1).addComponent(jLabel1).addComponent(bookNameText,
                                        GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
                                        GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(30, Short.MAX_VALUE)));

        jB_borrow.setText("借书");
        jB_borrow.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_borrowActionPerformed(evt);
            }
        });

        jLabel2.setText("编号:");

        bookIdText.setEditable(false);

        jLabel3.setText("书名:");

        bookName.setEditable(false);

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(22, 22, 22)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                        .createSequentialGroup().addComponent(jLabel2)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(bookIdText, GroupLayout.PREFERRED_SIZE, 95,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel3)
                        .addGap(18, 18, 18)
                        .addComponent(bookName, GroupLayout.PREFERRED_SIZE, 127,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 102, Short.MAX_VALUE)
                        .addComponent(jB_borrow).addGap(88, 88, 88))
                        .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                                        .addComponent(jPanel1, GroupLayout.Alignment.TRAILING,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jScrollPane1, GroupLayout.Alignment.TRAILING,
                                                GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE))
                                .addContainerGap(38, Short.MAX_VALUE)))));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 225,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel2).addComponent(jLabel3)
                                .addComponent(bookIdText, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(bookName, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(jB_borrow))
                        .addGap(27, 27, 27)));

        pack();
    }
        

    private void jB_borrowActionPerformed(java.awt.event.ActionEvent evt) {
        String bookId = this.bookIdText.getText();
        String bookName = this.bookName.getText();
        if (StringUtil.isEmpty(bookId) || StringUtil.isEmpty(bookName)) {
            JOptionPane.showMessageDialog(null, "请选择相关书籍");
            return;
        }
        BorrowDetail borrowDetail = new BorrowDetail();
        borrowDetail.setUserId(LoginFrm.currentUser.getUserId());
        borrowDetail.setBookId(Integer.parseInt(bookId));
        borrowDetail.setStatus(1);
        borrowDetail.setBorrowTime(TimeUtil.getTime());
        Connection con = null;
        try {
            con = dbUtil.getCon();

            // 先查询是否有该书在借
            ResultSet list = borrowDetailDao.list(con, borrowDetail);
            while (list.next()) {
                JOptionPane.showMessageDialog(null, "该书已在借,请先还再借");
                return;
            }
            int i = borrowDetailDao.add(con, borrowDetail);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "借书成功");
            } else {
                JOptionPane.showMessageDialog(null, "借书失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "借书异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }

    }

    private void bookTableMousePressed(java.awt.event.MouseEvent evt) {
        int row = this.bookTable.getSelectedRow();
        Object bookId = this.bookTable.getValueAt(row, 0);
        Object bookName = this.bookTable.getValueAt(row, 1);
        this.bookIdText.setText(bookId.toString());
        this.bookName.setText(bookName.toString());
    }

    private void bookNameTextActionPerformed(java.awt.event.ActionEvent evt) {
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String bookName = this.bookNameText.getText();
        Book book = new Book();
        book.setBookName(bookName);
        fillTable(book);
    }

}

BookManagerFrm.java

package com.sjsq.view;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.table.DefaultTableModel;

import com.sjsq.dao.BookDao;
import com.sjsq.dao.BookTypeDao;
import com.sjsq.model.Book;
import com.sjsq.model.BookType;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;

public class BookManagerFrm extends JInternalFrame {
    
    private JTextField authorText;
    private JTextField bookId;
    private JTextField bookName;
    private JTextField bookNameText;
    private JTable bookTable;
    private JButton jButton1;
    private JButton jButton2;
    private JComboBox jCB_status;
    private JComboBox jCB_type2;
    private JLabel jLabel1;
    private JLabel jLabel10;
    private JLabel jLabel11;
    private JLabel jLabel3;
    private JLabel jLabel4;
    private JLabel jLabel5;
    private JLabel jLabel6;
    private JLabel jLabel7;
    private JLabel jLabel8;
    private JLabel jLabel9;
    private JPanel jPanel1;
    private JPanel jPanel2;
    private JScrollPane jScrollPane1;
    private JTextField numberText;
    private JTextField priceText;
    private JTextField publishText;
    private JTextField remarkText;
    
    
    DbUtil dbUtil = new DbUtil();
    BookTypeDao bookTypeDao = new BookTypeDao();
    BookDao bookDao = new BookDao();

    
    public BookManagerFrm() {
        initComponents();
        this.jCB_status.addItem("上架");
        this.jCB_status.addItem("下架");
        fillBookTable(new Book());
        fillBookType();
        setTitle("书籍修改");
        this.setLocation(125, 10);
    }

    private void fillBookType() {
        Connection con = null;
        try {
            con = dbUtil.getCon();
            ResultSet list = bookTypeDao.list(con, new BookType());
            while (list.next()) {
                BookType bookType = new BookType();
                bookType.setTypeId(list.getInt("id"));
                bookType.setTypeName(list.getString("type_name"));
                this.jCB_type2.addItem(bookType);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    private void fillBookTable(Book book) {
        DefaultTableModel model = (DefaultTableModel) bookTable.getModel();
        model.setRowCount(0);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            ResultSet resultSet = bookDao.list(con, book);
            while (resultSet.next()) {
                Vector rowData = new Vector();
                rowData.add(resultSet.getInt("id"));
                rowData.add(resultSet.getString("book_name"));
                rowData.add(resultSet.getString("type_name"));
                rowData.add(resultSet.getString("author"));
                rowData.add(resultSet.getDouble("price"));
                rowData.add(resultSet.getInt("number"));
                if (resultSet.getInt("status") == 1) {
                    rowData.add("上架");
                } else {
                    rowData.add("下架");
                }
                model.addRow(rowData);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    
    
    private void initComponents() {

        jPanel1 = new JPanel();
        jLabel1 = new JLabel();
        bookNameText = new JTextField();
        jButton1 = new JButton();
        jScrollPane1 = new JScrollPane();
        bookTable = new JTable();
        jPanel2 = new JPanel();
        jLabel3 = new JLabel();
        bookId = new JTextField();
        jLabel4 = new JLabel();
        bookName = new JTextField();
        jLabel5 = new JLabel();
        authorText = new JTextField();
        jLabel6 = new JLabel();
        publishText = new JTextField();
        jLabel7 = new JLabel();
        priceText = new JTextField();
        jLabel8 = new JLabel();
        numberText = new JTextField();
        jLabel9 = new JLabel();
        jLabel10 = new JLabel();
        jCB_type2 = new JComboBox();
        jLabel11 = new JLabel();
        remarkText = new JTextField();
        jButton2 = new JButton();
        jCB_status = new JComboBox();

        setClosable(true);

        jPanel1.setBorder(BorderFactory.createTitledBorder("查询操作"));

        jLabel1.setText("书名:");

        jButton1.setText("查询");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGap(25, 25, 25).addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, 171,
                                GroupLayout.PREFERRED_SIZE)
                        .addGap(62, 62, 62).addComponent(jButton1).addContainerGap(299, Short.MAX_VALUE)));
        jPanel1Layout
                .setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                                .createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
                                .addComponent(bookNameText, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(jButton1)).addContainerGap(22, Short.MAX_VALUE)));

        bookTable.setModel(new DefaultTableModel(new Object[][] {

        }, new String[] { "编号", "书名", "类别", "作者", "价格", "库存", "状态" }) {
            boolean[] canEdit = new boolean[] { false, false, false, false, false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        bookTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                bookTableMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(bookTable);

        jPanel2.setBorder(BorderFactory.createTitledBorder("书籍操作"));

        jLabel3.setText("编号:");

        bookId.setEditable(false);

        jLabel4.setText("书名:");

        jLabel5.setText("作者:");

        jLabel6.setText("出版:");

        jLabel7.setText("价格:");

        jLabel8.setText("库存:");

        jLabel9.setText("状态:");

        jLabel10.setText("类别:");

        jLabel11.setText("描述:");

        jButton2.setText("修改");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(
                                jPanel2Layout.createSequentialGroup().addGap(26, 26, 26).addGroup(jPanel2Layout
                                        .createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(
                                                jPanel2Layout.createSequentialGroup().addComponent(jLabel9)
                                                        .addPreferredGap(
                                                                LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(jCB_status, 0, 117, Short.MAX_VALUE))
                                        .addGroup(GroupLayout.Alignment.TRAILING,
                                                jPanel2Layout
                                                        .createSequentialGroup().addGroup(jPanel2Layout
                                                                .createParallelGroup(
                                                                        GroupLayout.Alignment.LEADING)
                                                                .addComponent(jLabel3).addComponent(jLabel6))
                                                        .addPreferredGap(
                                                                LayoutStyle.ComponentPlacement.RELATED,
                                                                GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                        .addGroup(jPanel2Layout
                                                                .createParallelGroup(
                                                                        GroupLayout.Alignment.TRAILING,
                                                                        false)
                                                                .addComponent(publishText,
                                                                        GroupLayout.Alignment.LEADING)
                                                                .addComponent(bookId,
                                                                        GroupLayout.Alignment.LEADING,
                                                                        GroupLayout.DEFAULT_SIZE, 117,
                                                                        Short.MAX_VALUE))))
                                        .addGap(39, 39, 39)
                                        .addGroup(jPanel2Layout.createParallelGroup(
                                                GroupLayout.Alignment.LEADING, false)
                                                .addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel10)
                                                        .addGap(27, 27,
                                                                27)
                                                        .addComponent(jCB_type2, 0,
                                                                GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                                .addGroup(GroupLayout.Alignment.TRAILING,
                                                        jPanel2Layout.createSequentialGroup().addComponent(jLabel7)
                                                                .addGap(27, 27, 27).addComponent(priceText))
                                                .addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel4)
                                                        .addGap(27, 27, 27).addComponent(
                                                                bookName, GroupLayout.PREFERRED_SIZE, 108,
                                                                GroupLayout.PREFERRED_SIZE)))
                                        .addGap(18, 18, 18)
                                        .addGroup(jPanel2Layout
                                                .createParallelGroup(GroupLayout.Alignment.LEADING)
                                                .addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel11)
                                                        .addGap(18, 18, 18).addComponent(remarkText,
                                                                GroupLayout.PREFERRED_SIZE, 172,
                                                                GroupLayout.PREFERRED_SIZE))
                                                .addGroup(jPanel2Layout
                                                        .createParallelGroup(GroupLayout.Alignment.TRAILING,
                                                                false)
                                                        .addGroup(GroupLayout.Alignment.LEADING,
                                                                jPanel2Layout.createSequentialGroup()
                                                                        .addComponent(jLabel8).addGap(18, 18, 18)
                                                                        .addComponent(numberText))
                                                        .addGroup(GroupLayout.Alignment.LEADING,
                                                                jPanel2Layout.createSequentialGroup()
                                                                        .addComponent(jLabel5).addGap(20, 20, 20)
                                                                        .addComponent(authorText,
                                                                                GroupLayout.PREFERRED_SIZE,
                                                                                106,
                                                                                GroupLayout.PREFERRED_SIZE))))
                                        .addGap(97, 97, 97))
                                .addGroup(jPanel2Layout.createSequentialGroup().addGap(108, 108, 108)
                                        .addComponent(jButton2)))
                        .addContainerGap()));
        jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup().addGroup(jPanel2Layout
                        .createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel2Layout.createSequentialGroup().addGroup(jPanel2Layout
                                .createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel3)
                                .addComponent(bookId, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                                .addGap(18, 18, 18)
                                .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel6)
                                        .addComponent(publishText, GroupLayout.PREFERRED_SIZE,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel7)
                                        .addComponent(priceText, GroupLayout.PREFERRED_SIZE,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel8).addComponent(numberText,
                                                GroupLayout.PREFERRED_SIZE,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.PREFERRED_SIZE))
                                .addGap(18, 18, 18)
                                .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel9)
                                        .addComponent(jCB_status, GroupLayout.PREFERRED_SIZE,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel10)
                                        .addComponent(jCB_type2, GroupLayout.PREFERRED_SIZE,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel11).addComponent(remarkText,
                                                GroupLayout.PREFERRED_SIZE,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.PREFERRED_SIZE)))
                        .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel4)
                                .addComponent(bookName, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(authorText, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel5)))
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 42, Short.MAX_VALUE)
                        .addComponent(jButton2).addGap(28, 28, 28)));

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(31, 31, 31)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jPanel1, GroupLayout.Alignment.LEADING,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
                                Short.MAX_VALUE)
                        .addComponent(jScrollPane1, GroupLayout.Alignment.LEADING).addComponent(jPanel2,
                                GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 668,
                                Short.MAX_VALUE))
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 186,
                                GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18).addComponent(jPanel2, GroupLayout.DEFAULT_SIZE,
                                GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addContainerGap()));

        pack();
    }

    

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String bookName = this.bookNameText.getText();
        Book book = new Book();
        book.setBookName(bookName);
        fillBookTable(book);
    }

    private void bookTableMousePressed(java.awt.event.MouseEvent evt) {
        int row = bookTable.getSelectedRow();
        Integer bookId = (Integer) bookTable.getValueAt(row, 0);
        Book book = new Book();
        book.setBookId(bookId);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            ResultSet list = bookDao.list(con, book);
            if (list.next()) {
                this.bookId.setText(list.getString("id"));
                this.bookName.setText(list.getString("book_name"));
                this.authorText.setText(list.getString("author"));
                this.publishText.setText(list.getString("publish"));
                this.priceText.setText(list.getString("price"));
                this.numberText.setText(list.getString("number"));
                this.remarkText.setText(list.getString("remark"));
                int status = list.getInt("status");
                if (status == 1) {
                    this.jCB_status.setSelectedIndex(0);
                } else {
                    this.jCB_status.setSelectedIndex(1);
                }
                int typeId = list.getInt("type_id");
                int count = this.jCB_type2.getItemCount();
                for (int i = 0; i < count; i++) {
                    BookType bookType = (BookType) this.jCB_type2.getItemAt(i);
                    if (bookType.getTypeId() == typeId) {
                        this.jCB_type2.setSelectedIndex(i);
                    }
                }
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        String bookName = this.bookName.getText();
        String author = this.authorText.getText();
        String publish = this.publishText.getText();
        String priceStr = this.priceText.getText();
        String numberStr = this.numberText.getText();
        String remark = this.remarkText.getText();
        String bookId = this.bookId.getText();
        if (StringUtil.isEmpty(bookId) || StringUtil.isEmpty(bookName) || StringUtil.isEmpty(author)
                || StringUtil.isEmpty(publish) || StringUtil.isEmpty(priceStr) || StringUtil.isEmpty(numberStr)
                || StringUtil.isEmpty(remark)) {
            JOptionPane.showMessageDialog(null, "请输入相关内容");
            return;
        }
        BookType selectedItem = (BookType) jCB_type2.getSelectedItem();
        Integer typeId = selectedItem.getTypeId();
        int index = jCB_status.getSelectedIndex();

        int number;
        double price;
        try {
            number = Integer.parseInt(numberStr);
            price = new BigDecimal(priceStr).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "参数错误");
            return;
        }
        Book book = new Book();
        book.setBookId(Integer.parseInt(bookId));
        book.setBookName(bookName);
        book.setAuthor(author);
        book.setBookTypeId(typeId);
        book.setNumber(number);
        book.setPrice(price);
        book.setPublish(publish);
        book.setRemark(remark);
        book.setStatus(1);
        if (index == 0) {
            book.setStatus(1);
        } else if (index == 1) {
            book.setStatus(2);
        }
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int i = bookDao.update(con, book);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "修改成功");
            } else {
                JOptionPane.showMessageDialog(null, "修改失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "修改异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }

        fillBookTable(new Book());
    }

}

BookInfoFrm.java

package com.sjsq.view;

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.table.DefaultTableModel;

import com.sjsq.dao.BookDao;
import com.sjsq.dao.BorrowDetailDao;
import com.sjsq.model.Book;
import com.sjsq.model.BorrowDetail;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;
import com.sjsq.util.TimeUtil;

public class BookInfoFrm extends JInternalFrame {
    
    private JTextField bookIdText;
    private JTextField bookName;
    private JTextField bookNameText;
    private JTable bookTable;
    private JButton jB_borrow;
    private JButton jButton1;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JPanel jPanel1;
    private JScrollPane jScrollPane1;
    
    DbUtil dbUtil = new DbUtil();
    BookDao bookDao = new BookDao();
    BorrowDetailDao borrowDetailDao = new BorrowDetailDao();

    
    public BookInfoFrm() {
        initComponents();
        fillTable(new Book());
        setTitle("书籍信息");
        this.setLocation(200, 50);
    }

    private void fillTable(Book book) {
        DefaultTableModel model = (DefaultTableModel) bookTable.getModel();
        model.setRowCount(0);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            book.setStatus(1);
            ResultSet list = bookDao.list(con, book);
            while (list.next()) {
                Vector rowData = new Vector();
                rowData.add(list.getInt("id"));
                rowData.add(list.getString("book_name"));
                rowData.add(list.getString("type_name"));
                rowData.add(list.getString("author"));
                rowData.add(list.getString("remark"));
                model.addRow(rowData);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    
    private void initComponents() {

        jScrollPane1 = new JScrollPane();
        bookTable = new JTable();
        jPanel1 = new JPanel();
        jLabel1 = new JLabel();
        bookNameText = new JTextField();
        jButton1 = new JButton();
        jB_borrow = new JButton();
        jLabel2 = new JLabel();
        bookIdText = new JTextField();
        jLabel3 = new JLabel();
        bookName = new JTextField();

        setClosable(true);

        bookTable.setModel(new DefaultTableModel(new Object[][] {

        }, new String[] { "编号", "书名", "类型", "作者", "描述" }) {
            boolean[] canEdit = new boolean[] { false, false, false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        bookTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                bookTableMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(bookTable);

        jLabel1.setText("书籍名称:");

        bookNameText.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bookNameTextActionPerformed(evt);
            }
        });

        jButton1.setText("查询");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addGap(42, 42, 42).addComponent(jLabel1).addGap(36, 36, 36)
                        .addComponent(bookNameText, GroupLayout.PREFERRED_SIZE, 130,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 149, Short.MAX_VALUE)
                        .addComponent(jButton1).addGap(45, 45, 45)));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGap(23, 23, 23)
                        .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jButton1).addComponent(jLabel1).addComponent(bookNameText,
                                        GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
                                        GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(30, Short.MAX_VALUE)));

        jB_borrow.setText("借书");
        jB_borrow.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_borrowActionPerformed(evt);
            }
        });

        jLabel2.setText("编号:");

        bookIdText.setEditable(false);

        jLabel3.setText("书名:");

        bookName.setEditable(false);

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(22, 22, 22)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                        .createSequentialGroup().addComponent(jLabel2)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(bookIdText, GroupLayout.PREFERRED_SIZE, 95,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel3)
                        .addGap(18, 18, 18)
                        .addComponent(bookName, GroupLayout.PREFERRED_SIZE, 127,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 102, Short.MAX_VALUE)
                        .addComponent(jB_borrow).addGap(88, 88, 88))
                        .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                                        .addComponent(jPanel1, GroupLayout.Alignment.TRAILING,
                                                GroupLayout.DEFAULT_SIZE,
                                                GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jScrollPane1, GroupLayout.Alignment.TRAILING,
                                                GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE))
                                .addContainerGap(38, Short.MAX_VALUE)))));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 225,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel2).addComponent(jLabel3)
                                .addComponent(bookIdText, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(bookName, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(jB_borrow))
                        .addGap(27, 27, 27)));

        pack();
    }
        

    private void jB_borrowActionPerformed(java.awt.event.ActionEvent evt) {
        String bookId = this.bookIdText.getText();
        String bookName = this.bookName.getText();
        if (StringUtil.isEmpty(bookId) || StringUtil.isEmpty(bookName)) {
            JOptionPane.showMessageDialog(null, "请选择相关书籍");
            return;
        }
        BorrowDetail borrowDetail = new BorrowDetail();
        borrowDetail.setUserId(LoginFrm.currentUser.getUserId());
        borrowDetail.setBookId(Integer.parseInt(bookId));
        borrowDetail.setStatus(1);
        borrowDetail.setBorrowTime(TimeUtil.getTime());
        Connection con = null;
        try {
            con = dbUtil.getCon();

            // 先查询是否有该书在借
            ResultSet list = borrowDetailDao.list(con, borrowDetail);
            while (list.next()) {
                JOptionPane.showMessageDialog(null, "该书已在借,请先还再借");
                return;
            }
            int i = borrowDetailDao.add(con, borrowDetail);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "借书成功");
            } else {
                JOptionPane.showMessageDialog(null, "借书失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "借书异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }

    }

    private void bookTableMousePressed(java.awt.event.MouseEvent evt) {
        int row = this.bookTable.getSelectedRow();
        Object bookId = this.bookTable.getValueAt(row, 0);
        Object bookName = this.bookTable.getValueAt(row, 1);
        this.bookIdText.setText(bookId.toString());
        this.bookName.setText(bookName.toString());
    }

    private void bookNameTextActionPerformed(java.awt.event.ActionEvent evt) {
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String bookName = this.bookNameText.getText();
        Book book = new Book();
        book.setBookName(bookName);
        fillTable(book);
    }
}

BookTypeAddFrm.java

package com.sjsq.view;

import java.sql.Connection;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import com.sjsq.dao.BookTypeDao;
import com.sjsq.model.BookType;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;

public class BookTypeAddFrm extends JInternalFrame {
    
    private JButton jButton1;
    private JButton jButton2;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JScrollPane jScrollPane1;
    private JTextField typeNameText;
    private JTextArea typeRemarkTtext;
    
    DbUtil dbUtil = new DbUtil();
    BookTypeDao bookTypeDao = new BookTypeDao();

    
    public BookTypeAddFrm() {
        initComponents();
        setTitle("图书类别添加");
        this.setLocation(200, 50);
    }

    
    private void initComponents() {

        jLabel1 = new JLabel();
        jLabel2 = new JLabel();
        jButton1 = new JButton();
        typeNameText = new JTextField();
        jScrollPane1 = new JScrollPane();
        typeRemarkTtext = new JTextArea();
        jButton2 = new JButton();

        setClosable(true);

        jLabel1.setText("图书类别名称:");

        jLabel2.setText("类别说明:");

        jButton1.setText("添加");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        typeRemarkTtext.setColumns(20);
        typeRemarkTtext.setRows(5);
        jScrollPane1.setViewportView(typeRemarkTtext);

        jButton2.setText("重置");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addGap(49, 49, 49)
                        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                                .addGroup(layout.createSequentialGroup().addComponent(jLabel2).addGap(18, 18, 18)
                                        .addComponent(jScrollPane1))
                                .addGroup(layout.createSequentialGroup().addComponent(jLabel1).addGap(18, 18, 18)
                                        .addComponent(typeNameText, GroupLayout.PREFERRED_SIZE, 241,
                                                GroupLayout.PREFERRED_SIZE))
                                .addGroup(layout.createSequentialGroup().addComponent(jButton1).addGap(53, 53, 53)
                                        .addComponent(jButton2)))
                        .addGap(179, 179, 179)));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(35, 35, 35)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
                        .addComponent(typeNameText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addGap(43, 43, 43)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(jLabel2)
                        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 134,
                                GroupLayout.PREFERRED_SIZE))
                .addGap(41, 41, 41).addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton1).addComponent(jButton2))
                .addContainerGap(62, Short.MAX_VALUE)));

        pack();
    }
        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String typeName = this.typeNameText.getText();
        String typeRemark = this.typeRemarkTtext.getText();
        if (StringUtil.isEmpty(typeName) || StringUtil.isEmpty(typeRemark)) {
            JOptionPane.showMessageDialog(null, "请输入相关信息");
            return;
        }
        BookType bookType = new BookType();
        bookType.setTypeName(typeName);
        bookType.setRemark(typeRemark);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int i = bookTypeDao.add(con, bookType);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "添加成功");
                reset();
            } else if (i == 2) {
                JOptionPane.showMessageDialog(null, "添加失败,类别已存在");
            } else {
                JOptionPane.showMessageDialog(null, "添加失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    private void reset() {
        this.typeNameText.setText("");
        this.typeRemarkTtext.setText("");
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        reset();
    }

}

BookTypeManagerFrm.java

package com.sjsq.view;

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.table.DefaultTableModel;

import com.sjsq.dao.BookTypeDao;
import com.sjsq.model.BookType;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;

public class BookTypeManagerFrm extends JInternalFrame {
    
    private JButton jButton1;
    private JButton jButton2;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JPanel jPanel1;
    private JScrollPane jScrollPane1;
    private JTextField typeIdText;
    private JTextField typeNameText;
    private JTextField typeRemarkText;
    private JTable typeTable;
    
    
    DbUtil dbUtil = new DbUtil();
    BookTypeDao bookTypeDao = new BookTypeDao();

    
    public BookTypeManagerFrm() {
        initComponents();
        fillTable();
        setTitle("图书类别修改");
        this.setLocation(200, 30);
    }

    private void fillTable() {
        DefaultTableModel model = (DefaultTableModel) typeTable.getModel();
        model.setRowCount(0);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            ResultSet list = bookTypeDao.list(con, new BookType());
            while (list.next()) {
                Vector rowData = new Vector();
                rowData.add(list.getInt("id"));
                rowData.add(list.getString("type_name"));
                rowData.add(list.getString("remark"));
                model.addRow(rowData);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }
    
    private void initComponents() {

        jScrollPane1 = new JScrollPane();
        typeTable = new JTable();
        jPanel1 = new JPanel();
        jLabel1 = new JLabel();
        jLabel2 = new JLabel();
        jLabel3 = new JLabel();
        typeIdText = new JTextField();
        typeNameText = new JTextField();
        typeRemarkText = new JTextField();
        jButton1 = new JButton();
        jButton2 = new JButton();

        setClosable(true);

        typeTable.setModel(new DefaultTableModel(new Object[][] {

        }, new String[] { "编号", "类别名称", "类别描述" }) {
            boolean[] canEdit = new boolean[] { false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        typeTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                typeTableMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(typeTable);

        jPanel1.setBorder(BorderFactory.createTitledBorder("表单操作"));
        jPanel1.setToolTipText("");

        jLabel1.setText("编号:");

        jLabel2.setText("类别名称:");

        jLabel3.setText("描述:");

        typeIdText.setEditable(false);

        jButton1.setText("修改");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("删除");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                        .createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createSequentialGroup().addGap(22, 22, 22).addGroup(jPanel1Layout
                                .createParallelGroup(GroupLayout.Alignment.LEADING, false)
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel3).addGap(18, 18, 18)
                                        .addComponent(typeRemarkText))
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel1).addGap(18, 18, 18)
                                        .addComponent(typeIdText, GroupLayout.PREFERRED_SIZE, 123,
                                                GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addGroup(jPanel1Layout
                                                .createParallelGroup(GroupLayout.Alignment.LEADING)
                                                .addComponent(jButton2)
                                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel2)
                                                        .addGap(18, 18, 18).addComponent(typeNameText,
                                                                GroupLayout.PREFERRED_SIZE, 133,
                                                                GroupLayout.PREFERRED_SIZE))))))
                        .addGroup(jPanel1Layout.createSequentialGroup().addGap(41, 41, 41).addComponent(jButton1)))
                        .addContainerGap(43, Short.MAX_VALUE)));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                        .createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel1).addComponent(jLabel2).addComponent(typeNameText,
                                        GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
                                        GroupLayout.PREFERRED_SIZE))
                        .addComponent(typeIdText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                        .addGap(27, 27, 27)
                        .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel3).addComponent(typeRemarkText,
                                        GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
                                        GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 41, Short.MAX_VALUE)
                        .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jButton1).addComponent(jButton2))
                        .addContainerGap()));

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(42, 42, 42)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                        .addComponent(jPanel1, GroupLayout.Alignment.LEADING,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
                                Short.MAX_VALUE)
                        .addComponent(jScrollPane1, GroupLayout.Alignment.LEADING,
                                GroupLayout.PREFERRED_SIZE, 452, GroupLayout.PREFERRED_SIZE))
                .addContainerGap(49, Short.MAX_VALUE)));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addContainerGap()
                        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 137,
                                GroupLayout.PREFERRED_SIZE)
                        .addGap(51, 51, 51)
                        .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(30, Short.MAX_VALUE)));

        pack();
    }
        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        String typeId = this.typeIdText.getText();
        if (StringUtil.isEmpty(typeId)) {
            JOptionPane.showMessageDialog(null, "请选择相关信息");
            return;
        }
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int i = bookTypeDao.delete(con, typeId);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "删除成功");
                fillTable();
            } else if (i == 2) {
                JOptionPane.showMessageDialog(null, "删除失败-类别最少保留一个");
            } else if (i == 3) {
                JOptionPane.showMessageDialog(null, "删除失败-该类别下有书籍");
            } else {
                JOptionPane.showMessageDialog(null, "删除失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "删除异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String typeId = this.typeIdText.getText();
        String typeName = this.typeNameText.getText();
        String typeRemark = this.typeRemarkText.getText();
        if (StringUtil.isEmpty(typeName) || StringUtil.isEmpty(typeRemark)) {
            JOptionPane.showMessageDialog(null, "请输入相关信息");
            return;
        }
        BookType bookType = new BookType();
        bookType.setTypeId(Integer.parseInt(typeId));
        bookType.setTypeName(typeName);
        bookType.setRemark(typeRemark);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int i = bookTypeDao.update(con, bookType);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "修改成功");
                fillTable();
            } else {
                JOptionPane.showMessageDialog(null, "修改失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "修改异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    private void typeTableMousePressed(java.awt.event.MouseEvent evt) {
        int row = this.typeTable.getSelectedRow();
        this.typeIdText.setText(typeTable.getValueAt(row, 0).toString());
        this.typeNameText.setText(typeTable.getValueAt(row, 1).toString());
        this.typeRemarkText.setText(typeTable.getValueAt(row, 2).toString());
    }

}

BorrowDetailFrm.java

package com.sjsq.view;

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.GroupLayout;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import com.sjsq.dao.BorrowDetailDao;
import com.sjsq.model.BorrowDetail;
import com.sjsq.util.DbUtil;
import com.sjsq.util.TimeUtil;

public class BorrowDetailFrm extends JInternalFrame {
    
    private JTable detailTable;
    private JScrollPane jScrollPane1;
    
    
    DbUtil dbUtil = new DbUtil();
    BorrowDetailDao borrowDetailDao = new BorrowDetailDao();

    
    public BorrowDetailFrm() {
        initComponents();
        fillTable(new BorrowDetail());
        setTitle("借还信息");
        this.setLocation(200, 50);
    }

    private void fillTable(BorrowDetail borrowDetail) {
        DefaultTableModel model = (DefaultTableModel) detailTable.getModel();
        model.setRowCount(0);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            ResultSet list = borrowDetailDao.list(con, borrowDetail);
            while (list.next()) {
                Vector rowData = new Vector();
                rowData.add(list.getString("username"));
                rowData.add(list.getString("book_name"));
                int status = list.getInt("status");
                if (status == 1) {
                    rowData.add("在借");
                } else {
                    rowData.add("已还");
                }
                rowData.add(TimeUtil.getDateByTime(list.getLong("borrow_time")));
                if (status == 2) {
                    rowData.add(TimeUtil.getDateByTime(list.getLong("return_time")));
                }
                model.addRow(rowData);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    
    private void initComponents() {

        jScrollPane1 = new JScrollPane();
        detailTable = new JTable();

        setClosable(true);

        detailTable.setModel(new DefaultTableModel(new Object[][] {

        }, new String[] { "借书人", "书名", "状态", "借书时间", "还书时间" }) {
            boolean[] canEdit = new boolean[] { false, false, false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        jScrollPane1.setViewportView(detailTable);

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addContainerGap()
                        .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 700, Short.MAX_VALUE)
                        .addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout
                        .createSequentialGroup().addContainerGap().addComponent(jScrollPane1,
                                GroupLayout.PREFERRED_SIZE, 366, GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(25, Short.MAX_VALUE)));

        pack();
    }
        
}

LoginFrm.java

package com.sjsq.view;

import java.sql.Connection;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.WindowConstants;

import com.sjsq.dao.UserDao;
import com.sjsq.model.User;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;

public class LoginFrm extends JFrame {
    public static User currentUser;
    private JButton jB_login;
    private JButton jB_reset;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JTextField passwordText;
    private JComboBox role;
    private JTextField userNameText;
    
    UserDao userDao = new UserDao();
    DbUtil dbUtil = new DbUtil();

    
    public LoginFrm() {
        initComponents();
        this.role.addItem("学生");
        this.role.addItem("管理员");
        this.setLocationRelativeTo(null);
    }

    
    private void initComponents() {

        jLabel1 = new JLabel();
        jLabel2 = new JLabel();
        jLabel3 = new JLabel();
        jB_login = new JButton();
        jB_reset = new JButton();
        userNameText = new JTextField();
        passwordText = new JTextField();
        role = new JComboBox();

        setTitle("用户登录");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        jLabel1.setText("账号:");

        jLabel2.setText("密码:");

        jLabel3.setText("角色:");

        jB_login.setText("登录");
        jB_login.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_loginActionPerformed(evt);
            }
        });

        jB_reset.setText("重置");
        jB_reset.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_resetActionPerformed(evt);
            }
        });

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(59, 59, 59)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup().addComponent(jB_login).addGap(87, 87, 87)
                                .addComponent(jB_reset))
                        .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                                        .addComponent(jLabel3).addComponent(jLabel2).addComponent(jLabel1))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                                        .addComponent(userNameText, GroupLayout.DEFAULT_SIZE, 150,
                                                Short.MAX_VALUE)
                                        .addComponent(passwordText)
                                        .addComponent(role, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                .addContainerGap(137, Short.MAX_VALUE)));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(49, 49, 49)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
                        .addComponent(userNameText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addGap(45, 45, 45)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(jLabel2)
                        .addComponent(passwordText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addGap(33, 33, 33)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel3)
                        .addComponent(role, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 42, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jB_login)
                        .addComponent(jB_reset))
                .addGap(37, 37, 37)));

        pack();
    }

    

    private void jB_loginActionPerformed(java.awt.event.ActionEvent evt) {
        String userName = this.userNameText.getText();
        String password = this.passwordText.getText();
        int index = this.role.getSelectedIndex();
        if (StringUtil.isEmpty(userName) || StringUtil.isEmpty(password)) {
            JOptionPane.showMessageDialog(null, "请输入相关信息");
            return;
        }
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);
        if (index == 0) {
            user.setRole(1);
        } else {
            user.setRole(2);
        }
        Connection con = null;
        try {
            con = dbUtil.getCon();
            User login = userDao.login(con, user);
            currentUser = login;
            if (login == null) {
                JOptionPane.showMessageDialog(null, "登录失败");
            } else {
                // 角色 1普通 2管理员
                if (index == 0) {
                    // 学生
                    this.dispose();
                    new UserMainFrm().setVisible(true);
                } else {
                    // 管理员
                    
                    this.dispose();
                    new AdminMainFrm().setVisible(true);
                }
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "登录异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }

    }

    private void reset() {
        this.userNameText.setText("");
        this.passwordText.setText("");
    }

    private void jB_resetActionPerformed(java.awt.event.ActionEvent evt) {
        reset();
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LoginFrm().setVisible(true);
            }
        });
    }

}

RegisterFrm.java

package com.sjsq.view;

import java.sql.Connection;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.WindowConstants;

import com.sjsq.dao.UserDao;
import com.sjsq.model.User;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;

public class RegisterFrm extends JFrame {
    
    private JButton jButton1;
    private JButton jButton2;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JTextField passwordText;
    private JTextField userNameText;
    
    
    DbUtil dbUtil = new DbUtil();
    UserDao userDao = new UserDao();

    
    public RegisterFrm() {
        initComponents();
        this.setLocationRelativeTo(null);
    }

    
    private void initComponents() {

        jLabel1 = new JLabel();
        jLabel2 = new JLabel();
        jButton1 = new JButton();
        jButton2 = new JButton();
        userNameText = new JTextField();
        passwordText = new JTextField();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("用户注册");
        setResizable(false);

        jLabel1.setText("账号:");

        jLabel2.setText("密码:");

        jButton1.setText("注册");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("重置");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(60, 60, 60)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup().addComponent(jButton1).addGap(77, 77, 77)
                                .addComponent(jButton2))
                        .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                                        .addComponent(jLabel1).addComponent(jLabel2))
                                .addGap(37, 37, 37)
                                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
                                        .addComponent(passwordText).addComponent(userNameText,
                                                GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE))))
                .addContainerGap(123, Short.MAX_VALUE)));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(49, 49, 49)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
                        .addComponent(userNameText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addGap(48, 48, 48)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel2)
                        .addComponent(passwordText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jButton1)
                        .addComponent(jButton2))
                .addGap(64, 64, 64)));

        pack();
    }
        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String userName = this.userNameText.getText();
        String password = this.passwordText.getText();
        if (StringUtil.isEmpty(userName) || StringUtil.isEmpty(password)) {
            JOptionPane.showMessageDialog(null, "请输入相关信息");
            return;
        }
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);
        user.setRole(1);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int i = userDao.addUser(con, user);
            if (i == 2) {
                JOptionPane.showMessageDialog(null, "该用户名已存在,请重新注册");
            } else if (i == 0) {
                JOptionPane.showMessageDialog(null, "注册失败");
            } else {
                JOptionPane.showMessageDialog(null, "注册成功");
                this.dispose();
                new LoginFrm().setVisible(true);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    private void reset() {
        this.userNameText.setText("");
        this.passwordText.setText("");
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        reset();
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new RegisterFrm().setVisible(true);
            }
        });
    }

}

UserBorrowDetail.java

package com.sjsq.view;

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.table.DefaultTableModel;

import com.sjsq.dao.BorrowDetailDao;
import com.sjsq.model.BorrowDetail;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;
import com.sjsq.util.TimeUtil;

public class UserBorrowDetail extends JInternalFrame {
    
    private JTextField borrowIdText;
    private JTable borrowTbale;
    private JButton jB_return;
    private JLabel jLabel1;
    private JScrollPane jScrollPane1;
    
    
    DbUtil dbUtil = new DbUtil();
    BorrowDetailDao borrowDetailDao = new BorrowDetailDao();

    
    public UserBorrowDetail() {
        initComponents();
        fillTable(new BorrowDetail());
        this.jB_return.setVisible(false);
        setTitle("借还信息");
        this.setLocation(200, 50);
    }

    private void fillTable(BorrowDetail borrowDetail) {
        DefaultTableModel model = (DefaultTableModel) borrowTbale.getModel();
        model.setRowCount(0);
        Integer userId = LoginFrm.currentUser.getUserId();
        Connection con = null;
        try {
            con = dbUtil.getCon();
            borrowDetail.setUserId(userId);
            ResultSet list = borrowDetailDao.list(con, borrowDetail);
            while (list.next()) {
                Vector rowData = new Vector();
                rowData.add(list.getInt("id"));
                rowData.add(list.getString("book_name"));
                int status = list.getInt("status");
                if (status == 1) {
                    rowData.add("在借");
                }
                if (status == 2) {
                    rowData.add("已还");
                }
                rowData.add(TimeUtil.getDateByTime(list.getLong("borrow_time")));
                if (status == 2) {
                    rowData.add(TimeUtil.getDateByTime(list.getLong("return_time")));
                }
                model.addRow(rowData);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }
    
    private void initComponents() {

        jScrollPane1 = new JScrollPane();
        borrowTbale = new JTable();
        jLabel1 = new JLabel();
        borrowIdText = new JTextField();
        jB_return = new JButton();

        setClosable(true);

        borrowTbale.setModel(new DefaultTableModel(new Object[][] {

        }, new String[] { "编号", "书名", "状态", "借书时间", "还书时间" }) {
            boolean[] canEdit = new boolean[] { false, false, false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        borrowTbale.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                borrowTbaleMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(borrowTbale);

        jLabel1.setText("编号:");

        borrowIdText.setEditable(false);

        jB_return.setText("还书");
        jB_return.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_returnActionPerformed(evt);
            }
        });

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addGap(35, 35, 35).addComponent(jLabel1).addGap(38, 38, 38)
                        .addComponent(borrowIdText, GroupLayout.PREFERRED_SIZE, 114,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 282, Short.MAX_VALUE)
                        .addComponent(jB_return).addGap(44, 44, 44))
                .addGroup(layout.createSequentialGroup().addContainerGap()
                        .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 700, Short.MAX_VALUE)
                        .addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup()
                .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 239,
                        GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(jLabel1)
                        .addComponent(borrowIdText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jB_return))
                .addContainerGap(26, Short.MAX_VALUE)));

        pack();
    }
        

    private void jB_returnActionPerformed(java.awt.event.ActionEvent evt) {
        String BorrowStr = this.borrowIdText.getText();
        if (StringUtil.isEmpty(BorrowStr)) {
            JOptionPane.showMessageDialog(null, "请选择未还的书籍");
            return;
        }
        BorrowDetail detail = new BorrowDetail();
        detail.setBorrowId(Integer.parseInt(BorrowStr));
        detail.setStatus(2);
        detail.setReturnTime(TimeUtil.getTime());
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int i = borrowDetailDao.returnBook(con, detail);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "还书成功");
            } else {
                JOptionPane.showMessageDialog(null, "还书失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "还书异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
        fillTable(new BorrowDetail());
    }

    private void borrowTbaleMousePressed(java.awt.event.MouseEvent evt) {
        int row = borrowTbale.getSelectedRow();
        Integer borrowId = (Integer) borrowTbale.getValueAt(row, 0);
        String status = (String) borrowTbale.getValueAt(row, 2);
        this.borrowIdText.setText(borrowId.toString());
        if (status.equals("在借")) {
            this.jB_return.setVisible(true);
        } else {
            this.jB_return.setVisible(false);
        }
    }
}

UserInfoFrm.java

package com.sjsq.view;

import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.table.DefaultTableModel;

import com.sjsq.dao.UserDao;
import com.sjsq.model.User;
import com.sjsq.util.DbUtil;
import com.sjsq.util.StringUtil;

public class UserInfoFrm extends JInternalFrame {
    
    private JButton jButton1;
    private JButton jButton2;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JLabel jLabel4;
    private JLabel jLabel5;
    private JPanel jPanel1;
    private JPanel jPanel2;
    private JScrollPane jScrollPane1;
    private JTextField passwordText;
    private JTextField userIdText;
    private JTextField userNameText;
    private JTextField userNaneSelectText;
    private JTable userTable;
    
    
    DbUtil dbUtil = new DbUtil();
    UserDao userDao = new UserDao();

    
    public UserInfoFrm() {
        initComponents();
        fillTable(new User());
        setTitle("用户信息");
        this.setLocation(200, 50);
    }

    private void fillTable(User user) {
        DefaultTableModel model = (DefaultTableModel) userTable.getModel();
        model.setRowCount(0);

        Connection con = null;
        try {
            con = dbUtil.getCon();
            ResultSet list = userDao.list(con, user);
            while (list.next()) {
                Vector rowData = new Vector();
                rowData.add(list.getInt("id"));
                rowData.add(list.getString("username"));
                rowData.add(list.getString("password"));
                model.addRow(rowData);
            }
        } catch (Exception e) {
            
            e.printStackTrace();
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    
    private void initComponents() {

        jLabel2 = new JLabel();
        jScrollPane1 = new JScrollPane();
        userTable = new JTable();
        jPanel1 = new JPanel();
        jLabel1 = new JLabel();
        jButton1 = new JButton();
        userNaneSelectText = new JTextField();
        jPanel2 = new JPanel();
        jLabel3 = new JLabel();
        userIdText = new JTextField();
        jLabel4 = new JLabel();
        userNameText = new JTextField();
        jLabel5 = new JLabel();
        passwordText = new JTextField();
        jButton2 = new JButton();

        jLabel2.setText("jLabel2");

        setClosable(true);

        userTable.setModel(new DefaultTableModel(new Object[][] {

        }, new String[] { "编号", "账号", "密码" }) {
            boolean[] canEdit = new boolean[] { false, false, false };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        userTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                userTableMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(userTable);

        jPanel1.setBorder(BorderFactory.createTitledBorder("表单操作"));

        jLabel1.setText("账号:");

        jButton1.setText("查询");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(userNaneSelectText, GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE)
                        .addGap(18, 18, 18).addComponent(jButton1).addContainerGap()));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                        .createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel1).addComponent(userNaneSelectText,
                                        GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
                                        GroupLayout.PREFERRED_SIZE))
                        .addComponent(jButton1))
                        .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        jPanel2.setBorder(BorderFactory.createTitledBorder("用户操作"));

        jLabel3.setText("编号:");

        userIdText.setEditable(false);

        jLabel4.setText("账号:");

        jLabel5.setText("密码:");

        jButton2.setText("修改");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        GroupLayout jPanel2Layout = new GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel3)
                                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(userIdText, GroupLayout.PREFERRED_SIZE, 85,
                                                GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18).addComponent(jLabel4))
                                .addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel5)
                                        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(passwordText, GroupLayout.PREFERRED_SIZE, 88,
                                                GroupLayout.PREFERRED_SIZE)))
                        .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel2Layout.createSequentialGroup().addGap(37, 37, 37).addComponent(
                                        userNameText, GroupLayout.PREFERRED_SIZE, 94,
                                        GroupLayout.PREFERRED_SIZE))
                                .addGroup(jPanel2Layout.createSequentialGroup().addGap(8, 8, 8).addComponent(jButton2)))
                        .addContainerGap(26, Short.MAX_VALUE)));
        jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel3).addComponent(jLabel4)
                                .addComponent(userIdText, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(userNameText, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                        .addGap(29, 29, 29)
                        .addGroup(jPanel2Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel5)
                                .addComponent(passwordText, GroupLayout.PREFERRED_SIZE,
                                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                .addComponent(jButton2))
                        .addContainerGap(37, Short.MAX_VALUE)));

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout
                .createSequentialGroup().addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                        .addComponent(jPanel2, GroupLayout.Alignment.LEADING,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
                                Short.MAX_VALUE)
                        .addComponent(jScrollPane1, GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
                        .addComponent(jPanel1, GroupLayout.Alignment.LEADING,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE,
                                Short.MAX_VALUE))
                .addGap(226, 226, 226)));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addGap(28, 28, 28)
                        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 136,
                                GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jPanel2, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(16, Short.MAX_VALUE)));

        pack();
    }
        

    private void userTableMousePressed(java.awt.event.MouseEvent evt) {
        int row = this.userTable.getSelectedRow();
        this.userIdText.setText(userTable.getValueAt(row, 0).toString());
        this.userNameText.setText(userTable.getValueAt(row, 1).toString());
        this.passwordText.setText(userTable.getValueAt(row, 2).toString());
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        String userId = this.userIdText.getText();
        String userName = this.userNameText.getText();
        String password = this.passwordText.getText();
        if (StringUtil.isEmpty(userName) || StringUtil.isEmpty(password)) {
            JOptionPane.showMessageDialog(null, "请输入相关信息");
            return;
        }
        User user = new User();
        user.setUserId(Integer.parseInt(userId));
        user.setUserName(userName);
        user.setPassword(password);
        Connection con = null;
        try {
            con = dbUtil.getCon();
            int i = userDao.update(con, user);
            if (i == 1) {
                JOptionPane.showMessageDialog(null, "修改成功");
                fillTable(new User());
            } else {
                JOptionPane.showMessageDialog(null, "修改失败");
            }
        } catch (Exception e) {
            
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "修改异常");
        } finally {
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
        }
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String userName = this.userNaneSelectText.getText();
        User user = new User();
        user.setUserName(userName);
        fillTable(user);
    }
}

UserMainFrm.java

package com.sjsq.view;

import javax.swing.GroupLayout;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;

public class UserMainFrm extends JFrame {

    private JMenu jMenu1;
    private JMenuBar jMenuBar1;
    private JMenuItem jMenuItem1;
    private JMenuItem jMenuItem2;
    private JMenuItem jMenuItem3;
    private JDesktopPane userMainjdp;

    public UserMainFrm() {
        initComponents();
        // 设置位置
        setBounds(100, 200, 1050, 650);
        // 居中显示
        this.setLocationRelativeTo(null);
    }

    private void initComponents() {

        userMainjdp = new JDesktopPane();
        jMenuBar1 = new JMenuBar();
        jMenu1 = new JMenu();
        jMenuItem1 = new JMenuItem();
        jMenuItem2 = new JMenuItem();
        jMenuItem3 = new JMenuItem();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("图书者主界面");
        
        jMenu1.setText("基本信息");

        jMenuItem1.setText("书籍信息");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("借书记录");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);

        jMenuItem3.setText("退出系统");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem3);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(userMainjdp,
                GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE));
        layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(userMainjdp,
                GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE));

        pack();
    }

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
        int i = JOptionPane.showConfirmDialog(null, "确认退出系统");
        if (i == 0) {
            this.dispose();
        }
    }

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
        UserBorrowDetail userBorrowDetail = new UserBorrowDetail();
        userBorrowDetail.setVisible(true);
        this.userMainjdp.add(userBorrowDetail);
    }

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        BookInfoFrm infoFrm = new BookInfoFrm();
        infoFrm.setVisible(true);
        this.userMainjdp.add(infoFrm);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new UserMainFrm().setVisible(true);
            }
        });
    }

}

UserManagerFrm.java

package com.sjsq.view;

import javax.swing.GroupLayout;
import javax.swing.JInternalFrame;

public class UserManagerFrm extends JInternalFrame {

    public UserManagerFrm() {
        initComponents();
    }

    private void initComponents() {

        setClosable(true);

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 394, Short.MAX_VALUE));
        layout.setVerticalGroup(
                layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 278, Short.MAX_VALUE));

        pack();
    }

}
(0)

相关推荐

  • Eclipse+Java+Swing+Mysql实现工资管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 二.系统展示 1.登录系统 2.用户-登录系统 3.用户-查看工资 4.管理员-主界面 6.管理员-修改员工信息 7.管理员-删除员工信息 8.管理员-添加部门信息 9.管理员-修改部门信息 10.管理员-删除部门信息 11.管理员-工资设定 12.管理员-工资查询 13.管理员-工资一览 三.部分代码 Login.java MainFrame.java DBConn.java AddDepartment.java Add

  • 基于Mysql+JavaSwing的超市商品管理系统设计与实现

    目录 2.关键代码 2.1 主页功能 2.2 添加商品信息 2.3 数据库设计 商品表 前言: 随着小超市规模的发展不断扩大, 商品数量急剧增加, 有关商品的各种信息量也成倍增长. 超市时时刻刻都需要对商品各种信息进行统计分析. 而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率. 超市管理系统是市场上最流行的超市上常用的系统之一, 由于刚学Java知识.所有功能设计的比较简单.只有商品信息的增删改查.实现对商品信息全面. 动态.及时的管理.本文系统的分析了软件开发的背景以过程

  • 基于JavaSwing设计和实现的酒店管理系统

    目录 前言: 引言 主要技术和工具: 功能截图: 登录管理: 酒店管理信息: 开房: 退房: 房间信息: 顾客信息: 关键代码: 主入口: 开房入住: 数据库设计: 用户表: 入住信息表: 房间信息表 : 总结: 前言: 项目是使用Java swing开发,可实现基础数据维护用户登录.系统首页酒店信息管理.主要模块是开房管理.退房管理.房间信息管理.顾客信息管理等功能.界面设计比较简介.适合作为Java课设设计以及学习技术使用.获取源码 引言 在信息高度发达的今天, 酒店业务涉及的各个工作环节已

  • 基于JavaSwing+mysql开发一个学生社团管理系统设计和实现

    前言: 项目是使用Java swing+mysql开发,可实现基础数据维护.用户登录注册.社团信息列表查看.社团信息添加.社团信息修改.社团信息删除以及退出注销等功能.界面设计比较简单易学.适合作为Java课设设计以及学习技术使用. 引言 随着全球信息化的迅猛发展,高效规模不断壮大,协会人数急剧增加,有必要开发一个学生社团管理系统来提高社联对社团的管理效率,学生社团管理系统将逐渐取代传统的人工管理模式.本文采用Java+swing+mysql作为开发技术,以Java为编程语言,开发一个基java

  • Java实战之用Swing实现通讯录管理系统

    一.系统介绍  1.系统功能 登录系统 查询信息 新增信息 修改信息 删除信息 2.环境配置 JDK版本:1.8 Mysql:8.0.13 3.数据库 /* Navicat Premium Data Transfer Source Server : MySQL Source Server Type : MySQL Source Server Version : 80013 Source Host : localhost:3306 Source Schema : swing_address Tar

  • Eclipse+Java+Swing实现图书管理系统(详细代码)

    目录 一.系统介绍 二.系统展示 1.注册 2.登录 5.管理员端-添加图书类别 6.管理员端-修改图书类别 7.管理员端-添加图书 8.管理员端-修改图书 9.管理员端-管理用户信息 10.管理员端-查询借阅信息 三.部分代码 AdminMainFrm.java BookAddFrm.java BookManagerFrm.java BookInfoFrm.java BookTypeAddFrm.java BookTypeManagerFrm.java BorrowDetailFrm.java

  • Eclipse+Java+Swing实现图书管理系统(详细代码)

    目录 一.系统介绍 二.系统展示 1.注册 2.登录 5.管理员端-添加图书类别 6.管理员端-修改图书类别 7.管理员端-添加图书 8.管理员端-修改图书 9.管理员端-管理用户信息 10.管理员端-查询借阅信息 三.部分代码 AdminMainFrm.java BookAddFrm.java BookManagerFrm.java BookInfoFrm.java BookTypeAddFrm.java BookTypeManagerFrm.java BorrowDetailFrm.java

  • Java+MySQL实现图书管理系统(完整代码)

    (完整代码+实训报告): 链接: https://pan.baidu.com/s/1E6BhEaHMa6Wch5yf6YAjOA 提取码: vnrx 觉着有用就点个赞哦~ 一,功能 管理员登录 图书借阅信息管理 图书信息管理 管理员更改密码 退出系统 二,工具 Eclipse Version: 2018-09 (4.9.0) MySQL Workbench 8.0 CE mysql-connector-java-8.0.13.jar 三.效果图: 登录界面: 主界面: 借阅书籍管理: 个人书库管

  • Eclipse+Java+Swing实现斗地主游戏(代码)

    目录 一.系统介绍 二.系统展示 1.扑克分发 2.抢地主 3.出牌 4.游戏胜利 三.系统实现 Card.java CardType.java Common.java Model.java NewSwing.java 一.系统介绍 本系统实现扑克的分发,抢地主,电脑自动出牌等功能. 二.系统展示 1.扑克分发 2.抢地主 3.出牌 4.游戏胜利 三.系统实现 Card.java package com.sjsq; import java.awt.Point; import java.awt.e

  • Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 3.1.用户 3.2.管理员 4.数据库 5.工程截图 二.系统展示 1.注册系统 2.登录系统 3.用户-欢迎界面 4.用户-影片排行榜 5.用户-购票信息 6.用户-场次信息 8.用户-搜索电影 9.管理员-首页 10.管理员-对用户进行操作 11.管理员-对影院进行操作 12.管理员-对场厅进行操作 13.管理员-对场次进行操作 14.管理员-对电影进行操作 三.部分代码 AdminMainView.java MovieInfo

  • Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 3.1.用户 3.2.管理员 4.数据库 5.工程截图 二.系统展示 1.注册系统 2.登录系统 3.用户-欢迎界面 4.用户-影片排行榜 5.用户-购票信息 6.用户-场次信息 8.用户-搜索电影 9.管理员-首页 10.管理员-对用户进行操作 11.管理员-对影院进行操作 12.管理员-对场厅进行操作 13.管理员-对场次进行操作 14.管理员-对电影进行操作 三.部分代码 AdminMainView.java MovieInfo

  • Eclipse+Java+Swing实现学生成绩管理系统的实例代码

    一.系统介绍 本系统实现了用户登录,实现了对学生成绩的增删改查,实现了用户修改密码功能,采用MD5加密算法,数据库使用Mysql8.0.13,界面良好. 二.系统展示 1.登录页 2.主页面 3.查询学生成绩 4.修改学生成绩 5.添加学生成绩 6.修改系统密码 三.系统实现 Student.java package com.sjsq.model; import java.util.ArrayList; import java.util.List; /** * 学生实体类 * @author s

  • Java+Swing实现医院管理系统的完整代码

    一.系统介绍 本系统实现的以下功能 管理员功能:登录系统.病人信息的增删改查.就医档案的录入.医生信息的增删改查.科室信息的增删改查.收费统计功能.修改密码. 医生功能:登录系统.病人信息的增删改查.医生信息的增删改查.科室信息的增删改查.收费统计功能.修改密码. 收费员功能:价格管理.收费管理.修改密码. JDK版本:1.8 数据库:Mysql8.0.13 数据库用到的表 cashier charge department doctor drugtable manager medical_re

  • Java swing实现酒店管理系统

    今天给大家提供一个由今天给大家提供一个由Java swing实现的酒店管理系统,数据库采用sqlserver,我会贴上部分代码,完整的代码请看文章最下方下载,下面看代码: 1.主框架代码: package 主框架窗口; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEven

随机推荐