题目:
一条公交路线共30站,乘客上车需支付1元,之后每超过5站支付0.5元;最好可以实现“余额不足的提醒”和“逃票,漏刷卡的显示”。
注意:需下载bc计算器
第一种方法(重复语句太多):
1 #!/bin/bash 2 read -p "请输入您的公交卡金额:" money 3 if [ -z "$money" ] || [ "$money" -lt 1 ];then 4 echo "您的余额不足,请尽快充值!" 5 exit 6 else 7 read -p "请输入您的上车站号:" on 8 if [ -z "$on" ];then 9 echo "您有未刷卡记录" 10 elif [ "$on" -gt 30 ] || [ "$on" -le 0 ];then 11 echo "请输入正确的车站号!" 12 exit 13 fi 14 read -p "请输入您的下车站号:" off 15 if [ -z "$off" ];then 16 echo "您有未刷卡记录" 17 elif [ "$off" -le 0 ] || [ "$off" -gt 30 ];then 18 echo "请输入正确的车站号!" 19 exit 20 fi 21 if [ -z "$on" ] && [ -z "$off" ];then 22 echo "您已逃票一次,下次请自觉刷卡" 23 exit 24 elif [ -z "$on" ] || [ -z "$off" ];then 25 spe=3.5 26 bal=`echo "$money-$spe" |bc` 27 echo "您上车或者下车有未刷卡记录,将会扣除您全程车费$spe元,你的余额还剩$bal元!" 28 exit 29 fi 30 beg=1 31 if [ "$on" -le "$off" ];then 32 dif=`echo "$off-$on" |bc` 33 else 34 dif=`echo "$on-$off" |bc` 35 fi 36 if [ "$dif" -le "5" ];then 37 spe="$beg" 38 bal=`echo "$money-$spe" |bc` 39 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元" 40 elif [ "$dif" -gt 5 ] && [ "$dif" -le 10 ];then 41 spe=`echo "scale=1;$beg+0.5" |bc` 42 bal=`echo "$money-$spe" |bc` 43 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元" 44 echo "$bal" 45 elif [ "$dif" -gt 10 ] && [ "$dif" -le 15 ];then 46 spe=`echo "scale=1;$beg+1" |bc` 47 bal=`echo "$money-$spe" |bc` 48 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元" 49 elif [ "$dif" -gt 15 ] && [ "$dif" -le 20 ];then 50 spe=`echo "scale=1;$beg+1.5" |bc` 51 bal=`echo "$money-$spe" |bc` 52 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元" 53 elif [ "$dif" -gt 20 ] && [ "$dif" -le 25 ];then 54 spe=`echo "scale=1;$beg+2" |bc` 55 bal=`echo "$money-$spe" |bc` 56 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元" 57 else 58 spe=`echo "scale=1;$beg+2.5" |bc` 59 bal=`echo "$money-$spe" |bc` 60 echo "您共坐了"$dif"站;花费了"$spe"元;您的余额还有"$bal"元" 61 fi 62 fi
第二种方法(简化计算过程):
1 #!/bin/bash 2 #公交卡金额 3 read -p "请输入您的公交卡金额:" MON 4 #判断公交卡里是否金额足够 5 if [ -z $MON ] || [ $MON -lt 1 ];then 6 echo "您的公交卡余额不足,请尽快充值!" 7 exit 8 fi 9 #上下车站号 10 read -p "请输入您的上车车站号:" GON 11 read -p "请输入您的下车车站号:" GOF 12 #判断是否有逃票 13 if [ -z $GON ] && [ -z $GOF ];then 14 echo "您已经有逃票记录了,请注意你的信用值!" 15 exit 16 elif [ -z $GON ] || [ -z $GOF ];then 17 BAL=`echo "$MON-3.5" |bc` 18 echo "您有漏刷卡记录,将扣除您全程车票,您的公交卡余额还剩$BAL元!" 19 exit 20 fi 21 NUM=`echo "$GOF-$GON" |bc` 22 COS=`echo "($NUM-1)/5*0.5+1" |bc` 23 BAL=`echo "$MON-$COS" |bc` 24 echo "您一共乘坐了$NUM站,花费了$COS元,您的公交卡还剩$BAL元!"