📄 returnbook.java
字号:
package library.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.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
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.SwingConstants;
import javax.swing.Timer;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import library.DBConnectOperation.Dbo;
import library.model.Book;
import library.model.BookType;
import library.model.BorrowBookEntity;
import library.model.Operator;
import library.model.Reader;
import library.model.ReaderType;
public class ReturnBook extends JInternalFrame {
private JTextField readerId;
private JTextField ISBN;
private JTable table;
private JTextField borrowDate;
private JTextField maxKeepDays;
private JTextField actualDays;
private JTextField expiredDays;
private JTextField fkMoney;
private JTextField currentTime;
private JTextField operator;
private JButton returnButton;
private JButton cancelButton;
private Operator currentOperator;
private ArrayList arrayList;
private Book book;
private BookType bookType;
private Reader reader;
private ReaderType readerType;
private int borrowDays; //已借阅的天数
private BorrowBookEntity borrowBookEntity;
private String str[]=new String[7];
private final SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
private DefaultTableModel model=new DefaultTableModel();
private final String[] columnNames = { "图书名称", "图书条形码","图书类别","读者姓名","借书时间","归还时间","允许借阅天数"};
public ReturnBook(){
super();
setBounds(100, 100, 600, 490);
setTitle("图书归还");
setClosable(true);
setIconifiable(true);
JPanel panelUp=new JPanel();
panelUp.setBorder(new TitledBorder(null,"基本信息"));
panelUp.setPreferredSize(new Dimension(0, 210));
getContentPane().add(panelUp,BorderLayout.NORTH);
//添加上面板中的内嵌面板,用于添加读者条形码和书号文本框以及表格
JPanel panelUp_Up=new JPanel();
panelUp_Up.setPreferredSize(new Dimension(460,30));
GridLayout gridLayoutUp=new GridLayout(0,4);
gridLayoutUp.setVgap(5);
gridLayoutUp.setHgap(10);
panelUp_Up.setLayout(gridLayoutUp);
panelUp.add(panelUp_Up);
JLabel labelReaderId=new JLabel();
labelReaderId.setText("读者编号:");
labelReaderId.setHorizontalAlignment(SwingConstants.RIGHT);
panelUp_Up.add(labelReaderId);
readerId=new JTextField();
readerId.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
if(readerId.getText().length()>=10){
ISBN.requestFocus();
//System.out.println("run");
}
//System.out.println(readerId.getText().length());
}
});
readerId.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent fe){
if(readerId.getText().length()==0){
JOptionPane.showMessageDialog(null,"读者编号不能为空!");
return;
}
if(Dbo.selectReaderId(readerId.getText())==null){
JOptionPane.showMessageDialog(null, "该读者编号不存在!");
readerId.setText("");
ISBN.setText("");
borrowDate.setText("");
maxKeepDays.setText("");
actualDays.setText("");
expiredDays.setText("");
fkMoney.setText("");
return;
}
else {
if(ISBN.getText().length()==0){
reader=Dbo.selectReader(readerId.getText());
arrayList=Dbo.selectAllBorrowBook(readerId.getText());
while(table.getRowCount()>0){
model.removeRow(table.getRowCount()-1);
}
if(arrayList.size()>0){
for(int i=0;i<arrayList.size();i++){
borrowBookEntity=(BorrowBookEntity) arrayList.get(i);
addTableRow(borrowBookEntity);
}
}
}
}
}
});
panelUp_Up.add(readerId);
JLabel labelISBN=new JLabel();
labelISBN.setText("图书编号:");
labelISBN.setHorizontalAlignment(SwingConstants.RIGHT);
panelUp_Up.add(labelISBN);
ISBN=new JTextField();
ISBN.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
if(ISBN.getText().length()>=13){
returnButton.requestFocus();
}
}
});
ISBN.addFocusListener(new FocusAdapter(){
private int expiredDaysNumber;
private float fkMoneyNumber;
public void focusLost(FocusEvent e){
if(readerId.getText().length()==0){
JOptionPane.showMessageDialog(null, "读者编号不能为空!");
return;
}
if(ISBN.getText().length()==0){
JOptionPane.showMessageDialog(null,"图书编号不能为空!");
return;
}
while(table.getRowCount()>0){
model.removeRow(table.getRowCount()-1);
}
borrowBookEntity=Dbo.selectSpecifiedBorrowInfo(readerId.getText(), ISBN.getText());
if(borrowBookEntity!=null){
addTableRow(borrowBookEntity);
borrowDate.setText(str[4]);
maxKeepDays.setText(str[6]);
try {
long borrowBookTime,returnBookTime;
Date tempDate1=format.parse(borrowDate.getText());
borrowBookTime=tempDate1.getTime(); //毫秒
tempDate1=format.parse(currentTime.getText());
returnBookTime=tempDate1.getTime(); //毫秒
borrowDays=(int)(returnBookTime-borrowBookTime)/(1000*3600*24);
if((returnBookTime-borrowBookTime)/(1000*3600*24)-borrowDays>0)
borrowDays++; //向上取整
actualDays.setText(new Integer(borrowDays).toString());
} catch (ParseException e1) {
e1.printStackTrace();
}
if(borrowDays<=new Integer(maxKeepDays.getText()).intValue()){
expiredDays.setText("没有超期!");
}
else{
expiredDaysNumber=borrowDays-new Integer(maxKeepDays.getText()).intValue();
expiredDays.setText(new Integer(expiredDaysNumber).toString());
}
fkMoneyNumber=expiredDaysNumber*bookType.getFk()/(float)100;
fkMoney.setText(new Float(fkMoneyNumber).toString());
}
else{
JOptionPane.showMessageDialog(null, "该借阅信息不存在!");
ISBN.setText("");
borrowDate.setText("");
maxKeepDays.setText("");
actualDays.setText("");
expiredDays.setText("");
fkMoney.setText("");
return;
}
}
});
panelUp_Up.add(ISBN);
//添加上面板中的下内嵌面板,用于添加显示借阅信息的表格
JPanel panelUp_Down=new JPanel();
panelUp.add(panelUp_Down);
JScrollPane scrollPane=new JScrollPane();
scrollPane.setPreferredSize(new Dimension(560,130));
panelUp_Down.add(scrollPane);
table=new JTable();
table.setModel(model);
model.setColumnIdentifiers(columnNames);
scrollPane.setViewportView(table);
table.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent me){
int row=table.getSelectedRow();
if(row!=-1){
ISBN.setText((String) table.getValueAt(row,1));
ISBN.requestFocus(); //转移焦点
table.requestFocus();
}
}
});
//设置中央面板,用于添加各种文本框及相应按钮
JPanel panelCenter=new JPanel();
getContentPane().add(panelCenter);
//设置中央左面板,用于添加显示罚款信息的文本框
JPanel panelCenterLeft=new JPanel();
GridLayout gridLayoutLeft=new GridLayout(0,2);
gridLayoutLeft.setVgap(15);
panelCenterLeft.setLayout(gridLayoutLeft);
panelCenterLeft.setBorder(new TitledBorder(null,"罚款信息"));
panelCenterLeft.setPreferredSize(new Dimension(250,230));
panelCenter.add(panelCenterLeft);
JLabel labelBorrowDate=new JLabel();
labelBorrowDate.setText("借书日期:");
labelBorrowDate.setHorizontalAlignment(SwingConstants.RIGHT);
panelCenterLeft.add(labelBorrowDate);
borrowDate=new JTextField();
borrowDate.setEditable(false);
panelCenterLeft.add(borrowDate);
JLabel labelMaxKeepDays=new JLabel();
labelMaxKeepDays.setText("规定天数:");
labelMaxKeepDays.setHorizontalAlignment(SwingConstants.RIGHT);
panelCenterLeft.add(labelMaxKeepDays);
maxKeepDays=new JTextField();
maxKeepDays.setEditable(false);
panelCenterLeft.add(maxKeepDays);
JLabel labelActualDays=new JLabel();
labelActualDays.setText("实际天数:");
labelActualDays.setHorizontalAlignment(SwingConstants.RIGHT);
panelCenterLeft.add(labelActualDays);
actualDays=new JTextField();
actualDays.setEditable(false);
panelCenterLeft.add(actualDays);
JLabel labelExpiredDays=new JLabel();
labelExpiredDays.setText("超出天数:");
labelExpiredDays.setHorizontalAlignment(SwingConstants.RIGHT);
panelCenterLeft.add(labelExpiredDays);
expiredDays=new JTextField();
expiredDays.setEditable(false);
panelCenterLeft.add(expiredDays);
JLabel labelFkMoney=new JLabel();
labelFkMoney.setText("罚款金额(元):");
labelFkMoney.setHorizontalAlignment(SwingConstants.RIGHT);
panelCenterLeft.add(labelFkMoney);
fkMoney=new JTextField();
fkMoney.setEditable(false);
panelCenterLeft.add(fkMoney);
//设置中央右面板,用于显示系统信息和相应按钮
JPanel panelCenterRight=new JPanel();
panelCenterRight.setBorder(new TitledBorder(null,"系统信息"));
panelCenterRight.setPreferredSize(new Dimension(280,230));
panelCenterRight.setLayout(new BorderLayout());
panelCenter.add(panelCenterRight);
//添加中央右侧上面板,用于显示系统信息
JPanel panelCenterRightUp=new JPanel();
panelCenterRightUp.setPreferredSize(new Dimension(260,80));
GridLayout gridLayoutCenterRightUp=new GridLayout(0,2);
gridLayoutCenterRightUp.setVgap(30);
panelCenterRightUp.setLayout(gridLayoutCenterRightUp);
panelCenterRight.add(panelCenterRightUp);
JLabel labelCurrentTime=new JLabel();
labelCurrentTime.setText("当前时间:");
labelCurrentTime.setHorizontalAlignment(SwingConstants.RIGHT);
panelCenterRightUp.add(labelCurrentTime);
currentTime=new JTextField();
currentTime.setEditable(false);
currentTime.addActionListener(new TimeActionListener());
panelCenterRightUp.add(currentTime);
JLabel labelOperator=new JLabel();
labelOperator.setText("操作员");
labelOperator.setHorizontalAlignment(SwingConstants.RIGHT);
panelCenterRightUp.add(labelOperator);
operator=new JTextField();
operator.setEditable(false);
currentOperator=BookLogin.getOperator();
operator.setText(currentOperator.getName());
panelCenterRightUp.add(operator);
//设置中央右下面板,用于添加相应按钮
JPanel panelCenterRightDown=new JPanel();
FlowLayout flowLayoutRightDown=new FlowLayout();
flowLayoutRightDown.setVgap(35);
flowLayoutRightDown.setHgap(20);
panelCenterRightDown.setLayout(flowLayoutRightDown);
panelCenterRight.add(panelCenterRightDown,BorderLayout.SOUTH);
returnButton=new JButton();
returnButton.setText("归还图书");
returnButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(readerId.getText().length()==0){
JOptionPane.showMessageDialog(null, "读者编号不能为空!");
return;
}
if(ISBN.getText().length()==0){
JOptionPane.showMessageDialog(null,"图书编号不能为空!");
return;
}
String sql="delete from tb_borrow where readerid='"+readerId.getText()
+"' and bookISBN='"+ISBN.getText()+"'";
if(Dbo.executeUpdate(sql)!=-1){
JOptionPane.showMessageDialog(null, "图书归还成功!");
ISBN.setText("");
borrowDate.setText("");
maxKeepDays.setText("");
actualDays.setText("");
expiredDays.setText("");
fkMoney.setText("");
arrayList=Dbo.selectAllBorrowBook(readerId.getText());
while(table.getRowCount()>0){
model.removeRow(table.getRowCount()-1);
}
if(arrayList.size()>0){
for(int i=0;i<arrayList.size();i++){
borrowBookEntity=(BorrowBookEntity) arrayList.get(i);
addTableRow(borrowBookEntity);
}
}
}
else{
JOptionPane.showMessageDialog(null, "图书归还失败!");
return;
}
}
});
panelCenterRightDown.add(returnButton);
cancelButton=new JButton();
cancelButton.setText("返回");
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}
});
panelCenterRightDown.add(cancelButton);
setVisible(true);
}
class TimeActionListener implements ActionListener{
public TimeActionListener(){
Timer timer=new Timer(1000,this);
timer.start();
}
public void actionPerformed(ActionEvent e){
currentTime.setText(format.format(new Date()));
}
}
public void addTableRow(BorrowBookEntity borrowBookEntity){
book=Dbo.selectSpecifiedISBNBook(borrowBookEntity.getISBN());
bookType=Dbo.selectSelectedBookCategory(book.getTypeid()); //查询图书类别
readerType=Dbo.selectSelectedReaderType(reader.getTypeId()); //查询读者类型
str[0]=book.getBookname();
str[1]=book.getISBN();
str[2]=bookType.getTypeName();
str[3]=reader.getName();
try {
str[4]=format.format(format.parse(borrowBookEntity.getBorrowDate()));
str[5]=format.format(format.parse(borrowBookEntity.getBackDate()));
} catch (ParseException e) {
e.printStackTrace();
}
if(readerType.getMaxKeepDays()==0){
str[6]=new Integer(Dbo.selectKeepDaysofBook(bookType.getId())).toString();
}
else str[6]=new Integer(readerType.getMaxKeepDays()).toString();
model.addRow(str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -