C语言面向对象 实现菜单按键系统
时间: 2024-03-21 14:39:35 浏览: 120
纯C语言制作滚动条例子.txt
4星 · 用户满意度95%
在 C 语言中,面向对象的实现通常采用结构体和函数指针的方式。下面是一个简单的菜单按键系统实现示例:
```c
#include <stdio.h>
// 定义菜单项结构
typedef struct MenuItem {
char* text; // 菜单项文本
void (*action)(); // 菜单项对应的函数指针
} MenuItem;
// 定义菜单结构
typedef struct Menu {
MenuItem* items; // 菜单项数组
int itemCount; // 菜单项数量
} Menu;
// 菜单项对应的函数
void menuItem1() {
printf("You have selected menu item 1.\n");
}
void menuItem2() {
printf("You have selected menu item 2.\n");
}
void menuItem3() {
printf("You have selected menu item 3.\n");
}
void menuItem4() {
printf("You have selected menu item 4.\n");
}
// 初始化菜单
void initMenu(Menu* menu) {
MenuItem items[] = {
{ "Menu Item 1", menuItem1 },
{ "Menu Item 2", menuItem2 },
{ "Menu Item 3", menuItem3 },
{ "Menu Item 4", menuItem4 }
};
menu->items = items;
menu->itemCount = sizeof(items) / sizeof(MenuItem);
}
// 显示菜单
void showMenu(Menu* menu) {
printf("Please select a menu item:\n");
for (int i = 0; i < menu->itemCount; i++) {
printf("%d. %s\n", i + 1, menu->items[i].text);
}
}
// 处理用户输入
void handleInput(Menu* menu) {
int choice;
scanf("%d", &choice);
if (choice >= 1 && choice <= menu->itemCount) {
menu->items[choice - 1].action();
} else {
printf("Invalid choice.\n");
}
}
int main() {
Menu menu;
initMenu(&menu);
showMenu(&menu);
handleInput(&menu);
return 0;
}
```
在上面的示例中,我们定义了 `MenuItem` 结构体和 `Menu` 结构体,分别表示菜单项和菜单。每个菜单项包含一个文本字符串和一个函数指针,函数指针指向该菜单项对应的函数。在初始化菜单时,我们可以创建一个菜单项数组,并将数组指针和数组长度存储在菜单结构体中。在显示菜单时,我们遍历菜单项数组,输出每个菜单项的文本字符串。在处理用户输入时,我们读取用户输入的选择项,如果选择项在合法范围内,则调用对应菜单项的函数指针,否则输出错误信息。
阅读全文