属性: 车牌号
入场时间
出场时间
按月缴费标志
两个以上构造函数
一组set方法
一组get方法
从键盘输入属性的方法
显示属性方法(车牌号、入场时间、出场时间、停车费用)
获取出场时间
获取入场时间
按小时计算停车费用的方法(计费方法:凌晨6点开始-至晚上8点:第一个15分钟免费,六小时内每15分钟1.5元,6后小时每15分钟2块,晚上8点以后每小时0.5元钱)
按月计费的方法(每月800元)
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;
public
class
CarTest {
private
int
inTime;
private
int
outTime;
private
String carNumber;
private
String moneyFlag;
public
CarTest(){}
public
CarTest(
int
inTime,
int
outTime, String carNumber,
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 +
"元"
);
}
}
}
}