package com.jb.minidvd;
public class DVDSet {
String[] name = new String[50]; //数组1存储DVD名称数组
int[] state = new int[50]; //数组2存储DVD借出状态:0已借出/1可借
String[] date=new String[50]; //数组3存储DVD借出日期
int[] count=new int[50]; //借出次数
}
package com.jb.minidvd;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import javax.print.DocFlavor.INPUT_STREAM;
public class DVDMgr {
Scanner sc = new Scanner(System.in);
DVDSet dvd = new DVDSet();
/**
* 初始化变量
*/
public void initial() {
dvd.name[0] = "罗马假日";
dvd.state[0] = 0;
dvd.date[0]="2010-7-1";
dvd.count[0]=15;
dvd.name[1] = "风声鹤唳";
dvd.state[1] = 1;
dvd.count[1]=12;
dvd.name[2] = "浪漫满屋";
dvd.state[2] = 1;
dvd.count[2]=30;
}
/**
* 菜单
*/
public void startMenu(){
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.print("--------------------------------------\n");
System.out.print("请选择: ");
Scanner input = new Scanner(System.in);
int choice = input.nextInt();
switch(choice){
case 0:
list();
break;
case 1:
add();
break;
case 2:
search();
break;
case 3:
delete();
break;
case 4:
lend();
break;
case 5:
returnDvd();
break;
case 6:
System.out.println("\n谢谢 使 用!");
break;
}
}
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] == 0){
System.out.println((i+1)+"\t已借出\t"+"<<"+ dvd.name[i]+ ">>\t" + dvd.date[i]);
}else if(dvd.state[i] == 1){
System.out.println((i+1)+"\t可 借\t"+"<<"+dvd.name[i]+">>");
}
}
System.out.println("**************************");
returnMain();
}
public void add() {
System.out.println("---> 新增DVD\n");
System.out.print("请输入DVD名称: ");
String name = sc.next();
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){ //查询最后一个空位置插入
dvd.name[i]=name;
dvd.state[i]=1;//置新增的DVD可借状态
System.out.println("新增《"+name+"》成功!");
break;
}
}
System.out.println("**************************");
returnMain();
}
public void delete() {
boolean flag = false;
System.out.println("---> 删除DVD\n");
System.out.print("请输入DVD名称: ");
String name = sc.next();
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i]!=null&&dvd.name[i].equalsIgnoreCase(name)&&dvd.state[i]==1) {
int j=i;
while (dvd.name[j+1]!=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]==0){
System.out.println("《"+name+"》为借出状态,不能删除!");
flag=true;//置位
break;
}
}
if(!flag){
System.out.println("没有找到匹配信息!");
}
System.out.println("**************************");
returnMain();
}
public void lend(){
System.out.println("---> 借出DVD\n");
System.out.print("请输入DVD名称: ");
String want = sc.next(); //要借出的DVD名称
for(int i = 0; i < dvd.name.length; i++){
if(dvd.name[i] == null){ //无匹配
System.out.println("没有找到匹配信息!");
break;
}else if(dvd.name[i].equals(want)&& dvd.state[i]==1){ //找到匹配可借
dvd.state[i] = 0;
System.out.print("请输入借出日期(年-月-日):");
dvd.date[i]=sc.next();
System.out.println("借出《"+want+"》成功!");
dvd.count[i]++;
break;
}else if(dvd.name[i].equals(want)&& dvd.state[i]==0){ //找到匹配已被借出
System.out.println("《"+want+"》已被借出!");
break;
}
}
System.out.println("**************************");
returnMain();
}
/**
* 归还DVD并计算租金
*/
public void returnDvd(){
System.out.println("---> 归还DVD\n");
Scanner input = new Scanner(System.in);
long loan=0;//租金
System.out.print("请输入DVD名称: ");
String want = input.next();
for(int i = 0; i < dvd.name.length; i++){
if(dvd.name[i] == null){ //无匹配
System.out.println("没有找到匹配信息!");
break;
}else if(dvd.name[i].equals(want) && dvd.state[i]==0){ //找到匹配
dvd.state[i] = 1;
System.out.print("请输入归还日期(年-月-日):");
String redate=input.next();
//计算租金
loan=charge(dvd.date[i],redate);
System.out.println("\n归还《"+want+"》成功!");
System.out.println("借出日期为:"+dvd.date[i]);
System.out.println("归还日期为:"+redate);
System.out.println("应付租金(元):"+loan);
break;
} else if(dvd.name[i].equals(want) && dvd.state[i]==1){ //找到匹配但没有借出
System.out.println("该DVD没有被借出!无法进行归还操作。");
break;
}
}
System.out.println("**************************");
returnMain();
}
/**
* 计算日期差
* @param dstr1 第一个日期
* @param dstr2 第二个日期
*
*/
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;
}
/**
* 借出排行榜
*/
public void list(){
//定义新数组,用来存放排序后DVD信息
String[] newname = new String[50]; //
int[] newcount=new int[50];
for(int k=0;k<dvd.name .length;k++){
newname[k]=dvd.name[k];
newcount[k]=dvd.count[k];
}
//利用冒泡排序算法进行排序
for(int i=0;i<newname.length;i++){
for(int j=i+1;j<newname.length;j++){
if(newcount[i]>newcount[j]){
int tempc=newcount[i];
newcount[i]=newcount[j];
newcount[j]=tempc;
String tempn=newname[i];
newname[i]=newname[j];
newname[j]=tempn;
}
}
}
System.out.println("---> 排行榜\n");
System.out.println("**************************");
System.out.println("次数\t名称");
//显示排行榜信息
for(int i=newname.length-1;i>=0;i--){
if(newname[i]!=null){
System.out.println(newcount[i]+"\t<<"+ newname[i]+ ">>" );
}
}
System.out.println("**************************");
returnMain();
}
private void returnMain() {
// TODO Auto-generated method stub
System.out.println("输入0返回:");
if(sc.nextInt()==0) {
startMenu();
}else {
System.out.println("输入错误, 异常终止!");
}
}
}
package com.jb.minidvd;
public class Start {
/**
* @param args
*/
public static void main(String[] args) {
DVDMgr dm=new DVDMgr();
dm.initial();
dm.startMenu();
}
}