您的位置:首页 > 编程语言 > C语言/C++

急需解决C语言的一个画面编程

2008-01-27 09:30 225 查看
请帮忙看看为什么这个C语言不能退出struct workers *creat()函数,画面右面的白色输出可否能够不显示。谢谢,我在做C语言的大作业。

#include"conio.h"
#include"graphics.h"
#include"stdlib.h"
#include"stdio.h"
#include"malloc.h"
#include"string.h"

#define ESC 0x011b/*退出键*/
#define UP 0x4800/*光标上移键*/
#define DOWN 0x5000/*光标下移键*/
#define LEFT 0x4b00/*光标左移键*/
#define RIGHT 0x4d00/*光标右移键*/
#define ENTER 0x0d00/*回车键*/
#define d 170
#define dx 200
#define dy 170
#define dlei1x 325
#define dlei1y 165
#define dlei2x 293
#define dlei2y 220
#define dlei3x 363
#define dlei3y 220
#define NULL 0
#define SIZE 4
#define LEN sizeof(struct workers)

int maxcolors,maxx,maxy;
int key=1;

struct workers
{
int num;/*职工号*/
char name[10];/*姓名*/
char sex;/*性别*/
int age;/*年龄*/
char degree[10];/*学历*/
long wage;/*工资*/
char address[10];/*住址*/
char phone[11];/*电话号*/
struct workers *next;
};/*illiteracy文盲,elementary school小学,junior high school初中,senior high school高中,
bachelor学士,master硕士,doctor博士,postdoctor博士后*/

void init()
{
int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode=graphresult();
if (errorcode!=grOk)
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}

maxcolors=getmaxcolor()+1;/*读取颜色的最大值*/
maxx=getmaxx();/*读屏幕尺寸*/
maxy=getmaxy();/*读屏幕尺寸*/
cleardevice();
}

void zhanglei()
{
int gong[]={20+d,20+d,50+d,20+d,
50+d,60+d,30+d,60+d,
30+d,75+d,50+d,75+d,
50+d,115+d,43+d,115+d,
25+d,100+d,40+d,105+d,
40+d,85+d,20+d,85+d,
20+d,50+d,40+d,50+d,
40+d,30+d,20+d,30+d,
20+d,20+d};
int chang[]={30+dx,50+dy,50+dx,50+dy,
50+dx,20+dy,60+dx,20+dy,
60+dx,45+dy,71+dx,23+dy,
76+dx,28+dy,64+dx,50+dy,
80+dx,50+dy,80+dx,60+dy,
64+dx,60+dy,95+dx,100+dy,
75+dx,90+dy,60+dx,64+dy,
60+dx,102+dy,70+dx,95+dy,
55+dx,115+dy,50+dx,115+dy,
50+dx,60+dy,30+dx,60+dy,
30+dx,50+dy};

int lei1[]={15+dlei1x,20+dlei1y,65+dlei1x,20+dlei1y,
65+dlei1x,30+dlei1y,35+dlei1x,30+dlei1y,
33+dlei1x,33+dlei1y,62+dlei1x,33+dlei1y,
62+dlei1x,65+dlei1y,30+dlei1x,65+dlei1y,
30+dlei1x,38+dlei1y,15+dlei1x,50+dlei1y,
11+dlei1x,43+dlei1y,25+dlei1x,30+dlei1y,
15+dlei1x,30+dlei1y,15+dlei1x,20+dlei1y};
int leikou1[]={40+dlei1x,43+dlei1y,52+dlei1x,43+dlei1y,
52+dlei1x,55+dlei1y,40+dlei1x,55+dlei1y,
40+dlei1x,43+dlei1y};

int lei2[]={15+dlei2x,20+dlei2y,65+dlei2x,20+dlei2y,
65+dlei2x,30+dlei2y,35+dlei2x,30+dlei2y,
33+dlei2x,33+dlei2y,62+dlei2x,33+dlei2y,
62+dlei2x,65+dlei2y,30+dlei2x,65+dlei2y,
30+dlei2x,38+dlei2y,15+dlei2x,50+dlei2y,
11+dlei2x,43+dlei2y,25+dlei2x,30+dlei2y,
15+dlei2x,30+dlei2y,15+dlei2x,20+dlei2y};
int leikou2[]={40+dlei2x,43+dlei2y,52+dlei2x,43+dlei2y,
52+dlei2x,55+dlei2y,40+dlei2x,55+dlei2y,
40+dlei2x,43+dlei2y};

int lei3[]={15+dlei3x,20+dlei3y,65+dlei3x,20+dlei3y,
65+dlei3x,30+dlei3y,35+dlei3x,30+dlei3y,
33+dlei3x,33+dlei3y,62+dlei3x,33+dlei3y,
62+dlei3x,65+dlei3y,30+dlei3x,65+dlei3y,
30+dlei3x,38+dlei3y,15+dlei3x,50+dlei3y,
11+dlei3x,43+dlei3y,25+dlei3x,30+dlei3y,
15+dlei3x,30+dlei3y,15+dlei3x,20+dlei3y};
int leikou3[]={40+dlei3x,43+dlei3y,52+dlei3x,43+dlei3y,
52+dlei3x,55+dlei3y,40+dlei3x,55+dlei3y,
40+dlei3x,43+dlei3y};

cleardevice();
setbkcolor(BLUE);
setcolor(GREEN); /*设置作图颜色*/
setfillstyle(1,RED);
drawpoly(17,gong); /*写汉字张磊弓*/
floodfill(25+d,25+d,GREEN);
drawpoly(21,chang); /*写汉字张磊长*/
floodfill(35+dx,55+dy,GREEN);

drawpoly(14,lei1); /*写汉字张磊石1*/
floodfill(20+dlei1x,25+dlei1y,GREEN);
setfillstyle(1,BLUE);
drawpoly(5,leikou1); /*写汉字张磊石1*/
floodfill(45+dlei1x,50+dlei1y,GREEN);

setfillstyle(1,RED);
drawpoly(14,lei2); /*写汉字张磊石2*/
floodfill(20+dlei2x,25+dlei2y,GREEN);
setfillstyle(1,BLUE);
drawpoly(5,leikou2); /*写汉字张磊石2*/
floodfill(45+dlei2x,50+dlei2y,GREEN);

setfillstyle(1,RED);
drawpoly(14,lei3); /*写汉字张磊石3*/
floodfill(20+dlei3x,25+dlei3y,GREEN);
setfillstyle(1,BLUE);
drawpoly(5,leikou3); /*写汉字张磊石3*/
floodfill(45+dlei3x,50+dlei3y,GREEN);

settextstyle(0,0,3);
outtextxy(maxx/2-165,maxy/2-170,"The Copyright");
settextstyle(0,0,2);
outtextxy(maxx/2-85,maxy/2-130,"Belongs To");
}

void close()
{
setviewport(0,0,getmaxx(),getmaxy(),1);
getch();
getch();
zhanglei();
getch();
closegraph();/*系统关闭图形模式返回文本模式*/
getch();
exit(1);
}

struct workers *creat()
{
struct workers *head0,*p1,*p2;
int n=0;
int s[5];
setviewport(0,0,getmaxx(),getmaxy(),1);
p1=p2=(struct workers *)malloc(LEN);
head0=NULL;
p1->num=10001;
do
{
n=n+1;
if(n==1)head0=p1;
else p2->next=p1;
p2=p1;
p1=(struct workers *)malloc(LEN);

outtextxy(maxx/2-147,maxy/2-110,"num(for example:10002):");
scanf("%d",&p1->num);getchar();
sprintf(s,"%d",p1->num);
outtextxy(maxx/2+40,maxy/2-110,s);

outtextxy(maxx/2-147,maxy/2-90,"name(<=10):");
gets(p1->name);
outtextxy(maxx/2-60,maxy/2-90,p1->name);

outtextxy(maxx/2-147,maxy/2-70,"sex(F or M):");
scanf("%c",&p1->sex);
outtextxy(maxx/2-50,maxy/2-70,&p1->sex);

outtextxy(maxx/2-147,maxy/2-50,"age:");
scanf("%d",&p1->age);
sprintf(s,"%d",p1->age);
outtextxy(maxx/2-110,maxy/2-50,s);

outtextxy(maxx/2-147,maxy/2-30,"degree:");
scanf("%s",p1->degree);getchar();
outtextxy(maxx/2-85,maxy/2-30,p1->degree);

outtextxy(maxx/2-147,maxy/2-10,"wage:");
scanf("%ld",&p1->wage);getchar();
sprintf(s,"%d",p1->wage);
outtextxy(maxx/2-95,maxy/2-10,s);

outtextxy(maxx/2-147,maxy/2+10,"address(for example:GuangZhou):");
gets(p1->address);
outtextxy(maxx/2-110,maxy/2+30,p1->address);

outtextxy(maxx/2-147,maxy/2+50,"phone:");
gets(p1->phone);
outtextxy(maxx/2-85,maxy/2+50,p1->phone);
getchar();

setfillstyle(1,10);
bar(maxx/2-150,maxy/2-140,maxx/2+150,maxy/2+240);/*工作区*/
}while(bioskey(0)!=ESC);
p2->next=NULL;
free(p1);
return head0;
}

void inputmessage()
{
struct workers *p;
p=creat();
do
{
printf("I love you");
printf("/n/nnum:%d/nname:%s/nsex:%c/nage:%d/ndegree:%s/nwage:%ld/naddress:%s/nphone number:%s",p->num,p->name,p->sex,p->age,p->degree,p->wage,p->address,p->phone);
p=p->next;
}while(p!=NULL);
cleardevice();
}

void cursor(int key0)/*光标*/
{
switch(key)
{
case 0:setfillstyle(1,3);bar(maxx/2-148,maxy/2-162,maxx/2-100,maxy/2-140);
moveto(maxx/2-147,maxy/2-153);
outtext("Input");break;/*菜单Input*/
case 1:setfillstyle(1,3);bar(maxx/2-100,maxy/2-162,maxx/2-35,maxy/2-140);
moveto(maxx/2-88,maxy/2-153);
outtext("Output");break;/*菜单Output*/
case 2:setfillstyle(1,3);bar(maxx/2-30,maxy/2-162,maxx/2+30,maxy/2-140);
moveto(maxx/2-27,maxy/2-153);
outtext("consult");break;/*菜单consult*/
case 3:setfillstyle(1,3);bar(maxx/2+28,maxy/2-162,maxx/2+88,maxy/2-140);
moveto(maxx/2+35,maxy/2-153);
outtext("Delete");break;/*菜单Delete*/
case 4:setfillstyle(1,3);bar(maxx/2+88,maxy/2-162,maxx/2+148,maxy/2-140);
moveto(maxx/2+102,maxy/2-153);
outtext("Exit");break;/*菜单Help*/
default:break;
}

switch(key0)
{
case ESC:break;
case LEFT:key--;break;
case RIGHT:key++;break;
default:break;
}

if(key>4)key=0;
if(key<0)key=4;

switch(key)
{
case 0:setfillstyle(1,9);bar(maxx/2-149,maxy/2-162,maxx/2-100,maxy/2-140);
moveto(maxx/2-147,maxy/2-153);
outtext("Input");break;/*菜单Input*/
case 1:setfillstyle(1,9);bar(maxx/2-95,maxy/2-162,maxx/2-35,maxy/2-140);
moveto(maxx/2-88,maxy/2-153);
outtext("Output");break;/*菜单Output*/
case 2:setfillstyle(1,9);bar(maxx/2-30,maxy/2-162,maxx/2+30,maxy/2-140);
moveto(maxx/2-27,maxy/2-153);
outtext("consult");break;/*菜单consult*/
case 3:setfillstyle(1,9);bar(maxx/2+28,maxy/2-162,maxx/2+88,maxy/2-140);
moveto(maxx/2+35,maxy/2-153);
outtext("Delete");break;/*菜单Delete*/
case 4:setfillstyle(1,9);bar(maxx/2+88,maxy/2-162,maxx/2+148,maxy/2-140);
moveto(maxx/2+102,maxy/2-153);
outtext("Exit");break;/*菜单Help*/
default:break;
}

switch(key)
{
case 0:inputmessage();break;
default:break;
}
}

void interface()
{
int i;
clrscr();
setbkcolor(BLACK);
setviewport(maxx/2-200,maxy/2-240,maxx/2+200,maxy/2+240,1);

setfillstyle(1,BLUE);
bar(maxx/2-150,maxy/2-200,maxx/2+150,maxy/2-165);/*标题栏,显示The auther :zhanglei*/
setfillstyle(1,10);
bar(maxx/2-150,maxy/2-140,maxx/2+150,maxy/2+240);/*工作区*/
setfillstyle(1,3);
bar(maxx/2-150,maxy/2-165,maxx/2+150,maxy/2-140);/*菜单栏*/
line(maxx/2-150,maxy/2-165,maxx/2+150,maxy/2-165);
setcolor(BLUE);
rectangle(maxx/2-150,maxy/2-200,maxx/2+150,maxy/2+240);
setfillstyle(1,3);
line(maxx/2-100,maxy/2-162,maxx/2-100,maxy/2-140);/*画竖线*/
line(maxx/2-35,maxy/2-162,maxx/2-35,maxy/2-140);/*画竖线*/
line(maxx/2+30,maxy/2-162,maxx/2+30,maxy/2-140);/*画竖线*/
line(maxx/2+88,maxy/2-162,maxx/2+88,maxy/2-140);/*画竖线*/

setcolor(RED);
moveto(maxx/2-145,maxy/2-188);/*标题栏,显示The auther :zhanglei*/
settextstyle(2,0,5);
outtext("The auther :zhanglei");

setcolor(BLACK);
moveto(maxx/2-147,maxy/2-153);/*菜单Input*/
outtext("Input");
moveto(maxx/2-88,maxy/2-153);/*菜单Output*/
outtext("Output");
moveto(maxx/2-27,maxy/2-153);/*菜单consult*/
outtext("consult");
moveto(maxx/2+35,maxy/2-153);/*菜单Delete*/
outtext("Delete");
moveto(maxx/2+102,maxy/2-153);/*菜单Help*/
outtext("Exit");

setfillstyle(1,9);
bar(maxx/2-100,maxy/2-162,maxx/2-35,maxy/2-140);
moveto(maxx/2-88,maxy/2-153);
outtext("Output");/*菜单Output*/

for(i=0;i<10;i++)
{
cursor(bioskey(0));
/*printf("key=%x/n",bioskey(0));*/
}
}

main()
{
init();

interface();

close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐