定义一个学员类型,包含成员属性:姓名、性别、职业、和另一个变量,如果职业是学生,则另一个变量是分数,如果职业是老师,则另一个变量是所带课程。
再封装一个班级类型,包含成员属性:学员数组、班级当前人数,数组大小MAX为40;
操作:
1> 在堆区申请一个班级,并对班级进行初始化
2> 定义添加学员函数,如果班级人数未满,则将某个学员放入到该班级中
3> 定义输出函数,展示出当前班级的所有人员信息
4> 定义查找函数,给定一个姓名,查找该名字是否未该班级成员
5> 定义释放函数,将堆区申请的班级空间释放
#include
#include
#include
#define MAX 40
union Zhiye
{
double score;
char kc[20];
};
struct People
{
char name[20];
char sex;
char work[20];
union Zhiye w;
};
struct Class
{
struct People stu;
int len;
}C={0};
struct Class *getClass(int max)
{
struct Class *p=(struct Class *)malloc(sizeof(struct Class)*MAX);
return p;
}
struct Class in_Peo(struct Class *p,int len)
{
int i =0;
for(i=0;i
scanf("%s",(p+i)->stu.w);
if (strcmp((p+i)->stu.work,"student")==0){
printf("学员姓名\t学员性别\t学员职业\t学生成绩\n");
scanf("%s %c %s %lf",(p+i)->stu.name,(p+i)->stu.sex,(p+i)->stu.w,&(p+i)->stu.w.score);}
else if(strcmp((p+i)->stu.work,"teacher")==0){
printf("学员姓名\t学员性别\t学员职业\t老师课程\n");
scanf("%s %c %s %s",(p+i)->stu.name,(p+i)->stu.sex,(p+i)->stu.w,(p+i)->stu.w.kc);}
}
}
struct Class tianjia(struct Class *p,int len)
{
int j = 0;
int i =0;
printf("添加学员\n");
scanf("%d",&j);
for(i=len;i
if(len
len++;}
}
}
struct Class out_Peo(struct Class *p,int len)
{
int i=0;
printf("学员姓名\t学员性别\t学员职业\t学员\n");
for(i=0;i
printf("学员姓名\t学员性别\t学员职业\t学生成绩\n");
printf("%s\t%c\t%s\t%lf\n",(p+i)->stu.name,(p+i)->stu.sex,(p+i)->stu.w,(p+i)->stu.w.score);}
else{
printf("学员姓名\t学员性别\t学员职业\t老师课程\n");
printf("%s\t%c\t%s\t%s\n",(p+i)->stu.name,(p+i)->stu.sex,(p+i)->stu.w,(p+i)->stu.w.kc);}
}
}
struct Class cha_zhao(struct Class *p,int len)
{
int i=0;
char s[20];
scanf("%s",s);
for(i=0;i
printf("%s\t%c\t%s\t%lf\n",(p+i)->stu.name,(p+i)->stu.sex,(p+i)->stu.w,(p+i)->stu.w.score);
else
printf("无此人\n");
}
}
void myFree(struct Class *p)
{
free(p);
p=NULL;
}
int main(int argc, const char *argv[])
{
int len =3;
struct Class *p=getClass(MAX);
in_Peo(p,len);
tianjia(p,len);
int j =0;
scanf("%d",&j);
out_Peo(p,len+j);
cha_zhao(p,len+j);
myFree(p);
p=NULL;
return 0;
}
2.思维导图