• 5、判断、循环、数组综合练习案例(迷你DVD)


    迷你dvd代码如下:

      1 package com.manager;
      2 
      3 import java.util.Scanner;
      4 
      5 public class DVDManage {
      6     public static void main(String[] args) {
      7         Scanner input=new Scanner(System.in);
      8         
      9         //1.定义dvd相关数组
     10         String[] name=new String[6]; //DVD名称
     11         int[] state=new int[6]; //状态 ,0借出,    1未借
     12         int[] days=new int[6]; //借出日期(1-31) 31不能借阅,(当月借当月还)
     13         int[] count=new int[6]; //借出次数
     14         
     15         //2.初始化操作给数组赋值(3个)...
     16         //2.1 第一个dvd初始化
     17          name[0]="罗马假日";
     18         state[0]=0;
     19          days[0]=1;
     20         count[0]=15;
     21         
     22         //2.2 第2个dvd初始化
     23          name[1]="西游记";
     24         state[1]=1;
     25         count[1]=15;
     26         
     27         //2.3 第3个dvd初始化
     28          name[2]="浪漫满屋";
     29         state[2]=1;
     30         count[2]=30;
     31         
     32         //3.控制菜单循环变量初始化
     33         boolean isMenu=false;
     34         do{
     35             System.out.println("欢迎使用迷你DVD管理器");
     36             System.out.println("----------------------");
     37             System.out.println("1.新增DVD");
     38             System.out.println("2.查看DVD");
     39             System.out.println("3.删除DVD");
     40             System.out.println("4.借出DVD");
     41             System.out.println("5.归还DVD");
     42             System.out.println("6.退出DVD");
     43             System.out.println("----------------------");
     44             System.out.print("请选择:");
     45             int menuNum=input.nextInt();
     46             switch(menuNum){
     47             case 1:
     48                 //1.1 新增,给数组赋值
     49                 System.out.println("-->新增DVD");
     50                 System.out.print("请输入DVD名称:");
     51                 String dvdName=input.next();
     52                 
     53                 //1.2.定义判断dvd是否已经加满货架的标识符变量(false没有)
     54                 boolean flag1=false;
     55                 
     56                 //1.3.循环数组找到第一个空位置进行添加
     57                 for (int i = 0; i < name.length; i++) {
     58                     //1.3.1找到要添加的空位置
     59                     if(name[i]==null){
     60                         name[i]=dvdName;
     61                         System.out.println("新增《"+dvdName+"》成功!");
     62                         flag1=true; //该空间已经添加dvd
     63                         break;
     64                     }
     65                 }
     66                 
     67                 //1.4.判断货架是否已满
     68                 if(!flag1){
     69                     System.out.println("抱歉,新增《"+dvdName+"》失败!货架已满!");
     70                 }
     71                 System.out.println("******************************************");
     72                 break;
     73             case 2:
     74                 //2.1 查看(循环)
     75                 System.out.println("-->查看DVD");
     76                 System.out.println("序号	状态	名称	借出日期	借出次数");
     77                 
     78                 //2.2 循环打印dvd信息
     79                 for (int i = 0; i < name.length; i++) {
     80                     //2.2.1 只打印有内容的dvd盒子信息,不打印空dvd盒子内容
     81                     if(name[i]!=null){
     82                         //2.2.1.1 定义是否可借出的标识符变量
     83                         String dvdState=(state[i]==1?"可借阅":"已借出");
     84                         
     85                         //2.2.1.2 定义可以借阅多少天的标识符变量
     86                         String dvdDays=(days[i]==0?"":(days[i]+"号"));
     87                         
     88                         //2.2.1.3 打印DVD信息
     89                         System.out.println((i+1)+"	"+dvdState+"	"
     90                          +name[i]+"	"+dvdDays+"	"+count[i]+"次数");
     91                     }
     92                 }
     93                 break;
     94             case 3:
     95                 //3.1删除(移位)
     96                 System.out.println("-->删除DVD");
     97                 System.out.print("请输入要删除的DVD名字:");
     98                 String delete=input.next();
     99                 
    100                 //3.2定义是否根据控制台输入的名字找到匹配项的标识符变量,默认没找到
    101                 boolean flag=false;
    102                 
    103                 //3.3定义要删除DVD的位置
    104                 int index=-1;
    105                 
    106                 //3.4循环找到删除的位置
    107                 for (int i = 0; i < name.length; i++) {
    108                     if(name[i]!=null && delete.equals(name[i]) && state[i]==1){
    109                         flag=true; //根据名字找到匹配DVD
    110                         index=i; //找到删除的位置
    111                         System.out.println("DVD删除成功!");
    112                         break;
    113                     }else if(name[i]!=null && delete.equals(name[i]) && state[i]==0){
    114                         flag=true;//根据名字找到匹配DVD
    115                         System.out.println("该DVD已被借出,目前无法删除!");
    116                         break;
    117                     }
    118                 }
    119                 
    120                 //3.5根据找到的位置删除
    121                 if(index!=-1){
    122                     //循环将删除位置之后的所有元素前移一位
    123                     for (int j = index; j < name.length; j++) {
    124                         //如果删除的是最后一个索引位置则元素不进行移动
    125                         if(j!=name.length-1){
    126                             name[j]=name[j+1];
    127                             state[j]=state[j+1];
    128                             days[j]=days[j+1];
    129                         }
    130                         //如果删除的是最后一位,则将最有一位置空null
    131                         name[name.length-1]=null;
    132                     }
    133                 }
    134                 //3.6 没有找到匹配的DVD名字项
    135                 if(!flag){
    136                     System.out.println("没有根据名字找到匹配的DVD信息!!");
    137                 }
    138                 System.out.println("******************************************");
    139                 break;
    140             case 4:
    141                 //借出(改变dvd的状态0)
    142                 System.out.println("-->借出DVD");
    143                 System.out.print("请输入DVD名称:");
    144                 String want=input.next();
    145                 
    146                 //循环判断要借阅的DVD是否存在
    147                 for (int i = 0; i < name.length; i++) {
    148                     if(name[i]==null){
    149                         System.out.println("没有找到匹配的DVD信息!!");
    150                     }else if(want.equals(name[i]) && state[i]==1){
    151                         //找到匹配可借
    152                         //改变DVD借阅状态为已借阅
    153                         state[i]=0;
    154                         System.out.print("请输入要借阅的日期:");
    155                         days[i]=input.nextInt();
    156                         
    157                         //循环判断用户输入的借阅天数,只能借阅1-31天,r
    158                         //如果不满足条件则让用户循环输入天数直到正确为止
    159                         while(days[i]<1 || days[i]>31){
    160                             System.out.print("必须输入大于等于1且小于等于31的数字,请重新输入:");
    161                             days[i]=input.nextInt();
    162                         }
    163                         
    164                         System.out.println("借出《"+want+"》成功!");
    165                         
    166                         //借出次数累加
    167                         count[i]++; 
    168                         break;
    169                     }else if(want.equals(name[i]) && state[i]==0){
    170                         //找到匹配已被借出
    171                         System.out.println("《"+want+"》已被借出!");
    172                         break;
    173                     }
    174                 }
    175                 System.out.println("******************************************");
    176                 break;
    177             case 5:
    178                 //归还(改变dvd的状态1)
    179                 System.out.println("-->归还DVD");
    180                 //定义借阅租金
    181                 int charge=0;
    182                 System.out.print("请输入DVD的名称:");
    183                 want=input.next();
    184                 for (int i = 0; i < name.length; i++) {
    185                     if(name[i]==null){
    186                         System.out.println("没有找到DVD匹配数据!");
    187                     }else if(want.equals(name[i]) && state[i]==0){
    188                         state[i]=1;
    189                         System.out.print("请输入归还时日期:");
    190                         int redate =input.nextInt();
    191                         //循环判断归还日期不能小于借出日期,也不能大于31,否则重新输入
    192                         while(redate<days[i] || redate>31){
    193                             
    194                             if(redate<days[i]){
    195                                 System.out.print("归还日期不能小于借出日期,请重新输入:");
    196                             }else{
    197                                 System.out.print("一个月只能有31天,请重新输入:");
    198                             }
    199                             //循环输入正确归还日期(1-31)
    200                             redate=input.nextInt();
    201                         }
    202                         //计算出借阅的租金
    203                         charge=redate-days[i];
    204                         System.out.print("归还《"+want+"》成功!");
    205                         System.out.print("借出的日期为:"+days[i]+"号");
    206                         System.out.println("归还日期为:"+redate+"号");
    207                         System.out.println("应付租金(元):"+charge);
    208                         //归还后借阅的日期清零
    209                         days[i]=0;
    210                         break;
    211                     }else if(want.equals(name[i]) && state[i]==1){
    212                         //找到匹配项但是没借出
    213                         System.out.println("该《"+want+"》DVD没有被借出!无法进行归还操作!");
    214                         break;
    215                     }
    216                 }
    217                 System.out.println("******************************************");
    218                 break;
    219             case 6:
    220                 //退出(系统退出)
    221                 System.exit(1);
    222                 break;
    223             default:
    224                 System.out.println("菜单数字选择错误!!");
    225             }
    226         
    227            //改变do-while循环条件  
    228           System.out.print("输入0返回:");
    229           int num=input.nextInt();
    230           if(num==0){
    231               isMenu=true;
    232           }else{
    233               System.out.println("菜单编号输入错误!!");
    234           }
    235         }while(isMenu);
    236         
    237         
    238     }
    239 
    240 }
  • 相关阅读:
    uninstall_edge:win10带浏览器edge卸载工具
    安装spacedesk后,Win10状态栏图标间距变宽
    jacob实现语音朗读一段文本
    汇编语言-12内中断
    告警只提示一次,未解决也不再次提示
    汇编语言-11标志寄存器
    第2章 顺序表及其顺序存储
    第1章 概论
    再见:计算机行业
    QPainter
  • 原文地址:https://www.cnblogs.com/holly8/p/5645241.html
Copyright © 2020-2023  润新知