Java迷你DVD管理系统

[code]
package cn.practice.test;

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

public class DVD_MS {
	/**
	 * 迷你DVD管理系统
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		// 初始化数组用于存储数据
		String[] dvdNames = new String[5];// 保存DVD名称
		int[] states = new int[5];// 保存DVD状态:0为可借,1为借出
		String[] borrowDates = new String[5];// 保存借出日期
		int[] counts = new int[5];// 用于保存借出统计次数

		// 初始化3条DVD信息
		// 第1条
		dvdNames[0] = "罗马假日";
		states[0] = 1;
		borrowDates[0] = "2013-7-1";
		counts[0] = 1;
		// 第2条
		dvdNames[1] = "风声鹤唳";
		states[1] = 0;
		borrowDates[1] = "";
		counts[1] = 0;
		// 第3条
		dvdNames[2] = "浪漫满屋";
		states[2] = 0;
		borrowDates[2] = "";
		counts[2] = 0;

		int num = -1;// 用于判定系统状态,输入0返回
		boolean isExit = false;// 用于判定是否退出

		do {
			// 主界面布局
			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("请选择:");
			num = input.nextInt();// 输入选项

			// 使用switch结构来构成各个选项

			switch (num) {

			case 0:// 借出排行榜
				System.out.println("--->借出排行榜\n");
				System.out.println("序号\t名称\t借出次数");
				for (int i = 0; i < dvdNames.length; i++) {
					if (dvdNames[i] != null) {
						for (int j = 0; j < dvdNames.length - 1; j++) {// 使用冒泡排序,将借出次数顺序排列出来
							for (int k = 0; k < dvdNames.length - j - 1; k++) {
								if (counts[k] < counts[k + 1]) {
									// 换次数
									int a = counts[k];
									counts[k] = counts[k + 1];
									counts[k + 1] = a;
									// 换名称
									String b = dvdNames[k];
									dvdNames[k] = dvdNames[k + 1];
									dvdNames[k + 1] = b;
									// 换状态
									int c = states[k];
									states[k] = states[k + 1];
									states[k + 1] = c;
									// 换借出日期
									String d = borrowDates[k];
									borrowDates[k] = borrowDates[k + 1];
									borrowDates[k + 1] = d;
								}
							}
						}
						System.out.println((i + 1) + "\t" + dvdNames[i] + "\t" + counts[i]);// 输出排序结果
					}
				}

				break;

			case 1:// 新增DVD
				System.out.println("--->新增DVD\n");

				if (dvdNames[dvdNames.length - 1] != null) {// 判断是否已满,若是则提示
					System.out.println("对不起!DVD存量已满,请删除后再添加!!!");
					break;
				}

				System.out.print("请输入DVD名称:");
				String name1 = input.next();// 输入要增加的DVD名称
				for (int i = 0; i < dvdNames.length; i++) {// 循环查找空位
					while (name1.equals(dvdNames[i])) {
						System.out.print("该DVD名称已存在,请重新输入:");// 避免输入的DVD名称与已存在的重复
						name1 = input.next();// 重新输入
					}
					if (dvdNames[i] == null) {// 如有空位,则进行添加
						// 进行赋值
						dvdNames[i] = name1;// DVD名称
						states[i] = 0;// DVD状态
						System.out.println("新增" + "《" + name1 + "》成功!");
						break;
					}
				}

				break;

			case 2:// 查看DVD
				System.out.println("--->查看DVD\n");
				System.out.println("序号\t状态\t名称\t\t借出日期");
				for (int i = 0; i < dvdNames.length; i++) {// 循环遍历DVD数组
					if (dvdNames[i] != null) {// 将名字不为空的按格式输出
						if (borrowDates[i] == null) {
							borrowDates[i] = "";// 将null字符隐藏
						}
						String state = (states[i] == 0) ? "可借" : "已借出";// 将DVD状态用文字表示
						System.out.println(
								(i + 1) + "\t" + state + "\t" + "《" + dvdNames[i] + "》" + "\t\t" + borrowDates[i]);
					}
				}

				break;

			case 3:// 删除DVD
				System.out.println("--->删除DVD\n");
				boolean isDel = false;// 判断要删除的DVD是否存在

				// 将可删除的DVD排列出来
				System.out.println("可删除的DVD如下:");
				System.out.println("序号\t状态\t名称");
				int count = 0;// 序号初始化
				for (int i = 0; i < dvdNames.length; i++) {
					if (dvdNames[i] != null) {// 要删除的DVD名称不能为空
						if (states[i] == 0) {// 状态要只能为可借
							String state = (states[i] == 0) ? "可借" : "已借出";
							count++;
							System.out.print(count);
							System.out.println("\t" + state + "\t" + dvdNames[i]);// 输出
						}
					}
				}

				System.out.print("请输入要删除的DVD名称:");
				String name2 = input.next();// 输入要删除的DVD名称
				for (int i = 0; i < dvdNames.length; i++) {// 循环查找
					if (dvdNames[i] != null && name2.equals(dvdNames[i]) && states[i] == 0) {

						// 将删除后的DVD进行前移补位
						for (int j = i; j < dvdNames.length - 1; j++) {
							dvdNames[j] = dvdNames[j + 1];
							states[j] = states[j + 1];
							borrowDates[j] = borrowDates[j + 1];
						}
						// 末尾元素数据清除
						int end = dvdNames.length - 1;
						dvdNames[end] = null;
						states[end] = 0;
						borrowDates[end] = "";
						isDel = true;// 标记已经找到要删除的DVD
						System.out.println("《" + name2 + "》删除成功!");// 删除成功提示
						break;

					} else if (dvdNames[i] != null && name2.equals(dvdNames[i]) && states[i] == 1) {
						System.out.println("《" + name2 + "》为借出状态,不能删除!");// 不能删除提示
						isDel = true;// 标记已经找到要删除的DVD
						break;
					}
				}

				if (!isDel) {
					System.out.println("您要删除的DVD名称不存在,请您核实后再进行操作!!!");// 提示要删除的DVD不存在
					break;
				}

				break;

			case 4:// 借出DVD
				System.out.println("--->借出DVD\n");
				boolean isLend = false;// 判断是否能借出

				// 将可借出的DVD排列出来
				System.out.println("可借出的DVD如下:");
				System.out.println("序号\t状态\t名称");
				int count1 = 0;// 序号初始化
				for (int i = 0; i < dvdNames.length; i++) {
					if (dvdNames[i] != null) {// 要借出的DVD名称不能为空
						if (states[i] == 0) {// 状态要只能为可借
							String state = (states[i] == 0) ? "可借" : "已借出";
							count1++;
							System.out.print(count1);
							System.out.println("\t" + state + "\t" + dvdNames[i]);// 输出
						}
					}
				}

				System.out.print("请输入DVD名称:");
				String name3 = input.next();// 输入要借的DVD名称
				for (int i = 0; i < dvdNames.length; i++) {
					if (dvdNames[i] != null && name3.equals(dvdNames[i]) && states[i] == 0) {
						System.out.print("请输入借出日期(年-月-日):");
						borrowDates[i] = input.next();// 输入借出日期
						states[i] = 1;
						counts[i]++;
						System.out.println("借出《" + name3 + "》成功!");// 借出成功提示
						isLend = true;// 标记为找到
						break;
					} else if (dvdNames[i] != null && name3.equals(dvdNames[i]) && states[i] == 1) {
						System.out.println("《" + name3 + "》为借出状态,无法借出!");// 已借出,不能再借提示
						isLend = true;// 标记为找到
						break;
					}
				}
				if (!isLend) {
					System.out.println("您要借出的DVD名称不存在,请您核实后再进行操作!!!");// 无此DVD提示
					break;
				}

				break;

			case 5:// 归还DVD
				System.out.println("--->归还DVD\n");
				boolean isreturn = false;// 标记是否找到

				// 将需归还的DVD排列出来
				System.out.println("需归还的DVD如下:");
				System.out.println("序号\t状态\t名称");
				int count2 = 0;// 序号初始化
				for (int i = 0; i < dvdNames.length; i++) {
					if (dvdNames[i] != null) {// 要归还的DVD名称不能为空
						if (states[i] == 1) {// 状态要只能为已借出
							String state = (states[i] == 0) ? "可借" : "已借出";
							count2++;
							System.out.print(count2);
							System.out.println("\t" + state + "\t" + dvdNames[i]);// 输出
						}
					}
				}

				System.out.print("请输入DVD名称:");
				String name4 = input.next();// 输入要归还的DVD名称
				for (int i = 0; i < dvdNames.length; i++) {
					if (dvdNames[i] != null && name4.equals(dvdNames[i]) && states[i] == 1) {
						isreturn = true;
						System.out.print("请输入归还日期:");
						String returndate = input.next();// 输入归还日期
						long charge = 0;// 初始化应付租金

						// 将字符串转为日期,求出日期差
						SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
						try {
							java.util.Date d1 = sd.parse(borrowDates[i]);
							java.util.Date d2 = sd.parse(returndate);
							charge = (d2.getTime() - d1.getTime()) / (24 * 3600 * 1000);
						} catch (ParseException e) {
							e.printStackTrace();
						}

						System.out.println("归还成功!");
						System.out.println("借出日期为:" + borrowDates[i]);
						System.out.println("归还日期为:" + returndate);
						System.out.println("应付租金(元):" + charge);// 输出应支付金额
						borrowDates[i] = null;// 归还日期归零
						states[i] = 0;// 状态转为可借
						isreturn = true;// 标记找到
						System.out.println("归还成功");
						break;

					} else if (dvdNames[i] != null && name4.equals(dvdNames[i]) && states[i] == 0) {
						isreturn = true;// 标记找到
						System.out.println("此DVD未借出,归还失败!");
						break;
					}
				}

				if (!isreturn) {
					System.out.println("您要归还的DVD不在借出之列,请您核对后再进行操作!!!");
				}
				break;

			case 6:
				isExit = true;
				break;

			default:
				isExit = true;
				break;

			}

			if (!isExit) {// 输入0返回
				System.out.println("**********************");
				System.out.print("输入0返回:");
				num = input.nextInt();
			} else {
				System.out.println("输入错误,退出系统!");
				break;
			}

		} while (num == 0);// 循环执行的条件,输入0
		System.out.println("谢谢惠顾,欢迎您下次使用!!!");
		input.close();
	}

}
[/code]


  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值