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;

}

运行示范: 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。