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

C语言代码实现学生成绩管理系统的完整攻略

一、需求分析

学生成绩管理系统需要完成以下需求:

  1. 录入学生信息、成绩;
  2. 查询学生成绩;
  3. 修改学生成绩;
  4. 输出学生成绩列表;
  5. 统计学生成绩情况,如平均成绩、最高分、最低分等。

二、系统设计

  1. 学生信息和成绩的数据结构:
struct student {
    char name[20];  // 姓名
    int age;  // 年龄
    int id;  // 学号
    float score[3];  // 三门课程成绩
    float avgscore;  // 平均成绩
};
  1. 各个功能模块的设计:
  2. 录入学生信息:从键盘读取输入,将学生信息存入数组中。
  3. 查询学生成绩:输入要查询学生的姓名或学号,遍历数组,输出相关信息。
  4. 修改学生成绩:同样输入需求,查找到指定学生后,输入新的成绩覆盖原有成绩。
  5. 输出学生成绩列表:遍历数组,输出所有学生的姓名、学号和三门成绩。
  6. 统计学生成绩情况:对成绩进行遍历、计算即可。

示例一

以下是录入学生信息模块的代码实现:

#include <stdio.h>

#define TOTAL_NUM 100   // 最大学生数

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

int main()
{
    struct student stu[TOTAL_NUM];  // 定义学生数组
    int count = 0;

    printf("请输入学生信息,输入0退出:\n");
    while (1) {
        if (count >= TOTAL_NUM) {
            printf("学生数已满,无法新增数据\n");
            break;
        }
        printf("请输入第%d个学生的姓名,输入0退出:", count+1);
        scanf("%s", stu[count].name);
        if (stu[count].name[0] == '0')
            break;

        printf("请输入第%d个学生的年龄:", count+1);
        scanf("%d", &stu[count].age);

        printf("请输入第%d个学生的学号:", count+1);
        scanf("%d", &stu[count].id);

        printf("请输入第%d个学生的三门课程成绩:", count+1);
        scanf("%f %f %f", &stu[count].score[0], &stu[count].score[1], &stu[count].score[2]);
        stu[count].avgscore = (stu[count].score[0] + stu[count].score[1] + stu[count].score[2]) / 3.0f;

        count++;
    }

    printf("录入的学生信息如下:\n");
    for (int i = 0; i < count; i++) {
        printf("%s %d %d %.2f %.2f %.2f\n", stu[i].name, stu[i].age, stu[i].id, 
               stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avgscore);
    }

    return 0;
}

示例二

以下是修改学生成绩模块的代码实现:

#include <stdio.h>

#define TOTAL_NUM 100   // 最大学生数

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

int main()
{
    struct student stu[TOTAL_NUM];  // 定义学生数组
    int count = 0, modify_id, modify_index = -1;

    printf("请输入学生信息,输入0退出:\n");
    while (1) {
        if (count >= TOTAL_NUM) {
            printf("学生数已满,无法新增数据\n");
            break;
        }
        printf("请输入第%d个学生的姓名,输入0退出:", count+1);
        scanf("%s", stu[count].name);
        if (stu[count].name[0] == '0')
            break;

        printf("请输入第%d个学生的年龄:", count+1);
        scanf("%d", &stu[count].age);

        printf("请输入第%d个学生的学号:", count+1);
        scanf("%d", &stu[count].id);

        printf("请输入第%d个学生的三门课程成绩:", count+1);
        scanf("%f %f %f", &stu[count].score[0], &stu[count].score[1], &stu[count].score[2]);
        stu[count].avgscore = (stu[count].score[0] + stu[count].score[1] + stu[count].score[2]) / 3.0f;

        count++;
    }

    printf("请输入修改学生的学号:");
    scanf("%d", &modify_id);
    for (int i = 0; i < count; i++) {
        if (modify_id == stu[i].id) {
            modify_index = i;
            break;
        }
    }

    if (modify_index != -1) {
        printf("请输入新的三门成绩:");
        scanf("%f %f %f", &stu[modify_index].score[0], &stu[modify_index].score[1], &stu[modify_index].score[2]);
        stu[modify_index].avgscore = (stu[modify_index].score[0] + stu[modify_index].score[1] + stu[modify_index].score[2]) / 3.0f;
        printf("修改成功!\n");
        printf("学生 %s 的成绩信息如下:\n", stu[modify_index].name);
        printf("%.2f %.2f %.2f %.2f\n", stu[modify_index].score[0], stu[modify_index].score[1], stu[modify_index].score[2], stu[modify_index].avgscore);
    } else {
        printf("未找到该学生的信息!\n");
    }

    return 0;
}

三、系统实现

将各个模块的设计转化为代码实现即可。购买本公众号后台回复“成绩管理系统”获取完整源代码。

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

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

相关文章

  • C++ 函数的介绍

    当我们需要完成一项任务时,我们需要执行一系列的操作,而C++函数可以让我们把这些操作打包成一个代码块,以便需要时可以重复调用,这样可以简化代码的结构,让代码更加易读易维护。接下来,我们将详细讲解C++函数的介绍和使用。 函数的定义 函数定义是指为一个函数声明提供一个实现。在C++中,我们使用关键字”function”来定义一个函数,并且需要指定函数的返回类型…

    C 2023年5月24日
    00
  • C++ std::shared_mutex读写锁的使用

    C++11中引入的 std::shared_mutex 是一种读写锁,可以在多个线程对同一个数据进行读写的情况下实现线程安全。shared_mutex允许多个线程同时进入读共享区,但只允许一个线程进入写互斥区。 如何使用 shared_mutex 使用 shared_mutex 需要注意以下几点: 1.定义 shared_mutex 对象 2.读共享区,需要…

    C 2023年5月22日
    00
  • 一篇文章带你了解C语言:入门基础

    一篇文章带你了解C语言:入门基础 什么是C语言? C语言是一门高级程序设计语言,它的发明者是丹尼斯·里奇和肯·汤普逊。C语言广泛应用于操作系统、编译器、网络设备、嵌入式系统、游戏开发等领域。学会C语言对程序员来说具有重要的意义。 C语言的编译和执行过程 C语言的编译和执行过程分为四个阶段,分别是预处理、编译、汇编和链接。 预处理 在预处理阶段,编译器会读取文…

    C 2023年5月23日
    00
  • C语言比较函数指针

    下面我来详细讲解一下“C语言比较函数指针”的使用攻略。 简介 在C语言中,我们常常需要对数据进行排序、查找等操作,而这些操作通常需要用到比较函数。比较函数指的是能够比较两个元素大小的函数,一般格式为: int compare(const void *a, const void *b); 其中,a和b是待比较的两个元素,函数应该根据需要返回一个整数值: 若a&…

    C 2023年5月9日
    00
  • VC程序在Win32环境下动态链接库(DLL)编程原理

    VC程序在Win32环境下动态链接库(DLL)编程,主要原理是将一些可重复利用的函数和资源封装进动态链接库文件中,再由其他程序在需要时进行调用,从而提高代码重用性和程序的简洁性。以下是详细的攻略: 1. 创建DLL工程 首先,在VC中新建Win32 DLL工程,在“Win32 Application Wizard”对话框中选择“DLL”类型,之后通过向导一步…

    C 2023年5月23日
    00
  • 使用系统默认的备份还原注册表的图文教程

    使用系统默认的备份还原注册表的图文教程 首先,备份注册表非常重要。在我们进行一些重要的系统修改时,需要备份注册表以防万一。系统默认的备份功能十分实用,可以快速地恢复到之前的状态。以下是使用系统默认的备份还原注册表的步骤: 打开“运行”窗口 我们可以使用快捷键 Win + R 打开运行窗口。 输入 regedit 命令 在弹出的运行窗口中,输入 regedit…

    C 2023年5月23日
    00
  • 一文弄懂MYSQL如何列转行

    一文弄懂MYSQL如何列转行 背景 在数据库中,有时候需要将列转换成行来展示数据。例如一个表中有多个日期字段,需要将每个日期字段的值作为新的行的一列来展示数据。 原理 MYSQL中提供了UNION ALL语句来实现列转行的功能。该语句可以将多个SELECT语句的结果合并成一个结果集。通过多个SELECT语句中的UNION ALL,可以将多行数据合并成一行,达…

    C 2023年5月22日
    00
  • PHP的Json中文处理解决方案

    以下是 PHP 的 Json 中文处理解决方案的完整攻略。 1. 背景介绍 在 PHP 中,我们经常需要将数据以 JSON 的格式进行传输或存储。然而,如果 JSON 中含有中文字符,那么就会出现编码问题,导致中文字符被转义为 Unicode 码,给使用和阅读带来不便。 2. 解决方案 我们可以采用 PHP 内置的 addslashes() 函数或使用 JS…

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