不能查询之前录入的信息
/******************预处理模块和结构体******************/#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#define LEN sizeof(struct student)#define FORMAT "%-12d%-12s%-13.1f%-13.1f%-13.1f%-13.1f\n"#define DATA stu[i].num,stu[i].name, stu[i].chinese,stu[i].math,stu[i].english,stu[i].sum/******************定义学生成绩结构体******************/struct student{int num;/*学号*/char name[15];/*姓名*/float chinese;/*语文成绩*/float math;/*数学成绩*/float english;/*英语成绩*/float sum;/*总分*/};struct student stu[50];/*定义全局结构体数组*//******************函数声明与简介******************/void input();/*录入学生成绩信息*/void search(); /*查找学生信息*/void menu();/*程序主菜单*//******************主函数******************/int main(){ int n;menu();scanf("%d",&n);/*输入选择功能的编号*/while(n){ switch(n){ case 0: exit(0);/*退出功能*/case 1: input();break;/*录入记录功能函数调用*/case 2:search();break; /*查找记录功能调用*/default:printf("输入有误,请重新输入:");break;}getch();menu(); /*菜单界面循环显示*/scanf("%d",&n);}return 0;}/******************自定义函数实现菜单功能******************/void menu(){ system("cls");printf("\t\t|-------------学生信息管理系统----------|\n");printf("\t\t| |\n");printf("\t\t|\t 0. 退出系统\t\t\t|\n");printf("\t\t|\t 1. 输入记录\t\t\t|\n");printf("\t\t|\t 2. 查找记录\t\t\t|\n");printf("\t\t|\t 3. 删除记录\t\t\t|\n");printf("\t\t|\t 4. 修改记录\t\t\t|\n");printf("\t\t|\t 5. 插入记录\t\t\t|\n");printf("\t\t|\t 6. 记录排序\t\t\t|\n");printf("\t\t|\t 7. 记录个数\t\t\t|\n");printf("\t\t|\t 8. 显示记录\t\t\t|\n");printf("\t\t|---------------------------------------|\n\n");printf("\t\t请输入您的操作(0-8):");}/******************录入学生信息******************/void input(){int i,m=0;/*变量m表示记录的条数*/char ch[2]; FILE *fp;/*定义文件指针*/if((fp=fopen("stuData.txt","a+"))==NULL) /*打开指定文件*/{ printf("打开文件失败\n");return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;/*统计当前记录条数*/}fclose(fp);if(m==0)printf("没有数据!\n");else{system("cls");//show();/*调用show函数,显示原有信息*/}if((fp=fopen("stuData.txt","wb"))==NULL){printf("打开文件失败\n");return;}for(i=0;i<m;i++){fwrite(&stu[i] ,LEN,1,fp);/*向指定的磁盘文件写入信息*/}printf("请确认(y/n):");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) /*判断是否要录入新信息*/ { printf("学号:"); scanf("%d",&stu[m].num);/*输入学生学号*/ for(i=0;i<m;i++) if(stu[i].num==stu[m].num) { printf("此学号已存在!"); getch(); fclose(fp); return;}/*如果学号可用,则继续输入其它数据*/printf("姓名:");scanf("%s",stu[m].name); /*输入学生姓名*/printf("语文成绩:");scanf("%f",&stu[m].chinese); /*输入语文课成绩*/printf("数学成绩:");scanf("%f",&stu[m].math); /*输入数学课成绩*/printf("英语成绩:");scanf("%f",&stu[m].english); /*输入英语课成绩*/stu[m].sum=stu[m].chinese+stu[m].math+stu[m].english;/*计算出总成绩*/if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/{printf("保存失败!");getch();}else{printf("%s 已保存!\n",stu[m].name);m++;}printf("是否继续?(y/n):");/*询问是否继续*/scanf("%s",ch);}fclose(fp);printf("操作成功!\n");}void search(){int i,j;int flag;char s1[21];int N=0;FILE*fp;if((fp=fopen("stuData.txt","a+"))==NULL){printf("打开文件失败\n");return;}else{printf("打开成功\n");}printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d", &j);flag = 0;switch (j){case 1:printf("请输入要查询的学生的学号:\n");int num;scanf("%d", &num);for (i = 0; i < 50; i++){if (stu[i].num == num){flag = 1;printf("--------------------------------------------------------------------\n");printf("学生学号 学生姓名 语文成绩 数学成绩 英语成绩 总分\n");printf("--------------------------------------------------------------------\n");printf(" %d %s %.1f %.1f %.1f %.lf\n", stu[i].num, stu[i].name, stu[i].chinese, stu[i].math, stu[i].english, stu[i].sum);printf("--------------------------------------------------------------------\n");}}if (0 == flag){printf("该学号不存在!\n");break;}break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s", s1);for (i = 0; i < 50; i++){if (strcmp(stu[i].name, s1) == 0){flag = 1;printf("--------------------------------------------------------------------\n");printf("学生学号 学生姓名 语文成绩 数学成绩 英语成绩 总分\n");printf("--------------------------------------------------------------------\n");printf(" %d %s %.1f %.1f %.1f %.lf\n", stu[i].num, stu[i].name, stu[i].chinese, stu[i].math, stu[i].english, stu[i].sum);printf("--------------------------------------------------------------------\n");}}if (0 == flag){printf("该姓名不存在!\n");break;}break;case 3:return;default:printf("输入错误,请重新输入\n");}} }
/******************预处理模块和结构体******************/#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#define LEN sizeof(struct student)#define FORMAT "%-12d%-12s%-13.1f%-13.1f%-13.1f%-13.1f\n"#define DATA stu[i].num,stu[i].name, stu[i].chinese,stu[i].math,stu[i].english,stu[i].sum/******************定义学生成绩结构体******************/struct student{int num;/*学号*/char name[15];/*姓名*/float chinese;/*语文成绩*/float math;/*数学成绩*/float english;/*英语成绩*/float sum;/*总分*/};struct student stu[50];/*定义全局结构体数组*//******************函数声明与简介******************/void input();/*录入学生成绩信息*/void search(); /*查找学生信息*/void menu();/*程序主菜单*//******************主函数******************/int main(){ int n;menu();scanf("%d",&n);/*输入选择功能的编号*/while(n){ switch(n){ case 0: exit(0);/*退出功能*/case 1: input();break;/*录入记录功能函数调用*/case 2:search();break; /*查找记录功能调用*/default:printf("输入有误,请重新输入:");break;}getch();menu(); /*菜单界面循环显示*/scanf("%d",&n);}return 0;}/******************自定义函数实现菜单功能******************/void menu(){ system("cls");printf("\t\t|-------------学生信息管理系统----------|\n");printf("\t\t| |\n");printf("\t\t|\t 0. 退出系统\t\t\t|\n");printf("\t\t|\t 1. 输入记录\t\t\t|\n");printf("\t\t|\t 2. 查找记录\t\t\t|\n");printf("\t\t|\t 3. 删除记录\t\t\t|\n");printf("\t\t|\t 4. 修改记录\t\t\t|\n");printf("\t\t|\t 5. 插入记录\t\t\t|\n");printf("\t\t|\t 6. 记录排序\t\t\t|\n");printf("\t\t|\t 7. 记录个数\t\t\t|\n");printf("\t\t|\t 8. 显示记录\t\t\t|\n");printf("\t\t|---------------------------------------|\n\n");printf("\t\t请输入您的操作(0-8):");}/******************录入学生信息******************/void input(){int i,m=0;/*变量m表示记录的条数*/char ch[2]; FILE *fp;/*定义文件指针*/if((fp=fopen("stuData.txt","a+"))==NULL) /*打开指定文件*/{ printf("打开文件失败\n");return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;/*统计当前记录条数*/}fclose(fp);if(m==0)printf("没有数据!\n");else{system("cls");//show();/*调用show函数,显示原有信息*/}if((fp=fopen("stuData.txt","wb"))==NULL){printf("打开文件失败\n");return;}for(i=0;i<m;i++){fwrite(&stu[i] ,LEN,1,fp);/*向指定的磁盘文件写入信息*/}printf("请确认(y/n):");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) /*判断是否要录入新信息*/ { printf("学号:"); scanf("%d",&stu[m].num);/*输入学生学号*/ for(i=0;i<m;i++) if(stu[i].num==stu[m].num) { printf("此学号已存在!"); getch(); fclose(fp); return;}/*如果学号可用,则继续输入其它数据*/printf("姓名:");scanf("%s",stu[m].name); /*输入学生姓名*/printf("语文成绩:");scanf("%f",&stu[m].chinese); /*输入语文课成绩*/printf("数学成绩:");scanf("%f",&stu[m].math); /*输入数学课成绩*/printf("英语成绩:");scanf("%f",&stu[m].english); /*输入英语课成绩*/stu[m].sum=stu[m].chinese+stu[m].math+stu[m].english;/*计算出总成绩*/if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/{printf("保存失败!");getch();}else{printf("%s 已保存!\n",stu[m].name);m++;}printf("是否继续?(y/n):");/*询问是否继续*/scanf("%s",ch);}fclose(fp);printf("操作成功!\n");}void search(){int i,j;int flag;char s1[21];int N=0;FILE*fp;if((fp=fopen("stuData.txt","a+"))==NULL){printf("打开文件失败\n");return;}else{printf("打开成功\n");}printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d", &j);flag = 0;switch (j){case 1:printf("请输入要查询的学生的学号:\n");int num;scanf("%d", &num);for (i = 0; i < 50; i++){if (stu[i].num == num){flag = 1;printf("--------------------------------------------------------------------\n");printf("学生学号 学生姓名 语文成绩 数学成绩 英语成绩 总分\n");printf("--------------------------------------------------------------------\n");printf(" %d %s %.1f %.1f %.1f %.lf\n", stu[i].num, stu[i].name, stu[i].chinese, stu[i].math, stu[i].english, stu[i].sum);printf("--------------------------------------------------------------------\n");}}if (0 == flag){printf("该学号不存在!\n");break;}break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s", s1);for (i = 0; i < 50; i++){if (strcmp(stu[i].name, s1) == 0){flag = 1;printf("--------------------------------------------------------------------\n");printf("学生学号 学生姓名 语文成绩 数学成绩 英语成绩 总分\n");printf("--------------------------------------------------------------------\n");printf(" %d %s %.1f %.1f %.1f %.lf\n", stu[i].num, stu[i].name, stu[i].chinese, stu[i].math, stu[i].english, stu[i].sum);printf("--------------------------------------------------------------------\n");}}if (0 == flag){printf("该姓名不存在!\n");break;}break;case 3:return;default:printf("输入错误,请重新输入\n");}} }