CodeLibrary/08_Clion_Cplus_MultiLevelMenu_20240610/main.cpp
JRNitre b01d9fbda0 追加了好多 Cplus 项目...
删除了一些不明所以的 Cplus 项目
2024-06-15 00:06:15 +08:00

177 lines
4.5 KiB
C++

#include <iostream>
using namespace std;
// MAShiroUI
#include "mashiroui.h"
/*
* 输入状态码
* 0 - 无输入
* 1 - 上
* 2 - 下
* 3 - 确认
* 4 - 返回
* */
int key_status = 0;
/*
* 当前显示状态
* 0 - 主菜单
* 1 - 索引至 main_menu
* */
int display_status = 0;
menu_table main_menu [] = {
{3, "功能-01", main_menu, nullptr, function_01},
{3, "功能-02", main_menu, fun_01_menu, nullptr},
{3, "功能-03", main_menu, nullptr, nullptr},
};
menu_table fun_01_menu [] = {
{4, "a", main_menu, nullptr, nullptr},
{4, "b", main_menu, nullptr, nullptr},
{4, "c", main_menu, nullptr, nullptr},
{4, "d", main_menu, nullptr, nullptr},
};
// 当前表项
menu_table *current_table = main_menu;
// 当前所选
int current_table_page = 0;
// 获取用户输入的字符
char getInputToChar(){
char temp;
cout << "= u -> 上 e -> 确认" << endl;
cout << "= d -> 下 r -> 返回" << endl;
cout << "Input: ";
cin >> temp;
return temp;
}
void update_keyStatus(char uin){
int tempKey = 0;
if (uin == 'u'){
tempKey = 1;
}
if (uin == 'd'){
tempKey = 2;
}
if (uin == 'e'){
tempKey = 3;
}
if (uin == 'r'){
tempKey = 4;
}
key_status = tempKey;
}
int main() {
while (true){
system("cls");
if (key_status != 0){
int table_length = current_table[0].length;
// up
if (key_status == 1){
if (display_status != 1){
if (display_status == 0){
display_status = 2;
} else {
display_status = 0;
}
} else {
if (current_table_page - 1 < 0){
current_table_page = table_length - 1;
} else {
current_table_page--;
}
}
}
if (key_status == 2){
if (display_status != 1){
if (display_status == 0){
display_status = 2;
} else {
display_status = 0;
}
} else {
if (current_table_page + 2 > table_length){
current_table_page = 0;
} else {
current_table_page++;
}
}
}
if (key_status == 3){
if (display_status != 1){
display_status = 1;
current_table = main_menu;
} else {
if (current_table[current_table_page].sub_table == nullptr &&
current_table[current_table_page].function != nullptr){
(current_table[current_table_page].function)();
}
if (current_table[current_table_page].sub_table != nullptr &&
current_table[current_table_page].function == nullptr){
current_table = current_table[current_table_page].sub_table;
}
}
}
if (key_status == 4){
if (current_table == main_menu){
display_status = 0;
} else {
current_table = current_table[current_table_page].parent_table;
}
}
key_status = 0;
}
if (current_table_page + 1 > current_table[0].length){
current_table_page = 0;
}
// 判断需要显示的菜单
if (display_status == 0){
cout << "this is main" << endl;
}
if (display_status == 1){
int i;
cout << "+";
for (i = 0; i < 20; i++){
cout << "-";
}
cout << "+" << endl;
for (i = 0; i < current_table[0].length; i++){
cout << "+ [";
if (current_table_page == i){
cout << "0";
} else {
cout << " ";
}
cout << "] - " << current_table[i].table_title;
cout << endl;
}
cout << "+";
for (i = 0; i < 20; i++){
cout << "-";
}
cout << "+" << endl;
}
if (display_status == 2){
cout << "this is main 02" << endl;
}
// 获取用户输入状态
update_keyStatus(getInputToChar());
}
return 0;
}