1、数据结构课程设计报告课题名称:学生成绩管理系统专业班级:学号:姓名:指导老师:一、课题名称学生成绩管理系统二、课题设计的基本思想,原理和算法描述、基本思想:建立一个学生成绩管理系统,能够实现每位学生的成绩的录入、删除、修改、查找、排序(按成绩降序排序)等功能。2、原理:首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,然后完成主函数以验证各个函数功能并得出运行结果,最后调试改进。/3、算法描述定义项目的数据结构voiddisplay()coutsetw(6)namesetw(3)numsetw(3)scoreendl;/setw()设置输出宽度输出项目占6个字
2、符的位置,它由头文件iomanip定义friendvoidinsert();/定义插入(用友元函数方便调用类中成员)friendvoiddel();/定义删除friendvoidsearch();/定义查找friendvoidchange();/定义修改friendvoidsort();/定义每个学生数据private:charname15;/姓名intnum;学号intscore;/成绩;#include/使用标注命名空间调用函数,需要名空间的支持#include/I/O流控制头文件#include/文件操作的类和方法头文件usingnamespacest
3、d;/申请内存空间classstudentpublic:/定义为公共成员函数voidsetdata()cinnamenumscore;三、源程序及注释#include#include#includeusingnamespacestd;/申请内存空间classstudentpublic:/定义为公共成员函数voidsetdata()cinnamenumscore;voiddisplay()coutsetw(6)namesetw(3)numsetw(3)scoreendl;/setw()设置输出宽度输出项目占3个字符的位置,它由头文件iomanip定义friendvoidi
4、nsert();/插入friendvoiddel();/删除friendvoidsearch。;/查找friendvoidchange();/修改friendvoidsort();/排序private:charname15;intnum;intscore;studentstud1000;intN=0;voidenter()录入inti;coutN;cout请输入各学生的有关信息:endlendl;cout姓名学号成绩endlendl;for(i=0;iN;i+)studi.setdata();coutendl输出各学生的有关信息:endlendl;cout
5、姓名学号成绩”endl;for(i=0;iN;i+)studi.display();voidchoice()/操作coutendl;cout操作完成!endl;coutendl;cout”请选择要继续进行的操作:1插入2删除3查找4修改5排序0取消操作;intmain()主函数chara;enter();couta;switch(a)case1:insert();choice();break;/添力口case2:del();choice();break;删除case3:search();choice();break;/查找case4:change();ch
6、oice();break;/修改case5:sort();choice();break;/排序case0:break;return0;voidinsert()/插入studentt;cout请输入要插入的学生信息:endlendl;cout”姓名学号成绩t.numt.score;N+;studN-1=t;inti;if(N0)coutendl输出各学生的有关信息:endlendl;cout姓名学号成绩”endl;for(i=0;iN;i+)studi.display();elsecoutendl不存在任何学生信息!”endl;voiddel()删
7、除inti,n=0,number;studentt;if(N!=0)coutnumber;for(i=0;i0)(coutendl输出各学生的有关信息:endlendl;cout姓名学号vv”成绩endl;for(i=0;iN;i+)(studi.display();elsecoutendl不存在任何学生信息!endl;voidsort。/排序(inti,j;studentt;for(i=0;iN-l;i+)for(j=0;jvN-l-i;j+)if(studj.score0)(coutendl输出各学生的有关信息:endlendl;cout姓名学号vv”成绩end
8、l;for(i=0;i0)coutnumber;for(i=0;iN;i+)if(studi.num=number)n+;cout姓名学号成绩”endl;coutsetw(6)setw(3)studi.numsetw(3)studi.scoreendl;if(!n)coutendl”该学生不存在!endl;elsecoutendl不存在任何学生信息!”0)coutnumber;for(i=0;iN;i+)if(studi.num=number)n+;studi.numstudi.score;if(!n)coutendl该学生不存
9、在!”endl;elsecoutendl不存在任何学生信息!”endl;四、运行示例及结果分析EifFffRJlfff#屈圳filti清理件艘城也打的It沮揩漓霹判查扶*悟理排序瞬成1恨一结果分析:实现功能主要有:录入学生数据输出学生数据1、插入学生数据输出学生数据2、删除学生数据输出删除后的学生数据3、查找学生输出改学生数据4、修改学生数据输出修改后的数据5、按成绩降序排序输出学生数据0退出五、调试和运行程序过程中产生的问题及采取的措施在做的时候,我把统计功能改成了排序,即对学生成绩进行降序排序。在修改了main函数后,功能界面被改成与老师所给的运行程序界面相一致。在进行完各种操
11、,不怎么美观。因此,还可以将main函数的输出界面设计的美观一些。再有就是在做完后发现可以将输出直接定义一下friendvoidprint();,这样就可以省去在录入,插入,删除,修改的功能函数后增加输出修改后的函数,但是由于程序比较简单,因此这样也是同样效果,差距不是很大,但是如果做的是一个很冗长的程序的话,可能就会很浪费,并影响到运行速度,因此在以后的设计中,我会先尽量思考以最简练的编程来实现相同的效果。七、总结实践出真知,在课堂上,接受理论的知识,且把每一个内容都细分切块,最终学到的却不能完全有效的整合到一起,在做这个课程设计的时候,涉及到很多学过的内容,比如线性表(虽然最终没有用线性表来构建,但是从中我知道了自己的基础知识还很不扎实,仍需好好努力),友元函数,