#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 40
typedef struct
{
char name[20];
char sex;
char job;
union {
double score;
char sub[20];
};
}Stu;
typedef struct
{
Stu data[MAX];
int len;
}Class, *Class_ptr;
Class_ptr create();
int add(Class_ptr C, Stu s);
void show(Class_ptr C);
int search(Class_ptr C, const char* name);
void class_free(Class_ptr C);
#endif
#include "head.h"
int main(int argc, const char *argv[])
{
Class_ptr C = create();
if(NULL == C)
{
return -1;
}
while(1){
Stu s;
printf("请输入学员姓名:");
scanf("%s",s.name);
printf("请输入学员的性别(M|W)");
scanf(" %c",&s.sex);
printf("请输入学员的职业(S|T)");
scanf(" %c",&s.job);
if(s.job == 'S'||s.job=='s'){
printf("请输入学员分数:");
scanf("%lf",&s.score);
}else if(s.job=='T'||s.job=='t'){
printf("请输入学员所带课程:");
scanf("%s",s.sub);
}
add(C, s);
char judge;
printf("是否继续录入(Y|N):");
scanf(" %c",&judge);
if(judge =='Y'||judge=='y'){
if(C->len < MAX){
continue;
}else{
printf("操作失败,班级满了\n");
break;
}
}else{
break;
}
}
show(C);
char name[20];
printf("请输入要查找的姓名:");
scanf("%s",name);
search(C, name);
class_free(C);
C = NULL;
return 0;
}
#include "head.h"
Class_ptr create()
{
Class_ptr C = (Class_ptr)malloc(sizeof(Class));
if(NULL == C){
printf("空间申请失败\n");
return NULL;
}
C->len = 0;
printf("班级创建成功\n");
return C;
}
int add(Class_ptr C, Stu s)
{
if(NULL==C || C->len==MAX){
printf("添加失败\n");
return -1;
}
C->data[C->len] = s;
C->len++;
printf("添加成功\n");
return 0;
}
void show(Class_ptr C)
{
if(NULL==C || C->len==0){
printf("操作失败\n");
return;
}
printf("当前班级人员信息如下\n");
printf("姓名\t性别\t职业\t成绩或课程\n");
for(int i=0; i<C->len; i++){
printf("%s\t%c\t%c\t",C->data[i].name, C->data[i].sex, C->data[i].job);
if(C->data[i].job=='S' || C->data[i].job=='s'){
printf("%.2lf\n",C->data[i].score);
}
else{
printf("%s\n",C->data[i].sub);
}
}
}
int search(Class_ptr C, const char* name)
{
if(NULL==C || C->len==0){
printf("查找个der...\n");
return -1;
}
int flag = 0;
for(int i=0; i<C->len; i++){
if(strcmp(C->data[i].name, name)==0){
flag=1;
printf("%s\t\t%c\t%c\t",C->data[i].name, C->data[i].sex, C->data[i].job);
if(C->data[i].job=='S' || C->data[i].job=='s'){
printf("%.2lf\n",C->data[i].score);
}
else{
printf("%s\n",C->data[i].sub);
}
}
}
if(flag==0){
printf("您走错班了,该班查无此人\n");
return -1;
}
return 0;
}
void class_free(Class_ptr C)
{
if(NULL != C){
free(C);
C = NULL;
}
printf("释放成功\n");
}