樱桃小栗子
2015-06-12 14:01
package com.imooc;
import java.util.Scanner;
/*模拟借书系统:
* 1.定义字符串数组保存图书信息
* 2.提示用户输入,分别按“书名”和“图书序号”查找图书
* 3.根据输入信息进行适当的异常处理
* a.如果输入类型错误,抛出“错误命令异常”,并提示重新输入
* b.如果书名不存在,抛出“图书不存在异常”,并提示重新输入
* c.如果图书序号超过字符串数组范围,抛出“图书不存在异常”,并提示重新输入
* */
public class LibrarySys {
public static void main(String []args)throws LibraryException{
Book []allbook={new Book(1001,"Java"),new Book(1002,"C++"),
new Book(1003,"linux"),new Book(1004,"C#"),
new Book(1005,"PHP"),new Book(1006,"HTML")};
//用一个Book类的数组存储所有图书的图书库allbook,本库共创建了6个图书对象
System.out.println("请输入查询图书的方式:");
System.out.println("1.按照书名查找图书");
System.out.println("2.按照图书编码查找图书");
//两种查询方式
//可能出现的异常:用户输入类型错误,抛出“错误命令”异常
try{
Scanner input=new Scanner(System.in);
int userC=input.nextInt();//把用户输入的要查询方式保存在userC中
if(userC==1){
System.out.println("请输入您要查询的图书名称:");
String userBNa=input.next();
//把用户输入的要查询的图书名字保存在userBNa中
Query userQ=new Query();//创建一个用户查询对象userQ
userQ.query(allbook, userBNa);//调用按照书名查询的方法
}
else if(userC==2){
System.out.println("请输入您要查询的图书编码:");
int userBId=input.nextInt();
//把用户输入的要查询的图书编码保存在userBId中
Query userQ=new Query();//创建一个用户查询对象userQ
userQ.query(allbook, userBId);;//调用按照图书编码查询的方法
}
}catch(Exception e){
e.printStackTrace();
LibraryException newLE=new LibraryException("错误命令异常!");
throw newLE;
}
}
}
package com.imooc;
/*自定义一个借书系统的异常*/
public class LibraryException extends Exception {
//创建一个无参数的构造器
public LibraryException(){
}
//创建一个有参数的构造器
public LibraryException(String message){
super(message);//调用父类Exception的含参数的构造器
}
}
package com.imooc;
/*创建一个图书类
* 该类包括两个属性:
* 图书的编码id,图书的书名name.
* 此类中可以修改图书的id,name
* */
public class Book {
public int id;//图书编码
public String name;//图书名称
public int getBookId(){
return id;
}
public void setBookId(int id){
this.id=id;
}
public String getBookName(){
return name;
}
public void setBookName(String name){
this.name=name;
}
public Book(int id,String name){
this.id=id;
this.name=name;
}
}
package com.imooc;
/*图书查询类:
* 包含两个方法
* query(Book []book,int id)是按照图书id查询图书
* query(Book []book,String name)是按照图书name查询图书
* 查询结果均为:图书编码:图书名称
* */
public class Query{
//两种查询方式的输入均为,Book类的数组,以及图书编码id,图书名称name
public void query(Book []book,int id){
//遍历整个图书库book[],用id和每一个图书的id相比较,找到相同id则输出结果
for(int i=0;i<book.length;i++){
if(book[i].getBookId()==id)
System.out.println(id+":"+book[i].getBookName());
}
}
public void query(Book []book,String name){
//遍历整个图书库book[],用name和每一个图书的name相比较,找到相同name则输出结果
for(int i=0;i<book.length;i++){
if(name.equals(book[i].getBookName()))
System.out.println(book[i].getBookId()+":"+name);
}
}
}
我的代码是这样滴。
import java.util.Scanner;
/**
* 模拟图书管理系统
* @author Administrator
*
*/
public class BookSystem {
public static void main(String[] args) {
BookSystem bookSystem = new BookSystem();
String[] books = bookSystem.getBooks();
bookSystem.findBook(books);
}
/**
* 图书源
*/
private String[] getBooks()
{
String[] books = {"c语言程序设计","c++面向对象编程","java编程思想","java设计模式","java高级进阶"};
return books;
}
/**
* 查找图书
*/
private void findBook(String[] books)
{
System.out.println("请输入序号查找图书:1.按照书名查找 2.按照序号查找");
Scanner scanner = new Scanner(System.in);
String seq = scanner.next();
boolean isInt = isInteger(seq);
if(isInt)
{
if(Integer.parseInt(seq) == 1)
{
//按照书名查找
findBookByName(books);
}
else if(Integer.parseInt(seq) == 2)
{
//按照序号查找
findBookBySeq(books);
}
else
{
try {
throw new Exception("输入命令错误,请输入相应的序号");
} catch (Exception e) {
//e.printStackTrace();
System.out.println(e.getMessage());
findBook(books);
}
}
}
else
{
System.out.println("输入命令错误,请输入相应的序号");
findBook(books);
}
}
/**
* 根据图书序号查询图书
*/
private void findBookBySeq(String[] books)
{
System.out.println("请输入图书序号:");
Scanner scanner = new Scanner(System.in);
String seq = scanner.next();
boolean isInt = isInteger(seq);
if(isInt)
{
if(Integer.parseInt(seq)<0 || Integer.parseInt(seq)>books.length)
{
try {
throw new Exception("您查找的图书不存在");
} catch (Exception e) {
e.printStackTrace();
findBookBySeq(books);
}
}
else
{
System.out.println("您选择的图书是"+books[Integer.parseInt(seq)]);
}
}
else
{
System.out.println("请输入相应的图书序号:");
findBookBySeq(books);
}
}
/**
* 按书名查找图书
*/
private void findBookByName(String[] books)
{
System.out.println("请输入图书名称:");
Scanner scanner = new Scanner(System.in);
String bookName = scanner.next();
boolean isExist = false;
for(String book : books)
{
if(bookName.equals(book))
{
isExist = true;
}
}
if(isExist)
{
System.out.println("您选择的图书是"+bookName);
}
else
{
try {
throw new Exception("没有找到该图书");
} catch (Exception e) {
//e.printStackTrace();
System.out.println(e.getMessage());
findBookByName(books);
}
}
}
/**
* 判断输入的字符窜是否为整型
*/
private boolean isInteger(String input){
if (input == null || "".equals(input))
return false ;
if ( input.toString().matches("[0-9]+"))
return true ;
else
return false ;
}
}
try{
if(a){
throw new Exception("错误命令异常");
}else if(b){
throw new Exception("图书不存在异常");
}else if(c){
throw new Exception("图书序号不存在异常");
}else{
throw new Exception("其他异常");
}
}catch(exception e){
e.printStackTrace();
}
Java入门第三季
409776 学习 · 4546 问题
相似问题