c语言学生成绩管理系统 编写一个菜单驱动的学生成绩管理系统,要求实现以下管理功能: (1)录入每个学生的学号和考试成绩; (2)输出所有记录; (3)将学生信息按学号排序; (4)插入一条新的记录; (5)删除一条记录; (6)根据学生姓名查询成绩; (7)对学生成绩进行统计,展示最高分、最低分和平均分。
时间: 2024-01-20 16:02:47 浏览: 115
好的,我可以帮你解答这个问题。对于这个学生成绩管理系统,你可以按照以下步骤进行实现:
1. 定义学生信息的结构体,包括学号、姓名和成绩等字段。
2. 定义一个动态数组,用来存储所有的学生信息。
3. 编写菜单函数,实现以下功能:
(1) 录入学生信息:从键盘输入学生的学号和考试成绩,将学生信息存储到数组中。
(2) 输出所有记录:遍历数组,输出每个学生的学号和成绩。
(3) 将学生信息按学号排序:对数组中的学生信息按照学号进行排序,可以使用快速排序等算法。
(4) 插入一条新的记录:从键盘输入新的学生信息,将学生信息插入到数组中。
(5) 删除一条记录:从键盘输入要删除的学生的学号,从数组中删除该学生的信息。
(6) 根据学生姓名查询成绩:从键盘输入要查询的学生姓名,遍历数组,输出该学生的成绩。
(7) 对学生成绩进行统计:遍历数组,计算最高分、最低分和平均分,并输出。
4. 在主函数中调用菜单函数,实现学生成绩管理系统的运行。
实现以上步骤,即可完成这个学生成绩管理系统的编写。当然,具体的代码实现还需要根据自己的实际情况进行调整和完善。
相关问题
C语言编写一个菜单驱动的学生成绩管理系统,要求实现以下管理功能: (1)录入每个学生的学号和考试成绩; (2)输出所有记录; (3)将学生信息按学号排序; (4)插入一条新的记录; (5)删除一条记录; (6)根据学生姓名查询成绩; (7)对学生成绩进行统计,展示最高分、最低分和平均分。
好的,这是一个比较典型的学生成绩管理系统,以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char id[20];
char name[20];
float score;
};
struct student stu[100];
int n = 0; // 记录学生数量
void input() {
printf("请输入学生的学号,姓名和成绩(以空格隔开):\n");
scanf("%s %s %f", stu[n].id, stu[n].name, &stu[n].score);
n++;
}
void display() {
printf("学号\t姓名\t成绩\n");
for (int i = 0; i < n; i++) {
printf("%s\t%s\t%.2f\n", stu[i].id, stu[i].name, stu[i].score);
}
}
void sort() {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(stu[j].id, stu[j+1].id) > 0) {
struct student tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
void insert() {
printf("请输入要插入的学生的学号,姓名和成绩(以空格隔开):\n");
scanf("%s %s %f", stu[n].id, stu[n].name, &stu[n].score);
n++;
sort();
}
void del() {
printf("请输入要删除的学生的学号:\n");
char id[20];
scanf("%s", id);
int i;
for (i = 0; i < n; i++) {
if (strcmp(id, stu[i].id) == 0) {
break;
}
}
if (i == n) {
printf("未找到该学生!\n");
} else {
for (int j = i; j < n - 1; j++) {
stu[j] = stu[j+1];
}
n--;
printf("删除成功!\n");
}
}
void search() {
printf("请输入要查询的学生的姓名:\n");
char name[20];
scanf("%s", name);
int flag = 0;
for (int i = 0; i < n; i++) {
if (strcmp(name, stu[i].name) == 0) {
printf("该学生的学号为%s,成绩为%.2f\n", stu[i].id, stu[i].score);
flag = 1;
}
}
if (flag == 0) {
printf("未找到该学生!\n");
}
}
void statistic() {
float sum = 0;
float max_score = stu[0].score;
float min_score = stu[0].score;
for (int i = 0; i < n; i++) {
sum += stu[i].score;
if (stu[i].score > max_score) {
max_score = stu[i].score;
}
if (stu[i].score < min_score) {
min_score = stu[i].score;
}
}
float avg_score = sum / n;
printf("最高分为%.2f,最低分为%.2f,平均分为%.2f\n", max_score, min_score, avg_score);
}
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("7. 统计学生成绩\n");
printf("0. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 0:
exit(0);
case 1:
input();
break;
case 2:
display();
break;
case 3:
sort();
break;
case 4:
insert();
break;
case 5:
del();
break;
case 6:
search();
break;
case 7:
statistic();
break;
default:
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
```
这个程序使用结构体 `student` 存储每个学生的学号、姓名和成绩,通过数组 `stu` 来存储所有学生的信息。菜单选择使用了 `switch` 语句,每个功能都通过一个函数实现。其中,排序使用了冒泡排序算法,删除使用了遍历查找和数组移动的方法。最后,统计学生成绩使用了一个循环来计算总分、最高分、最低分和平均分。
c语言实现程序某班有M人(具体人数由键盘输入)参加期末考试,有N门课程(具体课程数由键盘输入)用C语言编程实现包括以下功能的菜单驱动的学生成绩管理系统。 功能介绍: (1) 录入功能:录入每个学生的学号、姓名和各科成绩,并计算每门课程及每个学生的总分和平均分 (2) 修改功能:根据学号修改学生的学号、姓名以及各门课成绩 (3) 删除功能:根据学号删除相应学生的相关信息 (4) 输出功能:显示所有学生的学号、姓名、各科成绩、总分和分均分 (5) 插入功能:插入新学生的相关信息 (6) 查询功能:根据学号查询该学生的相关信息 (7) 排序功能:根据总分和平均分分别对学生进行排序 (8) 系统以菜单方式工作
好的,这是一个比较典型的学生成绩管理系统,实现起来也比较容易。下面是一个基本的实现思路:
1. 定义一个结构体来存储每个学生的信息,包括学号、姓名、各科成绩、总分和平均分。
2. 根据输入的M和N,定义一个二维数组来存储所有学生的信息,例如:`struct student stu[M][N+2]`,其中最后两列分别存储总分和平均分。
3. 编写菜单函数,根据用户的选择调用相应的功能函数,例如:录入、修改、删除、输出、插入、查询和排序。
4. 编写录入函数,使用循环依次输入每个学生的信息,并计算每门课程及每个学生的总分和平均分。
5. 编写修改函数,根据学号查找相应的学生信息,并修改其学号、姓名以及各门课成绩。
6. 编写删除函数,根据学号查找相应的学生信息,并将其删除。
7. 编写输出函数,使用循环依次输出每个学生的学号、姓名、各科成绩、总分和平均分。
8. 编写插入函数,根据用户输入的学生信息,将其插入到指定位置。
9. 编写查询函数,根据学号查找相应的学生信息,并输出其相关信息。
10. 编写排序函数,根据总分和平均分分别对学生进行排序。
11. 最后,编写主函数,调用菜单函数,以菜单方式工作。
以上是简要的实现思路,具体实现细节还需要根据实际情况进行调整和完善。
阅读全文