C语言二级菜单如何设计与实现?

99ANYc3cd6
预计阅读时长 21 分钟
位置: 首页 C语言 正文

C语言二级菜单程序设计

下面是一个完整的C语言二级菜单程序示例,展示了如何实现一个具有两级菜单结构的控制台应用程序。

c语言二级菜单程序设计
(图片来源网络,侵删)

程序代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 函数声明
void mainMenu();
void subMenu1();
void subMenu2();
void subMenu3();
void clearInputBuffer();
int main() {
    mainMenu();
    return 0;
}
// 主菜单
void mainMenu() {
    int choice;
    while (1) {
        system("cls"); // 清屏 (Windows系统)
        // system("clear"); // 清屏 (Linux/Unix系统)
        printf("========== 主菜单 ==========\n");
        printf("1. 功能一\n");
        printf("2. 功能二\n");
        printf("3. 功能三\n");
        printf("0. 退出\n");
        printf("============================\n");
        printf("请选择: ");
        if (scanf("%d", &choice) != 1) {
            clearInputBuffer();
            printf("输入无效,请重新输入!\n");
            system("pause");
            continue;
        }
        clearInputBuffer(); // 清除输入缓冲区中的剩余字符
        switch (choice) {
            case 1:
                subMenu1();
                break;
            case 2:
                subMenu2();
                break;
            case 3:
                subMenu3();
                break;
            case 0:
                printf("感谢使用,再见!\n");
                exit(0);
            default:
                printf("无效的选择,请重新输入!\n");
                system("pause");
        }
    }
}
// 子菜单1
void subMenu1() {
    int choice;
    while (1) {
        system("cls");
        printf("========== 功能一子菜单 ==========\n");
        printf("1. 子功能1.1\n");
        printf("2. 子功能1.2\n");
        printf("3. 子功能1.3\n");
        printf("0. 返回主菜单\n");
        printf("=================================\n");
        printf("请选择: ");
        if (scanf("%d", &choice) != 1) {
            clearInputBuffer();
            printf("输入无效,请重新输入!\n");
            system("pause");
            continue;
        }
        clearInputBuffer();
        switch (choice) {
            case 1:
                printf("执行子功能1.1\n");
                system("pause");
                break;
            case 2:
                printf("执行子功能1.2\n");
                system("pause");
                break;
            case 3:
                printf("执行子功能1.3\n");
                system("pause");
                break;
            case 0:
                return; // 返回主菜单
            default:
                printf("无效的选择,请重新输入!\n");
                system("pause");
        }
    }
}
// 子菜单2
void subMenu2() {
    int choice;
    while (1) {
        system("cls");
        printf("========== 功能二子菜单 ==========\n");
        printf("1. 子功能2.1\n");
        printf("2. 子功能2.2\n");
        printf("0. 返回主菜单\n");
        printf("=================================\n");
        printf("请选择: ");
        if (scanf("%d", &choice) != 1) {
            clearInputBuffer();
            printf("输入无效,请重新输入!\n");
            system("pause");
            continue;
        }
        clearInputBuffer();
        switch (choice) {
            case 1:
                printf("执行子功能2.1\n");
                system("pause");
                break;
            case 2:
                printf("执行子功能2.2\n");
                system("pause");
                break;
            case 0:
                return;
            default:
                printf("无效的选择,请重新输入!\n");
                system("pause");
        }
    }
}
// 子菜单3
void subMenu3() {
    int choice;
    while (1) {
        system("cls");
        printf("========== 功能三子菜单 ==========\n");
        printf("1. 子功能3.1\n");
        printf("0. 返回主菜单\n");
        printf("=================================\n");
        printf("请选择: ");
        if (scanf("%d", &choice) != 1) {
            clearInputBuffer();
            printf("输入无效,请重新输入!\n");
            system("pause");
            continue;
        }
        clearInputBuffer();
        switch (choice) {
            case 1:
                printf("执行子功能3.1\n");
                system("pause");
                break;
            case 0:
                return;
            default:
                printf("无效的选择,请重新输入!\n");
                system("pause");
        }
    }
}
// 清除输入缓冲区
void clearInputBuffer() {
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}

程序说明

  1. 程序结构

    • 主菜单(mainMenu):显示一级菜单选项
    • 三个子菜单(subMenu1, subMenu2, subMenu3):分别对应主菜单的三个选项
    • 每个菜单都是一个循环结构,直到用户选择返回或退出
  2. 关键功能

    • 使用system("cls")system("clear")清屏(根据操作系统选择)
    • 输入验证:检查用户输入是否为有效数字
    • 输入缓冲区清理:防止非法输入导致的问题
    • 菜单导航:通过switch-case结构实现菜单选择
  3. 扩展建议

    • 可以添加更多子菜单和功能
    • 可以使用函数指针数组来简化菜单结构
    • 可以添加文件操作、数据结构等更复杂的功能
    • 可以改进用户界面,添加颜色等视觉效果

编译和运行

  1. 将代码保存为menu.c
  2. 使用C编译器编译:
    • Windows: gcc menu.c -o menu
    • Linux/Unix: gcc menu.c -o menu
  3. 运行程序:
    • Windows: menu.exe
    • Linux/Unix: ./menu

这个程序提供了一个清晰的二级菜单结构,可以根据需要进一步扩展功能。

c语言二级菜单程序设计
(图片来源网络,侵删)
c语言二级菜单程序设计
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
织梦上视频教程如何播放?
« 上一篇 04-24
织梦下拉多条件筛选如何实现?
下一篇 » 04-24

相关文章

取消
微信二维码
支付宝二维码

目录[+]