可以点餐的小程序
可以实现以下操作:
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
网上例子很多,稍加修改就能用