package?com.study.bookstudy;
public?class?Main?{//主函數(shù)類
public?static?void?main(String[]?args)?{
Library?library?=?new?Library();
library.run();
}
}
package?com.study.bookstudy;
public?class?Book?{//Book類,基本的數(shù)據(jù)封裝
private?int?num;
private?String?name;
public?Book(int?num,?String?name)?{
this.num?=?num;
this.name?=?name;
}
public?int?getNum()?{
return?num;
}
public?String?getName()?{
return?name;
}
}
package?com.study.bookstudy;
public?class?BookNotExistException?extends?Exception?{
//自定義異常類??-?圖書不存在異常
public?BookNotExistException()?{
System.out.println("圖書不存在,請重新輸入。");
}
}
package?com.study.bookstudy;
import?java.util.ArrayList;
import?java.util.InputMismatchException;
import?java.util.List;
import?java.util.Scanner;
public?class?Library?{//最主要的類,管理圖書,以及處理搜索請求
private?List<Book>?books;
private?Scanner?scanner;
public?Library()?{
books?=?new?ArrayList<Book>();
scanner?=?new?Scanner(System.in);
init();
}
public?void?run()?{//啟動圖書館類,也可以擴展其他業(yè)務(wù)
searchService();
System.out.println("謝謝使用!");
}
private?void?searchService()?{//搜索服務(wù)
Book?book?=?null;
while?(true)?{
System.out.println("輸入命令:1-按照名稱查找圖書;2-按照序號查找圖書");
int?choose?=?getRightNumber();
switch?(choose)?{//?寫成switch形式,便于以后功能擴展
case?1:
System.out.println("輸入圖書名稱:");
String?searchStr?=?scanner.next();
try?{
book?=?searchByName(searchStr);
showBookInfo(book);
return;
}?catch?(BookNotExistException?e)?{
continue;
}
case?2:
System.out.println("輸入圖書編號:");
int?searchNum?=?getRightNumber();
try?{
book?=?searchByNum(searchNum);
showBookInfo(book);
return;
}?catch?(BookNotExistException?e)?{
continue;
}
default:
break;
}
}
}
//顧名思義,通過名字搜索
private?Book?searchByName(String?name)?throws?BookNotExistException?{
for?(Book?book?:?books)?{
if?(book.getName().equals(name))?{
return?book;
}
}
throw?new?BookNotExistException();
}
//顧名思義,通過編號搜索
private?Book?searchByNum(int?num)?throws?BookNotExistException?{
for?(Book?book?:?books)?{
if?(book.getNum()?==?num)?{
return?book;
}
}
if?(num?>?books.size()?||?num?<?1)?{
throw?new?BookNotExistException();
}
return?null;
}
//獲得正確的數(shù)字輸入
private?int?getRightNumber()?{
int?choose;
while?(true)?{
try?{
choose?=?scanner.nextInt();
break;
}?catch?(InputMismatchException?e)?{
System.out.println("命令錯誤,請重新輸入。");
scanner.next();//?清楚緩沖區(qū)無效的string字符
}
}
return?choose;
}
//顯示信息
private?void?showBookInfo(Book?book)?{
System.out.println("編號:"?+?book.getNum()?+?"\t書名:"?+?book.getName());
}
//初始化數(shù)據(jù)
private?void?init()?{
books.add(new?Book(1,?"book_1"));
books.add(new?Book(2,?"book_2"));
books.add(new?Book(3,?"book_3"));
books.add(new?Book(4,?"book_4"));
books.add(new?Book(5,?"book_5"));
books.add(new?Book(6,?"book_6"));
}
}
2015-06-20
不錯,借鑒了??!
2015-06-13
高手,但是不怎么看得懂
2015-05-12
very good!
2015-04-28
學習了