您好,欢迎访问三七文档
//========学员信息管理系统========//========编制:宋焱鑫//==TXT文本文件实时存储数据,仍然运用结构体数组#includestdio.h#includestdlib.h#includestring.h#includeconio.hintscount;//定义数据库实际学生数量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按任意键进入主目录...);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;}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;iscount;i++)//scount代表实际的学生数量,stu是表示学生信息的结构体数组名if(strcmp(stu[i].no,)!=0)//去掉学号为空字符串的信息printf(fp,%-8s%-10s%-10.1f%-10.1f%-10.1f\n,stu[i].no,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);fclose(fp);}voiddisplay()//显示所有学员信息{inti;printf(\n%-8s%-10s%-10s%-10s%-10s\n,学号,姓名,语文,数学,英语);printf(%-8s%-10s%-10s%-10s%-10s\n,====,====,====,====,====);for(i=0;iscount;i++)//在printf中,“-”表示数据左对齐,“.1”中的表示输出宽度,“1”表示输出位小数printf(%-8s%-10s%-10.1f%-10.1f%-10.1f\n,stu[i].no,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);}//查找指定学号的学员,代表指定学号(str)的下标,如果指定学号不存在,返回-1;在多个模块中用到该函数intfind(charstr[80]){inti;for(i=0;iscount;i++)if(strcmp(str,stu[i].no)==0)returni;return-1;}voidquery()//根据学号查找,并显示学员信息{charstr[80];intn;system(cls);printf(\n请输入要查询的学生的学号:);scanf(%s,str);n=find(str);if(n==-1)//find函数返回值,n代表指定学号的下标,如果指定学号不存在,返回-1printf(\n对不起,您要查找的学员不存在\n);else{printf(\n%-8s%-10s%-10s%-10s%-10s\n,学号,姓名,语文,数学,英语);printf(%-8s%-10s%-10s%-10s%-10s\n,====,====,====,====,====);printf(%-8s%-10s%-10.1f%-10.1f%-10.1f\n,stu[n].no,stu[n].name,stu[n].score[0],stu[n].score[1],stu[n].score[2]);}printf(\n\n\t\t\t按任意键进入主目录...);//显示完毕,提示用户返回主程序getch();//从键盘收任一个字符即返回,该函数在conio.h中}voidinput()//录入新学员信息{STUs;//代表新学员信息inti;//先显示已有学员信息system(cls);printf(当前学员信息如下:\n);printf(\n%-8s%-10s%-10s%-10s%-10s\n,学号,姓名,语文,数学,英语);printf(%-8s%-10s%-10s%-10s%-10s\n,====,====,====,====,====);for(i=0;iscount;i++)//在printf中,“-”表示数据左对齐,“.2”中的表示输出宽度,“.2”表示表示输出两位小数printf(%-8s%-10s%-10.1f%-10.1f%-10.1f\n,stu[i].no,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);//下面输入新学员信息printf(\n\n\n请输入\学号\,\学号\不允许为空字符串:);scanf(%s,&s.no);printf(\n请输入\姓名\,注意\姓名\里不能加空格:);scanf(%s,&s.name);printf(\n请输入\语文成绩\:);scanf(%f,&s.score[0]);printf(\n请输入\数学成绩\:);scanf(%f,&s.score[1]);printf(\n请输入\英语成绩\:);scanf(%f,&s.score[2]);//把临时结构体变量s赋到结构体数组中;同时把表示学员数量的变量scount增加stu[scount++]=s;savedb();//把内存中结构体数组中的学生数据保存到外存中printf(\n\n\t\t\t按任意键进入主目录...);getch();//从键盘收任一个字符即返回,该函数在conio.h中}voidupdate()//修改学员信息{intn;charstr[80];STUs;system(cls);printf(当前学员信息如下:\n);display();//先显示所有学员信息printf(\n请输入要修改的学生的学号:);scanf(%s,str);n=find(str);if(n==-1)//find函数返回值,n代表指定学号的下标,如果指定学号不存在,返回-1printf(\n对不起,您要查找的学员不存在\n);else{//您要修改的学员信息printf(\n您要修改的学员信息如下:\n);printf(\n%-8s%-10s%-10s%-10s%-10s\n,学号,姓名,语文,数学,英语);printf(%-8s%-10s%-10s%-10s%-10s\n,====,====,====,====,====);printf(%-8s%-10s%-10.1f%-10.1f%-10.1f\n,stu[n].no,stu[n].name,stu[n].score[0],stu[n].score[1],stu[n].score[2]);//输入修改后的学员信息//下面输入新学员信息printf(\n\n\n请输入修改后的\学号\,\学号\不允许为空字符串:);scanf(%s,&s.no);printf(\n请输入修改后的\姓名\,注意\姓名里\不能加空格:);scanf(%s,&s.name);printf(\n请输入修改后的\语文成绩\:);scanf(%f,&s.score[0]);printf(\n请输入修改后的\数学成绩\:);scanf(%f,&s.score[1]);printf(\n请输入修改后的\英语成绩\:);scanf(%f,&s.score[2]);stu[n]=s;//把修改后的值保存到内存数组中savedb();//把内存数据保存到外存数据文件中printf(\n\n\t\t\t祝贺您修改成功!);}printf(\n\n\t\t\t按任意键进入主目录...);//显示完毕,提示用户返回主程序getch();//从键盘收任一个字符
本文标题:项目程序代码
链接地址:https://www.777doc.com/doc-810731 .html