设计模式课设之蛋糕店结账子程序.docx
- 文档编号:27562759
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:54
- 大小:159.12KB
设计模式课设之蛋糕店结账子程序.docx
《设计模式课设之蛋糕店结账子程序.docx》由会员分享,可在线阅读,更多相关《设计模式课设之蛋糕店结账子程序.docx(54页珍藏版)》请在冰豆网上搜索。
设计模式课设之蛋糕店结账子程序
设计模式课设之蛋糕店结账子系统
系统说明:
本系统采用eclipse开发,IDEA,eclipse,myeclipse均可运行(书生)
界面采用swing实现
设计模式使用:
策略模式、工厂模式、装饰模式
项目说明:
简单模拟蛋糕店结账程序,某店面目前卖奶油蛋糕,蛋糕有三种,芝士蛋糕、慕斯蛋糕和奶油蛋糕,每种蛋糕有3种大小6寸,8寸,12寸,然后加入的配料,配料单独收费。
蛋糕的包装风格必须一致。
该店面为不同类型的用户提供不同的打折方式,具体打折方案如下:
(1)年龄在10周岁及以下的儿童可享受5折的优惠(原始价格需大于等于100元);
(2)VIP用户除享受8折优惠
该店面在将来可能还要根据需要引入新的蛋糕品种,新的打折方式,新的配料。
编程模拟实现。
项目结构图:
Uml图:
项目运行图:
完整代码如下:
package打折;
publicinterface打折{
publicdouble打折price();
}
打折包下的打折类:
package打折;
publicclass儿童implements打折{
publicdouble打折price(){
return0.9;
}
}
儿童类:
Vip类:
package打折;
publicclassvipimplements打折{
publicdouble打折price(){
return0.8;
}
}
package界面;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.*;
importjavax.swing.JOptionPane;
importcake类别.*;
import打折.*;
importcake工厂.*;
publicclassviewextendsFrameimplementsActionListener,KeyListener,FocusListener{
Buttonb1=newButton("购买");
Buttonb2=newButton("选择");
Buttonb3=newButton("清空");
Buttonb4=newButton("退出");
Labell=newLabel("卖蛋糕管理系统");
Labell1=newLabel("蛋糕类型");
Labell2=newLabel("配料种类");
Labell3=newLabel("蛋糕订单如下:
");
Labell4=newLabel("折扣类型");
Labell5=newLabel("(*必选)");
Labell6=newLabel("(*vip可以8折优惠,儿童购买金额大于或者等于200可以9折优惠!
)");
界面包下的view类:
String[]cakeType={"6.8寸的慕斯蛋糕(¥100)","10寸的慕斯蛋糕(¥150)","12寸的慕斯蛋糕(¥200)","6.8寸奶油蛋糕(¥110)","10寸奶油蛋糕(¥160)",
"12寸奶油蛋糕(¥210)","6.8寸芝士蛋糕(¥120)","10寸芝士蛋糕(¥170)","12寸芝士蛋糕(¥220)"};
Choicecake=newChoice();
Checkbox水果=newCheckbox("水果(¥30)");
Checkbox巧克力=newCheckbox("巧克力(¥40)");
Checkboxvip=newCheckbox("VIP");
Checkbox儿童=newCheckbox("儿童");
Checkbox普通顾客=newCheckbox("普通顾客");
CheckboxGroupdiscount=newCheckboxGroup();
TextAreat=newTextArea();
publicview(Stringtitle){
super(title);
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
this.setSize(400,500);
this.setLayout(null);
l.setBounds(150,50,100,20);
l1.setBounds(50,100,50,20);
cake.setBounds(120,100,150,20);
l2.setBounds(50,150,50,20);
水果.setBounds(120,150,90,20);
巧克力.setBounds(220,150,100,20);
l4.setBounds(50,200,50,20);
vip.setBounds(120,200,50,20);
儿童.setBounds(180,200,50,20);
普通顾客.setBounds(240,200,70,20);
l5.setBounds(310,200,50,25);
l5.setForeground(Color.red);
l3.setBounds(50,240,80,50);
t.setBounds(50,290,300,100);
b1.setBounds(50,400,60,30);
b2.setBounds(120,400,60,30);
b3.setBounds(190,400,60,30);
b4.setBounds(260,400,60,30);
l6.setBounds(20,450,350,30);vip.setCheckboxGroup(discount);
儿童.setCheckboxGroup(discount);
普通顾客.setCheckboxGroup(discount);
for(inti=0;i cake.add(cakeType[i]); } vip.setCheckboxGroup(discount); 儿童.setCheckboxGroup(discount); 普通顾客.setCheckboxGroup(discount); for(inti=0;i cake.add(cakeType[i]); } this.add(l); this.add(l1); this.add(cake); this.add(l2); this.add(水果); this.add(巧克力); this.add(l4); this.add(vip); this.add(儿童); this.add(普通顾客); this.add(l5); this.add(l6); this.add(l3); this.add(t); this.add(b1); this.add(b2); this.add(b3); this.add(b4); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); } publicvoidfocusGained(FocusEvente){ } publicvoidfocusLost(FocusEvente){ } publicvoidkeyTyped(KeyEvente){ } publicvoidkeyPressed(KeyEvente){ } publicvoidkeyReleased(KeyEvente){ } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==b1){ Stringa,s,s1,s2,s4; a=cake.getSelectedItem(); s1=水果.getState()? 水果.getLabel(): ""; s2=巧克力.getState()? 巧克力.getLabel(): ""; s=discount.getSelectedCheckbox().getLabel(); if(a.equals("6.8寸的慕斯蛋糕(¥100)")){ Factorymusi=new幕斯cake工厂(); cakemusi1=musi.create("A"); if(s1.equals("水果(¥30)")&&s2.equals("")){ cakemusi2=new水果(musi1); doublemoney=musi2.cost(); if(s.equals("VIP")){ 打折count=newvip(); doublemoney1=money*count.打折price(); //Object[]options={"付款","取消"}; JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"Vip折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money>=200){ 打折count=new儿童(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"儿童折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money<200){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); }elseif(s.equals("普通顾客")){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); } }elseif(s1.equals("")&&s2.equals("巧克力(¥40)")){ cakemusi2=new巧克力(musi1); doublemoney=musi2.cost(); if(s.equals("VIP")){ 打折count=newvip(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "购买成功"+"\n"+"你的订单总金额为: "+money+"元"+"\n"+"Vip折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money>=200){ 打折count=new儿童(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"儿童折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money<200){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); }elseif(s.equals("普通顾客")){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); } }elseif(s1.equals("水果(¥30)")&&s2.equals("巧克力(¥40)")){ cakemusi2=new水果(musi1); cakemusi3=new巧克力(musi2); doublemoney=musi3.cost(); if(s.equals("VIP")){ 打折count=newvip(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"Vip折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money>=200){ 打折count=new儿童(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"儿童折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money<200){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); }elseif(s.equals("普通顾客")){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); } }elseif(s1.equals("")&&s2.equals("")){ cakemusi2=(musi1); doublemoney=musi2.cost(); if(s.equals("VIP")){ 打折count=newvip(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"Vip折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money>=200){ 打折count=new儿童(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"儿童折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money<200){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); }elseif(s.equals("普通顾客")){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); } } }elseif(a.equals("10寸的慕斯蛋糕(¥150)")){ Factorymusi=new幕斯cake工厂(); cakemusi1=musi.create("B"); if(s1.equals("水果(¥30)")&&s2.equals("")){ cakemusi2=new水果(musi1); doublemoney=musi2.cost(); if(s.equals("VIP")){ 打折count=newvip(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"Vip折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money>=200){ 打折count=new儿童(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"儿童折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money<200){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); }elseif(s.equals("普通顾客")){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); } }elseif(s1.equals("")&&s2.equals("巧克力(¥40)")){ cakemusi2=new巧克力(musi1); doublemoney=musi2.cost(); if(s.equals("VIP")){ 打折count=newvip(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"Vip折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money>=200){ 打折count=new儿童(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"儿童折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money<200){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); }elseif(s.equals("普通顾客")){ JOptionPane.showMessageDialog(null,"你的订单总金额为: "+money+"元"); } }elseif(s1.equals("水果(¥30)")&&s2.equals("巧克力(¥40)")){ cakemusi2=new水果(musi1); cakemusi3=new巧克力(musi2); doublemoney=musi3.cost(); if(s.equals("VIP")){ 打折count=newvip(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"Vip折后价为: "+money1+"元"); }elseif(s.equals("儿童")&&money>=200){ 打折count=new儿童(); doublemoney1=money*count.打折price(); JOptionPane.showMessageDialog(null, "你的订单总金额为: "+money+"元"+"\n"+"儿
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 蛋糕店 结账 子程序
![提示](https://static.bdocx.com/images/bang_tan.gif)