《vc学生信息管理系统教学内容.doc》由会员分享,可在线阅读,更多相关《vc学生信息管理系统教学内容.doc(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。vc学生信息管理系统-vc学生信息管理系统悬赏分:0-解决时间:2008-6-1116:461)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。4)可以统计全部学生的总成绩,及其在班上的排名。5)能够统计各科的平均成绩及及格率。6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。7)如果检索不到相应的信息应提示用户。#include#include#include#include#
2、include#include#include#include#include/#defineNULL0intconstQ=20;#defineLENsizeof(structstudent)usingnamespacestd;intn=0;/定义一个全局变量统计学生人数/-定义一个学生考试信息的结构体structstudentcharnameQ;/用来存放姓名的charsexQ;/用来存放性别的longintid;/用来存放准考证号的intscore4;/用来存放分数的inttotal;/用来存放总分数的structstudent*next;/student向量容器vectorstu;/-学
3、生类classInformationpublic:Information();/构造函数.Information();/析构函数.student*creat();/建立链表函数。voidoutput(student*head);intcount(student*head);/定义函数count()统计考生总数student*insert(student*head);/指针函数*insert()用来添加考生信息.student*cancel(student*head,longintnum);/指针函数*cancel()用来删除考生信息.student*find(student*head,long
4、intnum);/指针函数*find()用来查找考生信息.voidinorder(student*head);/定义inorder()函数将考生的总分从大到小排列并输出voidaverage(student*head);/求学生成绩的平均分的函数voidsave(student*head);/保存函数student*Read();/读取函数private:student*p1,*p2,*p3,*head,st;Information:Information()cout*n;cout-n;cout*nn;Information:Information()cout*n;cout-n;cout*n;
5、student*Information:creat(void)/定义一个指向structstudent的结构体指针函数*creat()用来增加考生信息.charchQ;n=0;/用来存放姓名的p1=p2=(student*)malloc(LEN);/调用malloc()函数用来开辟一个新的存储单元cout-endl;coutch;head=NULL;/给指针head赋初值while(strcmp(ch,!)!=0)/调用字符比较函数strcmp()用来判断是否继续输入charstr10;intflag=0;p1=(student*)malloc(LEN);/调用malloc()函数用来开辟一个
6、新的存储单元strcpy(p1-name,ch);/将循环结构前面输入的姓名复制到结构体名为p1的数组name中coutp1-sex;coutstr;if(atol(str)99999999|atol(str)1)coutid=atol(str);flag=1;while(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore0=atoi(str);flag=1;while(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore1=atoi(str);flag=1;w
7、hile(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore2=atoi(str);flag=1;while(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore3=atoi(str);flag=1;while(flag=0);flag=0;p1-total=p1-score0+p1-score1+p1-score2+p1-score3;/计算总分if(n=0)head=p1;/如果是输入第一组学生考试信息就将指针p1赋给指针headelsep2-next=p1
8、;/否则将p1赋给p2所指结构体的next指针p2=p1;/将指针p1赋给指针p2n+;/将n的值加1coutch;/将输入的姓名存放到字符数组ch中p2-next=NULL;/将p2所指结构体的next指针重新赋空值return(head);/将输入的第一组学生考试信息返回/-定义output()函数将考生的信息从头指针所指内容开始输出voidInformation:output(student*head)if(head=NULL)cout这是一个空表,请先输入考生成绩.n;elsecout-n;cout*学生考试成绩信息表*n;cout-n;cout准考证号姓名性别计算机组成原理概率统计英
9、语C+平均分总分n;cout-n;p1=head;/将头指针赋给pdocoutsetw(8)idsetw(9)namesetw(8)sexsetw(13)score0setw(16)score1setw(10)score2setw(9)score3setw(6)total/4.0setw(11)totalendl;coutnext;/将下一组考生信息的next指针赋给pwhile(p1!=NULL);/若指针p非空则继续,目的是把所有的考生信息都传给指针p然后输出./-统计学生人数的函数intInformation:count(structstudent*head)/定义函数count()统计
10、考生总数if(head=NULL)return(0);/若指针head为空返回值为0elsereturn(1+count(head-next);/函数的递归调用/-插入学生的成绩的函数student*Information:insert(student*head)/插入新结点定义一个指向structstudent的结构体指针函数*insert()用来添加考生信息.charstr10;intflag=0;coutt-nendl;p1=(student*)malloc(LEN);/使p1指向插入的新结点coutp1-name;/将输入的姓名存放到结构体名为p1的数组name中coutp1-sex;
11、coutstr;if(atol(str)99999999|atol(str)1)coutid=atol(str);flag=1;while(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore0=atoi(str);flag=1;while(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore1=atoi(str);flag=1;while(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore2=a
12、toi(str);flag=1;while(flag=0);flag=0;coutstr;if(atoi(str)100|atoi(str)1)coutscore3=atoi(str);flag=1;while(flag=0);flag=0;p1-total=p1-score0+p1-score1+p1-score2+p1-score3;/计算总分p2=head;/将头指针赋给p2if(head=NULL)/若没调用次函数以前的头指针head为空head=p1;p1-next=NULL;/则将p1赋给头指针head并将p1所指结构体成员指针next赋空值elsewhile(p1-idp2-id
13、)&(p2-next!=NULL)p3=p2;/p3指向原p2指向的结点p2=p2-next;/p2后移一个结点if(p1-idid)if(head=p2)p1-next=head;head=p1;/插入到第一个结点之前elsep3-next=p1;p1-next=p2;/插入到p3所指结点之后elsep2-next=p1;p1-next=NULL;/插入到尾结点之后n+;/将学生人数加1coutt你输入的学生信息已经成功插入删除函数student*Information:cancel(student*head,longintnum)/定义一个指向structstudent的结构体指针函数*d
14、elete()用来删除考生信息.if(head=NULL)/若调用次函数以前的头指针head为空return(head);elsep1=head;/否则将头指针赋给p1while(num!=p1-id&p1-next!=NULL)/寻找要删除的结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空p2=p1;p1=p1-next;/p2指向原p1指向的结点p1后移一个结点if(num=p1-id)/如果输入的学生准考证号是p1所指的学生准考证号/结点找到后删除if(p1=head)head=p1-next;/如果head指针和p1指针相等则将下一个结点赋给指针hea
15、delsep2-next=p1-next;/否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去cout删除准考证号为num查找函数student*Information:find(student*head,longintnum)/定义一个指向structstudent的结构体指针函数*find()用来查找考生信息.if(head=NULL)/若调用次函数以前的头指针head为空coutid&p1-next!=NULL)/寻找结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空p1=p1-next;/p2指向原p1指向的结点p1后移一个结点if(num=p1
16、-id)/如果要查找的学生准考证号是p1所指的学生准考证号cout-n;cout准考证号姓名性别计算机组成原理概率统计英语C+平均分总分n;cout-n;coutsetw(8)idsetw(9)namesetw(8)sexsetw(13)score0setw(16)score1setw(10)score2setw(9)score3setw(6)total/4.0setw(11)totalendl;cout-n;elsecout没找到准考证号为num的学生.n;/结点没找到return(head);/-定义inorder()函数将考生的总分从大到小排列并输出voidInformation:ino
17、rder(student*head)inti,k,m=0,j;student*pQ;/定义一个指向structstudent的结构体指针数组pif(head!=NULL)/如果头指针是空则继续m=count(head);cout-n;cout学生考试成绩统计表n;cout-n;cout准考证号姓名性别计算机组成原理概率统计英语C+平均分总分名次n;cout-n;p1=head;for(k=0;knext;for(k=0;km-1;k+)/选择排序法for(j=k+1;jtotaltotal)p2=pk;pk=pj;pj=p2;/从大到小排列的指针for(i=0;im;i+)coutsetw(8
18、)idsetw(9)namesetw(8)sexsetw(13)score0setw(16)score1setw(10)score2setw(9)score3setw(6)total/4.0setw(11)totalendl;cout求各科平均分成绩的函数voidInformation:average(student*head)intk,m;floatarg1=0,arg2=0,arg3=0,arg4=0;if(head=NULL)/如果头指针是空则继续cout这是一个空表,请先输入考生成绩.n;elsem=count(head);p1=head;for(k=0;kscore0;arg2+=p
19、1-score1;arg3+=p1-score2;arg4+=p1-score3;p1=p1-next;arg1/=m;arg2/=m;arg3/=m;arg4/=m;cout全班单科成绩平均分n;cout-n;cout计算机组成原理平均分:setw(7)arg1概率统计平均分:setw(7)arg2英语平均分:setw(7)arg3C+平均分:setw(7)arg4endl;cout保存函数.voidInformation:save(student*head)ofstreamout(data.txt,ios:out);outcount(head)endl;while(head!=NULL)o
20、utnametidttsextscore0tscore1tscore2tscore3ttotalnext;/读取函数的实现student*Information:Read()inti=0;p1=p2=(student*)malloc(LEN);head=NULL;ifstreamin(data.txt,ios:out);ini;if(i=0)coutdata.txt文件中的数据为空,请先输入数据。endl;return0;elsecout0;i-)p1=(student*)malloc(LEN);cinst.namest.idst.sexst.score0st.score1st.score2s
21、t.score3st.total;strcpy(p1-name,st.name);p1-id=st.id;strcpy(p1-sex,st.sex);p1-score0=st.score0;p1-score1=st.score1;p1-score2=st.score2;p1-score3=st.score3;p1-total=st.total;if(n=0)head=p1;/如果是输入第一组学生考试信息就将指针p1赋给指针headelsep2-next=p1;/否则将p1赋给p2所指结构体的next指针p2=p1;/将指针p1赋给指针p2n+;/将n的值加1/显示读入数据coutnametid
22、ttsextscore0tscore1tscore2tscore3ttotalendl;coutendl;/cout数据已经成功读取完毕。next=NULL;return(head);/-主函数.intmain(void)Informationperson;student*head=NULL;charstr10;intflag=0;intchoice;longinti;head=person.Read();docoutendl;cout学生成绩管理系统主菜单界面endl;cout读取数据请输入数字零endl;coutendl;cout.输入学生成绩endl;cout.显示学生成绩endl;co
23、ut.排序统计成绩endl;cout.查找学生成绩endl;cout.增加学生成绩endl;cout.删除学生成绩endl;cout.保存退出系统endl;coutendl;coutstr;if(atoi(str)7|atoi(str)1)cout对不起,请输入1-7这几个数字!n;elsechoice=atoi(str);switch(choice)case1:head=person.creat();break;case2:person.output(head);break;case3:person.inorder(head);person.average(head);cout参加考试的学生
24、人数为:person.count(head)人n;break;case4:coutstr;if(atol(str)99999999|atol(str)1)cout对不起,请输入正确输入!n;elsei=atol(str);flag=1;while(flag=0);flag=0;person.find(head,i);break;case5:head=person.insert(head);person.output(head);break;case6:coutstr;if(atol(str)99999999|atol(str)1)cout对不起,请输入正确输入!hn;elsei=atol(st
25、r);flag=1;while(flag=0);flag=0;head=person.cancel(head,i);person.output(head);break;case7:person.save(head);cout文件已保存!可以安全退出!endl;break;default:cout相关内容求毕业论文VC“学生信息管理系统”2010-5-25用VC+做“学生信息管理系统”的登录界面32008-3-19谁能帮我vc+做个学生信息管理系统52008-5-29用VC编写一个学生信息管理系统2008-7-5谁能提供一下用VC+制作一个学生信息管理系统的代码的啊?12010-7-4更多关于v
26、c学生管理系统的问题查看同主题问题:学生信息管理系统等待您来回答更多 0回答谁有易学C+这本书的电子版帮忙发带407066663 0回答20Linuxwindowssocket传输问题 0回答C+简单问题,谢谢。 0回答苹果电脑YY语音的声卡驱动在哪里?QQ757066637 0回答荣成方正房地产公司开发的宝月山庄怎么样 0回答c语言中(a)(b)?(a):(b)什么意思 0回答急!在线等! 0回答屡败屡战说明了什么道理其他回答共1条#include#include#includestructstudlongnum;charname20;doublescore;typedefstructstu
27、codestructstudstudent;structstucode*next;L;voidmenu();voidcreatelist(structstucode*r);voidout(structstucode*r);voidsearch1(structstucode*r);voidsearch2(structstucode*r);voiddel(structstucode*r);voidinsert(structstucode*r);voidsort(structstucode*r);voidmain()charchoose;intflag=1;structstucode*r=NULL;
28、while(flag)system(cls);menu();choose=getchar();switch(choose)case1:createlist(&r);out(r);printf(Testingfunction1nPressanykeytocontinuen);getchar();getchar();break;case2:search1(r);printf(Testingfunction1nPressanykeytocontinuen);getchar();getchar();break;case3:search2(r);printf(Testingfunction1nPress
29、anykeytocontinuen);getchar();getchar();break;case4:del(&r);out(r);printf(Testingfunction1nPressanykeytocontinuen);getchar();getchar();break;case5:insert(&r);out(r);printf(Testingfunction1nPressanykeytocontinuen);getchar();getchar();break;case6:sort(&r);out(r);printf(Testingfunction1nPressanykeytocon
30、tinuen);getchar();getchar();break;case7:out(r);printf(Testingfunction7nPressanykeytocontinuen);getchar();getchar();break;case0:flag=0;printf(Theend.n);break;default:printf(nWrongSelection!(选择错误,请重选!)n);getchar();getchar();voidcreatelist(structstucode*r)structstucode*p,*t;longn;chara20;doubles;if(*r)*r=NULL;printf(n请输入:n学号(请按学号升序排列)姓名分数(若要结束请输入三个为零)n);scanf(%ld%s%lf,&n,a,&s);if(n=0)return;p=(L*)malloc(sizeof(L);