C语言学生成绩管理系统小设计

C语言学生成绩管理系统小设计攻略

1. 系统需求分析

为了设计一个学生成绩管理系统,我们需要先明确系统的需求,包括以下几个方面:

  1. 系统能够输入学生信息,包括学生的姓名和学号;
  2. 系统能够输入学生课程成绩;
  3. 系统能够计算学生课程成绩的平均分并展示;
  4. 系统能够按照平均分对学生进行排序并输出;
  5. 系统能够按照学号或者姓名进行查询相应学生成绩;
  6. 系统能够修改学生成绩信息;
  7. 系统能够删除学生信息。

2. 系统设计

2.1 数据结构设计

根据上述系统需求,我们可以设计出以下的数据结构:

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

其中,id代表学生的学号,name代表学生的姓名,score代表学生的成绩。

2.2 功能模块设计

根据系统需求,我们可以将系统设计为以下几个功能模块:

  1. 输入学生信息模块:输入学生的姓名和学号;
  2. 输入学生成绩模块:输入学生的课程成绩;
  3. 计算成绩平均分模块:计算学生的平均分并展示;
  4. 按平均分排序模块:对学生按照平均分进行排序并输出;
  5. 按学号或姓名查询模块:查询相应学生成绩;
  6. 修改学生成绩模块:修改学生成绩信息;
  7. 删除学生信息模块:删除学生信息。

2.3 主函数设计

根据上述的功能模块设计,我们可以设计出以下主函数:

int main() {
    Student students[MAX_LENGTH];
    int count = 0;
    int choice;
    do {
        printf("=====Student Score Managment System===== \n");
        printf("1. Add student information.\n");
        printf("2. Add student score.\n");
        printf("3. Calculate the average score.\n");
        printf("4. Sort by average score.\n");
        printf("5. Search by id or name.\n");
        printf("6. Modify student score.\n");
        printf("7. Delete student information.\n");
        printf("0. Exit the system.\n");
        printf("Please enter your choice: ");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                inputStudent(students, &count);
                break;
            case 2:
                inputScore(students, &count);
                break;
            case 3:
                averageScore(students, count);
                break;
            case 4:
                sortScore(students, count);
                break;
            case 5:
                searchScore(students, count);
                break;
            case 6:
                modifyScore(students, count);
                break;
            case 7:
                deleteStudent(students, &count);
                break;
            case 0:
                break;
            default:
                printf("Invalid choice, please choose again.\n");
                break;
        }
    } while (choice != 0);
    return 0;
}

3. 示例说明

3.1 示例一:输入学生信息和成绩

输入学生信息和成绩,可以通过如下代码实现:

void inputStudent(Student students[], int* count) {
    if (*count < MAX_LENGTH) {
        printf("Enter student id: ");
        scanf("%d", &(students[*count].id));
        printf("Enter student name: ");
        scanf("%s", students[*count].name);
        printf("Add student successfully!\n");
        (*count)++;
    } else {
        printf("The size of students array is not enough!\n");
    }
}

void inputScore(Student students[], int* count) {
    int id;
    printf("Enter student id: ");
    scanf("%d", &id);
    int i;
    for (i = 0; i < *count; i++) {
        if (students[i].id == id) {
            printf("Enter student score: ");
            scanf("%f", &(students[i].score));
            printf("Add score successfully!\n");
            return;
        }
    }
    printf("The student does not exist!\n");
}

3.2 示例二:计算成绩平均分并按平均分排序

计算成绩平均分并按平均分排序,可以通过如下代码实现:

void averageScore(Student students[], int count) {
    int i;
    float sum = 0;
    for (i = 0; i < count; i++) {
        sum += students[i].score;
    }
    printf("The average score is: %.2f\n", sum / count);
}

void sortScore(Student students[], int count) {
    int i, j, maxIndex;
    for (i = 0; i < count - 1; i++) {
        maxIndex = i;
        for (j = i + 1; j < count; j++) {
            if (students[j].score > students[maxIndex].score) {
                maxIndex = j;
            }
        }
        if (maxIndex != i) {
            Student temp = students[i];
            students[i] = students[maxIndex];
            students[maxIndex] = temp;
        }
    }
    printf("Sort by average score:\n");
    printf("id        name        score\n");
    for (i = 0; i < count; i++) {
        printf("%-10d%-12s%-8.2f\n", students[i].id, students[i].name, students[i].score);
    }
}

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

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

相关文章

  • Python使用PyCrypto实现AES加密功能示例

    我来详细给您讲解一下“Python使用PyCrypto实现AES加密功能示例”的完整攻略。 简介 首先,让我们来了解一下PyCrypto和AES加密。 PyCrypto PyCrypto是Python的一个第三方库,可以实现多种加密算法,如AES、RSA、DES等。 AES加密 AES(Advanced Encryption Standard)是一种对称加密…

    C 2023年5月23日
    00
  • 电脑打开网页失败 并弹出应用程序发生异常(0xc06d007e)的解决办法

    这个问题可能是由于计算机上某些文件的损坏或遗失等原因造成的。为了解决这个问题,可以考虑以下几个步骤: 1. 停止并重启相关应用程序 有时候,应用程序发生异常错误是由计算机内存或其他应用程序泄露等原因引起的。因此,停止并重新启动相关应用程序可能会有所帮助。具体步骤如下: 打开任务管理器(可通过键盘快捷键 Ctrl + Shift + Esc 或 Ctrl + …

    C 2023年5月23日
    00
  • Win10系统C盘怎么隐藏或显示? win10隐藏/恢复c盘的教程

    Win10系统C盘怎么隐藏或显示? 在Win10系统中,C盘是系统的核心盘符,存储着很多重要的系统文件和用户数据。但在一些特殊情况下,我们可能需要对C盘进行隐藏或显示操作来保护数据或进行某些调试,那么该怎么做呢? 隐藏C盘的教程 隐藏C盘是一个高风险的操作,建议在操作前备份好数据。 通过命令行操作 首先需要打开Win10系统的命令行界面: 点击开始按钮,在搜…

    C 2023年5月23日
    00
  • Redis中的动态字符串学习教程

    Redis中的动态字符串学习教程 1. 什么是Redis中的动态字符串 Redis中的动态字符串是Redis内部实现的一种字符串类型。与C语言中的char *指针不同,Redis动态字符串是一个结构体,可以方便地进行操作和管理。Redis动态字符串具有如下特点: 可以保存二进制数据 可以自动扩展空间以容纳更多数据 最大长度是512MB,远大于C语言的字符串限…

    C 2023年5月22日
    00
  • 如何编译libfreetype方法详解

    下面是如何编译libfreetype的方法详解: 1. 下载并解压libfreetype源码包 官网下载链接:https://sourceforge.net/projects/freetype/files/freetype2/2.11.0/freetype-2.11.0.tar.gz/download 解压命令:tar -zxvf freetype-2.11…

    C 2023年5月23日
    00
  • 微星第一台27英寸游戏显示器Optix G27C:刷新率144Hz

    微星第一台27英寸游戏显示器Optix G27C:刷新率144Hz 介绍 微星Optix G27C是一款27英寸的曲面显示器,专为游戏爱好者而设计。它具有144Hz的刷新率和1ms的响应时间,可以在玩游戏时提供流畅的画面和反应速度。该显示器支持AMD FreeSync技术,可以减少延迟和撕裂,并提供更清晰的图像。 操作步骤 步骤1:连接显示器 将显示器从包装…

    C 2023年5月22日
    00
  • JS中循环遍历数组的四种方式总结

    JS中循环遍历数组的四种方式总结 在JavaScript编程中,遍历数组是一个非常常见的操作。在本文中,我将介绍四种JS中循环遍历数组的方式,它们分别是: for循环 forEach()方法 map()方法 for…in循环 1. for循环 for循环是最基本也是最常用的JS中遍历数组的方法。它的语法如下: for(let i = 0; i < …

    C 2023年5月22日
    00
  • ruby 异常处理:rescue

    当 Ruby 代码出现错误时,会抛出一个 Exception。 在 Ruby 中,异常处理使用一个 begin/rescue/ensure/end 的异常块结构来完成,其中 rescue 子句负责捕获异常并进行处理。 示例1:rescue 捕获单个异常类 当我们尝试打开一个不存在的文件时,Ruby 会抛出 Errno::ENOENT 异常。我们可以使用 re…

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