以c语言代码为基础生成一个学生成绩管理系统,要求至少能增删改查,能查询两门以上的课程,文件保存功能,排序功能或者求平均分功能
时间: 2024-12-24 22:22:21 浏览: 14
创建一个学生成绩管理系统,我们可以设计一个简单的命令行界面程序,使用C语言结构体存储学生信息和成绩数据。以下是基本框架的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[50];
int id;
float *scores; // 存储每个学生的成绩数组
int num_courses; // 每个学生有多少门课程
} Student;
void add_student(Student **students, int *num_students) {
printf("请输入新学生姓名:");
fgets(students[*num_students].name, sizeof(students[*num_students].name), stdin);
printf("请输入学生ID:");
scanf("%d", &students[*num_students].id);
students[*num_students].scores = (float*)malloc(sizeof(float) * MAX_COURSES); // 假设MAX_COURSES为最大课程数
printf("请输入每门课程的成绩,输入-1结束:\n");
for (int i = 0; ; i++) {
scanf("%f", &students[*num_students].scores[i]);
if (i >= MAX_COURSES - 1)
break;
if (students[*num_students].scores[i] == -1)
break;
}
students[*num_students].num_courses = i + 1;
(*num_students)++;
}
// 其他功能类似,这里只列出核心部分
void main_menu() {
Student *students = NULL;
int num_students = 0;
while (1) {
printf("\n请选择操作:\n1. 添加学生\n2. 删除学生\n3. 修改学生成绩\n4. 查询学生信息\n5. 查看所有学生成绩\n6. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1: add_student(&students, &num_students); break;
// ... 为其他选项添加相应处理
case 6: free(students); exit(0);
}
}
}
```
为了实现文件保存功能,你可以考虑每次修改或添加学生后将数据保存到文本文件中,比如使用`fprintf`函数。查询两门以上的课程,可以遍历成绩数组;排序功能则可以利用标准库函数`qsort`对学生的列表按某个字段(如总分)排序;求平均分可以在显示学生信息时计算并输出。
阅读全文