使用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!