《C语言课程设计》报告题目:成绩管理系统专业年级:自动化一班学号:姓名:指导教师:叶念渝2015年12月17日一.设计内容(1)输入功能:由键盘输入20个学生(姓名)的某门课程的学习成绩10~99分(也可超过)。(2)运算功能:将分数由低到高排序(用直接排序法和冒泡法),并显示学生姓名和对应的分数。(3)检索功能:用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)。(4)查询功能:对分搜索法检索某个学生的成绩(输入姓名,显示成绩)。二.设计要求(1)可以输入若干名学生信息(包括姓名/成绩等);(2)在源代码中将若干名同学的信息输出;(3)在源代码中能够将若干名同学的成绩排序(升序/降序均可);(4)可以根据不同的查询条件(线性/对分搜索)来查询到相关学生的信息;三.设计思路首先进入软件界面,以菜单为提示的成绩管理系统.分别建立输入学生信息函数输入学生信息,建立排序函数实现排序功能,建立查找函数实现查找功能.通过建立数组在函数运行中进行同步调换实现各信息间分联系,达到信息相对应的目的,在主函数中分别调用各功能函数完成程序目的.四.程序设计流程图1.学生信息输入函数2.直接排序法流程图3.冒泡排序法流程图4.线性搜索法流程图Y5.对分搜索法流程图子程序入口i=0;i1&&Score[i]<100no请重新输入输入完毕退出子程序yes重新输入i=0;iscore[i+1名字分数同步进行交换输出姓名和成绩交换完毕退出子程序6.主程序五.设计及调剂的过程中遇到的问题和解决方法(1).输入人的姓名时为什么要用二维数组?因为输入了多个人的名字所以我们要建立一个名字的二维数组。(2).在输入函数中我开始用的是if语句定义输入范围结果只提示一次错误。后来我加了一个do-while循环,就可以一直执行下去了。(3).在冒泡排序法中没有理解strcpy函数的用法把字符串复制到字符串中去了,真正用法是将字符串复制的字符数组中去。(4).将直接排序法和冒泡排序法弄混了,平时直接习惯有冒泡法,后来只有从书上一步一步的分析其数值的变化。终于本质上的理解了两种排序的作用是如何实现的。冒泡法是每比较一轮产生一个最小(大)的数放在第一个位置,而直接排序法是找出数值最小(大)的小标与第一个调换。(5).在设计主函数时我用的是switch函数调用分函数,在进行搜索时我没加循环结果只能查找一个人的不能进行查多个人和判断是否能查到此人。后来我在搜索法中加了个while循环问题就解决了。(6).在调试过程中我遇到的主要问题是输出姓名时第一个人的名字输出不出来,后来我一句句的看源程序,也不知道为什么。我问班上同学才知道我用的是gets(name[i]);输入字符串占用了一个字符所以输出第一姓名时名字数输不出来,我把它改成scanf("%s",&name[i]);就可以输出了。从这件事中我明白了要学会多查找的成绩与输入成绩相比较a=i+1a=i-1score[i]==c输出查找的人的信息输出“无此成绩”继续查找输入完毕退出子程序YNYscore[i]==cscore[i]c主程序入口case(1-6)进入相应的分函数界面输入完毕退出N思考即使你是参考书上的也要每一步弄懂,不然一个小的细节就会导致程序出问题,我还是对这两种输入字符串函数没有本质的了解。(7).程序有许多小问题都是在自己一遍遍调试下更正了,比如程序差东西、有问题等,做好一个程序编程还是要自己慢慢探索,理解每一个函数语句。六.心得体会与感受C语言课程设计总有两周时间,在第一次上课老师交给我们任务不知从何下手到最后将整套学生管理系统的程序准确无误的编出来,对我来说无疑又是一大进步,在这段时间里我遇到了不少的问题。产生了许多的疑问,但是随着自己的追随问题的根源,不断的温习书本上的知识,反复进行上机的操作,思路一步一步的...