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

请帮忙看看为什么这个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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值