1 package chapter5; 2 import java.util.*; 3 4 public class MiniDVD { 5 public static void main(String[] args){ 6 //扫描器 7 Scanner input = new Scanner(System.in); 8 //重要参数及初始化 9 //Create four arrays with length of 7 10 //定义四个数组长度为7 11 int date[] = new int[7]; //borrow date 12 int count[] = new int[7]; //total count 13 String name[] =new String[7]; //name of DVDs 14 String state[] = new String[7]; //state 15 //Initiate three DVD 16 //FirstDVD 17 name[0] = "罗马假日"; 18 state[0] = "已借出"; 19 date[0] = 1; 20 count[0] =15; 21 //Second DVD 22 name[1] = "风声鹤唳"; 23 state[1] = "可借"; 24 date[1] = 0; 25 count[1] =12; 26 //Third DVD 27 name[2] = "浪漫满屋"; 28 state[2] = "可借"; 29 date[2] = 0; 30 count[2] =30; 31 32 //循环进入条件 33 String choice = " "; 34 boolean flag = true; 35 do{ 36 //Create DVD Menu 37 System.out.println("欢迎使用迷你DVD管理器"); 38 System.out.println("------------------------------------------------------"); 39 System.out.println("1.新增DVD"); 40 System.out.println("2.查看DVD"); 41 System.out.println("3.删除DVD"); 42 System.out.println("4.借出DVD"); 43 System.out.println("5.归还DVD"); 44 System.out.println("6.退出DVD"); 45 System.out.println("------------------------------------------------------"); 46 System.out.print("请选择:"); 47 choice = input.next(); 48 49 //Switch choice menu 50 switch (choice){ 51 case "1": 52 System.out.println("--->新增DVD"); 53 System.out.print(" 请输入DVD名称:"); 54 boolean firstMonitor = true; 55 boolean secondMonitor = false; 56 String bookName = " "; 57 do{ 58 bookName= input.next(); 59 if(firstMonitor){ 60 for(int i = 0; i<name.length; i++){ 61 if(bookName.equals(name[i])){ 62 System.out.println("货架上已经存在该DVD,请返回目录重新选择!"); 63 secondMonitor = true; 64 break; 65 } 66 } 67 } 68 firstMonitor =false; 69 }while(firstMonitor); 70 71 if(!secondMonitor){ 72 for (int j = 0;j<name.length; j++){ 73 if((name[j])==null){ 74 name[j]= bookName; 75 state[j] = "可借"; 76 count[j] = 0; 77 System.out.println("新增《"+bookName+"》成功!"); 78 System.out.println("***************************"); 79 break; 80 } 81 if(name[name.length-2] !=null){ 82 System.out.println("DVD货架已满,添加失败!"); 83 System.out.println("***************************"); 84 break; 85 } 86 } 87 } 88 break; 89 case "2": 90 System.out.println("--->查看DVD"); 91 System.out.println("序号 状态 名称 借出日期 借出次数"); 92 for (int i = 0; i<name.length; i++){ 93 if(name[i] == null){ 94 System.out.println("***************************"); 95 break; 96 } 97 String myDate = " "; 98 if(date[i] != 0){ 99 myDate = date[i]+"日"; 100 } 101 System.out.println((i+1)+" "+state[i]+" "+"《"+name[i]+"》"+" "+myDate+" "+count[i]+"次"); 102 } 103 break; 104 case "3": 105 System.out.println("--->删除DVD"); 106 System.out.print(" 请输入DVD名称:"); 107 String delName = input.next(); 108 //define index monitor: check 109 int check = -1; 110 for(int i = 0; i < name.length; i++){ 111 if(delName.equals(name[i])){ 112 check = i; 113 break; 114 } 115 } 116 if(check != -1){ 117 if(state[check].equals("可借")){ 118 //Delete operation 119 for(int j = check; j < name.length-1; j++){ 120 name[j] = name[j+1]; 121 state[j] = state[j+1]; 122 date[j] = date[j+1]; 123 count[j] = count[j+1]; 124 } 125 System.out.println("删除《"+delName+"》成功!"); 126 System.out.println("***************************"); 127 break; 128 }else{ 129 System.out.println("DVD为借出状态,不允许删除!"); 130 System.out.println("***************************"); 131 } 132 }else{ 133 System.out.println("没有找到匹配信息!"); 134 System.out.println("***************************"); 135 } 136 break; 137 case "4": 138 System.out.println("--->借出DVD"); 139 System.out.print(" 请输入DVD名称:"); 140 String lendName = input.next(); 141 //Initiate lendDate with 1, so as to enter the do-loop 142 int lendDate = 1; 143 System.out.print("请输入借出日期:"); 144 //Avoid user input wrong date 145 do{ 146 lendDate = input.nextInt(); 147 if((lendDate<1)||(lendDate>31)){ 148 System.out.print("必须输入大于等于1且小于等于31的数字,请重新输入:"); 149 } 150 }while((lendDate<1)||(lendDate>31)); 151 152 //define index monitor 153 int index = -1; 154 for(int i = 0; i < name.length; i++){ 155 if(lendName.equals(name[i])){ 156 index = i; 157 break; 158 } 159 160 } 161 //lend operation 162 if(index != -1){ 163 if(state[index].equals("可借")){ 164 state[index] = "已借出"; 165 count[index] +=1; 166 date[index] = lendDate; 167 System.out.println("借出《"+lendName+"》成功!"); 168 System.out.println("***************************"); 169 }else{ 170 System.out.println("《"+lendName+"》已被借出!"); 171 System.out.println("***************************"); 172 } 173 }else{ 174 System.out.println("没有找到匹配信息!"); 175 System.out.println("***************************"); 176 } 177 break; 178 case "5": 179 System.out.println("--->归还DVD"); 180 System.out.print(" 请输入DVD名称:"); 181 String returnName = input.next(); 182 //define index monitor 183 int monitor = -1; 184 for(int i = 0; i < name.length; i++){ 185 if(returnName.equals(name[i])){ 186 monitor = i; 187 break; 188 } 189 190 } 191 //Initiate myLendPeriod with 0, and enter the do-loop 192 int returnDate = 0; 193 int myLendPeriod = 0; 194 do{ 195 System.out.print("请输入归还日期:"); 196 //Avoid user input wrong date 197 do{ 198 returnDate = input.nextInt(); 199 if(monitor != -1){ 200 myLendPeriod = returnDate - date[monitor]; 201 } 202 if(returnDate > 31){ 203 System.out.print("一个月只有31天,请重新输入:"); 204 } 205 if(myLendPeriod < 0){ 206 System.out.println("归还日期不能小于借出日期,请重新输入:"); 207 } 208 }while((returnDate>31)||(myLendPeriod<0)); 209 //Return operation 210 if(monitor != -1){ 211 if(state[monitor].equals("已借出")){ 212 state[monitor] = "可借"; 213 date[monitor] = 0; 214 System.out.println("归还《"+returnName+"》成功!"); 215 System.out.println("借出日期为:"+date[monitor]+"日"); 216 System.out.println("归还日期为:"+returnDate+"日"); 217 System.out.println("应付租金(元):"+myLendPeriod); 218 System.out.println("***************************"); 219 }else{ 220 System.out.println("该DVD没有被借出!无法进行归还操作。"); 221 System.out.println("***************************"); 222 } 223 }else{ 224 System.out.println("没有找到匹配信息!"); 225 System.out.println("***************************"); 226 } 227 break; 228 }while(myLendPeriod < 0); 229 break; 230 case "6": 231 flag = false; 232 break; 233 default: 234 } 235 if(flag){ 236 System.out.print("输入任意值返回:"); 237 choice = input.next(); 238 } 239 }while(flag); 240 241 //program exit 242 System.out.println("程序结束"); 243 } 244 }