一道关于停车计费的问题

简介:
程序允许30分钟,期间要求用户输入来模拟车辆进入、出去的行为
输入的内容为一串字符串,每个不同的字符串代表一辆车.
纪录所有车每次进出的时间,计算时间、次数和价格.
价格依照价格表,阶梯定价:头10分钟5元,超过10分钟的每分钟5元
程序运行30分钟自动退出,程序退出前还没出库的车,收费200元
程序最后统计所有车辆的情况:次数,每次时间,总时间,总价

code:


  
  
  1. #!/usr/bin/perl  
  2. use strict;  
  3. use warnings;  
  4. use Data::Dumper;  
  5. use Time::Local;  
  6. use POSIX qw{strftime};  
  7. my (%hash,%count)=();  
  8. my $start_time = time;  
  9. sub p_money{  #计算费用  
  10.     my $time = shift;  
  11.    return 5 if $time <= 600;  
  12.    if ($time>600 and $time<1800){  
  13.     my $min;  
  14.      $time%60==0?$min = ($time-600)/60:$minint( ($time-600)/60 +1);  
  15.         my $mon_minute = 5+$min*5;  
  16.        return $mon_minute;  
  17.    }  
  18. }  
  19. my (@arr,$end_time);  
  20. while(1){  
  21.     my ($start);  
  22.    $end_time=time;  
  23. print  "Car Number :";  
  24.    eval{  
  25. local $SIG{ALRM}=sub {die "timeout\n";};  
  26.   alarm(5);  
  27.     chomp( $start = <>);        #此处设施中断  5秒内没有用户输入就继续循环,  
  28.     push @{$hash{$start}},time;  
  29.     $count{$start}++ if defined $start;  
  30.     alarm(0);  
  31.    };  
  32. if ($end_time-$start_time>20){   #这里程序运行20秒,则退出循环,打印车辆的费用  
  33.         for (sort keys %hash){  
  34. my $stop_time = time()-$hash{$_}[0];  
  35.         my $car_start_time = strftime("%Y-%m-%d %H:%M:%S", localtime($hash{$_}[0]));  
  36.         my $car_stop_time = strftime("%Y-%m-%d %H:%M:%S", localtime(time));  
  37.         push @arr,"$_\t$car_start_time $car_stop_time $stop_time\t200\n";  
  38.         }  
  39.    print "\n车号\t开始时间\t离开时间\t停车时间\t价格\n";  
  40.    print @arr;  
  41.         exit;  
  42.     }  
  43.    if(defined $start  and  ($count{$start}||0) >1 ){  
  44.         push @{$hash{$start}},time;  
  45.         my $stop_time = $hash{$start}[-1]-$hash{$start}[0];  
  46.         my $car_money = p_money $stop_time;  
  47.         my $car_start_time = strftime("%Y-%m-%d %H:%M:%S", localtime($hash{$start}[0]));  
  48.         my $car_stop_time = strftime("%Y-%m-%d %H:%M:%S", localtime($hash{$start}[-1]));  
  49.         push @arr, "$start\t$car_start_time $car_stop_time $stop_time\t$car_money\n";  
  50.         delete $count{$start}; #删除 出库车辆  
  51.         delete $hash{$start};  
  52.         redo;  #继续等待用户输入  
  53.     }else{  
  54.         redo;  
  55.     }  
  56. }  

结果:










本文转自 mcshell 51CTO博客,原文链接:http://blog.51cto.com/mcshell/1151580,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
程序员 测试技术
|
6月前
|
数据可视化 定位技术
用数据告诉你出租车资源配置是否合理
用数据告诉你出租车资源配置是否合理
计量相关的行业知识
计量相关的行业知识
59 0
|
算法 物联网 调度
基于自营配送模式的车辆路径规划设计与实现_kaic
近年来,随着我国消费水平逐渐提升,消费者在网上购物的频率也越来越高,电商发展速度迅猛,加大了物流配送的压力,促使物流企业以更大的运力,更短的时间将货物送达。在货品的运输过程中,成本居高不下,配送周期长等一系列问题时有发生。类似的短板现象严重影响 B2C 模式的稳定性,本文通过对比自营物流配送模式与其他物流配送模式,提出了自营物流配送模式的明显优势,经过文献资料查阅以及调研分析,归纳了现实存在的问题:比如自营物流配送服务制度不完善、自营物流配送路线模式不合理、人才整体素质有待提高、车辆调度系统相对落后等。本文针对其中主要的问题,并对相关问题成因进行了分析,针对一家北京城区经营生鲜成本的自营配.
|
人工智能 边缘计算 缓存
高速公路计费新场景:5G加速,智慧筑路
高速公路计费新场景:5G加速,智慧筑路
|
前端开发 JavaScript 关系型数据库
基于SSM的停车位收费系统
该系统基于SSM整合,采用Mysql数据库,选题新颖,页面美观,数据库表结构适量,具有完整的业务逻辑,含参考paper,适合作为毕业设计、课程设计、数据库大作业。系统主要分为2个角色,分别为用户和管理员。
基于SSM的停车位收费系统
|
人工智能 达摩院 自然语言处理
“喊一嗓子”就能买票!北京机场地铁全线开通语音购票
从首都机场到北京市区,你是否遇到过不知道该怎么坐地铁买票换乘的问题? 如今,语音AI来了,“喊一嗓子”就能快速购票进站!
283 0
“喊一嗓子”就能买票!北京机场地铁全线开通语音购票
|
存储 数据库
4.4.4 “锦途网”旅游平台为了促销,拟将住宿标准为二星级线路的住宿费按天减免 30 元,要求更新这些线路的价格
4.4.4 “锦途网”旅游平台为了促销,拟将住宿标准为二星级线路的住宿费按天减免 30 元,要求更新这些线路的价格
70 0
|
搜索推荐 物联网 芯片
应用速递 | 智能功率计量五孔插座方案
应用速递栏目:应用速递是面向IoT厂商推荐芯片开放社区(OCC)上的典型应用案例,便于IoT厂商精准获取方案,快速实现产品落地。
178 0
应用速递 | 智能功率计量五孔插座方案
|
算法 前端开发 定位技术
阿里云知位停车 让车主好停、车场好管
知位停车,无人值守,云上知位 !
923 0
阿里云知位停车 让车主好停、车场好管