天天动画片 > 八卦谈 > 学生成绩管理系统(C语言版)

学生成绩管理系统(C语言版)

八卦谈 佚名 2024-05-04 04:32:41

#include <stdio.h>

#include <stdlib.h>

#include <string.h>


#define MAX_STUDENT 100 /* 定义最大的学生数量 */


/* 学生结构体 */

typedef struct {

    char name[20];      /* 姓名 */

    int id;             /* 学号 */

    float score;        /* 成绩 */

} Student;


Student students[MAX_STUDENT];  /* 存储学生数据的数组 */

int studentCount = 0;           /* 学生数量 */


/* 根据学号查询学生 */

int searchStudentById(int id)

{

    int i;

    for (i = 0; i < studentCount; i++) {

        if (students[i].id == id) {

            return i;   /* 找到学生返回下标 */

        }

    }

    return -1;          /* 没找到返回-1 */

}


/* 添加学生记录 */

void addStudent()

{

    char name[20];

    int id;

    float score;


    printf("请输入姓名:");

    scanf("%s", name);

    printf("请输入学号:");

    scanf("%d", &id);


    /* 判断学号是否已存在 */

    if (searchStudentById(id) != -1) {

        printf("该学号已存在!\n");

        return;

    }


    printf("请输入成绩:");

    scanf("%f", &score);


    Student student = { .id = id, .score = score };

    strcpy(student.name, name);


    /* 将新加入的学生放在数组的最后 */

    students[studentCount] = student;

    studentCount++;


    printf("添加成功!\n");

}


/* 删除学生记录 */

void deleteStudent()

{

    int id, index;


    printf("请输入学号:");

    scanf("%d", &id);


    index = searchStudentById(id);

    if (index == -1) {

        printf("该学生不存在!\n");

    } else {

        /* 将待删除的学生从数组中移除 */

        for (; index < studentCount - 1; index++) {

            students[index] = students[index + 1];

        }

        studentCount--;

        printf("删除成功!\n");

    }

}


/* 修改学生记录 */

void modifyStudent()

{

    int id, index;

    float score;


    printf("请输入学号:");

    scanf("%d", &id);


    index = searchStudentById(id);

    if (index == -1) {

        printf("该学生不存在!\n");

    } else {

        printf("请输入新成绩:");

        scanf("%f", &score);

        students[index].score = score;

        printf("修改成功!\n");

    }

}


/* 查询学生记录 */

void queryStudent()

{

    int id, index;


    printf("请输入学号:");

    scanf("%d", &id);


    index = searchStudentById(id);

    if (index == -1) {

        printf("该学生不存在!\n");

    } else {

        printf("姓名:%s 学号:%d 成绩:%.2f\n",

                students[index].name, students[index].id, students[index].score);

    }

}


/* 计算成绩排名 */

void calculateRank()

{

    Student tmp[MAX_STUDENT];

    memcpy(tmp, students, sizeof(students)); /* 将学生数组复制到临时数组中 */

    int i, j;


    for (i = 0; i < studentCount - 1; i++) {

        for (j = 0; j < studentCount - i - 1; j++) {

            if (tmp[j].score < tmp[j + 1].score) {

                Student temp = tmp[j];

                tmp[j] = tmp[j + 1];

                tmp[j + 1] = temp;

            }

        }

    }


    printf("成绩排名:\n");

    for (i = 0; i < studentCount; i++) {

        printf("%d. %s\t%.2f\n", i + 1, tmp[i].name, tmp[i].score);

    }

}


/* 主函数 */

int main()

{

    int menu;


    while (1) {

        printf("\n学生成绩管理系统\n");

        printf("------------------------\n");

        printf("1.添加学生记录\n");

        printf("2.删除学生记录\n");

        printf("3.修改学生记录\n");

        printf("4.查询学生记录\n");

        printf("5.计算成绩排名\n");

        printf("6.退出\n");

        printf("------------------------\n");

        printf("请选择菜单:");


        scanf("%d", &menu);


        switch (menu) {

            case 1:

                addStudent();

                break;

            case 2:

                deleteStudent();

                break;

            case 3:

                modifyStudent();

                break;

            case 4:

                queryStudent();

                break;

            case 5:

                calculateRank();

                break;

            case 6:

                exit(EXIT_SUCCESS);

                break;

            default:

                printf("请输入正确的菜单号!\n");

                break;

        }

    }


    return 0;

}


本文标题:学生成绩管理系统(C语言版) - 八卦谈
本文地址:www.ttdhp.com/article/56361.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们