我想知道对这段程序的设计思路

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int id;//学号
char name[32];//姓名
char sex[32];//性别
char c[32];//班级
float r[4]; //成绩:0 英语;1 数学;2 政治;3 专业课
}student;//学生成绩结构体

student sarray[100];//学生成绩结构体数组
int scount = 0;//当前学生成绩数量
int studentFindId(int to_id)//根据学号查找当前成绩,返回在数组中的位置
{
int i;
for (i = 0; i < scount; i++)
{
if (sarray[i].id == to_id)
return i;
}

return -1;

}

void printall()//打印全部成绩信息
{
int i;
if (scount == 0) return;
printf("学号\t姓名\t班级\t英语\t数学\t政治\t专业课\n");

for (i = 0; i < scount; i++)
{
    printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2ft%.2f\n", sarray[i].id, sarray[i].name, sarray[i].c, sarray[i].r[0], sarray[i].r[1], sarray[i].r[2], sarray[i].r[3]);
}

}

void add()//添加成绩信息
{
int id;
int index;
if (scount == 100) return;
printf("请输入添加学号:");
scanf("%d", &id);
index = studentFindId(id);
if (index == -1)
{
sarray[scount].id = id;
printf("请输入姓名:");
scanf("%s", &sarray[scount].name);
printf("请输入性别:");
scanf("%s", &sarray[scount].sex);
printf("请输入班级:");
scanf("%s", &sarray[scount].c);
printf("请输入英语:");
scanf("%f", &sarray[scount].r[0]);
printf("请输入数学:");
scanf("%f", &sarray[scount].r[1]);
printf("请输入政治:");
scanf("%f", &sarray[scount].r[2]);
printf("请输入专业课:");
scanf("%f", &sarray[scount].r[3]);
scount++;
}
else printf("此成绩信息已存在\n");
}

void findid()//根据学号查找成绩信息
{
int i,j;
int id;
float sum;
printf("请输入学号:");
scanf("%d", &id);
printf("学号\t姓名\t性别\t班级\t英语\t数学\t政治\t专业课\n");
for (i = 0; i < scount; i++)
{
if (sarray[i].id ==id)//比较学会
{
sum = 0;
for (j = 0; j < 4; j++)
{
sum += sarray[i].r[j];
}
printf("%d\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", sarray[i].id, sarray[i].name, sarray[i].sex, sarray[i].c, sarray[i].r[0], sarray[i].r[1], sarray[i].r[2], sarray[i].r[3]);
break;
}
}
}

void findname()//根据姓名查找成绩信息
{
int i, j;
char name[32];
float sum;
printf("请输入姓名:");
scanf("%s", &name);
printf("学号\t姓名\t性别\t班级\t英语\t数学\t政治\t专业课\n");
for (i = 0; i < scount; i++)
{
if (strcmp(sarray[i].name, name) == 0)//比较姓名是否相同
{
sum = 0;
for (j = 0; j < 4; j++)
{
sum += sarray[i].r[j];
}
printf("%d\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", sarray[i].id, sarray[i].name, sarray[i].sex, sarray[i].c, sarray[i].r[0], sarray[i].r[1], sarray[i].r[2], sarray[i].r[3]);
}
}
}

int main()//主函数
{
int i;
int k = 1;
while (k)
{
printf("1、输入学生成绩信息\n");
printf("2、按学号查询学生成绩\n");
printf("3、按姓名查询学生成绩\n");
printf("0、退出\n");
printf("请选择:");
scanf("%d", &i);
switch (i)
{
case 1:
add();
break;
case 2:
findid();
break;
case 3:
findname();
break;
case 0: 0k = ; break;
}
}
return 0;
}

没明白问题的意思,这段代码是正常的思路啊,定义结构体存储学生信息,函数实现功能,主函数switch选择功能。你是想问某一个函数怎么实现的吧