C++金拱门点餐结算系统_餐厅点单结算系统

本文介绍了一款使用C++编程实现的金拱门点餐结算系统,涵盖了面向对象设计、菜单系统、顾客点餐与结算、管理员功能以及订单数据的外部存储。虽然目前功能仍有待完善,但提供了基础的点餐流程和管理员权限管理。
摘要由CSDN通过智能技术生成

C++金拱门点餐结算系统

题目:
金拱门快餐店主要出售汉堡、小吃、饮料和甜品等类型的快餐食品,每种类型的食品有不同的产品,例如饮料类食品有可乐、咖啡、茶饮料等。现在让你担任吉珠金拱门连锁门店的经理,负责销售产品的选定和套餐的设计,你需要使用C/C++的console模式开发一个软件,包含所有销售产品的信息(包括单品和套餐信息),通过一个菜单系统实现顾客的点餐和结算过程,通过管理员权限统计当前结算周期的销售信息(如各产品的销售量、销售额等)
功能需求:

  1. 根据面向对象的设计思想,设计一个抽象类作为基类,封装所有具体产品的共有属性和运算。根据你的产品列表,从基类派生出各具体类,包括单品和套餐产品。
  2. 设计一个菜单类,应该包含但不限定下述多层菜单选项
    i.顾客点餐子菜单:商品列表,顾客可一次购买多种产品
    ii.结算子菜单:顾客点餐完毕自动转入结算界面,现实顾客点餐内容及总金额。要求可以返回点餐菜单进行修改。
    iii.管理员子菜单:密码管理,退出系统。
  3. 设计一个订单类,封装每一个售出的订单信息,以供数据统计使用。
  4. 使用外部文件存取数据,方便数据的输入输出。

思路:
利用数组实现点餐等操作
利用文件实现订单保存

代码实现:

#include <iostream>
#include <windows.h> //句柄颜色设置
#include <iomanip> //设置域宽
#include <fstream> //设置文件
#include <cmath>  //完成计算
#include <stdio.h>
void Menu();
void guest();
using namespace std;
class menu {
                                                              //菜单抽象类
public:
 virtual void printf() = 0;
};
class Food :public menu {
         //套餐具体类
 string Name;       //菜名
 float Price;     //价格
 string Kind;     //类别
 int Num;        //编号
 public:
 void Foodmenu();                                                               //食物菜单
 void foodshow(int num, string kind, string name, float price) {
   
  Num = num; Kind = kind; Price = price; Name = name;
 }
 void printf() {
   
  cout << " " << Num << setw(7) << Kind << setw(35) << Name << Price;       //套餐菜单显示
 }
 Food();
};
Food::Food() {
   
 Num = 0; Price = 0;          //初始化变量
}
class Single :public menu {
        //单点具体类
 string sName;       //菜名
 float sPrice;     //价格
 string sKind;     //类别
 int sNum;        //编号
 public:
 void singleshow(int snum, string skind, string sname, float sprice) {
   
  sNum = snum; sName = snum; sKind = skind; sName = sname; sPrice = sprice;      //单点食物
 }
 void printf() {
   
  cout << " " << sNum << setw(7) << sKind << setw(35) << sName << sPrice;                      //单点菜单显示
 }
 Single();
};
Single::Single() {
   
 sNum = 0; sPrice = 0;
}
class Employee :public menu {
                      //管理员具体类
 string NAME;    //员工姓名
 string SEX;     //员工性别
 long PHONE;     //员工电话
public:
 void employeeshow(string Name, string Sex, long Phone) {
         //员工信息输出
  NAME = Name; SEX = Sex; PHONE = Phone;
 }
 void printf() {
   
  cout << setw(60) << "姓名:" << NAME << endl
   << setw(60) << "性别:" << SEX << endl
   << setw(60) << "电话:" << PHONE << endl;
 }
 Employee();
};
Employee::Employee() {
   
 PHONE = 0;                      //初始化变量
}

用结构体存储菜单

struct storage {
        //储存菜单
 int Num1;        //编号
 string Name1;    //菜名
 double Price1;    //价格  
 int Count1;       //点菜数量
 int Kucun1;
};
struct storage sto[55] = {
   
{
   1,"巨无霸升级四件套(巨无霸/中薯条/中杯可乐)",32,0,500},
{
   2,"安格斯芝士堡套餐(芝士堡/中薯条/中杯可乐)",32.5,0,500},
{
   3,"板烧鸡腿堡套餐(鸡腿堡/中薯条/中杯可乐)",30,0,500},
{
   4,"金凤来福鸡排堡                           ",21.5,0,500},
{
   5,"麦辣鸡腿堡                               ",17.5,0,500},
{
   6,"板烧鸡腿堡                               ", 19,0,500},
{
   7,"苹果派                                   ",8,0,500},
{
   8,"那么大鸡排                               ",12,0,500},
{
   9,"中薯条                                   ",11.5,0,500},
{
   10,"黑糖珍珠奶茶(冷)                       ",14,0,500},
{
   11,"原味奶茶(冷)                           ",13,0,500} ,
};

菜单显示操作

//---------------------------------------------------------------------------------------------
//-------------------------------------食物菜单显示--------------------------------------------
//---------------------------------------------------------------------------------------------
void Food::Foodmenu()                                                                         //食物菜单
{
   
 system("CLS");     //清屏
 cout << setw(80) << "-------------------菜单-------------------" << endl
  << setw(80) << "                1.套餐                   " << endl
  << setw(80) << "                2.单点                   " << endl    //点餐子菜单
  << setw(80) << "                3.点餐                   " << endl
  << setw(80) << "                0.返回                   " << endl
  << setw(80) << "------------------------------------------" << endl;
 cout << "请输入你的选择:(浏览完后输入3进行点餐)";
 int a;
 while (cin >> a) {
   
  //-----------------------------------套餐--------------------------------------------------------
  if (a == 1) {
   
   cout << "-----------------------------------------------------------" << endl;
   cout << "编号" << " 类别" << setw(15) << "菜名" << setw(36) << "价格" << endl;
   Food f1, f2, f3;
   f1.foodshow(1, "   套餐   ", "巨无霸升级四件套(巨无霸/中薯条/中杯可乐)    ¥", 32);
   f1.printf(
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值