天天看點

JAVA之迷你DVD管理器

1、JAVA之迷你DVD管理器。

1>打開記事本,寫如下一段代碼:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class DVDMgr {
    /**
    * 建立DVD對象
    */
    DVDSet dvd = new DVDSet();
    /**
    * 初始三個DVD 
    */
    public void initial() {
    
        dvd.name[0] = "少年奇幻漂流記";
        dvd.state[0] = 0; 
        dvd.date[0]="2013-2-15";
        dvd.count[0]=15;
        
        dvd.name[1] = "兵臨城下";
        dvd.state[1] = 1;  
        dvd.count[1]=12;
        
        dvd.name[2] = "人在囧途";
        dvd.state[2] = 1;
        dvd.count[2]=30;
    }
    
    /**
    * 開始菜單
    */
    public void startMenu(){
    System.out.println("歡 迎 使 用 迷 你 DVD 管 理 器");
       System.out.println("-------------------------------------");
       System.out.println("0. 借出排行榜");
       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. 退         出 ");
       
       System.out.print("--------------------------------------\n");
       System.out.print("請選擇: ");
       Scanner input = new Scanner(System.in);
       int choice = input.nextInt();
           switch(choice){
               case 0:
                  list();
                  break;
               case 1:
                  add();
                  break;
                  case 2: 
                  search();
                  break;
                  case 3:
                  delete();
                  break;
                  case 4:
                  lend();
                  break;
                  case 5:
                  returnDvd();
                  break;
                  case 6:
                  System.out.println("\n謝謝 使 用!");
                  break;
           }
    }
    
    /**
     * 傳回主菜單
     */
    public void returnMain(){
        Scanner input = new Scanner(System.in); 
        System.out.print("輸入0傳回:");
        if(input.nextInt() == 0){
            startMenu();
        }else{
            System.out.println("輸入錯誤, 異常終止!");
        }
    }
    /**
     * 檢視DVD
     */
    public void search(){
        System.out.println("---> 檢視DVD\n");
        System.out.println("序号\t狀 态\t名稱\t\t借出日期");
        for(int i = 0 ; i < dvd.name.length; i++){
           if(dvd.name[i]==null){
                break;
           }else if(dvd.state[i] == 0){
                System.out.println((i+1)+"\t已借出\t"+"<<"+ dvd.name[i]+ ">>\t" + dvd.date[i]);
           }else if(dvd.state[i] == 1){
                System.out.println((i+1)+"\t可 借\t"+"<<"+dvd.name[i]+">>");
           }
        }
        System.out.println("**************************");
        returnMain();  
    }
    
    /**
     * 新增DVD
     */
    public void add(){
        Scanner input = new Scanner(System.in);
        System.out.println("---> 新增DVD\n");    
        System.out.print("請輸入DVD名稱: ");
        String name = input.next();  
        for(int i = 0; i < dvd.name.length; i++){    
            if(dvd.name[i] == null){    //查詢最後一個空位置插入
                dvd.name[i]=name;
                dvd.state[i]=1;//置新增的DVD可借狀态
                System.out.println("新增《"+name+"》成功!");
                break;
            }
        }
        System.out.println("**************************");
        returnMain();   
    } 
       
    /**
     * 删除DVD
     */
    public void delete(){
        Scanner input = new Scanner(System.in);
        boolean flag=false;//辨別删除成功與否
        System.out.println("---> 删除DVD\n");
        System.out.print("請輸入DVD名稱: ");
        String name = input.next();  
        //周遊數組,查找比對資訊
        for(int i = 0 ; i < dvd.name.length; i++){
            //查找到,每個元素前移一位
            if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==1){
                int j=i;
                while(dvd.name[j+1]!=null){
                dvd.name[j]=dvd.name[j+1];
                dvd.state[j]=dvd.state[j+1];
                dvd.date[j]=dvd.date[j+1];
                j++;
                }
                //最後一個不為空的元素置空
                dvd.name[j]=null;  
                dvd.date[j]=null; 
                System.out.println("删除《"+name+"》成功!");
                flag=true;//置位,表示删除成功
                break;
            }else if(dvd.name[i]!=null &&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==0){
                System.out.println("《"+name+"》為借出狀态,不能删除!"); 
                flag=true;//置位
                break;
            }
        }
        if(!flag){
            System.out.println("沒有找到比對資訊!");
        }
        System.out.println("**************************");
        returnMain();  
    }
    /**
     * 借出DVD
     */
    public void lend(){
        System.out.println("---> 借出DVD\n"); 
        Scanner input = new Scanner(System.in);
        System.out.print("請輸入DVD名稱: ");
        String want = input.next();  //要借出的DVD名稱 
        for(int i = 0; i < dvd.name.length; i++){    
            if(dvd.name[i] == null){    //無比對
                System.out.println("沒有找到比對資訊!");
                break;
            }else if(dvd.name[i].equals(want)&& dvd.state[i]==1){  //找到比對可借 
                dvd.state[i] = 0;
                System.out.print("請輸入借出日期(年-月-日):");
                dvd.date[i]=input.next();
                System.out.println("借出《"+want+"》成功!");  
                dvd.count[i]++;
                break;
            }else if(dvd.name[i].equals(want)&& dvd.state[i]==0){  //找到比對已被借出
                System.out.println("《"+want+"》已被借出!");
                break;
            }    
        }
        System.out.println("**************************");
        returnMain();
    }
    
    /**
     * 歸還DVD并計算租金
     */
    public void returnDvd(){
        System.out.println("---> 歸還DVD\n");
        Scanner input = new Scanner(System.in);
        long loan=0;//租金
        System.out.print("請輸入DVD名稱: ");
        String want = input.next();
        for(int i = 0; i < dvd.name.length; i++){    
            if(dvd.name[i] == null){    //無比對
                System.out.println("沒有找到比對資訊!");
                break;
            }else if(dvd.name[i].equals(want) && dvd.state[i]==0){  //找到比對 
                dvd.state[i] = 1;
                System.out.print("請輸入歸還日期(年-月-日):");
                String redate=input.next();
                //計算租金
                loan=charge(dvd.date[i],redate);
                System.out.println("\n歸還《"+want+"》成功!");
                System.out.println("借出日期為:"+dvd.date[i]);
                System.out.println("歸還日期為:"+redate);
                System.out.println("應付租金(元):"+loan);
                break;
            }else if(dvd.name[i].equals(want) && dvd.state[i]==1){ //找到比對但沒有借出
                System.out.println("該DVD沒有被借出!無法進行歸還操作。");
                break;
            }
        }
        System.out.println("**************************");
        returnMain();
    }
    
    /**
     * 計算日期差
     * @param dstr1 第一個日期
     * @param dstr2 第二個日期
     * 
     */
    public long charge(String dstr1,String dstr2){
        long charge=0;
        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date d1=sd.parse(dstr1);
            Date d2=sd.parse(dstr2);
            charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
        } catch (ParseException e) {
            e.printStackTrace();
        }    
        return charge;
    }
    /**
     * 借出排行榜
     */
    public void list(){
        //定義新數組,用來存放排序後DVD資訊
        String[] newname = new String[50];        
        int[] newcount=new int[50];  
        for(int k=0;k<dvd.name .length;k++){
            newname[k]=dvd.name[k];
            newcount[k]=dvd.count[k];
        }
         
        //利用冒泡排序算法進行排序
        for(int i=0;i<newname.length;i++){
            for(int j=i+1;j<newname.length;j++){
                if(newcount[i]>newcount[j]){
                    int tempc=newcount[i];
                    newcount[i]=newcount[j];
                    newcount[j]=tempc;
                    String tempn=newname[i];
                    newname[i]=newname[j];
                    newname[j]=tempn;
                }    
            }    
        }
        System.out.println("---> 排行榜\n");
        System.out.println("**************************");
        System.out.println("次數\t名稱");
        //顯示排行榜資訊
        for(int i=newname.length-1;i>=0;i--){
            if(newname[i]!=null){
                System.out.println(newcount[i]+"\t<<"+ newname[i]+ ">>" );
            }
        }      
        
       System.out.println("**************************");
       returnMain();
    }
}
           

儲存為DVDMgr.java【同上節,我還是把他放在了D盤下InputTest檔案夾内】 

2>打開記事本,寫如下一段代碼:

public class DVDSet {
    String[] name = new String[50];   //數組1存儲DVD名稱數組
    int[] state = new int[50];        //數組2存儲DVD借出狀态:0已借出/1可借
    String[] date=new String[50];     //數組3存儲DVD借出日期
    int[] count=new int[50];         //借出次數
}
           

儲存為DVDSet.java【同上節,我還是把他放在了D盤下InputTest檔案夾内】  

3>打開記事本,寫如下一段代碼: 

public class Start {
    /**
    * @param args
    */
    public static void main(String[] args) {
        DVDMgr dm=new DVDMgr();
        dm.initial();
        dm.startMenu();
    }
}
           

儲存為Start.java【同上節,我還是把他放在了D盤下InputTest檔案夾内】 

打開dos運作視窗,輸入d:轉到D盤,接下來輸入cd InputTest轉到InputTest目錄下:

輸入Javac Start.java 回車 java Start。

我們依次選擇0,1,2,3,4,5,6;結果如下圖: 

JAVA之迷你DVD管理器
JAVA之迷你DVD管理器
JAVA之迷你DVD管理器
JAVA之迷你DVD管理器