请问一下这个学生信息管理系统的查询功能怎么写进去,要求输入学号或姓名查询学生信息

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
typedef struct student
{
char str1[20];
char str2[20];
long int id;
int score;
} STU;
STU stu1[100];
int main()
{
void List(); //输出列表
void Input(STU stu[],int *n); //输入学生数据
void Hightolow(STU stu[],int n); //分数由大到小
void Outputinformation(STU stu[],int n); //输出所有学生信息
void search(STU stu[],int n);
int n=0;
while(1)
{
system("cls"); //清屏
List(); //输出列表
char c=getch();
switch(c)
{
case '1':
Input(&stu1,&n);
break;
case '2':
Hightolow(&stu1,n);
break;
case '3':
Outputinformation(&stu1,n);
break;
case '4':
search(&stu1,n);
case '0':
exit(0);
break; //exit(0)退出程序
}
}

return 0;
}

//输出列表
void List()
{
printf("*****************************************************************\t\t\t\n");
printf("*\t\t欢迎使用学生成绩管理系统\t\t*\n");
printf("*\t\t\t 请选择功能\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
printf("*\t 1.输入学生信息\t\t\t\t\t*\n");
printf("*\t 2.分数从大到小排序\t\t*\n");
printf("*\t 3.输出学生信息\t\t\t*\n");
printf("*\t 4.查询学生信息\t\t\t*\n");
printf("*\t 0.退出系统\t\t\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
}

//输入n个学生信息
void Input(STU stu[],int *n) //取n地址,及时更新人数数量,以便更新数据
{
int m;
static int i=0;
printf("请输入要录入的学生人数:");
scanf("%d",&m);
for(; i<m+*n; i++)
{

printf("请输入学生学号:");
scanf("%ld",&stu[i].id);
printf("请输入学生姓名");
scanf("%s",&stu[i].str1);
printf("请输入学生性别");
scanf("%s",&stu[i].str2);
printf("请输入学生分数:");
scanf("%d",&stu[i].score);
printf("***********************\n");
}
*n+=m;
printf("学生信息录入成功!!!\n");
system("pause");
}

最简单的是用for循环查找,直到找到匹配的学号或姓名,
也可以使用sort然后二分查找,但必须重载<或者定义比较函数传入sort,sort一次比for循环一次慢,边输入边查询效率稍低,输入完成后统一查询效率高
温馨提示:答案为网友推荐,仅供参考
相似回答