求助 编译有问题 哪位大神教教我怎么改!!
#include <stdio.h>#include <malloc.h>
#include <string.h>
#define MaxSize 100
typedef struct
{ char num[30]; //考号
char name[30]; //名字
char sex[30]; //性别
char exam[30]; //考试类别
char jg[30]; //籍贯
char age[30]; //年龄
}ElemType;
typedef struct
{
ElemType data[MaxSize],data1[MaxSize],mac[MaxSize],hy[MaxSize];
int length;//记录一门考试有多少人
int length2; //记录一个考生报考的门数
int number; //记录考试种类
} SqList;
void ListAdd(SqList *&L) //添加考生信息
{ int a=0,b=0,c=0,y=0;
printf("请输入考生信息!\n");
printf("考号 姓名 性别 年龄 考试类别 籍贯\n");
scanf("%s %s %s %s %s %s",L->data[L->length].num,L->data[L->length].name,L->data[L->length].sex,L->data[L->length].age,L->data[L->length].exam,L->data[L->length].jg);
printf("\n");
for(int i=0;i<L->length;i++)
{
if(strcmp(L->data[i].num,L->data[L->length].num)==0)
{
for(int j=0;j<L->length2;j++)
{
if(strcmp(L->mac[j].exam,L->data[L->length].exam)==0)
{
a=1;b=1;break;
}
}
if(b==0)
{strcpy(L->mac[L->length2].num,L->data[L->length].num);
strcpy(L->mac[L->length2].jg,L->data[L->length].jg);
strcpy(L->mac[L->length2].name,L->data[L->length].name);
strcpy(L->mac[L->length2].sex,L->data[L->length].sex);
strcpy(L->mac[L->length2].age,L->data[L->length].age);
strcpy(L->mac[L->length2].exam,L->data[L->length].exam);
printf("报名考试成功!\n");
c=1;
while(y<L->length2&&strcmp(L->mac[y].exam,L->data[L->length].exam)!=0)
{
y++;
}
if(y>=L->length2)
{
strcpy(L->hy[L->number].exam,L->data[L->length].exam);
L->number++;
}
L->length2++;
}
}
}
if(a==1)
{
printf("你已经报名了这门考试。\n");
}
if(a==0&&c==0)
{
strcpy(L->mac[L->length2].num,L->data[L->length].num);
strcpy(L->mac[L->length2].jg,L->data[L->length].jg);
strcpy(L->mac[L->length2].name,L->data[L->length].name);
strcpy(L->mac[L->length2].sex,L->data[L->length].sex);
strcpy(L->mac[L->length2].age,L->data[L->length].age);
strcpy(L->mac[L->length2].exam,L->data[L->length].exam);
y=0;
while(y<L->length2&&strcmp(L->mac[y].exam,L->data[L->length].exam)!=0)
{
y++;
}
if(y>=L->length2)
{
strcpy(L->hy[L->number].exam,L->data[L->length].exam);
L->number++;
}
L->length2++;
L->length++;
printf("报名考试成功!\n");
}
}
void ListChange(SqList *&L) //修改考生信息
{
printf("请输入你要修改考生的考号:\n");
char num[11];
scanf("%s",&num);
printf("你要修改的考生信息如下:\n");
int i=0;
while(i<L->length&&strcmp(L->data[i].num,num)!=0)
i++;
if(i>=L->length)
printf("表内没有此考生!\n");
else
{
printf("考号:%s\n",L->data[i].num);
printf("姓名:%s\n",L->data[i].name);
printf("性别:%s\n",L->data[i].sex);
printf("年龄:%s\n",L->data[i].age);
printf("籍贯:%s\n",L->data[i].jg);
printf("参加的考试有:");
for(int j=0;j<L->length2;j++)
{
if(strcmp(L->mac[j].num,L->data[i].num)==0)
{
printf("%s,",L->mac[j].exam);
}
}
printf("\n");
printf("请输入考生信息!\n");
printf("考号 姓名 性别 年龄 籍贯\n");
scanf("%s %s %s %s %s",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg);
for(int q=0;q<L->length2;q++)
{strcpy(L->mac[L->length2].num,L->data[i].num);
strcpy(L->mac[L->length2].jg,L->data[i].jg);
strcpy(L->mac[L->length2].name,L->data[i].name);
strcpy(L->mac[L->length2].sex,L->data[i].sex);
strcpy(L->mac[L->length2].age,L->data[i].age);}
printf("\n");
int a=0,b=0,c;
printf("报名参加的考试有:");
while(a==0)
{for(int w=0;w<L->length2;w++)
{
b++;
if(strcmp(L->mac[w].num,L->data[w].num)==0)
{
scanf("%s,",L->mac[w].exam);
}
printf("还要继续报名其他考试吗? 1:继续 2:不继续");
scanf("%d",&c);
if(c==1)
{
a=0;
}
if(c==2)
{
a=1; break;
}
}
printf("\n");
}
if(a==1)
{
for(int v=b+1;v<L->length2;v++)
{
if(strcmp(L->mac[v].num,num)==0)
{
int j;
for (j=v;j<L->length2-1;j++)
{
L->mac[j]=L->data[j+1];
} L->length2--;
}
}
}
}
printf("修改考生信息成功!\n");
}
void ListDrop(SqList *&L) //删除考生信息
{
printf("请输入你要删除考生的考号!\n");
char num[11];
scanf("%s",&num);
int i=0;
while(i<L->length&&strcmp(L->data[i].num,num)!=0)
i++;
printf("该考生已被删除!\n");
if(i>=L->length)
printf("表内没有此考生!\n");
else
{
int j;
for (j=i;j<L->length-1;j++)
L->data[j]=L->data[j+1];
L->length--;
}
}
void ListPaixu(SqList *&L) //排序
{
int num,i;
printf("1:考号 \n2:考试类别 \n");
printf("请选择你想要进行排序的方式:");
scanf("%d",&num);
printf("\n");
if(num==1)
{
for(i=0;i<L->length-1;i++) //冒泡法排序
{
for(int j=0;j<L->length-1-i;j++)
{
if(strcmp(L->data[j].num,L->data[j+1].num)>0)
{
strcpy(L->data1[j].num,L->data[j].num);
strcpy(L->data[j].num,L->data[j+1].num);
strcpy(L->data[j+1].num,L->data1[j].num);
strcpy(L->data1[j].name,L->data[j].name);
strcpy(L->data[j].name,L->data[j+1].name);
strcpy(L->data[j+1].name,L->data1[j].name);
strcpy(L->data1[j].sex,L->data[j].sex);
strcpy(L->data[j].sex,L->data[j+1].sex);
strcpy(L->data[j+1].sex,L->data1[j].sex);
strcpy(L->data1[j].age,L->data[j].age);
strcpy(L->data[j].age,L->data[j+1].age);
strcpy(L->data[j+1].age,L->data1[j].age);
strcpy(L->data1[j].exam,L->data[j].exam);
strcpy(L->data[j].exam,L->data[j+1].exam);
strcpy(L->data[j+1].exam,L->data1[j].exam);
strcpy(L->data1[j].jg,L->data[j].jg);
strcpy(L->data[j].jg,L->data[j+1].jg);
strcpy(L->data[j+1].jg,L->data1[j].jg);
}
}
}
for (i=0;i<L->length;i++)
{
printf("考号:%s\n",L->data[i].num);
printf("姓名:%s\n",L->data[i].name);
printf("性别:%s\n",L->data[i].sex);
printf("年龄:%s\n",L->data[i].age);
printf("籍贯:%s\n",L->data[i].jg);
printf("参加的考试有:");
for(int j=0;j<L->length2;j++)
{
if(strcmp(L->mac[j].num,L->data[i].num)==0)
{
printf("%s,",L->mac[j].exam);
}
}
printf("\n");
}
}
if(num==2)
{
for(i=0;i<L->length-1;i++)
{
for(int j=0;j<L->length-i-1;j++)
{
if(strcmp(L->data[j].exam,L->data[j+1].exam)>0)
{
strcpy(L->data1[j].num,L->data[j].num);
strcpy(L->data[j].num,L->data[j+1].num);
strcpy(L->data[j+1].num,L->data1[j].num);
strcpy(L->data1[j].name,L->data[j].name);
strcpy(L->data[j].name,L->data[j+1].name);
strcpy(L->data[j+1].name,L->data1[j].name);
strcpy(L->data1[j].sex,L->data[j].sex);
strcpy(L->data[j].sex,L->data[j+1].sex);
strcpy(L->data[j+1].sex,L->data1[j].sex);
strcpy(L->data1[j].age,L->data[j].age);
strcpy(L->data[j].age,L->data[j+1].age);
strcpy(L->data[j+1].age,L->data1[j].age);
strcpy(L->data1[j].exam,L->data[j].exam);
strcpy(L->data[j].exam,L->data[j+1].exam);
strcpy(L->data[j+1].exam,L->data1[j].exam);
strcpy(L->data1[j].jg,L->data[j].jg);
strcpy(L->data[j].jg,L->data[j+1].jg);
strcpy(L->data[j+1].jg,L->data1[j].jg);
}
for(int t=0;t<L->length-1;t++)
{
if(strcmp(L->data[t].exam,L->data[t+1].exam)==0)
{
if(strcmp(L->data[t].num,L->data[t+1].num)>0)
{
strcpy(L->data1[t].num,L->data[t].num);
strcpy(L->data[t].num,L->data[t+1].num);
strcpy(L->data[t+1].num,L->data1[t].num);
strcpy(L->data1[t].name,L->data[t].name);
strcpy(L->data[t].name,L->data[t+1].name);
strcpy(L->data[t+1].name,L->data1[t].name);
strcpy(L->data1[t].sex,L->data[t].sex);
strcpy(L->data[t].sex,L->data[t+1].sex);
strcpy(L->data[t+1].sex,L->data1[t].sex);
strcpy(L->data1[t].age,L->data[t].age);
strcpy(L->data[t].age,L->data[t+1].age);
strcpy(L->data[t+1].age,L->data1[t].age);
strcpy(L->data1[t].exam,L->data[t].exam);
strcpy(L->data[t].exam,L->data[t+1].exam);
strcpy(L->data[t+1].exam,L->data1[t].exam);
strcpy(L->data1[t].jg,L->data[t].jg);
strcpy(L->data[t].jg,L->data[t+1].jg);
strcpy(L->data[t+1].jg,L->data1[t].jg);
}
}
}
}
}
for (i=0;i<L->length;i++)
{
printf("考号:%s\n",L->data[i].num);
printf("姓名:%s\n",L->data[i].name);
printf("性别:%s\n",L->data[i].sex);
printf("年龄:%s\n",L->data[i].age);
printf("籍贯:%s\n",L->data[i].jg);
printf("参加的考试有:");
for(int j=0;j<L->length2;j++)
{
if(strcmp(L->mac[j].num,L->data[i].num)==0)
{
printf("%s,",L->mac[j].exam);
}
}
printf("\n");
}
}
}
void ListSearch(SqList *&L) //查找考生信息
{
int num;
printf("1:考号 \n2:考试类别 \n");
printf("请选择你想要进行查询考生的方式:");
scanf("%d",&num);
printf("\n");
if(num==1)
{
printf("请输入你想要查找考生的考号:");
char num[11];
scanf("%s",&num);
int i=0;
while(i<L->length&&strcmp(L->data[i].num,num)!=0)
i++;
if(i>=L->length)
printf("表内没有此考生!\n");
else
{
printf("考号:%s\n",L->data[i].num);
printf("姓名:%s\n",L->data[i].name);
printf("性别:%s\n",L->data[i].sex);
printf("年龄:%s\n",L->data[i].age);
printf("籍贯:%s\n",L->data[i].jg);
printf("参加的考试有:");
for(int j=0;j<L->length2;j++)
{
if(strcmp(L->mac[j].num,L->data[i].num)==0)
{
printf("%s,",L->mac[j].exam);
}
}
printf("\n");
}
}
if(num==2)
{
printf("请输入你想要查找的考试类别:");
char exam[30];
scanf("%s",&exam);
int i=0,a=0;
for(i;i<L->length2;i++)
{
if(strcmp(L->mac[i].exam,exam)==0)
a++;
}
if(a==0)
{
printf("没有学生参与%s考试\n",exam);
}
else
{
printf("共有%d个学生报名参加%s考试,信息如下:\n",a,exam);
printf("考号 姓名 性别 年龄 考试类别 籍贯\n");
for(int o=0;o<L->length2;o++)
{
if(strcmp(L->mac[o].exam,exam)==0)
{
printf("%s\t%s\t%s\t%s\t%s\t%s",L->mac[o].num,L->mac[o].name,L->mac[o].sex,L->mac[o].age,L->mac[o].exam,L->mac[o].jg);
printf("\n");
}
}
}
}
}
void InitList(SqList *&L)
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0; //用来存储人数
L->length2=0; //存储人次
L->number=0;
}
int ListEmpty(SqList *L)
{
return(L->length==0);
}
void DispList(SqList *&L) //输出考生信息
{
int i;
if(ListEmpty(L))
printf("表内没有任何考生的信息!");
for (i=0;i<L->length;i++)
printf("%s\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].exam,L->data[i].jg);
printf("\n");
}
void ListTongji(SqList *&L)
{
int i,j,a=0;
printf("共有%d个学生报名考试!\n",L->length);
printf("每个学生报名考试种类数量如下:\n");
for (i=0;i<L->length;i++)
{
printf("考号:%s\n",L->data[i].num);
printf("姓名:%s\n",L->data[i].name);
printf("性别:%s\n",L->data[i].sex);
printf("年龄:%s\n",L->data[i].age);
printf("籍贯:%s\n",L->data[i].jg);
printf("参加的考试有:");
for(j=0;j<L->length2;j++)
{
if(strcmp(L->mac[j].num,L->data[i].num)==0)
{
printf("%s,",L->mac[j].exam);
a++;
}
}
printf("共报名参加%d门考试",a);
a=0;
printf("\n");
}
printf("共有%d门考试有同学报名。\n",L->number);
printf("每种类别考试人数如下:\n");
for(i=0;i<L->number;i++)
{
int sum=0;
for(j=0;j<L->length2;j++)
{
if(strcmp(L->hy[i].exam,L->mac[j].exam)==0)
{
sum++;
}
}
printf("报名参加%s考试的考生有%d名。\n",L->hy[i].exam,sum);
}
}
void main()
{
SqList *L;
InitList(L);
int num;
while(1)
{
printf("◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇\n");
printf("\t 欢迎进入考生管理系统! \t \n");
printf("\t 1.报考信息录入 2.考生信息修改 \t \n");
printf("\t 3.考生信息删除 4.考生信息查询 \t \n");
printf("\t 5.考生信息统计 6.考生信息排序 \t\n");
printf("\t 7.退出系统 \t\n");
printf("◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("请选择你要进行的操作:");
scanf("%d",&num);
switch(num)
{
case 1:ListAdd(L);break;
case 2:ListChange(L);break;
case 3:ListDrop(L);break;
case 4:ListSearch(L);break;
case 5:ListTongji(L);break;
case 6:ListPaixu(L);break;
case 7:return;
default:{printf("操作错勿,请重新输入!\n");}
}
}
}