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

yizhihongxing

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日

相关文章

  • 基于javascript实现按圆形排列DIV元素(二)

    基于JavaScript实现按圆形排列DIV元素的完整攻略如下: 步骤1:构建HTML结构 首先,我们需要构建一个HTML页面,并在其中添加一个父级div元素和一些子级的div元素。父级div元素用于容纳所有子级div元素,并设置其宽度和高度为固定值,例如600px。子级div元素用于显示实际内容,我们只需要设置它们的宽度和高度即可。 <div id=…

    C 2023年5月22日
    00
  • C程序 显示两个区间的阿姆斯特朗数字

    下面我将为你详细讲解“C程序 显示两个区间的阿姆斯特朗数字”的完整使用攻略。 一、程序介绍 这个C程序可以用来显示两个区间之间的阿姆斯特朗数字。阿姆斯特朗数是指一个n位数各位数字的n次幂之和等于该数本身(例如,153是一个阿姆斯特朗数,因为1^3 + 5^3 + 3^3 = 153)。 二、程序使用攻略 下面是使用该程序的步骤: 1. 下载并打开程序 该程序…

    C 2023年5月9日
    00
  • C语言循环结构详解

    C语言循环结构详解 什么是循环结构? 循环结构是计算机编程语言中最重要的结构之一,它允许程序重复执行一次或多次某个代码块。 在C语言中,循环结构主要有以下三种: for循环结构 while循环结构 do…while循环结构 for循环结构 for循环结构是最常用的循环结构之一,在需要重复执行N次的情况下,使用for循环比较便捷。 for循环结构的语法格式…

    C 2023年5月23日
    00
  • C++操作SQLite简明教程

    C++操作SQLite简明教程 本教程将介绍如何使用C++操作SQLite数据库,包括数据库的创建、表的创建、数据的插入、查询和更新等常见操作。 安装SQLite 在开始之前,需要先安装SQLite。SQLite是一个轻型数据库,可以在各个操作系统上使用。在Ubuntu系统上,可以通过以下命令安装: sudo apt-get install sqlite3 …

    C 2023年5月22日
    00
  • PHPExcel简单读取excel文件示例

    当我们需要读取excel文件中的数据时,我们可以使用PHPExcel库。下面将详细讲解“PHPExcel简单读取excel文件示例”的完整攻略。 准备 首先需要在项目中引入PHPExcel库,可以使用Composer安装,也可以手动下载和引入。 示例1 下面是一个最简单的读取excel文件第一个工作表中所有数据的示例代码: // 引入PHPExcel req…

    C 2023年5月23日
    00
  • 浅谈C++中派生类对象的内存布局

    浅谈C++中派生类对象的内存布局 在C++中,派生类对象的内存布局与其基类有密切关系,了解其内存布局对于正确使用继承和多态有重要的帮助。本文将详细讲解C++中派生类对象的内存布局,包括基类和派生类成员变量、虚函数表、虚基类等。 基类成员变量 当声明一个派生类时,需要在派生类中包含所有从其父类继承来的变量。这些变量需要按照它们在基类中的声明顺序初始化,然后按照…

    C 2023年5月22日
    00
  • C++ 如何判断四个点是否构成正方形

    判断四个点是否构成正方形是一个常见的问题,可以使用数学方法进行判断,也可以利用C++语言编写代码对四个点进行判断。 一、使用数学方法进行判断 如果四个点能构成正方形,那么它们应该满足以下条件: 四个点的四条边相等。 对角线相等。 两条对边之间的角度均为90度。 如果以上条件都满足,则四个点能构成正方形。 二、利用C++语言编写代码进行判断 以下是C++代码示…

    C 2023年5月23日
    00
  • Windows7开机提示checking file system on c的两种原因分析

    下面是“Windows7开机提示checking file system on c的两种原因分析”的完整攻略。 1. 背景介绍 “checking file system on c”是较为常见的Windows7开机提示之一,意味着系统正在检查C盘文件系统,通常会伴随着进度百分比的显示。检查文件系统是系统自我保护的一种机制,目的是检查磁盘上的文件系统以确保数据…

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