学生成绩管理系统


#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <string.h>
#include <fstream>
 
 
using namespace std;
 
 
//分数结构体
struct score
{
    float m_DataStructurescore;    //数据结构
    float m_Englishscore;        //英语
    float m_Mathscore;            //数学
    float m_PE;                    //体育
    float m_Probability;        //概率
    struct score *next;
};
 
 
//学生信息结构体
struct student
{
    long number;
    char name[20];
    char sex[5];
    score chengji;
    float average;
    struct student *next;
};
 
 
int amount = 0;    //全局变量,记录学生个数
int const Q = 80;
float A[Q];
student *head = (student*)malloc(sizeof(student));
 
 
void InputScore();            //录入学生xinx
void DisplayMainMenu();        //显示菜单
void SearchByName();        //按名查询
void SearchByNumber();        //按学号查询
void EditByName();            //按名修改
void EditByNumber();        //按学号修改
void Delete();                //删除学生信息
void save();                //保存学生信息
void Sort_DataStructrue();    //按数据结构排序
void Sort_Englishi();        //按英语排序
void Sort_Math();            //按数学排序
void Sort_PE();                //按体育排序
void Sort_Probability();    //按概率排序
void Sort_Average();        //按平均分排序
void Statistics();            //统计学生信息
void ShowStudentInfo();        //显示学生信息
void FreadFile();            //读取文件信息
void Insert();                //插入学生信息
void Sort(struct score num);
 
 
int main(void)
{
    char x;
    bool flag2 = 0;
    DisplayMainMenu();
    do
    {
        do
        {
            cin >> x;
            if((x >= 'a' && x <= 'z'))
            {
                flag2 = 1;
            }   
            else
            {
                cout << "指令错误!!!!!!" << endl;
                cout << "请选择相应的数组进行操作:" << endl;
            }
        }while(flag2 == 0);
 
 
        switch(x)
        {
            case 'a':
                cout << "*******************现在进行学生信息录入********************" << endl;
                InputScore();
                cout << "输入的学生信息为:"<< endl;
                ShowStudentInfo();   
                cout << "***********************************************************" << endl;
                DisplayMainMenu();
                break;
            case 'b':
                {
                    char z;
                    cout << "*******************现在进行学生信息查询********************" << endl;
                    cout << "请选择查询方式:(0)--按姓名查询;    (1)--按学号查询;" << endl;
                    cin >> z;
                    while(z != '0' && z != '1')
                    {
                        cout << "指令错误(请选择(0)或者(1))!!!!!!" << endl;
                        cout << "请选择查询方式:(0)--按姓名查询;   (1)--按学号查询;"  << endl;
                        cin >> z;
                    }
                    switch(z)
                    {
                        case '0': SearchByName();    break;    //按姓名查询
                        case '1': SearchByNumber();    break;    //按学号查询
                    }
                    cout << "***********************************************************" << endl;
                    DisplayMainMenu();
                    break;   
                }
            case 'c':
                {
                    char p;
                    cout << "*******************现在进行学生信息修改********************" << endl;
                    cout << "请选择查询方式:(0)--按姓名修改;    (1)--按学号修改;" << endl;
                    cin >> p;
                    while(p != '0' && p != '1')
                    {
                        cout << "指令错误(请选择(0)或者(1))!!!!!!" << endl;
                        cout << "请选择修改方式:(0)--按姓名修改;   (1)--按学号修改;"  << endl;   
                        cin >> p;
                    }
                    switch(p)
                    {
                        case '0': EditByName();    break;        //按姓名修改
                        case '1': EditByNumber(); break;     //按学号修改
                    }
                    cout << "***********************************************************" << endl;
                    DisplayMainMenu();
                    break;   
                }
            case 'd':
                cout << "*******************现在进行学生信息删除********************" << endl;
                Delete();    //删除
                cout << "***********************************************************" << endl;
                DisplayMainMenu();
                break;
            case 'e':
                cout <<"*******************现在进行显示学生信息********************" << endl;
                ShowStudentInfo();    //显示数据
                cout <<"***********************************************************" << endl;
                DisplayMainMenu();
                break;
            case 'f':
                cout <<"*******************现在进行保存学生信息********************" << endl;
                save();    //显示数据
                cout <<"***********************************************************" << endl;
                DisplayMainMenu();
                break;
            case 'g':
                cout <<"*******************现在进行读取学生信息********************" << endl;
                FreadFile();    //显示数据
                cout <<"***********************************************************" << endl;
                DisplayMainMenu();
                break;
            case 'h':
                cout << "*******************现在进行统计学生信息********************" << endl;
                Statistics();    //显示数据
                cout << "***********************************************************" << endl;
                DisplayMainMenu();
                break;
            case 'i':
                {
                    char a;
                    cout << "***********************现在进行排序************************" << endl;
                    cout << "请选择排序方式:" << endl;
                    cout << "1  按数据结构成绩排序" << endl;
                    cout << "2  按英语成绩排序" << endl;
                    cout << "3  按数学成绩排序" << endl;
                    cout << "4  按体育成绩排序" << endl;
                    cout << "5  按概率成绩排序" << endl;
                    cout << "6  按平均成绩排序" << endl;
                    cin >> a;
                    while(a < '1' || a > '6')
                    {
                        cout << "指令错误(请选择(1~6)!!!!!!)" << endl;
                        cout << "1  按数据结构成绩排序" << endl;
                        cout << "2  按英语成绩排序" << endl;
                        cout << "3  按数学成绩排序" << endl;
                        cout << "4  按体育成绩排序" << endl;
                        cout << "5  按概率成绩排序" << endl;
                        cout << "6  按平均成绩排序" << endl;
                        cin >> a;
                    }
                    switch(a)
                    {
                        case '1' : Sort_DataStructrue(); break;    //按数据结构排序
                        case '2' : Sort_Englishi();    break;        //按英语成绩排序
                        case '3' : Sort_Math();    break;            //按数学成绩排序
                        case '4' : Sort_PE(); break;            //按体育成绩排序
                        case '5' : Sort_Probability(); break;   //按概率成绩排序
                        case '6' : Sort_Average();    break;         //按平均分排序
                    }
                    cout << "***********************************************************" << endl;
                    DisplayMainMenu();
                break;
                }
            case 'j':
                cout << "***********************************************************" << endl;
                cout <<"           您已退出学生管理系统,谢谢您的使用!              " << endl;
                cout << "***********************************************************" << endl;
                cout << endl;
                return 0;
                break;
            case 'k':
                cout << "***********************************************************" << endl;
                cout << "*******************现在进行插入学生信息********************" << endl;
                Insert();    //插入
                cout << "***********************************************************" << endl;
                DisplayMainMenu();
                break;
        }
 
 
    }while(flag2 == 1);
 
 
    return 0;
}
 
 
/*保存学生信息*/
void save()
{
    student *stu = head->next;
    ofstream out("成绩管理.txt", ios::out);
    out << amount << "\t";
    int i = 1;
    while(stu != NULL && i <= amount)
    {
        out << (*stu).number << "\t" << (*stu).name  << "\t" << (*stu).sex
            << "\t" << (*stu).chengji.m_DataStructurescore << "\t"<< (*stu).chengji.m_Englishscore
            << "\t"<< (*stu).chengji.m_Mathscore<< "\t" << (*stu).chengji.m_PE
            << "\t" << (*stu).chengji.m_Probability << "\t" << (*stu).average;       
        i++;
        stu = stu->next;
        cout << endl;
    }
    cout << "......成功将学生信息保存到(成绩管理.txt)中!!!!!!" << endl;
    out.close();
}
/*文件读功能*/
void FreadFile()
{
    student *p2, *p1;
    p1 = p2 = new student;
    ifstream fin("成绩管理.txt", ios::out);
    fin >> amount;
    cout << "共读出" << amount << "个学生信息:" << endl;
    head = p2;        //把链表头传给head
 
 
    if(!fin)
    {
        cout << "不能打开文件!!!!!!" << endl;   
    }
    for(int k = 1; k <= amount; k++)
    {
        p1 = new student;
        fin >> p1->number >> p1->name >> p1->sex >> p1->chengji.m_DataStructurescore >> p1->chengji.m_Englishscore
            >> p1->chengji.m_Mathscore >> p1->chengji.m_PE >> p1->chengji.m_Probability >> p1->average;
            p2->next = p1;
            p2 = p1;
    }
 
 
    student *q = head->next;
    cout << "学号  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
    for(int i = 1; i <= amount; i++)
    {
        cout << setw(8) << q->number;
        cout << setw(8) << q->name;
        cout << setw(4) << q->sex;
        cout << setw(7) << q->chengji.m_DataStructurescore;
        cout << setw(8) << q->chengji.m_Englishscore;
        cout << setw(6) << q->chengji.m_Mathscore;
        cout << setw(6) << q->chengji.m_PE;
        cout << setw(6) << q->chengji.m_Probability;
        cout << setw(8) << q->average;
        cout << endl;
        i++;
        q = q->next;
    }
    //显示读入数据
    fin.close();
    cout << "......数据已经成功读取完毕。" << endl;
}
/*按英语排序*/
void Sort_DataStructrue()
{
    student *q = head->next;
    float B[Q];
    int i, j;
 
 
    /*首先将数据保存到数组中,数组下标从1开始*/
    for(i = 1; i <= amount; i++)
    {
        A[i] = q->chengji.m_DataStructurescore;
        q = q->next;
    }
    /*A[0]作为空位,直接选择排序*/
    for(i = 2; i <= amount; ++i)
    {
        if(A[i] < A[i - 1])
        {
            A[0] = A[i];
            A[i] = A[i - 1];
            for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j];    //元素后移
            A[j + 1] = A[0];
        }   
    }
    B[1] = A[1];
    for(i = 1, j = 1; i <= amount; i++)
    {
        if(A[i] > B[j])
        {
            j++;
            B[j] = A[i];
        }
    }
    cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
 
 
    for(i = amount; i >= 1; i--)
    {
        student *p = head->next;
        for(j = 1; j <= amount; j++)
        {
            if(p->chengji.m_DataStructurescore == B[i])
            {
                cout << setw(8) << p->number;
                cout << setw(8) << p->name;
                cout << setw(4) << p->sex;
                cout << setw(7) << p->chengji.m_DataStructurescore;
                cout << setw(8) << p->chengji.m_Englishscore;
                cout << setw(6) << p->chengji.m_Mathscore;
                cout << setw(6) << p->chengji.m_PE;
                cout << setw(6) << p->chengji.m_Probability;
                cout << setw(8) << p->average;
                cout << endl;   
            }
            p = p->next;
        }
    }   
}
/*按数据结构成绩排序*/
void Sort_Englishi()
{
    student *q = head->next;
    float B[Q];
    int i, j;
 
 
    /*首先将数据保存到数组中,数组下标从1开始*/
    for(i = 1; i <= amount; i++)
    {
        A[i] = q->chengji.m_Englishscore;
        q = q->next;
    }
    /*A[0]作为空位,直接选择排序*/
    for(i = 2; i <= amount; ++i)
    {
        if(A[i] < A[i - 1])
        {
            A[0] = A[i];
            A[i] = A[i - 1];
            for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j];    //元素后移
            A[j + 1] = A[0];
        }   
    }
    B[1] = A[1];
    for(i = 1, j = 1; i <= amount; i++)
    {
        if(A[i] > B[j])
        {
            j++;
            B[j] = A[i];
        }
    }
    cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
 
 
    for(i = amount; i >= 1; i--)
    {
        student *p = head->next;
        for(j = 1; j <= amount; j++)
        {
            if(p->chengji.m_DataStructurescore == B[i])
            {
                cout << setw(8) << p->number;
                cout << setw(8) << p->name;
                cout << setw(4) << p->sex;
                cout << setw(7) << p->chengji.m_DataStructurescore;
                cout << setw(8) << p->chengji.m_Englishscore;
                cout << setw(6) << p->chengji.m_Mathscore;
                cout << setw(6) << p->chengji.m_PE;
                cout << setw(6) << p->chengji.m_Probability;
                cout << setw(8) << p->average;
                cout << endl;   
            }
            p = p->next;
        }
    }
 
 
}
/*按数学排序*/
void Sort_Math()
{
    student *q = head->next;
    float B[Q];
    int i, j;
 
 
    /*首先将数据保存到数组中,数组下标从1开始*/
    for(i = 1; i <= amount; i++)
    {
        A[i] = q->chengji.m_Mathscore;
        q = q->next;
    }
    /*A[0]作为空位,直接选择排序*/
    for(i = 2; i <= amount; ++i)
    {
        if(A[i] < A[i - 1])
        {
            A[0] = A[i];
            A[i] = A[i - 1];
            for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j];    //元素后移
            A[j + 1] = A[0];
        }   
    }
    B[1] = A[1];
    for(i = 1, j = 1; i <= amount; i++)
    {
        if(A[i] > B[j])
        {
            j++;
            B[j] = A[i];
        }
    }
    cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
 
 
    for(i = amount; i >= 1; i--)
    {
        student *p = head->next;
        for(j = 1; j <= amount; j++)
        {
            if(p->chengji.m_DataStructurescore == B[i])
            {
                cout << setw(8) << p->number;
                cout << setw(8) << p->name;
                cout << setw(4) << p->sex;
                cout << setw(7) << p->chengji.m_DataStructurescore;
                cout << setw(8) << p->chengji.m_Englishscore;
                cout << setw(6) << p->chengji.m_Mathscore;
                cout << setw(6) << p->chengji.m_PE;
                cout << setw(6) << p->chengji.m_Probability;
                cout << setw(8) << p->average;
                cout << endl;   
            }
            p = p->next;
        }
    }   
}
/*按体育排序*/
void Sort_PE()
{
    student *q = head->next;
    float B[Q];
    int i, j;
 
 
    /*首先将数据保存到数组中,数组下标从1开始*/
    for(i = 1; i <= amount; i++)
    {
        A[i] = q->chengji.m_PE;
        q = q->next;
    }
    /*A[0]作为空位,直接选择排序*/
    for(i = 2; i <= amount; ++i)
    {
        if(A[i] < A[i - 1])
        {
            A[0] = A[i];
            A[i] = A[i - 1];
            for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j];    //元素后移
            A[j + 1] = A[0];
        }   
    }
    B[1] = A[1];
    for(i = 1, j = 1; i <= amount; i++)
    {
        if(A[i] > B[j])
        {
            j++;
            B[j] = A[i];
        }
    }
    cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
 
 
    for(i = amount; i >= 1; i--)
    {
        student *p = head->next;
        for(j = 1; j <= amount; j++)
        {
            if(p->chengji.m_DataStructurescore == B[i])
            {
                cout << setw(8) << p->number;
                cout << setw(8) << p->name;
                cout << setw(4) << p->sex;
                cout << setw(7) << p->chengji.m_DataStructurescore;
                cout << setw(8) << p->chengji.m_Englishscore;
                cout << setw(6) << p->chengji.m_Mathscore;
                cout << setw(6) << p->chengji.m_PE;
                cout << setw(6) << p->chengji.m_Probability;
                cout << setw(8) << p->average;
                cout << endl;   
            }
            p = p->next;
        }
    }   
}
 
 
/*按概率排序*/
void Sort_Probability()
{
    student *q = head->next;
    float B[Q];
    int i, j;
 
 
    /*首先将数据保存到数组中,数组下标从1开始*/
    for(i = 1; i <= amount; i++)
    {
        A[i] = q->chengji.m_Probability;
        q = q->next;
    }
    /*A[0]作为空位,直接选择排序*/
    for(i = 2; i <= amount; ++i)
    {
        if(A[i] < A[i - 1])
        {
            A[0] = A[i];
            A[i] = A[i - 1];
            for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j];    //元素后移
            A[j + 1] = A[0];
        }   
    }
    B[1] = A[1];
    for(i = 1, j = 1; i <= amount; i++)
    {
        if(A[i] > B[j])
        {
            j++;
            B[j] = A[i];
        }
    }
    cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
 
 
    for(i = amount; i >= 1; i--)
    {
        student *p = head->next;
        for(j = 1; j <= amount; j++)
        {
            if(p->chengji.m_DataStructurescore == B[i])
            {
                cout << setw(8) << p->number;
                cout << setw(8) << p->name;
                cout << setw(4) << p->sex;
                cout << setw(7) << p->chengji.m_DataStructurescore;
                cout << setw(8) << p->chengji.m_Englishscore;
                cout << setw(6) << p->chengji.m_Mathscore;
                cout << setw(6) << p->chengji.m_PE;
                cout << setw(6) << p->chengji.m_Probability;
                cout << setw(8) << p->average;
                cout << endl;   
            }
            p = p->next;
        }
    }   
}
 
 
/*按平均分排序*/
void Sort_Average()
{
    student *q = head->next;
    float B[Q];
    int i, j;
 
 
    /*首先将数据保存到数组中,数组下标从1开始*/
    for(i = 1; i <= amount; i++)
    {
        A[i] = q->average;
        q = q->next;
    }
    /*A[0]作为空位,直接选择排序*/
    for(i = 2; i <= amount; ++i)
    {
        if(A[i] < A[i - 1])
        {
            A[0] = A[i];
            A[i] = A[i - 1];
            for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j];    //元素后移
            A[j + 1] = A[0];
        }   
    }
    B[1] = A[1];
    for(i = 1, j = 1; i <= amount; i++)
    {
        if(A[i] > B[j])
        {
            j++;
            B[j] = A[i];
        }
    }
    cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
 
 
    for(i = amount; i >= 1; i--)
    {
        student *p = head->next;
        for(j = 1; j <= amount; j++)
        {
            if(p->chengji.m_DataStructurescore == B[i])
            {
                cout << setw(8) << p->number;
                cout << setw(8) << p->name;
                cout << setw(4) << p->sex;
                cout << setw(7) << p->chengji.m_DataStructurescore;
                cout << setw(8) << p->chengji.m_Englishscore;
                cout << setw(6) << p->chengji.m_Mathscore;
                cout << setw(6) << p->chengji.m_PE;
                cout << setw(6) << p->chengji.m_Probability;
                cout << setw(8) << p->average;
                cout << endl;   
            }
            p = p->next;
        }
    }
}
 
 
/*统计学生信息(主要统计不及格的人数和不及格的门数)*/
void Statistics()
{
    student *p1 = head->next;
    int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
    int i1, i2;
    //记录数据结构不及格的人数
    for(i1 = 1; i1 <= amount; i1++)
    {
        if(p1->chengji.m_DataStructurescore < 60) a++;
        if(p1->chengji.m_Englishscore < 60) b++;
        if(p1->chengji.m_Mathscore < 60) c++;
        if(p1->chengji.m_PE < 60) d++;
        if(p1->chengji.m_Probability < 60) e++;
        p1 = p1->next;
    }
 
 
    cout << "数据结构不及格人数:" << a << endl;
    cout << "英语不及格人数:" << c << endl;
    cout << "数学不及格人数:" << c << endl;
    cout << "体育不及格人数:" << d << endl;
    cout << "概率不及格人数:" << e << endl;
 
 
    student *p2 = head->next;
 
 
    for(i2 = 1; i2 <= amount && p2 != NULL; i2++)
    {
        f = 0;
        if(p2->chengji.m_DataStructurescore < 60) f++;
        if(p2->chengji.m_Englishscore < 60) f++;
        if(p2->chengji.m_Mathscore < 60) f++;
        if(p2->chengji.m_PE < 60) f++;
        if(p2->chengji.m_Probability < 60) f++;
 
 
        cout << p2->name << "同学不及格门数:" << f;
        if(f != 0) cout << "分别是:";
 
 
        if(p2->chengji.m_DataStructurescore < 60) cout << "数据结构";
        if(p2->chengji.m_Englishscore < 60) cout << " 英语";
        if(p2->chengji.m_Mathscore < 60) cout << " 数学";
        if(p2->chengji.m_PE < 60)  cout << " 体育";
        if(p2->chengji.m_Probability < 60) cout << " 概论";
 
 
        cout << endl;
        p2 = p2->next;
    }
}
/*插入新的学生信息*/
void Insert()
{
    char c;
    int j = 0;
    int i;
    student *q = head->next;
    for(i = 1; i <= amount - 1; i++) q = q->next;    //查找文件的末尾
    do
    {
        student *stu = new student;
        cout << "请输入学号:(8位)" << setw(4);
        cin >> (*stu).number;
        cout << "请输入姓名:" << setw(4);
        cin >> (*stu).name;
        cout << "请输入性别:" << setw(2);
        cin >> (*stu).sex;
        cout << "请输入数据结构成绩:" << setw(3);
        cin >> (*stu).chengji.m_DataStructurescore;
        cout << "请输入英语成绩:" << setw(3);
        cin >> (*stu).chengji.m_Englishscore;
        cout << "请输入数学成绩:" << setw(3);
        cin >> (*stu).chengji.m_Mathscore;
        cout << "请输入体育成绩:" << setw(3);
        cin >> (*stu).chengji.m_PE;
        cout << "请输入概率成绩:" << setw(3);
        cin >> (*stu).chengji.m_Probability;
        (*stu).average = ((*stu).chengji.m_DataStructurescore
        + (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
        + (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;   
        q->next = stu;
        amount++;
        cout <<    "数据信息插入成功,想继续插入吗?(y/n)";
        cin >> c;
        q = q->next;
        while(c != 'y' && c != 'n')
        {
            cout << "指令错误<请输入y/n>!!!!!!" << endl;
            cout << "数据信息插入成功,想继续插入吗(y/n)";
            cin >> c;
        }
    }while(c == 'y');
    j++;
}
/*删除学生信息*/
void Delete()
{
    char c;
    long no;
    do
    {
        bool flag = 0;
        cout << "请输入您要删除的学生的学号:" << endl;
        cin >> no;
        student *p, *q;
        q = head;
        /*查找要删除的节点*/
        while(q ->next != NULL && no != q->next->number) q = q->next;
        if(q->next != NULL)
        {
            flag = 1;
            p = q->next;
            q->next = p->next;
            amount--;
            free(p);
            cout << "........删除成功!!!!!!!!" << endl;
        }
        if(flag == 0)
        {
            cout << "对不起!!!您要删除的学生不存在!!!!!!" << endl;
            cout << "您想继续删除吗?(y/n)" << endl;
            cin >> c;
            while(c != 'y' && c != 'n')
            {
                cout << "指令错误!!!<请输入y/n!!!>" << endl;
                cin >> c;
            }
        }
    }while(c == 'y');
}
 
 
/*按学号编辑函数*/
void EditByNumber()
{
    long no;
    char c;
    do
    {
        bool flag = 0;
        student *stu = head;
        score chengji;
        cout << "请输入您要修改的学生的学号:" << endl;
        cin >> no;
        do
        {
            if(no == (*stu).number)
            {
                flag = 1;
                cout << "请输入新的数据结构成绩:" << endl;
                cin >> chengji.m_DataStructurescore;
                (*stu).chengji.m_DataStructurescore = chengji.m_DataStructurescore;
                cout << "请输入新的英语成绩:" << endl;
                cin >> chengji.m_Englishscore;
                (*stu).chengji.m_Englishscore = chengji.m_Englishscore;
                cout << "请输入新的数学成绩:" << endl;
                cin >> chengji.m_Mathscore;
                (*stu).chengji.m_Mathscore = chengji.m_Mathscore;
                cout << "请输入新的体育成绩:" << endl;
                cin >> chengji.m_PE;
                (*stu).chengji.m_PE = chengji.m_PE;
                cout << "请输入新的概率成绩:" << endl;
                cin >> chengji.m_Probability;
                (*stu).chengji.m_Probability = chengji.m_Probability;
                (*stu).average = ((*stu).chengji.m_DataStructurescore
                + (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
                + (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;
                cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
                cout << setw(8) << (*stu).number;
                cout << setw(8) << (*stu).name;
                cout << setw(4) << (*stu).sex;
                cout << setw(7) << (*stu).chengji.m_DataStructurescore;
                cout << setw(8) << (*stu).chengji.m_Englishscore;
                cout << setw(6) << (*stu).chengji.m_Mathscore;
                cout << setw(6) << (*stu).chengji.m_PE;
                cout << setw(6) << (*stu).chengji.m_Probability;
                cout << setw(8) << (*stu).average;
                cout << endl;
                cout << "........数据修改成功!" << endl;
                break;
            }
            stu = stu->next;
        }while(stu != NULL);
        if(flag == 0)
        {
            cout << "对不起,您要修改的学生不存在!请重新输入!!!!!!" << endl;
        }
        cout << "想继续修改吗?(y/n)" << endl;
        cin >> c;
        while(c != 'y' && c == 'N')
        {
            cout << "指令错误<请输入y/n!>!!!!!!" << endl;
            cout << "您想继续修改吗?(y/n)" << endl;
            cin >> c;
        }
    }while(c == 'y');   
}
 
 
/*按姓名编辑函数*/
void EditByName()
{
    char name[20];
    char c;
    do
    {
        bool flag = 0;
        student *stu = head;
        score chengji;
        cout << "请输入要修改的学生的姓名" << endl;
        cin >> name;
        do
        {
            if(strcmp(name, (*stu).name) == 0)
            {
                flag = 1;
                cout << "请输入新的数据结构成绩:" << endl;
                cin >> chengji.m_DataStructurescore;
                (*stu).chengji.m_DataStructurescore = chengji.m_DataStructurescore;
                cout << "请输入新的英语成绩:" << endl;
                cin >> chengji.m_Englishscore;
                (*stu).chengji.m_Englishscore = chengji.m_Englishscore;
                cout << "请输入新的数学成绩:" << endl;
                cin >> chengji.m_Mathscore;
                (*stu).chengji.m_Mathscore = chengji.m_Mathscore;
                cout << "请输入新的体育成绩:" << endl;
                cin >> chengji.m_PE;
                (*stu).chengji.m_PE = chengji.m_PE;
                cout << "请输入新的概率成绩:" << endl;
                cin >> chengji.m_Probability;
                (*stu).chengji.m_Probability = chengji.m_Probability;
                (*stu).average = ((*stu).chengji.m_DataStructurescore
                + (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
                + (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;
                cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
                cout << setw(8) << (*stu).number;
                cout << setw(8) << (*stu).name;
                cout << setw(4) << (*stu).sex;
                cout << setw(7) << (*stu).chengji.m_DataStructurescore;
                cout << setw(8) << (*stu).chengji.m_Englishscore;
                cout << setw(6) << (*stu).chengji.m_Mathscore;
                cout << setw(6) << (*stu).chengji.m_PE;
                cout << setw(6) << (*stu).chengji.m_Probability;
                cout << setw(8) << (*stu).average;
                cout << endl;
                cout << "........数据修改成功!" << endl;
                break;
            }
            stu = stu->next;
        }while(stu != NULL);
        if(flag == 0)
        {
            cout << "对不起,您要修改的学生不存在!请重新输入!!!!!!" << endl;
        }
        cout << "想继续修改吗?(y/n)" << endl;
        cin >> c;
        while(c != 'n' && c != 'y')
        {
            cout << "指令错误<请输入y/n!>!!!!!!" << endl;
            cout << "您想继续修改吗?(y/n)" << endl;
            cin >> c;
        }
    }while(c == 'y');
}
/*学生姓名查找*/
void SearchByName()
{
    int i2;
    char c;
    char name[20];
 
 
    do
    {
        student *stu = head->next;
        bool flag = 0;
        cout << "请输入您要查询的学生姓名:" << endl;
        cin >> name;
        for(i2 = 1; i2 <= amount; i2++)
        {
            /*strcmp()比较函数*/
            if(strcmp(name, stu->name) == 0)
            {
                flag = 1;
                cout << "您要查询的学生是:" << stu->name << endl;;
                cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
                cout << setw(8) << (*stu).number;
                cout << setw(8) << (*stu).name;
                cout << setw(4) << (*stu).sex;
                cout << setw(7) << (*stu).chengji.m_DataStructurescore;
                cout << setw(8) << (*stu).chengji.m_Englishscore;
                cout << setw(6) << (*stu).chengji.m_Mathscore;
                cout << setw(6) << (*stu).chengji.m_PE;
                cout << setw(6) << (*stu).chengji.m_Probability;
                cout << setw(8) << (*stu).average;
                cout << endl;
            }
            else
            {
                stu = stu->next;
            }
        }
        if(flag == 1)
        {
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while(c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
                cin >> c;
            }
        }
        if(flag == 0)
        {
            cout << "对不起!您要查询的学生不存在!!!!!!" << endl;
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while(c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
                cin >> c;
            }   
        }
    }while(c == 'y');   
}
 
 
/*学生学号查找*/
void SearchByNumber()
{
    int i2;
    char c;
    long no;
 
 
    do
    {
        student *stu = head->next;
        bool flag = 0;
        cout << "请输入您要查询的学生学号:" << endl;
        cin >> no;
        for(i2 = 1; i2 <= amount; i2++)
        {
            if(no == stu->number)
            {
                flag = 1;
                cout << "您要查询的学生是:" << stu->name << endl;
                cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
                cout << setw(8) << (*stu).number;
                cout << setw(8) << (*stu).name;
                cout << setw(4) << (*stu).sex;
                cout << setw(7) << (*stu).chengji.m_DataStructurescore;
                cout << setw(8) << (*stu).chengji.m_Englishscore;
                cout << setw(6) << (*stu).chengji.m_Mathscore;
                cout << setw(6) << (*stu).chengji.m_PE;
                cout << setw(6) << (*stu).chengji.m_Probability;
                cout << setw(8) << (*stu).average;
                cout << endl;
            }
            else
            {
                stu = stu->next;
            }
        }
        if(flag == 1)
        {
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while(c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
                cin >> c;
            }
        }
        if(flag == 0)
        {
            cout << "对不起!您要查询的学生不存在!!!!!!" << endl;
            cout << "您想继续查询吗?(y/n)" << endl;
            cin >> c;
            while(c != 'y' && c != 'n')
            {
                cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
                cin >> c;
            }   
        }
 
 
    }while(c == 'y');
 
 
}
 
 
/*录入学生数据*/
void InputScore()
{
    head->next = NULL;    //要录入学生信息,必须删除以前所有的信息
    amount = 0;
    char c;
    int j = 0;
    student *p = head;   
 
 
    do
    {
        student *stu = new student;
        cout << "请输入学号:(8位)" << setw(4);
        cin >> (*stu).number;
        cout << "请输入姓名:" << setw(4);
        cin >> (*stu).name;
        cout << "请输入性别:" << setw(2);
        cin >> (*stu).sex;
        cout << "请输入数据结构成绩:" << setw(3);
        cin >> (*stu).chengji.m_DataStructurescore;
        cout << "请输入英语成绩:" << setw(3);
        cin >> (*stu).chengji.m_Englishscore;
        cout << "请输入数学成绩:" << setw(3);
        cin >> (*stu).chengji.m_Mathscore;
        cout << "请输入体育成绩:" << setw(3);
        cin >> (*stu).chengji.m_PE;
        cout << "请输入概率成绩:" << setw(3);
        cin >> (*stu).chengji.m_Probability;
        (*stu).average = ((*stu).chengji.m_DataStructurescore
        + (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
        + (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;
        stu->next = p->next;
        p->next = stu;
        amount++;
        cout << "数据信息录入成功,想继续录入吗?(y/n)";
        cin >> c;
        p = p->next;
        while(c != 'y' && c != 'n')
        {
            cout << "指令错误<请输入y/n!>!!!!!!" << endl;
            cout << "数据信息录入成功,想继续录入吗?(y/n)";
            cin >> c;
        }
 
 
    }while(c == 'y');
    j++;
    cout << "输入了" << amount << "个学生的信息。" << endl;
}
 
 
/*显示学生信息*/
void ShowStudentInfo()
{
    student *stu = head->next;
    cout << "学号\t  姓名   性别   据结构  英语  数学  体育  概率  平均分  " << endl;
    int i = 1;
    while(stu != NULL && i <= amount)
    {
        cout << setw(8) << (*stu).number;
        cout << setw(8) << (*stu).name;
        cout << setw(4) << (*stu).sex;
        cout << setw(7) << (*stu).chengji.m_DataStructurescore;
        cout << setw(8) << (*stu).chengji.m_Englishscore;
        cout << setw(6) << (*stu).chengji.m_Mathscore;
        cout << setw(6) << (*stu).chengji.m_PE;
        cout << setw(6) << (*stu).chengji.m_Probability;
        cout << setw(8) << (*stu).average;
        cout << endl;
        i++;
        stu = stu->next;
    }
}
/*显示主菜单*/
void DisplayMainMenu()
{
    cout <<"\t-----------------------------------------" << endl;
    cout <<"\t|***********学生成绩管理系统************|" << endl;
    cout <<"\t|*  a.录入学生信息    b.查询学生信息   *|" << endl;
    cout <<"\t|*  c.修改学生信息    d.删除学生信息   *|" << endl;
    cout <<"\t|*  e.显示学生信息    f.保存学生信息   *|" << endl;
    cout <<"\t|*  g.读文件          h.统计学生信息   *|" << endl;
    cout <<"\t|*  i.排序            k.插入学生信息   *|" << endl;
    cout <<"\t|*  j.退出软件                         *|" << endl;
    cout <<"\t|***************************************|" << endl;
    cout <<"\t-----------------------------------------" << endl;
}


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值