static void ShowMenu(E_MENU_INDEX eIndex); ///< 显示指定的菜单
static void ShowMenu_main(); ///< 显示主菜单
static void ShowMenu_rec_add(); ///< 显示菜单-添加数据
static void ShowMenu_rec_del(); ///< 显示菜单-删除数据
static void ShowMenu_rec_del_by_index(); ///< 显示菜单-按照索引删除
static void ShowMenu_rec_del_by_content(); ///< 显示菜单-按照内容删除
static void ShowMenu_rec_modify(); ///< 显示菜单-修改数据
static void ShowMenu_rec_query(); ///< 显示菜单-查询
static void ShowMenu_rec_query_by_index(); ///< 显示菜单-按照记录索引查询
static void ShowMenu_rec_query_by_content(); ///< 显示菜单-按照记录内存查询
static void ShowMenu_StatisticsUsage(); ///< 显示菜单-字符使用率统计
static void ShowMenu_Defragmentation(); ///< 显示菜单-碎片整理
static void ShowMenu_DispDiskUsage(); ///< 显示菜单-内存数据库使用率
typedef void (*PFN_SHOWMENU_X)();
PFN_SHOWMENU_X g_fnProcMenu[] =
{
ShowMenu_main,
ShowMenu_rec_add,
ShowMenu_rec_del,
ShowMenu_rec_modify,
ShowMenu_rec_query,
ShowMenu_StatisticsUsage,
ShowMenu_DispDiskUsage,
ShowMenu_Defragmentation
};
static void ShowMenu(E_MENU_INDEX eIndex)
{
CleanScreen();
/// 用函数指针代替switch-case, 简化逻辑处理
/// 这里原来是一小撮switch-case
/// 这里用函数指针代替,也简洁一些
/// 如果switchcase比较多, 用函数指针的效果就更好
if (NULL != g_fnProcMenu[eIndex])
{
g_fnProcMenu[eIndex]();
if (eMenuIndex_Defragmentation == eIndex)
{
ShowMenu_DispDiskUsage(); ///< 碎片整理完成后, 分析磁盘使用率
}
}
else
{
g_fnProcMenu[eMenuIndex_main]();
}
}