模拟DVD管理器(及遇到的问题与解决)

来源:互联网 发布:小甲鱼c语言视频教程 编辑:程序博客网 时间:2024/05/20 06:52

import java.util.Scanner;public class DVDmanage {public static void main(String[] args) {//定义初始值int num[]=new int[7];String[]name=new String[7];String[]state=new String[7];int[]date=new int[7];int[]count=new int[7];int i;String Bookname;int Borrowdate;int Returnday;boolean isRight=true;//定义初始值num[0]=1;num[1]=2;num[2]=3;state[0]="已借出";state[1]="可借";state[2]="可借";name[0]="《罗马假日》";name[1]="《风声鹤唳》";name[2]="《浪漫满屋》";date[0]=1;count[0]=15;count[1]=12;count[2]=30;boolean end=false;//界面loop:do{end=false;//对end重新赋值System.out.println("欢迎使用迷你DVD管理器");System.out.println("-------------------------");System.out.println("1.新增DVD");System.out.println("2.查看DVD");System.out.println("3.删除DVD");System.out.println("4.借出DVD");System.out.println("5.归还DVD");System.out.println("6.退出DVD");System.out.println("-------------------------");//用户选择System.out.print("请选择");Scanner input=new Scanner(System.in);int choice=input.nextInt();switch(choice){case 1:System.out.println("-->新增DVD");System.out.println("请输入DVD名称");for(i=0;i<=num.length-1;i++){if(num[i]!=0){continue;} if(i<num.length){name[i]=input.next();num[i]=i+1;name[i]="《"+name[i]+"》";state[i]="可借";date[i]=0;count[i]=0;System.out.println("新增"+name[i]+"成功");break;}}if(i==6){System.out.println("货架已满,增加信息失败!");}break;case 2:System.out.println("-->查看DVD");System.out.println("序号"+"\t状态"+"\t名称"+"\t\t借出日期\t"+"借出次数");for(i=0;i<6;i++){if(num[i]!=0){if(state[i].equals("可借")){date[i]=0;//判断是否为可借,可借则借出日期为空。}//输出DVD的目录及状态System.out.println(num[i]+"\t"+state[i]+"\t"+name[i]+"\t"+date[i]+"日\t"+count[i]+"次");}}break;case 3:System.out.println("-->删除DVD");System.out.println("请输入DVD名称:");Bookname=input.next();Bookname="《"+Bookname+"》";//遍历数组,查看是否有这个DVD;for(i=0;i<num.length;i++){if(Bookname.equals(name[i])){break;}else if(i==6){System.out.println("没有找到匹配信息!");break loop;}}//判断是否借出,若未借出则执行删除;if("已借出".equals(state[i])){System.out.println("该DVD已借出,无法删除!");}else{for(int j=i+1;j<num.length;j++){if(num[j]!=0){num[j-1]=num[j]-1;state[j-1]=state[j];name[j-1]=name[j];date[j-1]=date[j];count[j-1]=count[j];}else{num[j-1]=0;state[j-1]="";name[j-1]="";date[j-1]=0;count[j-1]=0;}}System.out.println("删除"+Bookname+"成功");}break;case 4:System.out.println("-->借出DVD");System.out.println("请输入DVD名称:");Bookname=input.next();Bookname="《"+Bookname+"》";//遍历数组,查看是否有这个DVD;for(i=0;i<num.length;i++){if(Bookname.equals(name[i])){break;}else if(i==6&&!Bookname.equals(name[i])){System.out.println("没有找到匹配信息!");break loop;}}if("已借出".equals(state[i])){System.out.println(Bookname+"已被借出");break loop;}else{System.out.println("请输入借出日期:");Borrowdate=input.nextInt();while(Borrowdate<1||Borrowdate>31){System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");Borrowdate=input.nextInt();}state[i]="已借出";date[i]=Borrowdate;count[i]=count[i]+1;System.out.println("借出"+Bookname+"成功!");}break;case 5:System.out.println("-->归还DVD");System.out.println("请输入DVD名称:");    Bookname=input.next();    Bookname="《"+Bookname+"》";for(i=0;i<num.length;i++){if(Bookname.equals(name[i])){break;}else if(i==6&&!Bookname.equals(name[i])){System.out.println("没有找到匹配信息!");break loop;}}if("可借".equals(state[i])){System.out.println("该DVD没有被借出!无法进行归还操作");break loop;}else{System.out.println("请输入归还日期:");do{isRight=false;Returnday=input.nextInt();if(Returnday>31){System.out.println("一个月只有31天,请重新输入:");isRight=true;}else if(Returnday<date[i]){System.out.println("归还日期不能小于借出时间,请重新输入:");isRight=true;}else{System.out.println("归还"+Bookname+"成功!");System.out.println("借出日期为:"+date[i]);System.out.println("归还日期为:"+Returnday);System.out.println("应付租金为:"+(Returnday-date[i]));state[i]="可借";date[i]=0;break;}}while(isRight);}break;case 6:System.out.println("-->退出DVD");break loop;default:System.out.println("输出有误!");break;}System.out.println("******************************");System.out.println("按0返回");choice=input.nextInt();if(choice==0){end=true;}}while(end);}}

曾经遇到过的一些问题:

1、数据删除时的下标越界问题:将数组的数量从6个改为7个,使得第六个数组可以去接收第七个数组内的元素得以赋值;

 利用j的值的减小for(int j=i+1;j<num.length;j++)和num[j-1]=num[j]-1使其下标不再越界;

2、字符串比较时的空指针问题(str.equals(null)):将已知字符串与要比较的字符串项交换Bookname.equals(name[i])

0 0
原创粉丝点击