C语言学生成绩管理系统完整源码带文件操作

在这里插入图片描述
在这里插入图片描述

部分源码,完整源码看截图
#include <stdio.h>
#include <stdlib.h>

#define MAX_STUDENTS 100

struct Student {
    int id;
    char name[50];
    char gender[10];
    char birthdate[20];
    char address[100];
    float scores[5];
};

void displayMenu() {
	//企鹅联系----------3765140556 
	printf("\n**********************************************************************\n");
    printf("**********           欢迎来到学生成绩管理系统                *********\n");
    printf("**********************************************************************\n");
    printf("*                    1. 添加学生信息                                 *\n");
    printf("*                    2. 修改学生信息                                 *\n"); 
    printf("*                    3. 删除学生信息                                 *\n");
    printf("*                    4. 显示学生信息                                 *\n");
    printf("*                    5. 计算平均分                                   *\n");
    printf("*                    6. 学生成绩排序                                 *\n");
    printf("*                    7. 查找不及格的名单                             *\n");
    printf("*                    8. 查找某一分数段的名单                         *\n");
    printf("*                    0. 退出系统                                     *\n");
    printf("**********************************************************************\n");
}

void addStudent(struct Student students[], int *count) {
	 // 检查学生数量是否达到上限
    if (*count >= MAX_STUDENTS) {
        printf("无法添加更多的学生信息。\n");
        return;
    }

    struct Student student;
    // 输入学生信息
    printf("请输入学号: ");
    scanf("%d", &student.id);
    printf("请输入姓名: ");
    scanf("%s", student.name);
    printf("请输入性别: ");
    scanf("%s", student.gender);
    printf("请输入出生年月: ");
    scanf("%s", student.birthdate);
    printf("请输入家庭地址: ");
    scanf("%s", student.address);
    printf("请输入各科成绩: ");
    for (int i = 0; i < 5; i++) {
        scanf("%f", &student.scores[i]);
    }
	// 将学生信息添加到数组中
    students[*count] = student;
    (*count)++;
    printf("成功添加学生信息。\n");
}

void displayStudents(struct Student students[], int count) {
	// 检查学生数量是否为0
    if (count == 0) {
        printf("没有学生信息。\n");
        return;
    }
	// 显示学生信息表头
    printf("\n学号\t姓名\t性别\t出生年月\t家庭地址\t数学\t英语\t物理\t化学\t生物\n");
    // 遍历学生信息数组并显示每个学生的信息
    for (int i = 0; i < count; i++) {
        struct Student student = students[i];
        printf("%d\t%s\t%s\t%s\t%s\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",
               student.id, student.name, student.gender, student.birthdate, student.address,
               student.scores[0], student.scores[1], student.scores[2], student.scores[3], student.scores[4]);
    }
}

void saveStudents(struct Student students[], int count) {
	// 打开文件以写入学生信息
    FILE *file = fopen("students.txt", "w");
    if (file == NULL) {
        printf("无法打开文件。\n");
        return;
    }
	 // 将学生信息写入文件中
    for (int i = 0; i < count; i++) {
        struct Student student = students[i];
        fprintf(file, "%d %s %s %s %s %.2f %.2f %.2f %.2f %.2f\n",
                student.id, student.name, student.gender, student.birthdate, student.address,
                student.scores[0], student.scores[1], student.scores[2], student.scores[3], student.scores[4]);
    }
	 // 关闭文件
    fclose(file);
    printf("学生信息保存成功。\n");
}

void loadStudents(struct Student students[], int *count) {
	 // 打开文件以读取学生信息
    FILE *file = fopen("students.txt", "r");
    if (file == NULL) {
        printf("无法打开文件。\n");
        return;
    }

    *count = 0;
    // 从文件中读取学生信息并将其存储到数组中
    while (!feof(file)) {
        struct Student student;
        int result = fscanf(file, "%d %s %s %s %s %f %f %f %f %f",
                            &student.id, student.name, student.gender, student.birthdate, student.address,
                            &student.scores[0], &student.scores[1], &student.scores[2], &student.scores[3], &student.scores[4]);
        if (result == 10) {
            students[*count] = student;
            (*count)++;
        }
    }
	 // 关闭文件
    fclose(file);
    printf("学生信息加载成功。\n");
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐瑶万正源码,可堪头相,徐福费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值