【可进可退的多级菜单系统】

构建可进可退的多级菜单系统

  • net.nieyourong.p02.t06包里创建XExercise02
    在这里插入图片描述
  • 给一级菜单添加循环
    在这里插入图片描述
  • 运行程序,测试效果
    在这里插入图片描述
  • 编写登录方法 - login()
    在这里插入图片描述
  • 运行程序,测试效果

在这里插入图片描述

  • 编写名片管理方法 - cardMannagement()
    在这里插入图片描述
  • 运行程序,查看效果
完整源代码如下:

在这里插入图片描述

package net.nieyourong.p02.t06;

import java.util.Scanner;

/**
 * 功能:构建可进可退的多级菜单系统
 * 作者:聂友蓉
 * 日期:2022年04月14日
 */
public class XExercise02 {
    public static void main(String[] args) {
        //声明部分
        int mc1;
        Scanner sc = new Scanner(System.in);
        boolean isRunning = true;//循环控制变量

        while (isRunning) {
            //绘制一级菜单
            System.out.println("名片管理系统");
            System.out.println("===========");
            System.out.println("  1.登录");
            System.out.println("  0.退出");
            System.out.println("===========");
            System.out.print("输入菜单选项[1,0]:");
            //根据用户选择执行相应操作
            mc1 = sc.nextInt();
            switch (mc1) {
                case 1:
                    //调用登录方法
                    login();
                    break;
                case 0:
                    System.out.println("谢谢使用~再见~");
                    isRunning = false;//结束循环
                    break;
                default:
                    System.out.println("输入的菜单编号有误!");
            }
        }
    }

    /**
     * 登录方法
     */
    public static void login() {
        String username,password;
        Scanner sc = new Scanner(System.in);

        System.out.print("用户名");
        username = sc.next();
        System.out.println("密码:");
        password = sc.next();

        if (username.equals("nieyourong") && password.equals("903213")) {
            System.out.println("登录成功~");
            //调用名片管理方法
            cardManagement();
        } else {
            System.out.println("用户名或密码有误,登录失败~");
        }
    }
    /**
     * 名片管理方法
     */
    public static void cardManagement() {
        int mc2;
        Scanner sc = new Scanner(System.in);
        boolean isRunning = true;//循环控制变量

        while (isRunning) {
            //绘制二级菜单
            System.out.println("=====名片管理======");
            System.out.println("1.添加名片");
            System.out.println("2.修改名片");
            System.out.println("3.查询名片");
            System.out.println("4.删除名片");
            System.out.println("5.返回上级");
            System.out.println("====================");
            System.out.println("输入菜单号[1,2,3,4,5]:");
            mc2=sc.nextInt();

            switch (mc2) {
                case 1:
                    System.out.println("执行添加名片功能~");
                    break;
                case 2:
                    System.out.println("执行修改名片功能~");
                    break;
                case 3:
                    System.out.println("执行查询名片功能~");
                    break;
                case 4:
                    System.out.println("执行删除名片功能~");
                    break;
                case 5:
                    isRunning = false;
                default:
                    System.out.println("输入的菜单号有误!");
            }
        }
    }
}
矩阵键盘是一种常用的输入设备,它利用较少的引脚实现多个按键的读取,常用于嵌入式系统如STM32。要控制OLED多级菜单,首先需要建立按键矩阵的扫描逻辑,然后处理用户输入,展示菜单并响应选择。 **步骤**: 1. **构建矩阵键盘**: - 将矩阵键盘的列和行分别连接到微控制器的IO端口,通常使用Pins来读取行和列的状态变化。 - 初始化IO口,设置为推挽输出模式,方便读取键状态。 2. **扫描矩阵**: - 写入一个固定的行地址,读取所有列的状态,形成一个完整的行数据。 - 比较当前的列数据与上次扫描的结果,判断是否有按下或释放的键。 3. **解析键位**: - 对于每一对按下的列和行,确定对应的按键编号(可能是数字键或特殊功能键)。 4. **设计多级菜单**: - 编写菜单结构,包括各个选项和它们关联的操作函数。 - 当用户按下某个键时,递归进入下一级菜单,直到最底层,再返回上一级菜单进行相应操作。 5. **显示和交互**: - 根据用户的选择,调用对应级别的菜单项,在OLED屏幕上显示当前菜单及其选项。 - 更新菜单状态,如选中的选项、下一级菜单等。 6. **处理回退或退出**: - 设计一些按键作为“上一级”、“返回”等操作,允许用户回到上级菜单退出整个程序。 **代码示例**: ```c void showMenu(uint8_t level, MenuEntry* menu) { // 显示菜单 OLED_clearDisplay(); for (int i = 0; i < menu->numEntries; i++) { if (menu[i].selected) { OLED_setCursor(menu[i].x, menu[i].y); OLED_writeString(menu[i].text); } else { OLED_gotoXY(menu[i].x, menu[i].y + 1); OLED_writeString(menu[i].text); } } OLED_update(); // 处理按键输入 uint8_t key = getKey(); // 获取按键 handleKey(key, level, menu); } // ...省略实际按键扫描和处理函数... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值