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

📄 returnbook.java

📁 Java Swing写的图书馆管理系统
💻 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 + -