第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共9页//========学员信息管理系统========//========编制:宋焱鑫//==TXT文本文件实时存储数据,仍然运用结构体数组#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"intscount;//定义数据库实际学生数量typedefstruct//定义学生信息结构体类型{charno[10];charname[16];floatscore[3];}STU;STUstu[10000];//声明结构体数组,以数据库中最大学生数量来定义//函数声明部分voidreaddb();//初始化学员信息,把外存中学生数据读入到内存中voidsavedb();//把内存中结构体数组中的学生数据保存到外存中voidzhumulu();//显示程序主目录voiddisplay();//显示所有学员信息voidinput();//录入新学员信息intfind(charstr[80]);//查找指定学号的学员,找到返回该学员在数组中的下标,没找到返回-1,str代表指定学号;在多个模块中用到该函数voidquery();//根据学号查找,并显示学员信息voidupdate();//修改学员信息voiddel();//删除学员信息voidsort();//对学员进行排序voidaverage();//求学生成绩平均值voidguake();//不及格学生//函数定义voidmain(){//程序进入“欢迎界面”printf("\n\n\n\n\n\t\t欢迎进入========学员信息管理系统========\n");//按任意键初始化学员信息printf("\n\t\t\t按任意键初始化学员信息...\n\n");getch();//从键盘收任一个字符即返回,该函数在conio.h中readdb();//初始化学员信息,把外存中学生数据读入到内存中printf("\t\t\t共有%d条学员信息",scount);//scount是实际学生数量printf("\n\n\t\t\t按任意键进入主目录...");第2页共9页第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共9页getch();//从键盘收任一个字符即返回,该函数在conio.h中zhumulu();//调出“程序主目录”}voidzhumulu(){charselect;//代表用户所选择的子目录号do{system("cls");printf("========学员信息管理系统========\n\n");printf("以下是程序主目录,请选择功能\n\n");printf("1)显示\n2)查找\n3)录入\n4)修改\n5)删除\n6)排序\n7)求学生成绩的平均值\8)不及格学生\n0)退出\n\n");printf("键入功能前的数字后,按\"Enter\"键:");select=getchar();switch(select){case'1'://显示所有学员信息system("cls");display();printf("\n\n\t\t\t按任意键进入主目录...");getch();//从键盘收任一个字符即返回,该函数在conio.h中break;case'2':query();break;//查询学员信息case'3':input();break;//录入新学员信息case'4':update();break;//修改学员信息case'5':del();break;//删除学员信息case'6':sort();break;//对学员进行排序case‘7’:average();break;//求学生成绩平均值case‘8’:guake();break;//求挂科学生case'0':break;//退出default:printf("请选择功能前的数字\n");break;}}while(select!='0');}voidreaddb()//初始化学员信息,把外存中学生数据读入到内存中{FILE*fp;if((fp=fopen("studb.txt","r"))==NULL){printf("文件有错误!!!程序不能运行!!!\n");return;}第3页共9页第2页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共9页scount=0;//scount是数据库中实际学生数量,是全局变量while(!feof(fp))//no是学号,name是姓名,)core是成绩{//stu是学生结构体数组,全局变量fscanf(fp,"%s%s%f%f%f",stu[scount].no,stu[scount].name,&stu[scount].score[0],&stu[scount].score[1],&stu[scount].score[2]);if(strcmp(stu[scount].no,"")!=0)scount++;//去掉学号为空字符串}fclose(fp);}//把内存中结构体数组中的学生数据保存到外存中voidsavedb(){inti;FILE*fp;if((fp=fopen("studb.txt","w"))==NULL)//以写的方式打开文件,覆盖原文件{printf("文件有错误!!!程序不能运行!!!\n");return;}//stu是学生结构体数组,全局变量for(i=0;i