• java基础<迷你DVD系统>


    一.写在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
    ");
     49                     System.out.println("请输入DVD名称:");
     50                     String dvdName=input.next();
     51                     boolean flag2=false;
     52                     for(int i=0;i<name.length;i++){
     53                         if(name[i]==null){
     54                             name[i]=dvdName;
     55                             System.out.println("新增《"+dvdName+"》成功!");
     56                             flag2=true;
     57                             break;
     58                         }
     59                     }
     60                     if(!flag2){
     61                         System.out.println("抱歉,新增《"+dvdName+"》失败!货架已满!");
     62                     }
     63                     System.out.println("*****************************************");
     64                     break;
     65                 case 2:
     66                     //查看DVD
     67                     System.out.println("-->查看DVD
    ");
     68                     System.out.println("序号	状态	名称	借出日期	借出次数");
     69                     for(int i=0;i<name.length;i++){
     70                         if(name[i]!=null){
     71                             String dvdState=(state[i]==0)?"可借阅":"已借出";
     72                             String dateStr=(date[i]==0)?"":(date[i]+"日");
     73                             System.out.println((i+1)+"	"+dvdState+"	"
     74                               +name[i]+"	"+dateStr+"	"+count[i]+"次");
     75                         }
     76                     }
     77                     System.out.println("*****************************************");
     78                     break;
     79                 case 3:
     80                     //删除DVD
     81                     System.out.println("-->删除DVD
    ");
     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<name.length;i++){
     87                         if(name[i]!=null && delete.equals(name[i]) && state[i]==0){
     88                             flag3=true;
     89                             index=i;
     90                             System.out.println("DVD删除成功!");
     91                             break;
     92                         }else if(name[i]!=null && delete.equals(name[i]) && state[i]==1){
     93                             flag3=true;
     94                             System.out.println("该DVD已被借出,目前无法删除!");
     95                             break;
     96                         }
     97                     }
     98                     //根据记录下来的删除DVD的位置进行删除工作
     99                     if(index!=-1){
    100                         for(int j=index;j<name.length;j++){
    101                             if(j!=name.length-1){
    102                                 name[j]=name[j+1];
    103                                 state[j]=state[j+1];
    104                                 date[j]=date[j+1];
    105                             }
    106                             name[name.length-1]=null;
    107                             
    108                         }
    109                     }
    110                     if(!flag3){
    111                         System.out.println("没有找到匹配信息!");
    112                     }
    113                     System.out.println("*****************************************");
    114                     break;
    115                 case 4:
    116                     //借出DVD
    117                     System.out.println("-->借出DVD
    ");
    118                     System.out.print("请输入DVD名称:");
    119                     String want=input.next();  //要借出的DVD名称
    120                     for(int i=0;i<name.length;i++){
    121                         if(name[i]==null){  //无匹配
    122                             System.out.println("没有找到匹配信息!");
    123                             break;
    124                         }else if(want.equals(name[i]) && state[i]==0){  //找到匹配可借
    125                             state[i]=1; //将此DVD置于借出状态
    126                             System.out.print("请输入借出日期:");
    127                             date[i]=input.nextInt();
    128                             while(date[i]<1 || date[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                     //归还DVD
    144                     System.out.println("-->归还DVD
    ");
    145                     int charge=0;  //租金
    146                     System.out.print("请输入归还DVD名称:");
    147                     want=input.next();
    148                     for(int i=0;i<name.length;i++){
    149                         if(name[i]==null){ //无匹配
    150                             System.out.println("没有找到匹配信息!");
    151                             break;
    152                         }else if(want.equals(name[i]) && state[i]==1){//找到匹配
    153                             state[i]=0;  //将借阅状态修改为可借阅
    154                             System.out.print("请输入归还日期:");
    155                             int redate=input.nextInt();
    156                             while(redate<date[i] || redate>31){  //归还日期不能小于借出日期,也不能大于31
    157                                 if(redate<date[i]){
    158                                     System.out.println("归还日期不能小于借出日期,请重新输入:");
    159                                 }else{
    160                                     System.out.println("一个月只有31天,请重新输入:");
    161                                 }
    162                                 redate=input.nextInt();
    163                             }
    164                             charge=redate-date[i];
    165 
    166                             System.out.println("
    归还《"+want+"》成功!");
    167                             System.out.println("借出日期为:"+date[i]+"日");
    168                             System.out.println("归还日期为:"+redate+"日");
    169                             System.out.println("应付租金(元):"+charge);
    170                                                         date[i]=0;
    171                             break;
    172                         }else if(want.equals(name[i]) && state[i]==0){//找到匹配但没有借出
    173                             System.out.println("该DVD没有被借出!无法进行归还操作。");
    174                             break;
    175                         }
    176                     }
    177                     System.out.println("*****************************************");
    178                     break;
    179                 case 6:
    180                     //退出DVD
    181                     flag=false;
    182                     break;
    183                 default:
    184                     flag=false;
    185                     break;
    186             }
    187             if(flag){
    188                 System.out.println("输入0返回:");
    189                 num=input.nextInt();
    190             }else{
    191                 break;
    192             }
    193         }while(num==0);
    194         System.out.println("谢谢使用!");
    195     }
    196 }
    MyDVDMgr.java

    二.抽分方法写在不同类

    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 }
    DVDSet.java

    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("--------------------------------------
    ");
     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("
    谢谢 使 用!");
     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
    ");
     89         System.out.println("序号	状 态	名称		借出日期");
     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)+"	已借出	"+"<<"+ dvd.name[i]+ ">>	" + dvd.date[i]);
     95                }else if(dvd.state[i] == 1){
     96                    System.out.println((i+1)+"	可 借	"+"<<"+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
    ");        
    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
    ");
    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
    ");
    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
    ");
    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("
    归还《"+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("---> 排行榜
    ");
    264         System.out.println("**************************");
    265         System.out.println("次数	名称");
    266         //显示排行榜信息
    267         for(int i=newname.length-1;i>=0;i--){
    268             if(newname[i]!=null){
    269                 System.out.println(newcount[i]+"	<<"+ newname[i]+ ">>" );
    270             }
    271         }      
    272            System.out.println("**************************");
    273            returnMain();
    274        }
    275 }
    DVDMgr.java

    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 }
    Start.java

    三、运行效果图

  • 相关阅读:
    【题解】1621. 未命名
    【模板】关于vector的lower_bound和upper_bound以及vector基本用法 STL
    【题解】数颜色 STL vector数组
    【题解】斐波拉契 luogu3938
    【题解】天天酷跑
    【题解】Grape luogu1156改 dp
    【题解】逐个击破 luogu2700
    【题解】ball 数论
    【题解】逐个击破 luogu2700
    【题解】平方根
  • 原文地址:https://www.cnblogs.com/holly8/p/6009862.html
Copyright © 2020-2023  润新知