zoukankan      html  css  js  c++  java
  • Dvd管理系统

    需求:

    前4章的一个总结性练习

    为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理。迷你DVD管理器具备的功能主要包括以下内容

    输入相对应的数字,进入相对应的操作

    分析:

    1、查看DVD信息,有几个字段,每个字段定义6位的数组,我们需要定义 状态、名称、借出日期 这3个数组,目前掌握的知识,就是一一对应的关系

    2、每一次都会有一个菜单,不管符不符合条件都有一个菜单,首先想到do{}while();

    3、、输入的固定数据,代表1个操作,那么我们想到switch(){case}

    4、、case 1:新增:

         找出能加进去的数组下标位置:定义了数组长度是6,但我们初始化数据的时候,可以先初始化3个位置,那么为空的位置,就是要增加的

       当为空的填满了后,是要告诉用户,数组已满,不能再添加了

        同样的,添加名称后,要把状态、借出日期 都要赋值为 未借阅  日期留空

    5、case2:查看:

         遍历数组,遍历这3个数组,这里要注意的是没借过的日期要为空,不能输入0,

         本来数组中有3个的,如果新增,那就有多个,这个循环次数要加个判断 if(names[i]==null)的时候就直接退出循环

    .......

    代码如下:

    这个代码有一些问题:

    import java.util.Scanner;
    /**
     * @author Administrator
     *初始化数据
     *新增
     */
    public class MyDVDMgr {
        public static void main(String[] args) {
            Scanner input=new Scanner(System.in);
            //DVD名称
            String[] names=new String[6];
            //DVD的借阅状态 0:可借阅,1:已借出
            int[] states=new int[6];
            //借出日期
            int[] dates=new int[6];
            //借出次数
            int[] counts=new int[6];
            
            //初始化数据
            names[0]="浪漫满屋";
            states[0]=1;
            dates[0]=8;
            counts[0]=10;
            
            names[1]="罗马假日";
            states[1]=0;
            dates[1]=0;
            counts[1]=5;
            
            names[2]="乾隆秘史";
            states[2]=0;
            dates[2]=0;
            counts[2]=100;
            int choose=0;
            int num2=-1;//接收0,是否返回
            //程序主体编写:DVD管理功能
            do{
                //主菜单显示
                System.out.println("*************欢迎使用迷你DVD管理器***********");
                System.out.println("请选择相应操作:");
                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、退出DVD");
                int num=input.nextInt();
                switch(num){
                    case 1:
                        //新增
                        System.out.println("********************新增DVD*******************");
                        System.out.print("请输入新增的DVD名称:");
                        String name=input.next();
                        int flag=0;//货架还空着,大于0代表满
                        for(int i=0;i<names.length;i++){
                            //如果找着为空的位置,插入进去
                            if(names[i]==null){
                                //如果为空且不等于原来数组中的DVD名称,才插入进去
                                if(names[i]!=name){
                                    names[i]=name;
                                    flag++;
                                    break;
                                }
                                
                            }
                        }
                        if(flag>0){
                            System.out.println("新增"+"《"+name+"》"+"DVD成功");
                        }else{
                            System.out.println("货架已满,不能新增!");
                        }
                        
                        break;
                    case 2:
                        //查看
                        System.out.println("***********************查看DVD***********************");
                        System.out.println("序号	状态	名称	借出日期	借出次数");
                        
                        for(int i=0;i<names.length;i++){
                            if(names[i]!=null){
                                int xuHao=i+1;
                                String state=(states[i]==0)?"可借阅":"已借出";
                                String jieChuDate=(dates[i]==0)?"":dates[i]+"日";
                                String jieChuCount=counts[i]+"次";
                                System.out.println(xuHao+"	"+names[i]+"	"+state+"	"+jieChuDate+"	"+jieChuCount);
                            }
                        }
                        break;
                    case 3:
                        //借出
                        System.out.println("******************借出DVD************");
                        System.out.print("请输入你要借的DVD名称:");
                        String want=input.next();
                        int flag2=0;
                        for(int i=0;i<names.length;i++){
                            if(want.equals(names[i])&&states[i]==0){
                                //存在,且未借阅,可借
                                flag2++;
                                //可借阅,状态要改为可借阅,日期要输入,且次数要加1
                                System.out.print("请输入日期:");
                                dates[i]=input.nextInt();
                                while(dates[i]<1 || dates[i]>30){
                                    System.out.println("输入日期错误,日期在1-30之间,麻烦重新输入:");
                                    dates[i]=input.nextInt();
                                }
                                states[i]=1;
                                counts[i]++;
                            }else if(want.equals(names)&& states[i]==1){
                                //存在,但已借阅,不可再借
                                System.out.println("对不起,此书已借阅,不可再借!");
                                break;
                            }
                            
                        }
                        System.out.println(flag2);
                        //作最后的判断,如果不存在的书
                        if(flag2>0){
                            System.out.println("借阅成功");
                        }else{
                            System.out.println("对不起,此书不存在,不可借阅");
                        }
                        
                        break;
                    case 4:
                        //删除
                        //找到要删除的下标
                        System.out.println("******************删除DVD************");
                        System.out.print("请输入要删除的DVD名称:");
                        String name1=input.next();
                        int index=-1;//要删除的下标
                        //以下这一步只是找下标
                        for(int i=0;i<names.length;i++){
                            if(name1.equals(names[i])&&states[i]==0){
                                //有,未借出
                                index=i;
                                
                                break;
                            }else if(name1.equals(names[i])&&states[i]==1){
                                //有,但已借出
                                System.out.println("对不起,"+"《"+name1+"》"+"已借出,不能删除!");
                                break;
                            }
                        }    
                        
                        //找出要删除的下标后,删除的操作
                        //这里要有条件,就是必须得找出下标的时候,即找着存在名称且index=i后才可以执行删除,条件我给了>0,因为数组下标是>=0
                        if(index>=0){
                            for(int j=names.length-1;j>index;j--){
                                names[j-1]=names[j];
                                states[j-1]=states[j];
                                dates[j-1]=dates[j];
                                counts[j-1]=counts[j];
                            }
                            //补位后,最后一位,要赋空值,不然与倒数第1位重复
                            names[names.length-1]=null;
                            states[states.length-1]=0;
                            dates[dates.length-1]=0;
                            counts[counts.length-1]=0;
                            
                            System.out.println("删除成功!!");
                        }else{
                            System.out.println("对不起,"+"《"+name1+"》"+"不存在,所以不能删除!");
                        }
                        
                        break;
                    case 5:
                        //归还
                        System.out.println("******************删除DVD************");
                        System.out.print("请输入要归还的DVD名称:");
                        String name2=input.next();
                        int flag3=0;
                        int sum=0;
                        for(int i=0;i<names.length;i++){
                            if(name2.equals(names[i])&&states[i]==1){
                                //有此书,且是借阅状态
                                flag3++;
                                //更新日期
                                System.out.print("请输入归还日期:");
                                int backDate=input.nextInt();
                                while(backDate<dates[i] || backDate>31){
                                    if(backDate<dates[i]){
                                        System.out.println("归还日期要大于借出日期,请重新输入:");
                                    }else if(backDate>31){
                                        System.out.println("归还日期不能大于31天,请重新输入:");
                                    }
                                    //不符合条件就一直循环直到输入正确的日期
                                     backDate=input.nextInt();
                                }
                                //更新状态
                                states[i]=0;
                                //计算租金:1天1块钱
                                int jiechudays=backDate-dates[i];
                                if(jiechudays==0){
                                    sum=1;
                                    System.out.println("你今天借,今天还,请付租金1天的钱"+sum);
                                }else if(jiechudays>=1){
                                    sum=jiechudays*1;
                                    System.out.println("请付租金:"+sum);
                                }
                                
                                
                            }else if(name2.equals(names[i])&&states[i]==0){
                                //有此书,但是是未借阅状态
                                System.out.println("此书未被借阅!请重新检查是否正确");
                            }
                            
                        }
    
                        if(flag3>0){
                            System.out.println("归还成功");
                            //算价格啦!
                        }else{
                            System.out.println("不存在此书!");
                        }
                        
                        break;
                    case 6:
                        //退出
                        choose++;
                        break;
                    default:
                        //正确数字以外的结果
                        choose++;
                        break;
                }
                if(choose>0){
                    break;
                }else{
                    //不退出,再次进入主菜单
                    System.out.println("请输入0继续:");
                    num2=input.nextInt();
                }
                
            }while(num2==0);
            
            //程序退出结束
            System.out.println("谢谢使用!");
        }
    }

        修改后:

    package DVD;
    
    import java.util.Scanner;
    
    public class DvdDemo1 {
        public static void main(String[] args) {
            Scanner input=new Scanner(System.in);
            //定义数组
            String[] names=new String[4];
            int[] states=new int[4];//状态,0代表可借阅,1代表已借出
            int[] dates=new int[4];//借阅日期
            int[] counts=new int[4];//借阅交数
            //初始化数据
            names[0]="罗马假日";
            states[0]=1;
            dates[0]=6;
            counts[0]=1;
            
            names[1]="神么东西";
            states[1]=0;
            dates[1]=0;
            counts[1]=0;
            
            names[2]="跑男跑男";
            states[2]=1;
            dates[2]=9;
            counts[0]=8;
            int flag=0;
            
            do{
                System.out.println("欢 迎 使 用 迷 你 DVD 管 理 系 统");
                System.out.println("--------------------------------");
                System.out.println("1、新增");
                System.out.println("2、查看");
                System.out.println("3、删除");
                System.out.println("4、借出");
                System.out.println("5、归还");
                System.out.println("6、退出");
                System.out.println("--------------------------------");
    
                System.out.print("请输入想要进行的操作:");
                int want=input.nextInt();
                switch(want){
                case 1:
                    //新增DVD    
                    int flag2=0;
                    //int ii=0;
                    while(flag2==0){
                        System.out.print("请输入你要新增的DVD名称:");
                        String name=input.next();
                        int flag1=0;
                        for(int i=0;i<names.length;i++){
                            if(!name.equals(names[i]) && names[i]==null){
                                names[i]=name;
                                flag1++;
                                break;    
                            }else if(name.equals(names[i])){
                                flag1=-1;
                                break;
                            }
                            
                        }
                        if(flag1>0){
                            System.out.println("新增DVD成功!");
                            System.out.print("继续新增还是退出新增?(y/n)");
                            String yes=input.next();
                            if("n".equals(yes)){
                                flag2++;
                            }
                        }else if(flag1==-1){
                            System.out.println("已存在"+"《"+name+"》"+"名称的DVD,不能再插入了!");
                            System.out.print("继续新增还是退出新增?(y/n)");
                            String yes1=input.next();
                            if("n".equals(yes1)){
                                flag2++;
                            }
                        }
                        else if(flag1==0){
                            System.out.println("没有位置了");
                            flag2++;
                        }
                        
                    }
                    break;
                    
                case 2:
                    //查看DVD信息
                    System.out.println("序号	名称	借阅状态	借阅日期	借阅次数");
                    for(int i=0;i<names.length;i++){
                        if(names[i]!=null){
                            String state="";
                            if(states[i]==0){
                                state="可借阅";
                            }else{
                                state="已借出";
                            }
                            String date="";
                            if(dates[i]==0){
                                date="";
                            }else{
                                date=dates[i]+"日";
                            }
                            System.out.println((i+1)+"	"+names[i]+"	"+state+"	"+date+"	"+counts[i]);
                        }
                        
                        }
                        
                    break;
                case 3:
                    //删除DVD
                    System.out.print("请输入你要删除的DVD名称:");
                    String name1=input.next();
                    int flag3=0;
                    int index=-1;
                    //先找出我输入的是哪本书,再判断此书有没有
                    
                    for(int i=0;i<names.length;i++){
                        if(names[i]!=null && states[i]==0 && name1.equals(names[i])){
                            index=i;
                            flag3++;
                            break;
                        }else if(states[i]==1 && name1.equals(names[i])){
                            System.out.println("不能删除"+"《"+name1+"》,状态已借阅");
                            flag3=-1;
                            break;
                            
                        }
                    }
                    //移位
                    if(flag3>0){
                        System.out.println("删除成功!");
                        //System.out.println("index="+index);
                        for(int i=index+1;i<names.length-1;i++){
                            names[i-1]=names[i];
                            states[i-1]=states[i];
                            dates[i-1]=dates[i];
                            counts[i-1]=counts[i];
                            }
                        
                        }else if(flag3==0){
                            System.out.println("没有找着此书!");
                        }
                    break;
                    
                case 4:
                    //借出
                    System.out.print("请输入要借阅的DVD名称:");
                    String name4=input.next();
                    //先遍历,找出有没有,或已借出
                    int flag5=0;
                    int index1=-1;
                    
                    for(int i=0;i<names.length;i++){
                        if(names[i]!=null && name4.equals(names[i]) && states[i]==0){
                            index1=i;
                            flag5++;
                            
                            break;
                            
                        }else if(name4.equals(names[i]) && states[i]==1){
                            flag5=-1;
                            System.out.println("《"+name4+"》"+"已借出!不能再借!");
                            break;
                        }
                        
                    }
                    if(flag5>0){
                        System.out.print("请输入借出日期:");
                        dates[index1]=input.nextInt();
                        states[index1]=1;
                        counts[index1]++;
                        System.out.println("借阅成功");
                    }else if(flag5==0){
                        System.out.println("此书不存在!");
                    }
                    break;
                    
                case 5:
                    //归还 状态要改,要有归还时间 
                    System.out.print("请输入要归还的DVD名称:");
                    String huanname=input.next();
                    //先遍历,找出有没有,或已借出
                    int flag6=0;
                    int index3=-1;
                    int huandate=0;
                    for(int i=0;i<names.length;i++){
                        //有且是已借出状态,可还
                        if(names[i]!=null && huanname.equals(names[i]) && states[i]==1){
                            index3=i;
                            flag6++;
                            
                            break;
                            
                        }else if(huanname.equals(names[i]) && states[i]==0){//有但是未借出状态
                            flag6=-1;
                            System.out.println("《"+huanname+"》"+"已还!");
                            break;
                        }
                        
                    }
                    if(flag6>0){
                        System.out.print("请输入归还日期:");
                        huandate=input.nextInt();
                        int money=(huandate-dates[index3])*1;
                        dates[index3]=huandate;
                        states[index3]=0;
                        counts[index3]++;
                        System.out.println("归还成功");
                        System.out.println("请付租金:"+money);
                    }else if(flag6==0){
                        System.out.println("此书不存在!");
                    }
                    break;
                    
                case 6:
                    flag++;
                    break;
                default:
                    flag++;
                    break;
                }
                
                
            }while(flag==0);
            System.out.println("程序结束!");
        }
    }
  • 相关阅读:
    汤姆猫解决打印日志乱码问题
    oracel如何将timestamp转化为date类型
    oracle排序分页
    批量删除某一后缀的临时表
    oracle分组排序后获取每组行号
    cxf中隐藏服务列表
    怎么从一张表中查询数据插入到另一张表中
    weblogic创建域
    java多线程
    Linux常用命令大全
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/5465842.html
Copyright © 2011-2022 走看看