使用C语言设计并实现一个成绩管理系统

2023-12-18 18:06:11

使用C语言设计并实现一个成绩管理系统,该系统用于教师管理一门课程的成绩。

系统功能:成绩录入、打印成绩单、修改成绩、统计分数段、统计平均分、统计不及格学生,相关要求:

1) 系统要有主菜单界面,让教师了解系统的功能,以及如何选择系统功能。

2) 系统应该能够让教师自由选择并完成成绩录入、打印成绩单、修改成绩、统计分数段、统计平均分、统计不及格学生等项目中的任何一项或多项工作。

#include <stdio.h>  
  
#define MAX_STUDENTS 100  
#define PASS_MARK 60  
  
struct Student {  
    char name[50];  
    int score;  
};  
  
void printMenu();  
void inputScores(struct Student students[], int *numStudents);  
void printScoreSheet(struct Student students[], int numStudents);  
void modifyScore(struct Student students[], int numStudents);  
void statisticsScoreSegment(struct Student students[], int numStudents);  
void statisticsAverageScore(struct Student students[], int numStudents);  
void statisticsFailedStudents(struct Student students[], int numStudents);  
  
int main() {  
    struct Student students[MAX_STUDENTS];  
    int numStudents = 0;  
    int choice;  
  
    do {  
        printMenu();  
        printf("请输入你的选择(1-6):");  
        scanf("%d", &choice);  
        switch(choice) {  
            case 1:  
                inputScores(students, &numStudents);  
                break;  
            case 2:  
                printScoreSheet(students, numStudents);  
                break;  
            case 3:  
                modifyScore(students, numStudents);  
                break;  
            case 4:  
                statisticsScoreSegment(students, numStudents);  
                break;  
            case 5:  
                statisticsAverageScore(students, numStudents);  
                break;  
            case 6:  
                statisticsFailedStudents(students, numStudents);  
                break;  
            default:  
                printf("无效的选择,请重新选择。\n");  
                break;  
        }  
    } while(choice != 7);  
    return 0;  
}  
  
void printMenu() {  
    printf("\n--------成绩管理系统--------\n");  
    printf("1. 录入成绩\n");  
    printf("2. 打印成绩单\n");  
    printf("3. 修改成绩\n");  
    printf("4. 统计分数段\n");  
    printf("5. 统计平均分\n");  
    printf("6. 统计不及格学生\n");  
    printf("7. 退出\n");  
    printf("请选择一个操作:\n");  
}  
  
void inputScores(struct Student students[], int *numStudents) {  
    char continueInput = 'y';  
    while(continueInput == 'y') {  
        if(*numStudents >= MAX_STUDENTS) {  
            printf("已达到最大学生数量,无法再录入新的学生。\n");  
            return;  
        }  
        printf("请输入学生姓名:");  
        scanf("%s", students[*numStudents].name);  
        printf("请输入学生成绩:");  
        scanf("%d", &students[*numStudents].score);  
        (*numStudents)++;  
        printf("是否继续录入?(y/n):");  
        scanf(" %c", &continueInput); // 注意前面的空格,用于跳过前面可能残留的换行符。  
    }  
}  
  
void printScoreSheet(struct Student students[], int numStudents) {  
    printf("\n成绩单\n");  
    printf("姓名\t成绩\n");  
    for(int i = 0; i < numStudents; i++) {  
        printf("%s\t%d\n", students[i].name, students[i].score);  
    }  
}  
  
void modifyScore(struct Student students[], int numStudents) {  
    char name[50];  
    int newScore;  
    printf("请输入要修改成绩的学生姓名:");  
    scanf("%s", name);  
    for(int i = 0; i < numStudents; i++) {  
        if(strcmp(name, students[i].name) == 0) {  
            printf("请输入新的成绩:");  
            scanf("%d", &newScore);  
            students[i].score = newScore;  
            printf("成绩已成功修改。\n");  
            return;  
        }  
    }  
    printf("未找到该学生。\n");  
}  
  
void statisticsScoreSegment(struct Student students[], int numStudents) {  
    int scoreSegment[11] = {0}; // 存储每个分数段的学生数量,下标代表分数段,例如scoreSegment[10

程序没有使用数据库或文件存储数据,所有的成绩都保存在内存中,因此当程序结束时,所有的数据都会丢失。在实际应用中,你可能需要使用数据库或文件来持久化存储数据。

文章来源:https://blog.csdn.net/lejuo/article/details/135053505
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。