大一C语言基础综合运用

img


学生成绩管理系统是每个学生都会接触到的系统,学生应综合所学的知识,运用讲过的数据类型、数组等所有知识,搜集相关资料,设计一个对学生成绩进行综合处理的系统。
1.程序运行主菜单如上所示。
2.学生数据包含学生学号、姓名和至少一门成绩。
3.编程。
4.要有菜单中的6项操作结果截图。

参考这个,加两个功能就行https://blog.csdn.net/weixin_44882124/article/details/125285056

用switch case是不是会好一点?

以前写的类似功能的代码,供参考:

#include <iostream>
#include <string>
#include <time.h>
constexpr auto N = 5;  //5个学生;
constexpr auto M = 4;  //4门课程;
using namespace std;

typedef struct student {
    string   num; //学号
    string   name;//姓名
    float    score[M];//课目成绩
    float    avg; //每个学生4门课目平均分
}Student;

void menu();//菜单函数
void Input_info(Student* stu);//手工信息录入,平均分/学生
void Init_data(Student* stu); //初始化函数,平均分/学生
void Hight_score(Student* stu);//成绩最高的学生序号和课目
void fail_score(Student* stu);//不及格学生序号和各门课成绩
void avg_score(Student* stu); //每课目平均分
void find_stu(Student* stu);  //按学号查询 
void print(Student* stu);    //输出所有信息

int main()
{
    int chois = 1;
    Student stu[N];
    srand((unsigned int)time(NULL));//生成随机数
    do {
        menu();
        cin >> chois;
        switch (chois) {
        case 1:Input_info(stu);  break;
        case 2:Init_data(stu);   break;
        case 3:print(stu);        break;
        case 4:Hight_score(stu); break;
        case 5:fail_score(stu);  break;
        case 6:avg_score(stu);   break;
        case 7:find_stu(stu);     break;
        case 0:chois = 0;         break;
        default:                  break;
        }
        system("pause");
        system("cls");
    } while (chois);
    return 0;
}

void menu()
{
    cout << "\t\t" << "*********************************************" << endl;
    cout << "\t\t" << "              学生成绩处理系统               " << endl;
    cout << "\t\t" << "               1.输入学生数据                " << endl;
    cout << "\t\t" << "               2.自动生成数据                " << endl;
    cout << "\t\t" << "               3.各学生平均成绩              " << endl;
    cout << "\t\t" << "               4.成绩最高的学生及科目        " << endl;
    cout << "\t\t" << "               5.不及格学生序号和成绩        " << endl;
    cout << "\t\t" << "               6.每课目平均分                " << endl;
    cout << "\t\t" << "               7.按学号查询                  " << endl;
    cout << "\t\t" << "               0.退出                        " << endl;
    cout << "\t\t" << "*********************************************" << endl;
    cout << "请输入选择(0-6):";
}

void Input_info(Student* stu)
{
    int i, j;
    cout << "输入" << N << "位学生学号、姓名及" << M << "门课目成绩" << endl;
    for (i = 0; i < N; i++) {
        cin >> stu[i].num >> stu[i].name;
        stu[i].avg = 0;
        for (j = 0; j < M; j++) {
            cin >> stu[i].score[j];
            stu[i].avg += stu[i].score[j];
        }
        stu[i].avg /= M;
    }
}

void Init_data(Student* stu)
{
    string nameseed = "ABCDEFGH";
    string numseed = "123456789";
    int i, j;
    for (i = 0; i < N; i++) {
        stu[i].num = "00000000";
        stu[i].num += numseed[i];
        stu[i].name = "student_";
        stu[i].name += nameseed[i];
        stu[i].avg = 0;
        for (j = 0; j < M; j++) {
            stu[i].score[j] = rand() % 61 + 40;
            stu[i].avg += stu[i].score[j];
        }
        stu[i].avg /= M;
    }
}
void Hight_score(Student* stu)
{
    int i, j;
    float max;
    cout << endl << "---成绩最高的学生---" << endl;
    cout << endl << " 学号\t\t课目" << endl << endl;
    for (j = 0; j < M; j++) {
        max = stu[0].score[j];
        for (i = 0; i < N; i++) {
            if (max < stu[i].score[j])
                max = stu[i].score[j];
        }
        for (i = 0; i < N; i++) {  //同一课目,最高分相同所有学生
            if (stu[i].score[j] == max)
                cout << stu[i].num << "\t" << "课目" << j + 1 << endl;
        }
    }
}
void fail_score(Student* stu)
{
    int i, j, m, k = 0;
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            if (stu[i].score[j] < 60)
                break;
        }
        if (j < M) {
            if (k == 0) {
                cout << endl << "---不及格学生序号和各门课成绩---" << endl << endl;
                cout << " 学号\t\t";
                for (m = 0; m < M; m++)
                    cout << "课目" << m + 1 << " \t";
                cout<< endl << endl;
            }
            k++;
            cout << stu[i].num;
            for (j = 0; j < M; j++)
                cout << "\t" << stu[i].score[j];
            cout << endl;
        }
    }
    if (k == 0)
        cout << endl << "---无成绩不及格的学生---" << endl << endl;
}

void avg_score(Student* stu)
{
    int i, j;
    float avg;
    print(stu);
    cout << "各课目平均分:\t\t";
    for (j = 0; j < M; j++) {
        avg = 0;
        for (i = 0; i < N; i++) {
            avg += stu[i].score[j];
        }
        cout << "  " << avg / N;
    }
    cout << endl << endl;
}

void find_stu(Student* stu)
{
    int i, j;
    string num;
    cout << "请输入查询的学号:";
    cin >> num;
    for (i = 0; i < N; i++) {
        if (stu[i].num == num)
            break;
    }
    if (i != N) {
        cout << endl << "学号\t\t" << "姓名\t";
        for (j = 0; j < M; j++)
            cout << "课目" << j + 1 << " ";
        cout << endl << stu[i].num << "   " << stu[i].name;
        for (j = 0; j < M; j++)
            cout << "    " << stu[i].score[j];
        cout << endl;
    }
    else
        cout << "未找到相关信息!" << endl;
}

void print(Student* stu)
{
    int i, j;
    cout << endl << "学号\t\t" << "姓名\t";
    for (j = 0; j < M; j++)
        cout << "课目" << j + 1 << " ";
    cout << "平均分" << endl << endl;
    for (i = 0; i < N; i++) {
        cout << stu[i].num << "   " << stu[i].name;
        for (j = 0; j < M; j++)
            cout << "    " << stu[i].score[j];
        cout << "   " << stu[i].avg << endl;
    }
}