嵌入式培训8/2

 

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

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

操作:

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

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

3> 定义输出函数,展示出当前班级的所有人员信息

4> 定义查找函数,给定一个姓名,查找该名字是否未该班级成员

5> 定义释放函数,将堆区申请的班级空间释放

#include
#include
#include
struct Student{char name[100];char gender[100];char occupation[100];union S{int score;        char course[100]; };
};
struct Class{struct Student stds[40];  int count;            
};
//申请班级空间
struct Class *getclass()
{struct Class *p = (struct Class *)malloc(sizeof(struct Class));return p;
}
//初始化班级
void initClass(struct Class* p) {p->count = 0;
}
//添加人员
void addstd(struct Class* cls, char* name, char* gender, char* occupation, int score, char* course) {if (cls->count < 40) {struct Student std;//定义临时人员变量strcpy(std.name, name);strcpy(std.gender, gender);strcpy(std.occupation, occupation);if (*occupation=="学生"){std.S.score = score;} else {strcpy(std.S.course, course);}cls->stds[(cls->count)++] = std;printf("添加成功\n");} else {printf("班级已满\n");}
}
//输出人员信息
void output(struct Class cls) {printf("班级成员信息:\n");for (int i = 0; i < cls.count; i++) {printf("姓名:%s, 性别:%s, 职业:%s", cls.stds[i].name, cls.stds[i].gender, cls.stds[i].occupation);if (cls.stds[i].occupation=="学生") {printf(" 分数:%d\n", cls.stds[i].S.score);} else {printf(" 所带课程:%s\n", cls.stds[i].S.course);}}
}
//查找人员
void find(struct Class cls, char* name) {for (int i = 0; i < cls.count; i++) {if (cls.stds[i].name=="*name") {printf("yes\n");}else{printf("no\n");}}
}
//释放班级空间
void freeClass(struct Class *p) {p->count = 0;free(p);p = NULL; printf("班级空间释放成功。\n");
}int main() {struct Class* cls = getclass();initClass(cls);addstd(cls, "六", "男", "学生", 90, "");addstd(cls, "七", "男", "教师", 0, "数学");output(*cls);char s[100];printf("输入查找成员名:");scanf("%s", s);find(*cls, s);freeClass(cls);cls = NULL;return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部