C++实现简单班级成绩管理系统

C++实现简单班级成绩管理系统攻略

1. 需求分析

在实现班级成绩管理系统前,首先需要明确实现系统的主要功能,如本系统需要实现的功能有:
- 添加学生的基本信息,包括学生姓名和学号;
- 添加学生成绩信息,包括数学、语文、英语等科目的成绩;
- 对学生成绩进行管理,包括查看某个学生的成绩、某个科目的平均成绩、班级总体平均成绩等。

2. 设计思路

本系统的设计思路为:
- 首先,定义学生基本信息的结构体以及学生成绩信息的结构体,用于存储学生信息和成绩信息;
- 然后,通过动态数组对学生信息进行管理,包括添加新的学生信息、删除不需要的学生信息、查找某个学生的信息等;
- 最后,对学生成绩进行管理,包括添加学生成绩、统计某个科目的平均成绩、班级总体平均成绩等。

3. 代码实现

下面是班级成绩管理系统的具体代码实现:

#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

// 定义学生基本信息结构体
typedef struct Student {
    char name[20];   // 学生姓名
    int  id;        // 学生学号
};

// 定义学生成绩信息结构体
typedef struct Grade {
    int math;           // 数学成绩
    int chinese;        // 语文成绩
    int english;        // 英语成绩
    int sum;            // 成绩总和
    float average;      // 平均成绩
};

// 定义学生数组,动态存储学生的基本信息
Student* stuArr = new Student[1000];
int studentCnt = 0;

// 定义学生成绩数组,动态存储学生成绩信息
Grade* gradeArr = new Grade[1000];

// 添加学生信息
void addStudent() {
    Student stu;
    cout << "请输入学生姓名:";
    cin >> stu.name;
    cout << "请输入学生学号:";
    cin >> stu.id;
    stuArr[studentCnt] = stu;
    studentCnt++;
}

// 根据学号查找学生信息
Student* findStudent(int id) {
    for (int i = 0; i < studentCnt; i++) {
        if (stuArr[i].id == id) {
            return &stuArr[i];
        }
    }
    return NULL;
}

// 添加学生成绩
void addGrade() {
    int id = 0;
    cout << "请输入学生学号:";
    cin >> id;
    Student* stu = findStudent(id);
    if (stu == NULL) {
        cout << "未找到该学生信息!" << endl;
        return;
    }
    Grade gr;
    cout << "请输入数学成绩:";
    cin >> gr.math;
    cout << "请输入语文成绩:";
    cin >> gr.chinese;
    cout << "请输入英语成绩:";
    cin >> gr.english;
    gr.sum = gr.math + gr.chinese + gr.english;
    gr.average = gr.sum / 3.0;
    gradeArr[id - 1] = gr;
    cout << "添加成绩成功!" << endl;
}

// 查看学生成绩
void showGrade() {
    int id = 0;
    cout << "请输入学生学号:";
    cin >> id;
    Student* stu = findStudent(id);
    if (stu == NULL) {
        cout << "未找到该学生信息!" << endl;
        return;
    }
    Grade gr = gradeArr[id - 1];
    cout << "数学成绩:" << gr.math << endl;
    cout << "语文成绩:" << gr.chinese << endl;
    cout << "英语成绩:" << gr.english << endl;
    cout << "平均成绩:" << gr.average << endl;
}

// 统计某个科目的平均成绩
void showSubjectAvg() {
    char subject;
    cout << "请输入要统计的科目名(M表示数学,C表示语文,E表示英语):";
    cin >> subject;
    int sum = 0;
    for (int i = 0; i < studentCnt; i++) {
        Grade gr = gradeArr[i];
        if (subject == 'M') {
            sum += gr.math;
        }
        if (subject == 'C') {
            sum += gr.chinese;
        }
        if (subject == 'E') {
            sum += gr.english;
        }
    }
    float avg = sum * 1.0 / studentCnt;
    cout << "科目平均成绩为:" << avg << endl;
}

// 统计班级总体平均成绩
void showClassAvg() {
    int sum = 0;
    for (int i = 0; i < studentCnt; i++) {
        Grade gr = gradeArr[i];
        sum += gr.sum;
    }
    float avg = sum * 1.0 / (studentCnt * 3);
    cout << "班级总体平均成绩为:" << avg << endl;
}

// 主函数
int main() {
    int choice = 0;
    while (true) {
        cout << "请选择要进行的操作:" << endl;
        cout << "1、添加学生信息" << endl;
        cout << "2、添加学生成绩" << endl;
        cout << "3、查看学生成绩" << endl;
        cout << "4、统计某个科目的平均成绩" << endl;
        cout << "5、统计班级总体平均成绩" << endl;
        cout << "6、退出系统" << endl;
        cin >> choice;

        switch (choice) {
        case 1:
            addStudent();
            break;
        case 2:
            addGrade();
            break;
        case 3:
            showGrade();
            break;
        case 4:
            showSubjectAvg();
            break;
        case 5:
            showClassAvg();
            break;
        case 6:
            cout << "感谢您的使用,再见!" << endl;
            exit(0);
        default:
            cout << "输入有误,请重新输入!" << endl;
            break;
        }
    }
}

4. 示例说明

示例1:添加学生信息和成绩信息

在程序中,选择“1、添加学生信息”,按照提示输入学生的姓名和学号,即可添加学生信息,如下示例:

请选择要进行的操作:
1、添加学生信息
2、添加学生成绩
3、查看学生成绩
4、统计某个科目的平均成绩
5、统计班级总体平均成绩
6、退出系统
1
请输入学生姓名:Tom
请输入学生学号:001

然后,选择“2、添加学生成绩”,按照提示输入学号和各科成绩,即可添加学生成绩信息,如下示例:

请选择要进行的操作:
1、添加学生信息
2、添加学生成绩
3、查看学生成绩
4、统计某个科目的平均成绩
5、统计班级总体平均成绩
6、退出系统
2
请输入学生学号:001
请输入数学成绩:90
请输入语文成绩:85
请输入英语成绩:90
添加成绩成功!

示例2:统计班级总体平均分

在程序中,选择“5、统计班级总体平均成绩”,即可统计班级总体平均分,如下示例:

请选择要进行的操作:
1、添加学生信息
2、添加学生成绩
3、查看学生成绩
4、统计某个科目的平均成绩
5、统计班级总体平均成绩
6、退出系统
5
班级总体平均成绩为:88.33

5. 总结

班级成绩管理系统是一个实际问题的简单解决方案,本文中通过C++语言实现了班级成绩管理系统的基本功能,并给出了两个示例,方便用户更加深入地理解和操作该系统。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现简单班级成绩管理系统 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月30日

相关文章

  • C语言实现单链表

    C语言实现单链表的完整使用攻略 什么是单链表 单链表是一种常见的数据结构,它的每个节点包含两部分内容,一个是存放数据的数据域,另一个是指向下一个节点的指针域。单链表的特点是插入和删除操作非常快,但查询操作相对较慢。 单链表的实现步骤 实现一个单链表需要以下步骤: 定义节点结构体:定义一个结构体,包含数据域和指针域两个成员。 创建节点:通过malloc函数动态…

    C 2023年5月9日
    00
  • 详细分析C++ 信号处理

    详细分析C++信号处理 什么是信号处理? 信号处理是一种处理外部事件的方法。在Linux环境下,当一个进程接收到某种事件信号时,操作系统会发送一个信号给该进程。通过信号处理函数,进程可以对该信号进行处理。 如何在C++中进行信号处理? 在C++中,可以通过POSIX标准的signal()函数来设置信号处理函数。以下是使用signal()函数的代码示例: #i…

    C 2023年5月23日
    00
  • C语言中如何获取函数内成员的值你知道吗

    C语言中获取函数内成员的值需要通过指针或者引用的方式来实现。下面提供两种方法: 方法一:使用指针来获取函数内部数据 在函数参数中传递指向结构体的指针,在函数内部通过指针来访问结构体成员,具体步骤如下: 在函数参数中定义一个指向结构体的指针; 在函数内部使用指针来访问结构体的成员,通过“->”符号访问结构体成员。 以下是示例代码: #include &l…

    C 2023年5月23日
    00
  • JavaScript中的JSON转为Python可读取

    JSON是一种轻量级的数据交换格式,Python是一门强大的编程语言,两者都是在不同领域的应用,通常在Web开发中,我们会使用JavaScript解析JSON数据,但有时候需要将JSON数据转为Python可读取的形式。以下是一些方法: 使用Python内置库json模块 在Python中,我们可以使用内置库json模块来解析JSON数据。步骤如下: 导入j…

    C 2023年5月23日
    00
  • C语言实现猜数字小游戏的示例代码

    下面是“C语言实现猜数字小游戏的示例代码”的完整攻略。 小游戏介绍 猜数字小游戏是一款非常简单而有趣的小游戏,游戏规则如下: 计算机随机生成一个0到100的数字,你需要通过键盘输入一个数字作为你的猜测; 如果你的猜测数字与计算机随机生成的数字一致,则恭喜你猜对了,游戏胜利; 如果你的猜测数字大于计算机随机生成的数字,则计算机会告诉你猜的数字比实际数字大; 如…

    C 2023年5月24日
    00
  • C++成员解除引用运算符的示例详解

    首先,要清楚什么是成员解除引用运算符。成员解除引用运算符是C++操作符的一种,经常使用*运算符来表示,*this操作符用于在对象上执行表示指针的解除引用运算符。 相比其他运算符,成员解除运算符始终具有对象上下文,并且其返回值是解除引用运算符的结果。通常在类模板中使用此功能。 接下来,我们以两个示例来详细说明成员解除引用运算符: 示例一 我们创建一个用于存储浮…

    C 2023年5月23日
    00
  • 蒲公英x4c路由器怎么样 蒲公英x4c路由器详细评测

    蒲公英x4c路由器怎么样 蒲公英x4c路由器详细评测 蒲公英x4c路由器概述 蒲公英x4c路由器是一款基于OpenWRT固件开发的智能高速路由器,具有高速稳定、易于管理、安全稳定等特点。它采用了千兆网口,堡垒机级别的安全保障系统和智能家居和NAS多功能集成等设计,支持数据加速、加密、压缩等多项技术,既符合个人用户的需求,也符合企业用户的需求。 蒲公英x4c路…

    C 2023年5月23日
    00
  • java生成json数据示例

    生成JSON数据是Java编程过程中非常常见的需求,下面是Java生成JSON数据的完整攻略。 示例一:将Java对象转换为JSON数据 Java中的对象可以轻松转换为JSON数据,这可以通过Java提供的Jackson框架来实现。以下是一个简单的示例: ObjectMapper mapper = new ObjectMapper(); SomeObject…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部