C语言课程设计实习报告范本_第1页
C语言课程设计实习报告范本_第2页
C语言课程设计实习报告范本_第3页
C语言课程设计实习报告范本_第4页
C语言课程设计实习报告范本_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言课程设计实习报告学生姓名: 萱冰伊寒 学 号: 22 日 期: 2011年3月3日 目 录一、程序分析与设计1二、流程图1三、源程序清单4四、调试过程10五、程序有待改进的地方10六、本次实习的收获和建议11附录11一、程序分析与设计1、使用分模块处理的函数形式,主调函数包括九个分函数,分别是:void read(); /读文本 void write();/写文本 void average();/求每个学生平均分 void rank();/排名次 void courseaver();/求各科平均分 void nopass();/求不及格学生名单 void excellent();/求优等

2、生名单 void fenshuduan();/求各分数段人数 void menu();/菜单 2、调用主函数,首先进入菜单,选择需要显示的内容。3、用记事本编辑文件1.dat存储一个班学习成绩。然后在C环境下,建立一个学生信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。4、利用循环使每个学生的三门功课的成绩相加,然后再把和除以三就得到了平均成绩。接着用冒泡法利用平均分的高低排出名次。最后用fprintf将每个学生的信息写入到2.dat文件。5、利用循环将各个科目的所有分数相加后除以人数求出各科的平均分。6、利用循环和if判断语句以10分为一个分数段

3、(60分以下统一记为一个分数段),求出各个分数段的人数。7、利用循环和if判断语句将各个科目小于60分的学生信息输出。8、利用循环和if条件语句,添加一些限制条件:1) 平均成绩大于90分;或平均分大于85分且至少有一门功课为100分;或者平均分大于85分且至少两门课程成绩为95分以上;2) 名次在前三名3) 每门功课及格以上;作为优等生的最低要求,将优等生的名单输出。9、结束程序。二、流程图(1)主程序(2)菜单 (4)读文本(3)求各学生平均分 (5)写文本 (6)求名次 (7)求各科平均分 (8)求各科分数段(9)求不及格学生及优等生三、源程序清单#include #include #d

4、efine N 20struct student int num; char name20;int score3; double aver;int mc;stuN;int E5,math5,wu5; float mathaver;float wuaver;float eaver;void read(); /读文本 void write();/写文本 void average();/求每名同学的平均分 void rank();/排名次 void courseaver();/求各科平均分 void nopass();/求不及格学生名单 void excellent();/求优等生名单 void f

5、enshuduan();/求各分数段人数 void menu();/菜单 void main() int i; menu();read();average(); rank();courseaver();for(;1;) scanf(%d,&i); switch(i) case 1:write();menu();break; case 2:fenshuduan();menu();break; case 3:nopass();menu();break; case 4:excellent();menu();break; case 0:exit(0);break; default:printf(无效n

6、);break; void menu()printf(-欢迎进入学生成绩管理程序-n);printf(nnn);printf(*n);printf(输入1 输出 学生成绩条 n);printf(输入2 输出 各科分数段及各科的平均成绩 n);printf(输入3 输出 不及格学生信息 n);printf(输入4 输出 优等生名单 n);printf(输入0 退出 n);printf(*n);void average() int i;for(i=0;iN;i+) stui.aver=(stui.score0+stui.score1+stui.score2)/3.0;void read() FIL

7、E *fp;int i;if(NULL=(fp=fopen(c:/1.txt,r) printf(cannot open the file); exit(0);for(i=0;iN;i+) fscanf(fp,%d%s%d%d%d,&stui.num,,&stui.score0,&stui.score1,&stui.score2);fclose(fp);void write() int i;printf(序号t姓名t英语t数学t物理t平均分t名次n); for(i=0;iN;i+) printf(%dt%st%dt%dt%dt%5.2ft%dn,stui.num,stui.n

8、ame,stui.score0,stui.score1,stui.score2,stui.aver,stui.mc); void rank() int i,j;for(i=0;iN;i+) stui.mc=1;for(j=0;jN;j+) if(stui.averstuj.aver) stui.mc+; if(stui+1.mc=stui.mc) stui+2.mc+; void courseaver() int i;eaver=0;mathaver=0;wuaver=0;for(i=0;iN;i+) eaver=(eaver+stui.score0); mathaver=(mathaver+

9、stui.score1); wuaver=(wuaver+stui.score2);eaver=eaver/N;mathaver=mathaver/N;wuaver=wuaver/N;void fenshuduan() int i;for(i=0;i=90)E4+; else if(stui.score0=80)E3+;else if(stui.score0=70)E2+;else if(stui.score0=60)E1+;else E0+;for(i=0;i=90)math4+;else if(stui.score1=80)math3+;else if(stui.score1=70)mat

10、h2+;else if(stui.score1=60)math1+;else math0+;for(i=0;i=90)wu4+;else if(stui.score2=80)wu3+;else if(stui.score2=70)wu2+;else if(stui.score2=60)wu1+;else wu0+;printf(n分数段tt英语tt数学tt物理n); printf(60tt%dtt%dtt%dn,E0,math0,wu0);printf(6069tt%dtt%dtt%dn,E1,math1,wu1);printf(7079tt%dtt%dtt%dn,E2,math2,wu2);

11、printf(8089tt%dtt%dtt%dn,E3,math3,wu3);printf(90100tt%dtt%dtt%dn,E4,math4,wu4);printf(平均成绩t%5.2ftt%5.2ftt%5.2fn,eaver,mathaver,wuaver);FILE *fp;if(NULL=(fp=fopen(c:/2.txt,w) printf(cannot open the file); exit(0);fprintf(fp,序号t姓名t英语t数学t物理t平均分t名次n);for(i=0;iN;i+) fprintf(fp,%dt%st%dt%dt%dt%5.2ft%dn,st

12、ui.num,,stui.score0,stui.score1,stui.score2,stui.aver,stui.mc);fprintf(fp,n); fprintf(fp,分数段tt英语tt数学tt物理n); fprintf(fp,60tt%dtt%dtt%dn,E0,math0,wu0);fprintf(fp,6069tt%dtt%dtt%dn,E1,math1,wu1);fprintf(fp,7079tt%dtt%dtt%dn,E2,math2,wu2);fprintf(fp,8089tt%dtt%dtt%dn,E3,math3,wu3);fprintf(fp,90

13、100tt%dtt%dtt%dn,E4,math4,wu4);fprintf(fp,平均成绩t%5.2ftt%5.2ftt%5.2fn,eaver,mathaver,wuaver);fclose(fp);void nopass()FILE *fp;int i;if(fp=fopen(c:/1.txt,r)=NULL) printf(cannot open the filen); exit(0); for(i=0;iN;i+) if(stui.score060) printf(%dt%st%d英语n,stui.num,,stui.score0); if(stui.score16

14、0) printf(%dt%st%d数学n,stui.num,,stui.score1); if(stui.score260) printf(%dt%st%d物理n,stui.num,,stui.score2);void excellent() int i;printf(nn优等生名单n);printf(学号t姓名t英语t数学t物理t平均成绩t名次n);for(i=0;i90|(stui.aver85&(stui.score0=100)|(stui.score1=100)|(stui.score2=100)|(stui.aver85&(stui.score0

15、&stui.score195)|(stui.score1&stui.score295)|(stui.score0&stui.score295) ) if(stui.mc60)&(stui.score160)&(stui.score260) printf(%dt%st%dt%dt%dt%5.2ftt%dn,stui.num,,stui.score0,stui.score1,stui.score2,stui.aver,stui.mc); 四、调试过程调试过程可以说是一波三折,首先要说的是关于文件的打开和写入,这两点作为这个程序的最基础,是非常重要的,由于之前并没有过多的接触,有些

16、生疏,有时不注重一些细节地方经常会出现错误。然后是在函数间的调用有时候十分的混乱,这个地方忘写了,那个地方放错了的情况经常出现。所以说关于函数调用,主函数等之间的关系有点生疏。关于指针,结构体指针方面的问题,这是一个重点中也是一个难点,在调试过程中系统总是提示定义方面的错误,这个地方我认为是基础学习的不牢固导致的。在调试过程中,关于分数的类型没有足够的认识,导致开始运行时出现错误,后将文本中的分数小数点去掉后才运行正常。通过老师的讲解,调试过程是一个基础编程者必须要掌握的内容。经过这两周的反复练习,现在已经能够基本掌握了。五、程序有待改进的地方1程序有待改进的的地方还有许多,比如说这次的程序用

17、的都是一些比较简单的语句。没有太多复杂的东西,可以说是优点也可以说是缺点。优点是让人容易看懂,缺点是内容不严密。2我认为还有许多地方的语句都是重复的,可以对他们进行统一,但是这一点没有想出来。3还有许都地方的字符串也是重复的,这一点可以于主函数中对其进行定义,进而少上许多的多余字。这一点可以改进。六、本次实习的收获和建议通过这两周的C语言课程设计实习,在指导老师的讲解和帮助下,我初步理解了整个程序的编写、执行过程,经过自身的体验,明白了许多在C语言编程中经常出现的错误的解决方式,这次实习很好的将我们课堂上学习到的知识与实践相结合,提高了我对C语言相关知识的认识水平,在课设中,经常会出现这样或那

18、样的问题导致程序无法继续执行,这时就需要我们用平和的心态来寻找问题、解决问题,积累经验,进而完善程序。俗话说熟能生巧,相信在更多的练习之后我会更加熟练的掌握C语言,编写出更好的程序。十分感谢王庆老师对我们的帮助和指导。这次实习是一次“知行结合”的好机会,希望以后能够有更多这样的机会。附录1、原始数据1.dat1 陈龙 75 75 46 2 陈志明 85 95 853 程晨 75 75 864 郭伟 80 95 85 5 郭小锋 90 75 88 6 何军 85 85 867 李建奎 85 85 74 8 梁杰 70 85 86 9 梁宇超 85 95 90 10 梁智荣 85 65 8511 刘辉 80 75 86 12 刘宇 90 75 84 13 楼俊婕 80 45 77 14 宁鹤飞 80 65 78 15 李华娟 80 75 85 15 彭伟杰 60 65 7616 彭伟强 75 75 75 17 石岩松 75 85 85 18 孙冰冰 60 65 10 19 田筱 75 85 87 2、生成文件2.dat 序号姓名英语数学物理平均分名次1陈龙75754665.33192陈志明85958588.3323程晨75758678.67134郭伟80958586.6735郭小锋90758884.3356何军85858685.3347李建奎8585748

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论