day02

 

#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");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值