1西文下拉菜单设计报告课程名称:C语言程序课程设计实验名称:西文下拉菜单设计姓名:董兆静学号:2012051424指导老师:丁富华实践时间:2课程设计题目:西文下拉菜单的设计主要功能:1、完成一个类似TC集成系统菜单的西文下拉菜单的设计2、不要求实现各子菜单的功能要求:可以通过光标键的移动来选择不同的菜单项,被选择的菜单项反相显示,当选定某个菜单项后,按回车键可以实现一个简单的动作。总设计:(程序设计组成框图、流程图)主函数system(color16);KK()vMainMenu()File_PrintFileMenu()Edit_PrintFileMenu()Help_PrintFileMenu()our()Yy()Yy1()Yy2()File_a_PrintFileMenu()le_ab_FiPrintFileMenu()File_abc_PrintFileMenu()Edit_a_PrintFileMenu()Edit_ab_PrintFileMenu()Edit_abc_PrintFileMenu()Help_a_PrintFileMenu()Help_ab_PrintFileMenu()Pp()Help_abc_PrintFileMenu()Pp()程序设计组成框图3调用函数同(1)(1)调用函数开始主函数System()KK()VmainMune菜单F1菜单F2菜单F3F菜单F4yy()Pp()调用函数File_abFile_abc调用上移fF4Our()退出YN调用函数getch()=13YN跳出同(1)同(1)File_aFile_abFile_abc调用函数调用函数yy1()yy2()①②输出功能同(1)同(1)下移switch(getch(80)switch(getch(72)File_a流程图4详细设计:(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)整个系统除了主函数外,另外还有将近十个函数,实现五大功能:输入功能、显示功能、输出功能、以及光标键的上下移动功能、跳出选项功能。各个函数的详细设计说明分别如下:1、主函数main()利用无限次循环for(;;)和system()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。2、命名函数void….Menu()用void命名我们要做的菜单函数,如voidFile_PrintFileMenu();voidEdit_PrintFileMenu();voidHelp_PrintFileMenu();等等,使接下来的函数调用能调用处我们制作的下拉菜单。下移Pp()getch()=13Pp()getch()=13①②上移下移上移Edit_aEdit_abEdit_abcEdit_aEdit_abEdit_abcHelp_aHelp_ab.Help_abcHelp_aHelp_abHelp_abc调用函数YN输出功能跳出(2)同(2)同(2)同(2)同(2)同(2)调用函数(3)同(3)同(3)同(3)同(3)同(3)输出功能跳出switch(getch(80)switch(getch(72)switch(getch(80)switch(getch(72)53、按键函数GetAsyncKeyState利用按键函数GetAsyncKeyState来控制程序,它组要负责对按键的识别和识别后的函数调用功能。4、颜色调用函数system(cls)利用system(cls)的颜色调用函数,我们能从颜色库中调用各种颜色来制作我们的下拉菜单,使我们的下拉菜单更为简单化。5、Ifelse语句在我们的程序中我们用到了if…else语句来做判断作用,还用到了if语句的嵌套。应当注意if与else得配对关系。Else总是与它上面的最近的未配对的if配对。6、Switch语句Switch语句是多分支选择语句。Switch后面括号内的“表达式”,ANSI标准允许它为任何类型;当表达式的值与某一个case后面的常量表达式的值相等时,就执行case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句;每一个case的常量表达式的值必须互不相同;否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案);各个case和default得出现次序不影响执行结果;执行完一个case后面的语句后,流程控制转移到下一个case继续执行;我们采用分模块设计程序,我们的这个西文下拉菜单程序分为三个模块,每个模块的功能基本相同,只是执行的途径不同而已,下面我介绍一下模块三的功能。程序开始执行时,调用库函数里的函数system(color16),用命令来执行平面的颜色。接着,继续执行,调用函数kk(),一开始执行函数kk(),就调用主菜单函数vmainmune(),执行时输出主菜单(FileF1EditF2HelpF3OurF4),模块二的功能就是执行主菜单中的EditF1的任务,输出Edit的下拉子菜单,并执行其子菜单的简单的功能。输出主菜单后,系统将调用库函数中的另一个函数GetAsyncKeyState(VK_F1),选择按键F3,又调用函数Help_PrintFileMenu(),输出Help的下拉菜单。之后,返回kk()函数,接着继续执行,调用函数yy()1,yy()1函数的功能就是对Help菜单的选项进行上下选择。在这里,同样调用了库函数中的函数GetAsyncKeyState(VK_F9),按一下下光标键键,调用函数Help_a_PrintFileMenu(),既输出对Edit第一个选项的选择,再调用函数PP(),如需要输出其功能,按一下Enter键,将输出其简单的功能,如不需输出其功能,调用PP()函数后,将不执行任何操作跳出PP()。对Edit菜单进行选择了一次,下光标键和上光标键将自加一,每按一下下光标键,菜单将向下选择一次。上光标键是向上选择键,其实现过程与向下选择的过程相同,每完成一次向上选择,下光标键和上光标键将自减一,在你进行操作是出错时,按一下F11键,将调用库函数system(cls),其功能是对屏幕进行清屏,再调用kk()函数,回到显示主菜单的状态,继续你所需的操作。软件使用说明:西文下拉菜单:这是一个简单的西文下拉菜单的软件,能输出一个主菜单,对应的菜单能输出子菜单,选中对应的选项后能执行简单的功能。在这个软件的设计中,一共采用了八个按键对它进行控制,每个按键都有对应的功能,下面对每个按键的功能进行说明:F1:按一下F1键,能弹出文件(file)的菜单。F2:按一下F2键,能弹出编辑(edit)的菜单。F3:按一下F3键,能弹出帮助(help)的菜单。6F4:按一下F4键,能弹出开发成员的名字。下光标键:按一下下光标键,光标下移。上光标:按一下上光标键,光标上移。F11:挨一下F11键,返回主菜单。回车键:按一下回车键键,执行当前所选功能。完整程序:#includestdio.h#includestdlib.h#includewindows.h#includeconio.hvoidvMainMenu()/*主菜单*/{printf(File(F1)\tEdit(F2)\tHelp(F3)\tour(F4)下(up)上(down)\n);printf(确定(enter)退(f11)\n);}/*输出主菜单*/voidkk()/*命名函数名*/{intfF1=0,fF2=0,fF3=0,fF4=0,fF9=0,fF10=-1;voidFile_PrintFileMenu();/*下拉菜单函数*/voidEdit_PrintFileMenu();/*下拉菜单函数*/voidHelp_PrintFileMenu();/*下拉菜单函数*/voidyy();voidyy1();voidyy2();voidour();/*下拉菜单函数*/voidpp();vMainMenu();while(1){if(GetAsyncKeyState(VK_F1)0)/*按键函数*/{if(fF1==0)File_PrintFileMenu();yy();/*调用YY函数*/Sleep(100);}if(GetAsyncKeyState(VK_F2)0)/*按键函数*/{if(fF2==0)Edit_PrintFileMenu();yy1();Sleep(100);}if(GetAsyncKeyState(VK_F3)0)/*按键函数*/{if(fF3==0)7Help_PrintFileMenu();yy2();Sleep(100);}if(GetAsyncKeyState(VK_F4)0)/*按键函数*/{if(fF4==0)our();yy();Sleep(100);break;}}system(pause);}voidpp()/*选择函数*/{while(1){if(getch()==13)/*检测按下的键再判断是不是enter键*/{printf(\n\n\n\n\n正在执行其他程序...........\n);gotoloop;}elsegotoloop;}loop:;}voidyy()/*光标调用函数*/{voidFile_a_PrintFileMenu();voidFile_abc_PrintFileMenu();voidFile_ab_PrintFileMenu();voidyya();while(1){switch(getch())/*检测按下的键再判断是不是上下光标键*/{case80:{File_a_PrintFileMenu();pp();yya();}break;case72:File_abc_PrintFileMenu();pp();yya();break;}if(GetAsyncKeyState(VK_F11)0){system(cls);kk();}}}voidyya()8{voidFile_ab_PrintFileMenu();voidFile_a_PrintFileMenu();voidFile_abc_PrintFileMenu();voidyyab();while(1){switch(getch()){case80:File_ab_PrintFileMenu();pp();yyab();break;case72:File_abc_PrintFileMenu();pp();break;}if(GetAsyncKeyState(VK_F11)0)/*按下f11键退出*/{system(cls);kk();}}}voidyyab(){voidFile_abc_PrintFileMenu();voidFile_a_PrintFileMenu();voidFile_ab_PrintFileMenu();voidyyabc();while(1){switch(getch()){case80:File_abc_PrintFileMenu();pp();yyabc();break;case72:File_a_PrintFileMenu();pp();yy();break;}if(GetAsyncKeyState(VK_F11)0){system(cls);kk();}}}voidyyabc(){voidFile_ab_PrintFileMenu();while(1){switch(getch()){case80:yy();break;case72:File_ab_PrintFileMenu();pp();yyab();break;}if(GetAsyncKeyState(VK_F11)0){system(cls);kk();}}}9/*************************************************************************************/voidyy1()/*E