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

📄 searchbook.java

📁 java语言编写的基于sql2000开发的图书馆管理系统
💻 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 + -