您的位置:首页 > 编程语言

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

2016-12-17 12:43 459 查看
需求:实现一个学生的成绩的录入与查询成绩,每个学士的信息有:学号(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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐