1.题目内容:用c语言实现一个班级成绩管理系统 2.要求: (1) 分析问题:班级成绩管理系统的功能有哪些?每个功能分别用什么函数实现? (用文字或者图表说明清楚); (2) 数据结构设计(程序处理数据分析和说明): 学生基本信息说明(学号、姓名、性别课程 1成绩、课程 2 成绩......); 提示:***前两项内容用 word 编辑一个设计说明文件。 (3) 编写、测试、运行程序。 提示:***第三项提交代码文件
时间: 2024-03-14 08:43:10 浏览: 101
1. 班级成绩管理系统的功能主要包括以下几个方面:
- 添加学生信息
- 删除学生信息
- 修改学生信息
- 查询学生信息
- 统计全班成绩情况
- 按照某一科目成绩排序
其中,每个功能可以用一个函数来实现,具体如下:
- 添加学生信息:add_student()
- 删除学生信息:delete_student()
- 修改学生信息:modify_student()
- 查询学生信息:query_student()
- 统计全班成绩情况:statistics_class()
- 按照某一科目成绩排序:sort_score()
2. 数据结构设计:
学生基本信息包括学号、姓名、性别、课程 1 成绩、课程 2 成绩......,可以用一个结构体来表示学生信息:
```c
struct student {
int id; // 学号
char name[20]; // 姓名
char gender[5]; // 性别
float score1; // 课程1成绩
float score2; // 课程2成绩
// 其他科目成绩...
};
```
可以用一个数组来存储班级所有学生的信息:
```c
struct student class[100]; // 假设班级最多有100个学生
int student_num = 0; // 学生总数
```
3. 编写、测试、运行程序:
代码文件如下(注释中有详细说明):
```c
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
char gender[5];
float score1;
float score2;
};
struct student class[100];
int student_num = 0;
// 添加学生信息
void add_student() {
printf("请输入学号:");
scanf("%d", &class[student_num].id);
printf("请输入姓名:");
scanf("%s", class[student_num].name);
printf("请输入性别:");
scanf("%s", class[student_num].gender);
printf("请输入课程1成绩:");
scanf("%f", &class[student_num].score1);
printf("请输入课程2成绩:");
scanf("%f", &class[student_num].score2);
student_num++;
printf("添加成功!\n");
}
// 删除学生信息
void delete_student() {
int id;
printf("请输入要删除的学生学号:");
scanf("%d", &id);
int i;
for (i = 0; i < student_num; i++) {
if (class[i].id == id) {
// 找到要删除的学生,将后面的学生信息向前移动一个位置
int j;
for (j = i; j < student_num - 1; j++) {
class[j] = class[j+1];
}
student_num--;
printf("删除成功!\n");
return;
}
}
printf("没有找到该学生!\n");
}
// 修改学生信息
void modify_student() {
int id;
printf("请输入要修改的学生学号:");
scanf("%d", &id);
int i;
for (i = 0; i < student_num; i++) {
if (class[i].id == id) {
// 找到要修改的学生,提示用户输入新的信息
printf("请输入新的姓名:");
scanf("%s", class[i].name);
printf("请输入新的性别:");
scanf("%s", class[i].gender);
printf("请输入新的课程1成绩:");
scanf("%f", &class[i].score1);
printf("请输入新的课程2成绩:");
scanf("%f", &class[i].score2);
printf("修改成功!\n");
return;
}
}
printf("没有找到该学生!\n");
}
// 查询学生信息
void query_student() {
int id;
printf("请输入要查询的学生学号:");
scanf("%d", &id);
int i;
for (i = 0; i < student_num; i++) {
if (class[i].id == id) {
// 找到要查询的学生,输出其信息
struct student s = class[i];
printf("学号:%d,姓名:%s,性别:%s,课程1成绩:%f,课程2成绩:%f\n",
s.id, s.name, s.gender, s.score1, s.score2);
return;
}
}
printf("没有找到该学生!\n");
}
// 统计全班成绩情况
void statistics_class() {
float avg1 = 0, avg2 = 0;
int i;
for (i = 0; i < student_num; i++) {
avg1 += class[i].score1;
avg2 += class[i].score2;
}
avg1 /= student_num;
avg2 /= student_num;
printf("课程1平均成绩:%f,课程2平均成绩:%f\n", avg1, avg2);
}
// 按照课程1成绩排序
void sort_score() {
int i, j;
for (i = 0; i < student_num - 1; i++) {
for (j = 0; j < student_num - i - 1; j++) {
if (class[j].score1 < class[j+1].score1) {
struct student temp = class[j];
class[j] = class[j+1];
class[j+1] = temp;
}
}
}
printf("按照课程1成绩排序结果如下:\n");
for (i = 0; i < student_num; i++) {
struct student s = class[i];
printf("学号:%d,姓名:%s,课程1成绩:%f\n", s.id, s.name, s.score1);
}
}
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. 按照课程1成绩排序\n");
printf("7. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
query_student();
break;
case 5:
statistics_class();
break;
case 6:
sort_score();
break;
case 7:
return 0;
default:
printf("输入有误,请重新输入!\n");
}
}
}
```
编译运行该程序,即可使用班级成绩管理系统。
阅读全文