《C程序设计》综合性实验实验报告题目:学生成绩管理姓名:班级:学号:指导教师:完成时间:2012.06.22一、实验题目学生成绩管理二、实验目的1.掌握一维数组、二维数组的使用方法。2.掌握结构体数组的定义和使用。3.综合应用数据文件的读写语句保存结构体数组中的数据。三、实验要求有4个学生,每个学生有3门课的成绩,从键盘上输入以上数据,计算每个学生的平均分,并把这些信息(包括学号、姓名、班级、3门课的成绩及平均分)保存到一个文件(score.txt)中,并显示在屏幕上。具体要求:定义结构体类型(student_type),其中包括学号(num[11])、姓名(name[8])、班级(class[20])、3门课成绩(score[3])和平均成绩(ave)。利用该结构体类型定义数组stud[4]。在主函数中输入学生学号、姓名、班级、3门课的成绩,并计算出平均成绩,然后调用save()函数将学生数据保存在score.txt文件中,调用display()函数读取score.txt文件,并将其中的内容显示在屏幕上。定义保存文件函数save()和显示文件函数display()。四.程序流程图开始定义变量int输出Pleaseenterdataofstudent:定义for循环语句输入学生的姓名、学号、班级、三门课的分数求出学生的平均分ave输出学生的姓名、学号、班级、三门课的分数和平均分调用save函数和display函数结束定义save函数和display函数定义student_type,五.程序代码#includestdio.hstructstudent_type{charnum[11];charname[8];charclassname[20];floatscore[3];floatave;}stud[4];voidsave(){FILE*fp;inti;if((fp=fopen(score.txt,wb))==NULL){printf(cantnotopenfile\n);return;}for(i=0;i4;i++){if(fwrite(&stud[i],sizeof(structstudent_type),1,fp)!=1)printf(filewriteerror\n);}fclose(fp);}voiddisplay(){FILE*fp;inti;if((fp=fopen(score.txt,rb))==NULL){printf(cantnotopenfile\n);return;}printf(\n------------成绩---------------);for(i=0;i4;i++){structstudent_typestud;fread(&stud,sizeof(structstudent_type),1,fp);printf(\n%6s\t%6s\t%6s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n,stud.name,stud.num,stud.classname,stud.score[0],stud.score[1],stud.score[2],stud.ave);}fclose(fp);}intmain(){inti;for(i=0;i4;i++){printf(\n--输入成绩[%i/4]--\n,i+1);printf(输入学号:);scanf(%s,stud[i].num);printf(输入姓名:);scanf(%s,stud[i].name);printf(输入班级:);scanf(%s,stud[i].classname);printf(输入成绩1:);scanf(%f,&stud[i].score[0]);printf(输入成绩2:);scanf(%f,&stud[i].score[1]);printf(输入成绩3:);scanf(%f,&stud[i].score[2]);stud[i].ave=(stud[i].score[0]+stud[i].score[1]+stud[i].score[2])/3.0;}printf(\n正在保存...);save();printf(ok);display();return0;}六.实验结果七.实验心得这次综合性课程学习成绩管理实验设计,我对循环控制有了深一层的认识,对while,do-while,for循环明白的更多,从而更让我了解到我知识的匮乏与不足,和对C语言基础知识掌握的欠缺,更明确到循环语句学习的必要性。另位我了解到学习这门课程的兴趣所在还有实验的优越新,程序运行图的清晰使我懂得结构空间与函数的密切结合。因此在以后的学习中我必须更加努力去了解函数,了解程序,更要去设计程序,做到学以致用,将书面与实际结合的淋漓尽致。