vc学生信息管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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;#defineLENsizeof(structstudent)usingnamespacestd;intn=0;//定义一个全局变量统计学生人数//——---------定义一个学生考试信息的结构体structstudent{charname[Q];//用来存放姓名的charsex[Q];//用来存放性别的longintid;//用来存放准考证号的intscore[4];//用来存放分数的inttotal;//用来存放总分数的structstudent*next;};//student向量容器vectorstudentstu;//--------------学生类classInformation{public: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,longintnum);//指针函数*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******************************************************************************\n\n;}Information::~Information(){cout******************************************************************************\n;cout------------------------谢谢您使用学生成绩管理系统------------------------\n;cout******************************************************************************\n;}student*Information::creat(void){//定义一个指向structstudent的结构体指针函数*creat()用来增加考生信息.charch[Q];n=0;//用来存放姓名的p1=p2=(student*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元cout-------------请建立学生考试信息表,在姓名处键以!结束输入。--------------endl;cout姓名:;cinch;head=NULL;//给指针head赋初值while(strcmp(ch,!)!=0){//调用字符比较函数strcmp()用来判断是否继续输入charstr[10];intflag=0;p1=(student*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元strcpy(p1-name,ch);//将循环结构前面输入的姓名复制到结构体名为p1的数组name中cout性别:;cinp1-sex;cout准考证号(8位):;do{cinstr;if(atol(str)99999999||atol(str)1)cout对不起,请正确输入!!!\n;else{p1-id=atol(str);flag=1;}}while(flag==0);flag=0;cout计算机组成原理成绩:;do{cinstr;if(atoi(str)100||atoi(str)1)cout对不起,请输入1-100之间的数字!!\n;else{p1-score[0]=atoi(str);flag=1;}}while(flag==0);flag=0;cout概率统计成绩:;do{cinstr;if(atoi(str)100||atoi(str)1)cout对不起,请输入1-100之间的数字!!\n;else{p1-score[1]=atoi(str);flag=1;}}while(flag==0);flag=0;cout英语成绩:;do{cinstr;if(atoi(str)100||atoi(str)1)cout对不起,请输入1-100之间的数字!!\n;else{p1-score[2]=atoi(str);flag=1;}}while(flag==0);flag=0;coutC++成绩:;do{cinstr;if(atoi(str)100||atoi(str)1)cout对不起,请输入1-100之间的数字!!\n;else{p1-score[3]=atoi(str);flag=1;}}while(flag==0);flag=0;p1-total=p1-score[0]+p1-score[1]+p1-score[2]+p1-score[3];//计算总分if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针headelsep2-next=p1;//否则将p1赋给p2所指结构体的next指针p2=p1;//将指针p1赋给指针p2n++;//将n的值加1cout姓名:;cinch;//将输入的姓名存放到字符数组ch中}p2-next=NULL;//将p2所指结构体的next指针重新赋空值return(head);//将输入的第一组学生考试信息返回}//---------------定义output()函数将考生的信息从头指针所指内容开始输出voidInformation::output(student*head){if(head==NULL)cout这是一个空表,请先输入考生成绩.\n;else{cout-------------------------------------------------------------------------------\n;cout*学生考试成绩信息表*\n;cout-------------------------------------------------------------------------------\n;cout准考证号姓名性别计算机组成原理概率统计英语C++平均分总分\n;cout-------------------------------------------------------------------------------\n;p1=head;//将头指针赋给pdo{coutsetw(8)p1-idsetw(9)p1-namesetw(8)p1-sexsetw(13)p1-score[0]setw(16)p1-score[1]setw(10)p1-score[2]setw(9)p1-score[3]setw(6)p1-total/4.0setw(11)p1-totalendl;cout-------------------------------------------------------------------------------\n;p1=p1-next;//将下一组考生信息的next指针赋给p}while(p1!=NULL);//若指针p非空则继续,目的是把所有的考生信息都传给指针p然后输出.}}//------------统计学生人数的函数intInformation::count(structstudent*head)//定义函数count()统计考生总数{if(head==NULL)return(0);//若指针head为空返回值为0elsereturn(1+count(head-next));//函数的递归调用}//-----------插入学生的成绩的函数student*Information::insert(student*head)//插入新结点定义一个指向structstudent的结构体指针函数*insert()用来添加考生信息.{charstr[10];intflag=0;cout\t----------------请输入新增学生成绩信息----------------\nendl;p1=(student*)malloc(LEN);//使p1指向插入的新结点cout姓名:;cinp1-name;//将输入的姓名存放到结构体名为p1的数组name中cout性别:;cinp1-sex;cout准考证号(8位):;do{cinstr;if(atol(str)99999999||atol(str)1)cout对不起,请请正确输入!!!\n;else{p1-id=atol(str);flag=1;}}while(flag==0);flag=0;cout计算机组成原理成绩:;do{cinstr;if(atoi(str)100||atoi(str)1)cout对不起,请输入1-100之间的数字!!\n;else{p1-score[0]=atoi(str);flag=1;}}while(flag==0);flag=0;cout概率统计成绩:;do{cinstr;if(atoi(str)100||atoi(str)1)cout对不起,请输入1-100之间的数字!!\n;else{p1-score[1]=atoi(str);flag=1;}}while(flag==0);flag=0;cout英语成绩:;do{cins

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功