




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序课程设计课 程 设 计 2013年 11月 3 日设计题目:学生成绩统计设计条件:掌握C语言的基本知识,能够熟练地应用顺序结构、选择结构、循环结构,能够善于应用结构体数组和对文件的输入输出。设计内容: 【问题描述】学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。【实现提示】假设某班有:30人(姓名自定)考试课程有:高等数学、物理、外语、C语言、德育5门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面: 输入成绩到文件中 输出成绩 输出不及格学生名单 成绩排序 修改记录 删除记录 插入记录等主函数中对3个功能选择(菜单),调用对应的函数完成。下达日期:2013年10月完成日期:2013年11月 目录一、 前言4二、 设计思想4三、 设计过程4四、 程序流程图7五、 程序清单8六、 总结8附录1.用户文档10附录2.技术文档13参考文献13一、 前言本课程设计提供了一个既动手又动脑,自学,查资料,独立实践的机会。将课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。本课程设计学生成绩统计,在日常的教学过程中具有较高的应用价值。当老师批改完一大批试卷后,需要统计成绩得出相应结果时,“学生成绩统计”就能够发挥其重要作用。设计这个程序,主要用到结构体数组和文件两个知识点,再结合顺序、循环、选择、函数来实现功能。二、 设计思想 首先编译预处理,输入头文件;再之全局声明;对函数进行定义。再建立一个student结构体,把结构体里面的内容写入一个文件中。然后先把主函数main()写好,再把子函数完善好,最后测试、修改,直到达到最终功能和界面美观为止。三、 设计过程1、 根据设计要求做好分析,把主要框架设计罗列出来。考虑到此程序主要有3大方面的内容,所以主函数里分为3大模块,模块里面再根据要求执行相应的内容。2、 根据主要的框架,确定没有问题后,编写主函数如下:#include#include#include#define N 3000int system(const char*string);struct student /声明结构体类型struct student /以下4行为结构体的成员char name20;float score5;float aver;int cla; void input(struct student stu);void print(struct student stu);void prinot(struct student stu);void list(struct student stu);void changes(struct student stu);void del(struct student stu);void ser(struct student stu);void bian();void prin();int M;FILE*fp; /定义一个指向文件的指针变量fpstruct student stu4,*p=stu;void main()char choice,zlq=y;int over=0;while(!over) /循环语句if(zlq=Y|zlq=y)printf(*功能选择*n);printf(1.输入成绩到文件中n);printf(2.输出成绩n);printf(3.编辑n);printf(*n); printf(你的选择(1-3):);do scanf(%c,&choice);while(choice=n);printf(n);switch(choice) /用switch来进行选择case1:input(p);break;case2:prin();break;case3:bian();break;default:printf(输入错误!n); continue;if(!over) /在每次运行完选项后,选择退出还是继续printf(nnn返回主菜单吗?n(请输入Y或者N,Y代表是,N代表不是.)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,会出现如下主菜单:3、 确定好主函数后,再根据要求撰写执行“输入成绩到文件中”之后相对应的“返回主菜单”程序,检查是否会出现错误。4、 待检查无错误之后,开始写下一步:“输出成绩”程序。输出程序里面又包含有4个子程序语句,分别为“排序”、“输出成绩”、“输出不及格名单”、“返回”,查找与之相对应的函数的资料,然后撰写相应程序。5、 与第4步相似地进行撰写“编辑”程序下的“修改”、“删除”、“插入”、“返回”程序。6、 运行程序,看是否出现错误,如有错误,根据相关提示修改错误,例如一些字符漏写或者函数类型错误等等。7、 等修改完,再次运行,根据功能选择,输入相应数字,运行看看能否执行相应要求的功能。输入一些假设结果,验证程序设置的正确性。8、 完善所有之后,就正式宣告课程设计结束,并撰写设计报告。四、 程序流程图开始输出菜单根据菜单输入choice的值选择程序输入输出编辑排序输出成绩输出不及格名单返回修改删除插入返回是否返回主菜单?结束五、 程序清单各函数的功能和实现:1、输入某班的所有学生的成绩。输入信息包括:班级,姓名,高等数学、物理、外语、C语言、德育5门课程成绩并写入文件“stud”中;可用函数void input(struct student stu)来实现。2、输出模块:函数void print()里嵌套4个函数用于排序、输出成绩、输出不及格名单、返回;排序:函数 void list(struct student stu)只是实现排序个功能,需要输出名单得需再次选择选项“2”。输出:输出学生的信息以及成绩void print(struct student stu):通过输入班级来查看某个班的相关情况。输出平均分不及格的名单:用函数void prinot(struct student stu)来实现输出所以平均分不及格的学生的班级及姓名。返回:返回到主界面。3、编辑模块:函数void bian()中应用4个函数加于循环选择,可以进行选择修改、删除、插入、返回;修改:在函数void changes(struct student stu)里面输入需要修改的学生的班级、姓名以及成绩,就可以对某班某个学生的成绩进行修改。删除:用函数void del(struct student stu)实现。删除某班某个学生的成绩。插入:用函数void ser(struct student stu)实现。实现在某班中插入某些同学的相关信息。4、判断是否返回主菜单:用判断语言if。六、 总结回顾起此次C语言课程设计,我感慨颇多,从拿到题目到完成整个编程、调试到撰写报告,从理论到实际,在将近一个月的时间里,我学到了很多知识,攻破了以前的一些知识盲点。在这之中,我不仅可以巩固了以前学习的知识,而且学习到了很多在书本上所没有学到过的知识,拓宽了知识面。通过此次课程设计,我懂得了理论和实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中,算是困难重重吧。在编写时,遇到不少问题,低级错误是主要的问题。特别在整合时,问题更多。比如因float误用作int而导致的错误,花费了我好长的时间。由其得到,错误或许就出在最根本处。由于本课题中的很多知识点都没有学过,要自己去翻看书里后面几章的内容去熟悉理解,并且通过查找课外的相关资料。小到一个术语,大到一个函数、一个逻辑关系,都需要在这过程中理解。开始设计出来的程序存在着很多错误,修改了很多次都没有出现可观的迹象,询问了周围的同学研究了之后才得到解决。设计出来的菜单也不是预想的那样,而是整个窗口出现混乱。解决这个问题就是调整。一个系统的菜单和信息的提示语句是非常重要的。如果没有这些用户根本不知道怎么用你设计的这个系统,在设计的调试过程中也无法顺利地完成调试工作。有了一个清晰明了的菜单和一些提示信息之后,调试过程完成得非常顺利。在本次实习过程中碰到的编译、连接的错误主要有:1、 定义变量时: 变量不容易联系起来,经常会写错变量名,但是在错误信息的提示下一般还是很容易找到。但是在写各个函数时,发现一个变量名,只要不是全局变量就可以无数次定义,只要分开在不同的函数中就可以了。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。在编写程序时要安静,才不会出现低级错误。2、 语法错误: 语法错误在通过书本参考下能够修改,并且在上机的错误提示中得到修改,但是由于书本是C语言,不是C+的。所以在使用时要注意在主函数和一些定义变量跟声明函数时有些不同,这不是语法的错误,而是作为一个程序员必须要注意到的,要体会两种语言的区别,由于平时看书不仔细、没有经过仔细的思考造成的。如没有注意具体数据使用是有一定的范围限定。在本次调试过程中我还碰到了一些以前上机过程中从未碰到过的错误。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要编程序的人有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。因此我使用的是一个一个函数的检查,并通过调试修改。通过此次课程设计,我还得到了一些有用的教训:写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计之后,我一定把以前所学过的知识重新温故。刚开始做的时候,一点感觉都没有,到后来就越有感觉了,开始慢慢懂了!曾记得有个同学说过“有问题找百度”,这次刚好派上用场了,在做程序设计的过程中,不懂的就上网搜索,真的学到挺多东西的!我想接下来的日子也得好好补补C语言,好为以后的课程打下基础。做课程设计的日子是辛苦的,但是当完成一项工程后,那种欣喜是油然而生的。连续奋战了几个星期,尤其在临近上交期限的时候,我连续几晚待在电脑前,一待就是几个小时,敲击着代码,测试着每个语句,然后上网查找资料,看书里的内容。这种生活虽然很累,很枯燥,但是感觉世界很安静,键盘的声响是一种心里知识的书写。尤其是最后的这段期间,说起一件有趣的事情,大家为了老师交代的格式和字数拼命查找资料而且为了赶在验收日期前做好,一天除了上课睡觉之外,吃完饭就开工了。昨晚宿舍还集体为了测试程序而到11点都还没人洗澡,然后就是集体晚睡了。这都是此次课程设计过程中发生的趣事。不过这种生活也是很难得,难得因为这样的一件事大家能够那么集中地做事情。挺难得的一段经历,C语言,以后要再翻出来看看,而且,要努力准备下次的二级C考试。附录1.用户文档l 调试与测试主要程序运行结果:v 运行开始v 选择1输入成绩输入完成后 选择Y返回(输入Y或y都可以)v 选择2,输出选择1对成绩进行排序后,再选择2输出成绩 输入3,输出不及格名单v 返回主菜单,选择3进行编辑 选择1,修改a的成绩 返回主菜单,选择2输出,检查是否修改成功 选择2,删除b的信息 选择3,插入d的信息 附录2.技术文档l 主要函数1、 input() 该函数主要用来创建新数据文件,当第一次使用该程序或者原创建的文件的内容无效,需建立一个新的文件的时候,可通过该函数来实现。2、 print()使用该函数可以显示所有的操作员自己输入的所有的学生数据记录。它只用到了简单的printf(“”)语句,当需先打开数据文件时,读取其中的数据记录,然后将这些记录按一定的形式打印在屏幕上。2、insert() 该函数可对文件的数据进行插入。在进行添加的时候需要首先打开原来的数据文件,在该函数中调用了input()函数将数据文件打开。再调用input()函数文件之后同input()中一样的形式输入数据,输入完之后进行保存,对插入的数据进行保存前要先确定插入的地点,insert()函数在设计时将插入点放在了文件末尾,即将添加的数据加到文件的最后。Insert()函数与创建新数据文件的input()函数除保存及被功能上的使用时间不同外,其他功能基本相同。3、delete()该函数用来删除不需要的数据记录。4、 changs()该函数用来修改程序中的某些数据。5、 bian()该函数用来编辑,指使下一步的“删除
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 干货供应商合同模板(3篇)
- 抚顺特钢劳动合同模板(3篇)
- 服装续租合同怎么写模板(3篇)
- 离婚协议中遗产继承法律咨询合同
- 离婚协议中子女抚养费及探望权安排服务合同
- 生态农业租赁合同范本(含作物种植指导)
- 夫妻离异后房产分割及权益调整协议书
- 高新技术企业股东间股权比例调整与转让合作协议
- 离婚双方宅基地房屋分割及搬迁安置协议
- 婚姻关系解除协议书范本及详细条款解析
- 个体诊所管理暂行办法
- 潍坊市2026届高三开学调研监测考试化学试题及答案
- 采购成本控制培训
- 商业地产策划流程
- GB 46031-2025可燃粉尘工艺系统防爆技术规范
- 破圈与共生:2025中国社交媒体全球化发展报告
- 2025年社保理赔考试题目及答案
- 产教融合校企合作课件
- 质量攻关项目汇报
- 电力企业综合应急预案编制导则
- 收单外包管理办法
评论
0/150
提交评论