一、系统介绍
该系统实现用户注册登录功能。用户端实现书籍查询,借书,还书功能。用户能够查询自己的借书记录。管理员能够上架图书,下架图书,添加图书类别,修改图书类别,删除图书类别,添加图书信息,修改图书信息,修改用户信息,查询图书借阅归还记录。
二、系统展示
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(); } }