回复 2楼 九转星河
勉强完善了一个目录清单~不过这个方法调用函数较多,通常工程较大的导航菜单用结构体树形双向链表里面定义指针函数更好,通过移动链表指针来实现执行不同函数的功能,我这个只是简易版的~
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define SIZE_FUN 5
typedef int FUN (int);
FUN dump;
FUN fun_0_0;
FUN fun_0_1;
FUN fun_0_2;
FUN fun_0_3;
FUN fun_0_4;
FUN fun_1_0;
FUN fun_1_1;
FUN fun_1_2;
FUN fun_1_3;
FUN fun_1_4;
FUN fun_2_0;
FUN fun_2_1;
FUN fun_2_2;
FUN fun_2_3;
FUN fun_2_4;
FUN fun_3_0;
FUN fun_3_1;
FUN fun_3_2;
FUN fun_3_3;
FUN fun_3_4;
FUN fun_4_0;
FUN fun_4_1;
FUN fun_4_2;
FUN fun_4_3;
FUN fun_4_4;
FUN fun_5_0;
FUN fun_5_1;
FUN fun_5_2;
FUN fun_5_3;
FUN fun_5_4;
int main()
{
int ss=0;
typedef int (*COM)();
COM a[][SIZE_FUN]=
{
{fun_0_0,fun_0_1,fun_0_2,fun_0_3,fun_0_4},
{fun_1_0,fun_1_1,fun_1_2,fun_1_3,fun_1_4},
{fun_2_0,fun_2_1,fun_2_2,fun_2_3,fun_2_4},
{fun_3_0,fun_3_1,fun_3_2,fun_3_3,fun_3_4},
{fun_4_0,fun_4_1,fun_4_2,fun_4_3,fun_4_4},
{fun_5_0,fun_5_1,fun_5_2,fun_5_3,fun_5_4},
};
COM (*p)[SIZE_FUN]=a;
while (1)
{
char cmd=0;
system("cls");
ss=(*(*(p+ss)+SIZE_FUN-1))(ss);
cmd=getch()-'0';
if (cmd<0||cmd>SIZE_FUN-2)
continue;
ss=(*(*(p+ss)+cmd))(ss);
fflush(stdin);
}
return 0;
}
int fun_0_0(int ss)
{
exit(0);
return ss;
}
int fun_0_1(int ss)
{
return 1;
}
int fun_0_2(int ss)
{
return 2;
}
int fun_0_3(int ss)
{
return 3;
}
int fun_0_4(int ss)
{
printf("请输入:\n");
printf("1:添加\\删除\\修改学生信息\n");
printf("2:整理学生信息:\n");
printf("3:存取学生信息\n");
printf("0:退出\n");
return ss;
}
int fun_1_0(int ss)//
{
return 0;
}
int fun_1_1(int ss)
{
system("cls");
printf("初始化学生信息:\n");
system("pause");
return ss;
}
int fun_1_2(int ss)
{
system("cls");
printf("插入学生信息:\n");
system("pause");
return ss;
}
int fun_1_3(int ss)
{
system("cls");
printf("删除学生信息:\n");
system("pause");
return ss;
}
int fun_1_4(int ss)
{
printf("请输入:\n");
printf("1:初始化学生信息\n");
printf("2:插入学生信息\n");
printf("3:删除学生信息\n");
printf("0:返回上一步\n");
return ss;
}
int fun_2_0(int ss)
{
return 0;
}
int fun_2_1(int ss)
{
return 4;
}
int fun_2_2(int ss)
{
return 5;
}
int fun_2_3(int ss)
{
system("cls");
printf("清空学生信息:\n");
system("pause");
return ss;
}
int fun_2_4(int ss)
{
printf("请选择:\n");
printf("1:查找学生信息\n");
printf("2:排序\n");
printf("3:清空学生信息\n");
printf("0:返回上一步\n");
return ss;
}
int fun_3_0(int ss)
{
return 0;
}
int fun_3_1(int ss)
{
system("cls");
printf("保存学生信息:\n");
system("pause");
return ss;
}
int fun_3_2(int ss)
{
system("cls");
printf("读取学生信息:\n");
system("pause");
return ss;
}
int fun_3_3(int ss)
{
return ss;
}
int fun_3_4(int ss)
{
printf("请选择:\n");
printf("1:保存学生信息\n");
printf("2:读取学生信息\n");
printf("0:返回上一步\n");
return ss;
}
int fun_4_0(int ss)
{
return 2;
}
int fun_4_1(int ss)
{
system("cls");
printf("查找最高分:\n");
system("pause");
return ss;
}
int fun_4_2(int ss)
{
system("cls");
printf("查找最低分:\n");
system("pause");
return ss;
}
int fun_4_3(int ss)
{
system("cls");
printf("查找平均分:\n");
system("pause");
return ss;
}
int fun_4_4(int ss)
{
printf("请选择:\n");
printf("1:查找最高分\n");
printf("2:查找最低分\n");
printf("3:查找平均分\n");
printf("0:返回上一步");
return ss;
}
int fun_5_0(int ss)
{
return 2;
}
int fun_5_1(int ss)
{
system("cls");
printf("按学号查找:\n");
system("pause");
return ss;
}
int fun_5_2(int ss)
{
system("cls");
printf("按成绩查找:\n");
system("pause");
return ss;
}
int fun_5_3(int ss)
{
return ss;
}
int fun_5_4(int ss)
{
printf("请选择:\n");
printf("1:按学号排序\n");
printf("2:按成绩排序\n");
printf("0:返回上一步\n");
return 2;
}
int dump(int ss)
{
return ss;
}
[此贴子已经被作者于2016-12-24 09:34编辑过]