迷你DVD管理器

一、需求分析

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

新增DVD

查看DVD

删除DVD

借出DVD

归还DVD

二、整体开发思路

系统开发步骤

明确需求,设计对象保存DVD信息 设计技术框架 采用Java技术 编码顺序

1、数据初始化 2、菜单切换 3、完成各种DVD管理操作 测试

 三、各个功能模块设计

1.初始化DVD信息

   /**
     * 初始化
     */
      public void init(){
          indexs[0]=1;
          indexs[1]=2;
          indexs[2]=3;
          states[0]="已借出";
          states[1]="可借";
          states[2]="可借";
          names[0]="罗马假日";
          names[1]="风声鹤唳";
          names[2]="浪漫满屋";
          dates[0]="2010-7-1";
          dates[1]="";
          dates[2]="";
      }

2.菜单页面设计

/**
     * 主菜单
     */
    public void menu()  {
        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.退   出");
        System.out.println("======================");
        System.out.println("请选择:");
        int index=input.nextInt();
        switch (index){
            case 1:
                case01();
                break;
            case 2:
                case02();
                break;
            case 3:
                case03();
                break;
            case 4:
                case04();
                break;
            case 5:

                try {
                    case05();
                } catch (ParseException e) {
                    e.printStackTrace();
                }

                break;
            case 6:
                System.out.println("感谢使用本系统!");
                System.exit(1);
        }
    }

3.查看DVD信息

设计思想:采用for循环遍历整个系统,要是信息为空直接break跳出,不为空则按照下标元素递增的顺序输出。

    /**
     * 查看DVD
     */
    public void case02(){
        System.out.println("---------->查看DVD");
        System.out.println("序号\t状态\t 名称\t 借出日期");
        for (int i=0;i<names.length;i++ ){
            if(names[i]==null){
                break;
            }
            System.out.println(indexs[i]+"\t"+states[i]+"\t"+names[i]+"\t"+dates[i]);
        }
        System.out.println("=========");
        getReturn();
    }

4.添加DVD信息

设计思想:采用for循环遍历整个系统,找到第一个信息为空的数组,然后更新其状态、序号、名称和借出日期。

    /**
     * 新增DVD
     */
    private void case01() {
        System.out.println("------>添加DVD");
        System.out.println("请输入DVD名称:");
        String dvdname=input.next();
        for (int i=0;i<names.length;i++){
            if (names[i]==null){
                indexs[i]=i+1;
                names[i]=dvdname;
                states[i]="可借";
                dates[i]="";
                System.out.println("新增《"+dvdname+"》成功");
                break;
            }

        }
        getReturn();
    }

5.删除DVD信息

设计思想:分析:

1.根据用户所输入的dvd名称去数组中查找一遍

2.如果数组中存在要删除的dvd名称,就正常往下操作:

 (1)如果dvd的当前状态是借出状态,是不能删除

 (2)如果当前状态是可借状态,可以正常删除

3.如果不存在,应该给用户提示信息

4.如果已经删除了,应该将后面的每一个元素都得往前移位

 private void case03() {
        boolean flag=false;
        System.out.println("-------------->删除DVD");
        System.out.println("请选择要删除的DVD名称:");
        String dvdname=input.next();
        int index=-1;
        int i=0;
        for (;i<names.length;i++){
                if (dvdname.equals(names[i])){
                    index=i;
                    flag=true;
                    break;
                }
        }
        if (flag) {//表示找到了
            if (states[i] == "已借出") {//已借出不可删除
                System.out.println("《" + names[i] + "》为借出状态,不可删除");
            }
            if (states[i] == "可借") {
                int j = index;//未被借出,可以删除
                System.out.println("删除《" + names[index] + "》成功");
                for (; j < names.length - 1; j++) {
                    names[j] = names[j + 1];

                }


            }

        }else {//表示不存在要删除的DVD
            System.out.println("您要删除的DVD不存在!");

        }

        getReturn();
    }

6.借出DVD

设计思想:

1.根据用户所输入的dvd名称去数组中查找一遍

2.如果数组中存在要借出的dvd名称,就正常往下操作:

 (1)如果dvd的当前状态是借出状态,则说明此DVD为借出状态,不可外借

 (2)如果当前状态是可借状态,可以正常借出,借出时只需修改状态,更新借出日期即可

3.如果不存在,应该给用户提示信息

 /**
     * 借出DVD
     */
    private void case04() {
        boolean flag=false;
        System.out.println("---------------->借出DVD");
        System.out.println("请输入需要借出的DVD名称:");
        String dvdname=input.next();
        int i=0;
        for (;i<names.length;i++){
            if (dvdname.equals(names[i])){
                flag=true;
                break;

            }

        }
        if (flag){//管理器中存在要借的DVD
            if (states[i]=="已借出"){
                System.out.println("《"+dvdname+"》"+"为借出状态,不可外借");
            }else {//存在的情况下,并且为可借状态
                System.out.println("请输入借出日期(年-月-日):");
                String times=input.next();
                states[i]="已借出";
                dates[i]=times;
                System.out.println("借出成功!");
            }

        }else {//管理器中没有要借的DVD
            System.out.println("该管理器中没有《"+dvdname+"》这个DVD");

        }
        getReturn();
    }

7.归还DVD

设计思想:

1.根据用户所输入的dvd名称去数组中查找一遍

2.如果数组中存在要归还的dvd名称,就正常往下操作:

 (1)如果dvd的当前状态是可借状态,则说明此DVD不是这个店铺的

 (2)如果当前状态是已借出状态,则可以正常归还,归还时只需修改状态,更新借出日期即可但是,

我们还要根据要求输出应付租金,但是我们输入的借出日期和归还日期都为字符串形式,无法直接

进行计算,所以,通过调用SimpleDateFormat方法把字符串转化成时间类型来进行计算,进而计

算出租金。

3.如果不存在,应该给用户提示信息

/**
     * 归还DVD
     */
    private void case05() throws ParseException {

        boolean flag=false;
        System.out.println("-------------->归还DVD");
        System.out.println("请输入要归还的DVD名称:");
        String dvdnames=input.next();
        int i=0;
        for (;i<names.length;i++){
            if (dvdnames.equals(names[i])){
                flag=true;
                break;
            }
        }
        if (flag){//找到了
            if (states[i]=="可借"){//归还的DVD不是该店铺的
                System.out.println("《"+dvdnames+"》"+"不是该店铺的");
            }
            if (states[i]=="已借出"){//states[i]=="已借出",所以可以归还
                System.out.println("请输入归还日期:");
                String date2=input.next();
                String date1=dates[i];
                states[i]="可借";
                dates[i]="";
                System.out.println("归还《"+dvdnames+"》成功");
                //字符串类型 ----》转换成时间类型;
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                Date parse1 =sdf.parse(date1);
                Date parse2 = sdf.parse(date2);
                long time1 = parse1.getTime();//毫秒数。距离1900.1.的毫秒数
                long time2 = parse2.getTime();
                long money= (time2-time1)/(1000*60*60*24);
                System.out.println("借出日期为:"+date1);
                System.out.println("归还日期为:"+date2);
                System.out.println("需要支付"+money+"元");
            }
        }else {
            System.out.println("未查到DVD《"+dvdnames+"》"+"的信息");
        }
        getReturn();
    }

 四、测试

1.菜单页面

2.查看页面 

 3.添加页面

   

4.删除页面 

 5.借出页面

 

6.归还页面 

 五、源代码

        作为小白的我深刻知道在网上美名其曰“参考”别人代码的时候的懵逼状态,所以在此附上源码,拿来就能用

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;


public class DVD1 {
    /**
     *写项目不要着急!
     *
     */
        int[] indexs=new int[50];
        String[] states=new String[50];
        String[] names=new String[50];
        String[] dates=new String[50];
        Scanner input=new Scanner(System.in);


    /**
     * 初始化
     */
      public void init(){
          indexs[0]=1;
          indexs[1]=2;
          indexs[2]=3;
          states[0]="已借出";
          states[1]="可借";
          states[2]="可借";
          names[0]="罗马假日";
          names[1]="风声鹤唳";
          names[2]="浪漫满屋";
          dates[0]="2010-7-1";
          dates[1]="";
          dates[2]="";
      }

    public static void main(String[] args) {

        DVD1 dvd=new DVD1();//静态调用非静态
        dvd.init();  //1.加载初始化数据
        dvd.menu();  //2.启动菜单

    }

    /**
     * 主菜单
     */
    public void menu()  {
        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.退   出");
        System.out.println("======================");
        System.out.println("请选择:");
        int index=input.nextInt();
        switch (index){
            case 1:
                case01();
                break;
            case 2:
                case02();
                break;
            case 3:
                case03();
                break;
            case 4:
                case04();
                break;
            case 5:

                try {
                    case05();
                } catch (ParseException e) {
                    e.printStackTrace();
                }

                break;
            case 6:
                System.out.println("感谢使用本系统!");
                System.exit(1);
        }
    }

    /**
     * 归还DVD
     */
    private void case05() throws ParseException {

        boolean flag=false;
        System.out.println("-------------->归还DVD");
        System.out.println("请输入要归还的DVD名称:");
        String dvdnames=input.next();
        int i=0;
        for (;i<names.length;i++){
            if (dvdnames.equals(names[i])){
                flag=true;
                break;
            }
        }
        if (flag){//找到了
            if (states[i]=="可借"){//归还的DVD不是该店铺的
                System.out.println("《"+dvdnames+"》"+"不是该店铺的");
            }
            if (states[i]=="已借出"){//states[i]=="已借出",所以可以归还
                System.out.println("请输入归还日期:");
                String date2=input.next();
                String date1=dates[i];
                states[i]="可借";
                dates[i]="";
                System.out.println("归还《"+dvdnames+"》成功");
                //字符串类型 ----》转换成时间类型;
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                Date parse1 =sdf.parse(date1);
                Date parse2 = sdf.parse(date2);
                long time1 = parse1.getTime();//毫秒数。距离1900.1.的毫秒数
                long time2 = parse2.getTime();
                long money= (time2-time1)/(1000*60*60*24);
                System.out.println("借出日期为:"+date1);
                System.out.println("归还日期为:"+date2);
                System.out.println("需要支付"+money+"元");
            }
        }else {
            System.out.println("未查到DVD《"+dvdnames+"》"+"的信息");
        }
        getReturn();
    }
 /**
     * 借出DVD
     */
    private void case04() {
        boolean flag=false;
        System.out.println("---------------->借出DVD");
        System.out.println("请输入需要借出的DVD名称:");
        String dvdname=input.next();
        int i=0;
        for (;i<names.length;i++){
            if (dvdname.equals(names[i])){
                flag=true;
                break;

            }

        }
        if (flag){//管理器中存在要借的DVD
            if (states[i]=="已借出"){
                System.out.println("《"+dvdname+"》"+"为借出状态,不可外借");
            }else {//存在的情况下,并且为可借状态
                System.out.println("请输入借出日期(年-月-日):");
                String times=input.next();
                states[i]="已借出";
                dates[i]=times;
                System.out.println("借出成功!");
            }

        }else {//管理器中没有要借的DVD
            System.out.println("该管理器中没有《"+dvdname+"》这个DVD");

        }
        getReturn();
    }

    /**
     * 删除DVD信息
     * 分析:
     * 1.根据用户所输入的dvd名称去数组中查找一遍
     * 2.如果数组中存在要删除的dvd名称,就正常往下操作:
     * (1)如果dvd的当前状态是借出状态,是不能删除
     * (2)如果当前状态是可借状态,可以正常删除
     * 3.如果不存在,应该给用户提示信息
     * 4.如果已经删除了,应该将后面的每一个元素都得往前移位
     */
    private void case03() {
        boolean flag=false;
        System.out.println("-------------->删除DVD");
        System.out.println("请选择要删除的DVD名称:");
        String dvdname=input.next();
        int index=-1;
        int i=0;
        for (;i<names.length;i++){
                if (dvdname.equals(names[i])){
                    index=i;
                    flag=true;
                    break;
                }
        }
        if (flag) {//表示找到了
            if (states[i] == "已借出") {//已借出不可删除
                System.out.println("《" + names[i] + "》为借出状态,不可删除");
            }
            if (states[i] == "可借") {
                int j = index;//未被借出,可以删除
                System.out.println("删除《" + names[index] + "》成功");
                for (; j < names.length - 1; j++) {
                    names[j] = names[j + 1];

                }


            }

        }else {//表示不存在要删除的DVD
            System.out.println("您要删除的DVD不存在!");

        }

        getReturn();
    }

    /**
     * 新增DVD
     */
    private void case01() {
        System.out.println("------>添加DVD");
        System.out.println("请输入DVD名称:");
        String dvdname=input.next();
        for (int i=0;i<names.length;i++){
            if (names[i]==null){
                indexs[i]=i+1;
                names[i]=dvdname;
                states[i]="可借";
                dates[i]="";
                System.out.println("新增《"+dvdname+"》成功");
                break;
            }

        }
        getReturn();
    }

    /**
     * 查看DVD
     */
    public void case02(){
        System.out.println("---------->查看DVD");
        System.out.println("序号\t状态\t 名称\t 借出日期");
        for (int i=0;i<names.length;i++ ){
            if(names[i]==null){
                break;
            }
            System.out.println(indexs[i]+"\t"+states[i]+"\t"+names[i]+"\t"+dates[i]);
        }
        System.out.println("=========");
        getReturn();
    }

    /**
     * 返回主菜单
     */
    public void getReturn(){
        System.out.println("输入0返回");
        int i=input.nextInt();
        if(i==0){
            menu();
        }
    }
}

六、总结 

        在经过老师的指导下,纯小白的我做的第一个小项目,刚开始学一周,在写代码的时候老是因为一个符合或者一个字母不对,而导致错误,经过这个项目之后,我深刻的认识到了思想的重要性,只要思想到位,平常最怕的敲代码在学会基础知识的情况下,反而也没有之前恐惧了。最后,希望错误的地方,欢迎各位大佬来批评指正!

七、最后 

        建了一个群:908722740 ,欢迎小伙伴门的加入,平时可以互相学习交流,不管是学习还是工作上的都可以多多交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值