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