需求实现:
1.新增DVD信息
2.查询DVD信息
3.删除DVD信息
4.处理借出归还业务
DVD信息设置类
/**
* DVD信息设置类
*
* @author wql
*
*/
public class DVDSet {
String[] name = new String[50];// 名称
int[] state = new int[50]; // 借出状态:0已借出/1可借
String[] date = new String[50];// 借出时间
int[] count = new int[50];// 借出次数
}
DVD管理类
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* DVD管理类
*
* @author wql
*
*/
public class DVDMgr {
DVDSet dvd = new DVDSet();
/**
* 初始化
*/
public void initial() {
dvd.name[0] = "罗马假日";
dvd.state[0] = 0;
dvd.date[0] = "2017-7-1";
dvd.count[0] = 1;
dvd.name[1] = "风声鹤唳";
dvd.state[1] = 1;
dvd.name[2] = "浪漫满屋";
dvd.state[2] = 1;
}
/**
* 菜单切换
*/
public void startMenu() {
System.out.println("欢迎使用迷你DVD管理器");
System.out.println("-------------------------------");
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("7.退出");
Scanner sc = new Scanner(System.in);
System.out.print("请选择: ");
int choice = sc.nextInt();
switch (choice) {
case 1: // 新增DVD
System.out.println("新增DVD-->");
System.out.println("请输入新增DVD名称:");
sc.nextLine();
String name = sc.next();
if (addDVD(name)) {
System.out.println("新增DVD成功");
} else {
System.out.println("新增DVD失败");
}
System.out.println("
***********************************");
returnMain();// 没查看完一个内容都可以选择回主菜单
break;
case 2: // 查看DVD
System.out.println("查看DVD-->");
showDVD();
System.out.println("
***********************************");
returnMain();// 没查看完一个内容都可以选择回主菜单
break;
case 3: // 删除DVD
System.out.println("删除DVD-->");
System.out.println("请输入要删除的DVD名称:");
sc.nextLine();
String name3 = sc.next();
deleteDVD(name3);
System.out.println("
***********************************");
returnMain();// 没查看完一个内容都可以选择回主菜单
break;
case 4: // 借出DVD
System.out.println("借出DVD-->");
System.out.println("请输入借出DVD名称:");
sc.nextLine();
String name4 = sc.next();
lend(name4);
System.out.println("
***********************************");
returnMain();// 没查看完一个内容都可以选择回主菜单
break;
case 5: // 归还DVD
System.out.println("归还DVD-->");
System.out.println("请输入归还DVD名称:");
sc.nextLine();
String name5 = sc.next();
returnDVD(name5);
System.out.println("
***********************************");
returnMain();// 没查看完一个内容都可以选择回主菜单
break;
case 6: // 排行榜
System.out.println("排行榜-->");
list(dvd.count);
System.out.println("
***********************************");
returnMain();// 没查看完一个内容都可以选择回主菜单
break;
case 7:
System.out.println("退出系统!");
break;
default:
System.out.println("输入错误!");
returnMain();
}
}
/**
* 返回主菜单
*/
public void returnMain() {
Scanner input = new Scanner(System.in);
System.out.print("输入0返回:");
if (input.nextInt() == 0) {
startMenu();
} else {
System.out.println("输入错误,异常终止!");
}
}
/**
* 查看DVD信息
*/
public void showDVD() {
System.out
.println("----------------------------------------------------------");
System.out.println("num " + "state " + "name " + "date");
System.out
.println("----------------------------------------------------------");
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i] == null) {
continue;// break;********
}
if (dvd.state[i] == 0) {
System.out.println((i + 1) + " 已借出 " + "<<" + dvd.name[i]
+ ">> " + dvd.date[i]);
} else {
System.out.println((i + 1) + " 可借 " + "<<" + dvd.name[i]
+ ">>");
}
}
System.out
.println("----------------------------------------------------------");
}
/**
* 新增DVD
*
* @param nameDVD名称
*
*/
public boolean addDVD(String name) {
boolean flag = false;
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i] == null) {
dvd.name[i] = name;
dvd.state[i] = 1;
flag = true;
break;
}
}
return flag;
}
/**
* 删除DVD业务
*
* @param i第i
* -1张DVD
*/
public void deleteDVD(String name) {
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i].equals(name)) {
if (dvd.state[i] == 1) {
int j = i;
boolean flag = false;
while ((dvd.name[j] != null) && !flag) {
dvd.name[j] = dvd.name[j + 1];
dvd.state[j] = dvd.state[j + 1];
dvd.date[j] = dvd.date[j + 1];
if (j == dvd.name.length - 1) {
flag = true;
}
j++;
}
System.out.println("删除<<" + name + ">>成功!");
break;
} else {
System.out.println("此DVD己借出,不可删除");
break;
}
}
}
}
/***
* 借出DVD业务处理
*
* @param name
*/
public void lend(String name) {
for (int i = 0; i < dvd.name.length; i++) {
if (!dvd.name[i].equals(name)) {
if (i == dvd.name.length - 1) {
System.out.println("没有匹配信息!");
}
continue;// ******break;
} else if (dvd.state[i] == 1) {
dvd.count[i]++; // 借出次数加1
dvd.state[i] = 0;
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
dvd.date[i] = sd.format(new Date()); // 标记借出时间
System.out.println("<<" + name + ">>" + "可借");
break;
} else {
System.out.println("<<" + name + ">>" + "已被借出");
break;
}
}
}
/**
* 冒泡排行
*
* @param arr
*/
public void list(int[] arr) {
for (int i = 0; i < dvd.count.length - 1; i++) {
for (int j = 0; j < dvd.count.length - i - 1; j++) {
if (dvd.count[j] < dvd.count[j + 1]) {
int countTemp = dvd.count[j];
dvd.count[j] = dvd.count[j + 1];
dvd.count[j + 1] = countTemp;
String nameTemp = dvd.name[j];
dvd.name[j] = dvd.name[j + 1];
dvd.name[j + 1] = nameTemp;
int stateTemp = dvd.state[j];
dvd.state[j] = dvd.state[j + 1];
dvd.state[j + 1] = stateTemp;
String dateTemp = dvd.date[j];
dvd.date[j] = dvd.date[j + 1];
dvd.date[j + 1] = dateTemp;
}
}
}
System.out.println("****************************");
System.out.println("次数 " + "名称");
for (int i = 0; i < arr.length; i++) {
if (dvd.name[i] != null) {
System.out.println(dvd.count[i] + " " + dvd.name[i]);
}
}
}
/**
* 归还DVD业务
*
* @param name归还DVD名称
*
*/
public void returnDVD(String name) {
String dstr1 = null;
String dstr2;
boolean flag = false;
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i].equals(name) && dvd.state[i] == 0) {
dstr1 = dvd.date[i]; // 先获取借出时间
dvd.state[i] = 1; // 借出状态归1
dvd.date[i] = null; // 借出时间归空
flag = true;
break;
}
}
if (flag) {
dstr2 = sd.format(new Date()); // 获取当前时间
long time = charge(dstr1, dstr2);
int money = (int) time * 1;
System.out.println("应付租金(元):" + money);
} else {
System.out.println("此书未曾借出!");
}
}
/**
* 日期差算法
*
* @param dstr1借出日期
* @param dstr2归还日期
* @return
*/
public long charge(String dstr1, String dstr2) {
long charge = 0;
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1 = sd.parse(dstr1);
Date d2 = sd.parse(dstr2);
charge = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
} catch (ParseException e) {
e.printStackTrace();
}
return charge;
}
}
主类,程序入口
/**
* 主类,程序入口
*
* @author wql
*
*/
public class Start {
public static void main(String[] args) {
// TODO 自动生成的方法存根
DVDMgr dm = new DVDMgr();
dm.initial();
dm.startMenu();
}
}
运行图