超市系统中如何进行价格算法设计?

qufo 2009-12-07 06:07:41
超市里价格多变,一个货品假设进价是 20 , 标准零售价是 25 块。现在,超市需要对其进行促销。

1.如果整单买满500块,那么,这个货卖24块。
2.如果他是会员,那么卖24块。
3.如果他买3件商品C,那么,这个商品卖23.5元。
4.如果他买电器总额达到1200块,那么这个商品卖23.8.
5.如果他买电器总额达到5000块,那么这个商品卖20块。
6.....

各种各样乱78糟的打折方法,如何设计我们的算法才能让用户每次都能正确地设计他们的价格?

一条条写死的方法显然是不行的。还有更多更搞笑的打折方法。
...全文
254 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2009-12-08
  • 打赏
  • 举报
回复
规则可以通过脚本实现

哪个优先才是很关键的,
或者替客户着想,自动组合所有规则,找出最优惠的来执行
ahjoe 2009-12-08
  • 打赏
  • 举报
回复
超市里价格多变,一个货品假设进价是 20 , 标准零售价是 25 块。现在,超市需要对其进行促销。

1.如果整单买满500块,那么,这个货卖24块。

=======================

就买这个货,20件,请问多少钱?

apilove 2009-12-08
  • 打赏
  • 举报
回复
楼主说的规则太不适合操作了
根据一些大型联锁超市的经验,应该这样吧:
消费者先购物,然后凭小票来换购售价为25块的这个商品
如果他申请换购时,购物清单里已有这个25块的商品,则不再给予优惠

程序实现基本的优惠:如会员,满500元等等,其它的规则由消费者自行申请。
Harryfin 2009-12-08
  • 打赏
  • 举报
回复
同意3楼,不是很复杂就考虑策略模式吧。

如果要上升到引擎的话,学习
xeqtrl982 2009-12-08
  • 打赏
  • 举报
回复
例如优先级可以是那个规则优先级高先执行,也可以是哪个规则对客户更合适执行,还是......
您说是这个关键还是一个使用户可以定制复杂多变的促销规则复杂呢?
xeqtrl982 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sz_haitao 的回复:]
规则可以通过脚本实现

哪个优先才是很关键的,
或者替客户着想,自动组合所有规则,找出最优惠的来执行
[/Quote]
大哥,做过这个没?
优先级是规则的一个属性,重要的是设计一个规则引擎!
gaibianyiqie 2009-12-08
  • 打赏
  • 举报
回复
还有二次操作肯定是要的
gaibianyiqie 2009-12-08
  • 打赏
  • 举报
回复
用到if语句和for循环语句就能解决了
liangpei2008 2009-12-08
  • 打赏
  • 举报
回复
强哥说的有道理,如果那样的话,商家亏死了:)
qufo 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ahjoe 的回复:]
超市里价格多变,一个货品假设进价是 20 , 标准零售价是 25 块。现在,超市需要对其进行促销。

1.如果整单买满500块,那么,这个货卖24块。

=======================

就买这个货,20件,请问多少钱?


[/Quote]

24*20=4800 块。

这里面没有悖论。
qufo 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sz_haitao 的回复:]
规则可以通过脚本实现

哪个优先才是很关键的,
或者替客户着想,自动组合所有规则,找出最优惠的来执行
[/Quote]

脚本是不是错的选择。
qufo 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xeqtrl982 的回复:]
都在扯淡!太搞笑了,LZ还没搞清楚需求,就讨论什么策略模式!
复杂多变的价格机制本来就是销售系统的核心!
下载一个小型的会员积分系统看一下规则设置就清楚了!
每个级别的会员都有其相应的积分规则与销售策略!
总体来说,就是根据订单价格来对单个产品进行打折扣!
1.指定价格,整个订单满多少元,为某产品指定为多少元
2.百分比,整个订单满多少元,为某产品打百分比折扣
3.免运费,整个订单满多少元,免某产品运费
....
自己总结吧!
注意在设计表结构时为退换货做准备!
....


Delphi(Pascal) codeprocedure OrderTotalcalc;begin
calcItemsprice();
calcShippingPrice();
calcTaxPrice();
calcPromotionsPrice();//加这个过程用于计算促销价格end;procedure calcPromotionsPrice()beginif order.getorderlist.totalamount>333then ...end;

[/Quote]


我很知道这个calcPromotionsPrice的详情,如果能有这个的完整代码我就放心了。

liangpei2008 2009-12-08
  • 打赏
  • 举报
回复
在设计这个规则时, 肯定要限制购买相关产品的购买数量与消费金额的上限与下限的
dinoalex 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qufo 的回复:]
手输价,你不怕你的收银员把这东西按2块卖掉?
[/Quote]

那是收银的问题
xeqtrl982 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hemiya 的回复:]
打折规则太乱
要是同时满足2个以上的打折要求呢?
[/Quote]
这些一般都会有优先级的,算完一个就退了
xeqtrl982 2009-12-07
  • 打赏
  • 举报
回复
都在扯淡!太搞笑了,LZ还没搞清楚需求,就讨论什么策略模式!
复杂多变的价格机制本来就是销售系统的核心!
下载一个小型的会员积分系统看一下规则设置就清楚了!
每个级别的会员都有其相应的积分规则与销售策略!
总体来说,就是根据订单价格来对单个产品进行打折扣!
1.指定价格,整个订单满多少元,为某产品指定为多少元
2.百分比,整个订单满多少元,为某产品打百分比折扣
3.免运费,整个订单满多少元,免某产品运费
....
自己总结吧!
注意在设计表结构时为退换货做准备!

procedure OrderTotalcalc;
begin
calcItemsprice();
calcShippingPrice();
calcTaxPrice();
calcPromotionsPrice();//加这个过程用于计算促销价格
end;
procedure calcPromotionsPrice()
begin
if order.getorderlist.totalamount>333 then ...
end;

贝隆 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dinoalex 的回复:]
建议一个标价,一个会员价,一个手输价.
[/Quote]

有道理
hemiya 2009-12-07
  • 打赏
  • 举报
回复
打折规则太乱
要是同时满足2个以上的打折要求呢?
qufo 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chhrsas 的回复:]
建议你用策略模式来进行实现。
[/Quote]

这个“策略”如何做呢?这才是问题的关键。
chhrsas 2009-12-07
  • 打赏
  • 举报
回复
建议你用策略模式来进行实现。
加载更多回复(2)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧