学生成绩管理系统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日

相关文章

  • C语言实现通讯录的示例代码

    C语言实现通讯录的示例代码是一个经典的练手项目。下面,我将为大家详细讲解:如何实现通讯录,在此过程中,我将会向大家展示这样一个经典的示例代码实现。本文主要分为以下几个部分: 实现通讯录系统需要考虑的因素 编写通讯录示例代码的具体步骤 两个示例说明 1. 实现通讯录系统需要考虑的因素 要实现一个通讯录系统,需要考虑以下几个因素: 数据结构:通讯录使用什么数据结…

    C 2023年5月24日
    00
  • C++中求组合数的各种方法总结详解

    C++中求组合数的各种方法总结详解 前言 组合数问题在许多算法问题中都有广泛应用,在C++中求组合数的方法也多种多样。本文将总结并详细解释C++中求组合数的各种方法。 直接递推法 组合数的定义式为:$C_{n}^{m}=\frac{n!}{m!(n-m)!}$,可以通过递归的方法直接求解。 递归式为:$C_{n}^{m}=C_{n-1}^{m-1}+C_{n…

    C 2023年5月22日
    00
  • C++线程中几类锁的详解

    C++线程中几类锁的详解 前言 在多线程编程中,锁是一种重要的同步机制,可以保证多个线程在访问共享资源时的安全性。C++提供了多种类型的锁,本篇文章将对常用的几种锁进行详解。 互斥锁(mutex) 互斥锁是最常用的一种锁,它保证同一时刻只有一个线程可以访问共享资源。当一个线程获得锁时,其他线程将一直等待直到拥有锁的线程释放锁为止。 创建互斥锁 C++标准库提…

    C 2023年5月22日
    00
  • 整理AngularJS框架使用过程当中的一些性能优化要点

    当在使用AngularJS框架进行开发的过程中,需要注意性能优化,以避免应用程序出现延迟和卡顿现象。下面是整理AngularJS框架使用过程中的一些性能优化要点的攻略。 1. 使用一次性绑定语法 使用AngularJS的双向数据绑定特性时,会引发监听器的频繁触发,影响应用的性能。AngularJS推荐使用一次性绑定语法”{{::expression}}”,它…

    C 2023年5月22日
    00
  • 学习C语言要掌握的几个库

    要学好C语言,要掌握一些基础的库,这些库包括标准库、数学库、图形库和网络库。下面将对这些库进行详细的介绍。 标准库 标准库是C程序员必须掌握的库之一。它包含了大量的函数和宏定义,可以进行输入输出、字符串处理、内存管理等操作。 常用的标准库函数包括: stdio.h:提供了文件操作的函数(如fopen、fclose)和输入输出(如scanf、printf)的函…

    C 2023年5月23日
    00
  • C++的类型转换详细介绍

    C++的类型转换详细介绍 什么是类型转换? 在程序开发中,我们常常需要在不同的数据类型之间进行转化,以方便数据的处理和使用。C++提供了多种类型转换方式,这些方式叫做类型转换。 隐式类型转换 隐式类型转换是指,当程序需要的数据类型和给出的数据类型不一致时,系统会自动将数据类型进行转换。例如: int a = 10; double b = 3.14; // 自…

    C 2023年5月23日
    00
  • VC中CWinThread类以及和createthread API的区别分析

    VC中CWinThread类是MFC(Microsoft Foundation Class)中提供的一个类,用于创建和管理Windows应用程序中的线程。这个类可以方便的管理线程的运行、暂停、停止和同步等操作,可以大大提高程序的可读性和可维护性。 与CWinThread类相比,CreateThread API函数则是Windows API中用于创建线程的函数…

    C 2023年5月22日
    00
  • 浅谈c和c++的某些小区别

    浅谈C和C++的某些小区别 简介 虽然C和C++都是面向过程的编程语言,甚至C++可以被视为C的一个超集。但是,C和C++在语法和语言功能方面存在一些不同。本文将介绍某些小区别。 语法不同 函数声明 在C中,函数的声明必须放在文件的开始,其后才能包含其他内容。 // C语言中的函数声明 int add(int a, int b); // 函数声明 int m…

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