还剩19页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
vc学生信息管理系统悬赏分0-解决时间2008-6-1116:461能够从屏幕上读取一个学生的信息并将信息存入到数据文件中2能够将指定的信息从文件中删除3能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上4可以统计全部学生的总成绩,及其在班上的排名5能够统计各科的平均成绩及及格率6要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入7如果检索不到相应的信息应提示用户#includeiostream.h#includeiomanip.h#includefstream#includevector#includemalloc.h#includestdlib.h#includestring#includeprocess.h#includestdio.h//#defineNULL0intconstQ=20;#defineLENsizeofstructstudentusingnamespacestd;intn=0;//定义一个全局变量统计学生人数//——---------定义一个学生考试信息的结构体structstudent{charname[Q];//用来存放姓名的charsex[Q];//用来存放性别的longintid;//用来存放准考证号的intscore
[4];//用来存放分数的inttotal;//用来存放总分数的structstudent*next;};//student向量容器vectorstudentstu;//--------------学生类classInformation{public:Information;//构造函数.~Information;//析构函数.student*creat;//建立链表函数voidoutputstudent*head;intcountstudent*head;//定义函数count统计考生总数student*insertstudent*head;//指针函数*insert用来添加考生信息.student*cancelstudent*headlongintnum;//指针函数*cancel用来删除考生信息.student*findstudent*headlongintnum;//指针函数*find用来查找考生信息.voidinorderstudent*head;//定义inorder函数将考生的总分从大到小排列并输出voidaveragestudent*head;//求学生成绩的平均分的函数voidsavestudent*head;//保存函数student*Read;//读取函数private:student*p1*p2*p3*headst;};Information::Information{cout******************************************************************************\n;cout------------------------欢迎您使用学生成绩管理系统------------------------\n;cout******************************************************************************\n\n;}Information::~Information{cout******************************************************************************\n;cout------------------------谢谢您使用学生成绩管理系统------------------------\n;cout******************************************************************************\n;}student*Information::creatvoid{//定义一个指向structstudent的结构体指针函数*creat用来增加考生信息.charch[Q];n=0;//用来存放姓名的p1=p2=student*mallocLEN;//调用malloc函数用来开辟一个新的存储单元cout-------------请建立学生考试信息表在姓名处键以!结束输入--------------endl;cout姓名:;cinch;head=NULL;//给指针head赋初值whilestrcmpch!!=0{//调用字符比较函数strcmp用来判断是否继续输入charstr
[10];intflag=0;p1=student*mallocLEN;//调用malloc函数用来开辟一个新的存储单元strcpyp1-namech;//将循环结构前面输入的姓名复制到结构体名为p1的数组name中cout性别:;cinp1-sex;cout准考证号8位:;do{cinstr;ifatolstr99999999||atolstr1cout对不起请正确输入!!!\n;else{p1-id=atolstr;flag=1;}}whileflag==0;flag=0;cout计算机组成原理成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[0]=atoistr;flag=1;}}whileflag==0;flag=0;cout概率统计成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[1]=atoistr;flag=1;}}whileflag==0;flag=0;cout英语成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[2]=atoistr;flag=1;}}whileflag==0;flag=0;coutC++成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[3]=atoistr;flag=1;}}whileflag==0;flag=0;p1-total=p1-score
[0]+p1-score
[1]+p1-score
[2]+p1-score
[3];//计算总分ifn==0head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针headelsep2-next=p1;//否则将p1赋给p2所指结构体的next指针p2=p1;//将指针p1赋给指针p2n++;//将n的值加1cout姓名:;cinch;//将输入的姓名存放到字符数组ch中}p2-next=NULL;//将p2所指结构体的next指针重新赋空值returnhead;//将输入的第一组学生考试信息返回}//---------------定义output函数将考生的信息从头指针所指内容开始输出voidInformation::outputstudent*head{ifhead==NULLcout这是一个空表请先输入考生成绩.\n;else{cout-------------------------------------------------------------------------------\n;cout*学生考试成绩信息表*\n;cout-------------------------------------------------------------------------------\n;cout准考证号姓名性别计算机组成原理概率统计英语C++平均分总分\n;cout-------------------------------------------------------------------------------\n;p1=head;//将头指针赋给pdo{coutsetw8p1-idsetw9p1-namesetw8p1-sexsetw13p1-score
[0]setw16p1-score
[1]setw10p1-score
[2]setw9p1-score
[3]setw6p1-total/
4.0setw11p1-totalendl;cout-------------------------------------------------------------------------------\n;p1=p1-next;//将下一组考生信息的next指针赋给p}whilep1!=NULL;//若指针p非空则继续目的是把所有的考生信息都传给指针p然后输出.}}//------------统计学生人数的函数intInformation::countstructstudent*head//定义函数count统计考生总数{ifhead==NULLreturn0;//若指针head为空返回值为0elsereturn1+counthead-next;//函数的递归调用}//-----------插入学生的成绩的函数student*Information::insertstudent*head//插入新结点定义一个指向structstudent的结构体指针函数*insert用来添加考生信息.{charstr
[10];intflag=0;cout\t----------------请输入新增学生成绩信息----------------\nendl;p1=student*mallocLEN;//使p1指向插入的新结点cout姓名:;cinp1-name;//将输入的姓名存放到结构体名为p1的数组name中cout性别:;cinp1-sex;cout准考证号8位:;do{cinstr;ifatolstr99999999||atolstr1cout对不起请请正确输入!!!\n;else{p1-id=atolstr;flag=1;}}whileflag==0;flag=0;cout计算机组成原理成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[0]=atoistr;flag=1;}}whileflag==0;flag=0;cout概率统计成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[1]=atoistr;flag=1;}}whileflag==0;flag=0;cout英语成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[2]=atoistr;flag=1;}}whileflag==0;flag=0;coutC++成绩:;do{cinstr;ifatoistr100||atoistr1cout对不起请输入1-100之间的数字!!\n;else{p1-score
[3]=atoistr;flag=1;}}whileflag==0;flag=0;p1-total=p1-score
[0]+p1-score
[1]+p1-score
[2]+p1-score
[3];//计算总分p2=head;//将头指针赋给p2ifhead==NULL//若没调用次函数以前的头指针head为空{head=p1;p1-next=NULL;}//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值else{whilep1-idp2-idp2-next!=NULL{p3=p2;//p3指向原p2指向的结点p2=p2-next;}//p2后移一个结点ifp1-id=p2-id{ifhead==p2{p1-next=head;head=p1;}//插入到第一个结点之前else{p3-next=p1;p1-next=p2;}//插入到p3所指结点之后}else{p2-next=p1;p1-next=NULL;}//插入到尾结点之后}n++;//将学生人数加1cout\t你输入的学生信息已经成功插入endl;returnhead;}//------------删除函数student*Information::cancelstudent*headlongintnum//定义一个指向structstudent的结构体指针函数*delete用来删除考生信息.{ifhead==NULL//若调用次函数以前的头指针head为空{returnhead;}else{p1=head;//否则将头指针赋给p1whilenum!=p1-idp1-next!=NULL//寻找要删除的结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空{p2=p1;p1=p1-next;}//p2指向原p1指向的结点p1后移一个结点ifnum==p1-id//如果输入的学生准考证号是p1所指的学生准考证号//结点找到后删除{ifp1==headhead=p1-next;//如果head指针和p1指针相等则将下一个结点赋给指针headelsep2-next=p1-next;//否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去cout删除准考证号为num的学生\n;n--;//将学生人数减1}returnhead;//将头指针返回}}//------------查找函数student*Information::findstudent*headlongintnum//定义一个指向structstudent的结构体指针函数*find用来查找考生信息.{ifhead==NULL//若调用次函数以前的头指针head为空{cout这是一个空表请先输入考生成绩.\n;returnhead;}else{p1=head;//否则将头指针赋给p1whilenum!=p1-idp1-next!=NULL//寻找结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空{p1=p1-next;}//p2指向原p1指向的结点p1后移一个结点ifnum==p1-id//如果要查找的学生准考证号是p1所指的学生准考证号{cout------------------------------------------------------------------------------\n;cout准考证号姓名性别计算机组成原理概率统计英语C++平均分总分\n;cout------------------------------------------------------------------------------\n;coutsetw8p1-idsetw9p1-namesetw8p1-sexsetw13p1-score
[0]setw16p1-score
[1]setw10p1-score
[2]setw9p1-score
[3]setw6p1-total/
4.0setw11p1-totalendl;cout------------------------------------------------------------------------------\n;}elsecout没找到准考证号为num的学生.\n;//结点没找到returnhead;}}//------------定义inorder函数将考生的总分从大到小排列并输出voidInformation::inorderstudent*head{intikm=0j;student*p[Q];//定义一个指向structstudent的结构体指针数组pifhead!=NULL//如果头指针是空则继续{m=counthead;cout------------------------------------------------------------------------------\n;cout学生考试成绩统计表\n;cout------------------------------------------------------------------------------\n;cout准考证号姓名性别计算机组成原理概率统计英语C++平均分总分名次\n;cout------------------------------------------------------------------------------\n;p1=head;fork=0;km;k++{p[k]=p1;p1=p1-next;}fork=0;km-1;k++//选择排序法forj=k+1;jm;j++ifp[k]-totalp[j]-total{p2=p[k];p[k]=p[j];p[j]=p2;}//从大到小排列的指针fori=0;im;i++{coutsetw8p1-idsetw9p1-namesetw8p1-sexsetw13p1-score
[0]setw16p1-score
[1]setw10p1-score
[2]setw9p1-score
[3]setw6p1-total/
4.0setw11p1-totalendl;cout------------------------------------------------------------------------------\n;}}}//------------求各科平均分成绩的函数voidInformation::averagestudent*head{intkm;floatarg1=0arg2=0arg3=0arg4=0;ifhead==NULL//如果头指针是空则继续{cout这是一个空表请先输入考生成绩.\n;}else{m=counthead;p1=head;fork=0;km;k++{arg1+=p1-score
[0];arg2+=p1-score
[1];arg3+=p1-score
[2];arg4+=p1-score
[3];p1=p1-next;}arg1/=m;arg2/=m;arg3/=m;arg4/=m;cout全班单科成绩平均分\n;cout------------------------------------------------------------------------------\n;cout计算机组成原理平均分:setw7arg1概率统计平均分:setw7arg2英语平均分:setw7arg3C++平均分:setw7arg4endl;cout------------------------------------------------------------------------------\n;}}//-------------------保存函数.voidInformation::savestudent*head{ofstreamoutdata.txtios::out;outcountheadendl;whilehead!=NULL{outhead-name\thead-id\t\thead-sex\thead-score
[0]\thead-score
[1]\thead-score
[2]\thead-score
[3]\thead-totalendl;head=head-next;}}//———————————读取函数的实现student*Information::Read{inti=0;p1=p2=student*mallocLEN;head=NULL;ifstreamindata.txtios::out;ini;ifi==0{coutdata.txt文件中的数据为空,请先输入数据endl;return0;}else{cout…………………………………………………………………………………………endl;for;i0;i--{p1=student*mallocLEN;cinst.namest.idst.sexst.score
[0]st.score
[1]st.score
[2]st.score
[3]st.total;strcpyp1-namest.name;p1-id=st.id;strcpyp1-sexst.sex;p1-score
[0]=st.score
[0];p1-score
[1]=st.score
[1];p1-score
[2]=st.score
[2];p1-score
[3]=st.score
[3];p1-total=st.total;ifn==0head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针headelsep2-next=p1;//否则将p1赋给p2所指结构体的next指针p2=p1;//将指针p1赋给指针p2n++;//将n的值加1//显示读入数据coutp1-name\tp1-id\t\tp1-sex\tp1-score
[0]\tp1-score
[1]\tp1-score
[2]\tp1-score
[3]\tp1-totalendl;cout…………………………………………………………………………………………endl;//}cout数据已经成功读取完毕endl;p2-next=NULL;returnhead;}}//------------------------------主函数.intmainvoid{Informationperson;student*head=NULL;charstr
[10];intflag=0;intchoice;longinti;head=person.Read;do{cout┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓endl;cout┃学生成绩管理系统主菜单界面┃endl;cout┃读取数据请输入数字零┃endl;cout┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫endl;cout┃
①.输入学生成绩┃endl;cout┃
②.显示学生成绩┃endl;cout┃
③.排序统计成绩┃endl;cout┃
④.查找学生成绩┃endl;cout┃
⑤.增加学生成绩┃endl;cout┃
⑥.删除学生成绩┃endl;cout┃
⑦.保存退出系统┃endl;cout┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛endl;cout请输入您的选择1--7:\b\b;cinstr;ifatoistr7||atoistr1cout对不起请输入1-7这几个数字!!\n;else{choice=atoistr;switchchoice{case1:head=person.creat;break;case2:person.outputhead;break;case3:person.inorderhead;person.averagehead;cout参加考试的学生人数为:person.counthead人\n;break;case4:cout请输入要查找的准考证号8位:;do{cinstr;ifatolstr99999999||atolstr1cout对不起请输入正确输入!!!\n;else{i=atolstr;flag=1;}}whileflag==0;flag=0;person.findheadi;break;case5:head=person.inserthead;person.outputhead;break;case6:cout请输入要删除的准考证号8位:;do{cinstr;ifatolstr99999999||atolstr1cout对不起请输入正确输入!!!h\n;else{i=atolstr;flag=1;}}whileflag==0;flag=0;head=person.cancelheadi;person.outputhead;break;case7:person.savehead;cout文件已保存!可以安全退出!!!endl;break;default:cout对不起,您的输入有误,请重新输入\n;break;}}}whilechoice!=7;return0;} 6回答者你不拉稀诺维奇http://passport.baidu.com/businessaid=6un=%C4%E3%B2%BB%C0%AD%CF%A1%C5%B5%CE%AC%C6%E6\l2\t_blank-二级http://www.baidu.com/search/zhidao_help.html\l如何选择头衔\t_blank 2008-6-213:28我来评论http://zhidao.baidu.com/remark/
55616683.html\t_blank相关内容•求毕业论文VC“学生信息管理系统”http://zhidao.baidu.com/question/
152102420.htmlfr=qrlcid=866index=1fr2=query\t_blank 2010-5-25•用VC++做“学生信息管理系统”的登录界面http://zhidao.baidu.com/question/
47128238.htmlfr=qrlcid=866index=2fr2=query\t_blank 3 2008-3-19•谁能帮我vc++做个学生信息管理系统http://zhidao.baidu.com/question/
53288779.htmlfr=qrlcid=866index=3fr2=query\t_blank 5 2008-5-29•用VC编写一个学生信息管理系统http://zhidao.baidu.com/question/
58880756.htmlfr=qrlcid=866index=4fr2=query\t_blank 2008-7-5•谁能提供一下用VC++制作一个学生信息管理系统的代码的啊??http://zhidao.baidu.com/question/
163679654.htmlfr=qrlcid=866index=5fr2=query\t_blank 1 2010-7-4 更多关于vc学生管理系统的问题http://zhidao.baidu.com/qword=vc%20%D1%A7%C9%FA%B9%DC%C0%ED%CF%B5%CD%B3ct=17pn=0tn=ikaslistrn=10fr=qrlcid=866fr2=query\t_blank查看同主题问题学生信息管理系统http://zhidao.baidu.com/topicct=29tn=iktopicword=%D1%A7%C9%FA%D0%C5%CF%A2%B9%DC%C0%ED%CF%B5%CD%B3fr=rtagcid=866index=1fr2=query\t_blank等待您来回答更多http://zhidao.baidu.com/qct=18tn=ikqlall_cookielm=20回答谁有《易学C++》这本书的电子版帮忙发带407066663@qq.comhttp://zhidao.baidu.com/question/
198390515.htmlpush=ql\o谁有《易学C++》这本书的电子版帮忙发带407066663@qq.com\t_blank0回答20Linuxwindowssocket传输问题http://zhidao.baidu.com/question/
198390365.htmlpush=ql\oLinuxwindowssocket传输问题\t_blank0回答C++简单问题,谢谢http://zhidao.baidu.com/question/
198390073.htmlpush=ql\oC++简单问题,谢谢\t_blank0回答苹果电脑YY语音的声卡驱动在哪里?QQ757066637http://zhidao.baidu.com/question/
198389926.htmlpush=ql\o苹果电脑YY语音的声卡驱动在哪里?QQ757066637\t_blank0回答荣成方正房地产公司开发的宝月山庄怎么样http://zhidao.baidu.com/question/
198389442.htmlpush=ql\o荣成方正房地产公司开发的宝月山庄怎么样\t_blank0回答c语言中aba:b什么意思http://zhidao.baidu.com/question/
198389429.htmlpush=ql\oc语言中aba:b什么意思\t_blank0回答急!!!在线等!!!http://zhidao.baidu.com/question/
198389071.htmlpush=ql\o急!!!在线等!!!\t_blank0回答屡败屡战说明了什么道理http://zhidao.baidu.com/question/
198388980.htmlpush=ql\o屡败屡战说明了什么道理\t_blank其他回答 共1条#includestdio.h#includestdlib.h#includestring.hstructstud{longnum;charname
[20];doublescore;};typedefstructstucode{structstudstudent;structstucode*next;}L;voidmenu;voidcreateliststructstucode**r;voidoutstructstucode*r;voidsearch1structstucode*r;voidsearch2structstucode*r;voiddelstructstucode**r;voidinsertstructstucode**r;voidsortstructstucode**r;voidmain{charchoose;intflag=1;structstucode*r=NULL;whileflag{systemcls;menu;choose=getchar;switchchoose{case1:createlistr;outr;printfTestingfunction1\nPressanykeytocontinue\n;getchar;getchar;break;case2:search1r;printfTestingfunction1\nPressanykeytocontinue\n;getchar;getchar;break;case3:search2r;printfTestingfunction1\nPressanykeytocontinue\n;getchar;getchar;break;case4:delr;outr;printfTestingfunction1\nPressanykeytocontinue\n;getchar;getchar;break;case5:insertr;outr;printfTestingfunction1\nPressanykeytocontinue\n;getchar;getchar;break;case6:sortr;outr;printfTestingfunction1\nPressanykeytocontinue\n;getchar;getchar;break;case7:outr;printfTestingfunction7\nPressanykeytocontinue\n;getchar;getchar;break;case0:flag=0;printfTheend.\n;break;default:printf\nWrongSelection!选择错误请重选!\n;getchar;getchar;}}}voidcreateliststructstucode**r{structstucode*p*t;longn;chara
[20];doubles;if*r*r=NULL;printf\n请输入\n学号(请按学号升序排列)姓名分数(若要结束请输入三个为零)\n;scanf%ld%s%lfnas;ifn==0return;p=L*mallocsizeofL;p-student.num=n;strcpyp-student.namea;p-student.score=s;p-next=NULL;*r=p;scanf%ld%s%lfnas;whilen{t=p;p=L*mallocsizeofL;p-student.num=n;strcpyp-student.namea;p-student.score=s;p-next=NULL;t-next=p;scanf%ld%s%lfnas;}}voidsearch1structstucode*r{longx;if!r{printf没有学生信息可查询!\n;return;}printf请输入要查询的学生信息的学生学号:\n;scanf%ldx;whilerr-student.num!=xr=r-next;ifr==NULLprintfError!Nosuchstudent!\n;elseprintf%ld%s%.2lf\nr-student.numr-student.namer-student.score;}voidsearch2structstucode*r{charm
[20];if!r{printf没有学生信息可查询!\n;return;}printf请输入要查询的学生信息的学生姓名:\n;scanf%sm;whilerstrcmpr-student.namemr=r-next;ifr==NULLprintfError!Nosuchstudent!\n;elseprintf%ld%s%.2lf\nr-student.numr-student.namer-student.score;}voiddelstructstucode**r{longk;structstucode*p=*r*t;if!*r{printf没有学生信息可删除!\n;return;}printf请输入要删除的学生信息的学生学号:\n;scanf%ldk;ifp-student.num==k*r=*r-nextfreep;else{whilep-nextp-next-student.num!=kp=p-next;ifp-next==NULLprintfError!Nosuchstudent!\n;else{t=p-next;p-next=p-next-next;freet;}}}voidinsertstructstucode**r{longn;chara
[20];doubles;L*p*t*k;printf请输入要插入的学生信息的学生学号姓名分数:\n;scanf%ld%s%lfnas;p=L*mallocsizeofL;p-student.num=n;p-student.score=s;strcpyp-student.namea;if!*r{*r=p;*r-next=NULL;return;}ifp-student.num*r-student.nump-next=*r*r=p;else{t=*r;k=t;whilet-nextt-next-student.num=p-student.numt=t-next;p-next=t-next;t-next=p;*r=k;}}voidsortstructstucode**r{structstucode*t*p*q*z;if!r{printf没有学生信息可排序!\n;return;}if!*r||!*r-nextreturn;t=*r;p=t-next;t-next=NULL;whilep{q=p-next;ifp-student.scoret-student.score{p-next=t;t=p;}else{z=t;whilez-nextz-next-student.score=p-student.scorez=z-next;p-next=z-next;z-next=p;}p=q;}*r=t;}voidoutstructstucode*r{printf\n\n;if!r{printf没有学生信息可输出!\n;return;}whiler{printf%ld%s%.2lf\nr-student.numr-student.namer-student.score;r=r-next;}printf\n\n;}voidmenu{printf\n学生信息管理系统\n;printf\n菜单\n\n;printf\n1建立链表并显示\n;printf\n2查找某学号的学生信息\n;printf\n3查找某姓名的学生信息\n;printf\n4删除某学号的学生信息\n;printf\n5插入新的学生信息\n;printf\n6按分数降序排列输出\n;printf\n7输出\n;printf\n0退出\n;printf\n请选择您要执行的选项:\n;}。