DIY简易输入式停车场计费系统

最近学习了很多集合,出于练习(好玩)的目的自制一个简易的停车计费系统。具体功能如下:
1.把驶入停车场的信息记录下来,主要用于标记这辆车的出入时间。
2.可以查看在停车场中所有的车辆信息
3.在车辆驶出的时候通过牌照来显示其信息以及所需的停车费

主要的代码如下:
1.首先需要一个实体类来存放车子这个实体的信息。无非就是定义一些属性和get/set方法。里面重写了toString方法,停车时间这一栏是不显示的。

import java.util.Date;
import java.util.Objects;
import java.util.stream.Collector;public class EnterCar  {private String colour;      //颜色private String brand;       //品牌private String type;        //车型private String number;      //车牌号private String eDate;         //入库时间private String oDate;    //出库时间private long timeF;       //停车时间public EnterCar() {}public EnterCar(String colour, String brand, String type, String number, String eDate, String oDate, long timeF) {this.colour = colour;this.brand = brand;this.type = type;this.number = number;this.eDate = eDate;this.oDate = oDate;this.timeF = timeF;}public String getColour() {return colour;}public void setColour(String colour) {this.colour = colour;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String geteDate() {return eDate;}public void seteDate(String eDate) {this.eDate = eDate;}public String getoDate() {return oDate;}public void setoDate(String oDate) {this.oDate = oDate;}public long getTimeF() {return timeF;}public void setTimeF(long timeF) {this.timeF = timeF;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (!(o instanceof EnterCar)) return false;EnterCar car = (EnterCar) o;return getTimeF() == car.getTimeF() &&Objects.equals(getColour(), car.getColour()) &&Objects.equals(getBrand(), car.getBrand()) &&Objects.equals(getType(), car.getType()) &&Objects.equals(getNumber(), car.getNumber()) &&Objects.equals(geteDate(), car.geteDate()) &&Objects.equals(getoDate(), car.getoDate());}@Overridepublic int hashCode() {return Objects.hash(getColour(), getBrand(), getType(), getNumber(), geteDate(), getoDate(), getTimeF());}@Overridepublic String toString() {return "停车信息[" +" 颜色:" + colour  +" 品牌:" + brand  +" 车型:" + type  +" 车牌号:" + number  +" 停车时间:" + eDate +" 出去时间:" + oDate +"]";}
}

2.需要写一些方法
/******车辆入库存放信息的方法
这里是用了map集合存放信息的,所以我选用了车牌这个全国唯一的值来做键值,当然为了防止输入错误,里面还写了防止错误输入的判断。

 private static void  enter(HashMap<String ,EnterCar> sd) {EnterCar car=new EnterCar();Scanner dd=new Scanner(System.in);System.out.println("请输入车辆颜色:");car.setColour(dd.next());System.out.println("请输入品牌:");car.setBrand(dd.next());System.out.println("请输入车型:");car.setType(dd.next());boolean gg=true;System.out.println("请输入车牌号:");while(gg){String aa=dd.next();if(!sd.containsKey(aa)){car.setNumber(aa);gg=false;}else {System.out.println("请正确输入车牌号!");}}//获取出入库时间SimpleDateFormat fm=new SimpleDateFormat("YY/MM/dd hh:mm:ss");car.seteDate(fm.format(new Date()));car.setoDate("正在停车中");//获取时间长度Date date = new Date();car.setTimeF(date.getTime()/60000);sd.put(car.getNumber(),car);}

/*****查看停车场内所有车辆信息的方法
这里分别有

 private static void showCar(HashMap<String, EnterCar> listCar) {Set<String> ss=listCar.keySet();for (String s : ss) {EnterCar df=listCar.get(s);System.out.println(df);}}

/*******车辆出库的方法

private static void outCar(HashMap<String, EnterCar> listCar) {Scanner sc=new Scanner(System.in);System.out.println("请输入要出库的车牌号:");String str=sc.next();EnterCar outCar=listCar.get(str);//获取出库时间SimpleDateFormat om=new SimpleDateFormat("YY/MM/dd hh:mm:ss");outCar.setoDate(om.format(new Date()));//获取时间长度Date date = new Date();long spend=date.getTime()/60000-outCar.getTimeF();double maney= (double) (spend*0.05); //每分钟5分钱System.out.print(outCar+"  ");System.out.println("已出库!");/**删除容器中的数据**/listCar.remove(str);System.out.println("总计花费:"+maney+"元(0.05元/分钟)");}

/***这个方法用于用户人机交互界面

private static void display() {System.out.println("\n\r/**********输入1:开始停车************/\n\r"+"/**********输入2:查询所有车辆信息****/\n\r"+"/**********输入3:结束计费************/\n\r"+"/**********输入4:退出****************/\n\r");}
}

/****这是主方法

public static void main(String[] args) {boolean flag=true;HashMap<String ,EnterCar> listCar=new HashMap<>();Scanner sc=new Scanner(System.in);while(flag){display();String str =sc.nextLine();switch (str){case "1":enter(listCar); break;       //停车case "2":showCar(listCar); break;     //查看case "3":outCar(listCar); break;           // 出库case "4":flag=false; break;           //退出default:break;}}}

以上代码写的并不漂亮,希望各位看官能多多包涵、提点。

DIY简易输入式停车场计费系统相关推荐

  1. 面向对象大作业—停车场计费系统

    一.选题与前期调查 选题 随着经济的快速发展,特别是汽车和住房两大消费热点的持续升温,对于停车场的需求越来越迫切,停车场收费系统作为公共建筑和大型住宅区的重要组成成分,越来越引起人们的重视.地下停车场 ...

  2. java毕业设计教程SSM框架实现的车位租赁管理系统|停车场计费系统[包运行成功]

    一.项目介绍 <SSM框架实现的车位租赁管理系统> 该项目采用技术: 后端采用了spring,spring mvc,mybatis框架 前端使用了layui,界面美观 使用了mysql数据 ...

  3. 停车场计费系统(HTML版)————JavaScript的应用

    利用JavaScript编制的一个停车场收费界面,完成以下功能: 1)单击"设置"按钮,设置停车场总车位数量.每小时收费标准(分小型车.中型车.大型车三种). 2)录入车牌.车型. ...

  4. java项目开发实例SSM框架实现的车位租赁管理系统|停车场计费系统

  5. 易泊车牌识别 停车计费系统解决方案

    一.公司简介 北京易泊时代科技有限公司是中国优秀的智慧停车运营商,拥有在车牌识别领域资深团队.科研力量.技术优势和行业经验.易泊时代停车计费系统的推出,成为我国在停车计费领域一次新的突破,未来易泊时代 ...

  6. 6-1 停车场收费问题 (20分) 在停车场收费系统中,收费者会根据车型的不同按不同的单价和计费方式收取不同的停车费,其中: 轿车Car:每小时8元,超过30分钟按一小时计算,未超过30分钟不收费

    作者徐婉珍单位广东东软学院代码长度限制16 KB时间限制400 ms内存限制64 M 作者:TOPKK **在停车场收费系统中,收费者会根据车型的不同按不同的单价和计费方式收取不同的停车费,其中: 轿 ...

  7. python例程:智能停车场车牌识别计费系统的程序

    目录 <智能停车场车牌识别计费系统>程序使用说明 主要代码演示 源码下载路径 <智能停车场车牌识别计费系统>程序使用说明 在PyCharm中运行<智能停车场车牌识别计费系 ...

  8. 最简单DIY基于ESP32CAM的物联网相机系统③(在JSP服务器图传相片给所有客户端欣赏)

    最简单DIY基于ESP32CAM的物联网相机系统系列文章目录 第一篇:最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传) 第二篇:最简单DIY基于ESP32CAM的物联网相机系统 ...

  9. SparkStreaming 实现广告计费系统中在线黑名单过滤实战

    本博文内容主要包括以下内容: 1.在线黑名单过滤实现解析 2.SparkStreaming实现在线黑名单过滤 一.在线黑名单过滤实现解析: 流式处理是现代数据处理的主流,各种电子商务网站,搜索引擎等网 ...

最新文章

  1. 树形DP——Codeforces Choosing Capital for Treeland
  2. 美国实行公共场所禁用面部识别设备 IBM跨界饮食业利用AI开发美食
  3. 行列式计算的两种方法
  4. MongoDB 是如何鼓励和激励开发者社区的
  5. 获取当前时间日期并格式化--JS
  6. Flink SQL 的 9 个示例
  7. imx6 android快速启动,android启动不起来(已解决)
  8. 编译原理 —— 1.2 编译系统的结构(终于弄懂语法和语义的区别了!)
  9. Python中lambda的使用,与它的三个好基友介绍!
  10. Mybatis缓存模块(一)BlockingCache
  11. Reflector:.NET反编译工具及导出CS文件插件
  12. 计算机四级c语言题库及答案,计算机四级考试题库及答案
  13. 还记得2048怎么玩吗?快来玩会儿(摸鱼)吧
  14. 1260.shift-2d-grid
  15. 将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中
  16. LogMeIn Pro 试用简介!
  17. 八皇后——(第一场 递归与回溯)
  18. 美国又搞事,芯片工程师们怒了
  19. HDU1849 SG函数
  20. linux dpdk,在Linux(CentOS)上部署DPDK------命令行方式

热门文章

  1. Wikileaks公布CIA的代码混淆工具Marble
  2. 初学HTML5——表格(值日表)
  3. 求栈中元素个数算法_精妙的算法——计算二进制中1的个数
  4. 试看不同PCI-E带宽对Radeon HD 7970性能的影响
  5. 循环赛日程表 (递归与分治)
  6. delphi android jni,Delphi使用android的NDK是通过JNI接口,封装好了,不用自己写本地代码,直接调用...
  7. 深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/c++linux服务器开发
  8. PKI撑起“保护伞”
  9. 百度Apollo ANP:将自动驾驶从未来带回今天
  10. android模拟器steam,退休模拟器steam版