下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计报告题目:成绩管理系统专业年级:自动化一班学号:姓名:指导教师:叶念渝2015年12月17日1)输入功能:由键盘输入 20 个学生(姓名)的某门课程 的学习成绩 1099 分(也可超过)。2)运算功能:将分数由低到高排序(用直接排序法和冒泡法) ,并 显示学生姓名和对应的分数。3)检索功能:用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)。4)查询功能:对分搜索法检索某个学生的成绩(输入姓名,显示成绩)。. 设计要求(1)可以输入若干名学生信息(包括姓名 / 成绩等);(2)在源代码中将若干名同学的信息输出;(3)在源代码中能够将若干名同学的成绩排序(升序 / 降序均可);(
2、4)可以根据不同的查询条件 (线性 /对分搜索) 来查询到相关学生的 信息;. 设计思路首先进入软件界面 ,以菜单为提示的成绩管理系统 . 分别建立输 入学生信息函数输入学生信息 ,建立排序函数实现排序功能 , 建立查 找函数实现查找功能 . 通过建立数组在函数运行中进行同步调换实现各信息间分联系,达到信息相对应的目的,在主函数中分别调用各功 能函数完成程序目的.四.程序设计流程图1. 学生信息输入函数重 新 输 入输入学生姓名Scorei>1>1输入学生成绩1、no子程序入口请重新输yes2. 直接排序法流程图输入完毕退出子子程序入口Yi=0:I<N-1;I+may 二sc
3、oremax<s输入完毕退出子max二jI输出姓名和成绩3. 冒泡排序法流程图a!输出姓名和成输出“查无此人”N是否继续输入完毕退出子5.对分搜索法流程图'子程序入口调用排序函数对a=0; b=n-1a<=bYi=(a+b)/2scorei查找的成绩与J scorescoreia=i-1a=i+1scoreiN输出查找的人的输出“无此成绩”输入完毕退出子case(1-6)N进入相应的分函数界f主程序入口6.主程序T输入完毕退出五.设计及调剂的过程中遇到的问题和解决方法(1).输入人的姓名时为什么要用二维数组?因为输入了多个人的名字所以我们要建立一个名字的二维数组。2). 在
4、输入函数中我开始用的是 if 语句定义输入范围结果只提示一次错误。后来我加了一个 do-while 循环,就可以一直执行下去了。(3). 在冒泡排序法中没有理解 strcpy 函数的用法把字符串复制到字符串中去 了,真正用法是将字符串复制的字符数组中去。4). 将直接排序法和冒泡排序法弄混了,平时直接习惯有冒泡法,后来只有 从书上一步一步的分析其数值的变化。 终于本质上的理解了两种排序的作用是如 何实现的。冒泡法是每比较一轮产生一个最小(大)的数放在第一个位置,而直 接排序法是找出数值最小(大)的小标与第一个调换。(5) . 在设计主函数时我用的是 switch 函数调用分函数, 在进行搜索时
5、我没加循 环结果只能查找一个人的不能进行查多个人和判断是否能查到此人。 后来我在搜 索法中加了个 while 循环问题就解决了。6). 在调试过程中我遇到的主要问题是输出姓名时第一个人的名字输出不出 来,后来我一句句的看源程序, 也不知道为什么。 我问班上同学才知道我用的是gets(namei) ;输入字符串占用了一个字符所以输出第一姓名时名字数输不出 来,我把它改成 scanf("%s",&namei); 就可以输出了。从这件事中我明白了 要学会多思考即使你是参考书上的也要每一步弄懂, 不然一个小的细节就会导致 程序出问题,我还是对这两种输入字符串函数没有本质的了
6、解。(7).程序有许多小问题都是在自己一遍遍调试下更正了, 比如程序差东西、 有 问题等,做好一个程序编程还是要自己慢慢探索,理解每一个函数语句。六心得体会与感受C 语言课程设计总有两周时间,在第一次上课老师交给我们任务不知从何 下手到最后将整套学生管理系统的程序准确无误的编出来, 对我来说无疑又是一 大进步,在这段时间里我遇到了不少的问题。 产生了许多的疑问, 但是随着自己 的追随问题的根源, 不断的温习书本上的知识, 反复进行上机的操作, 思路一步步的清晰起来了, 所遇到的一些问题也逐渐得到就解决, 本不是那么情愿做的程序到因为解决了一些问题所产生的成就感反到激起了我兴趣。 于是借着心中的
7、 那一股劲, 反复的程序进行摸索, 把以前很多没学好的地方都捡了起来, 还学会 了很多新的知识。 这一切都源于老师对我们的严格要求, 还有自己的刻苦专研才 有了这样的成果。 如果老师要求没有那么严格, 或者是自己不去努力是做不出来 学生管理系统的。在设计的过程中,在我印象中最深刻的挺多的。 冒泡和直接排序法的比较, 在二维数组的比较时也遇到了一些问题, 主要是对二维数组的概念不清楚, 性质 不了解,所以在运用时就有一些错误。 当然在设计过程中因为输入法的错误、 函 数层次不清晰变量名重复定义, 也花了很多时间去解决。 所以在这次编程过程中, 不仅仅只是完成作业而已, 更多的是要用一种肯专研的学
8、习态度, 养成一个良好 学习习惯。 作为一个合格的编程人员不仅仅要有专业知识, 还要有一个良好的编 程习惯和一颗仔细的心,更需要一种负责认真编程态度。七源程序 #include <stdio.h> #include <string.h>#define N 5 void input1(char nameN8,int score)/1. 输入函数/学生信息输入函数int i;for(i=0;i<N;i+)printf ("n请输入第d个学生姓名:",i+1);scanf("%s",&namei);printf (&quo
9、t;n请输入第个学生成绩:",i+1);scanf("%d",&scorei);do/do-while循环while(scorei<1|scorei>100) printf(" 输入有误 !n");printf(" 请重新输入成绩 :");scanf("%d",&scorei);while(scorei<1|scorei>100);getchar();/字符输入函数/2. 成绩排序输出(直接排序法)void sort1(char nameN8,int score)i
10、nt i,j,max,temp1;char temp2100;for(i=0;i<N-1;i+)max=i;for (j=i+1;j<N;j+) if(scoremax<scorej) max=j;temp1=scorei;scorei=scoremax;scoremax=temp1;strcpy(temp2,namei);/字符串复制函数strcpy()strcpy(namei,namemax);strcpy(namemax,temp2);for(i=0;i<N;i+) printf(" 姓名: %10s 成绩: %3dn",namei,score
11、i);/3. 成绩排序输出 ( 冒泡法)void sort2(char nameN8,int score)int i,j,t;char h100;for(j=0;j<N;j+)for(i=0;i<N-j;i+)if(scorei>scorei+1)t=scorei;scorei=scorei+1;scorei+1=t;strcpy(h,namei);strcpy(namei,namei+1);strcpy(namei+1,h);printf("The sorted result:n");for(i=0;i<N;i+) printf(" 姓名
12、: %10s 成绩: %3dn",namei,scorei);定义线性/4. 线性搜索法检索学生的成绩void search1(char nameN8,int score) /搜索法函数getchar();int a,i;char b;char str8;while(1)printf(" 请输入学生的姓名 :");gets(str);/输入一段字符串for(i=0;i<N;i+)a=strcmp(str,namei);/strcmp函数字符串比较函数)if(a=0) break;if(a!=0)printf("查无此人 !");else
13、if(a=0)printf("姓名:%10s 成绩:3dn",namei,scorei);getchar();printf("继续查询吗 Y/N:");b=getchar();getchar();if(b='y')|(b='Y')continue;elsebreak;/5. 对分搜索法检索学生的成绩void search2(int score,char nameN8)int a,b,c,i;char d;while(1)a=0;b=N-1;printf(" 请输入学生成绩 :");getchar();w
14、hile(a<=b)i=(a+b)/2;if(scorei=c)break;if(scorei<c)a=i+1;if(scorei>c)b=i-1;if(scorei!=c)printf(" 无此成绩 n");elseprintf("姓名 :%10s 成绩: %3dn",namei,scorei);printf(" 继续查询吗 Y/N:");d=getchar();if(d='y')|(d='Y')continue;elsebreak;void main() int scoreN;ch
15、ar nameN8;学生成绩管理系int a,b;printf(" *n");printf("*1.输入学生 信息*n");printf("*2.直接排序法*n");printf(" *3.冒泡排序法*n");printf(" 直 接 排序法n ");对分搜索法*n");printf(" * 5.*n");b=1;while(b=1)/while循环printf(" 请输入序号:");scanf("%d",&a);pr
16、intf("n");switch(a)/switch语句实现多分支选择结构case 1:printf(" 输入学生信息 n ");input1(name,score);break;case 2:sort1(name,score);break;case 3:printf(" 冒 泡 排法n ");sort2(name,score);break;case 4:printf(" 线 性 搜法n ");search1(name,score);break;case 5:printf("对分搜索法n ");search2(score,name);break;case 6:while(0);break;default:printf("1继续程序,2结束程序n");sea nf("%d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东省农业科学院作物研究所招聘科研助理人员备考题库及1套完整答案详解
- 2026年宁波市江北区国有资本投资控股有限公司人员招聘备考题库完整参考答案详解
- 2026年佛山市三水区三水中学引进高层次人才备考题库及一套答案详解
- 2025-2026学年厦门市翔安区逸夫小学公开招聘非在编合同教师备考题库及答案详解1套
- 2026年岱山县青少年宫公开招聘编外人员备考题库完整答案详解
- 2026年中建六局总承包工程有限公司招聘备考题库及1套参考答案详解
- 2026年厦门市嘉禾学校编外教师招聘备考题库及完整答案详解一套
- 2026年三亚大小洞天发展有限公司招聘经理备考题库及1套完整答案详解
- 2026年中山市三乡镇鸦岗小学招聘临聘体育教师备考题库及1套完整答案详解
- 2026年上海外国语大学附属外国语学校松江云间中学校园招聘备考题库及答案详解一套
- 建设单位项目安全生产保证体系
- 2026期末家长会:初三备战没有不辛苦的 教学课件
- 真空乳化设备维护与清洁操作手册
- 2025贵州铜仁市“千名英才·智汇铜仁”本地引才413人参考笔试题库及答案解析
- 2026年内蒙古商贸职业学院单招职业技能测试题库及参考答案详解一套
- 退赃后赔偿协议书
- 法律基础(西南政法大学)学习通测试及答案
- 信息通信信息化系统管理员操作规范竞赛考核试卷含答案
- DIP支付模式下骨科临床路径优化策略
- 高中生心理健康问题分析及干预策略
- 中学语文美育教育论文
评论
0/150
提交评论