您的位置:首页 > 编程语言 > Java开发

Java迷你DVD管理系统

2017-06-24 16:44 351 查看
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] !=
8274
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();
}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: