迷你DVD管理系统

时间:2021-09-26 19:44:08

需求概述

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

 1.新增DVD。 迷你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碟片信息。例如下表表所示的数据。

迷你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:实现菜单切换

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

迷你DVD管理系统

提示:

 基本操作步骤如下。

 (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对象数组,获取数组元素信息,并进行显示,如图所示。

迷你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信息,如图所示。 


迷你DVD管理系统

 提示:

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

 

用例5:实现删除DVD信息

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

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

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

迷你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,如图所示。 

迷你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/), 

迷你DVD管理系统

提示:

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

 /**

      * 计算日期差

      * @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:实现借出排行榜

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

迷你DVD管理系统

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

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

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

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

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