#include"stdio.h"#include"stdlib.h"#include"string.h"intshoudsave=0;/**/structstudent{charnum;if!l->next{printf"=====>提示:没有资料可以修改!";return;}printf"请你输入要修改的学生学号:";scanf"%s",findmess;p=Locatel,findmess,"num";ifp{printf"请你输入新学号原来是%s:",p->data.num;scanf"%s",p->data.num;printf"请你输入新姓名原来是%s:",p->data.name;scanf"%s",p->data.name;getchar;printf"请你输入新性别原来是%s:",p->data.sex;scanf"%s",p->data.sex;printf"请你输入新的c语言成绩原来是%d分:",p->data.cgrade;scanf"%d",&p->data.cgrade;getchar;printf"请你输入新的数学成绩原来是%d分:",p->data.mgrade;scanf"%d",&p->data.mgrade;getchar;printf"请你输入新的英语成绩原来是%d分:",p->data.egrade;scanf"%d",&p->data.egrade;p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle/3;printf"=====>提示:资料修改成功!";shoudsave=1;}elseNofind;}voidDispLinkl{intcount=0;Node*p;p=l->next;if!p{printf"=====>提示:没有资料可以显示!";return;}printf" 显示结果";printstart;printc;printf"";whilep{printep;p=p->next;}printstart;printf"";}voidTongjiLinkl{Node*pm,*pe,*pc,*pt,*pa;/*用于指向分数最高的接点*/Node*r=l->next;if!r{printf"=====>提示:没有资料可以统计!";return;}pm=pe=pc=pt=pa=r;whiler!=NULL{ifr->data.cgrade>=pc->data.cgradepc=r;ifr->data.mgrade>=pm->data.mgradepm=r;ifr->data.egrade>=pe->data.egradepe=r;ifr->data.totle>=pt->data.totlept=r;ifr->data.ave>=pa->data.avepa=r;r=r->next;}printf"------------------------------统计结果--------------------------------";printf"总分最高者: %s%d分",pt->data.name,pt->data.totle;printf"平均分最高者: %s%d分",pa->data.name,pa->data.ave;printf"英语最高者: %s%d分",pe->data.name,pe->data.egrade;printf"数学最高者: %s%d分",pm->data.name,pm->data.mgrade;printf"c语言最高者: %s%d分",pc->data.name,pc->data.cgrade;printstart;}voidSortLinkl{Linkll;Node*p,*rr,*s;ll=LinkmallocsizeofNode;/*用于做新的连表*/ll->next=NULL;ifl->next==NULL{printf"=====>提示:没有资料可以排序!";return;}p=l->next;whilep{s=Node*mallocsizeofNode;/*新建接点用于保存信息*/s->data=p->data;s->next=NULL;rr=ll;whilerr->next!=NULL&&rr->next->data.totle>=p->data.totlerr=rr->next;ifrr->next==NULLrr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}freel;l->next=ll->next;printf"=====>提示:排序已经完成!";}voidSaveLinkl{FILE*fp;Node*p;intflag=1,count=0;fp=fopen"c:\\student","wb";iffp==NULL{printf"=====>提示:重新打开文件时发生错误!";exit1;}p=l->next;whilep{iffwritep,sizeofNode,1,fp==1{p=p->next;count++;}else{flag=0;break;}}ifflag{printf"=====>提示:文件保存成功.有%d条记录已经保存.",count;shoudsave=0;}fclosefp;}voidmain{Linkl;/*连表*/FILE*fp;/*文件指针*/intsel;charch;charjian;intcount=0;Node*p,*r;printf" 学生成绩管理系统 -------福建农业职业学院计应0501黄欢32号";l=Node*mallocsizeofNode;l->next=NULL;r=l;fp=fopen"C:\\student","rb";iffp==NULL{printf"=====>提示:文件还不存在,是否创建?y/n";scanf"%c",&jian;ifjian==''y''||jian==''Y''fp=fopen"C:\\student","wb";elseexit0;}printf"=====>提示:文件已经打开,正在导入记录......";while!feoffp{p=Node*mallocsizeofNode;iffreadp,sizeofNode,1,fp/*将文件的内容放入接点中*/{p->next=NULL;r->next=p;r=p;/*将该接点挂入连中*/count++;}}fclosefp;/*关闭文件*/printf"=====>提示:记录导入完毕,共导入%d条记录.",count;while1{menu;printf"请你选择操作:";scanf"%d",&sel;ifsel==0{ifshoudsave==1{getchar;printf"=====>提示:资料已经改动,是否将改动保存到文件中y/n?";scanf"%c",&ch;ifch==''y''||ch==''Y''Savel;}printf"=====>提示:你已经退出系统,再见!";break;}switchsel{case1:Addl;break;/*增加学生*/case2:Dell;break;/*删除学生*/case3:Qurl;break;/*查询学生*/case4:Modifyl;break;/*修改学生*/case5:Savel;break;/*保存学生*/case9:printf" ==========帮助信息==========";break;default:Wrong;getchar;break;}}}/**。
赵顺财2019-12-22 00:09:52