c语言基于顺序表的学生成绩管理系统,一共有三个科目,每个科目学生成绩包含平时成绩和期末成绩
时间: 2023-06-20 09:08:03 浏览: 126
今天给大家分享一个C语言环境下开发的学生成绩管理系统 这个系统原理很简单:成绩的录入,输出,修改,排序,删除等等
好的,让我们来分析一下这个学生成绩管理系统该如何设计。
首先,我们需要定义学生的结构体,包含学号、姓名和三门科目的成绩。可以定义如下:
```c
#define MAX_NUM 50 // 最大学生数
typedef struct {
int id; // 学号
char name[20]; // 姓名
float scores[3][2]; // 三门科目的成绩,每门科目包含平时成绩和期末成绩
} Student;
Student students[MAX_NUM]; // 学生数组,最多存储 MAX_NUM 个学生
int count = 0; // 当前已存储的学生数
```
接下来,我们需要实现以下功能:
1. 添加学生
2. 删除学生
3. 修改学生成绩
4. 查询学生信息
5. 统计学生成绩
对于添加学生和删除学生,可以定义如下函数:
```c
void addStudent() {
if (count >= MAX_NUM) {
printf("已达到最大学生数,无法添加!\n");
return;
}
Student student;
printf("请输入学生学号:");
scanf("%d", &student.id);
printf("请输入学生姓名:");
scanf("%s", student.name);
for (int i = 0; i < 3; i++) {
printf("请输入第%d门科目的平时成绩:", i + 1);
scanf("%f", &student.scores[i][0]);
printf("请输入第%d门科目的期末成绩:", i + 1);
scanf("%f", &student.scores[i][1]);
}
students[count++] = student;
printf("学生添加成功!\n");
}
void deleteStudent() {
int id;
printf("请输入要删除的学生学号:");
scanf("%d", &id);
int i;
for (i = 0; i < count; i++) {
if (students[i].id == id) {
break;
}
}
if (i == count) {
printf("未找到该学生,无法删除!\n");
return;
}
for (int j = i; j < count - 1; j++) {
students[j] = students[j + 1];
}
count--;
printf("学生删除成功!\n");
}
```
对于修改学生成绩和查询学生信息,可以定义如下函数:
```c
void modifyScore() {
int id, course;
printf("请输入要修改成绩的学生学号:");
scanf("%d", &id);
printf("请输入要修改成绩的科目编号(1~3):");
scanf("%d", &course);
int i;
for (i = 0; i < count; i++) {
if (students[i].id == id) {
break;
}
}
if (i == count) {
printf("未找到该学生,无法修改成绩!\n");
return;
}
printf("请输入修改后的平时成绩:");
scanf("%f", &students[i].scores[course - 1][0]);
printf("请输入修改后的期末成绩:");
scanf("%f", &students[i].scores[course - 1][1]);
printf("成绩修改成功!\n");
}
void queryStudent() {
int id;
printf("请输入要查询的学生学号:");
scanf("%d", &id);
int i;
for (i = 0; i < count; i++) {
if (students[i].id == id) {
break;
}
}
if (i == count) {
printf("未找到该学生!\n");
return;
}
printf("学号:%d\n", students[i].id);
printf("姓名:%s\n", students[i].name);
for (int j = 0; j < 3; j++) {
printf("第%d门科目平时成绩:%f\n", j + 1, students[i].scores[j][0]);
printf("第%d门科目期末成绩:%f\n", j + 1, students[i].scores[j][1]);
}
}
```
最后,对于统计学生成绩,可以定义如下函数:
```c
void calcScore() {
printf("请输入要统计的科目编号(1~3):");
int course;
scanf("%d", &course);
float total = 0;
for (int i = 0; i < count; i++) {
total += students[i].scores[course - 1][0] * 0.3 + students[i].scores[course - 1][1] * 0.7;
}
printf("平均分:%f\n", total / count);
}
```
完整代码如下:
阅读全文