使用c语言,用到typedef,设计一个简单的学生成绩管理系统。设有学生成绩文件student.txt,每位学生成绩信息包含学号(num)、姓名(name)、性别(sex)、出生日期(birthday,包括年、月、日,分别表示为year,month,day)、3门功课的成绩(高数、C语言、大学物理)、总分和平均分。设计程序,要求从文件student.txt中读出学生成绩表,之后参对成绩表进行如下操作 添加。可添加一条或多条记录。
时间: 2023-07-10 14:19:59 浏览: 97
好的,以下是使用 typedef 和文件操作设计的学生成绩管理系统。首先定义了一个结构体类型 `Student`,表示学生信息,其中包括学号、姓名、性别、出生日期、3门功课的成绩、总分和平均分。然后定义了一个函数 `addStudent`,用于添加一条或多条记录。该函数会从控制台读入学生信息,并将其写入文件 `student.txt` 中。
```c
#include <stdio.h>
// 定义学生信息结构体类型
typedef struct {
int num; // 学号
char name[20]; // 姓名
char sex[10]; // 性别
int year; // 出生年份
int month; // 出生月份
int day; // 出生日份
int score[3]; // 3门功课的成绩
int totalScore; // 总分
float avgScore; // 平均分
} Student;
// 添加一条或多条学生信息记录
void addStudent() {
FILE* fp = fopen("student.txt", "a"); // 打开文件,以追加方式写入数据
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
int num, year, month, day, score[3];
char name[20], sex[10];
while (1) {
// 读入学生信息
printf("请输入学生信息(学号 姓名 性别 出生年月日 高数成绩 C语言成绩 大学物理成绩):\n");
scanf("%d%s%s%d%d%d%d%d%d", &num, name, sex, &year, &month, &day, &score[0], &score[1], &score[2]);
// 计算总分和平均分
int totalScore = 0;
for (int i = 0; i < 3; i++) {
totalScore += score[i];
}
float avgScore = (float)totalScore / 3;
// 将学生信息写入文件
fprintf(fp, "%d %s %s %d %d %d %d %d %d %d %f\n", num, name, sex, year, month, day, score[0], score[1], score[2], totalScore, avgScore);
// 询问是否继续添加
printf("是否继续添加(输入1继续,其他键退出):");
int choice;
scanf("%d", &choice);
if (choice != 1) {
break;
}
}
fclose(fp); // 关闭文件
printf("学生信息添加成功!\n");
}
int main() {
addStudent();
return 0;
}
```
注意,以上代码只实现了添加记录的功能。如果需要实现其他操作,例如查询、修改、删除记录等,需要再进行相应的编写。
阅读全文