运用c语言知识编辑一个应用程序,学习成绩管理系统 程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一个学生成绩管理系统,使之能提供以下功能: (1)主菜单 1.成绩录入 2.成绩查询· 3.成绩统计 4.退出 (2)各菜单项功能 ①成绩录入:输入学生的学号、姓名及三门课的成绩; ②成绩查询: *按学号查询学生成绩; ③成绩统计: *计算学生的平均分; *根据学生的平均分高低,对学生的数据进行排序后输出; ④退出系统:退出整个系统(即主菜单)。
时间: 2024-01-01 08:06:32 浏览: 44
以下是一个简单的学生成绩管理系统的C语言代码,实现了主菜单、成绩录入、成绩查询和成绩统计功能。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NUM 100 // 最大学生数
// 学生成绩结构体
struct student {
int id; // 学号
char name[20]; // 姓名
float score[3]; // 三门课成绩
float average; // 平均成绩
};
// 学生数组
struct student students[MAX_NUM];
int count = 0; // 学生数
// 主菜单
void main_menu() {
printf("=========================================\n");
printf(" 学生成绩管理系统\n");
printf("=========================================\n");
printf("1.成绩录入\n");
printf("2.成绩查询\n");
printf("3.成绩统计\n");
printf("4.退出\n");
}
// 成绩录入
void input_score() {
printf("请输入学生的学号、姓名及三门课的成绩:\n");
printf("学号:");
scanf("%d", &students[count].id);
printf("姓名:");
scanf("%s", students[count].name);
printf("三门课成绩:");
scanf("%f%f%f", &students[count].score[0], &students[count].score[1], &students[count].score[2]);
students[count].average = (students[count].score[0] + students[count].score[1] + students[count].score[2]) / 3;
count++;
printf("成绩录入成功!\n");
}
// 成绩查询
void search_score() {
int id;
printf("请输入要查询的学生的学号:");
scanf("%d", &id);
int index = -1;
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到该学生!\n");
} else {
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[index].id, students[index].name, students[index].score[0], students[index].score[1], students[index].score[2], students[index].average);
}
}
// 成绩统计
void statistic_score() {
// 计算平均成绩
for (int i = 0; i < count; i++) {
students[i].average = (students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3;
}
// 排序
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (students[i].average < students[j].average) {
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
// 输出
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (int i = 0; i < count; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].average);
}
}
int main() {
int choice = 0;
while (1) {
main_menu();
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_score();
break;
case 2:
search_score();
break;
case 3:
statistic_score();
break;
case 4:
exit(0);
default:
printf("输入有误,请重新选择!\n");
break;
}
}
return 0;
}
```
注意:以上代码只是一个简单的示例,可能存在不足和漏洞,仅供参考。在实际应用中,需要根据具体需求进行修改和完善。
阅读全文