文档章节

java 设计一个停车场

一贱书生
 一贱书生
发布于 2016/11/21 11:02
字数 1007
阅读 34
收藏 0
点赞 0
评论 0

属性: 车牌号
入场时间
出场时间
按月缴费标志
两个以上构造函数
一组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 + "元");

            }

        }

    }

}

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 723
码字总数 600072
作品 0
专访《Java程序员修炼之道》作者Ben Evans

转帖这篇文章,很大成分就是认同“保守的设计思想是Java的最大优势”这句话 ------------------------------------------------------------------ 【编者按】Java是一种可以撰写跨平台应用软...

深蓝苹果
2014/10/23
0
0
java ThreadLocal(应用场景及使用方式及原理)

虽然ThreadLocal与并发问题相关,但是许多程序员仅仅将它作为一种用于“方便传参”的工具,胖哥认为这也许并不是ThreadLocal设计的目的,它本身是为线程安全和某些特定场景的问题而设计的。 ...

onedotdot
2017/10/18
0
0
《Java从小白到大牛精简版》之第1章 开篇综述

Java诞生到现在已经有20多年了,但是Java仍然是非常热门的编程语言之一,很多平台中使用Java开发。表1-1所示的是TIOBE社区发布的2016年5月和2017年5月的编程语言排行榜,可见Java语言的热度,...

tony关东升
06/26
0
0
JVM基础:深入学习JVM堆与JVM栈

以前堆是干啥栈是干啥都知道,就是没连在一起想想。感觉讲的不错的一篇儿~~JVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放、放在...

李星
2014/06/04
0
0
Scala学习笔记(1):Scala语言的来源

Scala是“scalable language”,也就是“可扩展”语言是意思。Scala是一种静态类型语言,它融合了函数式编程和面向对象编程和的思想,前者让它可以很方便快速地构建可用程序,后者则让其具有...

chengyao2
2013/04/28
0
0
C++之父评论C++与Java

如 果人们非要拿C++和Java来作比较,我建议他们去阅读The Design and Evolution of C++,看看C++为什么是今天这个样子,用我在设计C++时遵从的原则来检验这两种语言。这些原则与SUN的Java开发...

zplswf
2012/04/09
0
0
RMI:Java中的分布式计算框架

RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一。其实...

qq_39521554
05/15
0
0
反驳:Threadlocal存在内存泄露

最近看到网上的一篇文章,分析说明ThreadLocal是如何内存泄露的. 但我不这么认为. ThreadLocal设计的很好,根本不存在内存泄露问题. 本文就结合图和代码的例子来验证我的看法. 网上的代码例子普...

GM_LV
2013/03/27
0
0
Hasor JDBC 的难关,嵌套事务处理思路

本文存属提醒我自己不要忘记的事情。也是向大家展示 Hasor 对于 JDBC 方面即将的又一个重大的进步。目前该方案还在实施中。 前段时间闲着没事分析了下 Spring JDBC ,觉得 Spring JDBC 的设计...

哈库纳
2013/12/29
0
9
fbf的书单,欢迎分享,欢迎更新

本人看过的以下书值得推荐的,列出来的就是值得推荐的 这个颜色是一般推荐 这个颜色是强烈推荐 这个颜色是神作,收藏吧 物联网:生产力的变革 李虹著 开拓视野,一般 源码中国:全球IT外包新原...

fbf
2015/03/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

设计神器 - 摹客设计系统上线了 | 晒出你的设计规范,赢iPad Pro!

在国内,设计规范也许还是个不太常用的概念,但是如果你正好有参与互联网公司的产品设计,你应该早就已经体会到设计规范的重要性了。UI设计师总是要花费大量的时间和精力向开发描述一大堆设计...

mo311
5分钟前
0
0
Thymeleaf 使用过程中的一些记录

Thymeleaf格式化时间: th:value="${#dates.format(gw.regDT,'yyyy-MM-ddHH:mm:ss')}" Thymeleaf select反选: <select id="status" name="status" th:field="${gw.status}" th:value="${gw.......

惊尘大人
8分钟前
0
0
istio源码分析之pilot-discovery模块分析

本文分析的istio代码版本为0.8.0,commit为0cd8d67,commit时间为2018年6月18日。 本文为Service Mesh深度学习系列之一: Service Mesh深度学习系列part1—istio源码分析之pilot-agent模块分...

xiaomin0322
13分钟前
0
0
数据库基本操作:增删改查及联表操作

所用软件:SQL Server Management Studio 首先第一步,建立一个表。在这里命名为T1。并在里面填入几条数据。如图: T1 一.查询 查询所有:select * from T1; 按条件查询:select * from T1 ...

小_橙_子
17分钟前
0
0
Crontab作业时间设置

今天,遇到这么一个题目,周一到周五的9:00-16:59之间,每隔两分钟将某个命令运行一次。给的答案是: */2 9-16 * * 1-5 /usr/sbin/somecommand dosomething 乍一看,这个答案不对,应...

大别阿郎
22分钟前
0
0
ES17-JAVA API文档管理

1.保存文档 可以通过json工具把java对象转换成json字符串进行保存,也可以通过内置的帮助类直接构建json格式 /** * 获取客户端 * * @return */public static TransportClie...

贾峰uk
22分钟前
0
0
Python代码规范和命名规范

前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 一、简明概述 1、编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头...

blackfoxya
25分钟前
0
0
联动滑动之一:NestScrollChild和NestedScrollingParent

NestScrollChild和NestedScrollingParent 吐槽一下开源中国竟然标题字数有限制 由于项目中使用了CoordinateLayout来解决联动以及实现炫酷的UI效果,那么必须就要研究一波源码了,毕竟知其然知...

JerryLin123
42分钟前
1
0
cloudera spark2.2 读写hbase

cloudera spark2.2 读写hbase 例子 host = 'bigdata-03,bigdata-05,bigdata-04'conf = { "hbase.zookeeper.quorum": host, "hbase.mapreduce.inputtable": "student1"}k......

osenlin
47分钟前
0
0
数据库规范化

转载自 一个小时学会MySQL数据库 地址:http://www.cnblogs.com/best/p/6517755.html 截取其中 1.4 部分 用于自己学习使用 感谢作者:张果 1.4、数据库规范化 经过一系列的步骤,我们现在终于...

十万猛虎下画山
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部