模擬DVD 實現錄入 查看 借出 歸還 刪除 新增 等功能

package cn.jbit.yang.qianqian;

public class testDVDMgr {
	public static void main(String[] args) {
		DVDMgr1 dvd = new DVDMgr1();
		dvd.show1();
	}
}
package cn.jbit.yang.qianqian;

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.qianqian;

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

import cn.jbit.yang.qian.DVD;

public class DVDMgr1 { // 用戶交互層

	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類數據類型
	DVDSever sever = new DVDSever();

	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");
				String T = "";
				while (!T.equals("n")) {
					pub("請輸入新增DVD名字");
					String name = input.next();
					sever.addDVD(name);// 調用新增DVD方法
					pub("是否繼續錄入DVD名字y/n");
					T = input.next();
					if (T == "n") {
						break;
					}
					sever.StateDVD();
				}
				break;
			case 2:
				pub("--->查看DVD");
				pub("序號\t名稱\t\t狀態\t借出日期");
				DVD[] dvds = sever.StateDVD();// 調用查看DVD方法
				for (DVD dvd : dvds) {// 增強for循環
					if (dvd != null) {// 判斷dvd!=空
						String state = dvd.state ? "未借" : "已借出";// 三元表達式
						String date = dvd.date == null ? " " : sdf
								.format(dvd.date);
						pub(dvd.id + "\t" + dvd.name + "\t" + "\t" + state
								+ "\t" + date);// 輸出
					}
				}
				break;
			case 3:
				pub("--->刪除DVD");
				pub("請輸入需要刪除的DVD編號");
				int id = input.nextInt();
				pub(sever.deil(id));

				break;
			case 4:
				pub("--->借出DVD");
				sever.StateDVD();
				pub("請選擇租借的DVD編號");
				int id1 = input.nextInt();
				pub(sever.borrow(id1));
				break;
			case 5:
				pub("--->歸還DVD");
				pub("請輸入歸還DVD編號");
				int id2 = input.nextInt();
				pub(sever.revert(id2));
				break;
			case 6:
				pub("退出系統");
				return;
			default:
				pub("輸入有誤,請輸入1~6任意整數");
			}
			pub("輸入0返回:");
			a = input.nextInt();
		}
	}
}
package cn.jbit.yang.qianqian;

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

import cn.jbit.yang.qian.DVD;

public class DVDSever {// 處理層
	public DVDSever() {// 構造方法
		init();
	}

	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	DVD[] dvds = new DVD[100];// DVD類數據類型

	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 addDVD(String name) {// 添加DVD
		for (int i = 0; i < dvds.length; i++) {// 循環 判斷數組有無空間
			if (dvds[i] == null) {// 判斷爲空 添加dvd
				dvds[i] = new DVD();// 實例化
				dvds[i].name = name;// 錄入DVD名字
				dvds[i].id = getID();// 序號
				return;
			}
		}
	}

	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 DVD[] StateDVD() {// 查看DVD
		return dvds;
	}

	public String deil(int id) {// 刪除DVD
		for (int i = 0; i < dvds.length; i++) {
			if (dvds[i] != null && dvds[i].id == id && dvds[i].state) {
				dvds[i] = null;
				return "刪除成功";
			}
		}return "刪除失敗";
		
	}

	public String borrow(int id1) {// 借出DVD
		for (int i = 0; i < dvds.length; i++) {
			if (dvds[i] != null && dvds[i].id == id1 && dvds[i].state) {
				dvds[i].state = false;
				dvds[i].date = new Date();
				return "借出成功" + "日期:" + sdf.format(dvds[i].date);
			}
		}
		return "操作失敗";
	}

	public String revert(int id2) {// 歸還DVD

		for (int i = 0; i < dvds.length; i++) {
			if (dvds[i] != null && dvds[i].id == id2 && !dvds[i].state) {
				dvds[i].state = true;
				int day = (int) Math
						.ceil((System.currentTimeMillis() - dvds[i].date
								.getTime())
								* 1.0 / 1000 / 60 / 60 / 24);
				return "歸還" + "<" + dvds[i].name + ">" + "成功" + "\n" + "借出日期:"
						+ sdf.format(dvds[i].date) + "\n" + "歸還日期:"
						+ sdf.format(new Date()) + "\n" + "應付租金:" + day * 1
						+ "元";
			}
		}
		return null;
	}
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章