void SInfo::StuCopy(StuNode *ptemp, StuNode *p) //拷贝学生信息(将p的信息拷贝到ptemp中)
{
if (p == NULL)
{
cout << "拷贝目标为空!" << endl;
}
else
{
ptemp->num = p->num;
ptemp->math = p->math;
ptemp->eng = p->eng;
ptemp->yuwen = p->yuwen;
ptemp->sum = p->sum;
//ptemp->nextstu = p->nextstu; //只是信息拷贝,next不能拷贝否则信息丢失
}
}
void SInfo::StuSort(char ch) //根据 总分排序
{
if (ch == '>')
{
for (StuNode *p = StuListHead->nextstu; p != NULL; p = p->nextstu)
{
for (StuNode *q = StuListHead->nextstu; q != NULL; q = q->nextstu)
{
if (p->sum > q->sum)
{
StuNode *ptemp = new StuNode;
StuCopy(ptemp, p);
StuCopy(p, q);
StuCopy(q, ptemp);
}
}
}
}
else if (ch == '<')
{
for (StuNode *p = StuListHead->nextstu; p != NULL; p = p->nextstu)
{
for (StuNode *q = StuListHead->nextstu; q != NULL; q = q->nextstu)
{
if (p->sum < q->sum)
{
StuNode *ptemp = new StuNode;
StuCopy(ptemp, p);
StuCopy(p, q);
StuCopy(q, ptemp);
}
}
}
}
else if (ch == 'o')
{
for (StuNode *p = StuListHead->nextstu; p != NULL; p = p->nextstu)
{
for (StuNode *q = StuListHead->nextstu; q != NULL; q = q->nextstu)
{
if (p->num < q->num)
{
StuNode *ptemp = new StuNode;
StuCopy(ptemp, p);
StuCopy(p, q);
StuCopy(q, ptemp);
}
}
}
}
else
{
cout << "排序条件出错!" << endl;
}
}
void SInfo::StuClassfy() //根据学生总分分类
{
int grade[5] = {0};
StuNode *p = StuListHead->nextstu;
while (p != NULL)
{
if (89 < p->math)
{
grade[0]++;
}
else if (79 < p->math && p->math < 90)
{
grade[1]++;
}
else if (69 < p->math && p->math < 80)
{
grade[2]++;
}
else if (59 < p->math && p->math < 70)
{
grade[3]++;
}
else
{
grade[4]++;
}
p = p->nextstu;
}
cout << "A" << '\t' << "B" << '\t' << "C" << '\t' << "D" << '\t' << "E" << endl;
for (int i = 0; i < 5; i++)
{
cout << grade[i] << '\t';
}
cout << endl;
}