///////////////////////////////////////////////////////////////////////////
//定义课程
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;
course *p = root;
while (p)
{
aver = aver+p->grade;
}
aver = aver/factcourse;
return aver;
}
void student::addcourse (char N[],float g)
{
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)
return 0;
p = p->Next;
while(p)
{
if(strcmp(p->cname,N)==0)
return 1;
p = p->Next;
}
return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////
struct studentdb
{
student stu;
studentdb *Next;
};
struct studentname
{
char tname[20]; //学生的名字
float result; //学生所得的该课程分数
studentname *Next;
};
/////////////////////////////////////////////////////////////////////////////////////////////
//课程类
class subject
{
public:
subject()
{
first = NULL;
maxstudent=30;
activestudnet=0;
}
float readcredit(); //得到课程的学分
void getcredit(float a); //设置学分
float getaverage(); //得到学生的平均成绩
float getresult(char N[]); //查找某个学生的成绩
void getkname(char N[]); //读出课程的名称
void setkname(char N[]); //读入课程的名称
studentname *retfirst()
{
return first; //返回根结点
}
void findstudent(studentdb *P); //根据该课程的名称,寻找选这课程的学生
int retactivestudent()
{
return activestudnet; //返回实际学生数
}
int retmaxstudent()
{
return 30; //返回最多学生数30
}
void clractivestudnet()
{
activestudnet = 0; //从文件中读出来后将实际学生数清零
}
private:
int maxstudent; //最多学生数
int activestudnet; //实际学生数
studentname *first; //学生名单
float credit; //该课程的学分
float averagerusult; //该课程的平均成绩
char kname[20]; //该课程的名称
};
float subject::readcredit ()
{
return credit;
}
void subject::getcredit (float a)
{
credit=a;
}
float subject::getaverage()
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页