📄 自动化0605姜楠200682091.c
字号:
system("cls");
printf(" *****************************\n");
printf(" *****************************\n");
printf(" 请输入您所想要查找学生的方式:\n");
printf(" (1)__按照学号查找\n");
printf(" (2)__按照姓名查找\n");
printf(" (3)__退出\n");
printf(" *****************************\n");
printf(" *****************************\n");
printf(" 您选:");
scanf("%s",search);
if(strcmp(search,"1")==0)
search_1();
else if(strcmp(search,"2")==0)
search_2();
else if(strcmp(search,"3")==0)
{
wait();
return;
}
else
{
printf(" 您的输入有问题或查无此人!\n");
printf(" 请重新输入!\n");
wait();
}
}
}
void search_doc()//用来在在功能函数中选择所要操作的文件
{
char r[N];
int y;
while(1)
{
wait();
system("cls");
printf("\t\t**************************************************\n");
printf("\t\t*********************Input_Name*******************\n");
printf("\t\t**************************************************\n");
printf("\t\t请选择您要操作的文件名:");
scanf("%s",fname1);
y=0;
if((fp1=fopen(fname1,"rb+"))==NULL)
{
y=1;
printf("\t\t该文件不存在!\n");
printf("\t\t您是否要继续?\n\t\t(1)__返回\t\t(其他)__继续\n");
printf("\t\t您选:");
scanf("%s",r);
if(strcmp(r,"1")==0)
{
kk=1;
break;
}
}
if(y==0)
break;
}
}
void search_1()//按照学号查找
{
char sco[N],r[N];
int i,j,k=0;
while(1)//这个循环为了重复查找使用的
{
k=0;
kk=0;
search_doc();
if(kk!=0)
{
printf("\t\t无此文件\n");
wait();
system("cls");
break;
}
while(1)//查找的正文
{
printf("\t\t**************************************************\n");
printf("\t\t*****************Search By Number*****************\n");
printf("\t\t**************************************************\n");
printf("\t\t请输入学生的学号:");
scanf("%s",sco);
for(i=0;;i++)
{
fread(&infor,sizeof(XX),1,fp1);//循环读出数据
if(feof(fp1))
break;
if(strcmp(sco,infor.number)==0)
{
printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");//输出结果
printf("\t\t%s",infor.number);
printf("\t%s",infor.name);
for(j=0;j<3;j++)
printf("\t%.1f",infor.score[j]);
printf("\t%.1f\t",infor.sum);
printf("%.1f",infor.average);
printf("\n");
k++;
break;
}
}
if(k!=0)
break;
else
{
printf("\t\t查无此人!\n");
break;
}
}
fclose(fp1);
printf("\t\t是否继续按照学号进行查找?\n\t\t(1)__返回查询主菜单\t\t(其他)__继续本功能\n");//学号查找功能是否继续
printf("\t\t");
scanf("%s",r);
if(strcmp(r,"1")==0)
{
wait();
break;
}
}
}
void search_2()//按照名字查找
{
char sco[N],r[N];
int i,j,k=0;
while(1)//这个循环为了重复查找使用的
{
k=0;
kk=0;
search_doc();
if(kk!=0)
{
printf("\t\t无此文件\n");
wait();
system("cls");
break;
}
printf("\t\t**************************************************\n");
printf("\t\t*****************Search_By_Name*******************\n");
printf("\t\t**************************************************\n");
while(1)//查找的正文
{
printf("\t\t请输入学生的姓名:");
scanf("%s",sco);
for(i=0;feof(fp1)==0;i++)
{
fread(&infor,sizeof(XX),1,fp1);
if(strcmp(sco,infor.name)==0)
{
printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
printf("\t\t%s",infor.number);
printf("\t%s",infor.name);
for(j=0;j<3;j++)
printf("\t%.1f",infor.score[j]);
printf("\t%.1f\t",infor.sum);
printf("%.1f",infor.average);
printf("\n");
k++;
break;
}
}
if(k!=0)
break;
else
{
printf("\t\t查无此人!\n");
break;
}
}
fclose(fp1);
printf("\t\t是否继续按照姓名进行查找?\n\t\t(1)__返回查询主菜单\t\t(其他)__继续\n");
printf("\t\t");
scanf("%s",r);
if(strcmp(r,"1")==0)
break;
}
}
void add()//新增学生信息函数
{
char add[N];
int n,k;
while(1)//这个循环为了重复增加使用的
{
search_doc();
printf("\t\t**************************************************\n");
printf("\t\t*****************Add_Information******************\n");
printf("\t\t**************************************************\n");
fseek(fp1,0,2);//将文件指针指向文件的最后
printf("\t\t请输入新增学生的学号(学号小于8位):");
scanf("%s",infor.number);
n=check_number3(infor.number);
if(n==0)
{
printf("\t\t请认真核对您的输入!\n");
wait();
system("cls");
continue;
}
printf("\t\t请输入新增学生的姓名(汉字小于4个):");
scanf("%s",infor.name);
printf("\t\t请输入新增学生的数学成绩:");//学生成绩输入
scanf("%s",add);
infor.score[0]=check_number4(add);
if(infor.score[0]==-1)
{
printf("\t\t请认真核对您的输入!\n");
wait();
system("cls");
continue;
}
printf("\t\t请输入新增学生的语文成绩:");
scanf("%s",add);
infor.score[1]=check_number4(add);
if(infor.score[1]==-1)
{
printf("\t\t请认真核对您的输入!\n");
wait();
system("cls");
continue;
}
printf("\t\t请输入新增学生的英语成绩:");
scanf("%s",add);
infor.score[2]=check_number4(add);
if(infor.score[2]==-1)
{
printf("\t\t请认真核对您的输入!\n");
wait();
system("cls");
continue;
}
infor.sum=0.0;
for(k=0;k<3;k++)
infor.sum+=infor.score[k];
infor.average=infor.sum/3.0;
if(fwrite(&infor,sizeof(XX),1,fp1)!=1)
printf("\nfile write error!\n\n");
printf("\t\t新增信息已经写入您所指定的文件当中!\n");
printf("\t\t您是否还要继续添加?\n\t\t(1)__退出\t\t(其他)__继续\n");//判断是否继续在该文件中进行增加信息
printf("\t\t您选:");
scanf("%s",add);
if(strcmp(add,"1")==0)
break;
}
fclose(fp1);
}
void drop(void)//删除函数
{
int i,temp=0;
char d[N],add[N];
while(1)
{
search_doc();
printf("\t\t**************************************************\n");
printf("\t\t*****************drop_Information******************\n");
printf("\t\t**************************************************\n");
printf("\t\t请输入您要删除的信息的学生学号:");
scanf("%s",d);
for(i=0;;i++)
{
fread(&xx[i],sizeof(XX),1,fp1);
if(feof(fp1))
break;
if(strcmp(xx[i].number,d)==0)
{
temp++;
i=i-1;
}
}
fclose(fp1);
if(temp==0)//输入错误或没有该学生的信息
{
printf("\t\t对不起!没有您想要删除的记录!\n");
printf("\t\t还要继续删除操作?\n\t\t(1)__yes\t\t(其他键)__no\n");//判断是否继续在该文件中进行增加信息
printf("\t\t您选:");
scanf("%s",add);
if(strcmp(add,"1")!=0)
break;
}
else//有该学生的信息
{
printf("\t\t您是否保存修改?\n\t\t(1)__yes\t\t(其他键)__no\n");//判断是否继续在该文件中进行增加信息
printf("\t\t您选:");
scanf("%s",add);
if(strcmp(add,"1")==0)
{
g=i;
if((fp=fopen(fname1,"wb"))==NULL)
{
printf("Cannot open the file!\n");
return;
}
for(i=0;i<g;i++)
{
if(fwrite(&xx[i],sizeof(XX),1,fp)!=1)
printf("\nfile write error!\n\n");
}
fclose(fp);
printf("\t\t保存完毕!\n");
}
wait();
break;
}
}
}
void hgrade()//优秀统计
{
char search[N];
while(1)
{
system("cls");
printf("\t\t*****************************\n");
printf("\t\t*****************************\n");
printf("\t\t请输入您所想要的统计方式:\n");
printf("\t\t(1)__平均成绩优秀统计\n");
printf("\t\t(2)__单科成绩优秀统计\n");
printf("\t\t(3)__退出\n");
printf("\t\t*****************************\n");
printf("\t\t*****************************\n");
printf("\t\t您选:");
scanf("%s",search);
if(strcmp(search,"1")==0)
hgrade_1();
else if(strcmp(search,"2")==0)
hgrade_2();
else if(strcmp(search,"3")==0)
{
wait();
return;
}
else
{
printf("\t\t您的输入有误!\n");
printf("\t\t请重新输入!\n");
wait();
}
}
}
void hgrade_1()//平均成绩统计
{
int j;
int hg=0;
kk=0;
search_doc();
while(1)//查找的正文
{
if(kk!=0)
break;
fread(&infor,sizeof(XX),1,fp1);//循环读出数据
if(feof(fp1))
break;
if(infor.average>=GOOD)
{
hg++;
printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");//输出结果
printf("\t\t%s",infor.number);
printf("\t%s",infor.name);
for(j=0;j<3;j++)
printf("\t%.1f",infor.score[j]);
printf("\t%.1f\t",infor.sum);
printf("%.1f",infor.average);
printf("\n");
}
}
if(hg==0&&kk==0)
printf("\t\t很遗憾,平均分没有优秀的!\n");
else
printf("\t\t优秀的人数为%d\n",hg);
if(kk==0)
{
fclose(fp1);
printf("\t\t按任意键返回统计菜单\n");
getchar();
getchar();
}
}
void hgrade_2()//单科成绩统计
{
char search[N];
while(1)
{
system("cls");
printf("\t\t*****************************\n");
printf("\t\t*****************************\n");
printf("\t\t请输入您的选择:\n");
printf("\t\t(1)__数学优秀的学生信息\n");
printf("\t\t(2)__语文优秀的学生信息\n");
printf("\t\t(3)__英语优秀的学生信息\n");
printf("\t\t(4)__退出\n");
printf("\t\t*****************************\n");
printf("\t\t*****************************\n");
printf("\t\t您选:");
scanf("%s",search);
if(strcmp(search,"1")==0)
hgrade_2_1();
else if(strcmp(search,"2")==0)
hgrade_2_2();
else if(strcmp(search,"3")==0)
hgrade_2_3();
else if(strcmp(search,"4")==0)
{
wait();
return;
}
else
{
printf("\t\t您的输入有问题或查无此人!\n");
printf("\t\t请重新输入!\n");
wait();
}
}
}
void hgrade_2_1()//数学优秀学生信息
{
int j;
char r[N];
int hg=0;
kk=0;
while(1)//这个循环为了重复查找使用的
{
search_doc();
if(kk!=0)
break;
while(1)
{
fread(&infor,sizeof(XX),1,fp1);
if(feof(fp1))
break;
if(infor.score[0]>GOOD)
{
hg++;
printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
printf("\t\t%s",infor.number);
printf("\t%s",infor.name);
for(j=0;j<3;j++)
printf("\t%.1f",infor.score[j]);
printf("\t%.1f\t",infor.sum);
printf("%.1f",infor.average);
printf("\n");
}
}
if(hg==0)
printf("\t\t很遗憾,数学成绩没有优秀的!\n");
else
printf("\t\t优秀的人数为%d\n",hg);
printf("\t\t是否继续?\n\t\t(1)__yes\t\t(其他键)__no\n");
printf("\t\t您选:");
scanf("%s",r);
if(strcmp(r,"1")!=0)
break;
}
}
void hgrade_2_2()//语文优秀学生查找
{
int j;
char r[N];
int hg=0;
kk=0;
while(1)//这个循环为了重复查找使用的
{
search_doc();
if(kk!=0)
break;
while(1)
{
fread(&infor,sizeof(XX),1,fp1);
if(feof(fp1))
break;
if(infor.score[1]>GOOD)
{
hg++;
printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
printf("\t\t%s",infor.number);
printf("\t%s",infor.name);
for(j=0;j<3;j++)
printf("\t%.1f",infor.score[j]);
printf("\t%.1f\t",infor.sum);
printf("%.1f",infor.average);
printf("\n");
}
}
if(hg==0)
printf("\t\t很遗憾,语文成绩没有优秀的!\n");
else
printf("\t\t优秀的人数为%d\n",hg);
printf("\t\t是否继续?\n\t\t(1)__yes\t\t(其他键)__no\n");
printf("\t\t您选:");
scanf("%s",r);
if(strcmp(r,"1")!=0)
break;
}
}
void hgrade_2_3()//英语优秀学生信息
{
int j;
char r[N];
int hg=0;
kk=0;
while(1)//这个循环为了重复查找使用的
{
search_doc();
if(kk!=0)
break;
while(1)
{
fread(&infor,sizeof(XX),1,fp1);
if(feof(fp1))
break;
if(infor.score[2]>GOOD)
{
hg++;
printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
printf("\t\t%s",infor.number);
printf("\t%s",infor.name);
for(j=0;j<3;j++)
printf("\t%.1f",infor.score[j]);
printf("\t%.1f\t",infor.sum);
printf("%.1f",infor.average);
printf("\n");
}
}
if(hg==0)
printf("\t\t很遗憾,英语没有优秀的!\n");
else
printf("\t\t优秀的人数为%d\n",hg);
printf("\t\t是否继续?\n\t\t(1)__yes\t\t(其他键)__no\n");
scanf("%s",r);
if(strcmp(r,"1")!=0)
break;
}
}
void lgrade()//不及格统计主菜单
{
char search[N];
while(1)
{
system("cls");
printf("\t\t*****************************\n");
printf("\t\t*****************************\n");
printf("\t\t请输入您的选择:\n");
printf("\t\t(1)__数学不及格的学生信息\n");
printf("\t\t(2)__语文不及格的学生信息\n");
printf("\t\t(3)__英语不及格的学生信息\n");
printf("\t\t(4)__退出\n");
printf("\t\t*****************************\n");
printf("\t\t*****************************\n");
printf("\t\t您选:");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -