//定义课程
struct course //某个学生所学的课程中的某一个
{
char cname[20]; //课程名称
float grade; //课程成绩
course *Next; //指向下一个课程的指针
};
//学生类
class student
{
public:
student()
{
root = NULL;
const maxcourse = 5;
factcourse = 0;
}
void readname(char N[] ); //读入学生的姓名
void getname(char N[]); //得到学生的姓名
void wrecourse(char N[],float score); //要据课程名写入学生课程的成绩
float average(); //学生课程的平均成绩
void addcourse(char N[],float g); //给学生增加一门课
int findcourse(char N[]); //查找是否已有此课程,如果有返回1,如果没有返回0
int retfactcourse()
{
return factcourse;
} //得到所学的课程数目
course *retroot()
{
return root; //利用键表将所有的课程保存起来
}
int retmaxcourse()
{
return 5; //得到最多可学的课程数目
}
void clrroot() //清零
{
root = NULL;
factcourse = 0;
}
~student()
{}
private:
char sname[20]; //学生的姓名
int maxcourse; //学生最多可以学五门课程
int factcourse; //学生实际所学的课程数目
course *root; //课程的根结点指针
};
void student::readname (char N[])
{
strcpy(sname,N);
}
void student::getname(char N[])
{
strcpy(N,sname);
}
void student::wrecourse(char N[],float score)
{
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;
}
}
float student::average()
{
float aver=0.0;
www.751com.cn)
{
course *s = new course;
s->Next=NULL;
if(root == NULL)
root = s;
course *p = root;
course *newcourse = new course;
newcourse->Next = p->Next;
p->Next=newcourse;
strcpy(newcourse->cname,N);
newcourse->grade = g;
factcourse++;int student::findcourse (char N[])
{ course *p = root;
if(root==NULL)
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页