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 }

 

posted @ 2019-07-19 11:38  I_PENCIL  阅读(247)  评论(0编辑  收藏  举报