c语言学生成绩管理系统案例代码

题目描述

c语言学生成绩管理系统,包括多个功能,(一)基本要求(要求每个模块需要详细设计过程,以及各模块的代码,最后还需要有每个模块的运行结果截图)
1、录入学生信息
主函数调用添加函数,系统提示输入学期、学生姓名、班级、四门课程成绩、学号。输入后将出现提示语是否继续添加学生信息,输入“N”或“n”取消添加并返回主菜单,输入其他任意值继续输入下一位同学。
2、查询学生的信息
选择此功能后。系统中已有学生信息,查找该学生资料.系统会提示你输入要查询的学号,输入完毕后系统就会显示该学生资料和各科成绩等信息。若查询无此人,则显示查找不到的提示信息。
3、输出不及格科目学生信息
选择此功能后,需要输入科目的编号,按学生科目输出班级内不及格学生的成绩及名单。
4、采用冒泡排序法进行排序
采用计算学生平均分来做排序因子,用冒泡法由大到小或者由小到大对学生信息进行排序。
5、打印全部学生信息
主菜单函数调用打印函数。主要功能用来对学生的成绩进行输出,此处可以选择按照成绩由大到小输出或者由小到大输出。可以显示所有学生的学号,姓名和各科成绩,平均成绩。
6、修改学生的信息
在系统已有学生信息的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。

(二)拓展功能:(结合自己的实际情况,可以在以上的功能基础上,完善与增加以下的一些功能)
(1)录入每个学生的学号、姓名和各科考试成绩;
(2)计算每门课程的总分和平均分;
(3)计算每个学生的总分和平均分;
(4)按每个学生的总分由高到低排出名次表;
(5)按每个学生的总分由低到高排出名次表;
(6)按学号由小到大排出成绩表;
(7)按姓名的字典顺序排出成绩表;
(8)按学号查询学生排名及其考试成绩;
(9)按姓名查询学生排名及其考试成绩;
(10)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;
(11)输出每个学生的学号、姓名、各科考试成绩,以及每门课程的总分和平均分;
(12)将每个学生的记录信息写入文件;
(13)从文件中读出每个学生的记录信息并显示

案例代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX_STUDENTS 100
 
typedef struct {
    char name[50];
    int id;
    char class[10];
    float scores[4]; // 数学、英语、C语言、总分
} Student;
 
Student students[MAX_STUDENTS];
int student_count = 0;
 
void add_student();
void query_student();
void print_failed_students();
void sort_students();
void print_all_students();
void modify_student();
 
int main() {
    int choice;
    while (1) {
        printf("学生成绩管理系统\n");
        printf("1. 录入学生信息\n");
        printf("2. 查询学生信息\n");
        printf("3. 输出不及格科目学生信息\n");
        printf("4. 排序学生信息\n");
        printf("5. 打印全部学生信息\n");
        printf("6. 修改学生信息\n");
        printf("0. 退出\n");
        printf("请选择功能: ");
        scanf("%d", &choice);
        switch (choice) {
            case 1: add_student(); break;
            case 2: query_student(); break;
            case 3: print_failed_students(); break;
            case 4: sort_students(); break;
            case 5: print_all_students(); break;
            case 6: modify_student(); break;
            case 0: exit(0);
            default: printf("无效选择!\n");
        }
    }
    return 0;
}
 
void add_student() {
    if (student_count >= MAX_STUDENTS) {
        printf("学生数已达上限!\n");
        return;
    }
    Student s;
    printf("输入学生姓名: ");
    scanf("%s", s.name);
    printf("输入学生学号: ");
    scanf("%d", &s.id);
    printf("输入学生班级: ");
    scanf("%s", s.class);
    printf("输入数学成绩: ");
    scanf("%f", &s.scores[0]);
    printf("输入英语成绩: ");
    scanf("%f", &s.scores[1]);
    printf("输入C语言成绩: ");
    scanf("%f", &s.scores[2]);
    s.scores[3] = (s.scores[0] + s.scores[1] + s.scores[2]) / 3;
    students[student_count++] = s;
    printf("学生信息添加成功!\n");
}
 
void query_student() {
    int id;
    printf("输入学生学号: ");
    scanf("%d", &id);
    for (int i = 0; i < student_count; i++) {
        if (students[i].id == id) {
            printf("姓名: %s\n", students[i].name);
            printf("学号: %d\n", students[i].id);
            printf("班级: %s\n", students[i].class);
            printf("数学成绩: %.2f\n", students[i].scores[0]);
            printf("英语成绩: %.2f\n", students[i].scores[1]);
            printf("C语言成绩: %.2f\n", students[i].scores[2]);
            printf("平均成绩: %.2f\n", students[i].scores[3]);
            return;
        }
    }
    printf("未找到该学生信息!\n");
}
 
void print_failed_students() {
    int subject;
    printf("输入科目编号 (0: 数学, 1: 英语, 2: C语言): ");
    scanf("%d", &subject);
    if (subject < 0 || subject > 2) {
        printf("无效科目编号!\n");
        return;
    }
    printf("不及格学生名单:\n");
    for (int i = 0; i < student_count; i++) {
        if (students[i].scores[subject] < 60) {
            printf("姓名: %s, 学号: %d, 成绩: %.2f\n", students[i].name, students[i].id, students[i].scores[subject]);
        }
    }
}
 
void sort_students() {
    int order;
    printf("选择排序方式 (0: 由小到大, 1: 由大到小): ");
    scanf("%d", &order);
    for (int i = 0; i < student_count - 1; i++) {
        for (int j = 0; j < student_count - 1 - i; j++) {
            if ((order == 0 && students[j].scores[3] > students[j + 1].scores[3]) || 
                (order == 1 && students[j].scores[3] < students[j + 1].scores[3])) {
                Student temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }
    printf("排序完成!\n");
}
 
void print_all_students() {
    printf("全部学生信息:\n");
    for (int i = 0; i < student_count; i++) {
        printf("姓名: %s, 学号: %d, 班级: %s, 数学: %.2f, 英语: %.2f, C语言: %.2f, 平均: %.2f\n",
               students[i].name, students[i].id, students[i].class,
               students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].scores[3]);
    }
}
 
void modify_student() {
    int id;
    printf("输入学生学号: ");
    scanf("%d", &id);
    for (int i = 0; i < student_count; i++) {
        if (students[i].id == id) {
            printf("修改学生信息:\n");
            printf("输入新的姓名: ");
            scanf("%s", students[i].name);
            printf("输入新的班级: ");
            scanf("%s", students[i].class);
            printf("输入新的数学成绩: ");
            scanf("%f", &students[i].scores[0]);
            printf("输入新的英语成绩: ");
            scanf("%f", &students[i].scores[1]);
            printf("输入新的C语言成绩: ");
            scanf("%f", &students[i].scores[2]);
            students[i].scores[3] = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3;
            printf("学生信息修改成功!\n");
            return;
        }
    }
    printf("未找到该学生信息!\n");
}
© 版权声明
THE END
喜欢就支持一下吧
点赞12赞赏 分享