📄 borrowbook.java
字号:
package library.iframe;
import java.awt.BorderLayout;
import java.awt.Dimension;
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.text.SimpleDateFormat;
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.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.Timer;
import javax.swing.table.DefaultTableModel;
import library.DBConnectOperation.Dbo;
import library.model.Book;
import library.model.Operator;
import library.model.Reader;
public class BorrowBook extends JInternalFrame {
private Operator currentOperator=BookLogin.getOperator();
private JTable table;
private JTextField readerId;
private JTextField readerName;
private JTextField maxBorrowNumber;
private JTextField keepMoney;
private JTextField ISBN;
private JTextField bookName;
private JTextField bookType;
private JTextField bookPrice;
private JTextField currentTime;
private JButton saveBorrowButton;
private JButton clearButton;
private JTextField operator;
private Reader reader;
private Book book;
private DefaultTableModel model=new DefaultTableModel(); //设置表的默认显示模型
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
private final String columnName[]={"书籍编号","借书日期","应还日期","读者编号"};
public BorrowBook(){
super();
//System.out.println(currentOperator.getName());
setBounds(100, 100, 550, 400);
setTitle("图书借阅");
setClosable(true);
setIconifiable(true);
setResizable(false);
((BorderLayout) getContentPane().getLayout()).setVgap(5);
//设置中央面板,用于显示读者的借阅信息
JPanel panelCenter=new JPanel();
getContentPane().add(panelCenter);
JScrollPane scrollPane=new JScrollPane();
scrollPane.setPreferredSize(new Dimension(500,120));
panelCenter.add(scrollPane);
table=new JTable();
scrollPane.setViewportView(table);
model.setColumnIdentifiers(columnName);
table.setModel(model);
//设置顶部面板,用于显示指定的读者信息和制定的图书信息
JPanel panelTop=new JPanel();
//panelTop.setPreferredSize(new Dimension(0,120));
getContentPane().add(panelTop,BorderLayout.NORTH);
JSplitPane splitPane=new JSplitPane(); //设置分割面板,将一个面板分为两个,分别显示指定的读者信息和指定的图书信息
panelTop.add(splitPane);
//设置顶部左面板
JPanel panelTopLeft=new JPanel();
panelTopLeft.setPreferredSize(new Dimension(240,120));
splitPane.setLeftComponent(panelTopLeft);
GridLayout gridLayoutLeft=new GridLayout(0,2);
gridLayoutLeft.setVgap(10);
panelTopLeft.setLayout(gridLayoutLeft);
JLabel labelReaderId=new JLabel();
labelReaderId.setText("读者编号:");
labelReaderId.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopLeft.add(labelReaderId);
readerId=new JTextField();
readerId.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent e){
if(Dbo.selectReaderId(readerId.getText())==null){
JOptionPane.showMessageDialog(null,"输入的读者条形码有误,该读者没有注册!");
readerId.setText("");
return;
}
else if((reader=Dbo.selectReader(readerId.getText()))!=null){
readerName.setText(reader.getName());
maxBorrowNumber.setText(new Integer(reader.getAvailableNumber()).toString());
keepMoney.setText(new Integer(reader.getKeepMoney()).toString());
//System.out.println(getBackTime());
}
}
});
panelTopLeft.add(readerId);
JLabel labelReaderName=new JLabel();
labelReaderName.setText("读者姓名:");
labelReaderName.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopLeft.add(labelReaderName);
readerName=new JTextField();
readerName.setEditable(false);
panelTopLeft.add(readerName);
JLabel labelBorrowNumber=new JLabel();
labelBorrowNumber.setText("可借阅数量:");
labelBorrowNumber.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopLeft.add(labelBorrowNumber);
maxBorrowNumber=new JTextField();
maxBorrowNumber.setEditable(false);
panelTopLeft.add(maxBorrowNumber);
JLabel labelKeepMoney=new JLabel();
labelKeepMoney.setText("押金:");
labelKeepMoney.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopLeft.add(labelKeepMoney);
keepMoney=new JTextField();
keepMoney.setEditable(false);
panelTopLeft.add(keepMoney);
//设置顶部右面板
JPanel panelTopRight=new JPanel();
GridLayout gridLayoutRight=new GridLayout(0,2);
gridLayoutRight.setVgap(10);
panelTopRight.setLayout(gridLayoutRight);
panelTopRight.setPreferredSize(new Dimension(240,120));
splitPane.setRightComponent(panelTopRight);
JLabel labelISBN=new JLabel();
labelISBN.setText("书籍编号:");
labelISBN.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopRight.add(labelISBN);
ISBN=new JTextField();
ISBN.addFocusListener(new FocusAdapter(){
public void focusLost(FocusEvent fe){
if(Dbo.selectBookISBN(ISBN.getText())==null){
JOptionPane.showMessageDialog(null,"输入的图书条形码有误,该图书没有入库!");
ISBN.setText("");
return;
}
else if((book=Dbo.selectBook(ISBN.getText()))!=null){
bookName.setText(book.getBookname());
bookType.setText(Dbo.selectBookTypeName(book.getTypeid()));
bookPrice.setText(new Float(book.getPrice()).toString());
}
}
});
panelTopRight.add(ISBN);
JLabel labelBookName=new JLabel();
labelBookName.setText("书籍名称:");
labelBookName.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopRight.add(labelBookName);
bookName=new JTextField();
bookName.setEditable(false);
panelTopRight.add(bookName);
JLabel labelBookType=new JLabel();
labelBookType.setText("书籍类别:");
labelBookType.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopRight.add(labelBookType);
bookType=new JTextField();
bookType.setEditable(false);
panelTopRight.add(bookType);
JLabel labelBookPrice=new JLabel();
labelBookPrice.setText("书籍价格:");
labelBookPrice.setHorizontalAlignment(SwingConstants.RIGHT);
panelTopRight.add(labelBookPrice);
bookPrice=new JTextField();
bookPrice.setEditable(false);
panelTopRight.add(bookPrice);
//设置底部面板,用于显示操作员和时间,并添加相关按钮
JPanel panelBottom=new JPanel();
GridLayout gridLayoutBottom=new GridLayout(0,3);
gridLayoutBottom.setVgap(10);
gridLayoutBottom.setHgap(20);
panelBottom.setLayout(gridLayoutBottom);
getContentPane().add(panelBottom,BorderLayout.SOUTH);
JLabel labelCurrentTime=new JLabel();
labelCurrentTime.setText("当前时间:");
labelCurrentTime.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottom.add(labelCurrentTime);
currentTime=new JTextField();
currentTime.setHorizontalAlignment(SwingConstants.CENTER);
currentTime.setEditable(false);
currentTime.addActionListener(new TimeActionAdapter());
panelBottom.add(currentTime);
saveBorrowButton=new JButton();
saveBorrowButton.setText("借出当前图书");
saveBorrowButton.addActionListener(new SaveActionAdapter());
panelBottom.add(saveBorrowButton);
JLabel labelCurrentOperator=new JLabel();
labelCurrentOperator.setText("操作员:");
labelCurrentOperator.setHorizontalAlignment(SwingConstants.RIGHT);
panelBottom.add(labelCurrentOperator);
operator=new JTextField();
operator.setHorizontalAlignment(SwingConstants.CENTER);
operator.setText(currentOperator.getName());
operator.setEditable(false);
panelBottom.add(operator);
clearButton=new JButton();
clearButton.setText("清除表格中的所有记录");
clearButton.addActionListener(new ClearActionListener(model));
panelBottom.add(clearButton);
setVisible(true);
}
class TimeActionAdapter implements ActionListener{
public TimeActionAdapter(){
Timer timer=new Timer(1000,this);
timer.start();
}
public void actionPerformed(ActionEvent e){
currentTime.setText(dateFormat.format(new Date()).toString()); //按照指定格式输出时间和日期
}
}
class ClearActionListener implements ActionListener{
private DefaultTableModel model;
public ClearActionListener(DefaultTableModel model){
this.model=model;
}
public void actionPerformed(ActionEvent e){
if(model.getRowCount()!=0){
while(model.getRowCount()!=0)
model.removeRow(model.getRowCount()-1);
ISBN.setText("");
bookName.setText("");
bookType.setText("");
bookPrice.setText("");
readerName.setText("");
readerId.setText("");
maxBorrowNumber.setText("");
keepMoney.setText("");
return;
}
else {
JOptionPane.showMessageDialog(null, "表格中暂时没有数据!");
return;
}
}
}
class AddTableRow{
String str[]=new String[4];
public AddTableRow(){
str[0]=ISBN.getText();
str[1]=currentTime.getText();
str[2]=dateFormat.format(getBackTime());
str[3]=readerId.getText();
}
public void add(){
model.addRow(str);
}
public String getStr0(){
return this.str[0];
}
public String getStr1(){
return this.str[1];
}
public String getStr2(){
return this.str[2];
}
public String getStr3(){
return this.str[3];
}
}
public Date getBackTime(){
int i=0;
Date currentDate = null;
try{
currentDate=dateFormat.parse(currentTime.getText());
}
catch(Exception e){
e.printStackTrace();
}
Date backDate=new Date();
//当读者类型数据库中最大借阅天数字段为空时,则读取图书类别数据库中的最大借阅天数
if(Dbo.selectKeepDaysofReader(reader.getTypeId())!=0){
i=Dbo.selectKeepDaysofReader(reader.getTypeId());
}
else{
if(book!=null)
i=Dbo.selectKeepDaysofBook(book.getTypeid());
else {
JOptionPane.showMessageDialog(null, "图书ISBN不能为空!");
return null;
}
}
//System.out.println(i);
backDate.setDate(currentDate.getDate()+i);
return backDate;
}
public class SaveActionAdapter implements ActionListener{
public void actionPerformed(ActionEvent e){
if(readerId.getText().length()==0){
JOptionPane.showMessageDialog(null, "读者编号不能为空!");
return;
}
if(ISBN.getText().length()==0){
JOptionPane.showMessageDialog(null, "图书编号不能为空!");
return;
}
if(Dbo.selectBorrowNumber(readerId.getText())==reader.getAvailableNumber()){
JOptionPane.showMessageDialog(null, "该读者借阅读书数目已经达到最大借阅数目,本次借阅失败!");
return;
}
int i=Dbo.selectHasBorrowed(readerId.getText(),ISBN.getText());
if(i==1){
JOptionPane.showMessageDialog(null, "要添加的借阅信息已经存在");
return;
}
else{
AddTableRow addTableRow=new AddTableRow();
addTableRow.add();
String sql="insert into tb_borrow(readerid,bookISBN,operatorID,borrowDate,backDate) values('"+addTableRow.getStr3()+"','"+addTableRow.getStr0()+"',"
+currentOperator.getId()+",'"+addTableRow.getStr1()+"','"+addTableRow.getStr2()+"')";
int i1=Dbo.executeUpdate(sql);
if(i1!=-1){
JOptionPane.showMessageDialog(null,"添加成功");
return;
}
else{
JOptionPane.showMessageDialog(null,"添加失败,请检查数据源");
return;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -