如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
#include<iostream>#include<iomanip>#include<fstream>#include<conio.h>usingnamespacestd;//定义课程classcourse//某个学生所学的课程中的某一个{public:charcname[20];//课程名称floatgrade;//课程成绩course*Next;//指向下一个课程的指针};//学生类classstudent{public:student(){root=NULL;constintmaxcourse=5;factcourse=0;}voidreadname(charN[]);//读入学生的姓名voidgetname(charN[]);//得到学生的姓名voidwrecourse(charN[],floatscore);//要据课程名写入学生课程的成绩floataverage();//学生课程的平均成绩voidaddcourse(charN[],floatg);//给学生增加一门课intfindcourse(charN[]);//查找是否已有此课程,如果有返回,如果没有返回intretfactcourse(){returnfactcourse;}//得到所学的课程数目course*retroot(){returnroot;}//利用键表将所有的课程保存起来intretmaxcourse(){return5;}//得到最多可学的课程数目voidclrroot()//清零{root=NULL;factcourse=0;}private:charsname[20];//学生的姓名intmaxcourse;//学生最多可以学五门课程intfactcourse;//学生实际所学的课程数目course*root;//课程的根结点指针};voidstudent::readname(charN[])//读入学生的姓名{strcpy(sname,N);}voidstudent::getname(charN[])//得到学生的姓名{strcpy(N,sname);}voidstudent::wrecourse(charN[],floatscore)//要据课程名写入学生课程的成绩{course*p=root;if(p==NULL)return;if(p!=NULL)p=p->Next;while(p){if(strcmp(p->cname,N)==0)p->grade=score;p=p->Next;}}floatstudent::average()//学生课程的平均成绩{floataver=0.0;course*p=root;while(p){aver=aver+p->grade;}aver=aver/factcourse;returnaver;}voidstudent::addcourse(charN[],floatg)//给学生增加一门课{course*s=newcourse;s->Next=NULL;if(root==NULL)root=s;course*p=root;course*newcourse=newcourse;newcourse->Next=p->Next;p->Next=newcourse;strcpy(newcourse->cname,N);newcourse->grade=g;factcourse++;}intstudent::findcourse(charN[])//查找是否已有此课程,如果有返回,如果没有返回{course*p=root;if(root==NULL)return0;p=p->Next;while(p){if(strcmp(p->cname,N)==0)return1;p=p->Next;}return0;}classstudentdb{public:studentstu;studentdb*Next;};structstudentname{chartname[20];//学生的名字floatresult;//学生所得的该课程分数studentname*Next;};//课程类classsubject{public:subject(){first=NULL;maxstudent=30;activestudnet=0;}floatr