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语言经典案例

    为了实现排列和组合算法,我们可以采用循环、递归等多种方法。以下是实现排列和组合算法的一些关键步骤: 一、排列算法的实现 1. 确定排列的长度 在排列算法中,必须明确排列的长度,以便确定需要输出的排列数。假设排列长度为n,则排列的个数为n!,即n的阶乘。 2. 确定排列元素集合 在排列算法中,必须为元素集合确定正确的元素个数和元素取值范围,需要保证不重不漏地包…

    C 2023年5月22日
    00
  • C/C++ Qt 数据库与ComBox实现多级联动示例代码

    首先,我们要明确一下本文的目标,即通过C/C++ Qt编写代码实现数据库和ComBox的多级联动。下面是实现步骤和示例说明。 步骤一:建立数据库连接 我们需要使用Qt提供的QSqlDatabase类来建立与数据库的连接。在连接前,我们还需要确定数据库的类型和属性,例如,数据库的名称、主机名、用户名、密码等。以下是建立数据库连接的示例代码: QSqlDatab…

    C 2023年5月22日
    00
  • 编写C语言程序进行进制转换的问题实例

    编写C语言程序进行进制转换的攻略可以分为以下几个步骤: 1. 确定需要实现的进制转换 要进行进制转换,首先需要确定要转换的进制类型,如十进制、二进制、八进制、十六进制等。可以根据需求选择要转换的进制类型。 2. 设计算法并实现程序代码 经过确定要转换的进制类型,就需要设计转换的算法。通常,将一个进制的数转换为另一个进制的数可以借助中间进制完成,例如将二进制数…

    C 2023年5月23日
    00
  • 生化危机6 敌人弱点、特点详细介绍

    生化危机6 敌人弱点、特点详细介绍攻略 敌人弱点及特点 生化危机6中的敌人种类繁多,每种敌人都有其弱点和特点。以下是生化危机6中常见敌人的弱点和特点: 美国兵 美国兵是最基础的敌人之一,通常手持步枪或冲锋枪。其弱点在于头部和腰部,而且由于装备了防弹背心,需要使用火箭筒或炸药来摧毁其装甲。 疫苗制造厂工人 这些敌人身穿黄色工作服,手持工具箱或钻子等工具,非常难…

    C 2023年5月22日
    00
  • c++ 面向对象设计五大原则

    当设计面向对象的程序时,我们需要遵循五个相关原则,也被称为“SOLID”原则。以下是这些原则的详细介绍和示意: 单一职责原则(Single Responsibility Principle) 一个类应该有一个单一职责。也就是说,一个类只应该有一项引起它的变化的原因。应该将每个职责分配给具有单独职责的不同类。 示例:我们考虑编写一个计算器类。如果我们将计算逻辑…

    C 2023年5月22日
    00
  • C语言实现导航功能

    C语言实现导航功能攻略 概述 本攻略介绍如何使用C语言实现导航功能。导航功能需要通过地图信息和用户的目的地,给用户提供最短路径。 实现步骤 1. 定义地图和结构体 定义一个地图结构体,它包含节点和边。每个节点都有一个ID和一组坐标。每条边都有起点、终点、距离以及其它属性 typedef struct { int id; // 节点ID double x, y…

    C 2023年5月23日
    00
  • MFC程序对文件的处理方法

    MFC程序对文件的处理方法主要包括文件的创建、读取、写入和关闭操作。下面将针对每一种操作进行详细讲解。 文件的创建 要在MFC程序中创建一个新文件,可以使用CFile类的Open方法,该方法会打开指定的文件并返回一个CFile对象,可以通过该对象对文件进行操作。 示例1:创建一个名为”test.txt”的文本文件 CFile file; if (file.O…

    C 2023年5月23日
    00
  • Unix下C程序内存泄漏检测工具Valgrind的安装与使用详解

    下面是对应的攻略。 Unix下C程序内存泄漏检测工具Valgrind的安装与使用详解 1. 简介 Valgrind是一款非常强大的Unix下的C程序内存泄漏检测工具。它能够检测出C语言程序中的内存泄漏、未初始化使用的变量、使用已释放的指针等常见的错误。此外,它还能够检测出死锁等问题,并能够通过日志和报告等形式给出详细的分析结果,帮助开发人员轻松定位和修复程序…

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