void menu()在c語(yǔ)言中的意思是:
創(chuàng)新互聯(lián)服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過(guò)十余年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對(duì)網(wǎng)站進(jìn)行網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對(duì)外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
main是每一個(gè)程序都必須具有的,它是由系統(tǒng)定義的。
其后面的一對(duì)()說(shuō)明main是一個(gè)稱為函數(shù)的程序塊。每一個(gè)C語(yǔ)言程序都是從函數(shù)main開始的,也結(jié)束于main函數(shù)最后一個(gè)花括號(hào)。
main()是應(yīng)用程序的主函數(shù),menu()是普通函數(shù)
中國(guó)電力出版社書號(hào)為5123-5504-0的C語(yǔ)言程序設(shè)計(jì)書上有介紹方法:
現(xiàn)在,通過(guò)一個(gè)簡(jiǎn)單的開發(fā)實(shí)例來(lái)理解上述概念。該應(yīng)用軟件運(yùn)行時(shí),首先出現(xiàn)一個(gè)菜單,用戶選擇某一菜單項(xiàng)后進(jìn)入相應(yīng)子模塊處理具體問(wèn)題,處理結(jié)束后回到主菜單。當(dāng)在主菜單上選擇退出功能后,軟件運(yùn)行結(jié)束。將各子模塊劃分成子函數(shù)后,進(jìn)一步將菜單初始化和界面顯示、選擇功能劃分成子函數(shù),最終設(shè)計(jì)出來(lái)的函數(shù)代碼框架如下:
#include stdio.h
//菜單初始化函數(shù):設(shè)置菜單文字
void InitMenu( char *Menu[] )
{
Menu[0]="1. 菜單項(xiàng)1名稱 ";
…
}
// 顯示菜單、接受用戶選擇函數(shù)
// 初學(xué)者可以使用printf、getch函數(shù)實(shí)現(xiàn)基本交互
// 進(jìn)階后可以引入圖形、字體、功能鍵、鼠標(biāo)等元素進(jìn)行人機(jī)交互
int ChooseMenu( char *Menu[], int MaxItem )
{
return 1; // 選擇菜單1
…
return 0; // 選擇退出
}
//模塊一
void sub1(void)
{
…
}
void main( void )
{
char *Menu[10],MaxItem=10; //指針數(shù)組存儲(chǔ)菜單名稱:0-9項(xiàng)
intdone=0; //退出標(biāo)志,為1時(shí)退出
InitMenu( Menu ); //調(diào)用菜單初始化模塊
do
{
// 每輪循環(huán)都重新顯示界面、接受用戶選擇、根據(jù)用戶選擇執(zhí)行相應(yīng)分支
switch( ChooseMenu(Menu, MaxItem ) )
{
case 1:
sub1();
break;
case 2:
…
case 0:
done=1;
}
}while(!done);
}
在結(jié)構(gòu)那一章還有一個(gè)課程設(shè)計(jì)的菜單,太長(zhǎng)了,感興趣找書看看吧
1、對(duì)于窗口組件菜單,需要根據(jù)不同平臺(tái),通過(guò)圖形編程接口,進(jìn)行菜單的編制。
例程:
#includestdio.h?
#includegraphics.h?
#includeconio.h?
void?main()?
{?
char?str;?
int?i,k,choice=1;?
int?gd=DETECT,gm;?
initgraph(gd,gm,"?");?
setbkcolor(2);?
settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
outtextxy(140,150,"B.?The?Digital?Clock.");?
outtextxy(140,180,"C.?Exit.");?
setlinestyle(0,0,3);?
rectangle(170,115,370,145);?
/*按上下鍵選擇所需選項(xiàng)*/?
for(i=1;i=100;i++)?
{?
str=getch();?
if(str==72)?
{?
--choice;?
if(choice==0)choice=3;?
}?
if(str==80)?
{?
++choice;?
if(choice==4)choice=1;?
}?
if(str==13)break;?/*按回車鍵確認(rèn)*/?
/*畫圖做菜單*/?
cleardevice();?
switch(choice)?
{?case?1:?setlinestyle(0,0,3);?
rectangle(170,115,400,145);?
settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,150,"B.?The?Digital?Clock.");?
outtextxy(140,180,"C.?Exit.");?
break;?
case?2:?setlinestyle(0,0,3);?
rectangle(170,145,400,175);?
settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,150,"B.?The?Digital?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,180,"C.?Exit.");?
break;?
case?3:?settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
outtextxy(140,150,"B.?The?Digital?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,180,"C.?Exit.");?
setlinestyle(0,0,3);?
rectangle(170,175,400,205);?
break;?
}?
}?
if(i=100)exit(0);/*如果按鍵超過(guò)100次退出*/?
switch(choice)/*這里引用函數(shù),實(shí)現(xiàn)所要的功能*/?
{?
case?1:?cleardevice();?
setbkcolor(4);?
settextstyle(3,0,4);?
outtextxy(160,120,"No.1?have?not?built.");?break;?
case?2:?cleardevice();?
setbkcolor(4);?
settextstyle(3,0,4);?
outtextxy(160,150,"No.2?have?not?built.");?
break;?
case?3:?exit(0);?
}?
getch();?
closegraph();?
}
2、對(duì)于命令行菜單,直接通過(guò)不斷刷新輸出來(lái)模擬菜單行為。
例程:
#include?stdio.h
#include?stdlib.h?
#include?string.h
int?n,t,k;
int?m;
char?s1[20],s2[20],c;
char?**l;
char?*num[]={"one","two","three","four","five","six","seven","eight","nine","ten"};
void?menu()
{
printf("\n\n\t\t*******************************************************\n");
printf("\t\t**???1.查找字符串S1中S2出現(xiàn)的次數(shù)????????????????????**\n");
printf("\t\t**???2.統(tǒng)計(jì)字符串中大小寫字母,數(shù)字出現(xiàn)的次數(shù)????????**\n");
printf("\t\t**???3.將數(shù)字翻譯成英語(yǔ)??????????????????????????????**\n");
printf("\t\t**???4.結(jié)束??????????????????????????????????????????**\n");
printf("\t\t*******************************************************\n");
printf("\t\t?????您的輸入:");
fflush(stdin);
scanf("%d",n);
}
void?check()
{
char?a[20],b[20];
int?j=0,k,m,l=0;
int?t=0,n=0;
printf("請(qǐng)輸入主字符串:\n");
scanf("%s",a);
k=strlen(a);
printf("請(qǐng)輸入子字符串:\n");
scanf("%s",b);
m=strlen(b);
for(n=0;nk;n++)
if(a[n]==b[0])
{
j++;?/*記錄相同的字符數(shù)*/
do
{????
if(a[++n]==b[++t])
{?
j++;
if(j==m)?
{
l++;/*子字符串相同數(shù)*/
j=0;/*判斷后相同字符數(shù)歸零*/
t=-1;/*判斷中if中++t;t將會(huì)歸零*/
}
}
else
{
j=0;
t=0;
break;/*如果不同跳出while循環(huán)讓for使n+1繼續(xù)判斷*/
}
}while(a[n]!='\0');/*查找完字符數(shù)組a結(jié)束*/
}
printf("子字符串出現(xiàn)次數(shù):\n%d\n",l);
}??????????????????????????????????
void?cout()
{
int?n=0,t=0,k=0;
printf("請(qǐng)輸入一個(gè)字符串:\n");
fflush(stdin);/*清除緩沖*/
while((c=getchar())!='\n')
{
if(c='a'c='z')
n++;
if(c='A'c='Z')
t++;
if(c='0'c='9')
k++;
}
printf("有大寫字母:\n%d\n",t);
printf("有小寫字母:\n%d\n",n);
printf("有數(shù)字:\n%d\n",k);
}
void?number()
{
l=num;
printf("請(qǐng)輸入一個(gè)數(shù)字:(0-10)\n");
fflush(stdin);
scanf("%d",m);
printf("%d對(duì)應(yīng)的英文是:\n%s\n",m,*(l+m-1));
}
void?main()
{
while(1)
{???
system("cls");
menu();
switch(n)
{
case?1:system("cls");check();system("pause");break;
case?2:system("cls");cout();system("pause");break;
case?3:system("cls");number();system("pause");break;
case?4:system("cls");break;
default:system("cls");break;?
}
if(n==4)?break;
}
printf("感謝使用\n");
}
這樣試試:
#includestdio.h
int menu(){
int p;
printf("\t\t 歡迎使用學(xué)生成績(jī)管理系統(tǒng)\n");
printf("\t\t\t0:退出\n");
printf("\t\t\t1:錄入學(xué)生信息\n");
printf("\t\t\t2:排序打印成績(jī)\n");
printf("\t\t\t3:統(tǒng)計(jì)分布情況\n");
printf("\t\t\t4:查詢學(xué)生信息\n");
printf("^_^ 提示:請(qǐng)輸入操作命令 :");
scanf("%d",p);
return p;
}
int main(){
int ch;
//...
while(1){
system("cls");
ch=menu();
if(ch==0)
break;
switch(ch){
case 1:
//調(diào)用 錄入學(xué)生信息 的函數(shù)
break;
case 2:
//調(diào)用 ... 的函數(shù)
break;
case 3:
//調(diào)用 ... 的函數(shù)
break;
case 4:
//調(diào)用 ... 的函數(shù)
break;
}
}
system("pause");
return 0;
}