java 停车场_java 设计一个停车场

这是一个用Java编写的简单停车场管理系统,包含车辆的车牌号、入场时间、出场时间和按小时、按月计费的功能。用户可以输入车牌号、入场和出场时间,并选择是否按月缴费,系统会根据输入计算停车费用。
摘要由CSDN通过智能技术生成

属性: 车牌号

入场时间

出场时间

按月缴费标志

两个以上构造函数

一组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;

}

}

或者:

338c03230cbaef58c5b60ebe14b32069.png

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 +"元");

}

}

}

}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
初始化停车场(确定停车区个数n,每个停车区的停车位,且初始时,停车场为空),说明:使用一个共享数组(临界资源)存储每个停车区中空闲停车位的个数,每一个停车区使用一个共享缓冲区可容纳一辆车,停车场公共通道允许通过两辆车通过。 停车场入口检查是否有空闲停位,如果有发放相关停车区的停车卡,允许停车。如果不存在空闲车位,等待到有空闲车位止。注,入口处应尽量发放不同停车区的停车卡,以获得更高的效率。停车场过道允许两辆车同时通过。 停车场出口,回收停车卡,并修改相关停车区空闲车位数。注:同一时刻只能有一个车出停车场。 每一个停车区,有一个待车位,供进入停车区车辆进入停车区。停车区只能有一辆车进或出。 每辆车每进入下一环节皆应停留一定时间。每一个用户建立一个窗口,于窗口中显示当前将态。将状态转换可由人工确定亦可自动完成,但进入下状态时需要停留学生一定的时间,以保证多个用户“并行”工作。 本框架由四个类组成,这四个类分别是:InitFrame、WotkFram、carJFrame及carThread,由InitFrame启动。类InitFrame提供停车场初始化功能,完成初始任务后启动类WotkFram界面,执行停车场模拟程序,点击命令按扭“进入停车场”,建立一个线程(线程类名为carThread),线程建立一个carJFrame窗口(车辆进入、离开停车场操作程序)模拟车辆进入或离开停车场
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值