1、JAVA之迷你DVD管理器。
1>打開記事本,寫如下一段代碼:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class DVDMgr {
/**
* 建立DVD對象
*/
DVDSet dvd = new DVDSet();
/**
* 初始三個DVD
*/
public void initial() {
dvd.name[0] = "少年奇幻漂流記";
dvd.state[0] = 0;
dvd.date[0]="2013-2-15";
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 returnMain(){
Scanner input = new Scanner(System.in);
System.out.print("輸入0傳回:");
if(input.nextInt() == 0){
startMenu();
}else{
System.out.println("輸入錯誤, 異常終止!");
}
}
/**
* 檢視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] == 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();
}
/**
* 新增DVD
*/
public void add(){
Scanner input = new Scanner(System.in);
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]=1;//置新增的DVD可借狀态
System.out.println("新增《"+name+"》成功!");
break;
}
}
System.out.println("**************************");
returnMain();
}
/**
* 删除DVD
*/
public void delete(){
Scanner input = new Scanner(System.in);
boolean flag=false;//辨別删除成功與否
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].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();
}
/**
* 借出DVD
*/
public void lend(){
System.out.println("---> 借出DVD\n");
Scanner input = new Scanner(System.in);
System.out.print("請輸入DVD名稱: ");
String want = input.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]=input.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();
}
}
儲存為DVDMgr.java【同上節,我還是把他放在了D盤下InputTest檔案夾内】
2>打開記事本,寫如下一段代碼:
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]; //借出次數
}
儲存為DVDSet.java【同上節,我還是把他放在了D盤下InputTest檔案夾内】
3>打開記事本,寫如下一段代碼:
public class Start {
/**
* @param args
*/
public static void main(String[] args) {
DVDMgr dm=new DVDMgr();
dm.initial();
dm.startMenu();
}
}
儲存為Start.java【同上節,我還是把他放在了D盤下InputTest檔案夾内】
打開dos運作視窗,輸入d:轉到D盤,接下來輸入cd InputTest轉到InputTest目錄下:
輸入Javac Start.java 回車 java Start。
我們依次選擇0,1,2,3,4,5,6;結果如下圖: