當前位置:菜譜大全網 - 菜譜 - 怎樣用C語言編寫菜單

怎樣用C語言編寫菜單

對於窗口組件菜單,需要根據不同平臺,通過圖形編程接口,進行菜單的編制。

例程:

#include<stdio.h>?

#include<graphics.h>?

#include<conio.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);?

/*按上下鍵選擇所需選項*/?

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;?/*按回車鍵確認*/?

/*畫圖做菜單*/?

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);/*如果按鍵超過100次退出*/?

switch(choice)/*這裏引用函數,實現所要的功能*/?

{?

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();?

}

對於命令行菜單,直接通過不斷刷新輸出來模擬菜單行為。

例程:

#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出現的次數**\n");

printf("\t\t**2.統計字符串中大小寫字母,數字出現的次數**\n");

printf("\t\t**3.將數字翻譯成英語?**\n");

printf("\t\t**4.結束?**\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("請輸入主字符串:\n");

scanf("%s",a);

k=strlen(a);

printf("請輸入子字符串:\n");

scanf("%s",b);

m=strlen(b);

for(n=0;n<k;n++)

if(a[n]==b[0])

{

j++;?/*記錄相同的字符數*/

do

{

if(a[++n]==b[++t])

{?

j++;

if(j==m)?

{

l++;/*子字符串相同數*/

j=0;/*判斷後相同字符數歸零*/

t=-1;/*判斷中if中++t;t將會歸零*/

}

}

else

{

j=0;

t=0;

break;/*如果不同跳出while循環讓for使n+1繼續判斷*/

}

}while(a[n]!='\0');/*查找完字符數組a結束*/

}

printf("子字符串出現次數:\n%d\n",l);

}?

void?cout()

{

int?n=0,t=0,k=0;

printf("請輸入壹個字符串:\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("有數字:\n%d\n",k);

}

void?number()

{

l=num;

printf("請輸入壹個數字:(0-10)\n");

fflush(stdin);

scanf("%d",&m);

printf("%d對應的英文是:\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");

}