17章 迷你DVD管理

public class DVDSet {
	 String[] name=new String[50];
	 //定义一个DVD数组 
     boolean[] state=new boolean[50];
     //定义DVD借出状态:true.已借出false.可借
      String[] date=new String[50];
      //定义借出日期
      int[] count=new int[50];     
}

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


public class DVDMgr {
	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] = "2007-9-23";
            dvd.name[1] = "风声鹤唳";
            dvd.state[1] = false; // 可借
            dvd.name[2] = "浪漫满屋";
            dvd.state[2] = false; // 可借
    }

   public void startMenu() {
            System.out.println("欢迎使用迷你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("---------------------------");
            System.out.print("请选择:");
            int choice = input.nextInt();
            switch (choice) {
            case 0:
                    list(); // 查看借出排行
                    break;
            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("输入错误,异常终止!");
            }
    }

   // 查看借出排行
    public void list() {
            String[] newname = new String[50]; // 定义新数组 显示DVD名称
            int[] newcount = new int[50]; // 定义新数组 显示借出次数
            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; i++) { // 2层循环控制位置
                    for (int j = i + 1; j < newname.length; j++) {
                            if (newcount[i] > newcount[j]) {
                                    int temp = newcount[i]; // 2次交换实现次数和名字的替换
                                    newcount[i] = newcount[j];
                                    newcount[j] = temp;
                                    String temp1 = newname[i];
                                    newname[i] = newname[j];
                                    newname[j] = temp1;
                            }
                    }
            }
            System.out.println("---> 排行榜\n");
            System.out.println("**************************");
            System.out.println("次数\t名称");
            // 逆序打印排行榜
            for (int i = newname.length - 1; i >= 0; i--) {
                    if (newname[i] != null) {
                            System.out.println(newcount[i] + "\t《" + newname[i] + "》");
                    }
            }
            System.out.println("**************************");
            returnMain();
    }

   // 新增DVD
    public 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.state[i] = false; // 新增的光盘是可借的
                            System.out.println("新增《" + name + "》成功");
                            break;
                    }
            }
            System.out.println("**************************");
            returnMain();
    }

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

   // 删除DVD
    public void delete() {
            System.out.println("--->删除DVD\n");
            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("没有找到匹配信息");
                    }
            }
            System.out.println("**************************");
            returnMain();
    }

   // 借出DVD
    public void lend() {
            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] == false) {
                            System.out.print("请输入借出日期(年-月-日):");
                            dvd.date[i] = input.next();
                            System.out.println("《" + name + "》借出成功");
                            dvd.state[i] = true;
                            dvd.count[i]++;
                            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() {
            System.out.println("--->归还DVD\n");
            System.out.print("请输入DVD名称:");
            String name = input.next();
            long loan = 0; // 租金
            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] == true) {
                            System.out.print("请输入归还日期(年-月-日):");
                            String redate = input.next();
                            loan = charge(dvd.date[i], redate);
                            System.out.println("\n《" + name + "》归还成功");
                            dvd.state[i] = false;
                            System.out.println("借出日期为:" + dvd.date[i]);
                            System.out.println("归还日期为:" + redate);
                            System.out.println("应付租金(元):" + loan);
                            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 charge = 0;
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期
            try {
                    Date d1 = (Date) sd.parse(dstr1);
                    Date d2 = (Date) sd.parse(dstr2);
                    charge = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
            } catch (ParseException e) {
                    e.printStackTrace();
            }
            return charge;
    }
}

public class Start {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DVDMgr dm=new DVDMgr();
        dm.initial();
        dm.startMenu();
	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值