迷你DVD管理系统

    xiaoxiao2021-12-14  17

    需求概述

    为某音像店开发一个迷你DVD管理器,实现DVD碟片的管理,主要包括如下功能。

     1.新增DVD。 

        2.查看DVD。 

        3.删除DVD。 

        4借出DVD。 

        5.归还DVD

     项目的运行结果如图所示。

    项目需求

     

      用例1:数据初始化

     

    1. 创建项目MiniDvd,创建类DVDSet,添加三个属性:DVD名称(name)DVD借出状态 (state)DVD借出时间(date),参考问题分析1

    2.创建类 DVDMgr,创建 DVDSet 对象 dvd,实现初始化数据的方法 initial(),初始化 三章DVD碟片信息。例如下表表所示的数据。

     提示:

     public class DVDMgr{

      // 创建DVD对象

      DVDSet dvd = new DVDSet();

      // 初始化三张DVD信息

      public void initial(){ //  

      dvd.name[0]= "罗马假日";

      dvd.state[0]=0;

      dvd.date[0]= "2012-2-1";

        dvd.name[1]="风声鹤唳";

              dvd.state[1]=1;

              dvd.name[2]= "浪漫满屋";

              dvd.state[2]=1;

    }

    }

     

     用例2:实现菜单切换

    编写程序入口,实现菜单显示和菜单的切换,如图所示。

    提示:

     基本操作步骤如下。

     (1) 在类DVDMgr中创建方法startMenu(),利用switch选择结构实现菜单的切换。 switch(choice){

      case 1:

       System.out.println("此处实现新增DVD");    System.out.println("*******************************");    returnMain();   break;

      // ......

     

     }

     

     (2) 在类DVDMgr中创建returnMain()方法,实现返回主菜单。

     

     public void returnMain(){

       Scanner input = new Scanner(System.in);

       System.out.print("输入0返回");

       if(input.nextInt()==0){

       startMenu();

       }else{

          System.out.println("输入错误,异常终止!");

       }

     }

     

    (3) 编写类Start,实现程序入口。

       DVDMgr dm = new DVDMgr(); dm.initial(); dm.startMenu();

     

     

      用例3:实现查看DVD信息

    编写方法search(),遍历dvd对象数组,获取数组元素信息,并进行显示,如图所示。

     

    提示:

     利用for循环遍历dvd数组,根据对状态的判断,显示借出与否的状态。

       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]+">>");

    }

    }

     

     

    用例4:实现新增DVD信息 

    编写方法add(),向dvd数组增加一条DVD信息,实现新增DVD信息,如图所示。 

     提示:

     利用for循环遍历dvd数组,获取dvd数组中第一个namenull的位置并运行添加。

     

    用例5:实现删除DVD信息

    编写方法delete(),业务要求如下。

    1. 根据用户要删除的 DVD 名称,遍历 dvd 数组进行查找并删除。删除该元素后,后面的元 素依次前移一位,如图15.5所示。

    2. 如果DVD为借出状态,不允许删除,如图所示。 

    提示

    利用for循环遍历dvd数组,进行查找。

     

     //遍历数组,查找匹配信息

     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;

           }elseif(dvd.name[i]!=null&&dvd.name[i].equalsIgnoreCase (name)&&dvd.state[i]==0){

              System.out.println(""+name+"》为借出状态,不能删除!");           flag=true;//置位

              break;

       }

     

     }

     

     

     用例6:实现借出DVD的业务处理

    编写方法lend(),实现借出DVD,如图所示。 

     提示:

     首先利用for循环遍历dvd数组,查找是否存在该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+"》成功!");

            break;

        }else if(dvd.name[i].equals(want)&& dvd.state[i]==0){

        //找到匹配已被借出

                System.out.println(""+want+"》已被借出!");

             break;

           }

       }

     

    用例7:实现归还DVD的业务处理

    编写方法returnDvd(),实现归还DVD,并计算租金(1/), 

    提示:

     借出日期利用“年--日”的字符串形式保存,计算两个此种形式的日期差参考如下代码。

     /**

          * 计算日期差

          * @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;

    }

     

     

     

     用例8:实现借出排行榜

    此功能为扩展功能。要求增加菜单项“借出排行榜”,实现借阅次数以从大到小的顺序显示借 出排行榜,如图所示。 

    提示: 实现思路及参考如下。

     (1) DVDSet中添加一个属性count,用来记录借出次数。

     (2) 在方法initial()中增加初始化数据。

     (3) 编写方法 list(),定义两个数组,将 name count 的值赋予新数组,利用排序算法 是吸纳排行榜。

     (4) 修改方法lend(),每次借出成功后,count次数增加1。 

    转载请注明原文地址: https://ju.6miu.com/read-969248.html

    最新回复(0)