C语言实现学生成绩管理系统:动态数组的应用

本示例代码展示了如何使用C语言编写一个简单的学生成绩管理系统,该系统利用动态数组来存储学生信息。

数据结构定义

首先,定义一个名为 STUDENT 的结构体,用来存储每个学生的相关信息:

typedef struct __STUDENT {
    int     id;
    int     c_score;     // C语言分数
    int     math_score;  // 数学成绩
    int     interview;   // 面试分数
    int     final_score; // 最终成绩
} STUDENT;

函数定义

接下来,定义四个函数分别用于:

  1. 初始化学生列表: STUDENT* init_student_list(int size)

    • 参数:size 表示学生人数,即需要创建的记录数量。
    • 返回值:指向创建的动态数组的指针。
  2. 添加学生信息: void add_one_student( STUDENT* slist, int pos, int id, int c_score, int math_score, int interview )

    • 参数:
      • slist:指向学生信息的动态数组。
      • pos:添加学生记录的位置。
      • idc_scoremath_scoreinterview 分别表示学生的学号、C语言成绩、数学成绩和面试成绩。
  3. 显示所有学生信息: void show_all_students( const STUDENT* slist, int size )

    • 参数:
      • slist:指向学生信息的动态数组。
      • size:学生记录的总数量。
  4. 销毁学生列表: void destroy_student_list( STUDENT* slist )

    • 参数:slist 指向要销毁的动态数组。

代码示例

#include <stdio.h>
#include <stdlib.h>

// ... 结构体和函数定义 ...

int main() {
    int N;
    scanf('%d', &N);
    
    STUDENT* student_list = init_student_list(N);
    
    for (int i = 0; i < N; i++) {
        int id, c_score, math_score, interview;
        scanf('%d %d %d %d', &id, &c_score, &math_score, &interview);
        
        add_one_student(student_list, i, id, c_score, math_score, interview);
    }
    
    show_all_students(student_list, N);
    
    destroy_student_list(student_list);
    
    return 0;
}

代码解释

  1. 读取学生人数: 程序首先读取输入的学生人数 N
  2. 初始化学生列表: 使用 init_student_list(N) 创建一个包含 N 个学生记录的动态数组。
  3. 添加学生信息: 使用 for 循环逐个读取学生的信息,并使用 add_one_student 函数将每个学生的信息添加到动态数组中。
  4. 显示学生信息: 调用 show_all_students 函数来显示所有学生的信息。
  5. 销毁学生列表: 使用 destroy_student_list 函数销毁动态数组,并释放内存。

注意

  • 该示例代码假设输入数据格式符合要求,并确保输入数据合法。
  • 在实际应用中,建议进行输入验证和错误处理,以提高程序的健壮性。
  • 为了便于理解,代码中省略了函数的具体实现,您可以根据提供的函数定义和注释自行编写函数代码。

通过本示例代码,您应该能够理解如何使用动态数组来存储和管理学生信息。您可以根据实际需要对代码进行修改和扩展,以实现更复杂的学生管理功能。


原文地址: http://www.cveoy.top/t/topic/NYk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录