DVD管理系统

目录

1.实现数组创建

2.创建程序执行类

3.创建程序菜单类

3.1初始化DVD数据

3.2完成菜单方法编写

3.3完成借出排行榜功能

3.4完成DVD新增

3.5完成DVD查看功能

3.6 完成DVD删除功能

3.7完成DVD借出功能

3.8完成DVD归还和计算

3.9计算时间差方法和按0返回菜单

完成代码


1.实现数组创建

DVD名称数组、DVD借出状态数组、DVD借出日期数组、DVD借出次数数组

package com.softeem.array_.minidvd;


public class DVDSet {

    //创建4个数组
    String[] name = new String[50];//存储DVD名字
    int[] state = new int[50];//存储借出DVD的状态:0借出/ 1可借
    String[] date = new String[50];//存储DVD借出日期
    int[] count = new int[50];//存储DVD借出次数

}

2.创建程序执行类

package com.softeem.array_.minidvd;


public class DVDStart {
    public static void main(String[] args) {
        //启动程序
        DVDMs dvdMs = new DVDMs();
        dvdMs.init();
        dvdMs.startMenu();
    }
}

3.创建程序菜单类

3.1初始化DVD数据

package com.softeem.array_.minidvd;

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


public class DVDMs {

    /**
     * 创建DVD对象
     */
    DVDSet dvd = new DVDSet();
    Scanner input = new Scanner(System.in);
    /**
     * 初始化DVD
     *      DVD名字、DVD状态、DVD借出时间、DVD借出次数
     * 通过DVDSet类的实例化对象来操作数组
     */
    public void init(){
        dvd.name[0] = "斗破苍穹";
        dvd.state[0] = 0;//已经借出
        dvd.date[0] = "2018-1-1";//借出的DVD才有借出时间
        dvd.count[0] = 10;

        dvd.name[1] = "雪中悍刀行";
        dvd.state[1] = 1;
        dvd.count[1] = 100;

        dvd.name[2] = "傲世九重天";//楚阳
        dvd.state[2] = 1;
        dvd.count[2] = 12;
    }
    
}

3.2完成菜单方法编写

public void startMenu(){
        System.out.println("\n欢 迎 使 用 迷 你 DVD 管 理 器");
        System.out.println("-------------------------------------");
        System.out.println("0. 借出排行榜");
        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("--------------------------------------\n");


        while (true){
            System.out.print("请选择:  ");
            int choice = input.nextInt();
            switch (choice){
                case 0:
                    list();
                    break;
                case 1:
                    add();
                    break;
                case 2:
                    search();
                    break;
                case 3:
                    deleteDvd();
                    break;
                case 4:
                    lend();
                    break;
                case 5:
                    returnDvd();
                    break;
                case 6:
                    System.out.println("\n退出成功,欢迎下次使用");
                    //退出Java虚拟机
                    System.exit(0);
                    break;
                default:
                    System.out.println("输入有误,请重新输入!");
                    break;
            }
        }
    }

3.3完成借出排行榜功能

/**
     * 借出排行榜:次数 +  名字
     */
    private void list() {
        //对次数进行排序
        //创建两个新数组用来保存排序后的DVD
        String[] newName = new String[dvd.name.length];
        int[] newCount = new int[dvd.count.length];

        //分别给新数组来赋值
        for (int i = 0; i < dvd.name.length; i++) {
            newName[i] = dvd.name[i];
            newCount[i] = dvd.count[i];
        }
        //对新数组进行排序
        for (int i = 0; i < newName.length -1; i++) {
            for (int j = 0; j < newName.length - 1 - i; j++) {
                if(newCount[j] > newCount[j+1]){
                    //对次数进行互换位置
                    int temp = newCount[j];
                    newCount[j] = newCount[j+1];
                    newCount[j+1] = temp;
                    //对名字进行互换位置
                    String nameTemp = newName[j];
                    newName[j] = newName[j+1];
                    newName[j+1] = nameTemp;
                }
            }
        }
        //打印
        System.out.println("---> 排行榜\n");
        System.out.println("******************************");
        System.out.println("次数\t\t名称");
        for (int i = newName.length-1; i >=0 ; i--) {
            if(newName[i] != null){
                System.out.println(newCount[i]+"\t\t"+newName[i]);
            }
        }
        System.out.println("******************************");
        returnMain();

    }

3.4完成DVD新增

/**
 * 新增DVD
 */
private void add() {
    System.out.println("----> 新增DVD\n");
    System.out.print("请输入DVD名称:");
    String name = input.next();
    //找空位置之后,在空位置地方插入
    for (int i = 0; i <dvd.name.length ; i++) {
        if(dvd.name[i] == null){
            dvd.name[i] = name;
            //设置DVD可借状态
            dvd.state[i] = 1;
            System.out.println("新增《"+name+"》成功!");
            break;
        }
    }
    System.out.println("****************************");
    returnMain();
}

3.5完成DVD查看功能

/**
     * 查看DVD
     */
    private void search() {
        System.out.println("----> 查看DVD\n");
        System.out.println("序号\t\t状态\t\t名称\t\t借出日期");
        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已借出\t《"+dvd.name[i]+"》\t\t"+dvd.date[i]);
            }else if(dvd.state[i] == 1){//可借
                System.out.println((i+1)+"\t\t可借\t《"+dvd.name[i]+"》\t\t");
            }
        }
        System.out.println("****************************");
        returnMain();
    }

3.6 完成DVD删除功能

/**
     * 删除DVD
     */
    private void deleteDvd() {
        System.out.println("----> 删除DVD\n");
        System.out.print("请输入DVD名称:");
        String name = input.next();
        //遍历数组,匹配信息
        for (int i = 0; i < dvd.name.length; i++) {
            if(dvd.name[i] == null){
                System.out.println("没有匹配信息");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
                //借出DVD不能删除     dvd.state = 0
                System.out.println("《"+name+"》已被借出,不能删除!");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
                //没有被借出可以删除   dvd.state = 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];
                    dvd.count[j] = dvd.count[j+1];
                    j++;
                }
                //把最后一个元素置为空
                dvd.name[j] = null;
                dvd.date[j] = null;
                dvd.count[j] = 0;
                //dvd.state[j] = 1;
                System.out.println("删除《"+name+"》成功");
                break;
            }
        }
        System.out.println("****************************");
        returnMain();
    }

3.7完成DVD借出功能

/**
     * 借出DVD
     */
    private void lend() {
        System.out.println("----> 借出DVD\n");
        System.out.print("请输入DVD名称:");
        String name = input.next();
        //匹配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(name) && dvd.state[i] == 1){
                //DVD的state为1  可借
                System.out.println("请输入借出的日期:(年-月-日)");
                String date = input.next();
                //设置借出DVD的日期时间
                dvd.date[i] = date;
                //设置DVD的借出状态
                dvd.state[i] = 0;
                //设置DVD借出次数
                dvd.count[i]++;
                System.out.println("借出《"+name+"》成功");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
                //DVD的state为0  不可借
                System.out.println("此《"+name+"》已借出!");
                break;
            }
        }
        System.out.println("****************************");
        returnMain();
    }

3.8完成DVD归还和计算

/**
     * 归还DVD
     */
    private void returnDvd() {
        System.out.println("----> 归还DVD\n");
        System.out.print("请输入DVD名称");
        String name = input.next();
        for (int i = 0; i < dvd.name.length; i++) {
            if(dvd.name[i] == null){
                System.out.println("没有匹配信息");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
                //归还DVD的状态是0
                System.out.print("请输入归还日期:(年-月-日)");
                String date = input.next();
                //设置DVD状态state
                dvd.state[i] = 1;
                //计算佣金
                long charge = charge(dvd.date[i], date);
                System.out.println("归还《"+name+"》成功");
                System.out.println("佣金(元):"+ charge * 0.5);
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
                //归还DVD的状态是1,提示DVD没有被借出
                System.out.println("此DVD没有被借出! 不能进行归还操作");
                break;
            }
        }
        System.out.println("****************************");
        returnMain();
    }

3.9计算时间差方法和按0返回菜单

/**
     * 计算时间差
     * @param s
     * @param date
     */
    private long charge(String s, String date) {
        //SimpleDateFormat:日期格式类
        //年月日:2022-01-11
        long chargeDate = 0;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            //字符串日期文本----->日期对象
            Date date1 = sdf.parse(s);
            Date date2 = sdf.parse(date);
            //date2.getTime() - date1.getTime() 得到归还日期和借出日期的毫秒差值
            chargeDate = (date2.getTime() - date1.getTime()) / (1000*60*60*24);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return chargeDate;
    }


/**
     * 输入0返回菜单
     */
    private void returnMain() {
        while (true){
            System.out.print("请输入0返回:");
            int number = input.nextInt();
            if(number == 0){
                startMenu();
            }else {
                System.out.println("输入有误! 重新输入");
            }
        }

    }

完成代码

package com.softeem.array_.minidvd;

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

/**
 * @author zhengwen
 * @create 2022-01-10 16:16
 */
public class DVDMs {

    /**
     * 创建DVD对象
     */
    DVDSet dvd = new DVDSet();
    Scanner input = new Scanner(System.in);

    /**
     * 初始化DVD
     *      DVD名字、DVD状态、DVD借出时间、DVD借出次数
     * 通过DVDSet类的实例化对象来操作数组
     */
    public void init(){
        dvd.name[0] = "斗破苍穹";
        dvd.state[0] = 0;//已经借出
        dvd.date[0] = "2018-1-1";//借出的DVD才有借出时间
        dvd.count[0] = 10;

        dvd.name[1] = "雪中悍刀行";
        dvd.state[1] = 1;
        dvd.count[1] = 100;

        dvd.name[2] = "傲世九重天";//楚阳
        dvd.state[2] = 1;
        dvd.count[2] = 12;
    }

    public void startMenu(){
        System.out.println("\n欢 迎 使 用 迷 你 DVD 管 理 器");
        System.out.println("-------------------------------------");
        System.out.println("0. 借出排行榜");
        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("--------------------------------------\n");


        while (true){
            System.out.print("请选择:  ");
            int choice = input.nextInt();
            switch (choice){
                case 0:
                    list();
                    break;
                case 1:
                    add();
                    break;
                case 2:
                    search();
                    break;
                case 3:
                    deleteDvd();
                    break;
                case 4:
                    lend();
                    break;
                case 5:
                    returnDvd();
                    break;
                case 6:
                    System.out.println("\n退出成功,欢迎下次使用");
                    //退出Java虚拟机
                    System.exit(0);
                    break;
                default:
                    System.out.println("输入有误,请重新输入!");
                    break;
            }
        }
    }

    /**
     * 删除DVD
     */
    private void deleteDvd() {
        System.out.println("----> 删除DVD\n");
        System.out.print("请输入DVD名称:");
        String name = input.next();
        //遍历数组,匹配信息
        for (int i = 0; i < dvd.name.length; i++) {
            if(dvd.name[i] == null){
                System.out.println("没有匹配信息");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
                //借出DVD不能删除     dvd.state = 0
                System.out.println("《"+name+"》已被借出,不能删除!");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
                //没有被借出可以删除   dvd.state = 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];
                    dvd.count[j] = dvd.count[j+1];
                    j++;
                }
                //把最后一个元素置为空
                dvd.name[j] = null;
                dvd.date[j] = null;
                dvd.count[j] = 0;
                //dvd.state[j] = 1;
                System.out.println("删除《"+name+"》成功");
                break;
            }
        }
        System.out.println("****************************");
        returnMain();
    }

    /**
     * 归还DVD
     */
    private void returnDvd() {
        System.out.println("----> 归还DVD\n");
        System.out.print("请输入DVD名称");
        String name = input.next();
        for (int i = 0; i < dvd.name.length; i++) {
            if(dvd.name[i] == null){
                System.out.println("没有匹配信息");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
                //归还DVD的状态是0
                System.out.print("请输入归还日期:(年-月-日)");
                String date = input.next();
                //设置DVD状态state
                dvd.state[i] = 1;
                //计算佣金
                long charge = charge(dvd.date[i], date);
                System.out.println("归还《"+name+"》成功");
                System.out.println("佣金(元):"+ charge * 0.5);
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
                //归还DVD的状态是1,提示DVD没有被借出
                System.out.println("此DVD没有被借出! 不能进行归还操作");
                break;
            }
        }
        System.out.println("****************************");
        returnMain();
    }

    /**
     * 计算时间差
     * @param s
     * @param date
     */
    private long charge(String s, String date) {
        //SimpleDateFormat:日期格式类
        //年月日:2022-01-11
        long chargeDate = 0;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            //字符串日期文本----->日期对象
            Date date1 = sdf.parse(s);
            Date date2 = sdf.parse(date);
            //date2.getTime() - date1.getTime() 得到归还日期和借出日期的毫秒差值
            chargeDate = (date2.getTime() - date1.getTime()) / (1000*60*60*24);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return chargeDate;
    }

    /**
     * 借出DVD
     */
    private void lend() {
        System.out.println("----> 借出DVD\n");
        System.out.print("请输入DVD名称:");
        String name = input.next();
        //匹配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(name) && dvd.state[i] == 1){
                //DVD的state为1  可借
                System.out.println("请输入借出的日期:(年-月-日)");
                String date = input.next();
                //设置借出DVD的日期时间
                dvd.date[i] = date;
                //设置DVD的借出状态
                dvd.state[i] = 0;
                //设置DVD借出次数
                dvd.count[i]++;
                System.out.println("借出《"+name+"》成功");
                break;
            }else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
                //DVD的state为0  不可借
                System.out.println("此《"+name+"》已借出!");
                break;
            }
        }
        System.out.println("****************************");
        returnMain();
    }

    /**
     * 新增DVD
     */
    private void add() {
        System.out.println("----> 新增DVD\n");
        System.out.print("请输入DVD名称:");
        String name = input.next();
        //找空位置之后,在空位置地方插入
        for (int i = 0; i <dvd.name.length ; i++) {
            if(dvd.name[i] == null){
                dvd.name[i] = name;
                //设置DVD可借状态
                dvd.state[i] = 1;
                System.out.println("新增《"+name+"》成功!");
                break;
            }
        }
        System.out.println("****************************");
        returnMain();
    }

    /**
     * 查看DVD
     */
    private void search() {
        System.out.println("----> 查看DVD\n");
        System.out.println("序号\t\t状态\t\t名称\t\t借出日期");
        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已借出\t《"+dvd.name[i]+"》\t\t"+dvd.date[i]);
            }else if(dvd.state[i] == 1){//可借
                System.out.println((i+1)+"\t\t可借\t《"+dvd.name[i]+"》\t\t");
            }
        }
        System.out.println("****************************");
        returnMain();
    }

    /**
     * 借出排行榜:次数 +  名字
     */
    private void list() {
        //对次数进行排序
        //创建两个新数组用来保存排序后的DVD
        String[] newName = new String[dvd.name.length];
        int[] newCount = new int[dvd.count.length];

        //分别给新数组来赋值
        for (int i = 0; i < dvd.name.length; i++) {
            newName[i] = dvd.name[i];
            newCount[i] = dvd.count[i];
        }
        //对新数组进行排序
        for (int i = 0; i < newName.length -1; i++) {
            for (int j = 0; j < newName.length - 1 - i; j++) {
                if(newCount[j] > newCount[j+1]){
                    //对次数进行互换位置
                    int temp = newCount[j];
                    newCount[j] = newCount[j+1];
                    newCount[j+1] = temp;
                    //对名字进行互换位置
                    String nameTemp = newName[j];
                    newName[j] = newName[j+1];
                    newName[j+1] = nameTemp;
                }
            }
        }
        //打印
        System.out.println("---> 排行榜\n");
        System.out.println("******************************");
        System.out.println("次数\t\t名称");
        for (int i = newName.length-1; i >=0 ; i--) {
            if(newName[i] != null){
                System.out.println(newCount[i]+"\t\t"+newName[i]);
            }
        }
        System.out.println("******************************");
        returnMain();

    }

    /**
     * 输入0返回菜单
     */
    private void returnMain() {
        while (true){
            System.out.print("请输入0返回:");
            int number = input.nextInt();
            if(number == 0){
                startMenu();
            }else {
                System.out.println("输入有误! 重新输入");
            }
        }

    }


}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值