应用《C语言程序设计》课程的内容,编写一个完整的学生成绩管理系统程序,实现以下题目的要求: 1.学生信息包括学号、姓名、3 门考试成绩 3.统计所有学生的总分及平均分 4.统计所有课程的平均分 5.按平均分进行排序 6.输入一个学生学号输出其各科成绩及平均成绩
时间: 2024-03-03 07:53:33 浏览: 75
以下是一个简单的C语言程序,实现了学生成绩管理系统的基本要求:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT 100 // 最大学生数
#define MAX_NAME 20 // 最大姓名长度
#define MAX_ID 10 // 最大学号长度
typedef struct {
char id[MAX_ID]; // 学号
char name[MAX_NAME]; // 姓名
int score[3]; // 3门考试成绩
int total; // 总分
float average; // 平均分
} Student;
Student students[MAX_STUDENT]; // 学生数组
int count = 0; // 学生数目
// 计算学生总分及平均分
void calculate_score() {
int i, j;
for (i = 0; i < count; i++) {
students[i].total = 0;
for (j = 0; j < 3; j++) {
students[i].total += students[i].score[j];
}
students[i].average = (float) students[i].total / 3;
}
}
// 计算课程平均分
float calculate_average(int course) {
int i;
float sum = 0;
for (i = 0; i < count; i++) {
sum += students[i].score[course];
}
return sum / count;
}
// 按平均分排序
void sort_by_average() {
int i, j;
Student temp;
for (i = 0; i < count - 1; i++) {
for (j = 0; j < count - i - 1; j++) {
if (students[j].average < students[j + 1].average) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
// 输入学生信息
void input_student() {
if (count >= MAX_STUDENT) {
printf("学生数已达到最大值\n");
return;
}
printf("请输入学生信息(学号 姓名 3门成绩):\n");
scanf("%s%s%d%d%d", students[count].id, students[count].name, &students[count].score[0], &students[count].score[1], &students[count].score[2]);
count++;
}
// 输出学生信息
void output_student() {
int i, j;
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总分\t平均分\n");
for (i = 0; i < count; i++) {
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].total, students[i].average);
}
}
// 输出课程平均分
void output_average() {
int i;
printf("课程\t平均分\n");
for (i = 0; i < 3; i++) {
printf("%d\t%.2f\n", i + 1, calculate_average(i));
}
}
// 按平均分排序并输出学生信息
void output_sort() {
int i, j;
sort_by_average();
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总分\t平均分\n");
for (i = 0; i < count; i++) {
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].total, students[i].average);
}
}
// 根据学号查找学生信息
void search_student() {
char id[MAX_ID];
int i, j;
printf("请输入要查找的学生学号:\n");
scanf("%s", id);
for (i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总分\t平均分\n");
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].total, students[i].average);
return;
}
}
printf("未找到该学生\n");
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 输入学生信息\n");
printf("2. 统计学生总分及平均分\n");
printf("3. 统计课程平均分\n");
printf("4. 按平均分排序并输出学生信息\n");
printf("5. 输入学生学号输出其各科成绩及平均成绩\n");
printf("0. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
input_student();
break;
case 2:
calculate_score();
output_student();
break;
case 3:
output_average();
break;
case 4:
output_sort();
break;
case 5:
search_student();
break;
case 0:
exit(0);
break;
default:
printf("无效操作\n");
break;
}
}
return 0;
}
```
注意,上述代码仅实现了基本的学生成绩管理功能,还有许多细节需要完善,例如输入的学生信息格式、错误处理等等。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)