C++实现简单学生成绩管理系统

C++实现简单学生成绩管理系统

系统概述

学生成绩管理系统是一个常见的应用程序,用于管理学生的各类信息,例如学生基本资料,选修课程等信息。本文将介绍如何使用C++实现一个简单的学生成绩管理系统。

系统需求

学生成绩管理系统需要实现的功能如下:

  • 增加学生信息,包含学号、姓名及出生年月日
  • 增加学生课程成绩信息,包含课程编号、课程名称及成绩
  • 修改学生信息及学生课程成绩信息
  • 删除学生学科成绩信息
  • 查询学生信息及学生成绩

系统设计

数据结构

为了满足系统需求,我们需要定义若干数据结构。

  • Student 结构体,包含学生的学号、姓名及出生年月日等信息。
  • Course 结构体,包含课程的编号、课程名称及成绩等信息。
  • StudentInfo结构体,包含了学生的个人信息(Student)及学生的课程成绩信息(Course)。

具体定义及代码实现如下:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

// 定义学生信息结构体
struct Student {
    string id;
    string name;
    int year;
    int month;
    int day;
};

// 定义课程成绩结构体
struct Course {
    string id;
    string name;
    double score;
};

// 定义学生信息结构体,包含个人信息和学科成绩
struct StudentInfo {
    Student student;
    vector<Course> courses;
};

对于多个学生及学生的课程成绩,我们可以使用 vector 容器来存储。因此,我们还需要声明一个保存学生信息的 vector,定义如下:

vector<StudentInfo> students;

系统功能函数

接下来,我们需要实现若干系统功能函数,包括添加学生信息,添加学生课程成绩,修改学生信息及学生课程成绩,删除学生学科成绩信息以及查询学生信息及学生成绩。具体实现如下:

添加学生信息

添加学生信息,需要用户输入学号、姓名及出生年月日等信息,代码实现如下:

void addStudent() {
    // 输入学生信息
    cout << "请输入学生信息:" << endl;
    Student student;
    cout << "学号:";
    cin >> student.id;
    cout << "姓名:";
    cin >> student.name;
    cout << "出生年月日(用空格分隔):";
    cin >> student.year >> student.month >> student.day;
    // 将学生信息添加到学生信息列表中
    StudentInfo studentInfo;
    studentInfo.student = student;
    students.push_back(studentInfo);
    cout << "添加成功!" << endl;
}

添加学生课程成绩

添加学生课程成绩,需要用户输入课程编号、课程名称及成绩等信息。在输入课程成绩前,需要先输入学生的学号,找到对应学生信息后再添加课程成绩。代码实现如下:

void addCourse() {
    // 输入学号
    string id;
    cout << "请输入学生学号:";
    cin >> id;
    // 查找学生信息
    auto it = find_if(students.begin(), students.end(),
            [id](const StudentInfo& s){return s.student.id == id;});
    if (it == students.end()) {
        cout << "学生不存在!" << endl;
        return;
    }
    // 输入课程成绩信息
    Course course;
    cout << "请输入课程成绩信息:" << endl;
    cout << "课程编号:";
    cin >> course.id;
    cout << "课程名称:";
    cin >> course.name;
    cout << "成绩:";
    cin >> course.score;
    // 添加课程信息
    it->courses.push_back(course);
    cout << "添加成功!" << endl;
}

修改学生信息及学生课程成绩

修改学生信息及学生课程成绩,需要先输入学生学号,查找到对应的学生信息,然后让用户输入修改后的信息。修改学生课程成绩,还需要输入要修改的成绩的课程编号。代码实现如下:

void modifyStudent() {
    // 输入学号
    string id;
    cout << "请输入学生学号:";
    cin >> id;
    // 查找学生信息
    auto it = find_if(students.begin(), students.end(),
            [id](const StudentInfo& s){return s.student.id == id;});
    if (it == students.end()) {
        cout << "学生不存在!" << endl;
        return;
    }
    // 输入修改后的信息
    cout << "请输入修改后的信息:" << endl;
    cout << "学号:";
    cin >> it->student.id;
    cout << "姓名:";
    cin >> it->student.name;
    cout << "出生年月日(用空格分隔):";
    cin >> it->student.year >> it->student.month >> it->student.day;
    cout << "修改成功!" << endl;

    // 修改课程成绩
    cout << "是否要修改课程成绩?(Y/N)" << endl;
    string choice;
    cin >> choice;
    if (choice == "Y" || choice == "y") {
        // 输入课程编号
        string courseId;
        cout << "请输入要修改的课程编号:";
        cin >> courseId;
        // 查找课程成绩
        auto courseIt = find_if(it->courses.begin(), it->courses.end(),
                [courseId](const Course& c){return c.id == courseId;});
        if (courseIt == it->courses.end()) {
            cout << "课程成绩不存在!" << endl;
            return;
        }
        // 输入修改后的成绩
        cout << "请输入修改后的成绩:";
        cin >> courseIt->score;
        cout << "修改成功!" << endl;
    }
}

删除学生学科成绩信息

删除学生学科成绩信息,需要先输入学生学号,查找到对应的学生信息,再根据课程编号删除对应的课程成绩。代码实现如下:

void removeCourse() {
    // 输入学号
    string id;
    cout << "请输入学生学号:";
    cin >> id;
    // 查找学生信息
    auto it = find_if(students.begin(), students.end(),
            [id](const StudentInfo& s){return s.student.id == id;});
    if (it == students.end()) {
        cout << "学生不存在!" << endl;
        return;
    }
    // 输入课程编号
    string courseId;
    cout << "请输入要删除的课程编号:";
    cin >> courseId;
    // 查找课程成绩
    auto courseIt = find_if(it->courses.begin(), it->courses.end(),
            [courseId](const Course& c){return c.id == courseId;});
    if (courseIt == it->courses.end()) {
        cout << "课程成绩不存在!" << endl;
        return;
    }
    // 删除课程成绩
    it->courses.erase(courseIt);
    cout << "删除成功!" << endl;
}

查询学生信息及学生成绩

查询学生信息及学生成绩,需要先输入学生学号,查找到对应的学生信息,然后输出学生个人信息及学生课程成绩信息。代码实现如下:

void queryStudent() {
    // 输入学号
    string id;
    cout << "请输入学生学号:";
    cin >> id;
    // 查找学生信息
    auto it = find_if(students.begin(), students.end(),
            [id](const StudentInfo& s){return s.student.id == id;});
    if (it == students.end()) {
        cout << "学生不存在!" << endl;
        return;
    }
    // 输出学生信息
    cout << "学号:" << it->student.id << endl;
    cout << "姓名:" << it->student.name << endl;
    cout << "出生日期:" << it->student.year << "年"
        << it->student.month << "月" << it->student.day << "日" << endl;
    // 输出课程成绩
    if (it->courses.empty()) {
        cout << "无成绩记录!" << endl;
        return;
    }
    cout << "课程成绩:" << endl;
    for (const auto& course : it->courses) {
        cout << course.id << " " << course.name << " " << course.score << endl;
    }
}

示例说明

下面给出两个示例,展示如何使用学生成绩管理系统实现学生信息及课程成绩的管理。

示例一

假设有两个学生,分别为“1001 张三 1990 1 1”和“1002 李四 1991 2 2”,现在需要录入这两个学生的信息及课程成绩,具体操作如下:

请输入操作代码:1
请输入学生信息:
学号:1001
姓名:张三
出生年月日(用空格分隔):1990 1 1
添加成功!
请输入学生信息:
学号:1002
姓名:李四
出生年月日(用空格分隔):1991 2 2
添加成功!
请输入操作代码:2
请输入学生学号:1001
请输入课程成绩信息:
课程编号:001
课程名称:数学
成绩:90
添加成功!
请输入学生学号:1001
请输入课程成绩信息:
课程编号:002
课程名称:英语
成绩:85
添加成功!
请输入学生学号:1002
请输入课程成绩信息:
课程编号:001
课程名称:数学
成绩:92
添加成功!
请输入操作代码:5
请输入学生学号:1001
学号:1001
姓名:张三
出生日期:1990年1月1日
课程成绩:
001 数学 90
002 英语 85
请输入操作代码:5
请输入学生学号:1002
学号:1002
姓名:李四
出生日期:1991年2月2日
课程成绩:
001 数学 92

示例二

假设学生“1001 张三 1990 1 1”已经有了一门成绩“001 数学 90”,现在需要修改张三的个人信息及“001 数学”课程的成绩为95分,具体操作如下:

请输入操作代码:3
请输入学生学号:1001
请输入修改后的信息:
学号:1003
姓名:王五
出生年月日(用空格分隔):1992 3 3
修改成功!
是否要修改课程成绩?(Y/N)
Y
请输入要修改的课程编号:001
请输入修改后的成绩:95
修改成功!
请输入操作代码:5
请输入学生学号:1003
学号:1003
姓名:王五
出生日期:1992年3月3日
课程成绩:
001 数学 95

总结

使用C++实现简单的学生成绩管理系统,需要按照系统需求定义合适的数据结构,然后增加、修改、删除、查询学生信息及课程成绩时,根据需求编写对应的函数。对于函数的具体实现,需要注意输入输出、错误处理、参数传递等方面的问题。通过本文的介绍,相信大家能够掌握使用C++实现简单学生成绩管理系统的方法。

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

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

相关文章

  • TIOBE编程语言排行榜前20的语言入门书籍推荐

    TIOBE编程语言排行榜前20的语言入门书籍推荐攻略 TIOBE编程语言排行榜是一个广受欢迎的编程语言排名网站,每月发布最新的排行榜,展示当月最受欢迎的编程语言。本攻略将会介绍排行榜前20的编程语言,并针对每种编程语言推荐一本入门书籍。 1. Java Java是一个广泛应用的编程语言,每年都会有大量的Java招聘。入门者可以从下列书籍开始学习Java: 《…

    C 2023年5月23日
    00
  • html网页中使用希腊字母的方法

    要在HTML网页中使用希腊字母,可以使用HTML实体或Unicode字符。 使用HTML实体: 打开HTML编辑器或文本编辑器,并开始编写HTML文件。 需要使用希腊字母的地方,使用以下形式的HTML实体:&entity_name;,其中entity_name是预定义的实体名称。 接下来是几个常见的希腊字母实体: α: α β: &bet…

    C 2023年5月22日
    00
  • QT实现用户登录注册功能

    下面我来为你详细讲解QT实现用户登录注册功能的完整攻略: 1. 确定界面设计 在QT中,我们可以选择使用QLineEdit、QPushButton等控件来实现用户界面的设计。对于登录界面,我们可以设计用户名和密码的输入框以及登录按钮;对于注册界面,我们需要设计用户名、密码和确认密码的输入框,以及提交按钮。 示例代码: void MainWindow::set…

    C 2023年5月23日
    00
  • 浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号

    浅析C/C++, Java, PHP, JavaScript, Json数组、对象赋值时最后一个元素后面是否可以带逗号 背景介绍 在编程中,我们经常会使用数组或者对象来存储一些数据,并且在定义这些数组或者对象时,我们需要对其中的元素进行赋值。在这个过程中,我们有时会产生一些疑问,比如在最后一个元素的后面是否可以带逗号。本文将针对不同编程语言中的数组和对象赋值…

    C 2023年5月23日
    00
  • C语言中的算法

    C语言中的算法使用攻略 什么是算法? 算法是指完成特定任务的一系列步骤。在计算机编程中,算法是指一系列解决问题的方法和技巧。 算法在C语言中的应用 C语言中的很多常用函数或者库都依赖算法。在具体实现时,需要编写算法的代码来解决相关的问题。C语言中使用算法的主要步骤如下: 1. 定义输入和输出 对于算法来说,需要先定义输入和输出,在C语言中可以使用函数的参数和…

    C 2023年5月9日
    00
  • 分页类,异常类

    下面是详细讲解“分页类,异常类”的完整攻略: 分页类 分页类通常用于对大量数据进行分页展示,其中包含以下属性: 当前页码(current_page) 总页数(total_page) 数据总数(total_count) 每页数据量(per_page) 分页类中的核心方法为 paginate() 方法,该方法会接收两个参数: $query:查询数据所用的 Que…

    C 2023年5月23日
    00
  • php求数组全排列,元素所有组合的方法

    为了实现“php求数组全排列,元素所有组合的方法”,可以使用递归的方式来求解。下面将以一些示例,详细讲解如何实现这个功能。 求数组所有组合的方法 假设要求一个数组中有哪些元素的组合,可以使用递归的方式来求解,具体步骤如下: 定义一个递归函数,传入两个参数: $arr:需要求解的数组 $prefix:当前已经组合好的前缀数组(默认为空数组) 在递归函数中,判断…

    C 2023年5月22日
    00
  • C语言实现简单班级成绩管理系统

    C语言实现简单班级成绩管理系统 本文将详细讲解如何使用C语言实现班级成绩管理系统,包括创建数据结构、实现各种功能以及存储数据等。下面将详细介绍具体的步骤。 步骤一:创建数据结构 首先,要创建一个数据结构来存储学生的信息。这个数据结构应该包含以下信息: 学生ID 学生姓名 数学成绩 语文成绩 英语成绩 平均分 例如,可以使用以下代码来创建这个数据结构: str…

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