📄 search.cpp
字号:
//查找学生档案
#include"head.h"
void search(struct student *p)
{
char name[10]={'a'};
int i=0 ;
int nchoice=10;
do
{
system("cls");
printmenu();
fflush(stdin);
printf("请选择查询方式:\n");
scanf("%d",&nchoice);
switch(nchoice)
{
case 1:
i=search_number(p); //按学号查询
getch();
break ;
case 2:
i=search_name(p); //按姓名查询
getch();
break ;
case 3:
search_mm(p); //模糊查询
getch();
break ;
case 4:
search_average(p); //查询平均分不及格的学员
getch();
break;
case 0:
break;
default:
printf("输入错误,请从新输入!\n");
getch();
}
}while(nchoice!=0);
}
//查询的主菜单
void printmenu()
{
printf("\n\n\n\n\t\t\t 查询子页面\n\n");
printf("\t\t ≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌\n\n");
printf("\t\t\t 1.按学号查询\n\n");
printf("\t\t\t 2.按姓名查询\n\n");
printf("\t\t\t 3.模糊查询\n\n");
printf("\t\t\t 4.查询平均分不及格的学员\n\n");
printf("\t\t\t 0.返回\n\n");
printf("\t\t ≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌\n\n");
printf("\t\t\t 请选择(0 ~ 4)\n");
}
//查找函数
int search_m(char st1[], char st2[])
{
int i=0, j=0, k=0, m=0;
for(i=0;i < strlen(st1);i++)
{
for(j=k;j<strlen(st2);j++)
{
if(st1[i] != st2[j])
{
break;
}
else
{
k=j+1;
m++;
break;
}
}
}
if (m ==(int)strlen(st2))
return 1;
else
return 0; //不包含
}
//模糊查询
void search_mm( struct student * q)
{
char name[10]={' '};
int n=0; //记录是否找到
printf("请输要查找的学生姓名或学号:\n");
getchar();
gets(name);
struct student * head=q ;
while (head !=NULL)
{
if((search_m((*head).name,name)==1)||(search_m((*head).Stnumber,name)==1))
{
n=n+1;
printf("姓名 学号 数学成绩 语文成绩 英语成绩 平均成绩\n");
printf("%s\t",(*head).name);
printf("%s " ,(*head).Stnumber);
for(int j=0;j<3;j++)
{
printf("%-3.1f ",(*head).grade[j]);
}
printf("%-3.1f\n",(*head).average);
}
head=(*head).next;
}
if(n==0)
printf("没有该学生!\n");
}
//按姓名查询
int search_name( struct student * q)
{
char name[10]={' '};
int n=0; //记录是否找到
printf("请输要查找的学生姓名:\n");
getchar();
gets(name);
struct student * head=q ;
while (head !=NULL)
{
if(strcmp(head->name,name)==0)
{
n=n+1;
printf("姓名 学号 数学成绩 语文成绩 英语成绩 平均成绩\n");
printf("%s\t",(*head).name);
printf("%s " ,(*head).Stnumber);
for(int j=0;j<3;j++)
{
printf("%-3.1f ",(*head).grade[j]);
}
printf("%-3.1f\n",(*head).average);
}
head=(*head).next;
}
if(n==0)
{
printf("没有该学生!\n");
getch();
return 0;
}
else
return n;
}
//按学号查询
int search_number( struct student * q)
{
char number[10]={' '};
int n=0; //记录是否找到
printf("请输要查找的学生学号:\n");
getchar();
gets(number);
struct student * head=q ;
while (head !=NULL)
{
if(strcmp(head->Stnumber,number)==0)
{
n=n+1;
printf("姓名 学号 数学成绩 语文成绩 英语成绩 平均成绩\n");
printf("%s\t",(*head).name);
printf("%s " ,(*head).Stnumber);
for(int j=0;j<3;j++)
{
printf("%-3.1f ",(*head).grade[j]);
}
printf("%-3.1f\n",(*head).average);
}
head=(*head).next;
}
if(n==0)
{
printf("没有该学生!\n");
getch();
return 0;
}
else
return 1;
}
//查询平均分不及格的学员
void search_average(struct student * q)
{
int i=0, n=0;
struct student *head=q;
while(head!=NULL)
{
if(head->average<60)
{
n=n+1;
printf("姓名 学号 数学成绩 语文成绩 英语成绩 平均成绩\n");
printf("%s\t",head->name);
printf("%s " ,head->Stnumber);
for(i=0;i<3;i++)
{
printf("%-3.1f ",head->grade[i]);
}
printf("%-3.1f\n",head->average);
}
head=head->next;
}
if(n==0)
{
printf("没有平均分不及格的学员!\n");
getch();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -