模拟 dvd <未分层>

package cn.jbit.yang.qian;

public class testDVDMgr {
	public static void main(String[] args) {
		DVDMgr dvd = new DVDMgr();
		dvd.show1();
	}
}

package cn.jbit.yang.qian;

import java.util.Date;

public class DVD {
	public int id;// 序号
	public String name;// DVD名
	public boolean state = true;// 借出状态(state状态)
	public Date date;// 借出日期
}


package cn.jbit.yang.qian;

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

public class DVDMgr {
	public DVDMgr() {// 构造方法
		init();
	}

	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	Scanner input = new Scanner(System.in);

	public void pub(Object obj) {// 输出方法
		System.out.println(obj);
	}

	DVD[] dvds = new DVD[100];// DVD类数据类型

	public void show() {// 初始化菜单
		pub("欢迎使用迷你DVD管理器");
		pub("-------------------------");
		pub("1.新增DVD");
		pub("2.查看DVD");
		pub("3.删除DVD");
		pub("4.借出DVD");
		pub("5.归还DVD");
		pub("6.退        出");
		pub("------------------------");
		pub("请选择:");
	}

	public void show1() {
		int a = 0;
		while (a != 6) {
			show();
			a = input.nextInt();
			switch (a) {
			case 1:
				pub("--->新增DVD");
				addDVD();// 调用新增DVD方法
				break;
			case 2:
				pub("--->查看DVD");
				StateDVD();// 调用查看DVD方法
				break;
			case 3:
				pub("--->删除DVD");
				dell();
				break;
			case 4:
				pub("--->借出DVD");
				borrow();
				break;
			case 5:
				pub("--->归还DVD");
				revert();
				break;
			case 6:
				pub("退出系统");
				return;
			default:
				pub("输入有误,请输入1~6任意整数");
			}
			pub("输入0返回:");
			a = input.nextInt();
		}
	}

	public void init() {// 初始化
		String[] names = { "死神", "航海王", "火影忍者", "海绵宝宝", "火影忍者", "恶魔奶爸" };
		for (int i = 0; i < names.length; i++) {// 循环数组
			dvds[i] = new DVD();// 给数组中第一个元素实例化
			dvds[i].name = names[i];// 初始name
			dvds[i].id = i + 1;// 初始id
		}
	}

	public void StateDVD() {// 判断是否借出
		pub("序号\t名称\t\t状态\t借出日期");
		for (DVD dvd : dvds) {// 增强for循环
			if (dvd != null) {// 判断dvd!=空
				String state = dvd.state ? "未借" : "已借出";// 三元表达式 和if判断差不多
				String date = dvd.date == null ? " " : sdf.format(dvd.date);
				pub(dvd.id + "\t" + dvd.name + "\t" + "\t" + state + "\t"
						+ date);// 输出 dvd信息
			}
		}
	}

	public void addDVD() {// 添加DVD
		for (int i = 0; i < dvds.length; i++) {// 循环 判断数组有无空间
			if (dvds[i] == null) {// 判断为空 添加dvd
				dvds[i] = new DVD();// 实例化
				System.out.println("请输入新增DVD名字");

				dvds[i].name = input.next();// 录入DVD名字
				dvds[i].id = getID();// 序号
				pub("是否继续录入DVD名字y/n");
				char a = input.next().charAt(0);

				if (a == 'n') {
					break;
				}
			}
		}
	}

	public int getID() {// 新增DVD的序号
		int max = 0;// 定最大值max
		for (DVD dvd : dvds) {
			if (dvd != null && dvd.id > max) {
				max = dvd.id;
			}
		}
		return max + 1;// 序号是最大值+1
	}

	public void dell() {// 删除DVD
		StateDVD();
		pub("请输入需要删除的DVD编号");

		int id = input.nextInt();
		for (int i = 0; i < dvds.length; i++) {
			if (dvds[i] != null && dvds[i].id == id && dvds[i].state) {
				dvds[i] = null;
				pub("删除成功");
				StateDVD();
				return;
			}
		}
		pub("删除失败");
		StateDVD();
	}

	public void revert() {// 归还DVD
		pub("请输入归还DVD编号");
		int id = input.nextInt();
		for (int i = 0; i < dvds.length; i++) {
			if (dvds[i] != null && dvds[i].id == id && !dvds[i].state) {
				dvds[i].state = true;
				int day = (int) Math
						.ceil((System.currentTimeMillis() - dvds[i].date
								.getTime())
								* 1.0 / 1000 / 60 / 60 / 24);
				pub("归还" + "<" + dvds[i].name + ">" + "成功");
				pub("借出日期:" + sdf.format(dvds[i].date));
				pub("归还日期:" + sdf.format(new Date()));
				pub("应付租金:" + day * 1 + "元");
				dvds[i].date = null;
				return;
			}
		}
	}

	public void borrow() {// 删除DVD
		StateDVD();
		pub("请选择租借的DVD编号");
		int id = input.nextInt();
		for (int i = 0; i < dvds.length; i++) {
			if (dvds[i] != null && dvds[i].id == id && dvds[i].state) {
				dvds[i].state = false;
				dvds[i].date = new Date();
				pub("借出成功");
				pub("日期:" + sdf.format(dvds[i].date));
				return;
			}
		}
		pub("操作失败");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值