2022年C语言课程设计 3.pdf

上传人:C****o 文档编号:39729882 上传时间:2022-09-07 格式:PDF 页数:18 大小:1.17MB
返回 下载 相关 举报
2022年C语言课程设计 3.pdf_第1页
第1页 / 共18页
2022年C语言课程设计 3.pdf_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《2022年C语言课程设计 3.pdf》由会员分享,可在线阅读,更多相关《2022年C语言课程设计 3.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1C语言课程设计学生成绩统计20 12 年 6 月 8日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 18 页 -2设计题目:学生成绩统计设计条件:掌握 c 语言的基本知识;能够熟练的应用顺序结构、选择结构、循环结构,能够善于应用结构体数组和对文件的输入输出。设计内容:学期考试结束,统计有 N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。假设某班有:30 人(姓名自定)考试课程有:高等数学、物理、外语、C 语言、德育 5 门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的

2、功能主要包括3 方面:1输入成绩到文件中2输出成绩3输出不及格学生名单4成绩排序5修改记录6删除记录7插入记录等主函数中对 3 个功能选择(菜单),调用对应的函数完成。下达日期:2012年 5 月 25 号完成日期:6 月 8 号名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 18 页 -3目录1.前言-42.设计思路-43.设计过程-44.程序流程图-65.程序清单-76.总结-17附录 1.源程序-7附录 2.调试与测试-13名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 18 页 -41.前言批完卷子后,面对一数量巨大的成绩时,老师们不免会很头疼。如果有那么一

3、个“学生成绩程序”,有排序、更改等之类的功能,会让老师们的工作轻松很多的。设计这个程序,主要应用了结构体数组和文件这两个知识点,再结合顺序、循环、选择、函数来实现功能。2.设计思路首先建立一个student结构体,把结构体里面的内容写入一个文件中。然后先把主函数main()写好,再把子函数完善好,最后测试、修改,直至最完美状态。3.设计过程一开始先将主要的框架写好,确定没有问题后,再编写功能函数:这里出现了一个问题:#define N 3000#include#include#include int system(const char*string);struct student/声明结构体类

4、型struct student/以下 4行为结构体的成员char name20;float score5;float aver;int cla;void input(struct studentstu);void ji();void prin();void main()char choice,zlq=y;int over=0;struct student stuN,*p=stu;while(!over)/循环语句if(zlq=Y|zlq=y)printf(*功能选择*n);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 18 页 -5printf(1.输入成绩到文件中n);pri

5、ntf(2.输出成绩 n);printf(3.编辑 n);printf(*n);printf(你的选择(1-3):);scanf(%c,&choice);printf(n);switch(choice)/用 switch 来进行选择case1:input(p);break;case2:prin();break;case3:ji();break;default:printf(输入错误!n);continue;void input(struct student stu)/输入成绩printf(inputn);return;void prin()printf(prinn);void ji()/编辑函

6、数printf(jin);输入 1,然后按 enter,会出现两次主菜单,如下图:(修改了很多遍后还是这样,问同学也没有解决掉问题,因为下星期要考试,所以我就没有再去研究,希望老师能原谅)编写子函数时也遇到了很多问题,但是发现大多数的问题是因为名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 18 页 -6一些细节没有注意到,而导致功能不对。4.程序流程图YN开始输出菜单根据菜单输入choice的值选择程序输入输出编辑是 否 返回 主 菜单结束排序输出成绩输 出不 及格 名单返回修改删除插入返回名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 18 页 -75.程序清单

7、各函数的功能和实现:a.输入某班的所有学生的成绩:输入信息包括班级、姓名、各科成绩并写入文件“stud”中;可用函数void input(struct studentstu)来实现。b.输出模块:函数void prin()里嵌套 4 个函数用于排序、输出成绩、输出不及格名单、返回;排序:函数 void list(struct studentstu)只是实现排序的功能,要想输出名单得需再次选择选项“2”。输出:输出学生的信息以及成绩void print(structstudentstu):通过输入班别来查看某个班的相关情况。输出平均分不及格的名单:用函数 void prinot(struct s

8、tudentstu)来实现输出所有平均分不及格的学生的班级及姓名c.编辑模块:函数 void bian()中应用 4 个函数加于循环选择,可以进行选择修改、删除、插入、返回;修改:在函数void change(structstudentstu)里面输入需要修改的学生的班级、姓名及成绩,就可以对某班某个学生的成绩进行修改。删除:用函数 void del(struct studentstu)实现。插入:用函数 void ser(structstudentstu)实现d.判断是否返回主菜单:用判断语言if。附录 1源程序#define N 3000#include#include#include i

9、nt system(const char*string);struct student/声明结构体类型 struct student/以下 4 行为结构体的成员char name20;float score5;float aver;int cla;void input(struct student stu);void print(structstudent stu);void prinot(structstudent stu);void list(struct student stu);void change(struct student stu);void del(struct studen

10、t stu);void ser(struct student stu);void bian();名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 18 页 -8void prin();int M;FILE*fp;/定义一个指向文件的指针变量fpvoid 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):)

11、;scanf(%c,&choice);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);名师资料总结-精品资料欢迎下载-名

12、师精心整理-第 8 页,共 18 页 -9over=1;if(zlq!=Y&zlq!=N&zlq!=y&zlq!=n)printf(n输入错误!将退出 n);over=1;void input(struct student stu)/输入成绩int i,x,y,c,T,S;printf(输入班别:);scanf(%d,&c);printf(此班一共有多少学生:);scanf(%d,&T);printf(n);M=M+T;S=M-T;printf(请输入%d 位学生的信息:姓名、课程:高等数学、物理、外语、C语言、德育的成绩:n,T);for(i=S;iM;i+)/输入每位同学的情况scanf(

13、%s%f%f%f%f%f,&stui.name,&stui.score0,&stui.score1,&stui.score2,&stui.score3,&stui.score4);stui.aver=(stui.score0+stui.score1+stui.score2+stui.score3+stui.score4)/5.0;stui.cla=c;if(fp=fopen(stud,w)=NULL)/打开输出文件并使fp 指向此文件printf(Cannot open this fie.n);exit(1);for(y=0;yM;y+)fwrite(&stuy,sizeof(structst

14、udent),1,fp);fclose(fp);void prin()/选择 2 的输出函数char ask;while(1)名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 18 页 -10printf(nn);printf(1.对成绩进行排序 n);printf(2.输出成绩 n);printf(3.输出不及格名单 n);printf(4.返回主菜单 n);printf(选择:);scanf(%c,&ask);printf(n);if(ask=1)list(p);elseif(ask=2)print(p);elseif(ask=3)prinot(p);elseif(ask=4)

15、fclose(fp);return;void print(structstudent stu)/输出总名单int k,c,i;printf(输入班别:);scanf(%d,&c);printf(n输出%d 班的成绩 n,c);for(k=0;kM;k+)if(stuk.cla=c)printf(序号 姓名平均分高等数学物理外语c 语言德育n);printf(%d%s%6.2f%5.1f%5.1f%5.1f%5.1f%5.1fn,k+1,stuk.name,stuk.aver,stuk.score0,stuk.score1,stuk.score2,stuk.score3,stuk.score4)

16、;void prinot(structstudent stu)/输出平均分不及格的名单int i;for(i=0;iM;i+)if(stui.aver60)printf(班级:%d,姓名:%sn,stui.cla,stui.name);名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 18 页 -11void list(struct student stu)/排序int i,j,k;struct student m;if(fp=fopen(stud,r)=NULL)printf(Cannot open this file.n);exit(1);for(j=0;jN;j+)for(

17、i=0;iM-j;i+)if(stui.averstui+1.aver)fread(&stuj,sizeof(structstudent),1,fp);m=stui;stui=stui+1;stui+1=m;fclose(fp);void bian()/用于编辑的函数char ask;while(1)printf(nn);printf(1.修改记录 n);printf(2.删除记录 n);printf(3.插入记录 n);printf(4.返回主菜单 n);printf(选择:);scanf(%c,&ask);printf(n);if(ask=1)change(p);elseif(ask=2)

18、del(p);elseif(ask=3)ser(p);elseif(ask=4)fclose(fp);return;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 18 页 -12void change(struct student stu)/修改int i,c;printf(需要修改的班级:);scanf(%d,&c);printf(n);struct student a,b;printf(需要修改的学生的姓名,高等数学,物理,外语,C 语言,德育的成绩:n);scanf(%s%f%f%f%f%f,&a.name,&a.score0,&a.score1,&a.score2,&

19、a.score3,&a.score4);a.aver=(a.score0+a.score1+a.score2+a.score3+a.score4)/5.0;a.cla=c;for(i=0;iM;i+)if(stui.cla=c&strcmp(a.name,stui.name)=0)break;b=stui;stui=a;void del(struct student stu)/删除int i,j,c;printf(需要进行删除的班级:);scanf(%d,&c);printf(n);struct student a,b;printf(惨遭删除的学生姓名 n);scanf(%s,&a.name)

20、;for(i=0;iM;i+)if(stui.cla=c&strcmp(a.name,stui.name)=0)break;b=stui;for(j=i;jM;j+)stuj=stuj+1;M-;void ser(struct student stu)/插入M+;int i,j,c;printf(需要插入记录的班级:);scanf(%d,&c);printf(n);struct student m;printf(插入的学生姓名,及其高等数学、物理、外语、C 语言、德育的成绩:n);scanf(%s%f%f%f%f%f,&stuM.name,&stuM.score0,&stuM.score1,&

21、stuM.score2,&stuM.score3,&stuM.score4);名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 18 页 -13stuM.aver=(stuM.score0+stuM.score1+stuM.score2+stuM.score3+stuM.score4)/5.0;stuM.cla=c;附录 2调试与测试主要程序运行结果:运行开始A.选择 1 输入成绩输入完成后名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 18 页 -14选择 Y 返回B.选择 2,输出选择 1 排序后,在选择 2 输出成绩名师资料总结-精品资料欢迎下载-名师精心整

22、理-第 14 页,共 18 页 -15输入 3,输出不及格名单C.选择 3,编辑选择 1,修改 w1 的成绩名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 18 页 -16返回主菜单,选择2 输出,检查是否修改成功选择 2 删除,删除 q1 的信息返回主菜单,选择2 输出,检查是否删除成功名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 18 页 -17选择 3,插入 zlq 的信息返回主菜单,选择2 输出,检查是否插入成功6.总结由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样

23、,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整两个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会

24、服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 18 页 -18过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力。编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这真的很考验我待事细心,耐心,能不能坚持到底,不能半途而废。总结出了一点点的经验如下:1、要对系统的功能和要求做出详细的分析,并合理分解任务。2、把分解出来的子任务,做给一个相对独立的模块。3、在设计一个模块之前,要简单构想一下总界面的显视情况。4、针对构想出来的界面进行程序的编写。名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 18 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁