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