Eclipse+Java+Swing实现图书管理系统

一、系统介绍

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

二、系统展示

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();
	}

}

四、其他

1.其他系统实现

JavaWeb系统系列实现

Java+JSP实现学生图书管理系统
Java+JSP实现学生信息管理系统
Java+JSP实现用户信息管理系统
Java+Servlet+JSP实现航空订票系统
Java+Servlet+JSP实现房屋租赁管理系统
Java+Servlet+JSP实现学生选课管理系统
Java+Servlet+JSP实现学生成绩管理系统
Java+Servlet+JSP实现宠物诊所管理系统
Java+SSM+Easyui实现网上考试系统
Java+Springboot+H-ui实现营销管理系统
Java+Springboot+Mybatis+Bootstrap实现网上商城系统

JavaSwing系统系列实现

Java+Swing实现斗地主游戏
Java+Swing实现图书管理系统
Java+Swing实现医院管理系统
Java+Swing实现仓库管理系统
Java+Swing实现考试管理系统
Java+Swing实现通讯录管理系统
Java+Swing实现停车场管理系统
Java+Swing实现学生信息管理系统
Java+Swing实现学生宿舍管理系统
Java+Swing实现学生选课管理系统
Java+Swing实现学生成绩管理系统
Java+Swing实现学校教材管理系统
Java+Swing实现学校教务管理系统
Java+Swing实现企业人事管理系统
Java+Swing实现电子相册管理系统
Java+Swing实现自助取款机(ATM)系统
Java+Swing实现超市管理系统-TXT存储信息
Java+Swing实现宠物商店管理系统-TXT存储信息

2.获取源码

点击以下链接获取源码,数据库文件在sql文件下面。
Java+Swing+Mysql图书管理系通源码

3.运行项目

请走点击以下链接,部署你的项目。
Eclipse如何导入JavaSwing项目超详细教程

4.备注

如有侵权请联系我删除。

5.联系博主

左侧关注微信公众号,里面有Java教程和一些Java资源。如果此文对您有帮助,请关注加点赞,谢谢!

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水坚石青

你的鼓励是我更新的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值