#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct patients
{
char name[20];
char id_number[20];
char disease[20];
char bed_number[5];
int q;
struct patients* pnext;
};
struct patients* create(int *n)
{
struct patients *pnew,*pend,*phead;
char space[10]={"********"};
char a[4];
phead=pnew=pend=(struct patients*)malloc(sizeof(struct patients));
if(*n==0)
{
phead->pnext=NULL;
}
printf("请输入患者的姓名:");
scanf("%s",&pnew->name);
printf("请输入患者的证件号:");
scanf("%s",&pnew->id_number);
printf("请输入患者所属的科室:");
scanf("%s",&pnew->disease);
printf("请输入患者的病床号:");
scanf("%s",&pnew->bed_number);
printf("输入99结束注册");
scanf("%d",&pnew->q);
*n++;
FILE *fp;
fp=fopen("病人信息.txt","w");
fputs(pnew->name,fp);
fputs(space,fp);
fputs(pnew->id_number,fp);
fputs(space,fp);
fputs(pnew->disease,fp);
fputs(space,fp);
fputs(pnew->bed_number,fp);
fputc('\n',fp);
fclose(fp);
for(;;)
{
if(pend->q==99)
{
break;
}
pnew=(struct patients*)malloc(sizeof(struct patients));
printf("请输入患者的姓名:");
scanf("%s",&pnew->name);
printf("请输入患者的证件号:");
scanf("%s",&pnew->id_number);
printf("请输入患者所属的科室:");
scanf("%s",&pnew->disease);
printf("请输入患者的病床号:");
scanf("%s",&pnew->bed_number);
printf("输入99结束注册");
scanf("%d",&pnew->q);
*n++;
pend->pnext=pnew;
pend=pnew;
if(*n==19)
{
printf("床位已满,自动退出循环\n");
return phead;
}
fp=fopen("病人信息.txt","a");
fputs(pnew->name,fp);
fputs(space,fp);
fputs(pnew->id_number,fp);
fputs(space,fp);
fputs(pnew->disease,fp);
fputs(space,fp);
fputs(pnew->bed_number,fp);
fputc('\n',fp);
fclose(fp);
}
return phead;
}
void welcome(void)
{
printf("-------------------------------------\n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" 欢迎来到住院部管理界面 \n");
printf(" \n");
printf(" 输入1进入病床管理界面 \n");
printf(" 输入2进入患者管理界面 \n");
printf(" \n");
printf("-------------------------------------\n");
}
void bed(void)
{
printf("-------------------------------------\n");
printf(" \n");
printf(" 输入1查看病床情况 \n");
printf(" 输入2修改病床信息 \n");
printf(" 输入3进入保修页面 \n");
printf(" 输入0返回住院部管理界面 \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf("-------------------------------------\n");
}
void see(int* p)
{
int j;
printf("0表示空闲,1表示有人,2表示损坏");
for(j=0;j<20;j++)
{
if(j%5==0)
{
printf("\n");
}
printf("%d ",*(p+j));
}
}
void change(int *p)
{
int j,k;
printf("请输入床号的位置:\n先输入行,后输入列,中间用逗号隔开\n");
scanf("%d,%d",&j,&k);
int t=5*(j-1)+k-1;
printf("该床为第%d号床,请输入它的状态:\n0表示空闲,1表示有人\n",(t+1));
scanf("%d",(p+t));
system("cls");
printf("修改成功\n");
see(p);
}
void repair(int *p)
{
int j,k;
printf("请输入床号的位置:\n先输入行,后输入列,中间用逗号隔开\n");
scanf("%d,%d",&j,&k);
int t=5*(j-1)+k-1;
printf("该床为第%d号床,已记录他的损坏信息,我们会尽快维修。",(t+1));
*(p+t)=2;
FILE *fp;
fp=fopen("维修信息.txt","w");
fputs("有设备损坏,请登录住院部界面查看。",fp);
fclose(fp);
}
void person(void)
{
printf("-------------------------------------\n");
printf(" \n");
printf(" 输入1注册所有病人的信息 \n");
printf(" 输入2查看病人信息 \n");
printf(" 输入3修改病人信息 \n");
printf(" \n");
printf(" \n");
printf(" 输入0返回住院部管理界面 \n");
printf(" \n");
printf("-------------------------------------\n");
}
struct patients* re(int *n)
{
struct patients *phead;
phead=create(n);
return phead;
}
void see_patients(struct patients *phead)
{
struct patients *pend;
pend=phead;
for(;;)
{
printf("%s******",pend->name);
printf("%s******",pend->id_number);
printf("%s******",pend->disease);
printf("%s******",pend->bed_number);
printf("\n");
pend=pend->pnext;
if(pend==NULL)
{
break;
}
}
}
struct patients *change_patients(int b,struct patients *phead)
{
int i=0;
struct patients *pend,*pnew,*p,*q;
pend=phead;
for(i;i<b-1;i++)
{
q=pend;//one
pend=pend->pnext;//two
p=pend->pnext;//three
}
pnew=(struct patients*)malloc(sizeof(struct patients));
printf("请输入患者的姓名:");
scanf("%s",&pnew->name);
printf("请输入患者的证件号:");
scanf("%s",&pnew->id_number);
printf("请输入患者所属的科室:");
scanf("%s",&pnew->disease);
printf("请输入患者的病床号:");
scanf("%s",&pnew->bed_number);
pnew->pnext=p;
q->pnext=pnew;
return phead;
}
void main()
{
int a[20],i,j,k;
i=0;
int icount=0;
struct patients *phead;
for(i=0;i<20;i++)
{
a[i]=0;
}
menu:
welcome();
printf("请输入:");
scanf("%d",&i);
if(i==1)
{
system("cls");
bed();
printf("请输入:");
scanf("%d",&j);
system("cls");
if(j==1)
{
see(a);
getchar();
getchar();
system("cls");
goto menu;
}
else if(j==2)
{
change(a);
getchar();
getchar();
system("cls");
goto menu;
}
else if(j==3)
{
repair(a);
getchar();
getchar();
system("cls");
goto menu;
}
else if(j==0)
{
goto menu;
}
else
{
printf("输入有误,请重新输入\n");
goto menu;
}
}
else if(i==2)
{
system("cls");
person();
printf("请输入:");
scanf("%d",&k);
if(k==1)
{
system("cls");
phead=re(&icount);
getchar();
system("cls");
goto menu;
}
else if(k==2)
{
system("cls");
see_patients(phead);
system("cls");
goto menu;
}
else if(k==0)
{
goto menu;
}
else if(k==3)
{
int l;
printf("请输入想修改的编号:");
scanf("%d",&l);
change_patients(l,phead);
getchar();
getchar();
system("cls");
goto menu;
}
}
else
{
system("cls");
printf("请输入有效信息");
goto menu;
}
}
上面是代码
问题是:进入患者管理界面,查看病人信息后无法回到主菜单,程序会直接结束,我不太清楚为什么