#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义学员类型
typedef struct People
{
char name[100];
char sex;
char job;
union
{
int score;
char lesson[100];
};
}pe;
typedef struct Classroom
{
pe class[100];
int len;
}cla;//定义空间申请函数
cla *getClass()
{
cla *P=(cla *)malloc(sizeof(P));
if(NULL==P)
{
printf("申请失败");
return NULL;
}else
{
printf("申请成功");
return P;
}
}
//定义添加学员函数
void addpeople(cla *P)
{
//判断传过来的指针是否合法
if(NULL==P)
{
printf("不合法\n");
return;
}
if(40<P->len)
{
printf("班级已满");
}
else
{
printf("请输入学员姓名:");
scanf("%s",(P->class+P->len)->name);
printf("请输入学员性别:");
scanf(" %c",&(P->class+P->len)->sex);
printf("请输入学员职业:");
scanf(" %c",&(P->class+P->len)->job);
if((P->class+P->len)->job=='s')
{
printf("请输入学生成绩:");
scanf("%d",&(P->class+P->len)->score);
}
else if((P->class+P->len)->job=='t'){
printf("请输入老师所带课程:");
scanf("%s",(P->class+P->len)->lesson);}
P->len++;
}
}
//定义输出函数
void output(cla *P)
{
if(NULL==P)
{
printf("班级不合法");
return;
}else{
printf("姓名\t性别\t职业\t成绩/课程\n");
for(int i=0;i<P->len;i++)
{
printf("%s\t%c\t%c\t",(P->class+i)->name,(P->class+i)->sex,(P->class+i)->job);
if((P->class+i)->job=='s')
{
printf("%d\n",(P->class+i)->score);
}
else if((P->class+i)->job=='t')
{
printf("%s\n",(P->class+i)->lesson);
}
}
}
}
//定义查找函数
void search(cla *P,const char *n){
int flag=0;
for(int i=0;i<P->len;i++)
{
if(!strcmp(n,(P->class+i)->name))
{
flag=1;
}
}
if(flag=1)
{
printf("学员%s存在\n",(P->class+P->len)->name);
}
}
//定义释放函数
void freePeople(cla *P)
{
if(NULL!=P)
{
free(P);
P=NULL;
}
}
int main(int argc, const char *argv[])
{
cla *P=getClass();
P->len=0;
addpeople(P);
addpeople(P);
addpeople(P);
output(P);
getchar();
char n[100];
printf("输入学员姓名");
gets(n);
search(P,n);
freePeople(P);
return 0;
}