java 設計一個停車場

屬性: 車牌號
入場時間
出場時間
按月繳費標誌
兩個以上構造函數
一組set方法
一組get方法
從鍵盤輸入屬性的方法
顯示屬性方法(車牌號、入場時間、出場時間、停車費用)
獲取出場時間
獲取入場時間
按小時計算停車費用的方法(計費方法:凌晨6點開始-至晚上8點:第一個15分鐘免費,六小時內每15分鐘1.5元,6後小時每15分鐘2塊,晚上8點之後每小時0.5元錢)
按月計費的方法(每個月800元)java

 

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*********************************
 * 停車場管理
 * author 
 *2015-12-13
 ********************************/
public class CarStopManager {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

System.out.println("請入車牌號:");
String carno = sc.next();
CarStopManager carStopManager = new CarStopManager();
carStopManager.setCarNo(carno);//設置車牌號

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sdate = format.format(new Date());
System.out.println("當前時間(入場時間)是: "+sdate);
    
System.out.println("須要開出車場嗎?yes/no:");
String yesno = sc.next();

if(yesno.equals("yes")){
String edate = format.format(new Date());
System.out.println("出場時間是: "+edate);
//計算方法
carManager(2, sdate, edate,carStopManager);
}
}
/**
 * 計算方法
 */
public static  void carManager(int type,String starTime,
String endTime,CarStopManager carStopManager){

if(type==1){//按月收費
System.out.println("如若沒有繳納月費請繳納800元,如若繳納將再也不提示!");
}else{
/**
* 通常不會有停車幾個月的吧?先不考慮停車幾年或者幾個月的
*/
String sDay = starTime.substring(8,10);//入場日期(天)
String sHour = starTime.substring(11, 13);//入場小時
String sMM = starTime.substring(14,16);//入場分鐘

String eDay = starTime.substring(8,10);//出場日期(天)
String eHour = endTime.substring(11, 13);//出廠小時
String eMM = endTime.substring(14,16);//出廠分鐘

float money = 0;//需繳納的費用
int shour = Integer.parseInt(sHour);
int ehour = Integer.parseInt(eHour);
int smm = Integer.parseInt(sMM);
int emm = Integer.parseInt(eMM);
int rehour = 0;//停車幾個小時

if(sDay.equals(eDay)){//同一天
  //當天6點到20點之間 
 if((shour>=6 && shour<=20)){
 if(ehour - shour<=6){//6個小時以內
 rehour = (ehour - shour)*60+(emm - smm);//停車多少分鐘
//須要繳納的費用 前15分鐘免費 之後每15分鐘1.5元
 money = (rehour/15-15)*1.5f;
 }else{
 int hour = ehour - shour -6;//6小時除外剩餘小時數
 rehour = 6*60+(emm - smm);//停車多少分鐘
//前15分鐘免費 之後每15分鐘1.5元 超過6小時15分鐘2元
 money = ((rehour/15-15)*1.5f)+(hour*60/2);
     }
 }
}else{//跨天 20點到 6點之間 
//todo
}
System.out.println("您的車牌號是:"+carStopManager.getCarNo()+";\n" +
"您這次停車花費的費用是: "+money+"元");
}
}

/**
 * bean屬性
 */
private String carNo;//車牌號

private String startTime;//入場時間

private String endTime;//出場時間
/**
* 無參構造
*/
public CarStopManager(){
super();
}
/**
 * 有參數構造
 * @param carNo
 * @param startTime
 * @param endTime
 */
public CarStopManager(String carNo, String startTime, String endTime) {
super();
this.carNo = carNo;
this.startTime = startTime;
this.endTime = endTime;
}
/**
* 設置get方法
* @return
*/
public String getCarNo() {
return carNo;
}
    /**
     * 設置set方法
     * @param carNo
     */
public void setCarNo(String carNo) {
this.carNo = carNo;
}

public String getStartTime() {
return startTime;
}

public void setStartTime(String startTime) {
this.startTime = startTime;
}

public String getEndTime() {
return endTime;
}

public void setEndTime(String endTime) {
this.endTime = endTime;
}

}

或者:函數

 

import java.util.Scanner;this

 

public class CarTest {   spa

    private int inTime;3d

    private int outTime;code

    private String carNumber;orm

    private String moneyFlag;blog

     

    public CarTest(){}ci

     

    public CarTest(int inTime, int outTime, String carNumber,get

            String moneyFlag) {

        super();

        this.inTime = inTime;

        this.outTime = outTime;

        this.carNumber = carNumber;

        this.moneyFlag = moneyFlag;

    }

     

    public float getInTime() {

        return inTime;

    }

    public void setInTime(int inTime) {

        this.inTime = inTime;

    }

    public float getOutTime() {

        return outTime;

    }

    public void setOutTime(int outTime) {

        this.outTime = outTime;

    }

    public String getCarNumber() {

        return carNumber;

    }

    public void setCarNumber(String carNumber) {

        this.carNumber = carNumber;

    }

    public String getMoneyFlag() {

        return moneyFlag;

    }

    public void setMoneyFlag(String moneyFlag) {

        this.moneyFlag = moneyFlag;

    }

    //計算費用

    public float putMoney(float inTime,float outTime,String moneyFlag){

        float money = 0.0f;

        //按月計費的

        if("y".equals(moneyFlag)){

            money = 0.0f;

        }else{//不按月計費的

            if(inTime >6 && inTime < 20){

                float hour = outTime - inTime;

                if(hour < 6){

                    float time = (outTime-inTime)*60-15;

                    money = (float) (time/15*1.5);

                }else{

                    money = (float) ((hour-6)*60/15*2 6*60/15*1.5);

                }

            }else{

                money = (float) ((outTime - inTime)*0.5);

            }

        }

        return money;

    }

     

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        while(true){

            CarTest ct = new CarTest();

            System.out.println("請輸入車牌號、入場時間,出場時間,按月繳費標誌(y/n):");

            String carNumber = sc.next();

            int inTime = sc.nextInt();

            int outTime = sc.nextInt();

            String moneyFlag = sc.next();

            //ct.setCarNumber(carNumber);

            //ct.setInTime(inTime);

            //ct.setOutTime(outTime);

            //ct.setMoneyFlag(moneyFlag);

            System.out.println("車牌號爲:" + carNumber + ",入場時間:" +inTime+"點"",出場時間:"+outTime+"點"+",是否按月繳費:" + moneyFlag);

            float money = ct.putMoney(inTime, outTime, moneyFlag);

            if("y".equals(moneyFlag)){

                System.out.println("因爲您是按月繳費用戶,因此您本次停車費用爲:"+money+"元");

                System.out.println("可是你本月須要繳費800元");

            }else{

                System.out.println("您本次停車費用爲:");

                System.out.println(money + "元");

            }

        }

    }

}

相關文章
相關標籤/搜索