。统计,让老师们轻松直观的看到学生成绩的情况。本实验要求用C语言编写一个学生成绩管理系统,利用顺序表实现对成绩信息的添加、查询、修改、统计等功能。二、基本要求 1.采用顺序存储结构建立学生成绩表。 2.设计输入模块,完成对学生成绩的录入。 3.设计函数,实现对成绩信息的查询、修改、统计等功能。 4.设计菜单函数,完成对相关功能模块的调用。 5.运用文件操作将数据保存到存储磁盘文件中。运用文件操作将数据保存到存储磁盘文件中。
时间: 2023-06-15 10:08:34 浏览: 87
三、具体实现
1. 采用结构体存储学生信息和成绩信息:
```c
typedef struct {
char name[20]; // 学生姓名
int num; // 学生学号
float score; // 学生成绩
} Student;
```
2. 采用一维数组存储学生成绩信息:
```c
#define MAXSIZE 100 // 学生成绩表最大容量
Student stu[MAXSIZE]; // 学生成绩表
int len = 0; // 学生成绩表当前长度
```
3. 设计输入模块,完成对学生成绩的录入:
```c
void input() {
printf("请输入学生姓名:");
scanf("%s", stu[len].name);
printf("请输入学生学号:");
scanf("%d", &stu[len].num);
printf("请输入学生成绩:");
scanf("%f", &stu[len].score);
len++;
printf("录入成功!\n");
}
```
4. 设计查询函数,实现对成绩信息的查询:
```c
void search() {
int num;
printf("请输入要查询的学生学号:");
scanf("%d", &num);
for (int i = 0; i < len; i++) {
if (stu[i].num == num) {
printf("姓名:%s 学号:%d 成绩:%.2f\n", stu[i].name, stu[i].num, stu[i].score);
return;
}
}
printf("找不到该学生!\n");
}
```
5. 设计修改函数,实现对成绩信息的修改:
```c
void modify() {
int num;
printf("请输入要修改信息的学生学号:");
scanf("%d", &num);
for (int i = 0; i < len; i++) {
if (stu[i].num == num) {
printf("请输入修改后的学生姓名:");
scanf("%s", stu[i].name);
printf("请输入修改后的学生成绩:");
scanf("%f", &stu[i].score);
printf("修改成功!\n");
return;
}
}
printf("找不到该学生!\n");
}
```
6. 设计统计函数,实现对成绩信息的统计:
```c
void statistics() {
float sum = 0;
for (int i = 0; i < len; i++) {
sum += stu[i].score;
}
printf("学生人数:%d 平均成绩:%.2f\n", len, sum / len);
}
```
7. 设计菜单函数,完成对相关功能模块的调用:
```c
void menu() {
printf("\n");
printf("**********学生成绩管理系统**********\n");
printf("* *\n");
printf("* 1. 录入成绩 *\n");
printf("* 2. 查询成绩 *\n");
printf("* 3. 修改成绩 *\n");
printf("* 4. 统计成绩 *\n");
printf("* 5. 退出系统 *\n");
printf("* *\n");
printf("************************************\n");
printf("\n");
printf("请输入数字选择功能:");
}
```
8. 运用文件操作将数据保存到存储磁盘文件中:
```c
void save() {
FILE *fp;
fp = fopen("score.txt", "w");
for (int i = 0; i < len; i++) {
fprintf(fp, "%s %d %.2f\n", stu[i].name, stu[i].num, stu[i].score);
}
fclose(fp);
printf("数据已保存到文件!\n");
}
void load() {
FILE *fp;
fp = fopen("score.txt", "r");
while (fscanf(fp, "%s %d %f\n", stu[len].name, &stu[len].num, &stu[len].score) != EOF) {
len++;
}
fclose(fp);
printf("数据已从文件中读取!\n");
}
```
四、完整代码
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20]; // 学生姓名
int num; // 学生学号
float score; // 学生成绩
} Student;
#define MAXSIZE 100 // 学生成绩表最大容量
Student stu[MAXSIZE]; // 学生成绩表
int len = 0; // 学生成绩表当前长度
void input() {
printf("请输入学生姓名:");
scanf("%s", stu[len].name);
printf("请输入学生学号:");
scanf("%d", &stu[len].num);
printf("请输入学生成绩:");
scanf("%f", &stu[len].score);
len++;
printf("录入成功!\n");
}
void search() {
int num;
printf("请输入要查询的学生学号:");
scanf("%d", &num);
for (int i = 0; i < len; i++) {
if (stu[i].num == num) {
printf("姓名:%s 学号:%d 成绩:%.2f\n", stu[i].name, stu[i].num, stu[i].score);
return;
}
}
printf("找不到该学生!\n");
}
void modify() {
int num;
printf("请输入要修改信息的学生学号:");
scanf("%d", &num);
for (int i = 0; i < len; i++) {
if (stu[i].num == num) {
printf("请输入修改后的学生姓名:");
scanf("%s", stu[i].name);
printf("请输入修改后的学生成绩:");
scanf("%f", &stu[i].score);
printf("修改成功!\n");
return;
}
}
printf("找不到该学生!\n");
}
void statistics() {
float sum = 0;
for (int i = 0; i < len; i++) {
sum += stu[i].score;
}
printf("学生人数:%d 平均成绩:%.2f\n", len, sum / len);
}
void menu() {
printf("\n");
printf("**********学生成绩管理系统**********\n");
printf("* *\n");
printf("* 1. 录入成绩 *\n");
printf("* 2. 查询成绩 *\n");
printf("* 3. 修改成绩 *\n");
printf("* 4. 统计成绩 *\n");
printf("* 5. 退出系统 *\n");
printf("* *\n");
printf("************************************\n");
printf("\n");
printf("请输入数字选择功能:");
}
void save() {
FILE *fp;
fp = fopen("score.txt", "w");
for (int i = 0; i < len; i++) {
fprintf(fp, "%s %d %.2f\n", stu[i].name, stu[i].num, stu[i].score);
}
fclose(fp);
printf("数据已保存到文件!\n");
}
void load() {
FILE *fp;
fp = fopen("score.txt", "r");
while (fscanf(fp, "%s %d %f\n", stu[len].name, &stu[len].num, &stu[len].score) != EOF) {
len++;
}
fclose(fp);
printf("数据已从文件中读取!\n");
}
int main() {
int choice;
load();
while (1) {
menu();
scanf("%d", &choice);
switch (choice) {
case 1:
input();
break;
case 2:
search();
break;
case 3:
modify();
break;
case 4:
statistics();
break;
case 5:
save();
printf("谢谢使用!\n");
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
阅读全文