C语言课程设计报告——学生成绩管理程序胡建冬3130504057电科13022014.7C语言课程设计——学生成绩管理程序~1~C语言课程设计——学生成绩管理程序~2~一、程序主要功能1.建立记录并保存为文件2.加载文件并实现排序3.追加记录到已加载的文件中4.查询记录5.修改记录6.删除记录7.输出文件为另一个文件8.链接两个文件二、运行截图及说明功能1:新建记录并保存为文件C语言课程设计——学生成绩管理程序~1~功能2:加载显示文件里的记录,并实现排序C语言课程设计——学生成绩管理程序~2~功能3:在已加载的文件中追加记录C语言课程设计——学生成绩管理程序~3~功能4:以不同方式查询记录C语言课程设计——学生成绩管理程序~4~功能5:以不同方式修改记录C语言课程设计——学生成绩管理程序~5~功能6:以不同方式删除记录C语言课程设计——学生成绩管理程序~6~功能7:将已加载文件输出为另一个文件C语言课程设计——学生成绩管理程序~7~功能8:将另一个文件里的记录连接到已加载的文件中C语言课程设计——学生成绩管理程序~8~三、源程序#includestdio.h#includestdlib.h#includestring.hstructstudentScore{unsignedlongnumber;charname[50];charsex;unsignedintage;floatscore;unsignedintplace;}StuInfoTemp,StuInfo[100];#definestudentRecordSizesizeof(structstudentScore)unsignedintarrSize=0;longnumTemp;charnameTemp[50];charsexTemp;unsignedintageTemp;floatscoreTemp;charfileName[50];unsignedintloadFlag=0;/*是否加载过文件标志,1为加载过*/intmenu_select();voidhandle_menu(unsignedintkey);voidsaveRecords(structstudentScoreStuInfo[]);voidnewRecords();voidsaveFile();voidshowTable();voiddisplay(charfileName[50],unsignedintmode1,unsignedintmode2);voidaddRecords();voidremoveRecords(unsignedintmode);voidreSort();voidinputNewData();voidinputModifyData(unsignedinti);voidmodifyRecords(unsignedintmode);voidprintOneRecord(unsignedinti);C语言课程设计——学生成绩管理程序~9~voidreadFile(charfileName[50]);voidfindRecord(unsignedintmode);voidoutPut();voidloadFile();voidaddFile();/*************************************************************************函数功能:主函数,起到控制作用*************************************************************************/intmain(){while(1)/*大循环,除非用户选择退出或遇到文件读写错误*/handle_menu(menu_select());return0;}/*************************************************************************函数功能:菜单处理,根据用户的选择调用函数*************************************************************************/voidhandle_menu(unsignedintkey){switch(key){case1:{unsignedintmode1,mode2;printf(Pleaseenterthefile'sname:);gets(fileName);printf(\n\t\t1.Bynumber(1.ascend,2.descend)\n);printf(\t\t2.Byname(1.ascend,2.descend)\n);printf(\t\t3.Byranking(1.ascend,2.descend)\n);printf(Pleaseselectdisplaymode(mode1,mode2):);scanf(%d,%d,&mode1,&mode2);getchar();/*接收回车*/display(fileName,mode1,mode2);};break;case2:newRecords();break;case3:{if(loadFlag==1)addRecords();elseC语言课程设计——学生成绩管理程序~10~printf(Youhavenotloadanyfile!\n);};break;case4:{if(loadFlag==1){unsignedintmode;printf(\n\t\t\t1.Bynumber\n);printf(\t\t\t2.Byname\n);printf(\t\t\t3.Byranking\n);printf(Pleaseselectfindmode(1~3):);scanf(%d,&mode);getchar();/*接收回车*/findRecord(mode);}elseprintf(Youhavenotloadanyfile!\n);};break;case5:{if(loadFlag==1){unsignedintmode;printf(\n\t\t\t1.Bynumber\n);printf(\t\t\t2.Byname\n);printf(\t\t\t3.Byranking\n);printf(Pleaseselectmodifymode(1~3):);scanf(%d,&mode);getchar();/*接收回车*/modifyRecords(mode);}elseprintf(Youhavenotloadanyfile!\n);};break;case6:{if(loadFlag==1){unsignedintmode;printf(\n\t\t\t1.Bynumber\n);printf(\t\t\t2.Byname\n);printf(\t\t\t3.Byranking\n);printf(Pleaseselectdeletedmode(1~3):);scanf(%d,&mode);C语言课程设计——学生成绩管理程序~11~getchar();/*接收回车*/removeRecords(mode);}elseprintf(Youhavenotloadanyfile!\n);};break;case7:{if(loadFlag==1)outPut();elseprintf(Youhavenotloadanyfile!\n);};break;case8:{if(loadFlag==1)addFile();elseprintf(Youhavenotloadanyfile!\n);};break;case9:{printf(\t\t\t***********\n);printf(\t\t\t*Goodby!*\n);printf(\t\t\t***********\n);exit(0);}default:printf(Youenterthewrongnumber!\n);}/*超出菜单范围重新选择*/}/*************************************************************************函数功能:菜单选择,返回选择的菜单项*************************************************************************/intmenu_select(){unsignedintkey;printf(\n\n\t\t**********************************\n);printf(\t\t\t1.LoadandViewRecords\n);printf(\t\t\t2.NewRecords\n);printf(\t\t\t3.AddRecords\n);printf(\t\t\t4.Findonerecord\n);printf(\t\t\t5.ModifyRecords\n);printf(\t\t\t6.DeleteRecords\n);C语言课程设计——学生成绩管理程序~12~printf(\t\t\t7.Outputtoanotherfile\n);printf(\t\t\t8.Addfile\n);printf(\t\t\t9.EXIT\n);printf(\t\t**********************************\n\n);printf(Pleaseenteranumber(1~10):);scanf(%d,&key);getchar();/*接收回车*/returnkey;}/*************************************************************************函数功能:保存记录到缓冲区(数组)*************************************************************************/voidsaveRecords(structstudentScoreStuInfo[]){StuInfo[arrSize-1].number=numTemp;strcpy(StuInfo[arrSize-1].name,nameTemp);StuInfo[arrSize-1].sex=sexTemp;StuInfo[arrSize-1].age=ageTemp;StuInfo[arrSize-1].score=scoreTemp;}/*************************************************************************函数功能:保存新建好的记录文件*************************************************************************/voidsaveFile(){FILE*fp;unsignedinterr=0;unsignedinti;charcoverOr;printf(Pleaseenterthefile'snameofrecords:);newFile:gets(fileName);if((fp=fopen(fileName,rb))==NULL){if((fp=fopen(fileName,wb))==NULL){err++;/*记录文件建立失败次数,最多可以新建5次,防止因系统问题进入死循环*/if(err5){printf(AnERRORhashappened,pleaseenterthefile'snameagain:);gotonewFile;/*建立失败,重新输入文件名*/C语言课程设计——学生成绩管理程序~13~}elseif(err==5){pr