循邮费计算

阅读(1929) 标签: file, import, sort, derive, for, next,

l  问题

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字段取值在3001000000之间的时候,邮费为0(免费付运);第二条记录表示,weight字段取值在01kg)之间时,邮费为10(美元)。

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

id

cost

weight(kg)

Josh1

150

6

Drake

100

3

Megan

100

1

Josh2

200

3

Josh3

500

1

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

l  思路

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

l  代码

 

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

 

l  结果