/*用结构体做成绩单*/
#include <stdio.h>
#include <math.h>
#include <string.h>
#define N 62
#define M 4
#define xuefen_score1 4
#define xuefen_score2 4
#define xuefen_score3 3
#define xuefen_score4 3.5
struct school_report_card1 //定义要读取的文件数据的结构体
{
int num;
float student_num;
char name[16];
float student_score1;
float student_score2;
float student_score3;
float student_score4;
}stu[62]; //读入的文件数据写入的结构体名字及长度
struct school_report_card2
{
int num;
float aver_stu;
float aver_cour;
float jiaquan_stu;
float jiaquan_cour;
}report[62];
main()
{
void aver_stu(void);
void aver_cour(void);
void jiaquan_stu(void);
void jiaquan_cour(void);
void sor();
void search();
FILE *fp1; //是读取文件数据,并把读取的内容输出屏幕
int i,j;
if((fp1=fopen("成绩单1.txt","r"))==NULL)
{
printf("Can not open the file.");
return(0);
}
printf("\n 序号 学号 姓名 结构力学 钢筋混泥土 土力学 建筑施工 \n");
for(i=0;fread(&stu[i],sizeof(struct school_report_card1),1,fp1)!=0;i++)
{ printf("\n%4s%16s%24c%10f%10%10f%10f%",stu[i].num,stu[i].student_num,stu[i].name,stu[i].student_score1,stu[i].student_score2,stu[i].student_score3,stu[i].student_score4);
}
printf("\n\n************************************************");
aver_stu(); //调用计算学生平均分函数
aver_cour(); //调用计算科目平均分函数
jiaquan_stu(); //调用计算学生加权分函数
jiaquan_cour(); //调用计算班级加权分函数
printf("\n 序号 学号 姓名 课程平均分 课程加权分 \n");
for(i=0,j=0;fread(&report[i],sizeof(struct school_report_card2),1,fp1)!=0,fread(&stu[i],sizeof(struct school_report_card1),1,fp1)!=0;i++,j++)
{
printf("\n%4s%16s%24c%10f%10%",stu[i].num,stu[i].student_num,stu[i].name,report[j].aver_stu,report[j].jiaquan_stu);
}
printf("\n 班平均分 班加权分 \n");
for(i=0;fread(&report[i],sizeof(struct school_report_card2),1,fp1)!=0;i++)
{
printf("\n%10f%10f",report[i].aver_cour,report[i].jiaquan_cour);
}
sor(); //调用排序函数
#include <stdio.h>
#include <math.h>
#include <string.h>
#define N 62
#define M 4
#define xuefen_score1 4
#define xuefen_score2 4
#define xuefen_score3 3
#define xuefen_score4 3.5
struct school_report_card1 //定义要读取的文件数据的结构体
{
int num;
float student_num;
char name[16];
float student_score1;
float student_score2;
float student_score3;
float student_score4;
}stu[62]; //读入的文件数据写入的结构体名字及长度
struct school_report_card2
{
int num;
float aver_stu;
float aver_cour;
float jiaquan_stu;
float jiaquan_cour;
}report[62];
main()
{
void aver_stu(void);
void aver_cour(void);
void jiaquan_stu(void);
void jiaquan_cour(void);
void sor();
void search();
FILE *fp1; //是读取文件数据,并把读取的内容输出屏幕
int i,j;
if((fp1=fopen("成绩单1.txt","r"))==NULL)
{
printf("Can not open the file.");
return(0);
}
printf("\n 序号 学号 姓名 结构力学 钢筋混泥土 土力学 建筑施工 \n");
for(i=0;fread(&stu[i],sizeof(struct school_report_card1),1,fp1)!=0;i++)
{ printf("\n%4s%16s%24c%10f%10%10f%10f%",stu[i].num,stu[i].student_num,stu[i].name,stu[i].student_score1,stu[i].student_score2,stu[i].student_score3,stu[i].student_score4);
}
printf("\n\n************************************************");
aver_stu(); //调用计算学生平均分函数
aver_cour(); //调用计算科目平均分函数
jiaquan_stu(); //调用计算学生加权分函数
jiaquan_cour(); //调用计算班级加权分函数
printf("\n 序号 学号 姓名 课程平均分 课程加权分 \n");
for(i=0,j=0;fread(&report[i],sizeof(struct school_report_card2),1,fp1)!=0,fread(&stu[i],sizeof(struct school_report_card1),1,fp1)!=0;i++,j++)
{
printf("\n%4s%16s%24c%10f%10%",stu[i].num,stu[i].student_num,stu[i].name,report[j].aver_stu,report[j].jiaquan_stu);
}
printf("\n 班平均分 班加权分 \n");
for(i=0;fread(&report[i],sizeof(struct school_report_card2),1,fp1)!=0;i++)
{
printf("\n%10f%10f",report[i].aver_cour,report[i].jiaquan_cour);
}
sor(); //调用排序函数