一.写在main方法中
1 import java.util.*; 2 3 public class MyDVDMgr { 4 public static void main(String[] args){ 5 Scanner input=new Scanner(System.in); 6 //是否退出系统,false代表退出系统 7 boolean flag=true; 8 //DVD相关信息,最多只能存储6个DVD信息 9 String[] name=new String[6]; //DVD名称 10 int[] state=new int[6]; //借阅状态,0:可借阅 ;1:已借出 11 int[] date=new int[6]; //借出日期 12 int[] count=new int[6]; //借出次数 13 14 /* 15 * 初始化三个DVD 16 * */ 17 name[0]="罗马假日"; 18 state[0]=1; 19 date[0]=1; 20 count[0]=15; 21 22 name[1]="风声鹤唳"; 23 state[1]=0; 24 count[1]=12; 25 26 name[2]="浪漫满屋"; 27 state[2]=0; 28 count[2]=30; 29 30 int num=-1; 31 //循环操作 32 do{ 33 //输出欢迎菜单 34 System.out.println("欢迎使用迷你DVD管理器"); 35 System.out.println("-------------------------"); 36 System.out.println("1.新增DVD"); 37 System.out.println("2.查看DVD"); 38 System.out.println("3.删除DVD"); 39 System.out.println("4.借出DVD"); 40 System.out.println("5.归还DVD"); 41 System.out.println("6.退出DVD"); 42 System.out.println("-------------------------"); 43 System.out.println("请选择:"); 44 int choose=input.nextInt(); 45 switch(choose){ 46 case 1: 47 //新增DVD 48 System.out.println("-->新增DVD\n"); 49 System.out.println("请输入DVD名称:"); 50 String dvdName=input.next(); 51 boolean flag2=false; 52 for(int i=0;i查看DVD\n"); 68 System.out.println("序号\t状态\t名称\t借出日期\t借出次数"); 69 for(int i=0;i 删除DVD\n"); 82 System.out.println("请输入要删除DVD的名称:"); 83 String delete=input.next(); 84 boolean flag3=false; 85 int index=-1; //记录要删除DVD的位置 86 for(int i=0;i 借出DVD\n");118 System.out.print("请输入DVD名称:");119 String want=input.next(); //要借出的DVD名称120 for(int i=0;i 31){ //当输入借出的日期不满足1-31时129 System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");130 date[i]=input.nextInt();131 }132 System.out.println("借出《"+want+"》成功!");133 count[i]++;134 break;135 }else if(want.equals(name[i]) && state[i]==1){ //找到匹配已被借出136 System.out.println("《"+want+"》已被借出!");137 break;138 }139 }140 System.out.println("*****************************************");141 break;142 case 5:143 //归还DVD144 System.out.println("-->归还DVD\n");145 int charge=0; //租金146 System.out.print("请输入归还DVD名称:");147 want=input.next();148 for(int i=0;i 31){ //归还日期不能小于借出日期,也不能大于31157 if(redate
二.抽分方法写在不同类
1.初始化使用数组类DVDSet.java
1 package com.jb.minidvd;2 3 public class DVDSet {4 String[] name = new String[50]; //数组1存储DVD名称数组5 int[] state = new int[50]; //数组2存储DVD借出状态:0已借出/1可借6 String[] date=new String[50]; //数组3存储DVD借出日期7 int[] count=new int[50]; //借出次数8 9 }
2.DVD业务类DVDMgr.java
1 package com.jb.minidvd; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.*; 6 public class DVDMgr { 7 /** 8 * 创建DVD对象 9 */ 10 DVDSet dvd = new DVDSet(); 11 /** 12 * 初始三个DVD 13 */ 14 public void initial() { 15 16 dvd.name[0] = "罗马假日"; 17 dvd.state[0] = 0; 18 dvd.date[0]="2013-7-1"; 19 dvd.count[0]=15; 20 21 dvd.name[1] = "风声鹤唳"; 22 dvd.state[1] = 1; 23 dvd.count[1]=12; 24 25 dvd.name[2] = "浪漫满屋"; 26 dvd.state[2] = 1; 27 dvd.count[2]=30; 28 } 29 /** 30 * 开始菜单 31 */ 32 public void startMenu(){ 33 System.out.println("欢 迎 使 用 迷 你 DVD 管 理 器"); 34 System.out.println("-------------------------------------"); 35 System.out.println("0. 借出排行榜"); 36 System.out.println("1. 新 增 DVD"); 37 System.out.println("2. 查 看 DVD"); 38 System.out.println("3. 删 除 DVD"); 39 System.out.println("4. 借 出 DVD"); 40 System.out.println("5. 归 还 DVD"); 41 System.out.println("6. 退 出 "); 42 43 System.out.print("--------------------------------------\n"); 44 45 System.out.print("请选择: "); 46 Scanner input = new Scanner(System.in); 47 int choice = input.nextInt(); 48 switch(choice){ 49 case 0: 50 list(); 51 break; 52 case 1: 53 add(); 54 break; 55 case 2: 56 search(); 57 break; 58 case 3: 59 delete(); 60 break; 61 case 4: 62 lend(); 63 break; 64 case 5: 65 returnDvd(); 66 break; 67 case 6: 68 System.out.println("\n谢谢 使 用!"); 69 break; 70 } 71 } 72 /** 73 * 返回主菜单 74 */ 75 public void returnMain(){ 76 Scanner input = new Scanner(System.in); 77 System.out.print("输入0返回:"); 78 if(input.nextInt() == 0){ 79 startMenu(); 80 }else{ 81 System.out.println("输入错误, 异常终止!"); 82 } 83 } 84 /** 85 * 查看DVD 86 */ 87 public void search(){ 88 System.out.println("---> 查看DVD\n"); 89 System.out.println("序号\t状 态\t名称\t\t借出日期"); 90 for(int i = 0 ; i < dvd.name.length; i++){ 91 if(dvd.name[i]==null){ 92 break; 93 }else if(dvd.state[i] == 0){ 94 System.out.println((i+1)+"\t已借出\t"+"<<"+ dvd.name[i]+ ">>\t" + dvd.date[i]); 95 }else if(dvd.state[i] == 1){ 96 System.out.println((i+1)+"\t可 借\t"+"<<"+dvd.name[i]+">>"); 97 } 98 } 99 System.out.println("**************************");100 returnMain(); 101 }102 /**103 * 新增DVD104 */105 public void add(){106 Scanner input = new Scanner(System.in);107 System.out.println("---> 新增DVD\n"); 108 System.out.print("请输入DVD名称: ");109 String name = input.next(); 110 for(int i = 0; i < dvd.name.length; i++){ 111 if(dvd.name[i] == null){ //查询最后一个空位置插入112 dvd.name[i]=name;113 dvd.state[i]=1;//置新增的DVD可借状态114 System.out.println("新增《"+name+"》成功!");115 break;116 }117 }118 System.out.println("**************************");119 returnMain(); 120 } 121 /**122 * 删除DVD123 */124 public void delete(){125 Scanner input = new Scanner(System.in);126 boolean flag=false;//标识删除成功与否127 System.out.println("---> 删除DVD\n");128 System.out.print("请输入DVD名称: ");129 String name = input.next(); 130 //遍历数组,查找匹配信息131 for(int i = 0 ; i < dvd.name.length; i++){132 //查找到,每个元素前移一位133 if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==1){134 int j=i;135 while(dvd.name[j+1]!=null){136 dvd.name[j]=dvd.name[j+1];137 dvd.state[j]=dvd.state[j+1];138 dvd.date[j]=dvd.date[j+1];139 j++;140 }141 //最后一个不为空的元素置空142 dvd.name[j]=null; 143 dvd.date[j]=null; 144 System.out.println("删除《"+name+"》成功!");145 flag=true;//置位,表示删除成功146 break;147 }else if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==0){148 System.out.println("《"+name+"》为借出状态,不能删除!"); 149 flag=true;//置位150 break;151 }152 }153 if(!flag){154 System.out.println("没有找到匹配信息!");155 }156 System.out.println("**************************");157 returnMain(); 158 }159 /**160 * 借出DVD161 */162 public void lend(){163 System.out.println("---> 借出DVD\n");164 165 Scanner input = new Scanner(System.in);166 System.out.print("请输入DVD名称: ");167 String want = input.next(); //要借出的DVD名称 168 for(int i = 0; i < dvd.name.length; i++){ 169 if(dvd.name[i] == null){ //无匹配170 System.out.println("没有找到匹配信息!");171 break;172 }else if(dvd.name[i].equals(want)&& dvd.state[i]==1){ //找到匹配可借 173 dvd.state[i] = 0;174 System.out.print("请输入借出日期(年-月-日):");175 dvd.date[i]=input.next();176 System.out.println("借出《"+want+"》成功!"); 177 dvd.count[i]++;178 break;179 }else if(dvd.name[i].equals(want)&& dvd.state[i]==0){ //找到匹配已被借出 180 System.out.println("《"+want+"》已被借出!");181 break;182 } 183 }184 System.out.println("**************************");185 returnMain();186 }187 /**188 * 归还DVD并计算租金189 */190 public void returnDvd(){191 System.out.println("---> 归还DVD\n");192 193 Scanner input = new Scanner(System.in);194 long loan=0;//租金195 System.out.print("请输入DVD名称: ");196 String want = input.next();197 for(int i = 0; i < dvd.name.length; i++){ 198 if(dvd.name[i] == null){ //无匹配199 System.out.println("没有找到匹配信息!");200 break;201 }else if(dvd.name[i].equals(want) && dvd.state[i]==0){ //找到匹配 202 dvd.state[i] = 1;203 System.out.print("请输入归还日期(年-月-日):");204 String redate=input.next();205 //计算租金206 loan=charge(dvd.date[i],redate);207 System.out.println("\n归还《"+want+"》成功!");208 System.out.println("借出日期为:"+dvd.date[i]);209 System.out.println("归还日期为:"+redate);210 System.out.println("应付租金(元):"+loan);211 break;212 } else if(dvd.name[i].equals(want) && dvd.state[i]==1){ //找到匹配但没有借出213 System.out.println("该DVD没有被借出!无法进行归还操作。");214 break;215 }216 }217 System.out.println("**************************");218 returnMain();219 }220 /**221 * 计算日期差222 * @param dstr1 第一个日期223 * @param dstr2 第二个日期224 * 225 */226 public long charge(String dstr1,String dstr2){227 long charge=0;228 SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");229 try {230 Date d1=sd.parse(dstr1);231 Date d2=sd.parse(dstr2);232 charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);233 } catch (ParseException e) { 234 e.printStackTrace(); 235 } 236 return charge;237 }238 /**239 * 借出排行榜240 */241 public void list(){242 //定义新数组,用来存放排序后DVD信息243 String[] newname = new String[50]; // 244 int[] newcount=new int[50]; 245 for(int k=0;knewcount[j]){254 int tempc=newcount[i];255 newcount[i]=newcount[j];256 newcount[j]=tempc;257 String tempn=newname[i];258 newname[i]=newname[j];259 newname[j]=tempn;260 } 261 } 262 }263 System.out.println("---> 排行榜\n");264 System.out.println("**************************");265 System.out.println("次数\t名称");266 //显示排行榜信息267 for(int i=newname.length-1;i>=0;i--){268 if(newname[i]!=null){269 System.out.println(newcount[i]+"\t<<"+ newname[i]+ ">>" );270 }271 } 272 System.out.println("**************************");273 returnMain();274 }275 }
3.功能测试类Start.java
1 package com.jb.minidvd; 2 3 public class Start { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 DVDMgr dm=new DVDMgr(); 10 dm.initial();11 dm.startMenu();12 13 }14 15 }
三、运行效果图