📄 bookmanage.java
字号:
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 + -