📄 bookborrowiframe.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 + -