数据结构day2--8.2

 

一、定义一个学员类型,包含成员属性:姓名、性别、职业、和另一个变量,如果职业是学生,则另一个变量是分数,如果职业是老师,则另一个变量是所带课程。

再封装一个班级类型,包含成员属性:学员数组、班级当前人数,数组大小MAX为40;

操作:

1> 在堆区申请一个班级,并对班级进行初始化

2> 定义添加学员函数,如果班级人数未满,则将某个学员放入到该班级中

ubuntu@ubuntu:2$ ./a.out
空间申请成功
是否添加学员(0不添加)、(1添加),请输入:
1
添加几位学员请输入人数(ps人数<40):
3
请输入添加的1位学员信息:姓名、性别、职业、分数(课程):
张三
男
老师
c语言
请输入添加的2位学员信息:姓名、性别、职业、分数(课程):
李四 女 学生 88
请输入添加的3位学员信息:姓名、性别、职业、分数(课程):
王五 男 学生 77
张三	男	老师	c语言
李四	女	学生	88
王五	男	学生	77
李四
李四	女	学生	88
释放空间成功
ubuntu@ubuntu:2$ cat gyt.c
#include 
#include 
#include 
#define MAX 40

union Job//角色职业
{
	double grade;//成绩
	char course[20];//所带课程
};

struct Stu//学员信息
{
	char name[20];//姓名
	char sex[10];//性别
	char job[10];//职业
   	union Job j;
};

struct Class//班级
{
	struct Stu stu;//学员数组
	int pop;//人数

}c={0};

struct Class *sq(int Max)
{
	struct Class *C=(struct Class *)malloc(sizeof(struct Class)*MAX);
	if(NULL==C){
		printf("空间申请失败\n");
		return NULL;
	}else{
		printf("空间申请成功\n");
		return C;
	}
}

struct Class Add(struct Class *C,int x)//添加
{
	if(NULL == C)
	{
		printf("申请失败\n");
		return;
	}
	int i=0,k=0;
	static int len=0;
	printf("是否添加学员(0不添加)、(1添加),请输入:\n");
	scanf("%d",&k);
	printf("添加几位学员请输入人数(ps人数<40):\n");
	scanf("%d",&len);
	C->pop=len;
	if(k==1&&lenstu.j.grade!=0){
			for(i=0;istu.name,(C+i)->stu.sex,(C+i)->stu.job,&(C+i)->stu.j.grade);
			}
		}
		if(strcmp(C->stu.j.course,"0")!=0){
			for(i=0;istu.name,(C+i)->stu.sex,(C+i)->stu.job,(C+i)->stu.j.course);
			}
		}
	}
}

struct Class sc(struct Class *C,int x)//输出
{
	if(NULL == C)
	{
		printf("申请失败\n");
		return;
	}
	int i=0;
/*	if(C->stu.j.grade!=0){
		for(i=0;ipop;i++)
			printf("%s\t%s\t%s\t%lf\n",(C+i)->stu.name,(C+i)->stu.sex,(C+i)->stu.job,(C+i)->stu.j.grade);
	}*/
	if(strcmp(C->stu.j.course,"0")!=0){
		for(i=0;ipop;i++)
			printf("%s\t%s\t%s\t%s\n",(C+i)->stu.name,(C+i)->stu.sex,(C+i)->stu.job,(C+i)->stu.j.course);
	}
}

struct Class cz(struct Class *C,int x)//查找
{
	if(NULL == C)
	{
		printf("申请失败\n");
		return;
	}
	char a[20];
	int d=0;
	scanf("%s",a);
	int i=0;
    for(i=0;ipop;i++){
	/*	if(strcmp(a,(C+i)->stu.name)==0&&strcmp((C+i)->stu.j.grade,"0")!=0)
			printf("%s\t%s\t%s\t%lf\n",(C+i)->stu.name,(C+i)->stu.sex,(C+i)->stu.job,(C+i)->stu.j.grade);*/
		if(strcmp(a,(C+i)->stu.name)==0&&strcmp((C+i)->stu.j.course,"0")!=0)
			printf("%s\t%s\t%s\t%s\n",(C+i)->stu.name,(C+i)->stu.sex,(C+i)->stu.job,(C+i)->stu.j.course);
	}
    for(i=0;ipop;i++){
		if(strcmp(a,C->stu.name)!=0)
			d+=1;
	}
	if(C->pop

二、思维导图

数据结构day2--8.2_第1张图片

 

你可能感兴趣的:(数据结构)