定义图书book类java_模拟借书系统(Java入门第三季第一章练习)

程序流程图我就不放上来了,慕友们将就着看看吧,注释还算清晰。

这段代码是Java入门第三季异常与异常处理这一章的练习题,

代码尚有不足,请多多指教。

/**

* 功能:模拟借书系统

* 要求:

* 1.定义字符串数组保存图书信息

* 2.提示用户输入,分别按“书名”和“图书序号”查找图书

* 3.根据输入信息进行适当的异常处理:

* a) 如果输入类型错误,抛出“错误命令异常”,并提示重新输入

* b) 如果书名不存在,抛出“图书不存在异常”,并提示重新输入

* c) 如果图书序号超过字符串数组范围,抛出“图书不存在异常”,并提示重新输入

* @author zodas

*

*/

先看BorrowBook类

import java.util.Scanner;

public class BorrowBook{

static String[] books={"数据结构","高数","Java","Html"};//保存图书信息

static int flagCommand=0;//查询命令错误标志

static int flagNotexistName=0;//图书名称不存在标志

static int flagNotexistNum=0;//图书序号不存在标志

static BorrowBook bk=new BorrowBook();

static Scanner input=new Scanner(System.in);

/******************************main方法*********************************/

public static void main(String[] args) {

int num;//用于保存图书的序号

String name;//用于保存图书的名称

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");//提示用户输入

String way=input.next();

bk.choseWay(way);//选择查询方式

while(true){

if(flagCommand==0){//查询命令错误,则提示用户重新输入查询方式

way=input.next();

bk.choseWay(way);

continue;

}

if(flagCommand==1){//按图书名称查询

System.out.println("输入图书名称:");

name=input.next();

bk.ckName(name);

if(flagNotexistName==1){//如果图书不存在,则抛出图书不存在异常

NobookException nbe=new NobookException();

try{

nbe.noBook();

}catch(NobookException ne){

System.out.println(ne.getMessage());

}

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else{//图书已查到,询问用户是否要继续查询

System.out.println("是否要继续查询?1-是; 2-否");

if(input.nextInt()==1){//若要继续查询,则提示用户查询步骤

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else

break;//若不继续查询,则终止系统

}

}

if(flagCommand==2){//按图书序号查询

System.out.println("输入图书序号:");

num=input.nextInt();

bk.ckNum(num);

if(flagNotexistNum==1){//如果图书不存在,则抛出图书不存在异常

NobookException nbe=new NobookException();

try{

nbe.noBook();

}catch(NobookException ne){

System.out.println(ne.getMessage());

}

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else{//图书已查到,询问用户是否要继续查询

System.out.println("是否要继续查询?1-是; 2-否");

if(input.nextInt()==1){//若要继续查询,则提示用户查询步骤

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else

break;//若不继续查询,则终止系统

}

}

}

}

/*************选择查询方式,1按图书名称查询,2按序号查询,其它则抛出命令异常***********/

public void choseWay(String n){

if(n.equals("1")){

flagCommand=1;//按图书名称查询,则置查询命令标志位为1

}

else if(n.equals("2")){

flagCommand=2;//按图书序号查询,则置查询命令标志位为2

}else{

WrongCommandException wce=new WrongCommandException();

try{

wce.wrongCommand();

}catch(WrongCommandException wc){

System.out.println(wc.getMessage());

}

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

flagCommand=0;//查询命令错位,则置查询命令标志位为0

}

}

/**********************检查此名称的书是否存在,存在则返回0,不存在则返回1***************/

public int ckName(String name){

for(int i=0;i

if(name.equals(books[i])){

System.out.println("book:"+books[i]+" 这本书是有的");

flagNotexistName=0;//图书名称存在,则置图书名称存在标志位为0

break;//一旦查到此图书名称则跳出for循环

}

else

flagNotexistName=1;//图书名称存在,则置图书名称存在标志位为1

}

return flagNotexistName;//返回图书名称标志位的值

}

/*******************检查此序号的书是否存在,存在则返回0,不存在则返回1******************/

public int ckNum(int num){

if(0<=num&&num

System.out.println("book:"+books[num]+" 这本书是有的");

flagNotexistNum=0;//图书序号存在,则置图书序号存在标志位为0

}

else

flagNotexistNum=1;//图书序号存在,则置图书序号存在标志位为1

return flagNotexistNum;//返回图书序号标志位的值

}

}

自定义异常--NobookException类

public class NobookException extends Exception {

/**

* 图书不存在异常

*/

private static final long serialVersionUID = 1L;//这行我也不知道什么意思,编译器自动生成的

public void noBook() throws NobookException{

throw new NobookException("图书不存在!");

}

public NobookException(){

}

public NobookException(String message){

super(message);

}

}

自定义异常--WrongCommandException类

public class WrongCommandException extends Exception {

/**

* 命令错误异常

*/

private static final long serialVersionUID = 1L;//这行我也不知道什么意思,编译器自动生成的

public void wrongCommand() throws WrongCommandException{

throw new WrongCommandException("命令输入错误!请根据提示输入数字命令!");

}

public WrongCommandException(){

}

public WrongCommandException(String message){

super(message);

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值