《有偿》求个C语言代码 要求如下

img


设计并实现一个成绩管理系统,该系统用于教师管理一门课程的成绩。~
系统功能:成绩录入、打印成绩单、修改成绩、统计分数段、统计平均分、统计不及格学生
1) 系统要有主菜单界面,让教师了解系统的功能,以及如何选择系统功能。
2) 系统应该能够让教师自由选择并完成成绩录入、打印成绩单、修改成绩、统
计分数段、统计平均分、统计不及格学生等项目中的任何一项或多项工作。

使用数组存储的简单实现如下:

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

typedef struct Student {
    
    int stuId;     // 学号
    char name[20]; // 姓名
    float score;   // 成绩
}STU;

int n;  // 学生数
STU stus[1000]; // 数组存储学生

int main(int argc, const char * argv[]) {
    
    n = 0;
    int flag = 1;
    while (flag) {
        
        menu();
        int o;
        scanf("%d", &o);
        switch (o) {
            case 1:
            {
                insertData();
            }
                break;
            case 2:
            {
                printScores();
            }
                break;
            case 3:
            {
                updateData();
            }
                break;
            case 4:
            {
                printScoreRange();
            }
                break;
            case 5:
            {
                printScoreAvg();
            }
                break;
            case 6:
            {
                printScoreLower();
            }
                break;
            case 0:
            {
                flag = 0;
            }
                break;
            default:
            {
                printf("请正确输入选项~\n");
            }
                break;
        }
    }
}
// 菜单
void menu(void) {
    
    printf("========== 成绩管理系统 ==========\n");
    printf(" 成绩录入: 1                \n");
    printf(" 打印成绩单: 2                \n");
    printf(" 修改成绩: 3                \n");
    printf(" 统计分数段: 4                \n");
    printf(" 统计平均分: 5                \n");
    printf(" 统计不及格: 6                \n");
    printf(" 退出程序: 0                \n");
    printf("---------------------------------\n");
    printf("请输入操作选项:");
}

void insertData(void) {
    
    printf("========== 成绩录入 ==========\n");
    printf("请输入学生信息(学号 姓名 成绩)\n");
    STU st;
    scanf("%d %s %f", &st.stuId, st.name, &st.score);
    stus[n] = st;
    n++;
}

void updateData(void) {
    
    int f = 1;
    while (f) {
        
        printf("========== 修改成绩 ==========\n");
        printf("通过学号查找修改: 1            \n");
        printf("通过姓名查找修改: 2            \n");
        printf("-----------------------------\n");
        printf("请输入操作选项:");
        int op;
        scanf("%d", &op);
        switch (op) {
            case 1:
            {
                printf("请输入学号:");
                int stuId;
                scanf("%d", &stuId);
                STU s = selectById(stuId);
                if (s.stuId == -1) {

                    printf("未找到该学生,继续查找请输入:1\n");
                    int o;
                    scanf("%d", &o);
                    if (o != 1) {
                        
                        f = 0;
                    }
                } else {
                    
                    printf("请输入新的成绩:");
                    float score;
                    scanf("%f", &score);
                    s.score = score;
                    printf("成绩修改成功~\n");
                    f = 0;
                }
            }
                break;;
            case 2:
            {
                printf("请输入姓名:");
                char name[20];
                scanf("%s", name);
                STU s = selectByName(name);
                if (s.stuId == -1) {

                    printf("未找到该学生,继续查找请输入:1\n");
                    int o;
                    scanf("%d", &o);
                    if (o != 1) {
                        
                        f = 0;
                    }
                } else {
                    
                    printf("请输入新的成绩:");
                    float score;
                    scanf("%f", &score);
                    s.score = score;
                    printf("成绩修改成功~\n");
                    f = 0;
                }
            }
                break;
            default:
            {
                printf("请正确输入选项~\n");
            }
                break;
        }
    }
}

STU selectById(int stuId) {
    
    for (int i = 0; i < n; i++) {
        
        STU s = stus[i];
        if (s.stuId == stuId) {
            
            return s;
        }
    }
    STU st;
    st.stuId = -1;
    return st;
}

STU selectByName(char name[20]) {
    
    for (int i = 0; i < n; i++) {
        
        STU s = stus[i];
        if (strcmp(s.name, name) == 0) {
            
            return s;
        }
    }
    STU st;
    st.stuId = -1;
    return st;
}

void printScores(void) {
    
    printf("========== 成绩单 ==========\n");
    printf("学号  姓名  成绩\n");
    for (int i = 0; i < n; i++) {
        
        STU s = stus[i];
        printf("%d  %s  %.2f\n", s.stuId, s.name, s.score);
    }
}

void printScoreRange(void) {
    
    printf("========== 成绩分数段 ==========\n");
    if (n < 1) {
        
        printf("还没有录入学生信息\n");
        return;
    }
    float min = stus[0].score;
    float max = stus[0].score;
    for (int i = 1; i < n; i++) {
        
        STU s = stus[i];
        if (min > s.score) {
            
            min = s.score;
        }
        if (max < s.score) {
            
            max = s.score;
        }
    }
    printf("最低分:%.2f\n最高分:%.2f\n", min, max);
}

void printScoreAvg(void) {
    
    printf("========== 成绩平均分 ==========\n");
    if (n < 1) {
        
        printf("还没有录入学生信息\n");
        return;
    }
    float sum = 0;
    for (int i = 0; i < n; i++) {
        
        STU s = stus[i];
        sum += s.score;
    }
    printf("平均分:%.2f\n", sum / n);
}

void printScoreLower(void) {
    
    printf("========== 不及格名单 ==========\n");
    printf("学号  姓名  成绩\n");
    for (int i = 0; i < n; i++) {
        
        STU s = stus[i];
        if (s.score < 60) {
            
            printf("%d  %s  %.2f\n", s.stuId, s.name, s.score);
        }
    }
}

希望能帮到你

前几天写的https://blog.csdn.net/weixin_44882124/article/details/125285056

img

不会链表 可以用结构体吗