使用c语言,用到typedef,设计一个简单的学生成绩管理系统。设有学生成绩文件student.txt,每位学生成绩信息包含学号(num)、姓名(name)、性别(sex)、出生日期(birthday,包括年、月、日,分别表示为year,month,day)、3门功课的成绩(高数、C语言、大学物理)、总分和平均分。设计程序,要求从文件student.txt中读出学生成绩表,之后参对成绩表进行如下操作 (9)显示。即输出出所有成绩。
时间: 2023-07-10 12:23:21 浏览: 80
今天给大家分享一个C语言环境下开发的学生成绩管理系统 这个系统原理很简单:成绩的录入,输出,修改,排序,删除等等
好的,根据您的要求,以下是使用typedef设计的一个简单学生成绩管理系统的C语言代码:
```c
#include <stdio.h>
typedef struct{
char num[20]; // 学号
char name[20]; // 姓名
char sex[10]; // 性别
int year; // 出生年份
int month; // 出生月份
int day; // 出生日
int score[3]; // 3门功课成绩
int total; // 总分
float avg; // 平均分
} Student;
void display(Student stu[], int n);
int main(){
FILE *fp;
Student stu[50];
int i, n = 0;
// 从文件中读取学生成绩表
fp = fopen("student.txt", "r");
if(fp == NULL){
printf("无法打开文件!\n");
return 0;
}
while(fscanf(fp, "%s %s %s %d-%d-%d %d %d %d", stu[n].num, stu[n].name, stu[n].sex, &stu[n].year, &stu[n].month, &stu[n].day, &stu[n].score[0], &stu[n].score[1], &stu[n].score[2]) != EOF){
// 计算总分和平均分
stu[n].total = stu[n].score[0] + stu[n].score[1] + stu[n].score[2];
stu[n].avg = stu[n].total / 3.0;
n++;
}
fclose(fp);
// 显示所有成绩
display(stu, n);
return 0;
}
// 显示所有成绩
void display(Student stu[], int n){
int i, j;
printf("学号\t姓名\t性别\t出生日期\t高数\tC语言\t大学物理\t总分\t平均分\n");
for(i = 0; i < n; i++){
printf("%s\t%s\t%s\t%d-%02d-%02d\t", stu[i].num, stu[i].name, stu[i].sex, stu[i].year, stu[i].month, stu[i].day);
for(j = 0; j < 3; j++){
printf("%d\t", stu[i].score[j]);
}
printf("%d\t%.2f\n", stu[i].total, stu[i].avg);
}
}
```
该程序定义了一个名为Student的结构体类型,用于存储学生成绩信息。在主函数中,程序从文件中读取学生成绩表,并计算每位学生的总分和平均分。最后,程序调用display函数来显示所有学生成绩。
其中,display函数参数包含一个Student类型的数组和一个整数n,用于表示学生人数。该函数通过循环遍历数组,逐个输出每位学生的成绩信息。
阅读全文