0import java.text.*;
import java.util.*;
class MiniDvd
{
public static void main(String[] args)
{
DVDMgr a = new DVDMgr();
a.inital();
a.startMenu();
}
}
class DVDSet
{
//声明DVD名,属性等状态
String[] name = new String[99]; //定义DVD数组
boolean[] state = new boolean[99]; //定义DVD借出的状态:true借出;false可借
String[] date = new String[99]; //定义借出日期
int[] count = new int[99]; //定义借出次数
}
class DVDMgr
{
Scanner input = new Scanner(System.in);
DVDSet dvd = new DVDSet(); //初始化对象
boolean islend = false; //已借出是true,可借是false
//初始化三张DVD信息
public void inital(){
dvd.name[0] = "罗马假日";
dvd.state[0] = true; //已借出
dvd.date[0] = "2013-7-1";
dvd.name[1] = "风声鹤唳";
dvd.state[1] = false; //可借
dvd.name[2] = "浪漫满屋";
dvd.state[2] = false; //可借
}
public void startMenu(){
System.out.println("欢迎使用迷你DVD管理器");
System.out.println("---------------------");
System.out.println("0.查看DVD排行版");
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.println("请选择");
int choice = input.nextInt(); //定义要选择的菜单
switch (choice)
{
case 0:
list(); //查看DVD排行版
break;
case 1:
add(); //新增DVD
break;
case 2:
search(); //查看DVD
break;
case 3:
delete(); // 删除DVD
break;
case 4:
lend(); // 借出DVD
break;
case 5:
returnDvd(); // 归还DVD
break;
case 6:
System.out.println("谢谢使用!");
break;
default:
System.out.println("对不起,你的输入有误,请重新输入!");
}
}
public void returnMain(){
for (; ; )
{
System.out.println("输入0返回:");
if (input.nextInt() == 0 )
{
startMenu();
}else{
System.out.println("输入错误!");
}
}
}
public void list(){
String[] newname = new String[99]; //定义新数组 显示DVD名称
int[] newcount = new int[99]; //定义新数组 显示借出次数
for (int i = 0 ; i < dvd.name.length ; i++ )
{
newname[i] = dvd.name[i];
newcount[i] = dvd.count[i];
}
for (int i = 0 ; i < newname.length ; i++ ) //2层循环控制位置
{
for (int j = i + 1; j < newname.length; j++ )
{
if (newcount[i] > newcount[j])
{
int temp = newcount[i]; //2次交换实现次数和名字的替换
newcount[i] = newcount[j];
newcount[j] = temp;
String temp1 = newname[i];
newname[i] = newname[j];
newname[j] = temp1;
}
}
}
System.out.println("次数\t名称");
for (int i = dvd.name.length - 1; i >= 0; i--) {
if (newname[i] != null) {
System.out.println(newcount[i] + "次" + "\t" + newname[i]);
}
}
System.out.println("----------------------------");
returnMain();
}
//新增DVD
public void add(){
System.out.println("--->新增DVD\n");
System.out.print("请输入DVD的名称:");
String name = input.next();
for (int i = 0 ; i < dvd.name.length ; i++ )
{
if (dvd.name[i] == null) //判断位置是否为空
{
dvd.name[i] = name;
dvd.state[i] = false;
System.out.println("新增《" + name + "》");
break;
}
}
System.out.println("----------------------------");
returnMain();
}
//查看DVD
public void search(){
System.out.println("--->查看DVD\n");
System.out.println("序号\t状态\t名称\t\t借出日期");
for (int i = 0 ; i < dvd.name.length ; i++ )
{
if (dvd.name[i] == null)
{
break;
}else if (dvd.state[i] == true)
{
System.out.println((i + 1) + "\t已借出\t《" + dvd.name[i] + "》\t" + dvd.date[i]);
}else if (dvd.state[i] == false)
{
System.out.println((i + 1) + "\t可 借\t《" + dvd.name[i] + "》");
}
}
System.out.println("----------------------------");
returnMain();
}
//删除DVD
public void delete(){
System.out.println("--->删除DVD\n");
System.out.print("请输入DVD的名称:");
String name = input.next();
boolean flag = false;
for (int i = 0 ;i < dvd.name.length ; i++ )
{
if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name)
&& dvd.state[i] == false)
{
int j = i ;
while (dvd.name[j] != null)
{
dvd.name[j] = dvd.name[j + 1]; // 删除元素,元素前移
dvd.state[j] = dvd.state[j + 1];
dvd.date[j] = dvd.date[j + 1];
j++;
}
//最后一个不为空的元素置空
dvd.name[j] = null;
dvd.date[j] = null;
System.out.println("删除《" + name + " 》成功!");
flag = true; //标识位
break;
}else if (dvd.name[i] != null
&& dvd.name[i].equalsIgnoreCase(name)
&& dvd.state[i] == true)
{
System.out.println("《" + name + "》为借出状态,不能删除!");
flag = true;
break;
}
if (flag)
{
System.out.println("没有找到匹配信息");
}
}
System.out.println("----------------------------");
returnMain();
}
//借出DVD
public void lend(){
System.out.println("--->借出DVD\n");
System.out.print("请输入DVD的名称:");
String name = input.next();
for (int i = 0 ; i < dvd.name.length ; i++ )
{
if (dvd.name == null)
{
System.out.println("没有找到匹配信息");
break;
}else if (dvd.name[i].equals(name) && dvd.state[i] == false)
{
System.out.println("请输入借出日期(年-月-日):");
dvd.date[i] = input.next();
System.out.println("《" + name + "》借出成功");
dvd.state[i] = true;
dvd.count[i]++;
break;
}else if (dvd.name[i].equals(name) && dvd.state[i] == true)
{
System.out.println("不好意思,《" + name + "》已被借出!");
break;
}
}
System.out.println("----------------------------");
returnMain();
}
//归还DVD
public void returnDvd(){
System.out.println("--->归还DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
long loan = 0; // 租用天数
for (int i = 0; i < dvd.name.length; i++)
{
if (dvd.name[i] == null)
{
System.out.println("没有找到匹配信息!");
break;
}else if (dvd.name[i].equals(name) && dvd.state[i] == true)
{
System.out.print("请输入归还日期(年-月-日):");
String redate = input.next();
loan = charge(dvd.date[i], redate);
System.out.println("\n《" + name + "》归还成功");
dvd.state[i] = false;
System.out.println("借出日期为:" + dvd.date[i]);
System.out.println("归还日期为:" + redate);
System.out.println("租用天数:" + loan);
break;
}else if (dvd.name[i].equals(name) && dvd.state[i] == false) {
System.out.println("《" + name + "》没有被借出,无法进行归还操作!");
break;
}
}
System.out.println("----------------------------");
returnMain();
}
// 计算日期差
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;
}
}