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

📄 bookmanage.java

📁 基于javaSwing的图书馆信息管理系统 使用oracle数据库连接
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package com.lib.gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.sql.Date;
import java.util.Iterator;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import com.lib.Main;
import com.lib.db.Book;
import com.lib.db.Borrower;
import com.lib.db.Category;
import com.lib.db.Detail;
import com.lib.db.Publisher;
import com.lib.db.oper.BookOper;
import com.lib.db.oper.BorrowerOper;
import com.lib.db.oper.CategoryOper;
import com.lib.db.oper.DetailOper;
import com.lib.db.oper.Login;
import com.lib.db.oper.PublisherOper;

public class BookManage extends JFrame {
	// 一页几行
	private static final int PAGESIZE = 3;

	// 当前页
	private static int pageNOW = 1;

	// 总页数
	private static int pageNO = 0;

	private JPanel jContentPane = null;

	private JToolBar jToolBar = null;

	private JToolBar jToolBar_isbn = null;

	private JToolBar jToolBar_book = null;

	private JToolBar jToolBar_author = null;

	private JToolBar jToolBar_category = null;

	private JToolBar jToolBar_publisher = null;

	private JToolBar jToolBar_unitprice = null;

	private JToolBar jToolBar_copies = null;

	private JToolBar jToolBar_stocks = null;

	private JToolBar jToolBar_fine = null;

	private JToolBar jToolBar_isnew = null;

	private JLabel jLabel_isbn = null;

	private JLabel jLabel_book = null;

	private JLabel jLabel_author = null;

	private JLabel jLabel_category = null;

	private JLabel jLabel_publisher = null;

	private JLabel jLabel_unitprice = null;

	private JLabel jLabel_copies = null;

	private JLabel jLabel_stocks = null;

	private JLabel jLabel_fine = null;

	private JTextField jTextField_isbn = null;

	private JTextField jTextField_book = null;

	private JTextField jTextField_author = null;

	private JTextField jTextField_unitprice = null;

	private JTextField jTextField_copies = null;

	private JTextField jTextField_fine = null;

	private JTextField jTextField_stocks = null;

	private JLabel jLabel_isnew = null;

	private JCheckBox jCheckBox_isnew = null;

	private JToolBar jToolBar_space = null;

	private JTextArea jTextArea_space = null;

	private JTextField jTextField_search = null;

	private JScrollPane jScrollPane_book = null;

	private JTable jTable_book = null;

	private JComboBox jComboBox_category = null;

	private JComboBox jComboBox_publisher = null;

	// 分页显示
	public void pagination(int page) {
		TableModel model = getJTable_book().getModel();
		DefaultTableModel tablemodel = (DefaultTableModel) model;
		Iterator iter = BookOper.pagination(page, PAGESIZE).iterator();
		int counts = tablemodel.getRowCount();

		for (int i = counts - 1; i >= 0; i--) {
			tablemodel.removeRow(i);
		}

		while (iter.hasNext()) {
			Book value = (Book) iter.next();
			String isNew = value.getIsNew();
			String n = " ";
			if (isNew.equals("1")) {
				n = "新书";
			}
			// 编号","书名","作者","类型","出版社","单价","副本数量","库存数量","日罚金","是否新书"};
			Object[] obj = { value.getIsbn(), value.getBook(),
					value.getAuthor(), value.getCategory(),
					value.getPublisher(), value.getUnitprice(),
					value.getCopies(), value.getStocks(), value.getFine(), n };
			tablemodel.addRow(obj);
		}
	}

	// 用flag来标识查找方式
	// 0----查找全部
	// 1----新书推荐
	// 2----模糊查找
	private void search(int flag) {
		TableModel model = getJTable_book().getModel();
		DefaultTableModel tablemodel = (DefaultTableModel) model;
		Iterator iter = null;
		if (flag == 2) {
			iter = BookOper.getInfo(flag,
					getJTextField_search().getText().trim()).iterator();
		} else {
			iter = BookOper.getInfo(flag, null).iterator();
		}
		int counts = tablemodel.getRowCount();
		for (int i = counts - 1; i >= 0; i--) {
			tablemodel.removeRow(i);
		}
		while (iter.hasNext()) {
			Book value = (Book) iter.next();
			String isNew = value.getIsNew();
			String n = " ";
			if (isNew.equals("1")) {
				n = "新书";
			}
			// 编号","书名","作者","类型","出版社","单价","副本数量","库存数量","日罚金","是否新书"};
			Object[] obj = { value.getIsbn(), value.getBook(),
					value.getAuthor(), value.getCategory(),
					value.getPublisher(), value.getUnitprice(),
					value.getCopies(), value.getStocks(), value.getFine(), n };
			tablemodel.addRow(obj);
		}
	}

	// 是否有图书超过借阅期限,以显示 是否要交罚金
	private boolean outDate = false;

	private void mySearch(int flag) {
		TableModel model = getJTable_mybook().getModel();
		DefaultTableModel tablemodel = (DefaultTableModel) model;
		Iterator iter = null;
		// 查找当前借阅者 未归还书 或 所有记录
		if (flag == 1 || flag == 2) {
			iter = DetailOper.getInfo(flag, Login.BORR.getBorrower_id())
					.iterator();
		} else if (flag == 4) {
			iter = DetailOper
					.getUrgeInfo(Login.BORR.getBorrower_id(), up, down)
					.iterator();
		}

		int counts = tablemodel.getRowCount();
		for (int i = counts - 1; i >= 0; i--) {
			tablemodel.removeRow(i);
		}

		Date c_date = DetailOper.getSysdate();
		System.out.println("当前日期:" + c_date);
		System.out.println("当前日期(毫秒):" + c_date.getTime());
		long span = (long) spanDate * 86400000;
		// 7776000000
		// 12960000000
		// long span = spanDate * 24 * 60 * 60 * 1000;//不可用整型和双精度型混合计算,会计算成负数
		System.out.println("期限(毫秒):" + span);

		while (iter.hasNext()) {
			Detail value = (Detail) iter.next();
			System.out.println(value.getBook() + "------------>");
			// "流水号", "书名","借阅日期", "是否续借", "续借日期", "是否已归还","归还日期", "须交罚金"};
			// 须交罚金计算:(当前日期 - (借书日期或续借日期+90天/150天)) * 此书日罚金
			long fine = 0;
			float ufine = 0f;

			// Date currentDate = new Date(c_date.getTime());
			Date borrowDate = value.getBorrow_date();
			System.out.println("借书日期:" + borrowDate);
			System.out.println("借书日期(毫秒):" + borrowDate.getTime());
			// int shoudReturnDay= borrowDate.getDate();
			// int shoudReturnMonth= borrowDate.getMonth();
			// int shoudReturnpageaR= borrowDate.getpagear();
			// 可借用时间 90天/150天

			long shoudReturnTime = borrowDate.getTime() + span;
			Date shoudReturnDate = new Date(shoudReturnTime);

			String isRenew = value.getIsRenew();
			String n = "否";
			if (isRenew.equals("1")) {
				n = "是";
				// 如果已经续借
				// 重新计算应归还时间
				System.out.println("已经续借");
				Date renewDate = value.getRenew_date();
				shoudReturnTime = renewDate.getTime() + span;
			}
			System.out.println("要还书日期:" + shoudReturnDate);
			System.out.println("要还书日期(毫秒):" + shoudReturnTime);

			String isReturn = value.getIsReturn();
			String r = "否";
			if (isReturn.equals("1")) {
				// 永远来不到的地方.....
				r = "是";
				// 如果已经归还,则罚金指 已交罚金,用于查询
				// 疯子...这样转!!!!!
				System.out.println("已经归还");
				fine = (long) (float) value.getFine();
			} else {
				System.out.println("未归还");
				// 未归还,则罚金指 须交罚金
				// 须交罚金计算:(当前日期 - (借书日期+90/150天)) * 此书日罚金(为负则说明不用交)
				if (c_date.getTime() > shoudReturnTime) {
					// 先找到此书日罚金
					ufine = BookOper.getFine(value.getIsbn());
					long outMilliseconds = c_date.getTime() - shoudReturnTime;
					long oD = outMilliseconds / (24 * 60 * 60 * 1000);
					int outDay = (int) oD;
					System.out.println("过期天数 :" + outDay);
					fine = outDay * (long) ufine;
				}

			}
			System.out.println("罚金计算结果:" + fine);
			if (fine > 0) {
				// 一旦有书过期,记录 借阅者要交罚金flag
				outDate = true;
			}
			// /计算出罚金后,就要显示提示!!!!!!

			Object[] obj = { value.getDetail_id(), value.getBook(),
					value.getBorrow_date(), n, value.getRenew_date(), r,
					value.getReturn_date(), fine };
			tablemodel.addRow(obj);
		}

	}

	/**
	 * This is the default constructor
	 */
	public BookManage() {
		super();
		initialize();
	}

	public Main main = null;

	private int spanDate = 0;

	private int down = 0;

	private int up = 0;

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(800, 600);
		this.setLocation(200, 50);
		this.setContentPane(getJContentPane());
		if (Login.FLAG == 'a') {
			this.setTitle("图书信息维护");
		} else if (Login.FLAG == 'b') {
			this.setTitle("图书信息");
		} else {
			this.setTitle("图书信息查询");
		}
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				// DBConnection.closeConnection();
				if (main != null) {
					main.setVisible(true);
				}
			}
		});
		search(0);

		/**
		 * 权限控制
		 */
		if (Login.FLAG == 'a') {
			jContentPane.remove(getJTabbedPane());			
			jContentPane.add(getJScrollPane_book(),
					java.awt.BorderLayout.CENTER);
			jContentPane.add(getJPanel_info(), java.awt.BorderLayout.NORTH);
			jContentPane.add(getJPanel_pagination(), java.awt.BorderLayout.SOUTH);			
			jTextField_sp.setVisible(true);
			jTextField_search.setPreferredSize(new java.awt.Dimension(620, 22));
			jButton_borrow.setVisible(false);
		} else if (Login.FLAG == 'b') {
			// 初始化可借阅期限
			if (!Login.BORR.getIsStudent().equals("1")) {
				spanDate = 150;
			} else {
				spanDate = 90;
			}
			jTextField_sp.setVisible(false);
			jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);
			jTextField_search.setPreferredSize(new java.awt.Dimension(500, 22));
			jScrollPane_book.setPreferredSize(new java.awt.Dimension(740, 440));
			jScrollPane_mybook
					.setPreferredSize(new java.awt.Dimension(740, 480));
			jTabbedPane.addTab("查询图书", null, getJPanel_book(), null);
			jTabbedPane.addTab("已借图书", null, getJPanel_mybook(), null);
			jButton_borrow.setVisible(true);
			jToolBar.setVisible(false);
			mySearch(1);
			RefreshTip();

			// 检查 借阅者有没有图书过期
			if (outDate) {
				JOptionPane.showMessageDialog(null, "你有图书已过借阅期限,请先还书并交罚金再借书!");

			}

			// 初始化 学生和老师 的借阅期限
			if (!Login.BORR.getIsStudent().equals("0")) {
				// 学生
				down = 80;
				up = 90;
			} else {
				down = 140;
				up = 150;
			}

		} else {
			jContentPane.remove(getJTabbedPane());
			jContentPane.add(getJScrollPane_book(),
					java.awt.BorderLayout.CENTER);
			jContentPane.add(getJPanel_info(), java.awt.BorderLayout.NORTH);
			jContentPane.add(getJPanel_pagination(), java.awt.BorderLayout.SOUTH);
			jTextField_search.setPreferredSize(new java.awt.Dimension(610, 22));
			
			jToolBar.setVisible(false);
			jButton_borrow.setVisible(false);
			jTextField_sp.setVisible(false);
		}
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			// jContentPane.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
			jContentPane.add(getJToolBar(), java.awt.BorderLayout.EAST);
			jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);
		}
		return jContentPane;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -