自学内容网 自学内容网

Java--练习--DVD管理系统

 一、详细代码

package demo2.Test;

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

public class DVD2 {
    //DVD管理系统
    //声明三个数组   用来存储 名称 状态 借出日期 借出次数
    String[] names = new String[50];
    String[] state = new String[50];//状态
    String[] dts = new String[50];//借出日期
    int[] num = new int[50];//借出次数
    Scanner sc =new Scanner(System.in);

    //初始化定义
    public void init() {
        names[0] = "罗马假日";
        names[1] = "超级玛丽";
        names[2] = "功夫熊猫";

        state[0] = "可借";
        state[1] = "借出";
        state[2] = "可借";

        dts[0] = null;
        dts[1] = "2012-12-13";
        dts[2] = null;

        num[0] = 20;
        num[1] = 15;
        num[2] = 36;
    }

    public static void main(String[] args) {
        DVD2 dvd2 = new DVD2();//创建了一个 DVD2 类的 新实例,并将  其引用赋值 给 变量 dvd2。具体功能取决于 DVD2 类的定义
        dvd2.init();//调用的是对象 dvd2的 init方法,用于初始化dvd2相关资源或状态
        dvd2.menu();
    }

    // 1.菜单
    public void menu() {
        System.out.println("---------------------欢迎:DVD管理系统-------------------------");
        System.out.println("0.热门排行;1.查看;2.新增;3.删除;4.借用;5.归还并结算;6.退出系统");
        int i = sc.nextInt();
        switch (i) {
            case 0:
                System.out.println("0.热门排行");
                sort();
                break;
            case 1:
                System.out.println("1.查看");
                check();
                break;
            case 2:
                System.out.println("2.新增");
                add();
                break;
            case 3:
                System.out.println("3.删除");
                delete();
                break;
            case 4:
                System.out.println("4.借用");
                lend();
                break;
            case 5:
                System.out.println("5.归还并结算");
                back();
                break;
            case 6:
                System.out.println("退出成功,感谢使用");
                System.exit(6);
        }
        menu();
    }

    //2. 热门排行
    public void sort() {
        int sum = 0;
        for (int i = 0; i < names.length; i++) {
            if (names[i] == null) {
                sum = i ;
                break;
            }
        }

        for (int i = 1; i <= sum - 1; i++) {       //count - 1:表示数组最后一个元素的索引。
            for (int j = 0; j <= sum - 1 - i; j++) {//count - 1 - i:表示当前未排序部分的最后一个元素的索引
                if (num[j] < num[j + 1]) {
                    int tnum = num[j];
                    String tstate = state[j];
                    String tnames = names[j];
                    String tdts = dts[j];

                    num[j] = num[j + 1];
                    state[j] = state[j + 1];
                    names[j] = names[j + 1];
                    dts[j] = dts[j + 1];


                    num[j + 1] = tnum;
                    state[j + 1] = tstate;
                    names[j + 1] = tnames;
                    dts[j + 1] = tdts;
                }
            }
        }
        check();
    }

    //3. 查看
    public void check() {
        for (int i = 0; i < names.length; i++) {
            if (names[i] != null) {
                System.out.println("序 号    状态     名称    借出日期     借次数");
                System.out.println((i + 1) + "\t\t" + state[i] + "\t\t" + names[i] + "\t" + dts[i] + "\t\t\t" + num[i]);
            }
        }
    }

    // 4.新增
    public void add() {
        System.out.println("请输入新增名称:");
        String name = sc.next();
        for (int i = 0; i < names.length; i++) {
            if (name.equals(names[i])) {//查到 说明 已经存在 不能增加
                System.out.println("名称已经存在,请重新输入:");
                add();
                break;
            } else if (names[i] == null) {//没查找到 可以新增 赋值给正好置空的位置
                names[i] = name;
                state[i] = "可借";
                for (int j = 0; j < names.length; j++) {
                    if (name.equals(names[i])) {
                        dts[j] = null;//因为有的DVD没有借出 借出日期是空的 所以如果跟着之前的循环走 会串格
                        break;
                    }
                }
                break;
            }
        }
        check();
    }

    // 删除
    public void delete() {
        System.out.println("输入删除作品的名称:");
        String name = sc.next();
        boolean bool = false;

        for (int i = 0; i < names.length; i++) {//遍历数组

            if (name.equals(names[i]) && "可借".equals(state[i])) {
                bool = true;
                for (int j = 0; j < names.length; j++) {//可以删除   进行删除动作   最后一位置空   最后之前的每一位
                    if (names[j]!=null) {//为空时 说明没有数据,或者到最后一位 表示已经删除
                        names[j] = names[j + 1];
                        state[j] = state[j + 1];
                        dts[j] = dts[j + 1];
                        num[j] = num[j + 1];
                    } else if (j == names.length - 1) {
                        names[j] = null;
                        state[j] = null;
                        dts[j] = null;
                        num[j] = 0;
                    }
                }

            } else if (!bool) {
                System.out.println("该书无法删除(借出/查无),重新输入");
                delete();
                break;
            }
        }
        check();
    }

    // 借用
    public void lend() {
        System.out.println("请输入借用名称:");
        String name = sc.next();
        boolean found = false;

        for (int i = 0; i < names.length; i++) {

            if (name.equals(names[i])) {
                found = true;
                if (state[i].equals("可借")) {
                    System.out.println("请输入借出日期:");
                    String dtsl = sc.next();
                    state[i] = "借出";
                    dts[i] = dtsl;
                    num[i]++;
                    System.out.println("借出成功!!!");
                    check();
                    break;
                } else if (state[i].equals("借出")) {
                    System.out.println("已借出,请重新输入:");
                    lend();
                    break;
                }
                break;
            }

        }

        if (!found) { // 只在未找到时打印
            System.out.println("名称不存在,请重新输入:");
            lend();
        }
    }

    //    归还结算费用
    public void back() {
        System.out.println("输入归还名称:");
        String name = sc.next();
        boolean found = false;
        for (int i = 0; i < names.length; i++) {
            if (name.equals(names[i])) {
                found = true;
                if (state[i].equals("借出")) {
                    state[i] = "可借";
                    String dtsl = dts[i];
                    System.out.println("请输入归还日期:");
                    String dtsb = sc.next();
                    dts[i] = null;
                    System.out.println("归还成功");
                    System.out.println("应付租金:" + getmoney(dtsl, dtsb));
                    check();
                    break;
                } else if (state[i].equals("可借")) {
                    System.out.println("该名称未借出,请重新输入:");
                    back();
                    break;
                }
                break;
            }
        }
        if (!found) {
            System.out.println("未查找到该项,请重新输入:");
            back();
        }
    }
//租金
    public int getmoney(String dtsl,String dtsb) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//控制日期输入标准格式
        try{
            Date date1 =sdf.parse(dtsl);
            Date date2=sdf.parse(dtsb);
            long lon=(date2.getTime()-date1.getTime())/(1000*60*60*24);//求出时间差 目前设置 1天1块钱  租金就等于时间差
            return (int)lon;
        }catch(ParseException e){
            e.printStackTrace();
            return 1;
        }
    }
}
// 退出系统  输入6直接退出

二、运行结果

 

备注:谁有好方法能让输入的日期和上面的题头“借出日期”对齐!!!打在评论区,观摩一下~


原文地址:https://blog.csdn.net/PangQinghua/article/details/142989600

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!