商场收银改进C#版--融合了工厂和策略设计模式

其实,我自己开始没看书也作了整合。

可以运行,但代码奇丑无比。又不精简。

看了书之后,慢慢领略高手的思想吧。

主要还是对类,对象,实例,多态之类的不太熟悉。

有信心慢慢练习中。。。

 1     double total = 0.0d;
 2         private void MainFormLoad(object sender, EventArgs e)
 3         {
 4             cbxType.Items.AddRange(new object[] {"正常收费","满300返100","打8折"});
 5             cbxType.SelectedIndex = 0;
 6         }
 7
 8         void Button1Click(object sender, System.EventArgs e)
 9         {
10             CashContext cc = new CashContext(cbxType.SelectedItem.ToString());
11             double totalPrices = 0d;
12             totalPrices = cc.GetResult(Convert.ToDouble(txtPrice.Text)
13                                             * Convert.ToDouble(txtNum.Text));
14             total = total + totalPrices;
15             lbxList.Items.Add("单价: " + txtPrice.Text + "   数量: " + txtNum.Text +  " "
16                               + cbxType.SelectedItem + "   合计: " + totalPrices.ToString());
17             lblResult.Text = total.ToString();
18         }
19
20         void Button2Click(object sender, EventArgs e)
21         {
22             txtPrice.Text = Convert.ToString(0.00);
23             txtNum.Text = Convert.ToString(0);
24             lblResult.Text = Convert.ToString(0.00);
25             lbxList.Items.Clear();
26             cbxType.SelectedIndex = 0;
27
28         }
29
30     }
31     abstract class CashSuper
32     {
33         public abstract double acceptCash(double money);
34     }
35     class CashNormal : CashSuper
36     {
37         public override double acceptCash(double money)
38         {
39             return money;
40         }
41     }
42     class CashRebate : CashSuper
43     {
44         private double moneyRebate = 1d;
45         public CashRebate(string moneyRebate)
46         {
47             this.moneyRebate = double.Parse(moneyRebate);
48         }
49         public override double acceptCash(double money)
50         {
51             return money * moneyRebate;
52         }
53     }
54     class CashReturn : CashSuper
55     {
56         private double moneyCondition = 0.0d;
57         private double moneyReturn = 0.0d;
58         public CashReturn(string moneyCondition, string moneyReturn)
59         {
60             this.moneyCondition = double.Parse(moneyCondition);
61             this.moneyReturn = double.Parse(moneyReturn);
62         }
63         public override double acceptCash(double money)
64         {
65             double result = money;
66             if(money >= moneyCondition)
67                 result = money - Math.Floor(money / moneyCondition) * moneyReturn;
68
69             return result;
70         }
71     }
72
73     class CashContext
74     {
75         CashSuper cs = null;
76
77         public  CashContext(string type)
78         {
79             switch (type)
80             {
81                 case "正常收费":
82                     CashNormal cs0= new CashNormal();
83                     cs = cs0;
84                     break;
85                 case "满300返100":
86                     CashReturn cr1 = new CashReturn("300", "100");
87                     cs = cr1;
88                     break;
89                 case "打8折":
90                     CashRebate cr2 = new CashRebate("0.8");
91                     cs = cr2;
92                     break;
93             }
94         }
95         public double GetResult(double money)
96         {
97             return cs.acceptCash(money);
98         }
99     }

输出:

时间: 2024-09-22 14:44:02

商场收银改进C#版--融合了工厂和策略设计模式的相关文章

推荐自己用的[商店管家收银管理系统专业版]

软件介绍: 商店管家收银管理系统是专门针对POS收银.商店店主设计开发,集商品进销存.帐目管理.客户 信息于一体的店主管理软件.功能实用,操作简单! 功能实用.集于一体 提供商店管理必备的商品进销存管理.客户信息管理.帐目管理.备忘录提醒等功能. 具备邮件发 送.快递单打印.帐目统计等辅助功能. 推荐自己用的[商店管家收银管理系统专业版] 功能特点: ---------------------------------------------------------- 1.收银界面友好美观,前台收

WF4.0实战(二):超市收银软件

今天翻到了伍迷前辈的大话设计模式中的<第二章 商场促销-策略模式>.我感觉用WF去实现,比较简单直观,我很喜欢做简单的事情 .故使用了伍迷前辈书中的两个主要人物小菜和大鸟,写下这篇博客. 时间:4月16日 地点:大鸟的房间 人物:大鸟.小菜 大鸟给小菜出了一个题目,做一个收银软件.小菜用WF4不到二十分钟写出了第一个版本,功能也非常的简单,如下: 定义一个ProductItem类和Order类,如下: 1 public class ProductItem 2 { 3 public decima

【原】我是超级收银员,你敢来挑战吗

微信在最新的iPhone版应用中运营刷卡功能,为了推广该功能,小组成员自主开发了简单的超级收银员小游戏.第一次写前端游戏,严重意识到js写少了,趁这次恶补下,毕竟还年轻,感觉老了脑袋不好使.今天给大家分享本次游戏的学习成果,有兴趣的同学先扫描二维码挑战. 目录: 游戏思路 游戏场景 核心代码   游戏思路 本人很喜欢玩游戏,也玩过不少小游戏,5月份的时候我接触了手游<刀塔传奇>,好玩.有趣味性,让自己又爱又恨投入了时间和金钱,享受其中的乐趣,相信"好玩"和"商业化

阿里巴巴旗下平台口碑推出无人收银技术,改造便利店市场;重庆法院运用 AI 探索“智能判案”

阿里巴巴旗下平台口碑推出无人收银技术,改造便利店市场 雷锋网消息 阿里巴巴旗下本地生活服务平台口碑今日宣布在上海新兴便利店品牌24鲜上线无人收银技术.消费者只要打开支付宝,扫一扫想要购买的商品的条形码,就可以自助提交订单完成支付.离开时只需向店员出示订单明细即可. 口碑自助结账项目负责人黄之均表示,当下热炒的无人零售概念几乎都聚焦在如何颠覆旧门店,再造新门店.而口碑着眼的是存量市场--国内上百万线下商超.便利店的改造."无人零售仍是未来,但零售数字化时代已然开启.我们在关注前沿科技的同时,也应该

C# 收银系统钱箱问题

问题描述 请教各位高手,小弟初学,要研究收银系统,现在有个问题要请教,如何用C#控制,打印收据后打开钱箱?如果有实例项目,可以的话,发给我qq:251204257谢谢~ 解决方案 解决方案二:这个很容易控制啊,,只要收据打印后就触发打开钱柜的方法就OK了解决方案三:在C#中使用PrintDialog可以很方便的实现程序的打印功能.其步骤如下:创建一个PrintDialog的实例.如下:System.Windows.Forms.PrintDialogPrintDialog1=newPrintDia

京城百货首现“电子开票+移动收银”

在岁末销售旺季,百货商场收银台前的长队已经成为不少消费者的"心理障碍".记者了解到,这一问题有望在商家的零售支付模式创新中得到缓解.昨日,京西高档百货当代商城宣布引入移动POS机收银模式,成为北京乃至国内百货行业首家变革支付模式的企业. 百货引入移动收银 一直以来,顾客在商场中选购完商品,先要由营业员开写小票,顾客拿着到收银台去交款,交完款后再回到专柜取货.今年1月1日开始,不少来当代商城购物的消费者反映,一种新的移动支付方式为他们省去了去收银台交款的时间和精力. 昨日,当代商城正式宣

【设计模式】【门面模式,收银-厨师-服务,用户就餐】

/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Da

用户体验设计:电子商务网站的收银系统设计

文章描述:一个步骤中嵌套另一个步骤的做法会让用户感觉迷茫和恐惧,因为它和用户完成付款时线性操作的心理模型不一致. 要点:一个步骤中嵌套另一个步骤的做法会让用户感觉迷茫和恐惧,因为它和用户完成付款时线性操作的心理模型不一致. 在这些网站中,沃尔玛和Zappos都是采用非线性的收银流程.两者都是在其付款流程中了嵌套另一个分支流程.比如,让用户在另一个页面中设置"首选送货地址"(沃尔玛)或"创建新账户"(Zappos), 然后再回到原来的页面继续付款.下面是沃尔玛的操作流

小财迷收银系统轻松解决会员管理难题

超市利用实行会员制来让顾客感受到优惠,依次来留住顾客增加回头客!但会员信息杂乱繁多管理困难!如何利用专业超市收银系统来解决会员管理难题呢? 现在的社会越来越发达,人们购物的途径也不再是以前那种计划经济体制下的拿米票.布票.肉票等,每个人每个月只能买到多少东西.只能用多少东西.现在的生活越来越好,人们也越来越自主,而老百姓也肯定会精打细算地生活.现在市场上的超市各种各样,数量.规模也越来越多.为了留住更多的顾客,很多店铺开始实行会员制.为什么呢? 就是因为拥有会员的顾客可以以更加优惠的价格入店消费