ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:249.08KB ,
资源ID:3385287      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3385287.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计实验报告4297210.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计实验报告4297210.docx

1、C语言课程设计实验报告4297210(此文档为word格式,下载后您可任意编辑修改!)C语言课程设计课程设计报告专 业: 网络工程 班 级: 网络10601 姓 名: 缪 军 指导教师: 汪北阳 余法红 二00八年元月十五日目 录系统摘要 3系统设计 4系统实现 7系统使用说明 11测试数据 15结论 18附录 19(一) 系统摘要1. 功能要求在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,并根据以上内容计算每个学生5门课的加权平均分(保留1位小数,4舍5入),并按平均分排列名次,平均分相同则名次并列。然后显示菜单,利用菜单调用每个函数,完成如下功能:1) 用C语言创建一个数

2、据文件,文件名为:“MC0116”。用来存放班级排名后的成绩,要求按以下形式存放。名次学号姓名英语C语言离散数学线形代数大学物理密码学平均成绩101缪军96959493959594.7302陈军90849178926885.11603曹军69908186826479.1904胡均92878958927183.31805武军57768192837677.11406陶均84699472778380.7807喻均91917774669181.41108周均93827875649380.41909吴军94767574845977.8610张俊82948484876783.71011王俊86927982

3、896182.32212李军74729294546475.4513赵俊76789393798283.61514郑君93738185747380.02015钱均67818267767975.82416欧均81847561598474.21317汤俊87897987677280.2418廖均79879289629483.52119扬峻77648451948176.3220孙俊83948194828686.12321冯均86586491846774.22522周君93766257896273.9723曾俊92736382929181.01224董均59948484917281.01725高军9182

4、5984668476.32) 分别统计全班每门课的平均分和标准差,并计算个分数段的学生人数;课程标准差的计算公式为:Y= s2=1n(x1-m)2+(x2-m)2+.+(xn-m)23) 用C语言创建一个数据文件,文件名为:“KC0116”。将文件中存放的数据以如下形式存放编号课程名称平均分标准差优秀良好中等及格不及格1英语82.921.81074222C语言81.620.0787213离散数学80.620.3696314线性代数79.525.1695235大学物理79.224.3684526密码学76.822.5566714) 打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件

5、名为:“cj0116”。成绩条格式自定。5) 屏幕上显示所有存在不及格的课程的学生的名单(含学号、不及格的课程名称、课程的学分及成绩)。6) 屏幕上显示优等生名单(含学号、6门课程成绩、平均分、名次)。(二)系统设计准备工作:编写两个记事本文件作为原始数据源。本程序中建立两个文件,第一个中的内容是全班同学的5功课的成绩(英语,C语言,数学,大学物理,线性代数),保 存在D盘下,其完整的路径名为D: wl0116.txt.第二个中的内容是所有的五门功课的属性(编号,名称,学分),同样保 存在D盘下内,起完整的路径名为D: wl01kc.txt.1.系统功能模块框架图2. 菜单结构图。3. 数据结

6、构说明* 学生结构体 *struct studentlong num; * 学号 *char name20; * 姓名 *int scoreN; * 各科分数构成的一维数组 *double ave; * 每名学生所有科目的加权平均分 *int t; * 名次 *stM;struct subjectint num; * 课程编号 *int excellent; * 成绩优秀 *int good; * 成绩良好 *int mid; * 成绩中等 *int pass; * 成绩及格 *int fail; * 不及格 *char kc30; * 课程名称 *float xuefen; * 课程学分 *

7、double ave; * 课程平均分 *double bzc; * 课程标准差 *courseN;整个系统的设计,可以将所有数据划分到两个结构体中,一个与学生有关,一个与课程有关。数据的引入,可以从两个文件中读入,一个是学生成绩表,一个是课程与学分相关。然后,将数据进行(1)加权平均;(2)标准差处理,排出每个学生在班级的名次。最后,写出文件。(三)系统实现(一).部分函数的实现过程:1.读入数据函数eadDat1()和eadDat() 用函数打开目标文件,通过文件指针指向目标文件,然后调用库函数(fscanf,fgets)将数据读入到定义的结构体当中。第一步用fgets函数将文件中的的 第

8、一行的字符串读入到数组中,然后用一个for循环控制每个人的变化,将各种数据按照不同的类型规格赋值给结构体。2.求平均分和标准差:求五门功课的平均分,用一个for循环控制着科目的变化,然后在内部再一个for循环控制人的变化将全班的人的某门功课的成绩累加起来,再除以总人数即得平均分,类似的即可求的各门课的标准差。求每个人的加权平均成绩: 首先用for循环得到五门课程的学分的总和,然后再通过for循环控制每个人的不断变化,把每个人的每门成绩乘以各门课的学分,将其累加起来,再除以学分的和即得各个人的加权平均成绩排名次:首先用for循环控制各个人的变化,每一次将其名次赋值为,然后将其平均成绩通过for循

9、环于其他人进行比较,若小就将其自加,最终即可得名次。统计各分数段的人数:首先通过两个for循环检查每个人的每门课程,再通过switch语句判断起属于的类型。C语言创建全班同学成绩单的数据文件和全班成绩分析:首先通过函数建立一个新的文件,for循环控制将分数输出到指定的文件中 (二)程序调试过程中的要点和难点:在程序调试过程中,经常出现警告,这是因为数据类型不一致导致而成的。由于不小心输入法的改变,容易造成一些不易发现的问题,比如在英文输入中的引号与在中文输入中的引号就是又区别的,应该保持在英文输入的环境中编辑此程序。难点是,各个函数运行,要注意先后顺序。因为一个函数的运行,需要上一个函数运行的

10、结果为数据。另外,还注意主函数的编写,是各个函数相互联系在一起。 (四) 系统使用说明源代码编写完成后,可以存放在记事本中,保存起来。然后,选择打开方式为TC环境,打开运行程序。在打开的界面上会显示如下菜单界面:A在光标处输入:2 在屏幕上显示未及格学生名单;B在光标处输入:3 在屏幕上显示优等生名单;C在光标处输入:4 显示成绩分布(一个“”代表一个人);D在光标处输入:5 查询成绩 a在光标处输入:1 安学号查寻 b在光标处输入:2 按姓名查寻 E在光标处输入:0 退出界面;F在光标处输入:1 进入子菜单选项在光标处输入:1 创建班级名次文档到D盘;在光标处输入:2 创建课程成绩文档到D盘

11、;在光标处输入:3 在屏幕上显示每个学生的成绩条;在光标处输入:5 返回主菜单;在光标处输入:0 退出编辑界面;(五)测试数据1. 两个原始数据 (1)学生成绩表名次学号姓名英语C语言离散数学线形代数大学物理密码学平均成绩101缪军96959493959594.7302陈军90849178926885.11603曹军69908186826479.1904胡均92878958927183.31805武军57768192837677.11406陶均84699472778380.7807喻均91917774669181.41108周均93827875649380.41909吴军94767574845

12、977.8610张俊82948484876783.71011王俊86927982896182.32212李军74729294546475.4513赵俊76789393798283.61514郑君93738185747380.02015钱均67818267767975.82416欧均81847561598474.21317汤俊87897987677280.2418廖均79879289629483.52119扬峻77648451948176.3220孙俊83948194828686.12321冯均86586491846774.22522周君93766257896273.9723曾俊92736382

13、929181.01224董均59948484917281.01725高军91825984668476.3(2) 课程与学分相关编号课程名称平均分标准差优秀良好中等及格不及格1英语82.921.81074222C语言81.620.0787213离散数学80.620.3696314线性代数79.525.1695235大学物理79.224.3684526密码学76.822.5566712. 测试结果 (1)学生名次表 (2)学生个人成绩单 (3) 不及格学生名单(4)优秀学生名单情况(六)结论1. 通过对这一课题的设计和实现,我对TC3.0环境进行了深一步的了解,并逐渐开始熟练tc3.0环境的工作界

14、面,以及对每一个快捷键的熟悉。并认识到,熟悉这些快捷键,极为便捷编写程序,但是还要更加熟悉。2. 编程时要养成良好的风格,注意相同内容的缩进和对齐。这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。3. 通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。4. 这个程序设计主要涉及到了C语言中的结构体、指针及文件操作等内容,只有充分掌握了C语言中的结构体、指针及文件操作等内容,才有可能组织好这些代码,使之符合运算逻辑,得到理

15、想的结果。5. 善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。对我们而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际操作必将成为我们人生旅途上一个非常美好的回忆!6. 回顾起此次课程设计,至今仍感

16、慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针通过这次课程设计之后

17、,我把前面所学过的知识又重新温故了一遍。同时,在汪老师和余老师的身上我学得到很多实用的知识,在此表示感谢!同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!(七)附录程序全部代码:#define M 25#define N 6#include stdio.;double ave;double bzc;courseN;* 读取wl0116.txt *void read1()int i,j;char str1100;FILE *fp;if(fp=fopen(d:wl0116.txt,r)=NULL)printf(Cannot open the file!n);exit(0);fgets(s

18、tr1,100,fp);for(i=0;iM;i+)fscanf(fp,%ld%s,&sti.num,sti.name);for(j=0;jN;j+)fscanf(fp,%d,&sti.scorej);fclose(fp);* 读取wl01kc.txt *void read2()FILE *fp=fopen(d:wl01kc.txt,r);int k;char str2100;if(fp=NULL)printf(Cannot open the file !n); exit(0);fgets(str2,100,fp);for(k=0;kN;k+)fscanf(fp,%d%s%f,&coursek

19、.num,coursek.kc,&coursek.xuefen);fclose(fp);void jaquan()double s=0,sum;int i,j;for(i=0;iN;i+)s=s+coursei.xuefen;for(i=0;iM;i+)sum=0; for(j=0;jN;j+) sum=sum+(sti.scorej)*(coursej.xuefen); sti.ave=(int)(sum*10.0s+0.5)10.0;void mingci() int i,j,t; for(i=0;iM;i+) t=1; for(j=0;jM;j+) if(sti.avestj.ave)

20、t+; sti.t=t;* 计算课程平均分和优劣分布 *void ave() double s; int i,j; for(j=0;jN;j+) s=0;coursej.excellent=0;coursej.good=0; coursej.mid=0;coursej.pass=0; coursej.fail=0; for(i=0;iM;i+) switch(sti.scorej10) case 10: case 9:coursej.excellent+;break; case 8:coursej.good+;break; case 7:coursej.mid+;break; case 6:c

21、oursej.pass+;break; default :coursej.fail+; s+=sti.scorej; coursej.ave=sM;void bzcha()int i,j; double s; for(j=0;jN;j+) s=0; for(i=0;iM;i+) s+=(sti.scorej-coursej.ave)*(sti.scorej-coursej.ave); coursej.bzc=sqrt(sN);* 创建班级成绩排名 *void writefile1()FILE *fp;int i,j;if(fp=fopen(d:mc0116.txt,w)=NULL)printf

22、(fail!n);exit(0);fprintf(fp,名次 学号 姓名 英语 C语言 离散 线性 物理 密码学 *平均成绩n);for(i=0;iM;i+)fprintf(fp,%3d%10ld%10s,sti.t,sti.num,sti.name);for(j=0;jN;j+)fprintf(fp,%6d,sti.scorej);fprintf(fp, .%4.1fn,sti.ave);fclose(fp);* 创建班级课程成绩分布 *writefile3() FILE *fp;int i;if(fp=fopen(d:kc0116.txt,w)=NULL)printf(Faile to b

23、uild the file!n); exit(0);fprintf(fp,编号 课程名称 平均分 标准差 优秀 良好 中等 及格 不及格n);for(i=0;iN;i+)fprintf(fp,%4d%10s%8.1f%8.1f%6d%6d%6d%4d%4dn,i+1,coursei.kc,coursei.ave,coursei.bzc, coursei.excellent,coursei.good,coursei.mid,coursei.pass,coursei.fail);fclose(fp);void writefile4() FILE *fp=fopen(d:cjt0116.txt,w)

24、; int i,j; if(fp=NULL)printf(Faile to build a new file !n);exit(0); for(i=0;iM;i+) fprintf(fp,n学号 姓名 英语 C语言 离散 线性 物理 密码学 *平均成绩n%8ld%8s,sti.num,sti.name);printf(n学号 姓名 英语 C语言 离散 线性 物理 密码学 *平均成绩n%8ld%8s,sti.num,sti.name);for(j=0;jN;j+)fprintf(fp,%6d,sti.scorej);printf(%6d,sti.scorej);fprintf(fp, .%4.1fn,sti.ave);printf( .%4.1fn,sti.ave);fprintf(fp,* *);printf(*n); fclose(fp); void read5() int i,j; printf(未及格学生信息:n学号 课程名称 学分 成绩n); for(i=0;iM;i+) for(j=0;jN;j+) if(sti.scorej60) printf(%8ld%8s%8.1f%6dn,sti.num,coursej.kc,coursej.xuefen,sti.scorej

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1