欢迎来到天天文库
浏览记录
ID:9402102
大小:287.50 KB
页数:14页
时间:2018-04-30
《《c语言课程设计》报告--学生成绩管理系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C语言课程设计报告设计题目:学生成绩管理系统学部:信息学部专业:自动化班级:学生:学号:指导教师:设计时间:2015年12月1日-16日2015年12月19日一、设计内容1:由键盘输入20个学生的姓名以及某门课程的学习成绩10~99分(也可超过)。2:分别使用直接排序法和冒泡排序法对所输入的学生成绩精心排序,并显示学生姓名和对应的分数。3:用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)4*:对分搜索法检索某个学生的成绩(输入姓名,显示成绩)二、设计思路1.建立一个新建函数:建立两个数组(p[100][10]、score[10
2、0]),并分别将学生姓名及其成绩放在其中。2.直接排序法进行排序:即从第一个数开始,逐个与后面的数相比较,如果比较结果是前面的数大则交换,否则不交换,保证较小的数在前面。直到比较到最后两个数据。假设数组有n个元素的话,第一个数需要经过n-1次比较,第二个数需要进行n-2次比较,依此类推……3.冒泡排序法进行排序:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的排序码(两两比较),若发现逆序则交换,使排序码较大的元素逐渐从前部移向后部(从下标较小的单元移向下标较大的单元),就象水底下的气泡一样逐渐向上冒。4.线性
3、搜索法进行搜索:从数组的一端开始,顺序扫描数组,依次将扫描到的数组值和待找的值K相比较,若相等,则查找成功,若整个数组扫描完毕,仍末找到关键字等于K的元素,则查找失败。5.对分搜索法进行搜索:首先将待查值ch与数组score[low]到score[high]的中点score[mid]上的值进行比较,若相等,则查找成功;否则,若chscore[mid],则令low=mid+1,在score[low]到score[hi
4、gh]中继续查找。如此不断进行下去直到找到姓名为ch的元素,若当前的查找区间为空,表示查找失败。三、程序设计流程图开始1.主体设计:结束是否退出此程序输入6输入3输入4输入5冒泡排序法排序输入2输入1直接排序法排序对分搜索法搜索线性搜索法搜索否是退出程序进入成绩录入系统主菜单选择1.直接排序法:1.冒泡排序法1.线性搜索法:对分搜索法:四、所遇问题及其解决方案1.之前在使用时一直没有考虑到如果搜索时输入的名字之前没有会怎么样,导致在一次操作过程中程序直接崩溃,于是之后加入了一个if语句,如果没有找到,则会输出“查无此人”。2.在之
5、前的程序中,每输入一个学生成绩就会需要重新选择进入新建程序,并且会刷新屏幕,之后在主函数中加入了一个do-while语句,则解决此问题。五、体会及收获虽然之前的C语言课程没有挂科,但是当时没有雪的很认真,并且到现在也有一段时间了,所以还是有所遗忘。这学期有开设了C语言课程设计这门课,也算是给了我一个机会重新学习一番,因此,在此次的程序设计中,我是一边学一边做,真正的算是把书本知识与时间相结合,因此也雪的更加牢固,体会也更加深刻。期初在拿到题目的时候,其实我是很紧张的,因为不知道自己是否能够顺利的完成,但是通过不断地摸索,不断地学习
6、,我也得到了很大的进步。有时候甚至因为自己完成了一个模块的小程序而欣喜不已。特别是在之后的改进过程中,更是一边操作,一边学习,一边改进,让自己的程序做到更好。知道最后,虽然这个程序还有很多值得改进的地方,可我还是特别的激动,因为这个是靠我自己独立学习完成的第一个比较完整的程序了。最后,我想说,事在人为,只要肯努力,一定会做出成果。六、源程序#include#include#includeintcount=0;//新建学生信息voidNew(charp[][10],doubl
7、e*s){printf("请输入学生姓名:");scanf("%s",p+count);printf("请输入分数:");scanf("%lf",s+count);count++;}//直接排序法voidSelectSort(charp[][10],double*s,intn){inti,j;doublek;//分数交换的中间变量chara[10];//姓名交换的中间变量for(i=0;is[j]){k=s[i];s[i]=s[j];s[j]=k;strcpy(
8、a,p[i]);//利用strcpy以及中间变量a[10]对字符数组进行交换strcpy(p[i],p[j]);strcpy(p[j],a);}for(i=0;i
此文档下载收益归作者所有