二.课程设计内容。 1对学生的英语成绩进行管理,包括学生成绩的信息输入、输出、统计、查询、添加、排序等功能。。 2. 假设,现收集到了 10名学生的英语成绩,要求用 C 语言编写一个简单的成绩管理系统,用模块化的方法实现学生成绩的输入、输出、统计、查询、添加、排序等功能
时间: 2024-01-03 17:04:57 浏览: 54
学生成绩管理系统课程设计
好的,这是一个比较全面的课程设计要求。下面是一个简单的实现,具体实现细节可能需要根据具体需求进行调整。
1. 思路
要实现对学生的英语成绩进行管理,我们可以定义一个包含学生信息的结构体,用数组来存储多个学生的成绩。对于学生成绩管理系统的各个功能,我们可以定义相应的函数来实现,最后在主函数中调用这些函数来完成对成绩的管理。
具体来说,我们可以定义如下的结构体:
```c
struct student {
char name[20]; // 学生姓名
int score; // 学生英语成绩
};
```
然后定义一个包含多个这种结构体的数组:
```c
struct student students[10]; // 存储10名学生的成绩
```
接下来,我们可以定义各个功能函数:
- 输入功能:调用 `scanf()` 函数从控制台获取学生姓名和英语成绩,并将其存储到数组中。
- 输出功能:遍历数组,将每个学生的姓名和成绩输出到控制台上。
- 统计功能:遍历数组,计算所有学生的平均成绩和最高成绩。
- 查询功能:根据学生姓名查找对应的成绩,并将其输出到控制台上。
- 添加功能:调用 `scanf()` 函数从控制台获取新学生的姓名和英语成绩,并将其添加到数组中。
- 排序功能:根据学生成绩对数组进行排序。
2. 实现
下面是一个简单的实现,仅供参考:
```c
#include <stdio.h>
#include <string.h>
struct student {
char name[20];
int score;
};
struct student students[10];
int count = 0;
void input() {
printf("请输入10名学生的英语成绩:\n");
for (int i = count; i < 10; i++) {
printf("请输入第%d名学生的姓名和成绩:", i + 1);
scanf("%s%d", students[i].name, &students[i].score);
count++; // 记录已输入的学生数
}
}
void output() {
printf("所有学生的成绩如下:\n");
for (int i = 0; i < count; i++) {
printf("%s\t%d\n", students[i].name, students[i].score);
}
}
void statistics() {
int sum = 0;
int max_score = 0;
for (int i = 0; i < count; i++) {
sum += students[i].score;
if (students[i].score > max_score) {
max_score = students[i].score;
}
}
float average = (float)sum / count;
printf("所有学生的平均成绩为:%.2f\n", average);
printf("所有学生的最高成绩为:%d\n", max_score);
}
void search() {
char name[20];
printf("请输入要查询的学生姓名:");
scanf("%s", name);
for (int i = 0; i < count; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("%s的英语成绩为:%d\n", name, students[i].score);
return;
}
}
printf("没有找到名为%s的学生!\n", name);
}
void add() {
if (count >= 10) {
printf("已达到最大学生数,无法添加!\n");
return;
}
printf("请输入新学生的姓名和成绩:");
scanf("%s%d", students[count].name, &students[count].score);
count++; // 记录已输入的学生数
}
void sort() {
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (students[i].score < students[j].score) {
// 交换两个学生的成绩
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("所有学生成绩已按从高到低排序!\n");
}
int main() {
while (1) {
printf("请输入数字来选择相应的功能:\n");
printf("1. 输入学生的英语成绩\n");
printf("2. 输出所有学生的成绩\n");
printf("3. 统计所有学生的平均成绩和最高成绩\n");
printf("4. 查询指定学生的成绩\n");
printf("5. 添加新学生的成绩\n");
printf("6. 对所有学生的成绩按从高到低排序\n");
printf("7. 退出程序\n");
int option;
scanf("%d", &option);
switch (option) {
case 1:
input();
break;
case 2:
output();
break;
case 3:
statistics();
break;
case 4:
search();
break;
case 5:
add();
break;
case 6:
sort();
break;
case 7:
return 0;
default:
printf("无效的选项!\n");
}
}
}
```
在上面的程序中,我们首先定义了一个包含学生姓名和英语成绩的结构体 `student`,然后定义了一个包含多个该结构体的数组 `students`,用来存储多个学生的成绩。我们还定义了一个变量 `count`,用来记录已输入的学生数。
接下来,我们定义了各个功能函数,包括输入、输出、统计、查询、添加、排序等。这些函数分别实现了不同的功能,具体实现细节可以参考代码中的注释。
最后,在主函数中,我们使用一个 `while` 循环来不断显示菜单,根据用户的选择调用相应的功能函数来实现学生成绩的管理。当用户选择退出程序时,程序结束。
以上就是一个简单的学生成绩管理系统的实现,希望能够对你有所帮助!
阅读全文