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语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 二、构成和表示方式 逻辑运算符是用来比较和操作布尔值的运算符 C语言中的逻辑运算符主要有3个,如下表所示 运算符 名称 示例 描述 && 与 a && b 当a和b都为真时,返回真 || …

    C语言 2023年4月17日
    00
  • C++设计一个简单内存池的全过程

    下面我将详细讲解C++设计一个简单内存池的全过程。 概述 内存池是为了提高内存分配与释放效率而提出的一种技术。一般情况下,内存池会提前分配一定的内存,并将分配出的内存按照一定的规则进行管理。当需要内存时,内存池会从已经预分配的内存中寻找可以使用的内存块。当不需要使用某个内存块时,该内存块会被归还给内存池进行管理。 下面我们将按照以下步骤设计简单的内存池。 步…

    C 2023年5月23日
    00
  • 一篇文章了解c++中的new和delete

    一篇文章了解C++中的new和delete 什么是new和delete 在C++中,当我们需要动态地分配内存,即在程序运行时才能确定需要分配的内存大小时,我们可以使用new和delete关键字来完成内存的申请和释放操作。 new关键字用于在堆上分配内存,而delete关键字则用于释放该内存。 new的使用方法 new的语法格式为: 指针变量 = new 数据…

    C 2023年5月23日
    00
  • 关于C/C++中可变参数的详细介绍(va_list,va_start,va_arg,va_end)

    关于C/C++中可变参数的详细介绍,一般涉及到四个主要的宏,它们分别是va_list,va_start,va_arg和va_end。下面我会详细介绍它们的用法和注意事项,并且提供两个示例。 1. va_list va_list是一个类型,用于存储可变参数的信息。声明方式如下: #include <stdarg.h> va_list arg_lis…

    C 2023年5月23日
    00
  • C++ 系统String类详解

    C++ 系统String类详解 引言 在 C++ 语言中,字符串 (String) 是一种非常常见的数据类型。在使用中,我们可以选择使用系统默认提供的String类,也可以选择使用第三方库提供的字符串类库。本文将详细讲解C++系统String类以及其相关使用技巧。 String类简介 String类是C++标准库中提供的一个数据类型,定义在头文件 中。Str…

    C 2023年5月30日
    00
  • 使用批处理异地备份数据(winrar)

    下面我将详细讲解如何使用批处理异地备份数据(winrar)。 1. 准备工作 在使用批处理进行异地备份之前,需要先下载安装 WinRAR 软件,并确保已经设置好环境变量。同时需要确定好备份的目录和备份的目标路径。 2. 编写批处理脚本 我们可以使用 notepad 或者其他文本编辑器来编写批处理脚本。打开文本编辑器,输入如下代码: @echo off set…

    C 2023年5月22日
    00
  • Windows10下通过MinGW-x64搭建c/c++环境配置和使用方法

    下面是详细讲解“Windows10下通过MinGW-x64搭建c/c++环境配置和使用方法”的完整攻略。 1. 下载MinGW-x64 首先,我们需要下载MinGW-x64的安装包。在官网上(https://osdn.net/projects/mingw/releases/)选择你需要的版本进行下载。 2. 安装MinGW-x64 下载完成后,我们需要安装M…

    C 2023年5月23日
    00
  • 错误代码0xc00000e9怎么修复?Win11错误代码0xc00000e9简单解决办法

    针对问题“错误代码0xc00000e9怎么修复?Win11错误代码0xc00000e9简单解决办法”,我来分享一下相关攻略。 问题说明 在使用Win11过程中,有时候会出现错误代码0xc00000e9,这个错误可能会导致电脑开不了机,或者出现启动问题。 解决方法 方法一:修复系统文件 进入Win11修复模式。按下电脑开机键,在开启画面出现之前按下F12键或D…

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