本实验要求用C语言编写一个学生成绩管理系统,利用顺序表实现对成绩信息的添加、查询、修改、统计等功能。本实验要求用C语言编写一个学生成绩管理系统,利用顺序表实现对成绩信息的添加、查询、修改、统计等功能。二、基本要求 1.采用顺序存储结构建立学生成绩表。 2.设计输入模块,完成对学生成绩的录入。 3.设计函数,实现对成绩信息的查询、修改、统计等功能。 4.设计菜单函数,完成对相关功能模块的调用。 5.运用文件操作将数据保存到存储磁盘文件中。运用文件操作将数据保存到存储磁盘文件中。
时间: 2023-06-16 09:01:58 浏览: 111
好的,这是一个相对完整的学生成绩管理系统,需要利用顺序表来实现。以下是一般的程序框架:
1. 定义结构体,包含学生信息(学号、姓名、成绩等);
2. 定义顺序表结构体,包含存储学生信息的数组和顺序表的长度;
3. 编写函数,实现对学生信息的添加、查询、修改、统计等功能;
4. 编写菜单函数,完成对相关功能模块的调用;
5. 运用文件操作将数据保存到存储磁盘文件中。
以下是一份基本代码框架,供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100 // 最大学生数
#define FILE_NAME "students.dat" // 存储文件名
// 学生信息结构体
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
float score; // 成绩
} Student;
// 顺序表结构体
typedef struct {
Student data[MAX_STUDENT_NUM]; // 存储学生信息的数组
int length; // 顺序表的长度
} SeqList;
// 函数声明
void initList(SeqList *list); // 初始化顺序表
int addStudent(SeqList *list, Student student); // 添加学生信息
int searchStudent(SeqList list, char *id); // 查询学生信息
int modifyScore(SeqList *list, char *id, float score); // 修改学生成绩
float calculateAverageScore(SeqList list); // 计算平均成绩
void printList(SeqList list); // 打印所有学生信息
void saveToFile(SeqList list); // 将学生信息保存到文件中
void readFromFile(SeqList *list); // 从文件中读取学生信息
// 菜单函数
int menu() {
int choice;
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");
printf("请选择:");
scanf("%d", &choice);
return choice;
}
int main() {
SeqList list;
Student student;
char id[10];
float score;
int choice;
initList(&list);
readFromFile(&list);
while (1) {
choice = menu();
switch (choice) {
case 1:
printf("请输入学生信息(学号 姓名 成绩):");
scanf("%s %s %f", student.id, student.name, &student.score);
if (addStudent(&list, student)) {
printf("添加成功!\n");
} else {
printf("添加失败!学生数已达上限!\n");
}
break;
case 2:
printf("请输入要查询的学生学号:");
scanf("%s", id);
if (searchStudent(list, id) >= 0) {
printf("查询成功!\n");
} else {
printf("查询失败!该学生不存在!\n");
}
break;
case 3:
printf("请输入要修改成绩的学生学号和新成绩:");
scanf("%s %f", id, &score);
if (modifyScore(&list, id, score)) {
printf("修改成功!\n");
} else {
printf("修改失败!该学生不存在!\n");
}
break;
case 4:
printf("平均成绩为:%.2f\n", calculateAverageScore(list));
break;
case 5:
printList(list);
break;
case 6:
saveToFile(list);
printf("保存成功!\n");
break;
case 7:
readFromFile(&list);
printf("读取成功!\n");
break;
case 0:
saveToFile(list);
printf("程序已退出!\n");
exit(0);
default:
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
// 初始化顺序表
void initList(SeqList *list) {
list->length = 0;
}
// 添加学生信息
int addStudent(SeqList *list, Student student) {
if (list->length >= MAX_STUDENT_NUM) {
return 0;
}
list->data[list->length] = student;
list->length++;
return 1;
}
// 查询学生信息
int searchStudent(SeqList list, char *id) {
int i;
for (i = 0; i < list.length; i++) {
if (strcmp(list.data[i].id, id) == 0) {
printf("学生信息:学号:%s,姓名:%s,成绩:%.2f\n", list.data[i].id, list.data[i].name, list.data[i].score);
return i;
}
}
return -1;
}
// 修改学生成绩
int modifyScore(SeqList *list, char *id, float score) {
int i;
for (i = 0; i < list->length; i++) {
if (strcmp(list->data[i].id, id) == 0) {
list->data[i].score = score;
return 1;
}
}
return 0;
}
// 计算平均成绩
float calculateAverageScore(SeqList list) {
int i;
float sum = 0;
for (i = 0; i < list.length; i++) {
sum += list.data[i].score;
}
return sum / list.length;
}
// 打印所有学生信息
void printList(SeqList list) {
int i;
printf("学生信息如下:\n");
for (i = 0; i < list.length; i++) {
printf("学号:%s,姓名:%s,成绩:%.2f\n", list.data[i].id, list.data[i].name, list.data[i].score);
}
}
// 将学生信息保存到文件中
void saveToFile(SeqList list) {
FILE *fp;
int i;
fp = fopen(FILE_NAME, "wb");
if (fp == NULL) {
printf("保存失败!\n");
return;
}
fwrite(&list.length, sizeof(int), 1, fp);
for (i = 0; i < list.length; i++) {
fwrite(&list.data[i], sizeof(Student), 1, fp);
}
fclose(fp);
}
// 从文件中读取学生信息
void readFromFile(SeqList *list) {
FILE *fp;
int i;
fp = fopen(FILE_NAME, "rb");
if (fp == NULL) {
printf("读取失败!\n");
return;
}
fread(&list->length, sizeof(int), 1, fp);
for (i = 0; i < list->length; i++) {
fread(&list->data[i], sizeof(Student), 1, fp);
}
fclose(fp);
}
```
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)