C++大作业报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2011-2012学年第2学期《学生成绩管理系统》实验报告(C语言)班级:工程技术5班姓名:华燕学号:116040245教师:钱江波日期:2012年5月23日宁波大学·信息科学与工程学院2011-2012学年第2学期一、题目要求完成综合实验“学生成绩管理系统”,有以下几个要求:1、从文件读取学生信息和5门课程成绩;2、统计每个学生的平均成绩;3、按平均成绩将学生排序,并写入文件;4、要求使用结构体和函数。2、时间:2012.05.08—2012.05.253、考核方式:(1)提交综合实验报告;(2)检查运行结果。二、解题思路(写出整体设计,采用哪些函数,写清楚各个函数的输入、输出和功能)(1)建立一个结构数组处理多个学生信息,用来储存学生的信息及5门课程成绩(2)从文件中读取信息,用到文件的打开与关闭,从一个文件复制到另一个文件,要用到strcpy函数。Strcpy:char*strcpy(char*s,char*t)将字符串t复制到s中(3)自定义2个函数。一是求学生平均成绩的函数add(),思路是将每个学生的5门成绩加起来储存后,分配一个空间存平均值;二是按平均成绩高低排列的函数sort(),思路是先将s数组中的信息复制到a数组中,然后按平均分排序,最后按排好的顺序将a数组中的数据复制到s数组中。三、关键代码及注释#includestdio.h#includestdlib.h#includestring.h#definen20typedefstruct{charid[5];charname[20];intscore[5];doubleave;}STU;STUst[n];/*定义结构数组,存放学生信息*/voidadd(STU*s);voidsort(STU*s);voidadd(STU*s){inti,j;doubleq;for(i=0;in;i++){2011-2012学年第2学期q=0;for(j=0;j5;j++)q=q+s[i].score[j];s[i].ave=q/5.0;}}voidsort(STU*s){STUa;inti,j,k,maxloc;for(i=0;in-1;i++){maxloc=i;for(j=i;jn;j++)if(s[j].aves[maxloc].ave)maxloc=j;if(maxloc!=i)/*利用新命名的a结构数组实现最大值与各平均分的逐个比较并交换*/{{strcpy(a.id,s[i].id);/*将数组s的内容复制到数组a中*/strcpy(a.name,s[i].name);a.ave=s[i].ave;for(k=0;k5;k++)a.score[k]=s[i].score[k];}{strcpy(s[i].id,s[maxloc].id);strcpy(s[i].name,s[maxloc].name);s[i].ave=s[maxloc].ave;for(k=0;k5;k++)s[i].score[k]=s[maxloc].score[k];}{strcpy(s[maxloc].id,a.id);strcpy(s[maxloc].name,a.name);s[maxloc].ave=a.ave;for(k=0;k5;k++)s[maxloc].score[k]=a.score[k];}}}}intmain()2011-2012学年第2学期{FILE*fp;inti,j;if((fp=fopen(D:\\test.txt,r))==NULL)/*以只读方式打开文件,若不存在,则返回NULL*/{printf(cannotopenthisfile!\n);exit(0);}for(i=0;in;i++)/*从test.txt文件中读取学生信息存入结构体中*/{fscanf(fp,%s%s,st[i].id,st[i].name);for(j=0;j5;j++)fscanf(fp,%d,&st[i].score[j]);}add(st);/*计算平均分*/fclose(fp);sort(st);/*按平均成绩排序*/if((fp=fopen(D:\\test1.txt,w))==NULL)/*以只写方式打开另一个文本文件*/{printf(cannotopenthisfile!\n);exit(0);}for(i=0;in;i++)/*将求得平均分以后的学生信息写入text1.txt文件*/{fprintf(fp,%s%s,st[i].id,st[i].name);for(j=0;j5;j++)fprintf(fp,.1f\n,st[i].ave);}return0;}四、运行界面2011-2012学年第2学期2011-2012学年第2学期五、心得体会很头疼!做完这个大作业以后我真的有种冲动,希望不要再与C++有任何瓜葛了。有这种想法也是因为我没有将课堂上的知识内化为自己的东西,对函数、结构体、链表这些本学期学的内容没有很好的巩固。由于不懂、不明白,所以在做这次综合性的大作业时才会理不清头绪。最后在同学的帮助下,完成了这份作业。站在另一个方面来看这个程序,它其实由3部分构成:1个主函数,2个自定义函数。条理很清楚,方向很明确。可为什么在一开始的时候我会对其束手无策呢?除了基础知识没有牢固掌握,我还缺乏一种自主创新的意识,不敢自己去做。总而言之,我会吸取教训,日后在C语言这门课上,多花工夫。C语言中内涵的逻辑性非常强,真正吃透它的内在精髓后,我相信我会享受其中的乐趣的。我要向那些学长学姐一样,以“刷OJ”为乐趣!

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功