




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计2013年11月3日设计题目:学生成绩统计设计条件:掌握C语言的基本知识,能够熟练地应用顺序结构、选择结构、循环结构,能够善于应用结构体数组和对文件的输入输出。设计内容:【问题描述】学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。【实现提示】假设某班有:30人(姓名自定)考试课程有:高等数学、物理、外语、C语言、德育5门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面:输入成绩到文件中输出成绩输出不及格学生名单成绩排序修改记录删除记录插入记录等主函数中对3个功能选择(菜单),调用对应的函数完成。下达日期:2013年10月完成日期:2013年11月目录、前言 4\o"CurrentDocument"二、设计思想 4\o"CurrentDocument"三、设计过程 4\o"CurrentDocument"四、程序流程图 7\o"CurrentDocument"五、程序清单 8\o"CurrentDocument"六、总结 8\o"CurrentDocument"附录1.用户文档 10\o"CurrentDocument"附录2.技术文档 13\o"CurrentDocument"参考文献 13、前言本课程设计提供了一个既动手又动脑,自学,查资料,独立实践的机会。将课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。本课程设计——学生成绩统计,在日常的教学过程中具有较高的应用价值。当老师批改完一大批试卷后,需要统计成绩得出相应结果时,“学生成绩统计”就能够发挥其重要作用。设计这个程序,主要用到结构体数组和文件两个知识点,再结合顺序、循环、选择、函数 来实现功能。设计思想首先编译预处理,输入头文件;再之全局声明;对函数进行定义。再建立一个student结构体,把结构体里面的内容写入一个文件中。然后先把主函数main()写好,再把子函数完善好,最后测试、修改,直到达到最终功能和界面美观为止。设计过程1、根据设计要求做好分析,把主要框架设计罗列出来。考虑到此程序主要有3大方面的内容,所以主函数里分为3大模块,模块里面再根据要求执行相应的内容。2、根据主要的框架,确定没有问题后,编写主函数如下:#include<>#include<>#include<>#defineN3000intsystem(constchar*string);structstudent del入成绩到文件中\n");printf("2.输出成绩\n");printf("3.编辑\n");printf("你的选择(1-3):");do{scanf("%c",&choice);}while(choice=='\n');printf("\n");switch(choice)\n");scanf("%s",&zlq);system("CLS");}}if(zlq=='N'||zlq=='n'){printf("欢迎下次使用.\n");over=1;}if(zlq!='Y'&&zlq!='N'&&zlq!='y'&&zlq!='n'){printf("\n输入错误!将退出~\n");over=1;}}}输入1后,按enter,会出现如下主菜单:>■F人陈庭美言课程设计口[物理电子n陈庭£语言课程设计1口总融敏11物理电子1除…1_5欢迎进入:学生成绩统计制作者:3111008371陈腐L1物理电子(1)班*+*仁仁+*4*+*1*1斗功能选择*+++<******4*4=1=+=4=L输入成绩到文件中.输出成绩.编辑二****仁仁****仁**仁仁口***仁件♦***仁仁口****尔■的选择(1-3):3、确定好主函数后,再根据要求撰写执行“输入成绩到文件中”之后相对应的“返回主菜单”程序,检查是否会出现错误。4、待检查无错误之后,开始写下一步:“输出成绩”程序。输出程序里面又包含有4个子程序语句,分别为“排序”、“输出成绩”、“输出不及格名单”、“返回”,查找与之相对应的函数的资料,然后撰写相应程序。5、与第4步相似地进行撰写“编辑”程序下的“修改”、“删除”、“插入”、“返回”程序。6、运行程序,看是否出现错误,如有错误,根据相关提示修改错误,例如一些字符漏写或者函数类型错误等等。7、等修改完,再次运行,根据功能选择,输入相应数字,运行看看能否执行相应要求的功能。输入一些假设结果,验证程序设置的正确性。8、完善所有之后,就正式宣告课程设计结束,并撰写设计报告。四、 程序流程图输出菜单是否返回主菜单插入修
改删
除输出不及格名单输出成绩排
序根据菜单输入choice的值选择程序结束开始返
回返
回编辑输入输出五、程序清单各函数的功能和实现:1、输入某班的所有学生的成绩。输入信息包括:班级,姓名,高等数学、物理、外语、C语言、德育5门课程成绩并写入文件“stud”中;可用函数voidinput(structstudentstu口)来实现。2、输出模块:函数voidprint()里嵌套4个函数用于排序、输出成绩、输出不及格名单、返回;排序:函数voidlist(structstudentstu口)只是实现排序个功能,需要输出名单得需再次选择选项“2”。输出:输出学生的信息以及成绩 voidprint(structstudentstu口):通过输入班级来查看某个班的相关情况。输出平均分不及格的名单:用函数voidprinot(structstudentstu口)来实现输出所以平均分不及格的学生的班级及姓名。返回:返回到主界面。3、编辑模块:函数voidbian()中应用4个函数加于循环选择,可以进行选择修改、删除、插入、返回;修改:在函数voidchanges(structstudentstu口)里面输入需要修改的学生的班级、姓名以及成绩,就可以对某班某个学生的成绩进行修改。删除:用函数voiddel(structstudentstu口)实现。删除某班某个学生的成绩。插入:用函数voidser(structstudentstu口)实现。实现在某班中插入某些同学的相关信息。4、判断是否返回主菜单:用判断语言if。六、总结回顾起此次C语言课程设计,我感慨颇多,从拿到题目到完成整个编程、调试到撰写报告,从理论到实际,在将近一个月的时间里,我学到了很多知识,攻破了以前的一些知识盲点。在这之中,我不仅可以巩固了以前学习的知识,而且学习到了很多在书本上所没有学到过的知识,拓宽了知识面。通过此次课程设计,我懂得了理论和实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中,算是困难重重吧。在编写时,遇到不少问题,低级错误是主要的问题。特别在整合时,问题更多。比如因float误用作int而导致的错误,花费了我好长的时间。由其得到,错误或许就出在最根本处。由于本课题中的很多知识点都没有学过,要自己去翻看书里后面几章的内容去熟悉理解,并且通过查找课外的相关资料。小到一个术语,大到一个函数、一个逻辑关系,都需要在这过程中理解。开始设计出来的程序存在着很多错误,修改了很多次都没有出现可观的迹象,询问了周围的同学研究了之后才得到解决。设计出来的菜单也不是预想的那样,而是整个窗口出现混乱。解决这个问题就是调整。一个系统的菜单和信息的提示语句是非常重要的。如果没有这些用户根本不知道怎么用你设计的这个系统,在设计的调试过程中也无法顺利地完成调试工作。有了一个清晰明了的菜单和一些提示信息之后,调试过程完成得非常顺利。在本次实习过程中碰到的编译、连接的错误主要有:1、定义变量时:变量不容易联系起来,经常会写错变量名,但是在错误信息的提示下一般还是很容易找到。但是在写各个函数时,发现一个变量名,只要不是全局变量就可以无数次定义,只要分开在不同的函数中就可以了。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。在编写程序时要安静,才不会出现低级错误。2、语法错误:语法错误在通过书本参考下能够修改,并且在上机的错误提示中得到修改,但是由于书本是C语言,不是C++的。所以在使用时要注意在主函数和一些定义变量跟声明函数时有些不同,这不是语法的错误,而是作为一个程序员必须要注意到的,要体会两种语言的区别,由于平时看书不仔细、没有经过仔细的思考造成的。如没有注意具体数据使用是有一定的范围限定。在本次调试过程中我还碰到了一些以前上机过程中从未碰到过的错误。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要编程序的人有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。因此我使用的是一个一个函数的检查,并通过调试修改。通过此次课程设计,我还得到了一些有用的教训:写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计之后,我一定把以前所学过的知识重新温故。刚开始做的时候,一点感觉都没有,到后来就越有感觉了,开始慢慢懂了!曾记得有个同学说过“有问题找百度”,这次刚好派上用场了,在做程序设计的过程中,不懂的就上网搜索,真的学到挺多东西的!我想接下来的日子也得好好补补C语言,好为以后的课程打下基础。做课程设计的日子是辛苦的,但是当完成一项工程后,那种欣喜是油然而生的。连续奋战了几个星期,尤其在临近上交期限的时候,我连续几晚待在电脑前,一待就是几个小时,敲击着代码,测试着每个语句,然后上网查找资料,看书里的内容。这种生活虽然很累,很枯燥,但是感觉世界很安静,键盘的声响是一种心里知识的书写。尤其是最后的这段期间,说起一件有趣的事情,大家为了老师交代的格式和字数拼命查找资料而且为了赶在验收日期前做好,一天除了上课睡觉之外,吃完饭就开工了。昨晚宿舍还集体为了测试程序而到11点都还没人洗澡,然后就是集体晚睡了。这都是此次课程设计过程中发生的趣事。不过这种生活也是很难得,难得因为这样的一件事大家能够那么集中地做事情。挺难得的一段经历,C语言,以后要再翻出来看看,而且,要努力准备下次的二级C考试。附录1.用户文档・调试与测试主要程序运行结果:❖运行开始❖选择1输入成绩你的过抨口⑴二1谕入班皱:1旧多开一口在封。T、洋」|:a请输入:i位学d_的信息:姓十、课程:总容獭学、物埋、外语、⑶百吉、德自的M,崎:a12663799b57897745c5S7857口口输入完成后WHffA:%:的也忏口一:内:1愉入班北「1止卜田干一“士[考IT•■学二』吉输入:;应学生IYJ信息二姓右、诉程二高等郭।,学、判L里、.奸诏、门话占、德白伯J阴壬:a125S87
b578977
cE87867占自S6行吉堆.工一丫$者乩T代志是,叫,弋志不足-)选择Y返回(输入丫或丫都可以)❖选择2,输出我知过久:学「Ib以结缘计巾HF各:3±LJ-':":'S371 |底庭 1j-4^1341Fh,-r<:1)J!11工勺能选择 51-愉凡述苛利文件中।2.?rh,'I',一绩入胴诂国的选择以一可:21-.对侬汝过竹排.序1.箱I中取砥3,福出小M格自皿4-返声LL军甲选择1对成绩进行排序后,再选择2输出成绩递缴国次H羽亍密出回.返抨」2.3.4.1%-格中序笔kr7rr名而入班别m±僵军工嵯茗邓年均分La.66序号姓名平均分b 61.林。序号姓名平均分;c 5S.W0l高等数学
9W.0
高等数学
99.0
高等教学物理物理9H.E1物理63_词外诘U语言德肓70.0 30.0外语U语言德育80_P1 10_^外语匚语言德育EG.。 5*13-030.070.0输入3,输出不及格名单对成绩进行排序❖返回主菜单,选择3进行编辑你的选择。7日亘
录录录菜
记记记主
S-余咫回:
修择选择1,修改a的成绩[! 廷口1吉s灰在侯行啊理电土jl如5篁1后m休丘I日t»ugu星物j®电子♦际…前迎进.学性成绩统计剂作者;mnofjuavi陈欣:L=L物珥由于⑴班他*01010*0*0*0*0101cH01010toic能选择*=m=l=l=***>=*=l=t=*=l=**1.输入成绩到文件中1.输出内植=l=H=l=M=M=l=M=M=M=M=l=M=l=M=l=l=M=M=l=M=l=l=M=H=b你的选择以一巧;一字1-侈「攵i己一我
2-删除i己尿
jJ击人记示4.3反回1菜单选捽二1再要修改的班级:1需由诲曲不I华,I的行方,喜淬赵洋,制理,外语,匚语击.德自小旧立特:cH4GH门口Fin77返回主菜单,选择2输出,检查是否修改成功:1■.对成绩ifi行排序3一播出h匕怎3.输H:不就格名单4-辿d川工球T"用:士I1姓右平均分C小3_1■*I好右半十句储姓名平均分L字曰-门门高淬树〒忡理H4.II HH.II台等省厂产抄岬47.Cj nn.u总于知•『我I」中,1门一门 日产LC而苫irQ
卜:I卜5.卜H.-T-:I.A5.AR德白UI II石之德白min.C Fi5.Cj-讪士濡之门口.C RE一口h石二-T.Q।-刈司-;技迎?丁」非方士.愉H‘山!江W3.输tt[不及
■1-i丘回1茶T选择2,删除b的信息单录录录第王改除人回:2
修®^择
1234^^.而要进行删除的班级:1惨遭删除的学生姓名选择3,插入d的信息播要插入记录的班级:1%的学生姓名,及其高等数学、物理,外语、C语言、德育的成绩:7777777777附录2.技术文档•主要函数1、input()该函数主要用来创建新数据文件,当第一次使用该程序或者原创建的文件的内容无效
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国锂电池正极材料市场发展趋势及投资战略研究报告
- 2025-2030年中国铝冶炼行业运行动态与前景趋势分析报告
- 2025-2030年中国菱镁矿产业竞争格局与十三五规划研究报告
- 2025-2030年中国联苯双酯行业市场运行状况与十三五规划分析报告
- 2025-2030年中国粘玉米行业规模分析及发展建议研究报告
- 2025-2030年中国空管系统市场十三五规划与投资战略研究报告
- 2025-2030年中国畜禽养殖中抗生素行业发展状况及投资战略研究报告
- 东北财经大学《中医护理学基础》2023-2024学年第二学期期末试卷
- 广东江门幼儿师范高等专科学校《面向对象与可视化编程》2023-2024学年第二学期期末试卷
- 广州工商学院《健康服务与营销学》2023-2024学年第二学期期末试卷
- 《绿色建筑设计原理》课件
- 中华人民共和国学前教育法-知识培训
- 2023年新高考(新课标)全国2卷数学试题真题(含答案解析)
- 事业单位工作人员奖励审批表
- 人教版六年级美术下册全册课件【完整版】
- GB/T 9788-1988热轧不等边角钢尺寸、外形、重量及允许偏差
- 教科版三年级下册科学全册完整课件
- 轨道交通安全专题培训
- 物理化学完整版答案
- 节流孔板孔径计算
- 学生流失率考核办法(试行)
评论
0/150
提交评论