c语言编写菜单
weixin_45951391 2024-07-24 15:35:06 阅读 85
编写菜单编写C语言菜单 :
1.莱单设计—算法与程序基本结构 小明和小康到饭馆就餐,刚刚落座,服务员拿出一本菜单,让两人点餐。小明和小康想到自己正在学习C语言,心想能否用C语言中的printf 来实现呢?
2.思路指导 对于菜单的设计,需要考虑的最主要的问题就是菜单显示在屏幕上的位置的组织,应该思考如何使菜单的畀面整齐,看起来自然美观,使用方便。
3.相关知识 结构化程序设计 我们通过三种基本的控制结构,通过组合和嵌套就能买现任何单入口、出口的程序一一这就是结构化程序设计基本原理。这三种基本结构是顺序结构、选择结构、循环结构。 要设计出结构化的程序,应该采用以下的方法:
1.自顶向下。
2.逐步细化。
3. 模块化。
C语言语句类型 语句是C语言源程序的重要组成部分,C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。C语句可分为以下五类:
(1) 表达式语句 表达式语向由表达式加上分号“;”组成。 其一般形式为:表达式;
(2)函数调用语句 由函数名、实际参数加上分号“;”组成。 其一般形式为:函数名(实际参数表);
(3) 控制语句 控制语句用于控制猩序的流程,以实现程序的各种结构方式。它们由持定的语句定义符组成。C语言有九种控制语句。可分成以下三类:条伴判断语句、循环执行语句、转向语句。 (4) 复合语句 把多个语句用括号{}起来组成的一个语句称复合语句。
(5)空语句 只有分号“;”组成的语句称为空语句。
实例代码:
<code>#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义菜品结构体
struct MenuItem {
char name[50];
float price;
int quantity;
char notes[100];
};
// 定义订单结构体
struct Order {
struct MenuItem items[10];
int itemCount;
};
// 显示菜单
void displayMenu() {
printf("======== 菜单 ========\n");
printf("1. 菜品1 - $10.00\n");
printf("2. 菜品2 - $15.00\n");
printf("3. 菜品3 - $20.00\n");
printf("=====================\n");
}
// 添加菜品到订单
void addToOrder(struct Order *order, int menuChoice, int quantity, char notes[]) {
// 在这里添加你的菜品和价格
switch (menuChoice) {
case 1:
strcpy(order->items[order->itemCount].name, "菜品1");
order->items[order->itemCount].price = 10.00;
break;
case 2:
strcpy(order->items[order->itemCount].name, "菜品2");
order->items[order->itemCount].price = 15.00;
break;
case 3:
strcpy(order->items[order->itemCount].name, "菜品3");
order->items[order->itemCount].price = 20.00;
break;
default:
printf("无效的选择\n");
return;
}
order->items[order->itemCount].quantity = quantity;
strcpy(order->items[order->itemCount].notes, notes);
// 增加订单中菜品数量
order->itemCount++;
printf("已添加到订单\n");
}
// 显示订单
void displayOrder(struct Order *order) {
printf("======== 订单 ========\n");
for (int i = 0; i < order->itemCount; i++) {
printf("%d. %s x%d - $%.2f\n", i + 1, order->items[i].name, order->items[i].quantity, order->items[i].price * order->items[i].quantity);
printf(" 备注: %s\n", order->items[i].notes);
}
printf("=====================\n");
}
// 修改订单
void modifyOrder(struct Order *order) {
int choice;
printf("输入要修改的菜品编号: ");
scanf("%d", &choice);
if (choice >= 1 && choice <= order->itemCount) {
printf("输入新的数量: ");
scanf("%d", &order->items[choice - 1].quantity);
printf("输入新的备注: ");
scanf("%s", order->items[choice - 1].notes);
printf("订单已更新\n");
} else {
printf("无效的选择\n");
}
}
// 删除订单
void deleteOrder(struct Order *order) {
int choice;
printf("输入要删除的菜品编号: ");
scanf("%d", &choice);
if (choice >= 1 && choice <= order->itemCount) {
// 移除选择的菜品并调整订单
for (int i = choice - 1; i < order->itemCount - 1; i++) {
order->items[i] = order->items[i + 1];
}
order->itemCount--;
printf("订单已删除\n");
} else {
printf("无效的选择\n");
}
}
// 计算订单总价
float calculateTotal(struct Order *order) {
float total = 0.0;
for (int i = 0; i < order->itemCount; i++) {
total += order->items[i].price * order->items[i].quantity;
}
return total;
}
int main() {
struct Order order;
order.itemCount = 0;
int choice;
do {
printf("======== 欢迎光临 ========\n");
printf("1. 点餐\n");
printf("2. 浏览菜单\n");
printf("3. 点餐信息\n");
printf("4. 修改点餐信息\n");
printf("5. 删除点餐订单\n");
printf("6. 查询点餐订单\n");
printf("7. 结算价格\n");
printf("8. 退出\n");
printf("请选择操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
displayMenu();
int menuChoice, quantity;
char notes[100];
printf("输入要点的菜品编号: ");
scanf("%d", &menuChoice);
printf("输入数量: ");
scanf("%d", &quantity);
printf("输入备注: ");
scanf("%s", notes);
addToOrder(&order, menuChoice, quantity, notes);
break;
case 2:
displayMenu();
break;
case 3:
displayOrder(&order);
break;
case 4:
modifyOrder(&order);
break;
case 5:
deleteOrder(&order);
break;
case 6:
displayOrder(&order);
break;
case 7:
printf("总价格: $%.2f\n", calculateTotal(&order));
break;
case 8:
printf("谢谢光临,再见!\n");
break;
default:
printf("无效的选择\n");
}
} while (choice != 8);
return 0;
}
运行示范:
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。