学习java中的类图

编程入门 行业动态 更新时间:2024-10-09 06:24:24

学习<a href=https://www.elefans.com/category/jswz/34/1770091.html style=java中的类图"/>

学习java中的类图

一.问题描述
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
二.类图





三.代码
1.AbstractFood

public  abstract class AbstractFood {//类别protected String kind;//数量protected int num;//价格protected float price;//合计public float totalPrice(){return this.num*this.price;}
}

2.Food

public interface Food {//打印输出食物信息String printMessage();
}

3.Factory

public interface Factory {public interface  factory{//生产汉堡public Hamburger createHamburger(int num);//生产鸡肉类食物public Chicken createChicken(int num);//生产甜点public Dessert createDessert(int num);//生产饮品public Drinks createDrinks(int num);}public Hamburger createZingerBurger(int num);public Hamburger createBeefBurger(int num);public Hamburger createOrleansBurger(int num);public Hamburger createShrimpBurger(int num);public Chicken createDrumStick(int num);public Chicken createChickenWings(int num);public Chicken createPopcornChicken(int num);public Dessert createChips(int num);public Dessert createEggTart(int num);public Dessert createSundae(int num);public Drinks createMilky(int num);public Drinks createKola(int num);public Drinks createCoffee(int num);public Combo createOneCombo(int num);public Combo createTwoCombo(int num);public Combo createThreeCombo(int num);}

4.KFCFactory

//具体工厂
public class KFCFactory implements Factory {//生产香辣鸡腿堡public ZingerBurger createZingerBurger(int num){return new ZingerBurger(num);}//生产超级牛肉堡public BeefBurger createBeefBurger(int num){return new BeefBurger(num);}//生产奥尔良烤鸡腿堡public OrleansBurger createOrleansBurger(int num){return new OrleansBurger(num);}//生产全虾堡public ShrimpBurger createShrimpBurger(int num){return new ShrimpBurger(num);}//生产奥尔良鸡翅public ChickenWings createChickenWings(int num){return new ChickenWings(num);}//生产烤鸡腿public DrumStick createDrumStick(int num){return new DrumStick(num);}//生产鸡米花public PopcornChicken createPopcornChicken(int num){return new PopcornChicken(num);}//生产薯条public Chips createChips(int num){return new Chips(num);}//生产蛋挞public EggTart createEggTart(int num){return new EggTart(num);}//生产圣代public Sundae createSundae(int num){return new Sundae(num);}//生产奶茶public Milky createMilky(int num){return new Milky(num);}//生产可乐public Kola createKola(int num){return new Kola(num);}//生产咖啡public Coffee createCoffee(int num){return new Coffee(num);}//生产单人套餐public OneCombo createOneCombo(int num){return new OneCombo(num);}//生产双人套餐public TwoCombo createTwoCombo(int num){return new TwoCombo(num);}//生产三人套餐public ThreeCombo createThreeCombo(int num){return new ThreeCombo(num);}
}

5.Hamburger

//汉堡类
public abstract class Hamburger extends AbstractFood implements Food{public String printMessage(){return("--"+this.kind+"  单价:"+this.price+"  数量:"+this.num+"  合计:"+this.totalPrice());}
}

6.Chicken

//鸡肉类
public abstract class Chicken extends AbstractFood implements Food {public String printMessage(){return("--"+this.kind+"  单价:"+this.price+"  数量:"+this.num+"  合计:"+this.totalPrice());}
}

7.Combo

//套餐
public abstract class Combo extends AbstractFood implements Food {public String printMessage(){return("--"+this.kind+"  单价:"+this.price+"  数量:"+this.num+"  合计:"+this.totalPrice());}
}

8.BeefBurger

//超级牛肉堡
public class BeefBurger extends Hamburger {public BeefBurger(int num){this.kind="超级牛肉堡";this.price=17f;this.num=num;}
}

9.ChickenWings

//奥尔良烤翅
public class ChickenWings extends Chicken {public ChickenWings(int num){this.kind="奥尔良烤翅";this.price=6f;this.num=num;}
}

10.EggTart

//蛋挞
public class EggTart extends Dessert {public EggTart(int num){this.kind="蛋挞";this.price=6f;this.num=num;}
}

11.ThreeCombo

//三人套餐
public class ThreeCombo extends Combo {public ThreeCombo(int num){this.kind="三人套餐";this.price=109f;this.num=num;}
}

12.Quest

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.*;
import java.util.Scanner;
import 程序设计方法与优化.肯德基点餐系统.Customer;
public class Quest {public static void main(String[] args) {try{Factory factory = new KFCFactory();Customer customer = new Customer(factory);//创建输出流对象FileWriter file = new FileWriter("E:\\大二下\\程序设计优化\\肯德基点餐系统\\Information.txt");//字符缓冲输出流BufferedWriter bw = new BufferedWriter(file);float ZingerBurger = 0;float OrleansBurger = 0;float BeefBurger = 0;float ShrimpBurger = 0;float ChickenWings = 0;float DrumStick = 0;float PopcornChicken = 0;float Chips = 0;float EggTart = 0;float Sundae = 0;float Kola = 0;float Milky = 0;float Coffee = 0;float OneCombo = 0;float TwoCombo = 0;float ThreeCombo = 0;Scanner input = new Scanner(System.in);bw.write("-------------------------------欢迎光临肯德基店----------------------------------");bw.newLine();bw.write("*******************************菜单******************************************");bw.newLine();bw.write("========================汉堡类:===================");bw.newLine();bw.write("----1.香辣鸡腿堡-----------------------------15.0元");bw.newLine();bw.write( "----2.奥尔良烤鸡腿堡------------------------17.0元");bw.newLine();bw.write("----3.超级牛肉堡-----------------------------17.0元");bw.newLine();bw.write( "----4.全虾堡---------------------------------17.0元");bw.newLine();bw.write("========================鸡肉类:===================");bw.newLine();bw.write("----5.奥尔良烤翅------------------------------6.0元");bw.newLine();bw.write("----6.烤鸡腿----------------------------------12.0元");bw.newLine();bw.write( "----7.鸡米花--------------------------------11.0元");bw.newLine();bw.write("========================甜点类:===================");bw.newLine();bw.write("----8.薯条------------------------------------8.0元");bw.newLine();bw.write("----9.蛋挞------------------------------------4.0元");bw.newLine();bw.write("----10.圣代-----------------------------------6.0元");bw.newLine();bw.write("========================饮品类:===================");bw.newLine();bw.write("----11.可乐-----------------------------------6.0元");bw.newLine();bw.write("----12.奶茶-----------------------------------6.0元");bw.newLine();bw.write("----13.咖啡----------------------------------12.0元");bw.newLine();bw.write("========================套餐类:===================");bw.newLine();bw.write("----14.单人套餐------------------------------33.0元");bw.newLine();bw.write(" 1个香辣鸡腿堡+1个烤鸡腿+1包薯条+1杯可乐/奶茶(任点)     ");bw.newLine();bw.write("----15.双人套餐-------------------------------54.0元");bw.newLine();bw.write(" 1个香辣鸡腿堡+1个奥尔良烤鸡腿堡/超级牛肉堡/全虾堡(任点)");bw.newLine();bw.write( " 1对奥尔良鸡翅+2个蛋挞+2杯可乐/奶茶(任点)"            );bw.newLine();bw.write("----16.三人套餐------------------------------109.0元");bw.newLine();bw.write(" 3个奥尔良烤鸡腿堡/超级牛肉堡/全虾堡(任点)          ");bw.newLine();bw.write( " 1对奥尔良鸡翅+1个烤鸡腿+1包鸡米花"                  );bw.newLine();bw.write( " 1包薯条+2杯圣代+2杯可乐/奶茶(任点)+1杯咖啡"    );bw.newLine();bw.write("***********************************************************************************");bw.newLine();System.out.println("请选择序号点餐:");int a = input.nextInt();System.out.println("请选择数量:");int b = input.nextInt();switch (a) {case 1://香辣鸡腿堡ZingerBurger = customer.orderZingerBurger(b);break;case 2://奥尔良烤鸡腿堡OrleansBurger = customer.orderOrleansBurger(b);break;case 3://超级牛肉煲BeefBurger = customer.orderBeefBurger(b);break;case 4://全虾堡ShrimpBurger = customer.orderShrimpBurger(b);break;case 5://奥尔良烤鸡翅ChickenWings = customer.orderChickenWings(b);break;case 6://烤鸡腿DrumStick = customer.orderDrumStick(b);break;case 7://鸡米花PopcornChicken = customer.orderPopcornChicken(b);break;case 8://薯条Chips = customer.orderChips(b);break;case 9://蛋挞EggTart = customer.orderEggTart(b);break;case 10://圣代Sundae = customer.orderSundae(b);break;case 11://可乐Kola = customer.orderKola(b);break;case 12://奶茶Milky = customer.orderMilky(b);break;case 13://咖啡Coffee = customer.orderCoffee(b);break;case 14://单人套餐OneCombo = customer.orderOneCombo(b);break;case 15://双人套餐TwoCombo = customer.orderTwoCombo(b);break;case 16://三人套餐ThreeCombo = customer.orderThreeCombo(b);break;}System.out.println("请选择是否继续点餐?1:是   2:否");int c = input.nextInt();float money1 = ZingerBurger + OrleansBurger + BeefBurger + ShrimpBurger;float money2 = ChickenWings + DrumStick + PopcornChicken;float money3 = Chips + EggTart + Sundae;float money4 = Kola + Milky + Coffee;float money5 = OneCombo + TwoCombo + ThreeCombo;float money = money1 + money2 + money3 + money4 + money5;System.out.println("您的本次账单为:" + money);System.out.println("请问您是否具有优惠券?1:是 2:否");int m = input.nextInt();double d = 0;if (m == 1) {System.out.println("请输入优惠券金额:");d=input.nextDouble();}System.out.println("您的支付金额为:");double f = input.nextDouble();double changes = f - money + d;System.out.println("找零:" + changes);/* if (c != 1) {break;}*/bw.write("######################账单如下#########################");bw.newLine();bw.write("您的餐品为:");bw.newLine();bw.write("您本次餐品总计:"+money+"元");bw.newLine();bw.write("您此次优惠券金额为:"+d+"元");bw.newLine();bw.write("您的实付金额为:"+f+"元");bw.newLine();bw.write("找零:"+changes+"元");bw.newLine();bw.write("                   欢迎下次光临!                      ");bw.flush();bw.close();}catch (FileNotFoundException e){e.printStackTrace();}catch (IOException e){e.printStackTrace();}}
}

这里我只列举了部分代码,其他部分与其类似。
四.调试


五.测试
1.菜单

2.小票

六.总结
首先,我创建了一个类AbstractFactory:在这个类里面实现各种食品的数量、类别、单价、总价。其次是Food接口:在这个接口里面打印食品信息。在接口Factory工厂里面实现各个食品的生产,同时也包括食品下的各个类别的生产。然后有各个实现接口Food的食品类:Hamburger,Chicken,Dessert,Drinks,Combo这些。KFCFactory类实现接口Factory里具体食品的生产数量。
然后下面就是具体的食品类:
Hamburger类下面有四个子类:ZungerBurger,BeefBurger,OrleanBurger,ShrimpBurger;
Chicken类下面有三个子类:ChickenWings,DrumStick,PopcornChicken
Dessert下面有三个子类:Chips,EggTart,Sundae
Drinks下面有三个子类:Kola,Milky,Coffee
Combo下面有三个子类:OneCombo,TwoCombo,ThreeCombo
用到的关系模式有:继承,接口,聚合。
通过这个程序,能够更好地理解简单工厂模式,工厂方法模式以及抽象工厂。

更多推荐

学习java中的类图

本文发布于:2024-02-13 07:44:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757932.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!