• java 迷你DVD管理器


    1、DvdSet类

    package dvd_01;
    /**
     * 定义dvd的一些属性
     * @author Administrator
     *
     */
    public class DvdSet {
        String[] name=new String[50];           //定义一个数组存dvd名字
        boolean[] state=new boolean[50];         //定义DVD借出状态:true为已借出   false为可借
        String[] date=new String[50];            //定义借出日期
    }

    2、DvdManager类

    package dvd_01;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class DvdManager {
        Scanner input = new Scanner(System.in);
        DvdSet dvd = new DvdSet(); // 初始化对象
        boolean isJiechu = true; // 已借出是true 可借是false
    
        // 初始化三张DVD信息
        public void initial() {
            dvd.name[0] = "罗马假日";
            dvd.state[0] = true; // 已借出
            dvd.date[0] = "2019-9-11";
            
            dvd.name[1] = "变形金刚";
            dvd.state[1] = false; // 可借
            
            dvd.name[2] = "生化危机";
            dvd.state[2] = false; // 可借
            
            dvd.name[3] = "钢铁侠";
            dvd.state[3] = true; // 已借出
            dvd.date[3] = "2019-9-10";
        }
    
        public void startMenu() {
            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.print("请选择:");
            int choice = input.nextInt();
            switch (choice) {
            case 1:
                add(); // 新增DVD
                break;
            case 2:
                search(); // 查看DVD
                break;
            case 3:
                delete(); // 删除DVD
                break;
            case 4:
                lend(); // 借出DVD
                break;
            case 5:
                returnDvd(); // 归还DVD
                break;
            case 6:
                System.out.println("感谢您的使用!");
                break;
            default:
                System.out.println("你的输入有误,请重新输入");
                returnMain();
            }
        }
    
        public void returnMain() {
            System.out.print("输入0返回:");
            if (input.nextInt() == 0) {
                startMenu();
            } else {
                System.out.println("输入错误,程序结束!");
            }
        }
    
        // 新增DVD
        public void add() {
            /**
             * 首先判断i是否为空,如果为空就将name传给i,并将状态改为可借
             */
            System.out.println("--->新增DVD
    ");
            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.state[i] = false; // 新增的dvd是可借的
                    System.out.println("新增《" + name + "》成功");
                    break;
                }
            }
            System.out.println("**************************");
            returnMain();
        }
    
        // 查看DVD
        public void search() {
            /**
             * 如果i为空跳出循环i+1,如果状态为不可借就输出已经借出,并输出时间
             */
            System.out.println("--->查看DVD
    ");
            System.out.println("序号	状态	名称		借出日期");
            for (int i = 0; i < dvd.name.length; i++) {
                if (dvd.name[i] == null) {
                    break;
                } else if (dvd.state[i] == true) {
                    System.out.println((i + 1) + "	已借出	《" + dvd.name[i] + "》	" + dvd.date[i]);
                } else if (dvd.state[i] == false) {
                    System.out.println((i + 1) + "	可借	《" + dvd.name[i] + "》");
                }
            }
            System.out.println("**************************");
            returnMain();
        }
    
        // 删除DVD
        public void delete() {
            /**
             * 判断i位置不为空,名字匹配,状态为可借。循环将名字,状态和日期往前移动,最后一位置空
             * 如果状态为借出就跳出,不能删除
             */
            System.out.println("--->删除DVD
    ");
            System.out.print("请输入DVD的名称:");
            String name = input.next();
            boolean flag = false;
            for (int i = 0; i < dvd.name.length; i++) {
                if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == false) {
                    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;
                } else if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == true) {
                    System.out.println("《" + name + "》为借出状态,不能删除!");
                    flag = true;
                    break;
                }
                
                if (flag == true) {
                    System.out.println("没有找到《"+name+"》这个dvd!");
                }
            }
            System.out.println("**************************");
            returnMain();
        }
    
        // 借出DVD
        public void lend() {
            /**
             * 名字不为空,状态为可借,就可以借出,并将状态改为借出状态
             * 按格式输入结束日期,并存储在date中
             * 名字不为空,状态为借出,输出不可借
             * 
             */
            System.out.println("--->借出DVD
    ");
            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("没有找到《"+name+"》这个dvd!");
                    break;
                } else if (dvd.name[i].equals(name) && dvd.state[i] == false) {
                    System.out.print("请输入借出日期(年-月-日):");
                    dvd.date[i] = input.next();
                    System.out.println("《" + name + "》借出成功");
                    dvd.state[i] = true;
                    break;
                } else if (dvd.name[i].equals(name) && dvd.state[i] == true) {
                    System.out.println("不好意思,《" + name + "》已被借出!");
                    break;
                }
            }
            System.out.println("**************************");
            returnMain();
        }
    
        // 归还DVD
        public void returnDvd() {
            /**
             * 定义一个long存储租金
             * 如果名字存在,状态为借出,按规定输入归还日期,将参数传给charge方法,状态改为可借,输出相关信息
             * 如果名字存在,状态可借,输出无法操作
             */
            System.out.println("--->归还DVD
    ");
            System.out.print("请输入DVD名称:");
            String name = input.next();
            long money = 0; // 租金
            for (int i = 0; i < dvd.name.length; i++) {
                if (dvd.name[i] == null) {
                    System.out.println("没有找到《"+name+"》这个dvd!");
                    break;
                } else if (dvd.name[i].equals(name) && dvd.state[i] == true) {
                    System.out.print("请输入归还日期(年-月-日):");
                    String redate = input.next();
                    money = charge(dvd.date[i], redate);        //租金计算,将两个参数传递给charge方法
                    System.out.println("
    《" + name + "》归还成功"); 
                    dvd.state[i] = false;
                    System.out.println("借出日期为:" + dvd.date[i]);
                    System.out.println("归还日期为:" + redate);
                    System.out.println("应付租金(元):" + money);
                    break;
                } else if (dvd.name[i].equals(name) && dvd.state[i] == false) {
                    System.out.println("《" + name + "》没有被借出,无法进行归还操作!");
                    break;
                }
            }
            System.out.println("**************************");
            returnMain();
        }
    
        // 计算日期差
        public long charge(String dstr1, String dstr2) {
            /**
             * 定义返回值为long的方法,调用格式化日期方法,将两个参数分别赋值给date对象,
             * 计算money,返回
             */
            long money = 0;
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期
            try {
                Date d1 = sd.parse(dstr1);
                Date d2 = sd.parse(dstr2);
                money = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return money;
        }
    }

    3、Test类

    package dvd_01;
    
    
    public class Test {
        public static void main(String[] args) {
    
            DvdManager dvdManager = new DvdManager();
            dvdManager.initial();    //调用初始化方法
            dvdManager.startMenu();    //调用开始菜单
        }
    }

     4、运行结果

  • 相关阅读:
    几何光学提纲
    波动学基础提纲
    振动学基础提纲
    气体动理论提纲
    热力学基础提纲
    文献调研
    C#快速入门指南
    PAT 1011 World Cup Betting (20分) 比较大小难度级别
    PAT 1010 Radix (25分) radix取值无限制,二分法提高效率
    PAT 1009 Product of Polynomials (25分) 指数做数组下标,系数做值
  • 原文地址:https://www.cnblogs.com/zhangzimuzjq/p/11512114.html
Copyright © 2020-2023  润新知