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

📄 librarysimulator.java

📁 j2se程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		Box labelbox = Box.createVerticalBox();
		labelbox.add(showBookName);
		labelbox.add(showBookID);
		labelbox.add(showBookAuthor);
		labelbox.add(showBookAvailable);
		labelbox.add(showBookTotal);
		labelbox.add(showBook);
		
		bookButPanel.add( addBookBut );
		bookButPanel.add( adaptBook );
		bookButPanel.add( delBookBut );
		
		bookPanel.setLayout( new BorderLayout() );
		bookPanel.add( labelbox ,BorderLayout.NORTH );
		bookPanel.add( bookList ,BorderLayout.CENTER);
		bookPanel.add( bookButPanel ,BorderLayout.SOUTH );
		
		tabbedPane.addTab( "图书管理", null, bookPanel, "在此处添加删除图书馆图书" );
		
		/**
		 * set up addBookBut action listener
		 */
		addBookBut.addActionListener(new java.awt.event.ActionListener() { 
			public void actionPerformed(java.awt.event.ActionEvent e) {    
				addBookDlg.setBookID(0);
				addBookDlg.setBookTitle("");
				addBookDlg.setAuthor("");
				addBookDlg.setAvailable(0);
				addBookDlg.setTotal(0);
				addBookDlg.show();
				if(addBookDlg.isCancelled()){
					workLogArea.append( "Add book " + addBookDlg.getBookTitle() + ":" + addBookDlg.getBookID() + " --cancelled\n" );
					return;
				}
				String sl = "";
				for( int i = 0 ; i <= bookList.getItemCount()-1 ;i++ ){
					sl = bookList.getItem(i);
					if( addBookDlg.getBookTitle().equals( sl.substring( sl.indexOf('《')+1,sl.indexOf('》')) ) ){
						JOptionPane.showMessageDialog(null,"图书重名");
						return;
					}
					if( addBookDlg.getBookID() == Integer.parseInt( sl.substring(sl.indexOf(':') + 1,sl.indexOf('|') )) ){
						JOptionPane.showMessageDialog(null,"图书ID重复!");
						return;
					}
				}
				/**
				 * 初始化图书
				 */
				BookInfo book = new BookInfo();
				book.setBookName( addBookDlg.getBookTitle() );
				book.setBookID( addBookDlg.getBookID() );
				book.setBookAuthor( addBookDlg.getAuthor() );
				book.setBookTotal( addBookDlg.getTotal() );
				book.setBookAvailable( addBookDlg.getTotal() );
				/**
				 * 初始化图书树
				 */
				bookTree.insertKey( new IntegerKey(addBookDlg.getBookID()),book );
				updateTree();
				/**
				 * 修改treeList
				 */
				bookList.add( " 《" + book.getBookName() + "》 ID:" + book.getBookID() + "|   作者: " + book.getBookAuthor() + "." );
				workLogArea.append( "Add book " + " 《" + book.getBookName() + "》 ID:" + book.getBookID() + "|   作者: " + book.getBookAuthor() + ". --added\n" );
			}
		});
		
		/*
		 * set up addExistentBookBut action listener
		 */
		adaptBook.addActionListener(new java.awt.event.ActionListener() { 
			public void actionPerformed(java.awt.event.ActionEvent e) {
				int lended = 0;
				/**
				 * 获取书号
				 */
				int id = getSelectID( bookList );
				/**
				 * 获取原有图书信息
				 */
				BookInfo book = (BookInfo)bookTree.searchByKey( new IntegerKey(id) );
				lended = book.getBookTotal() - book.getBookAvailable();
				if(book != null){
					addBookDlg.setBookID( book.getBookID() );
					addBookDlg.setBookTitle( book.getBookName() );
					addBookDlg.setAuthor( book.getBookAuthor() );
					addBookDlg.setAvailable( book.getBookAvailable() );
					addBookDlg.setTotal( book.getBookTotal() );
					addBookDlg.setIDadaptable();
					addBookDlg.show();
					if(addBookDlg.isCancelled()){
						workLogArea.append( "Adapt book " + " 《 " + book.getBookName() + " 》 ID:" + book.getBookID() + "|   作者: " + book.getBookAuthor() + ". --Cancelled\n" );
						return;
					}
					/**
					 * 修改图书信息
					 */
					if( addBookDlg.getTotal() < lended ){
						workLogArea.append( "Adapt book " + " 《 " + book.getBookName() + " 》 ID:" + book.getBookID() + "|   作者: " + book.getBookAuthor() + ". total < lended --Failed\n" );
						JOptionPane.showMessageDialog(null,"修改图书总量要考虑到已借出图书的数目");
						return;
					}
					book.setBookName( addBookDlg.getBookTitle() );
					book.setBookID( addBookDlg.getBookID() );
					book.setBookAuthor( addBookDlg.getAuthor() );
					book.setBookTotal( addBookDlg.getTotal() );
					book.setBookAvailable(book.getBookTotal() - lended);
					bookList.replaceItem(" 《 " + book.getBookName() + " 》 ID:" + book.getBookID() + "|   作者: " + book.getBookAuthor() + ".",bookList.getSelectedIndex());
					workLogArea.append( "Adapt book " + " 《 " + book.getBookName() + " 》 ID:" + book.getBookID() + "|   作者: " + book.getBookAuthor() + ". --Success\n" );	
				}
			}
		});
			
		/**
		 * set up delBookBut action listener
		 */
		delBookBut.addActionListener( new java.awt.event.ActionListener(){
			public void actionPerformed( java.awt.event.ActionEvent e ){
				int num = getSelectID( bookList );
				BookInfo book = (BookInfo)bookTree.searchByKey( new IntegerKey( num ) );
				int b = JOptionPane.showConfirmDialog(null,"Do you want to del:" + book.getBookName() + ":" + book.getBookID() );
				if(b == 0){
					bookTree.deleteKey(new IntegerKey(num));
					updateTree();
					bookList.delItem(bookList.getSelectedIndex());
					workLogArea.append( "Delete book " + book.getBookName() + ":" + book.getBookID() + " -- deleted\n" );
				}
				else if(b == 1){
					workLogArea.append( "Delete book " + book.getBookName() + ":" + book.getBookID() + " -- cancelled\n" );
				}
				else{
					workLogArea.append( "Delete book " + book.getBookName() + ":" + book.getBookID() + " -- cancelled\n" );
				}
			}
		} );
			
		bookList.addActionListener( new java.awt.event.ActionListener(){
			public void actionPerformed( java.awt.event.ActionEvent e ){
				int id = getSelectID( bookList );
				BookInfo book = (BookInfo)bookTree.searchByKey(new IntegerKey( id ) );
				if( book != null ){
					showBookName.setText("    名称:  《" + book.getBookName() + "》");
					showBookID.setText("         ID:  " + book.getBookID());
					showBookAuthor.setText("    作者:  " + book.getBookAuthor());
					showBookAvailable.setText("可借阅:  " + book.getBookAvailable() + "本");
					showBookTotal.setText("    总量:  " + book.getBookTotal() + "本");
				}
			}
		} );
		//set up panel 4 : tree
		Box verticall4 = Box.createVerticalBox();
		
		String[] selectItem = { "图书树", "用户树" };
		selectTreeCom = new JComboBox( selectItem );
		
		treeArea = new JTextArea( 30,20 );
		treeArea.setEditable( false );
		JScrollPane treeScrl = new JScrollPane( treeArea );
		treeScrl.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
		
		verticall4.add( selectTreeCom );
		verticall4.add( treeScrl );
		tabbedPane.addTab( "树", null, verticall4, "在此处可以查看图书树和用户树" );
		
		selectTreeCom.addItemListener(
				new ItemListener(){
					//handle JComboBox event
					public void itemStateChanged( ItemEvent event ){
						if( event.getStateChange() == ItemEvent.SELECTED ){
							if(selectTreeCom.getSelectedIndex() == 1)
								treeArea.setText(userTree.toString());
							else
								treeArea.setText(bookTree.toString());
						}
					}
				}
		);
		
		
		//set up panel 5 : work log		
		workLogArea.setEditable( false );
		JScrollPane workLogScrl = new JScrollPane( workLogArea );
		workLogScrl.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
		tabbedPane.addTab( "操作日志", null, workLogScrl, "在此处察看操作日志" );
		
		tabbedPane.addChangeListener( new ChangeListener(){
			public void stateChanged(ChangeEvent arg0) {
				// TODO Auto-generated method stub
				if( tabbedPane.getSelectedIndex() == 0 ){
					//JOptionPane.showMessageDialog(null,System.currentTimeMillis()+"");
					String sl;
					int bookID;
					int userID;
					long[] borrowTime;
					int[] borrowedBook;
					for( int i = 0 ; i <= borrowedBookList.getItemCount() - 1 ; i++ ){
						sl = borrowedBookList.getItem( i );
						bookID = Integer.parseInt(sl.substring(sl.indexOf(':')+1,sl.indexOf('|')));
						userID = Integer.parseInt(sl.substring(sl.lastIndexOf(':')+1,sl.lastIndexOf('.')));
						UserInfo user = (UserInfo) userTree.searchByKey( new IntegerKey(userID) );
						if( user!= null ){
							borrowedBook = user.getBorrowedBook();
							for( int j = 0 ; j <= borrowedBook.length -1 ; j++ ){
								if( borrowedBook[j] == bookID ){
									if( System.currentTimeMillis() - user.getBorrowTime( bookID )  > holdTime ){
										overdueBookList.add(borrowedBookList.getItem(i));
										workLogArea.append("Time out! BookID:<" + bookID +"> borrowed by UserID: <" + userID + ">\n");
										borrowedBookList.delItem(i);
									}
								}
							}
						}
					}// end for
				}
			}
		}
		);
		
		/**
		 * 对操作记录进行存盘
		 */
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				try {
					RandomAccessFile file = new RandomAccessFile("library-"
							+ Calendar.getInstance().get(Calendar.YEAR) + "-"
							+ (Calendar.getInstance().get(Calendar.MONTH) + 1)
							+ "-"
							+ Calendar.getInstance().get(Calendar.DAY_OF_MONTH)
							+ "-" + Calendar.getInstance().get(Calendar.HOUR)
							+ "-" + Calendar.getInstance().get(Calendar.MINUTE)
							+ "-" + Calendar.getInstance().get(Calendar.SECOND)
							+ ".log", "rw");
					file.write(workLogArea.getText().getBytes());
					file.close();
				} catch (Exception e1) {
					JOptionPane.showMessageDialog(null, "无法保存日志!原因:"
							+ e1.getMessage());
				}
				System.exit(0);
			}
		});
		getContentPane().add( tabbedPane );
		this.setResizable(false);
		setSize( 400,600 );
		setVisible( true );
		if( JOptionPane.showConfirmDialog(null,"是否希望载入测试数据?") == 0 )importInfo();
	}
	
	public void updateTree(){
		if(selectTreeCom.getSelectedIndex() == 1)
			treeArea.setText(userTree.toString());
		else
			treeArea.setText(bookTree.toString());
	 }
	
	private int getSelectID(List list){
		int getUserIdx = getUserIdx = list.getSelectedIndex();
		String getUserItm = list.getSelectedItem();
		
		if( getUserItm == null ){
			JOptionPane.showMessageDialog(null,"Please select a user.");
			return 0;
		}
		int idxB = getUserItm.indexOf(':');
		int idxE = getUserItm.indexOf('|');
		int pickedNum = Integer.parseInt(getUserItm.substring(idxB+1,idxE));
		return pickedNum;
	}
	
	private void importInfo(){
		try{
			//FileInputStream f = new FileInputStream("test.txt");
			BufferedReader reader = new BufferedReader( new FileReader("test.txt") );
			
			String s;
			while( (s = reader.readLine()) != null )
			{
				dealImport( s );
			}
		}
		catch(Exception ex){
			System.out.println(ex);
		}
	}
	private void dealImport(String s){
		String sBookName = null;
		String sBookAuthor = null;
		String sBookID = null;
		int iBookID = 0;
		String sAmount = null;
		int iAmount = 0;
		
		sBookName = s.substring(s.indexOf('《')+1 , s.indexOf('》'));
		sBookAuthor = s.substring(s.indexOf("author:")+7,s.indexOf(". ID:"));
		sBookID = s.substring(s.indexOf("ID:")+3,s.indexOf(". amount:"));
		sAmount = s.substring(s.indexOf("amount:")+7);
		try{
			iBookID = Integer.parseInt( sBookID );
			iAmount = Integer.parseInt( sAmount );
		}
		catch(Exception ex){
			JOptionPane.showMessageDialog(null,"文件格式错误");
		}
		
		/*JOptionPane.showMessageDialog(null,sBookName + "|"
				+ sBookAuthor + "|"
				+ iBookID + "|"
				+ iAmount );*/
		/**
		 * 初始化图书
		 */
		BookInfo book = new BookInfo();
		book.setBookName( sBookName );
		book.setBookID( iBookID );
		book.setBookAuthor( sBookAuthor );
		book.setBookTotal( iAmount );
		book.setBookAvailable( iAmount );
		/**
		 * 初始化图书树
		 */
		bookTree.insertKey( new IntegerKey(iBookID),book );
		updateTree();
		/**
		 * 修改treeList
		 */
		bookList.add( " 《" + sBookName + "》 ID:" + iBookID + "|   作者: " + sBookAuthor + "." );
		workLogArea.append( "Add book " + " 《" + sBookName + "》 ID:" + iBookID + "|   作者: " + sBookAuthor + ". --added\n" );
	}
	public static void main ( String args[] )
	{
		System.out.println( "The library is running now..." );
		LibrarySimulator application = new LibrarySimulator();
		application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	}
}

⌨️ 快捷键说明

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