jh_01_编程入门小案例练习
用例1:数据初始化2-1
需求说明
初始化DVD信息
思路分析
创建项目MiniDvd
创建类DVDSet,
添加相应属性
创建类DVDMgr,
添加方法initial(),初始化三张DVD碟片信息
1 public class DVDSet { 2 String[] name = new String[50]; //数组1存储DVD名称数组 3 int[] state = new int[50]; //数组2存储DVD借出状态:0已借出/1可借 4 String[] date=new String[50]; //数组3存储DVD借出日期 5 6 }
1 public class DVDMgr { 2 /** 3 * 创建DVD对象 4 */ 5 DVDSet dvd = new DVDSet(); 6 /** 7 * 初始三个DVD 8 */ 9 public void initial() { 10 11 dvd.name[0] = "罗马假日"; 12 dvd.state[0] = 0; 13 dvd.date[0]="2013-7-1"; 14 15 dvd.name[1] = "风声鹤唳"; 16 dvd.state[1] = 1; 17 dvd.name[2] = "浪漫满屋"; 18 dvd.state[2] = 1; 19 } 20 21 }
用例2:实现菜单切换2-1
需求说明
编写程序入口,实现菜单显示和切换
思路分析
创建方法startMenu(), 实现菜单切换
创建方法returnMain() , 返回主菜单
编写类Start,实现程序入口
难点提示 使用switch语句实现菜单切换
欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 1 此处实现新增DVD ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 6 谢谢 使 用!
1 /** 2 * 开始菜单 3 */ 4 public void startMenu(){ 5 System.out.println("欢 迎 使 用 迷 你 DVD 管 理 器"); 6 System.out.println("-------------------------------------"); 7 System.out.println("1. 新 增 DVD"); 8 System.out.println("2. 查 看 DVD"); 9 System.out.println("3. 删 除 DVD"); 10 System.out.println("4. 借 出 DVD"); 11 System.out.println("5. 归 还 DVD"); 12 System.out.println("6. 退 出 "); 13 System.out.print("--------------------------------------\n"); 14 15 System.out.print("请选择: "); 16 Scanner input = new Scanner(System.in); 17 int choice = input.nextInt(); 18 switch(choice){ 19 case 1: 20 System.out.println("此处实现新增DVD ");//add(); 21 System.out.println("**************************"); 22 returnMain(); 23 break; 24 case 2: 25 System.out.println("此处实现查看DVD ");//search(); 26 System.out.println("**************************"); 27 returnMain(); 28 break; 29 case 3: 30 System.out.println("此处实现删除DVD ");//delete(); 31 System.out.println("**************************"); 32 returnMain(); 33 break; 34 case 4: 35 System.out.println("此处实现借出DVD ");//lend(); 36 System.out.println("**************************"); 37 returnMain(); 38 break; 39 case 5: 40 System.out.println("此处实现归还DVD ");//returnDvd(); 41 System.out.println("**************************"); 42 returnMain(); 43 break; 44 case 6: 45 System.out.println("\n谢谢 使 用!"); 46 break; 47 } 48 } 49 /** 50 * 返回主菜单 51 */ 52 public void returnMain(){ 53 Scanner input = new Scanner(System.in); 54 System.out.print("输入0返回:"); 55 if(input.nextInt() == 0){ 56 startMenu(); 57 }else{ 58 System.out.println("输入错误, 异常终止!"); 59 } 60 }
1 public class Start1 { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 DVDMgr1 dm=new DVDMgr1(); 8 dm.initial(); 9 dm.startMenu(); 10 11 } 12 13 }
用例3:实现查看DVD信息2-1
需求说明
遍历dvd,获取数组元素信息,并进行显示
思路分析
在类DVDMgr中创建方法 search(),完成功能要求
根据状态值输出“已借出” 或“可借”
难点提示
循环结束条件:
dvd.name[i]==null
欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 2 ---> 查看DVD 序号 状 态 名称 借出日期 1 已借出 <<罗马假日>> 2013-7-1 2 可 借 <<风声鹤唳>> 3 可 借 <<浪漫满屋>> ************************** 输入0返回:
1 case 2: 2 search(); 3 break;
1 /** 2 * 查看DVD 3 */ 4 public void search(){ 5 System.out.println("---> 查看DVD\n"); 6 System.out.println("序号\t状 态\t名称\t\t借出日期"); 7 for(int i = 0 ; i < dvd.name.length; i++){ 8 if(dvd.name[i]==null){ 9 break; 10 }else if(dvd.state[i] == 0){ 11 System.out.println((i+1)+"\t已借出\t"+"<<"+ dvd.name[i]+ ">>\t" + dvd.date[i]); 12 }else if(dvd.state[i] == 1){ 13 System.out.println((i+1)+"\t可 借\t"+"<<"+dvd.name[i]+">>"); 14 } 15 } 16 System.out.println("**************************"); 17 returnMain(); 18 }
用例4:实现新增DVD信息2-1
需求说明:
向dvd数组增加一条DVD信息, 实现新增DVD信息
思路分析
在类DVDMgr中创建方法add(),
完成功能要求
定位新增位置
插入DVD信息,状态值为1
难点提示
定位新增位置:
第一个name为 null的位置
欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 1 ---> 新增DVD 请输入DVD名称: xiaojiejie 新增《xiaojiejie》成功! ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 2 ---> 查看DVD 序号 状 态 名称 借出日期 1 已借出 <<罗马假日>> 2013-7-1 2 可 借 <<风声鹤唳>> 3 可 借 <<浪漫满屋>> 4 可 借 <<xiaojiejie>> ************************** 输入0返回:
1 case 1: 2 add(); 3 break;
1 /** 2 * 新增DVD 3 */ 4 public void add(){ 5 Scanner input = new Scanner(System.in); 6 System.out.println("---> 新增DVD\n"); 7 System.out.print("请输入DVD名称: "); 8 String name = input.next(); 9 for(int i = 0; i < dvd.name.length; i++){ 10 if(dvd.name[i] == null){ //查询最后一个空位置插入 11 dvd.name[i]=name; 12 dvd.state[i]=1;//置新增的DVD可借状态 13 System.out.println("新增《"+name+"》成功!"); 14 break; 15 } 16 } 17 System.out.println("**************************"); 18 returnMain(); 19 }
用例5:实现删除DVD信息2-1
需求说明
按照输入的名称,删除指定DVD 信息
思路分析
查找要删除元素
通过把后面的元素依次前移 一位,实现删除;
最后一个不为空元素置空
难点提示
不允许删除借出状态的DVD
不存在指定DVD,给出提示
欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 3 ---> 删除DVD 请输入DVD名称: 罗马假日 《罗马假日》为借出状态,不能删除! ************************** 输入0返回:
请选择: 3 ---> 删除DVD 请输入DVD名称: 浪漫满屋 删除《浪漫满屋》成功! ************************** 输入0返回:
1 case 3: 2 delete(); 3 break;
1 /** 2 * 删除DVD 3 */ 4 public void delete(){ 5 Scanner input = new Scanner(System.in); 6 boolean flag=false;//标识删除成功与否 7 System.out.println("---> 删除DVD\n"); 8 System.out.print("请输入DVD名称: "); 9 String name = input.next(); 10 //遍历数组,查找匹配信息 11 for(int i = 0 ; i < dvd.name.length; i++){ 12 //查找到,每个元素前移一位 13 if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==1){ 14 int j=i; 15 while(dvd.name[j+1]!=null){ 16 dvd.name[j]=dvd.name[j+1]; 17 dvd.state[j]=dvd.state[j+1]; 18 dvd.date[j]=dvd.date[j+1]; 19 j++; 20 } 21 //最后一个不为空的元素置空 22 dvd.name[j]=null; 23 dvd.date[j]=null; 24 System.out.println("删除《"+name+"》成功!"); 25 flag=true;//置位,表示删除成功 26 break; 27 }else if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==0){ 28 System.out.println("《"+name+"》为借出状态,不能删除!"); 29 flag=true;//置位 30 break; 31 } 32 } 33 if(!flag){ 34 System.out.println("没有找到匹配信息!"); 35 } 36 System.out.println("**************************"); 37 returnMain(); 38 }
用例6:实现借出DVD业务处理2-1
需求说明
按照输入的名称,借出 指定DVD
思路分析
查找要借出的DVD
判断是否存在
判断是否已借出
如果可借,修改state值
难点提示
各种情况的判断条件
欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 4 ---> 借出DVD 请输入DVD名称: 浪漫满屋 请输入借出日期(年-月-日):2222-2-2 借出《浪漫满屋》成功! ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 2 ---> 查看DVD 序号 状 态 名称 借出日期 1 已借出 <<罗马假日>> 2013-7-1 2 可 借 <<风声鹤唳>> 3 已借出 <<浪漫满屋>> 2222-2-2 ************************** 输入0返回:
1 case 4: 2 lend(); 3 break;
1 /** 2 * 借出DVD 3 */ 4 public void lend(){ 5 System.out.println("---> 借出DVD\n"); 6 7 Scanner input = new Scanner(System.in); 8 System.out.print("请输入DVD名称: "); 9 String want = input.next(); //要借出的DVD名称 10 for(int i = 0; i < dvd.name.length; i++){ 11 if(dvd.name[i] == null){ //无匹配 12 System.out.println("没有找到匹配信息!"); 13 break; 14 }else if(dvd.name[i].equals(want)&& dvd.state[i]==1){ //找到匹配可借 15 dvd.state[i] = 0; 16 System.out.print("请输入借出日期(年-月-日):"); 17 dvd.date[i]=input.next(); 18 System.out.println("借出《"+want+"》成功!"); 19 break; 20 }else if(dvd.name[i].equals(want)&& dvd.state[i]==0){ //找到匹配已被借出 21 System.out.println("《"+want+"》已被借出!"); 22 break; 23 } 24 } 25 System.out.println("**************************"); 26 returnMain(); 27 }
用例7:实现归还DVD业务处理
需求说明
编写方法 returnDvd(),实 现归还DVD,并计算租金
思路分析
查找要归还的DVD
判断是否存在
判断是否未借出
如果已借出,修改state值, 并计算和输出租金
难点提示
字符串-日期转换
欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 5 ---> 归还DVD 请输入DVD名称: 罗马假日 请输入归还日期(年-月-日):2222-2-2 归还《罗马假日》成功! 借出日期为:2013-7-1 归还日期为:2222-2-2 应付租金(元):76186 ************************** 输入0返回:
1 case 5: 2 returnDvd(); 3 break;
1 /** 2 * 归还DVD并计算租金 3 */ 4 public void returnDvd() { 5 System.out.println("---> 归还DVD\n"); 6 7 Scanner input = new Scanner(System.in); 8 long loan = 0;// 租金 9 System.out.print("请输入DVD名称: "); 10 String want = input.next(); 11 for (int i = 0; i < dvd.name.length; i++) { 12 if (dvd.name[i] == null) { // 无匹配 13 System.out.println("没有找到匹配信息!"); 14 break; 15 } else if (dvd.name[i].equals(want) && dvd.state[i] == 0) { // 找到匹配 16 dvd.state[i] = 1; 17 System.out.print("请输入归还日期(年-月-日):"); 18 String redate = input.next(); 19 // 计算租金 20 loan = charge(dvd.date[i], redate); 21 System.out.println("\n归还《" + want + "》成功!"); 22 System.out.println("借出日期为:" + dvd.date[i]); 23 System.out.println("归还日期为:" + redate); 24 System.out.println("应付租金(元):" + loan); 25 break; 26 } else if (dvd.name[i].equals(want) && dvd.state[i] == 1) { // 找到匹配但没有借出 27 System.out.println("该DVD没有被借出!无法进行归还操作。"); 28 break; 29 } 30 } 31 System.out.println("**************************"); 32 returnMain(); 33 } 34 35 /** 36 * 计算日期差 37 * 38 * @param dstr1 第一个日期 39 * @param dstr2 第二个日期 40 * 41 */ 42 public long charge(String dstr1, String dstr2) { 43 long charge = 0; 44 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); 45 try { 46 Date d1 = sd.parse(dstr1); 47 Date d2 = sd.parse(dstr2); 48 charge = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000); 49 } catch (ParseException e) { 50 e.printStackTrace(); 51 } 52 return charge; 53 } 54 }
=============================
完整版
欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 2 ---> 查看DVD 序号 状 态 名称 借出日期 1 已借出 <<罗马假日>> 2013-7-1 2 可 借 <<风声鹤唳>> 3 可 借 <<浪漫满屋>> ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 1 ---> 新增DVD 请输入DVD名称: 小姐姐 新增《小姐姐》成功! ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 2 ---> 查看DVD 序号 状 态 名称 借出日期 1 已借出 <<罗马假日>> 2013-7-1 2 可 借 <<风声鹤唳>> 3 可 借 <<浪漫满屋>> 4 可 借 <<小姐姐>> ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 3 ---> 删除DVD 请输入DVD名称: 小姐姐 删除《小姐姐》成功! ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 4 ---> 借出DVD 请输入DVD名称: 浪漫满屋 请输入借出日期(年-月-日):2222-2-2 借出《浪漫满屋》成功! ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 5 ---> 归还DVD 请输入DVD名称: 浪漫满屋 请输入归还日期(年-月-日):2222-12-12 归还《浪漫满屋》成功! 借出日期为:2222-2-2 归还日期为:2222-12-12 应付租金(元):313 ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 0 ---> 排行榜 ************************** 次数 名称 31 <<浪漫满屋>> 15 <<罗马假日>> 12 <<风声鹤唳>> ************************** 输入0返回:0 欢 迎 使 用 迷 你 DVD 管 理 器 ------------------------------------- 0. 借出排行榜 1. 新 增 DVD 2. 查 看 DVD 3. 删 除 DVD 4. 借 出 DVD 5. 归 还 DVD 6. 退 出 -------------------------------------- 请选择: 6 谢谢 使 用!
1 public class DVDSet { 2 String[] name = new String[50]; //数组1存储DVD名称数组 3 int[] state = new int[50]; //数组2存储DVD借出状态:0已借出/1可借 4 String[] date=new String[50]; //数组3存储DVD借出日期 5 int[] count=new int[50]; //借出次数 6 7 }
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 import java.util.Scanner; 5 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 * 新增DVD 104 */ 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 * 删除DVD 123 */ 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 * 借出DVD 161 */ 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;k<dvd.name .length;k++){ 246 newname[k]=dvd.name[k]; 247 newcount[k]=dvd.count[k]; 248 } 249 250 //利用冒泡排序算法进行排序 251 for(int i=0;i<newname.length;i++){ 252 for(int j=i+1;j<newname.length;j++){ 253 if(newcount[i]>newcount[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 }
1 public class Start { 2 public static void main(String[] args) { 3 DVDMgr dm=new DVDMgr(); 4 dm.initial(); 5 dm.startMenu(); 6 7 } 8 9 }