资源描述
#iiiclude#iiiclude/*strcmp函数原型包含*/#defiiieN100/*定义最大学生人数为100*/stiuctstudent/*学生结构体定义*/charnoll;/*学号,10位*7charname10;/*姓名,3个汉字*7floatscoie5;/*储存5门功课的成绩*/floatave;/*储存平均分*/nityear;/*入学年*/stuN;intnum;mtpaiiduaiii(int);voidoutput();/*通过1的值,判断信息要查找的信息是否存在*/*输出学生成绩函数(公共函数)*/voidiiiit();/*系统初始化函数*/voidnelle();/*建立新的数据文件*/voidread1();voidweiliu();voidnewl();voidxiugai();/*从数据文件中读取数据*/*维护界面函数*/*新增一个学生成绩函数*/*修改学生成绩*/intxgcj(int);voiddeleteIQ;voidtongji();/*修改成绩*/*删除学生信息函数*/*统计界面函数*/voidtongjilQ;voidtongji2Q;voidpaixulQ;voidpamo();/*计算每个学生平均分*/*计算每门课程的平均分*/*排序函数*/*按学号排序*/voidpaiaveQ;/*按平均分排序*/voidpaidkcjQ;voidchange(int,int);voidoutputx(int);voidfindIQ;/*按单科成绩排序*/*交换结构体数组中的两个记录*/*选择输出单科成绩徐修楼编/*查找界面函数*/mtfind(charsno);/*按学号查找*/intfindname(chai-cname);/*按姓名查找*/voidfiiidyear(intcyear);/*按入学年查找*7voidsaveQ;/*保存文件*/voidstop();/*停顿函数*/voidstop()/*停顿函数(公共函数)*/printf(nPressAiivKeyToContmue.nn);getchQ;voidoutput()/*输出学生成绩函数(公共函数)*/intij;pnntf(n=,nn);printf(nXueHaoXingMingRuXueNianCGaoShuDaWuDiaiiLuMoDianiT);pnntf(n=,nn);fbr(i=O:inum;i+)priiitf(H%-lls%-1Os%-11d*stu1.no,stui.name?stui.yeai);fbr(j=O;j5j+)printf(H%-7.1fsnii.scorej);pnntfW);stop();voiduut()/*系统初始化函数*/if(access(Hstu.datH,O)/*判断文件是否存在*/newfileQ;/*若不存在,新建数据文件*/elsereadIQ;/*若存在,读取数据*/voidnevfile()/*建立新的数据文件*/iiiti;FILE*fp;if(=fbpenCstud於QvbJ)=NULL)严创建二进制文件*/_priiitf(HChuangJianShiBai!QiiigChongXmYiinXiiigChengXu.iiH);/*显示创建文件失败,请重新运行程序”exit(O);/*终止程序*/printf(nChuCiYiinXing,JmXingShuJuChuShiHua.nn);/*显示“初次运行,进行数据初始化”*/stop();clrscrQ;pnntf(QrngShuRuXueShengRenShu:”);/*显示“请输入学生人数:”*/scaiifCd&num);fbr(i=O:inum;i+)_priiitf(HQmgShuRuDi%dGeXueShengDeXueHao:Hj+l);/*显示“请输入第i+1个学生的学号*/getchar();/*吃回车*/gets(stui.no);prmtf(HXmgMmg:,r);/*显示姓名*/gets(stui.name);prmtf(RuXueNiaii:);/*显示“入学年”*/scanf(H%d,&stui.year);pimtfCC-YiiYanCheng显示“C语言成绩”*/scanf(H%f&stui.score0);pimtf(GaoShuChengJi:);/*显示高数成绩”*/scanf(H%f&stui.sco代1);prmtf(HDaWuCheng显示“人物成绩”*/scanf(H%f&stui.score2);printffDianLuChengJi:);/*显示电路成绩”*/scanf(H%f&stui.sco代3);prmtf(HMoDiaiiCheng显示“模电成绩*/scanf(H%f&stui.sco代4);fvrite(&snii4,sizeof(sti-uctstudent).fp);/*把第i+1名学生成绩写入文件*/fclose(fp);clrscrQ;printf(n=n,r);printf(nGungCaiShuRuDe%dGeShuJu/*显示“刚才输入的num个数据为:*/printf(n=iin,r);outputQ;voidread1()/*从数据文件中读取数据*/FILE*fp;num=0;/*num为数据文件中实际存储的学生人数*/fp=fbpen(nstu.datM,HrH);if(fp=NULL)/*数据文件不存在*/_prmtf(HWenJianDaKaiShiBai!ChongXmYunXmgChengXuiiH);/*显示“文件打开失败!重新运行程序”*/exit(O);while(!feof(fp)fiead(&stunum,l,siz亡obstructstudent),fp);num+-r;num-;fclose(fp);pnntf(n=nn);printf(nXiaiiYou%dGeXueShengDeChengJi:iT,num);/*显示“现有NUM个学生的成绩*/pnntf(n=nnn);outputQ;voidweihuQ严维护界面函数*/charcl;while(l)clrscrO;WeiHu1. XinZeng2. ShanChu3. XiuGaiESC.FanHui*E);*n”);/*新增*/*n”);/*删除(按学号)*/*修改*/*nH);/*返回*7prmtf(HtttQmgXuanZe:nM);/*请选择:*/cl=getchQ;if(cl=27)break;switch(cl)caseT:newl();break;case2:delete1();casexiugaiQ;break;default:priiitf(HXuanZenYouWu.QmgChongXuan!iT);/*选择有误,请重选!*/voidnew1()/*新增一个学生成绩函数*/prmtf(HQmgShuRuXueHao,);/*显示“请输入学号*/getchar();严吃回车*/gets(stunum.no);prmtf(XmgMmg:);/*显示姓名:”*/gets(stunum.name);prmtfCRuXueNiaii:)y*显示“入学年”*/scanf(H%d,&stunum.yeai);pnntf(”C-】YanChengJi:”);/*显示C语言成绩”*/scanf(H%f&stunum.scoreOJ);prmtf(HGaoShuCheng显示高数成绩”*/scanf(H%f&stunum.score1);prmtf(HDaWuChengJi:n);/*显示“人物成绩”*/scanf(H%f&stunum.score2);printffDianLuChengJi:);/*显示电路成绩*/scanf(H%f&stunum.score3);prmtf(nMoDiaiiCheng显示模电成绩”*/scanf(H%f&stunum.score4);num-H-;prmtf(Hji=nH);prmtf(nXianYou%dGeXueShengDeCheng/*显示“现有NUM个学生的成绩*/pimtf(H=iinH);outputQ;voidxiugaiQ/*修改学生成绩*/charxgll;inti;priiitf(HiiQmgshuruvaoxiugaixueshengdexuehao:niiH);gets(xg);fbr(i=O;i=*r&c=,5,)k=c-49;prmtf(niiQingshuru%schengji:n役p+k);scanf(H%f&stux.scorek);pnntffXnXiugaihougaixueshengxiiixiwei:nn);prmtf(nXueHaoXiiigMiiigRuXueNianCGaoShuDaWuDiaiiLuMoDiaiiiin);prmtf(H=nM);prmtf(,%-lls%-10s%-lld,stux.no,stux.naine,stux.yeai);for(j=Oj5J+)printf(H%-7.1fstux.scorej);prmtf(Hnn);elseprintf(HiiXuanZenYouWu.QmgChongXuan!uiiH);stop();mtfind(charsno)/*按学号查找*/iiiti;fbr(i=O:inum;i+)if(strcmp(stu1.no,sno)=0)/*判断两个字符串相等*/returni;/*查找成功*/retuin-1;/*查找失败*/voiddelete10/*删除学生信息函数*/chaicnoll;intij;piintf(nQiiigShuRuYaoShanChuDeXueShengXueHao:H);/*“请输入要删除的学生学号”*/gets(cno);i=find(cno);for(j=ijnum;j+)stuj=stuj+l;num-;prmtf(HXianYou%dGeXueShengDeCheng/*显示“现有NUM个学生的成绩*/outputQ;elsepiintfpqingshumzhengquedexuehao.n”);stopO;voidtongji()严统计界面函数*/iiiti;while(l)clrscrQ;TongJi1. XueShengPingJunFen2. KeChengPmgJunFenclwc2;ESCFanHuipiintf(HtttQingXuaiiZe:iiH);/*请选择:*/c2=getch();“!”);/*计算学生平均分*/*n”);/*计算每门课程平均分*/返回勺if(c2=27)break;switch(c2)caseT:tongjilQ;printf(nirjiXueShengPmgJunFenWiW);pnntf(n=iin);piintf(nXueHaoXiiigMingRuXueNianPingJuiiFeniiH);pnntf(n=iin);fbr(i=O:inum;i+)-10s%-11d%-10.2fnM,stui.no,stui.naine,stui.year,stui.ave);stop();break;case2:tongji2();break;default:printf(nXuanZenYouWu.QuigChongXuan?iiH);/*u选择有误,请重选!M*/voidtongjilQ/*计算每个学生平均分*/intij;fbr(i=O;inum;i-H-)stui.ave=O;foi(j=0j5j-H-)stuiave+=stui.scorej;stu1.ave=stuiave/5;voidtongji20/*计算每门课程的平均分*/intij;floatsum;floatavec5;/*储存每门课的平均分*/for(j=0;j5j+)sum=O;fbr(i=O;inum;i-H-)sum+=stui.scoiejj;avecj=sunVnuni;pnntf(niiiiGeKePmgJunFenWei:nM);/*“各科平均分:”*/pnntf(n=jim);printf(nCGaoShuDaWuDianLuMoDiaiinM);pnntf(n=jim);fbr(i=O;i5;i+)prmtf(H%-7.Ifaveci);stop();voidpaixulQcharc3;血(;)严排序界面3VclrscrQ;PaiXu1. AnXueHao2. AnPmgJunFen3. AndankechengjiESCFanHui*E);* /*按学号排序*/*按平均分排序*/*nH);/*按单科成绩排序*/* n”);/*返回*/printf(HtQingXuanZe(press1.2.3.Esc):nH)*请选择:*/c3=getch();if(c3=27)break;switch(c3)caseT:paino();bwak;casepaiaveQreak;caseSpaidkcjQibreak:default:printf(niiXuanZenYouWikQmgChongXuan!nnn);/*选择有误,请重选!*/stopQ;voidpamo()/*按学号排序*/*按学号从低到高冒泡法排序*/inti,j,k;fbr(i=O;inum;i+)fbr(j=0:j0)change(jj+l);printf(n,uiPaiXuHouWei:jin);/*“排序后为outputQ;voidpaiaveQ/*按平均分排序*/*按平均分从高到低冒泡法排序*/mtij;stmctstudenttemp;tongjilQ;/*计算平均成绩*/fbr(i=O;inum;i+)血(j=0;jnum-i打卄)if(stujavestuj+1.ave)change(j,j+l);printf(niitPaiXuHouWeir1);/*“排序后为*/printfClt=nM);piintfXtXueHaoXmgMiiigRuXueNianAv亡Painiiiigdi);printfClt=nM);fbr(i=O;i=T&c=,5,)k=c-49;fbr(i=O;inum;i-H-)血(J=O;j1-i;j+)if(stujscorekstuj+1.scorek)change(jj+l);outputx(k);elsepruitf(niiXuanZenYouWu.QmgChongXuan!nH);stopQ;voidchange(int/*交换结构体数组中的两个记录*/stmctstudenttemp;temp=stui;stui=stuj;stuj=temp;voidoutputx(intk)/*选择输出单科成绩*/chaixueke510=MCyuyannGaoshuHWuli,DianlunModianM;chai(*p)10;/*定义一个指向包含10个字符型元素的一维数组的指针变量*/iiiti;p=xueke;pnntf(niitPaiXuHouWei:iiH);pnntf(nt=nM);printf(ntXueHaoXmgMiiigRuXueNian%sPaipnntf(nt=nM);fbr(i=O;inum;i+)printf(nt%-lls%-1Os%-11d%-6.1f%5dn”,stui.no,stui.name,stu1.year,stuiscorek,i+1);voidfiiidlO/*查找界面函数*/clwc4;clwcnoll,cname10;mtij.cyear;while(l)clrscrQ;ChaZhao1. AnXueHao2. AnXmgMmg3. AnRuXueNiaiiESCFanHui/*按学号查找*/*按姓名查找*/*n”);/*按入学年查找*/*nM);/*返回*/piintf(HtttQingXuanZe:iiH);/*请选择:*/c4=getch();if(c4=27)break;switch(c4)caseT:pnntf(HShuRuXueHao:iin);/*“输入学号*/gets(cno);i=fiiid(cno);panduani(i);break;case2:pnntf(HShuRuXmg“输入姓名:”*/gets(cname);i=fiiidiiame(cname);panduani(i);break;casepnntf(HShuRuRUXueNian:nH);/*a输入入学年”*/scanf(”cT、&cyeaQ;fiiidyeai(cyeai);stop();break;default:printf(nXuanZenYouWu.QingChongXuan?iiH);/*“选择有误,请重选!*/intfindname(chai-cname)/*按姓名查找*/iiiti;fbr(i=O:inum;i+)if(strcmp(stui.name,cname)=O)/*判断两个字符串相等*/returni;/*查找成功*/return-1;/*查找失败*/voidfiiidyeai(intcyear)intij.flag=O;fbr(i=O;inum;i+)if(stui.year=cyear)flag=l;break;if(flag=O)priiitf(nYaoChaZhaoDeXueShengBuCunZaiiiH);stop();elseprintf(HChaZhaoDaoDeXueShengXinXiWei:nM);/*“查找到的学生信息为:*/printf(HXueHaoXmgMiiigRuXueNianCGaoShuDaWuDiaiiLuMoDiannM);printf(H=n,r);fbr(i=O;inum;i-H-)if(stui.year=cyear)严判断两个数值相等*/pimtf(M%-lls%-1Os%-11cT,stui.no,stui.name.stui.yeai);for(j=0;j5J+)printf(H%-7.1fstui.scorej);intpaiiduaiu(inti)/*通过1的值,判断信息要查找的信息是否存在*/rntj;Lf(i)printf(nYaoChaZhaoDeXueShengBuCunZainn)*要查找的学生不存在*/stopQ;elseprintf(HChaZhaoDaoDeXueShengXinXiWei:nM);/*“查找到的学生信息为*/printf(HXueHaoXmgMiiigRuXueNianCGaoShuDaWuDiaiiLuMoDiannH);pnntf(H=nH);printf(H%-lls%-lOsH-llcfsnitiJ.nostufiJ.namestufiJ.yeai);foi(j=Oj5j-H-)printf(H%-7.1fstui.scorefj);printffST);stopQ;voidsaveQ严保存文件*/iiiti;FILE*fp;if(=fbpenCstud於,$)=NULL)严创建二进制文件*/_priiitf(HChuangJianShiBai!QiiigChongXmYiinXiiigChengXu.iiH);/*显示“创建文件失败,请重新运行程序”exit(O);/*终止程序*/fbr(i=O;inum;i+)fwrite(&stui,15sizeof(structstudent),fp);/*将1+1名学生成绩写入文件*7fclose();voidniainQ/*主控菜单*7charc;nut();while(l)clisci();pnntfCniinttt*%V);MAINMENU1. WeiHu2. TongJi3. PaiXu4. ChaZhaoESC.SAVE&EXIT*n”);/*维护*/*n”);/*统计*/”);/*排序*/*5”);/*查找*/*ir);/*存盘退岀勺prmtf(HtttQmgXuanZe:nM);/*请选择:*/c=getch();switch(c)case4:weiliuQ;break;case2:tongjiQ;break;casepaixulO;break;case*4:find1();break;case27:saveQ;exit(O);break;default:prmtf(HXuanZenYouWu.QmgChongXuan!nH)*a选择有误,请重选!”*/
展开阅读全文