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

📄 borrowbook.java

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