一个点餐系统大一设计(今天下午2点前要)

可以点餐的小程序
可以实现以下操作:
A.菜品录入,菜品的信息包括菜品名称,价格,菜品性质是主食还是副食。
B.全部菜品显示
C.客户点了菜品后,统计菜品的总价格,给出最贵的菜品的名称及价

提示:建议菜品信息保存在文本文件里面:此外: 也可以采用结构体也可以采用数组:添加菜品信息可以采用动态数组申请来实现.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_DISH_NAME_LEN 20 // 菜品名称的最大长度
#define MAX_DISH_TYPE_LEN 20 // 菜品性质的最大长度
#define MAX_DISHES 100       // 最多可以保存的菜品数量

// 定义菜品信息的结构体
typedef struct
{
    char name[MAX_DISH_NAME_LEN + 1]; // 菜品名称
    float price;                      // 菜品价格
    char type[MAX_DISH_TYPE_LEN + 1]; // 菜品性质
} Dish;

// 菜品信息数组
Dish dishes[MAX_DISHES];

// 当前已经保存的菜品数量
int dish_count = 0;

// 当前点的菜品信息数组
Dish order[MAX_DISHES];

// 当前点的菜品数量
int order_count = 0;

// 加载菜品信息
void load_dishes()
{
    // 打开文件
    FILE *fp = fopen("dishes.txt", "r");
    if (fp == NULL)
    {
        printf("Error: failed to open dishes file.\n");
        return;
    }

    // 读取菜品信息
    while (dish_count < MAX_DISHES && fscanf(fp, "%s%f%s", dishes[dish_count].name, &dishes[dish_count].price, dishes[dish_count].type) == 3)
    {
        dish_count++;
    }

    // 关闭文件
    fclose(fp);
}

// 保存菜品信息
void save_dishes()
{
    // 打开文件
    FILE *fp = fopen("dishes.txt", "w");
    if (fp == NULL)
    {
        printf("Error: failed to open dishes file.\n");
        return;
    }
    // 写入菜品信息
    for (int i = 0; i < dish_count; i++)
    {
        fprintf(fp, "%s %.2f %s\n", dishes[i].name, dishes[i].price, dishes[i].type);
    }

    // 关闭文件
    fclose(fp);
}

// 录入菜品信息
void input_dish()
{
    char name[MAX_DISH_NAME_LEN + 1];
    float price;
    char type[MAX_DISH_TYPE_LEN + 1];
    printf("请输入菜品名称:");
    scanf("%s", name);
    printf("请输入菜品价格:");
    scanf("%f", &price);
    printf("请输入菜品性质(主食或副食):");
    scanf("%s", type);

    // 将菜品信息添加到数组中
    strcpy(dishes[dish_count].name, name);
    dishes[dish_count].price = price;
    strcpy(dishes[dish_count].type, type);
    dish_count++;
}
// 显示所有菜品信息
void display_dishes()
{
    printf("菜品名称\t价格\t性质\n");
    for (int i = 0; i < dish_count; i++)
    {
        printf("%s\t%.2f\t%s\n", dishes[i].name, dishes[i].price, dishes[i].type);
    }
}

// 点餐
void place_order()
{
    char name[MAX_DISH_NAME_LEN + 1];
    printf("请输入要点的菜品名称:");
    scanf("%s", name);
    // 查找菜品
    for (int i = 0; i < dish_count; i++)
    {
        if (strcmp(dishes[i].name, name) == 0)
        {
            // 添加到订单中
            strcpy(order[order_count].name, dishes[i].name);
            order[order_count].price = dishes[i].price;
            strcpy(order[order_count].type, dishes[i].type);
            order_count++;
            printf("已添加到订单中\n");
            return;
        }
    }

    printf("未找到该菜品\n");
}

// 显示订单信息
void display_order()
{
    float total_price = 0;
    float max_price = 0;
    char max_name[MAX_DISH_NAME_LEN + 1];
    printf("订单信息:\n");
    printf("菜品名称\t价格\t性质\n");
    for (int i = 0; i < order_count; i++)
    {
        printf("%s\t%.2f\t%s\n", order[i].name, order[i].price, order[i].type);
        total_price += order[i].price;
        if (order[i].price > max_price)
        {
            max_price = order[i].price;
            strcpy(max_name, order[i].name);
        }
    }
    printf("总价格:%.2f\n", total_price);
    printf("最贵的菜品是 %s,价格是 %.2f\n", max_name, max_price);
}

int main()
{
    // 加载菜品信息
    load_dishes();
    while (1)
    {
        printf("\n");
        printf("1. 录入菜品\n");
        printf("2. 显示所有菜品\n");
        printf("3. 点餐\n");
        printf("4. 显示订单信息\n");
        printf("5. 退出程序\n");
        printf("请输入要执行的操作的编号:");
        int op;
        scanf("%d", &op);

        if (op == 1)
        {
            // 录入菜品信息
            input_dish();
        }
        else if (op == 2)
        {
            // 显示所有菜品信息
            display_dishes();
        }
        else if (op == 3)
        {
            // 点餐
            place_order();
        }
        else if (op == 4)
        {
            // 显示订单信息
            display_order();
        }
        else if (op == 5)
        {
            // 保存菜品信息
            save_dishes();
            break;
        }
        else
        {
            printf("无效的操作编号\n");
        }
    }

    return 0;
}

可参考

https://www.jb51.net/article/251823.htm

为了方便你理解和学习,提供参考实例【python点菜小程序】,链接:https://blog.csdn.net/HUANGliang_/article/details/119675714

参考一下

点餐系统大一设计:
http://t.csdn.cn/4td3R

源代码在百度网盘:
链接:https://pan.baidu.com/s/1j43DvihtFT1qxjxyyX3LmA
提取码:hhhh
可以直接用

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_DISH_NAME_LEN 20 // 菜品名称的最大长度
#define MAX_DISH_TYPE_LEN 20 // 菜品性质的最大长度
#define MAX_DISHES 100       // 最多可以保存的菜品数量
// 定义菜品信息的结构体
typedef struct
{
    char name[MAX_DISH_NAME_LEN + 1]; // 菜品名称
    float price;                      // 菜品价格
    char type[MAX_DISH_TYPE_LEN + 1]; // 菜品性质
} Dish;
// 菜品信息数组
Dish dishes[MAX_DISHES];
// 当前已经保存的菜品数量
int dish_count = 0;
// 当前点的菜品信息数组
Dish order[MAX_DISHES];
// 当前点的菜品数量
int order_count = 0;
// 加载菜品信息
void load_dishes()
{
    // 打开文件
    FILE *fp = fopen("dishes.txt", "r");
    if (fp == NULL)
    {
        printf("Error: failed to open dishes file.\n");
        return;
    }
    // 读取菜品信息
    while (dish_count < MAX_DISHES && fscanf(fp, "%s%f%s", dishes[dish_count].name, &dishes[dish_count].price, dishes[dish_count].type) == 3)
    {
        dish_count++;
    }
    // 关闭文件
    fclose(fp);
}
// 保存菜品信息
void save_dishes()
{
    // 打开文件
    FILE *fp = fopen("dishes.txt", "w");
    if (fp == NULL)
    {
        printf("Error: failed to open dishes file.\n");
        return;
    }
    // 写入菜品信息
    for (int i = 0; i < dish_count; i++)
    {
        fprintf(fp, "%s %.2f %s\n", dishes[i].name, dishes[i].price, dishes[i].type);
    }
    // 关闭文件
    fclose(fp);
}
// 录入菜品信息
void input_dish()
{
    char name[MAX_DISH_NAME_LEN + 1];
    float price;
    char type[MAX_DISH_TYPE_LEN + 1];
    printf("请输入菜品名称:");
    scanf("%s", name);
    printf("请输入菜品价格:");
    scanf("%f", &price);
    printf("请输入菜品性质(主食或副食):");
    scanf("%s", type);
    // 将菜品信息添加到数组中
    strcpy(dishes[dish_count].name, name);
    dishes[dish_count].price = price;
    strcpy(dishes[dish_count].type, type);
    dish_count++;
}
// 显示所有菜品信息
void display_dishes()
{
    printf("菜品名称\t价格\t性质\n");
    for (int i = 0; i < dish_count; i++)
    {
        printf("%s\t%.2f\t%s\n", dishes[i].name, dishes[i].price, dishes[i].type);
    }
}
// 点餐
void place_order()
{
    char name[MAX_DISH_NAME_LEN + 1];
    printf("请输入要点的菜品名称:");
    scanf("%s", name);
    // 查找菜品
    for (int i = 0; i < dish_count; i++)
    {
        if (strcmp(dishes[i].name, name) == 0)
        {
            // 添加到订单中
            strcpy(order[order_count].name, dishes[i].name);
            order[order_count].price = dishes[i].price;
            strcpy(order[order_count].type, dishes[i].type);
            order_count++;
            printf("已添加到订单中\n");
            return;
        }
    }
    printf("未找到该菜品\n");
}
// 显示订单信息
void display_order()
{
    float total_price = 0;
    float max_price = 0;
    char max_name[MAX_DISH_NAME_LEN + 1];
    printf("订单信息:\n");
    printf("菜品名称\t价格\t性质\n");
    for (int i = 0; i < order_count; i++)
    {
        printf("%s\t%.2f\t%s\n", order[i].name, order[i].price, order[i].type);
        total_price += order[i].price;
        if (order[i].price > max_price)
        {
            max_price = order[i].price;
            strcpy(max_name, order[i].name);
        }
    }
    printf("总价格:%.2f\n", total_price);
    printf("最贵的菜品是 %s,价格是 %.2f\n", max_name, max_price);
}
int main()
{
    // 加载菜品信息
    load_dishes();
    while (1)
    {
        printf("\n");
        printf("1. 录入菜品\n");
        printf("2. 显示所有菜品\n");
        printf("3. 点餐\n");
        printf("4. 显示订单信息\n");
        printf("5. 退出程序\n");
        printf("请输入要执行的操作的编号:");
        int op;
        scanf("%d", &op);
        if (op == 1)
        {
            // 录入菜品信息
            input_dish();
        }
        else if (op == 2)
        {
            // 显示所有菜品信息
            display_dishes();
        }
        else if (op == 3)
        {
            // 点餐
            place_order();
        }
        else if (op == 4)
        {
            // 显示订单信息
            display_order();
        }
        else if (op == 5)
        {
            // 保存菜品信息
            save_dishes();
            break;
        }
        else
        {
            printf("无效的操作编号\n");
        }
    }
    return 0;
}

C语言点餐系统
全的,直接用
https://blog.csdn.net/qq_52712076/article/details/114452344

网上例子很多,稍加修改就能用