You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#控制台餐车应用:完成订单后重置流程的实现问询

餐车控制台应用订单完成与流程重置解决方案

核心实现思路

把单顾客的完整点餐流程封装为独立方法,在主程序循环中反复调用该方法。用户选择"Done"时,先处理当前订单数据,再结束当前方法,回到主循环自动开启下一位顾客的点餐流程。

代码示例

1. 定义订单数据类

// 存储订单核心信息的简单实体类
public class Order
{
    public List<string> SelectedItems { get; set; } = new List<string>();
    public decimal TotalAmount { get; set; }
}

2. 封装单顾客点餐流程

static void HandleCustomerOrder()
{
    Order currentOrder = new Order();
    bool isOrdering = true;

    while (isOrdering)
    {
        // 这里替换成你已实现的主菜单/子菜单展示逻辑
        Console.WriteLine("\n=== 餐车点餐菜单 ===");
        Console.WriteLine("1. 主食系列");
        Console.WriteLine("2. 小吃系列");
        Console.WriteLine("3. Done - 完成点餐");
        Console.Write("请输入选项序号: ");
        string userChoice = Console.ReadLine();

        switch (userChoice)
        {
            case "1":
                // 调用你已实现的主食子菜单逻辑,添加选中项到currentOrder
                Console.WriteLine("已添加经典牛肉堡到订单");
                currentOrder.SelectedItems.Add("经典牛肉堡");
                currentOrder.TotalAmount += 14.99m;
                break;
            case "2":
                // 调用你已实现的小吃子菜单逻辑,添加选中项到currentOrder
                Console.WriteLine("已添加薯条到订单");
                currentOrder.SelectedItems.Add("薯条");
                currentOrder.TotalAmount += 5.99m;
                break;
            case "3":
                isOrdering = false;
                // 触发订单处理逻辑
                FinalizeOrder(currentOrder);
                break;
            default:
                Console.WriteLine("无效选项,请重新输入");
                break;
        }
    }
}

// 处理完成的订单(可扩展打印、存储、通知等逻辑)
static void FinalizeOrder(Order completedOrder)
{
    Console.WriteLine("\n=== 您的订单已确认 ===");
    foreach (var item in completedOrder.SelectedItems)
    {
        Console.WriteLine($"- {item}");
    }
    Console.WriteLine($"订单总计: ${completedOrder.TotalAmount:F2}");
    Console.WriteLine("餐品准备中,请稍候...\n");
}

3. 主程序循环实现流程重置

static void Main(string[] args)
{
    Console.WriteLine("欢迎光临移动餐车!");
    while (true)
    {
        HandleCustomerOrder();
        
        // 可选:询问是否继续接待下一位顾客,也可直接自动开启下一轮
        Console.Write("是否接待下一位顾客?(输入Y继续,其他键退出): ");
        string nextCustomer = Console.ReadLine().Trim().ToUpper();
        if (nextCustomer != "Y")
        {
            Console.WriteLine("餐车已停止营业,感谢光临!");
            break;
        }
        Console.WriteLine("\n=== 准备接待下一位顾客 ===");
    }
}

关键细节说明

  • 数据隔离:每个HandleCustomerOrder()调用都会创建新的Order实例,确保不同顾客的订单数据互不干扰。
  • 逻辑解耦:订单处理逻辑单独放在FinalizeOrder()方法中,后续可以轻松扩展(比如对接数据库存储订单、打印小票等)。
  • 循环重置:主程序的while(true)循环会反复触发点餐流程,实现"处理完一单即重置"的需求。

内容的提问来源于stack exchange,提问作者jack_Hazzrd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:55:18