学生成绩管理系统C++实现代码

下面我来为大家详细讲解“学生成绩管理系统C++实现代码”的完整攻略。

1. 程序设计思路

这个程序的主要功能是对学生成绩的管理,具体来说包括以下功能:
- 添加学生信息
- 修改学生信息
- 删除学生信息
- 查找学生信息
- 以各种方式展示学生信息列表

接下来,我将会详细介绍这些功能各自的实现。

2. 添加学生信息

要实现添加学生信息的功能,我们需要定义一个结构体来保存学生信息,如下所示:

struct student
{
    int id;
    char name[20];
    float score;
};

然后,我们需要定义一个用于存储学生信息的数组:

struct student stu[100];
int num = 0;

定义好结构体和数组之后,我们就可以愉快地开始添加学生信息了:

cout << "请输入学生的学号:";
cin >> stu[num].id;
cout << "请输入学生的姓名:";
cin >> stu[num].name;
cout << "请输入学生的成绩:";
cin >> stu[num].score;
num++;
cout << "添加成功!" << endl;

3. 修改学生信息

要实现修改学生信息的功能,我们需要先查找到需要修改的学生信息,然后再进行修改。

查找学生信息的方法有很多种,这里介绍一种基于学号进行查找的方法。

int search(int id)
{
    for (int i = 0; i < num; i++)
    {
        if (stu[i].id == id)
        {
            return i;
        }
    }
    return -1;
}

使用上面的函数来查找需要修改的学生信息,然后再进行修改:

int id;
cout << "请输入需要修改信息的学生学号:";
cin >> id;
int index = search(id);
if (index == -1)
{
    cout << "找不到该学生的信息!" << endl;
}
else
{
    cout << "修改前的学生信息:" << endl;
    cout << "学号\t姓名\t成绩" << endl;
    cout << stu[index].id << "\t" << stu[index].name << "\t" << stu[index].score << endl;
    cout << "请输入新的学生姓名:";
    cin >> stu[index].name;
    cout << "请输入新的学生成绩:";
    cin >> stu[index].score;
    cout << "修改成功!" << endl;
}

4. 删除学生信息

要实现删除学生信息的功能,我们需要先查找到需要删除的学生信息,然后再进行删除。

同样的,在这里介绍一种基于学号进行查找的方法。

int search(int id)
{
    for (int i = 0; i < num; i++)
    {
        if (stu[i].id == id)
        {
            return i;
        }
    }
    return -1;
}

然后,我们可以像下面这样进行删除操作:

int id;
cout << "请输入需要删除信息的学生学号:";
cin >> id;
int index = search(id);
if (index == -1)
{
    cout << "找不到该学生的信息!" << endl;
}
else
{
    for (int i = index; i < num - 1; i++)
    {
        stu[i] = stu[i + 1];
    }
    num--;
    cout << "删除成功!" << endl;
}

5. 查找学生信息

前面已经介绍了一种基于学号进行查找的方法,这里再介绍一种基于姓名进行查找的方法。

void search(const char* name)
{
    int found = 0;
    cout << "学号\t姓名\t成绩" << endl;
    for (int i = 0; i < num; i++)
    {
        if (strcmp(name, stu[i].name) == 0)
        {
            found = 1;
            cout << stu[i].id << "\t" << stu[i].name << "\t" << stu[i].score << endl;
        }
    }
    if (found == 0)
    {
        cout << "找不到该学生的信息!" << endl;
    }
}

使用上面的函数,我们可以通过输入学生姓名来查找学生信息。

char name[20];
cout << "请输入需要查找的学生姓名:";
cin >> name;
search(name);

6. 展示学生信息列表

展示学生信息列表可以采用多种方式,例如按学号排序、按成绩排序、按姓名排序等等。

下面以按学号排序为例:

void sort_by_id()
{
    for (int i = 0; i < num - 1; i++)
    {
        for (int j = 0; j < num - i - 1; j++)
        {
            if (stu[j].id > stu[j + 1].id)
            {
                struct student temp = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = temp;
            }
        }
    }
    cout << "学号\t姓名\t成绩" << endl;
    for (int i = 0; i < num; i++)
    {
        cout << stu[i].id << "\t" << stu[i].name << "\t" << stu[i].score << endl;
    }
}

使用上面的函数,我们可以按学号进行排序,并输出排序后的学生信息列表。

sort_by_id();

7. 示例说明

下面给出两个示例说明,一个是添加学生信息的示例,一个是按学号排序并展示学生信息列表的示例。

示例1:添加学生信息

请输入学生的学号:10001
请输入学生的姓名:张三
请输入学生的成绩:95
添加成功!

示例2:按学号排序并展示学生信息列表

学号    姓名    成绩
10001   张三     95
10002   李四     80
10003   王五     70

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

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

相关文章

  • 深度学习开源框架基础算法之傅立叶变换的概要介绍

    深度学习开源框架基础算法之傅立叶变换的概要介绍 什么是傅立叶变换? 傅立叶变换(Fourier Transform)是一种能够将时域上的信号转换为频域上的信号的数学工具。简单地说,它将一个时域上的波形分解成多个基频分量,每个分量代表着特定频率的振幅。这个过程是通过利用正弦和余弦函数的数学性质完成的。 傅立叶变换在深度学习中的应用 在深度学习中,经常需要对输入…

    C 2023年5月23日
    00
  • C语言 文件的打开与关闭详解及示例代码

    下面我将详细讲解“C语言 文件的打开与关闭详解及示例代码”的完整攻略。 一、文件的打开 文件的打开可以使用stdio.h库中提供的fopen函数实现。fopen函数的原型如下: FILE* fopen(const char* filename, const char* mode); 其中filename是文件名,mode是打开的模式,它们都是以字符串形式传递…

    C 2023年5月24日
    00
  • C++中replace() 函数的基本用法

    当我们在使用C++字符串(string)时,可能会需要对其中的某些字符进行替换操作。C++中的replace()函数可以完成这个任务,它可以在指定的位置上替换指定数量的字符为另外一组字符序列。下面我们就来具体了解一下replace()函数的用法。 函数原型 C++中replace()函数的原型如下: string replace(size_t pos, si…

    C 2023年5月23日
    00
  • C语言goto语句简单使用详解

    标题及概述 C语言goto语句简单使用详解 本篇文章主要介绍C语言中的goto语句,在程序中使用goto语句可以跳转到程序中的指定标记处,便于程序的编写和调试。 goto语句的基本语法 goto语句的基本语法如下: goto label; 其中,label为指定的标记名称,可以位于任何一个语句之前或者其中。 goto语句的使用方法 在程序中使用goto语句可…

    C 2023年5月23日
    00
  • Android中Json数据读取与创建的方法

    下面是关于Android中Json数据读取与创建的完整攻略: 什么是Json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,与XML类似,但是更为简洁、易于理解和阅读。它是一种以键值对的形式组织的数据,可以表示复杂的层次结构。 在Android中解析Json 在Android中 Json 数据通常是由网络获取到的…

    C 2023年5月23日
    00
  • C++成员函数如何当作回调函数同时传递this指针

    要将一个C++对象的成员函数作为回调函数并传递对象的this指针,需要使用函数对象和函数指针的技巧。下面分步骤介绍: 1. 定义函数对象 首先定义一个函数对象类,这个类中定义了一个成员函数指针和一个指向对象的指针。这个类将被用于封装成员函数以便传递给其他函数。 class Foo { public: typedef void (Foo::*Callback)…

    C 2023年5月23日
    00
  • windows系统下C++调用matlab程序的方法详解

    针对“windows系统下C++调用matlab程序的方法详解”的问题,我会给出一个完整的攻略: Windows系统下C++调用Matlab程序的方法详解 介绍 在开发过程中,有时需要使用到Matlab算法或函数,为了快速地实现使用Matlab,可以将算法或函数编写成Matlab可执行文件(.exe),并通过C++程序进行调用。在Windows系统下,我们可…

    C 2023年5月23日
    00
  • C语言编程之预处理过程与define及条件编译

    预处理器是C语言编程中非常重要的一个组成部分,它在编译前对源代码进行一系列的处理,比如宏定义、文件包含等操作。define指令是预处理器中最常用的指令之一,可以用来简化代码,并且可以通过条件编译指令来控制宏定义的区域,从而实现一些程序逻辑上的控制。 下面就是一个完整的攻略: 预处理过程 预处理器在编译前对源代码进行一系列的处理,这个过程称为预处理过程。预处理…

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