• shell基础之bus实战(if 练习)


    题目:

      一条公交路线共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元!"
  • 相关阅读:
    C#生成安装文件后自动附加数据库的思路跟算法
    c#压缩和解压缩文件
    如何远程备份sql server数据库
    计算一年中的第几周/c#得到阳历对应农历日期
    C·处理数据库备份
    字符串提取替换后再替换回去 和 函数将数字转换中文数字
    Visual C#的Excel编程
    数据库备份和恢复
    blog
    请问谁知道DOTMSN中打开聊天对话框的方法是什么?
  • 原文地址:https://www.cnblogs.com/renyz/p/11295059.html
Copyright © 2020-2023  润新知