⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bookborrowiframe.java

📁 图书管理系统java+swing+SQL Server实现 包含了图书管理系统的所有功能 纯JAVA实现
💻 JAVA
字号:
package com.lishan.iframe;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import com.lishan.JComPz.MapPz;
import com.lishan.dao.Dao;
import com.lishan.iframe.ReaderModiAndDelIFrame.TableListener;
import com.lishan.model.BookInfo;
import com.lishan.model.BookType;
import com.lishan.model.Operater;
import com.lishan.model.Reader;
import com.lishan.util.MyDocument;

public class BookBorrowIFrame extends JInternalFrame {
	private Operater user = BookLoginIFrame.getUser();// 操作人员
	private final JTextField operator;
	private JTextField todaydate;
	private JTable table;
	private JTextField price;
	private JTextField bookType;
	private JTextField bookName;
	private JTextField bookISBN;
	private JTextField keepMoney;
	private JTextField number;// 读者可借数量
	private JTextField readerName;
	private JTextField readerISBN;
	private List readerlist, booklist;
	private String[] columnNames = { "书籍编号", "借书日期", "应还日期", "读者编号" };
	private Map map = MapPz.getMap();
	private int secTableRow;

	DefaultTableModel model = new DefaultTableModel();
	SimpleDateFormat myfmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

	public final void add() { // 把借书信息添加到table中
		String str[] = new String[4];
		str[0] = bookISBN.getText().trim();// 存放图书编号
		str[1] = String.valueOf(myfmt.format(new java.util.Date()));// 存放借出日期
		str[2] = getBackTime().toLocaleString();// 存放归还日期
		str[3] = readerISBN.getText().trim();// 存放读者编号
		model.addRow(str);
	}

	public Date getBackTime() { // 取还书时间
		String days = "0";
		List list2 = Dao.selectBookCategory(bookType.getText().trim());
		for (int j = 0; j < list2.size(); j++) {
			BookType type = (BookType) list2.get(j);
			days = type.getDays(); // 取出该类图书可借天数
		}
		java.util.Date date = new java.util.Date(); // 当前时间
		date.setDate(date.getDate() + Integer.parseInt(days));// 归还日期 = 当前时间 + 可借日期
		return date;
	}

	/**
	 * create the frame
	 */
	public BookBorrowIFrame() {
		super();
		System.out.println(user.getName());
		setTitle("图书借阅管理");
		setIconifiable(true); // 设置窗体可最小化---必须
		setClosable(true); // 设置窗体可关闭---必须
		setBounds(100, 100, 500, 375);

		final JPanel panel = new JPanel();
		getContentPane().add(panel);

		final JScrollPane scrollPane = new JScrollPane();
		scrollPane.setPreferredSize(new Dimension(400, 100));
		panel.add(scrollPane);

		table = new JTable();
		scrollPane.setViewportView(table);
		model.setColumnIdentifiers(columnNames);
		table.setModel(model);

		final JPanel panel_1 = new JPanel();
		panel_1.setPreferredSize(new Dimension(0, 120));
		getContentPane().add(panel_1, BorderLayout.NORTH);

		final JSplitPane splitPane = new JSplitPane();// 用于分隔两个Component
		panel_1.add(splitPane);

		final JPanel panel_3 = new JPanel();// 显示读者信息的面板
		panel_3.setPreferredSize(new Dimension(240, 110));
		splitPane.setLeftComponent(panel_3);

		final JPanel panel_5 = new JPanel();
		final GridLayout gridLayout = new GridLayout(0, 2);
		gridLayout.setHgap(2); // 设置水平间距
		gridLayout.setVgap(10);// 设置垂直间距
		panel_5.setLayout(gridLayout);
		panel_5.setPreferredSize(new Dimension(150, 100));
		panel_3.add(panel_5);

		final JLabel label = new JLabel();
		label.setText("读者编号:");
		panel_5.add(label);

		readerISBN = new JTextField(15);
		readerISBN.setDocument(new MyDocument(13));
		readerISBN.addKeyListener(new ISBNListenerlostFocus());// 注册在文本框输入事件监听对象,用于在panel_5面板中显示读者信息
		panel_5.add(readerISBN);

		final JLabel label_1 = new JLabel();
		label_1.setText("读者姓名:");
		panel_5.add(label_1);

		readerName = new JTextField();
		readerName.setEditable(false);
		panel_5.add(readerName);

		final JLabel label_2 = new JLabel();
		label_2.setText("可借数量:");
		panel_5.add(label_2);

		number = new JTextField();
		number.setEditable(false);
		panel_5.add(number);

		final JLabel label_4 = new JLabel();
		label_4.setText("押     金:");
		panel_5.add(label_4);

		keepMoney = new JTextField();
		keepMoney.setEditable(false);
		panel_5.add(keepMoney);
		// Icon icon = new ImageIcon("1.gif");

		final JPanel panel_4 = new JPanel();// 用于显示书籍信息
		final GridLayout gridLayout_1 = new GridLayout(0, 2);
		gridLayout_1.setVgap(10);
		panel_4.setLayout(gridLayout_1);
		panel_4.setPreferredSize(new Dimension(240, 110));
		splitPane.setRightComponent(panel_4);

		final JLabel label_5 = new JLabel();
		label_5.setText("书籍编号:");
		panel_4.add(label_5);

		bookISBN = new JTextField();
		bookISBN.setEditable(false);
		bookISBN.setDocument(new MyDocument(13));
		bookISBN.addKeyListener(new bookISBNListenerlostFocus());// 注册在文本框输入事件监听对象,用于在panel_4面板中显示读者信息
		panel_4.add(bookISBN);

		final JLabel label_6 = new JLabel();
		label_6.setText("书籍名称:");
		panel_4.add(label_6);

		bookName = new JTextField();
		bookName.setEditable(false);
		panel_4.add(bookName);

		final JLabel label_7 = new JLabel();
		label_7.setText("书籍类别:");
		panel_4.add(label_7);

		bookType = new JTextField();
		bookType.setEditable(false);
		panel_4.add(bookType);

		final JLabel label_8 = new JLabel();
		label_8.setText("书籍价格:");
		panel_4.add(label_8);

		price = new JTextField();
		price.setEditable(false);
		panel_4.add(price);

		final JPanel panel_2 = new JPanel();
		panel_2.setPreferredSize(new Dimension(0, 100));
		getContentPane().add(panel_2, BorderLayout.SOUTH);

		final JPanel panel_7 = new JPanel();
		final GridLayout gridLayout_2 = new GridLayout(0, 2);
		gridLayout_2.setVgap(10);
		panel_7.setLayout(gridLayout_2);
		panel_7.setPreferredSize(new Dimension(280, 50));
		panel_2.add(panel_7);

		final JLabel label_9 = new JLabel();
		label_9.setText("当前时间:");
		panel_7.add(label_9);

		todaydate = new JTextField();
		todaydate.setEditable(false);
		todaydate.setPreferredSize(new Dimension(0, 0));
		todaydate.addActionListener(new TimeActionListener());// 注册显示当前时间事件监听对象
		todaydate.setFocusable(false);
		panel_7.add(todaydate);

		final JLabel label_11 = new JLabel();
		label_11.setText("操作员:");
		panel_7.add(label_11);

		operator = new JTextField(user.getName());
		operator.setEditable(false);
		panel_7.add(operator);

		final JPanel panel_8 = new JPanel();
		panel_8.setLayout(new FlowLayout());
		panel_8.setPreferredSize(new Dimension(200, 60));
		panel_2.add(panel_8);

		final JButton buttonBorrow = new JButton();
		buttonBorrow.setText("借出当前图书");
		buttonBorrow.addActionListener(new BorrowActionListener());// 注册借书按钮事件监听对象
		panel_8.add(buttonBorrow);

		final JButton buttonClear = new JButton();
		buttonClear.setText("清除记录");
		buttonClear.addActionListener(new ClearActionListener(model));// 注册清除按钮事件监听对象
		panel_8.add(buttonClear);

		setVisible(true);
		//
	}

	class ISBNListenerlostFocus extends KeyAdapter {
		public void keyTyped(KeyEvent e) {
			if (e.getKeyChar() == '\n') {// 判断文本款是否输入回车键
				String ISBNs = readerISBN.getText().trim();
				readerlist = Dao.selectReader(ISBNs);
				if (readerlist.isEmpty() && !ISBNs.isEmpty()) {
					JOptionPane.showMessageDialog(null,
							"此读者编号没有注册,查询输入读者编号是否有误!");
					return;
				}
				for (int i = 0; i < readerlist.size(); i++) {
					bookISBN.setEditable(true);
					Reader reader = (Reader) readerlist.get(i);
					readerName.setText(reader.getName());
					number.setText(reader.getRemainBorrowNum());
					keepMoney.setText(reader.getKeepMoney() + "");
					// System.out.println("读者可借书量为" + number.getText().trim());
				}
				if (readerISBN.getText().trim().length() == 0) {
					JOptionPane.showMessageDialog(null, "输入读者条形码!");
				}
			}
		}
	}

	class bookISBNListenerlostFocus extends KeyAdapter {
		public void keyTyped(KeyEvent e) {
			if (e.getKeyChar() == '\n') {// 判断在文本框是否输入回车
				if (readerISBN.getText().trim().length() != 0
						&& bookISBN.getText().trim().length() != 0) {// 判断读者文本框和图书文本框是否为空
					String ISBNs = bookISBN.getText().trim();
					booklist = Dao.selectBookInfo(ISBNs);// 存放图书信息集合
					for (int i = 0; i < booklist.size(); i++) {// 把图书信息显示到文本框中
						BookInfo book = (BookInfo) booklist.get(i);
						bookName.setText(book.getBookname());
						bookType.setText(String.valueOf(map.get(book
								.getTypeid())));
						price.setText(String.valueOf(book.getPrice()));
					}

					String days = "0";
					List list2 = Dao.selectBookCategory(bookType.getText()
							.trim());// 存放图书类型集合
					for (int j = 0; j < list2.size(); j++) {
						BookType type = (BookType) list2.get(j);
						days = type.getDays(); // 取出该种类型的书籍可借天数
					}

					String readerISBNs = readerISBN.getText().trim();
					if (!readerISBNs.isEmpty() && readerlist.isEmpty()) {// 如果readerISBNs文本框输入不为空,并且数据库中不存在该readerISBN
						JOptionPane.showMessageDialog(null,
								"此读者编号没有注册,查询输入读者编号是否有误!");
					} else if (booklist.isEmpty() && !ISBNs.isEmpty()) {// 如果数据库中编号为ISBN的图书为空,并且ISBNs文本框输入不为空
						JOptionPane.showMessageDialog(null,
								"本图书馆没有此书,查询输入图书编号是否有误!");
					} else if (Integer.parseInt(number.getText().trim()) <= 0) {
						bookISBN.setEditable(false);
						JOptionPane.showMessageDialog(null, "借书量已经超过最大借书量!");

					} else {
						add();
						number.setText(String.valueOf(Integer.parseInt(number
								.getText().trim()) - 1));
					}
				} else if (readerISBN.getText().trim().length() != 0
						&& bookISBN.getText().trim().length() == 0) {
					JOptionPane.showMessageDialog(null, "输入图书条形码!");
					return;
				} else if (readerISBN.getText().trim().length() == 0) {
					JOptionPane.showMessageDialog(null, "输入读者条形码!");
				}
			}
		}
	}

	class TimeActionListener implements ActionListener {
		public TimeActionListener() {
			Timer t = new Timer(1000, this);
			t.start();
		}

		public void actionPerformed(ActionEvent e) {
			todaydate.setText(myfmt.format(new java.util.Date()).toString());
		}
	}

	class BorrowActionListener implements ActionListener {// 完成借书功能
		public void actionPerformed(ActionEvent e) {
			String bookISBNs = bookISBN.getText().trim();
			String readerISBNs = readerISBN.getText().trim();
			String bookNames = bookName.getText().trim();
			String operatorId = user.getId();
			// String num = table.getRowCount() + "";
			String borrowDate = myfmt.format(new java.util.Date());
			String backDate = myfmt.format(getBackTime());
			int i = 0, j = 0;
			// System.out.println(borrowDate);
			// System.out.println(java.sql.Timestamp.valueOf(backDate));
			if (bookISBNs.length() != 0 || readerISBNs.length() != 0) {
				for (int count = 0; count < table.getRowCount(); count++) {
					String bookISBNtemp = table.getValueAt(count, 0).toString()
							.trim();
					i = Dao.InserBookBorrow(bookISBNtemp, readerISBNs,
							operatorId, java.sql.Timestamp.valueOf(borrowDate),
							java.sql.Timestamp.valueOf(backDate));// 将借书信息插入到借书表中
				}
				j = Dao.updateReaderBorrowBook(number.getText().trim(), readerISBNs);
				if (i == 1 && j == 1) {
					JOptionPane.showMessageDialog(null, "图书借阅完成");
					doDefaultCloseAction();
				}
			} else {
				JOptionPane.showMessageDialog(null, "输入读者条形码和图书条形码!");
			}
		}
	}

	class ClearActionListener implements ActionListener {// 完成清除所有记录功能
		private final DefaultTableModel model;

		ClearActionListener(DefaultTableModel model) {
			this.model = model;
		}

		public void actionPerformed(ActionEvent e) {
			System.out.println(table.getRowCount());
			if (table.getRowCount() != 0) {
				int selRow = table.getSelectedRow();
				model.removeRow(selRow);
				number.setText(Integer.parseInt(number.getText().trim()) + 1
						+ "");
				bookISBN.setEditable(true);
				if (table.getRowCount() == 0) {
					bookISBN.setText("");
					bookType.setText("");
					bookName.setText("");
					price.setText("");
					readerISBN.setText("");
					readerName.setText("");
					number.setText("");
					keepMoney.setText("");
				}
			} else {
				JOptionPane.showMessageDialog(null, "表格中暂时没有数据,请进行借阅操作");
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -