邮费计算

 

问题

某 B2C 网站需要计算订单的邮寄费用,大部分情况下,邮费有包裹的总重量决定,但是,当订单的价格超过 300 美元时,提供免费付运。详细规则如下面的 mailCharge 表所示:

field minVal maxVal Charge
cost 300 1000000 0
weight 0 1 10
weight 1 5 20
weight 5 10 25
weight 10 1000000 40

该表记录了各个字段在各种取值范围内时的邮费。例如,第一条记录表示,cost 字段取值在 300 与 1000000 之间的时候,邮费为 0(免费付运);第二条记录表示,weight 字段取值在 0 到 1(kg)之间时,邮费为 10(美元)。

下面是该网站的一些订单:

id cost weight(kg)
Josh1 150 6
Drake 100 3
Megan 100 1
Josh2 200 3
Josh3 500 1

请计算这些订单的详细邮费。

思路

大致思路:分别找出资费记录中 filed 字段为 cost 和 weight 的记录,再对着整个订单记录进行循环。先判断订单记录中的 cost 值是否满足免费标准,不满足则根据重量判断邮费档次。

代码

A B C D
1 =file("C:\\txt\\mailCharge.txt").import@t() / 读邮费表
2 =file("C:\\txt\\testOrder.txt").import@t() / 读订单表
3 =A1.select(FIELD=="COST") / 读取免费记录
4 =A1.select(FIELD=="WEIGHT").sort(-MINVAL) / 读取按重量计费记录
5 =A2.derive(POSTAGE) / 给订单表增加邮费记录
6 for A5
7 if A3.MINVAL < A6.COST / 当订单价格超过免费标准时
8 >A6. POSTAGE= A3.CHARGE / 免费付运
9 next
10 for A4
11 if A6.WEIGHT > B10.MINVAL / 根据重量判断邮费档次
12 >A6. POSTAGE= B10.CHARGE
13 next A6

结果

imagepng