C语言点菜机设计方案
设计一个简单的点菜机,可以实现以下功能:
- 显示菜单:将菜单展示给用户,包括菜名、价格、编号等信息。
- 选择菜品:用户可以根据菜品编号选择自己想要的菜品,可以选择多个菜品。
- 计算总价:根据用户选取的菜品,计算出总价。
- 打印订单:将用户选择的菜品及总价打印出来,作为订单。
设计思路:
- 定义一个结构体Menu,包含菜名、价格、编号等信息。
- 定义一个数组menuList,用于存储菜单信息。
- 定义一个函数displayMenu,用于显示菜单信息。
- 定义一个函数selectDishes,用于用户选择菜品,可以使用一个数组selectedDishes来存储用户选择的菜品编号。
- 定义一个函数calculateTotalPrice,根据用户选择的菜品,计算总价。
- 定义一个函数printOrder,将用户选择的菜品及总价打印出来。
代码示例:
#include <stdio.h> #include <stdlib.h>
// 定义菜单结构体 typedef struct { char name[20]; // 菜名 float price; // 价格 int id; // 编号 } Menu;
// 菜单列表 Menu menuList[] = { {"宫保鸡丁", 22.0, 1}, {"鱼香肉丝", 18.0, 2}, {"红烧肉", 30.0, 3}, {"糖醋鲤鱼", 35.0, 4}, {"水煮鱼", 38.0, 5} };
// 菜单数量 int menuCount = sizeof(menuList) / sizeof(Menu);
// 显示菜单 void displayMenu() { printf("菜单如下:\n"); printf("编号\t菜名\t价格\n"); for (int i = 0; i < menuCount; i++) { printf("%d\t%s\t%.2f\n", menuList[i].id, menuList[i].name, menuList[i].price); } }
// 选择菜品 void selectDishes(int *selectedDishes, int *count) { printf("请输入菜品编号选择菜品(输入0结束选择):"); int dishId; scanf("%d", &dishId); while (dishId != 0) { int found = 0; for (int i = 0; i < menuCount; i++) { if (menuList[i].id == dishId) { selectedDishes[*count] = dishId; (*count)++; found = 1; break; } } if (!found) { printf("输入的菜品编号不存在,请重新输入:"); } scanf("%d", &dishId); } }
// 计算总价 float calculateTotalPrice(int *selectedDishes, int count) { float totalPrice = 0.0; for (int i = 0; i < count; i++) { for (int j = 0; j < menuCount; j++) { if (menuList[j].id == selectedDishes[i]) { totalPrice += menuList[j].price; break; } } } return totalPrice; }
// 打印订单 void printOrder(int *selectedDishes, int count, float totalPrice) { printf("您选择的菜品如下:\n"); printf("编号\t菜名\t价格\n"); for (int i = 0; i < count; i++) { for (int j = 0; j < menuCount; j++) { if (menuList[j].id == selectedDishes[i]) { printf("%d\t%s\t%.2f\n", menuList[j].id, menuList[j].name, menuList[j].price); break; } } } printf("总价:%0.2f\n", totalPrice); }
int main() { displayMenu();
int selectedDishes[menuCount]; // 存储用户选择的菜品编号
int count = 0; // 用户选择的菜品数量
selectDishes(selectedDishes, &count);
float totalPrice = calculateTotalPrice(selectedDishes, count);
printOrder(selectedDishes, count, totalPrice);
return 0;
原文地址: https://www.cveoy.top/t/topic/iMu5 著作权归作者所有。请勿转载和采集!