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

📄 bookbackiframe.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.List;

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.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;

import com.lishan.JComPz.MapPz;
import com.lishan.dao.Dao;
import com.lishan.model.Back;
import com.lishan.model.BookType;
import com.lishan.model.Operater;
import com.lishan.util.MyDocument;

public class BookBackIFrame extends JInternalFrame {// 还书控制面板
	private Operater user = BookLoginIFrame.getUser();
	private JTable table, tableByBookISBN; // 用来显示和编辑规则的二维单元表
	private JTextField operator; // 输入操作人员
	private JTextField todaydate; // 输入归还日期
	private JTextField fkmoney; // 罚款金额
	private JTextField ccdays; // 超出天数
	private JTextField realdays; // 实际天数
	private JTextField borrowdays; // 可以借阅天数
	private JTextField borrowDate; // 结束日期
	private JTextField readerISBN; // 读者条形码
	private String[] columnNames = { "图书名称", "图书条形码", "图书类别", "读者姓名", "读者条形码",
			"借书时间", "归还时间", "ID" };
	DefaultTableModel model = new DefaultTableModel();// 默认的表类型
	DefaultTableModel modelBook = new DefaultTableModel();
	SimpleDateFormat myfmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	private String bookISBNs = null;
	private String readerISBNs = null;
	private JTextField bookISBN;
	private int id;

	public final void add() { // 添加指定读者借书信息到表格中
		readerISBNs = readerISBN.getText().trim();
		if (!"".equals(bookISBN.getText().trim())) {
			List list = Dao.selectBookBackByBookISBN(bookISBN.getText()
					.toString().trim());
			for (int i = 0; i < list.size(); i++) {
				Back back = (Back) list.get(i);
				String str[] = new String[8];
				str[0] = back.getBookName();
				str[1] = back.getBookISBN();
				str[2] = String.valueOf(MapPz.getMap().get(
						back.getTypeId() + ""));
				str[3] = back.getReaderName();
				str[4] = back.getReaderISBN();
				str[5] = back.getBorrowDate();
				str[6] = back.getBackDate();
				str[7] = back.getId() + "";
				modelBook.addRow(str);
			}
		} else if (!"".equals(readerISBNs)) {
			List list = Dao.selectBookBack(readerISBNs);
			if (list.size() == 0) {
				JOptionPane.showMessageDialog(null, "编号为" + readerISBNs
						+ "的读者,没有借书记录");
				return;
			}
			for (int i = 0; i < list.size(); i++) {
				Back back = (Back) list.get(i);
				// id = back.getId();
				String str[] = new String[8];
				str[0] = back.getBookName();
				str[1] = back.getBookISBN();
				str[2] = String.valueOf(MapPz.getMap().get(
						back.getTypeId() + ""));
				str[3] = back.getReaderName();
				str[4] = back.getReaderISBN();
				str[5] = back.getBorrowDate();
				str[6] = back.getBackDate();
				str[7] = back.getId() + "";
				model.addRow(str);
			}
		}
	}

	/**
	 * Create the frame
	 */
	public BookBackIFrame() {
		super();
		setIconifiable(true); // 设置窗体可最小化---必须
		setClosable(true); // 设置窗体可关闭---必须
		setTitle("图书归还管理");
		setBounds(100, 100, 550, 480);

		final JTabbedPane tabbedPane = new JTabbedPane();
		tabbedPane.setPreferredSize(new Dimension(0, 60));
		getContentPane().add(tabbedPane);

		final JPanel panel_totle1 = new JPanel();
		panel_totle1.setLayout(new BorderLayout());
		tabbedPane.addTab("输入学生编号", null, panel_totle1, null);

		final JPanel panel = new JPanel();
		// 在指定位置以指定对齐方式显示字符串标题的边框
		panel.setBorder(new TitledBorder(null, "基本信息",
				TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		panel.setPreferredSize(new Dimension(0, 200));
		panel_totle1.add(panel, BorderLayout.NORTH);

		final JPanel panel_5 = new JPanel();
		final GridLayout gridLayout_1 = new GridLayout(0, 2);
		gridLayout_1.setVgap(5); // 设置垂直间隙
		panel_5.setLayout(gridLayout_1);
		panel_5.setPreferredSize(new Dimension(400, 20));
		panel.add(panel_5);

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

		readerISBN = new JTextField();
		readerISBN.setDocument(new MyDocument(13));
		readerISBN.addKeyListener(new readerISBNListenerlostFocus()); // 注册键盘对象监听事件
		panel_5.add(readerISBN);

		final JPanel panel_4 = new JPanel();
		panel_4.setLayout(new FlowLayout());
		panel_4.setPreferredSize(new Dimension(450, 130));
		panel.add(panel_4);

		final JScrollPane scrollPane = new JScrollPane();
		scrollPane.setPreferredSize(new Dimension(450, 120));
		panel_4.add(scrollPane);

		table = new JTable();
		scrollPane.setViewportView(table);
		model.setColumnIdentifiers(columnNames);
		table.setModel(model);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		table.addMouseListener(new TableListener()); // 注册鼠标对象监听事件

		final JPanel panel_1 = new JPanel();
		panel_1.setLayout(new BorderLayout());
		panel_totle1.add(panel_1);

		final JPanel panel_2 = new JPanel();
		final GridLayout gridLayout_2 = new GridLayout(0, 2);
		gridLayout_2.setVgap(20);
		panel_2.setLayout(gridLayout_2);
		panel_2.setBorder(new TitledBorder(null, "罚款信息",
				TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		panel_2.setPreferredSize(new Dimension(250, 230));
		panel_1.add(panel_2, BorderLayout.WEST);

		final JLabel label_11 = new JLabel("借书日期:");
		panel_2.add(label_11);

		borrowDate = new JTextField();
		borrowDate.setEditable(false);// 设置为不可编辑的

		panel_2.add(borrowDate);

		final JLabel label_12 = new JLabel("规定天数:");
		panel_2.add(label_12);

		borrowdays = new JTextField();
		borrowdays.setEditable(false);
		panel_2.add(borrowdays);

		final JLabel label_13 = new JLabel("实际天数:");
		panel_2.add(label_13);

		realdays = new JTextField();
		realdays.setEditable(false);
		panel_2.add(realdays);

		final JLabel label_14 = new JLabel("超出天数:");
		panel_2.add(label_14);

		ccdays = new JTextField();
		ccdays.setEditable(false);
		panel_2.add(ccdays);

		final JLabel label_15 = new JLabel("罚款金额:");
		panel_2.add(label_15);

		fkmoney = new JTextField();
		fkmoney.setEditable(false);
		panel_2.add(fkmoney);

		final JPanel panel_3 = new JPanel();
		panel_3.setBorder(new TitledBorder(null, "系统信息",
				TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		panel_3.setPreferredSize(new Dimension(280, 230));
		panel_1.add(panel_3);

		final JPanel panel_7 = new JPanel();
		final GridLayout gridLayout_3 = new GridLayout(0, 2);
		gridLayout_3.setVgap(35);
		panel_7.setLayout(gridLayout_3);
		panel_7.setPreferredSize(new Dimension(260, 90));
		panel_3.add(panel_7);

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

		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_1 = new JLabel("操作员:");
		panel_7.add(label_11_1);

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

		final JButton buttonback = new JButton("图书归还");
		buttonback.addActionListener(new BookBackActionListener(model));
		panel_3.add(buttonback);

		final JButton buttonExit = new JButton();
		buttonExit.setText("退出");
		buttonExit.addActionListener(new CloseActionListener());
		panel_3.add(buttonExit);
		setVisible(true);
		//

		final JPanel panel_totle2 = new JPanel();
		panel_totle2.setLayout(new BorderLayout());
		tabbedPane.addTab("输入图书编号", null, panel_totle2, null);

		final JPanel panel_2_1 = new JPanel();
		panel_2_1.setBorder(new TitledBorder(null, "相关图书信息",
				TitledBorder.DEFAULT_JUSTIFICATION,
				TitledBorder.DEFAULT_POSITION, null, null));
		panel_2_1.setPreferredSize(new Dimension(250, 230));
		panel_totle2.add(panel_2_1);

		final JLabel label = new JLabel("图书编号    ");
		panel_2_1.add(label);
		bookISBN = new JTextField(20);
		bookISBN.setDocument(new MyDocument(20));
		bookISBN.addKeyListener(new bookISBNListener());
		panel_2_1.add(bookISBN);

		final JScrollPane scrollPaneBook = new JScrollPane();
		scrollPaneBook.setPreferredSize(new Dimension(500, 250));
		panel_2_1.add(scrollPaneBook);

		tableByBookISBN = new JTable();
		scrollPaneBook.setViewportView(tableByBookISBN);
		modelBook.setColumnIdentifiers(columnNames);
		tableByBookISBN.setModel(modelBook);
		tableByBookISBN.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		final JPanel panel_2_2 = new JPanel();
		JButton buttonbookback = new JButton("图书归还");
		JButton buttonbookexit = new JButton("退出");
		buttonbookexit.addActionListener(new CloseActionListener());
		panel_2_2.add(buttonbookback);
		panel_2_2.add(buttonbookexit);
		panel_totle2.add(panel_2_2, BorderLayout.SOUTH);

	}

	class readerISBNListenerlostFocus extends KeyAdapter {
		public void keyTyped(KeyEvent e) {
			if (e.getKeyChar() == '\n') {// 判断在文本框是否输入回车
				int rowCount = table.getRowCount();
				// System.out.println("selRow = " + rowCount);
				if (rowCount != 0) {
					for (int i = rowCount - 1; i >= 0; i--) {
						// System.out.println("remove i = " + i);
						model.removeRow(i);
					}
				}
				add(); // 添加该读者借书信息到table中
			}
		}
	}

	class bookISBNListener extends KeyAdapter {
		public void keyTyped(KeyEvent e) {
			if (e.getKeyChar() == '\n') {
				add();
			}
		}
	}

	class TableListener extends MouseAdapter {
		public void mouseClicked(final MouseEvent e) {
			java.util.Date date = new java.util.Date(); // 当前时间
			String fk = "";
			String days1 = "";
			int selRow = table.getSelectedRow(); // 获取选中表格中借书记录的行数
			List list = Dao.selectBookTypeFk(table.getValueAt(selRow, 2)
					.toString().trim()); // 取得各类书的罚款金额
			for (int i = 0; i < list.size(); i++) {
				BookType booktype = (BookType) list.get(i);
				fk = booktype.getFakuan(); // 取出图书类型的罚款金额
				days1 = booktype.getDays();// 可借天数
			}
			borrowDate.setText(table.getValueAt(selRow, 5).toString().trim());
			int days2, days3;// days2实际借阅天数 days3超出借阅天数
			borrowdays.setText(days1 + "");
			// 计算实际借阅时间 = 当前时间 - 时间借阅时间
			days2 = date.getDate()
					- java.sql.Timestamp.valueOf(
							table.getValueAt(selRow, 5).toString().trim())
							.getDate();
            //System.out.println("table.getValueAt(selRow, 5).toString().trim()是"+table.getValueAt(selRow, 5).toString().trim());
			
			realdays.setText(days2 + "");
			// 计算超出借阅多少天 = 实际借阅天数 - 可借阅天数
			days3 = days2 - Integer.parseInt(days1);
			if (days3 > 0) {
				ccdays.setText(days3 + "");
				Double zfk = Double.valueOf(fk) * days3;
				fkmoney.setText(zfk + "元");
			} else {
				ccdays.setText("没有超过规定天数");
				fkmoney.setText("0");
			}
			bookISBNs = table.getValueAt(selRow, 1).toString().trim();
			id = new Integer(table.getValueAt(selRow, 7).toString().trim());
		}
	}

	class TimeActionListener implements ActionListener {
		public TimeActionListener() {
			Timer t = new Timer(1000, this);// 创建一个每1000毫秒将通知其侦听器的 Timer
			t.start();// 启动该 Timer,以使它开始向其侦听器发送操作事件。
		}

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

	class BookBackActionListener implements ActionListener { // 添加图书归还按钮的事件监听器
		private final DefaultTableModel model;

		public BookBackActionListener(DefaultTableModel model) {
			this.model = model;
		}

		public void actionPerformed(ActionEvent e) {
			// 自动生成方法存根
			if (readerISBNs == null) {
				JOptionPane.showMessageDialog(null, "请输入读者编号!");
			} else {
				// System.out.print(bookISBNs == null);
				if (table.getSelectedRow() == -1) {
					JOptionPane.showMessageDialog(null, "请选择要归还的图书");
					return;
				}
				int i = Dao.updateBookBack(bookISBNs, readerISBNs, id);
				System.out.println("i = " + i);
				if (i == 1) {
					int j = Dao.updateReaderBackBook(readerISBNs);
					System.out.println("j = " + j);
					if (j == 1) {
						int selectedRow = table.getSelectedRow();
						model.removeRow(selectedRow);
						JOptionPane.showMessageDialog(null, "还书操作完成!");
					} else {
						Dao.updateBookBackRollBack(bookISBNs, readerISBNs, id);
						JOptionPane.showMessageDialog(null,
								"图书归还失败!请重新登入!在进行操作!");
					}
				} else {
					JOptionPane.showMessageDialog(null, "图书归还失败!请重新登入!在进行操作!");
				}
			}
		}
	}

	class CloseActionListener implements ActionListener { // 添加关闭按钮的事件监听器
		public void actionPerformed(ActionEvent e) {
			doDefaultCloseAction();
		}
	}
}

⌨️ 快捷键说明

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