C++实现学生信息管理系统(3)

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;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d9f6910242786962bc021708d41b61cb.html