📄 searchbook.java
字号:
package reception;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.sql.ResultSet;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import main.DataBase;
class SearchBook extends JPanel {
private static final long serialVersionUID = 1L;
private JLabel jLabel = null;
private JComboBox keyword = null;
private JTextField valueOfKeyword = null;
private JButton searchButton = null;
private JScrollPane jScrollPane = null;
private JTable jTable = null;
private JLabel jLabel1 = null;
private JTextField member = null;
private JButton borrow = null;
private DefaultTableModel modelForTable;
/**
* This is the default constructor
*/
public SearchBook() {
super();
initialize();
//初始化表格
String sql="select isbn,bookname,author,press from " +
"book ";
this.setModelForTable(sql);
this.getJTable().repaint();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(33, 360, 78, 28));
jLabel1.setText("会员号");
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(33, 17, 79, 30));
jLabel.setText("关键字");
this.setSize(580, 400);
this.setLayout(null);
this.add(jLabel, null);
this.add(getKeyword(), null);
this.add(getValueOfKeyword(), null);
this.add(getSearchButton(), null);
this.add(getJScrollPane(), null);
this.add(jLabel1, null);
this.add(getMember(), null);
this.add(getBorrow(), null);
}
/**
* This method initializes keyword
*
* @return javax.swing.JComboBox
*/
private JComboBox getKeyword() {
if (keyword == null) {
keyword = new JComboBox();
keyword.setBounds(new Rectangle(145, 17, 107, 30));
keyword.addItem("ISBN");
keyword.addItem("作者");
keyword.addItem("书名");
}
return keyword;
}
private JTextField getValueOfKeyword() {
if (valueOfKeyword == null) {
valueOfKeyword = new JTextField();
valueOfKeyword.setBounds(new Rectangle(285, 17, 130, 30));
}
return valueOfKeyword;
}
/**
* This method initializes searchButton
*
* @return javax.swing.JButton
*/
private JButton getSearchButton() {
if (searchButton == null) {
searchButton = new JButton();
searchButton.setBounds(new Rectangle(448, 17, 96, 30));
searchButton.setText("查询");
searchButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String keyword = (String) SearchBook.this.getKeyword()
.getSelectedItem();
String sql = "select isbn,bookname,author,press from "
+ "book ";
String requisite = null;
if (keyword.equals("ISBN")) {
requisite = "where isbn='"
+ SearchBook.this.getValueOfKeyword().getText()
+ "'";
} else if (keyword.equals("书名")) {
requisite = "where bookname='"
+ SearchBook.this.getValueOfKeyword().getText()
+ "'";
} else {
requisite = "where author='"
+ SearchBook.this.getValueOfKeyword().getText()
+ "'";
}
sql += requisite;
SearchBook.this.setModelForTable(sql);
SearchBook.this.getJTable().repaint();
}
});
}
return searchButton;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(17, 65, 540, 276));
jScrollPane.setViewportView(getJTable());
}
return jScrollPane;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable() {
if (jTable == null) {
jTable = new JTable();
}
return jTable;
}
/**
* This method initializes member
*
* @return javax.swing.JTextField
*/
private JTextField getMember() {
if (member == null) {
member = new JTextField();
member.setBounds(new Rectangle(145, 360, 120, 28));
}
return member;
}
/**
* This method initializes borrow
*
* @return javax.swing.JButton
*/
private JButton getBorrow() {
if (borrow == null) {
borrow = new JButton();
borrow.setBounds(new Rectangle(285, 360, 70, 28));
borrow.setText("借阅");
borrow.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String member = SearchBook.this.getMember().getText();
String sql = "select * from member where ID_Number='"
+ member + "'";
int i=SearchBook.this.getJTable().getSelectedRow();
if(i>-1){
//已经选择了一本图书
//图书的isbn
String isbn=null;
isbn=(String)SearchBook.this.modelForTable.getValueAt(i,0);
if (DataBase.exist(DataBase.executeQuery(sql))) {
//存在用户
String penaltySql="select * from penalty " +
"where ID_Number='"+member+"'";
if (DataBase.exist(DataBase
.executeQuery(penaltySql))) {
//该用户有罚单未交钱
javax.swing.JOptionPane.showMessageDialog(null,
"图书馆管理系统\n" + "有罚单未交!!\n");
} else {
//用户存在且没有欠款,检查借书数量是否超出限制
String quantitySql = "select count(*) "
+ "as books from member_book,"
+ "borrow_rule,member where "
+ "member.ID_Number=member_book."
+ "ID_Number and "
+ "member.degree=borrow_rule.degree and" +
" member_book.type='借阅' and member." +
"ID_Number='"+member+"'";
ResultSet result=DataBase.executeQuery(quantitySql);
try{
result.next();
//borrowedbooks已经借阅的书籍数量
int borrowedbooks = new Integer(result
.getString("books")).intValue();
// alreadyborrowbooks允许借阅的书籍数量
String alreadyborrowbooksSql = "select borrow_rule.number_rule from member," +
"borrow_rule where member.degree=borrow_rule.degree "
+ "and member.ID_Number='"+member+"'";
ResultSet result1=DataBase.executeQuery(alreadyborrowbooksSql);
result1.next();
int alreadyborrowbooks=new Integer(result1
.getString("number_rule")).intValue();
if(borrowedbooks>=alreadyborrowbooks){
//借阅册数超出限制
javax.swing.JOptionPane.showMessageDialog(null,
"图书馆管理系统\n" + "借阅册数超出限制!!\n");
}else{
//借阅册数没有超出限制
//允许借书,看库存是否有剩余,为了编码简单,不允许预约
SearchBook.this.borrow(member, isbn);
}
}catch(Exception ee){
//该用户没有借过书,允许借阅书籍,为了编码简单,不允许预约
SearchBook.this.borrow(member, isbn);
}
}
} else {
//用户不存在
javax.swing.JOptionPane.showMessageDialog(null,
"图书馆管理系统\n" + "用户不存在!!\n");
}
}else{
javax.swing.JOptionPane.showMessageDialog(null,
"图书馆管理系统\n" + "请选择一本书!!\n");
}
}
});
}
return borrow;
}
// 该方法用来给jtable传入数据
private void setModelForTable(String sql) {
String[] englishColumns = { "isbn", "bookname", "author", "press" };
String[] chineseColumns = { "ISBN", "书名", "作者", "出版社" };
DefaultTableModel modelForTable = DataBase.createModelForTable(
englishColumns, chineseColumns, sql);
this.modelForTable=modelForTable;
this.getJTable().setModel(modelForTable);
// this.getJTable().repaint();
}
private void borrow(String member,String isbn){
//当用户满足借书的条件时,调用该方法借书,为简单不考虑预约的情形
//在数据库中添加借书记录
//首先获取今天的日期
//今天日期加上借阅的期限为最晚还书日期
//String today=this.getToday();
//获取该会员可以借书的期限////////////////////////////
String timerule = "select borrow_rule.time_rule from" +
" member,borrow_rule where member.degree=" +
"borrow_rule.degree "
+ "and member.ID_Number='"+member+"'";
ResultSet result1=DataBase.executeQuery(timerule);
int days = 0;
try{
result1.next();
days=new Integer(result1.getString("time_rule")).intValue();
}catch(Exception e){
System.out.println(e);
}
//returnday还书日期
// String returnday=this.getOffsetDate(days);
////////////////////////////////////////////
//查询相关书籍有没有库存,若有则借给学生
String if_remain="select remain_number from book where isbn='"+isbn+"'";
if(DataBase.exist(DataBase.executeQuery(if_remain))){
//在member_book表中添加记录
String sql="insert into member_book(ID_Number,ISBN," +
"borrow_time,should_return_time,type," +
"dalay_or_not)values('"+member+"','"+isbn+"'," +
this.getToday()+","+this.getOffsetDate(days)
+",'"+"借阅"+"',0)";
//System.out.println(sql);
DataBase.execute(sql);
javax.swing.JOptionPane.showMessageDialog(null,
"图书馆管理系统\n" + "借阅成功!!\n"+
"还书日期"+this.getOffsetDate(days)+"\n");
//书籍库存数量减1
String remainminus="update book set remain_number=" +
"remain_number-1 where isbn='"+isbn+"'";
DataBase.execute(remainminus);
}else{
javax.swing.JOptionPane.showMessageDialog(null,
"图书馆管理系统\n" + "该书没有库存!!\n");
}
}
private String getToday(){
//返回今天的日期,格式20071221
String today=null;
String years, months, days;
int dayOfMonth, year, month;
GregorianCalendar calendar = new GregorianCalendar();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH)+1;
dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
// set the corresponding string values for the present date
years = new Integer(year).toString();
months = new Integer(month).toString();
if (month < 10)
months = "0" + months;
days = new Integer(dayOfMonth).toString();
if (dayOfMonth < 10)
days = "0" + days;
today=years+months+days;
return today;
}
private String getOffsetDate(int offset){
//返回从今天后offset天的日期
String day=null;
String years, months, days;
int dayOfMonth, year, month;
GregorianCalendar calendar = new GregorianCalendar();
calendar.add(Calendar.DAY_OF_YEAR, offset);
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH)+1;
dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
// set the corresponding string values for the present date
years = new Integer(year).toString();
months = new Integer(month).toString();
if (month < 10)
months = "0" + months;
days = new Integer(dayOfMonth).toString();
if (dayOfMonth < 10)
days = "0" + days;
day=years+months+days;
return day;
}
} // @jve:decl-index=0:visual-constraint="10,10"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -