




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计 设 计 报 告 制作人: 学号: 指导老师: 时间:一、设计内容和设计要求 1、设计内容 题目:学生成绩管理系统设计 该系统包含20个学生姓名和成绩信息,可对成绩进行排序, 并实现由姓名查找成绩及由成绩查找姓名。 2、设计要求 1)由键盘输入20个学生(姓名)的某门课程的学习成 绩6099分。 2)将分数由低到高排序(用直接排序法和冒泡法),并显示学生姓名和对应的分数。 3) 用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)。 4 )*对分搜索法检索某个学生的成绩(输入成绩,显示姓名)。2、 设计思路 首先是要建立20个学生信息,即学生姓名和学生成绩,使用子函数input输入,学生成绩使用一维数组,学生姓名使用二维数组。然后分别定义四个子函数,即直接排序法、冒泡排序法和线性查找法、对分查找法。在两个排序法中,用字符串拷贝函数来实现姓名的交换,另外,在用成绩查找姓名时,可以用直接查找,也可以用对分查找法,在这里我两种方法都使用了。最后在主函数中来设计人机界面,用switch函数来实现操作选择,对应的情况中就调用之前定义的子函数来完成排序或查找。3、 程序设计流程图 1、程序总体流程 开始 输入学生姓名和成绩 主菜单 排序 退出 查找 直接排序 冒泡排序 查找成绩 查找姓名 对分查找 2、直接排序法流程图子程序入口将i赋给min将i+1赋给j scorej与scoremin交换同时strcp实现namej与namemin交换全部比较完毕,子程序结束判断是否交换判断scorejscorej+1?N,继续执行YNY4、 线性搜索法NY 子程序结束 不存在此学生输出学生姓名和成绩 For循环检索namei 输入姓名字符ch 子程序入口判断namei=ch? 5、对分搜索法k=scoreikscorei (n+m)/2赋给in赋0值,m赋下标最大值 子程序入口 输入成绩k判断k与scorei的大小关系子程序结束 找到,输出学生成 绩和姓名i-1赋给mi+1赋给n 4、 程序设计中遇到的问题和解决方案最开始编程时,直接排序和冒泡排序法中都是通过swap函数来实现成绩交换和姓名交换,以达到排序目的,但在主函数中调用时却调用不了,程序在排序时就不能正常运行,我的解决方案就是去掉swap函数,因为有可能有些函数的调用有限制条件,这样改变之后,就不存在限制问题,可以正常排序。另外一个问题就是姓名数组的交换问题,这个之前是用中间变量的方式实现交换,结果调试时显示非法,于是经过多次改变和尝试,发现姓名用二维数组更不容易出现问题,于是就将姓名设置为二维数组,然后用字符串拷贝函数来实现交换,以达到最终排序的目的。这样解决之后,一方面可以使姓名不至于限制在一个字符内,另外一个好处就是解决了排序过程中姓名交换的问题。5、 源程序(含注释)及运行界面1、源程序#include#include#include#define NUM 20void input(int a,char b30) /*子函数input输入20个学生姓名*/int i;for(i=0;i99|ai60)printf(error!n); /*成绩大于99或小于60则显示错误*/i=i-1;void zhijie(int a,char b30) /*直接排序法*/int i,j,min,temp;char temp130;for(i=0;iNUM-1;i+) min=i; for(j=i+1;jNUM;j+)if(ajamin)temp=aj;aj=amin;amin=temp;strcpy(temp1,bj); /*字符串拷贝函数进行字符数组交换*/strcpy(bj,bmin);strcpy(bmin,temp1);printf(排序后的学生姓名和成绩为:n);for(i=0;iNUM;i+)printf(%s,%dn,bi,ai);void maopao(int a,char b30) /*冒泡排序法*/int i,j,temp;char temp130;for(i=0;iNUM-1;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;strcpy(temp1,bj);strcpy(bj,bj+1);strcpy(bj+1,temp1); printf(排序后的学生姓名和成绩为:n); for(i=0;i=NUM-1;i+) printf(%s,%dn,bi,ai);void xian1(int a,char b30) /*线性查找,由姓名查找成绩*/char ch30;int i,flag=0;scanf(%s,ch);for(i=0;iNUM;i+)if(strcmp(ch,bi)=0)printf(该学生成绩为%dn,ai);flag=1;break;if(flag=0)printf(No found!n);void xian2(int a,char b30) /*由成绩查找姓名*/int i,flag=0;int k;printf(请输入成绩:);scanf(%d,&k);for(i=0;iNUM;i+)if(k=ai)printf(该学生姓名为%s,成绩为%dn,bi,ai);flag=1;break;if(flag=0)printf(NO found!n);void duifen(int a,char b30) /*对分查找,由成绩查找姓名(排序后)*/ int i,n,m,k;printf(对分查找,请输入成绩:);scanf(%d,&k);n=0;m=NUM-1;if(kaNUM-1)printf(error!n);while(nai)n=i+1;elsem=i-1;if(ai!=k)|(nm)printf(NO found!n);void main() /*主函数及界面*/int x,t,scoreNUM;char nameNUM30;printf(*n);printf( 欢迎来到学生成绩管理系统 n);printf(*n);printf(请输入20个学生的姓名和成绩n);input(score,name);printf(输入的学生姓名和成绩分别为:n);for(x=0;xNUM;x+)printf(%s,%dt,namex,scorex);printf(n);printf( *学生成绩管理系统* n); printf(*成绩排序直接法请按0 成绩排序冒泡法请按1*n);printf(*姓名查找方法一请按2 成绩查找方法二请按3*n);printf(* 退出系统请按4 *n);printf( 请选择:t);while(1)scanf(%d,&t);switch(t) /*操作选择*/ case 0: zhijie(score,name); duifen(score,name);break; case 1: maopao(score,name); duifen(score,name);break; case 2: printf(请输入学生姓名:n); xian1(score,name);break; case 3: xian2(score,name);break; case 4: exit(0); /*退出系统*/ break; default: printf(请在0到4之间选择!n);2、 运行界面 输入学生信息 主菜单 直接排序 冒泡排序 线性查找 对分查找 6、 体会及收获 1、关于体会这次C语言课程设计给我最大的体会是充分调用了 我们已有的C语言知识储备,我想,难度就在于这里,要求我们对每一个知识点,每一个内容板块都了如指掌。如果有哪里不清楚,编程时就会频繁出错,或者是达不到想要的结果,比如像循环语句、条件语句、选择语句这些常用的就必须烂熟于心。如遇到问题,尝试独立思考,若还没有解决就再翻书或找找资料,自行琢磨,不断尝试用新的方法解决问题也是给我的一个很深的体会。2、 关于收获 这次有以下几方面收获: 1)再次温习了所学的C语言知识,加深了理解,同时之前没有注意的一些细节问题引起了重视;2)遇到瓶颈时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场酒类活动方案
- 员工按摩放松活动方案
- 员工外出团建活动方案
- 国庆店里活动方案
- 哈巴狗音乐活动方案
- 国庆假日采风活动方案
- 国防中队退役活动方案
- 品牌用户分享活动方案
- 国旗庆祝活动策划方案
- 团史打卡活动策划方案
- 完整版高中古诗文必背72篇【原文+注音+翻译】
- 反分裂反渗透教育主题班会
- 2024年甘肃省普通高校招生本科批(C段)历史类投档最低分数线
- 2024年福州第十一中学招聘笔试真题
- 【泉州:寒街孤影寻暖意 一抹亮色映霜花】中原地产2024年泉州楼市分析报告正式版
- 小学生反分裂课件
- 外科病房医院感染防控工作职责
- DB34∕T 3262.2-2018 普通公路养护预算 第二部分:定额
- 2025年省定远县第三批“曲阳雁归”工程公开招录50名村(社区)干部高频重点提升(共500题)附带答案详解
- 旅游学概论(李天元)课件
- 大数据技术原理与应用-林子雨版-课后习题答案(文档).文档
评论
0/150
提交评论