实现一个学生的成绩的录入与查询成绩(不算原创,也不算转载,是根据他人代码改动而来)

需求:实现一个学生的成绩的录入与查询成绩,每个学士的信息有:学号(ID),名字,成绩(语数外),要求功能;

1,可以在控制太录入学生信息;

2,可以查询已经录入的学生的个数;

3,可以通过名字查询某个学生信息;

4,可以列表显示所有学生的成绩;


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
	int id;	//学号
	char name[16];//姓名
	int score[3];//成绩
};
typedef struct Student Student;
 Student data[100];			//储存所有数据
int     count = 0;			//计算总数
int input(Student *s);		//声明一个用于信息输入函数
int add(Student *s);	//声明用于储存	
void list_all();		//将数据源里的所有记录打印出来
Student *cfind(const char*name);
int main()
{
	char cmdline[128];
	while (1)
	{
		puts("请输入你想要的命令:(add 添加,list 打印所有,find 查找,count 显示总数 exit 推出)");
		printf("->");
		scanf("%s", cmdline);
		printf("cmd:%s\n", cmdline);
		if (strcmp(cmdline, "exit") == 0)
		{
			printf("now cxit...\n");
			break;
		}
		if (strcmp(cmdline, "add") == 0)//add 添加
		{
			Student s;
			input(&s);
			add(&s);
			continue;
		}
		if (strcmp(cmdline, "list") == 0)//list 打印所有
		{
			list_all();
			continue;
		}
		if (strcmp(cmdline, "count") == 0)//显示总数
		{
			printf("total:%d\n", count);
		}
		if (strcmp(cmdline, "find") == 0)//查找
		{
			printf("Inputs find:\n");
			char name[16];
			scanf("%s", name);
			Student *s = cfind(name);
			if (s)
			{
				list_all();
			}
			else
				printf("Not found\n");
			continue;
		}
	}
}
int input(Student *s)
{
	puts("Input ID:");
	scanf("%d", &(s->id));
	puts("Input Name:");
	scanf("%s", &s->name);
	puts("Input Score:");
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	s->score[0] = a;
	s->score[1] = b;
	s->score[2] = c;
	return 0;
}
int add(const Student *s)
{
	data[count]=*s;
	count++;
	return 0;
}
void list_all()
{
	puts("-----------------------------------");
	for (int i = 0; i < count; i++)
	{
		Student *s = &data[i];
		printf("ID:%d\tName:%s\tScore:%d %d %d",
			s->id,
			s->name,
			s->score[0],
			s->score[1],
			s->score[2]
			);
	}
	printf("\n");
	puts("-----------------------------------");
	return 0;
}
Student *cfind(const char*name)
{
	for (int i = 0; i < count; i++)
	{
		Student *s = &data[i];
		if (strcmp(name, s->name) == 0)
			return s;
	}
	return NULL;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值