题目描述
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");
}