需求:
根据用户的四个按键的(上下左右)显示对应的内容,左右键切换显示项目名称,上下键切换切换该项目的具体信息条目。另外有一个无符号整型变量上的每一位用于控制项目的显示与否,该位为1则显示对应项目,反之则不显示该项目。
组合按键采用面向对象的思想,加上数据结构中的双向链表,这样的组合按键需求十分容易实现。
下面是对上述需求的模型化:
Linux终端用于显示,键盘上的w、s、a、d键和箭头符号分别表示上下左右按键。左右按键用于切换显示附近的银行名称,上下键用于切换显示该银行的具体信息,如地址、当前排队人数等。另外show_ctl变量对应的位用于控制对应的银行是否显示。
编码如下:
#include <stdio.h>
#define KEY_UP 192
#define KEY_DOWN 193
#define KEY_LEFT 195
#define KEY_RIGHT 194
//封装显示结构体
typedef void (*SHOW_FUN)(void);
typedef struct _tag_bank
{
struct _tag_bank* pre;
struct _tag_bank* next;
SHOW_FUN showFunc[10];
size_t subScrMaxIndex;
size_t subScrIndex;
}bankItem_t;
bankItem_t *current_bankItem = NULL;
void agricultural_bank_func1() { printf("------------ 中国农业银行 ------------ \n");}
void agricultural_bank_func2(){ printf("1. 地址: xx街道xxx号\n");}
void agricultural_bank_func3(){ printf("2. 当前排队人数: 5人\n"); }
void agricultural_bank_func4() { printf("3. 上班时间: 9:30 ~ 17:30\n"); }
void icbc_bank_func1() { printf("-------------- 工商银行 --------------\n"); }
void icbc_bank_func2() { printf("1. 地址: yy街道yyy号\n"<