




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c语言程序设计报告《C语言课程设计》报告题目:成绩管理系统专业年级:自动化一班学号:姓名:指导教师:叶念渝c语言程序设计报告全文共13页,当前为第1页。2015年12月17日c语言程序设计报告全文共13页,当前为第1页。一.设计内容(1)输入功能:由键盘输入20个学生(姓名)的某门课程的学习成绩10~99分(也可超过)。(2)运算功能:将分数由低到高排序(用直接排序法和冒泡法),并显示学生姓名和对应的分数。(3)检索功能:用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)。(4)查询功能:对分搜索法检索某个学生的成绩(输入姓名,显示成绩)。二.设计要求(1)可以输入若干名学生信息(包括姓名/成绩等);(2)在源代码中将若干名同学的信息输出;(3)在源代码中能够将若干名同学的成绩排序(升序/降序均可);(4)可以根据不同的查询条件(线性/对分搜索)来查询到相关学生的信息;三.设计思路c语言程序设计报告全文共13页,当前为第2页。首先进入软件界面,以菜单为提示的成绩管理系统.分别建立输入学生信息函数输入学生信息,建立排序函数实现排序功能,建立查找函数实现查找功能.通过建立数组在函数运行中进行同步调换实现各信息间分联系,达到信息相对应的目的,在主函数中分别调用各功能函数完成程序目的.c语言程序设计报告全文共13页,当前为第2页。四.程序设计流程图子程序入口1.学生信息输入函数子程序入口i=0;ii=0;i<N;i++
+输入学生姓名输入学生成绩输入学生姓名输入学生成绩noSnoScore[i]>1&&Score[i]<100重新输入重新输入请重新输入请重新输入yesyes输入完毕退出子程序输入完毕退出子程序2.直接排序法流程图子程序入口子程序入口i=0;ii=0;i<N-1;i++
+max=imax=iscore[max]<score[j]score[max]<score[j]YYNNmax=jmax=j同步交换姓名和成绩输出姓名和成绩输出姓名和成绩输入完毕退出子程序输入完毕退出子程序3.冒泡排序法流程图子程序入口子程序入口c语言程序设计报告全文共13页,当前为第3页。c语言程序设计报告全文共13页,当前为第3页。ii=0;i<N-j;i++入函数绩排序输出(直接排序法)voidsort1(charname[N][8],intscore[]){ inti,j,max,temp1; chartemp2[100]; for(i=0;i<N-1;i++) { max=i; for(j=i+1;j<N;j++) if(score[max]<score[j])max=j; temp1=score[i]; score[i]=score[max]; score[max]=temp1; strcpy(temp2,name[i]);绩排序输出(冒泡法)voidsort2(charname[N][8],intscore[]){ inti,j,t;charh[100];for(j=0;j<N;j++)for(i=0;i<N-j;i++)if(score[i]>score[i+1]){ t=score[i];score[i]=score[i+1];score[i+1]=t;strcpy(h,name[i]);strcpy(name[i],name[i+1]);strcpy(name[i+1],h);}printf("Thesortedresult:\n");for(i=0;i<N;i++)printf("姓名:%10s成绩:%3d\n",name[i],score[i]);}性搜索法检索学生的成绩voidsearch1(charname[N][8],intscore[])分搜索法检索学生的成绩voidsearch2(intscore[],charname[N][8]){ inta,b,c,i; chard;while(1) { a=0; b=N-1; printf("请输入学生成绩:"); scanf("%d",&c); getchar(); while(a<=b) {i=(a+b)/2;if(score[i]==c)break;if(score[i]<c)a=i+1;if(score[i]>c)b=i-1; } if(score[i]!=c) printf("无此成绩\n"); elseprintf("姓名:%10s成绩:%3d\n",name[i],score[i]); printf("继续查询吗[Y/N]:");d=getchar(); if((d=='y')||(d=='Y')) continue; else break; }}voidmain(){intscore[N];charname[N][8];inta,b; printf("*************************学生成绩管理系统********************\n");printf("************************1.输入学生信息******************\n");printf("**********************2.直接排序法******************\n");printf("**********************3.冒泡排序法******************\n");printf("***********************4.线性搜索法********************\n");printf("*************************5.对分搜索法**********************\n"); b=1; while(b==1){ printf("请输入序号:"); scanf("%d",&a); printf("\n"); switch(a) {case1: printf("输入学生信息\n"); input1(name,score); break;case2: printf("直接排序法\n"); sort1(name,score); break;case3: printf("冒泡排序法\n"); sort2(name,score); break;case4: printf("线性搜索法\n"); search1(name,score); break;case5: printf("对分搜索法\n"); search2(score,name); break; case6:while(0);break; default: printf("error\n"); }printf("1继续程序,2结束程序\n");scanf("%d",&b); }}j<Nscore[i]>score[i+1j<Nscore[i]>score[i+1名字分数同步进行交换名字分数同步进行交换输出姓名和成绩输出姓名和成绩交换完毕交换完毕退出子程序4.线性搜索法流程图子程序入口子程序入口输入姓名输入姓名a!=0如果a!=0如果a=strcmp(str,name[ia=strcmp(str,name[i])aa是否等于0如果如果a==0输出姓名和成绩输出“查无此人”输出“查无此人”是否继续Y是否继续NN输入完毕退出子程序输入完毕退出子程序5.对分搜索法流程图子程序入口子程序入口调用排序函数对调用排序函数对成绩进行排序a=0;a=0;b=n-1a<=ba<=bYYc语言程序设计报告全文共13页,当前为第4页。i=(a+b)/2c语言程序设计报告全文共13页,当前为第4页。i=(a+b)/2查找的成绩与输查找的成绩与输入成绩相比较score[i]>cscore[i]<cscore[i]>cscore[i]<cscore[i]==cscore[i]==ca=i+1a=i-1a=i+1a=i-1score[i]==cscore[i]==cNNYY输出“无此成绩”输出“无此成绩”输出查找的人的信息Y继续查找Y继续查找输入完毕退出子程序输入完毕退出子程序主程序入口主程序主程序入口case(1-6)case(1-6)NN进入相应的分函数界面输入完毕退出输入完毕退出设计及调剂的过程中遇到的问题和解决方法c语言程序设计报告全文共13页,当前为第5页。(1).输入人的姓名时为什么要用二维数组?因为输入了多个人的名字所以我们要建立一个名字的二维数组。c语言程序设计报告全文共13页,当前为第5页。(2).在输入函数中我开始用的是if语句定义输入范围结果只提示一次错误。后来我加了一个do-while循环,就可以一直执行下去了。(3).在冒泡排序法中没有理解strcpy函数的用法把字符串复制到字符串中去了,真正用法是将字符串复制的字符数组中去。(4).将直接排序法和冒泡排序法弄混了,平时直接习惯有冒泡法,后来只有从书上一步一步的分析其数值的变化。终于本质上的理解了两种排序的作用是如何实现的。冒泡法是每比较一轮产生一个最小(大)的数放在第一个位置,而直接排序法是找出数值最小(大)的小标与第一个调换。(5).在设计主函数时我用的是switch函数调用分函数,在进行搜索时我没加循环结果只能查找一个人的不能进行查多个人和判断是否能查到此人。后来我在搜索法中加了个while循环问题就解决了。.在调试过程中我遇到的主要问题是输出姓名时第一个人的名字输出不出来,后来我一句句的看源程序,也不知道为什么。我问班上同学才知道我用的是gets(name[i]);输入字符串占用了一个字符所以输出第一姓名时名字数输不出来,我把它改成scanf("%s",&name[i]);就可以输出了。从这件事中我明白了要学会多思考即使你是参考书上的也要每一步弄懂,不然一个小的细节就会导致程序出问题,我还是对这两种输入字符串函数没有本质的了解。.程序有许多小问题都是在自己一遍遍调试下更正了,比如程序差东西、有问题等,做好一个程序编程还是要自己慢慢探索,理解每一个函数语句。六.心得体会与感受c语言程序设计报告全文共13页,当前为第6页。C语言课程设计总有两周时间,在第一次上课老师交给我们任务不知从何下手到最后将整套学生管理系统的程序准确无误的编出来,对我来说无疑又是一大进步,在这段时间里我遇到了不少的问题。产生了许多的疑问,但是随着自己的追随问题的根源,不断的温习书本上的知识,反复进行上机的操作,思路一步一步的清晰起来了,所遇到的一些问题也逐渐得到就解决,本不是那么情愿做的程序到因为解决了一些问题所产生的成就感反到激起了我兴趣。于是借着心中的那一股劲,反复的程序进行摸索,把以前很多没学好的地方都捡了起来,还学会了很多新的知识。这一切都源于老师对我们的严格要求,还有自己的刻苦专研才有了这样的成果。如果老师要求没有那么严格,或者是自己不去努力是做不出来学生管理系统的。c语言程序设计报告全文共13页,当前为第6页。在设计的过程中,在我印象中最深刻的挺多的。冒泡和直接排序法的比较,在二维数组的比较时也遇到了一些问题,主要是对二维数组的概念不清楚,性质不了解,所以在运用时就有一些错误。当然在设计过程中因为输入法的错误、函数层次不清晰变量名重复定义,也花了很多时间去解决。所以在这次编程过程中,不仅仅只是完成作业而已,更多的是要用一种肯专研的学习态度,养成一个良好学习习惯。作为一个合格的编程人员不仅仅要有专业知识,还要有一个良好的编程习惯和一颗仔细的心,更需要一种负责认真编程态度。七.源程序#include<>#include<>#defineN5入函数绩排序输出(直接排序法)voidsort1(charname[N][8],intscore[]){ inti,j,max,temp1; chartemp2[100];c语言程序设计报告全文共13页,当前为第7页。 for(i=0;i<N-1;i++)c语言程序设计报告全文共13页,当前为第7页。 { max=i; for(j=i+1;j<N;j++) if(score[max]<score[j])max=j; temp1=score[i]; score[i]=score[max]; score[max]=temp1; strcpy(temp2,name[i]);绩排序输出(冒泡法)voidsort2(charname[N][8],intscore[]){ inti,j,t;charh[100];for(j=0;j<N;j++)for(i=0;i<N-j;i++)if(score[i]>score[i+1]){c语言程序设计报告全文共13页,当前为第8页。 t=score[i];c语言程序设计报告全文共13页,当前为第8页。score[i]=score[i+1];score[i+1]=t;strcpy(h,name[i]);strcpy(name[i],name[i+1]);strcpy(name[i+1],h);}printf("Thesortedresult:\n");for(i=0;i<N;i++)printf("姓名:%10s成绩:%3d\n",name[i],score[i]);}性搜索法检索学生的成绩voidsearch1(charname[N][8],intscore[])分搜索法检索学生的成绩voidsearch2(intscore[],charname[N][8]){ inta,b,c,i;c语言程序设计报告全文共13页,当前为第9页。 chard;c语言程序设计报告全文共13页,当前为第9页。while(1) { a=0; b=N-1; printf("请输入学生成绩:"); scanf("%d",&c); getchar(); while(a<=b) {i=(a+b)/2;if(score[i]==c)break;if(score[i]<c)a=i+1;if(score[i]>c)b=i-1; } if(score[i]!=c) printf("无此成绩\n");c语言程序设计报告全文共13页,当前为第10页。 elsec语言程序设计报告全文共13页,当前为第10页。printf("姓名:%10s成绩:%3d\n",name[i],score[i]); printf("继续查询吗[Y/N]:");d=getchar(); if((d=='y')||(d=='Y')) continue; else break; }}voidmain(){intscore[
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 港口与航道工程技术专业教学标准(高等职业教育专科)2025修订
- 现代移动通信技术专业教学标准(高等职业教育专科)2025修订
- 2025年中国颗粒酶行业市场全景分析及前景机遇研判报告
- 2025年中国静电释放安全鞋行业市场全景分析及前景机遇研判报告
- 2025年中国罐头包装市场运营趋势分析及投资潜力研究报告
- 中国橡塑密封件行业市场调查研究及投资战略咨询报告
- 2025年中国车载通信系统行业市场运行现状及未来发展预测报告
- 2025年中国刚性双面板行业市场发展现状及投资战略咨询报告
- 2025年 保育师理论知识模拟考试题附答案
- 中国豪华客车行业市场深度评估及投资策略咨询报告
- 《运动技能学习与控制》考试复习题库(更新)
- 酒店食堂食材投标文件
- 保育师考试题与答案
- 2023-2024学年广东省佛山市小学语文六年级期末评估试题详细参考答案解析
- 自查自纠整改台账
- 盐业公司招聘试题答案大全
- 常见气体物性参数
- GB/T 467-2010阴极铜
- POCT血糖仪项目培训记录表、资质授权申请表
- 乡村治理-课件
- 增材制造技术发展课件
评论
0/150
提交评论