长春大学课程设计纸共17页第1页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊目录一、设计目的.......................................................2二、设计内容.......................................................3三、设计要求.......................................................4四、设计过程.......................................................41.算法思想分析................................................42.算法描述与实现..............................................53.系统测试....................................................7五、设计总结......................................................11参考文献..........................................................12附录..............................................................13长春大学课程设计纸共17页第2页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊一.设计目的1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。长春大学课程设计纸共17页第3页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊二.设计内容2.1开发环境操作系统:Windows7开发工具:MicrosoftVisualC++6.0开发语言:C++2.2功能简介:本程序采用C++编写,用于管理学生信息,基本功能有批量添加学生信息,单个添加学生信息,按学号查找学生,按姓名查找学生,按学号删除学生信息,排序输出全部学生信息以及退出功能。程序流程:开始选择功能批量添加按学号查找按姓名查找添加信息按学号删除排序输出结束长春大学课程设计纸共17页第4页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊三.设计要求1)程序设计要求:①采用交互工作方式,设计功能菜单;②建立数据文件,数据包含学生的自然信息和成绩信息(设计几门课以及总成绩);③对如下关键字:姓名、学号、各科成绩进行排序(冒泡、选择、插入排序等任选一种)。2)用二分查找实现如下查询:①按姓名查询②按学号查询3)用堆排序找出总成绩排名的前5名学生4)输出任一查询结果(可以连续操作)四.设计过程1.算法思想分析根据设计要求,首先定义三个数组,分别存放学号、姓名、成绩.typedefstructstud//学生信息结构{longnum;charname[20];floatscore;}Stud;然后编写函数,实现添加、查找、删除、排序、退出长春大学课程设计纸共17页第5页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊功能,对数组元素进行操作。2.算法描述与实现添加信息:定义添加信息函数,将输入的信息添加到数组中:voidinser(longb){Node*last,*current,*p;current=head;while(current!=NULL&&bcurrent-student.num){last=current;current=current-next;}查找学生:voidsearchname(char*s)//按姓名查找{Node*p=head;intflag=0;printf(\n学号姓名成绩:\n);while(p!=NULL){if(strcmp(p-student.name,s)==0){printf(%ld%s%f\n,p-student.num,p-student.name,p-student.score);flag=1;p=p-next;continue;}elsep=p-next;}if(!flag)printf(没有找到相关信息);}长春大学课程设计纸共17页第6页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊voidfind(longb)//按姓名查找{Node*p=head;while(p!=NULL&&b!=p-student.num)p=p-next;if(!p)printf(Nofound\n);else{printf(\n学号姓名成绩\n);printf(%ld%s%f\n,p-student.num,p-student.name,p-student.score);}}输出信息:voidprint(){Node*p=head;printf(\n学号姓名成绩:\n);while(p!=NULL){printf(%ld%s%f\n,p-student.num,p-student.name,p-student.score);p=p-next;}printf(\n);}长春大学课程设计纸共17页第7页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊3.系统测试1.菜单用户运行程序后,显示如下所示菜单,用户根据菜单提示进行操作(如图2.1)。图2.12.批量添加用户选择批量添加学生信息功能进行批量添加,可连续添加,按0结束添加操作(如图2.2)。图2.2长春大学课程设计纸共17页第8页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊3.按学号查找学生将学生信息录入之后,若想查找某个学生,用户可选择按学号查找学生信息(图2.3)。图2.34.按姓名查找学生将学生信息录入之后,若想查找某个学生,用户可选择按姓名查找学生信息(图2.4)。图2.4长春大学课程设计纸共17页第9页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊5.添加信息用户可以在批量添加后在单个添加学生信息(图2.5)。图2.56.按学号删除学生信息用户可根据情况对已添加的学生信息进行删除,通过学号删除(图2.6)。图2.6长春大学课程设计纸共17页第10页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊7.排序输出程序可以将已添加的学生按照成绩的降序排列输出(图2.7).图2.78.退出操作结束后按0退出程序(图2.8)。图2.8长春大学课程设计纸共17页第11页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊五.设计总结通过一周的课程设计,我从中受益匪浅,使得我对数据结构这门课有了更深一步的认识。在设计过程中,我们发现问题,解决问题,一同探讨问题,在老师的帮助下把问题一一解决。在解决问题的过程中得到了成长,在与同学的合作过程中,我获益良多,提高了自己的团队合作能力和实际动手能力,在亲自动手的同时提升自己,锻炼自己。通过这次设计,我深深的感受到了做系统是一件十分复杂周密的事情,不能有半点的疏忽,需要一个人有周密的思考能力,分析问题、处理问题的能力,还要有足够的耐心。长春大学课程设计纸共17页第12页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊参考文献《数据结构程序设计题典》李春葆等编清华大学出版社《数据结构(C语言版)》黄国瑜叶乃菁编清华大学出版社《数据结构课程设计》苏仕华等编机械工业出版社长春大学课程设计纸共17页第13页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊附录:源代码#includestdio.h#includestring.h#includestdlib.htypedefstructstud//学生信息结构{longnum;charname[20];floatscore;}Stud;typedefstructnode{Studstudent;structnode*next;}Node;Node*head=NULL;voidread(void);voidinser(longb);voidprint();voidfind(longb);voidsearchname(char*s);Node*del(longn);voidsort(intflag);voidmenu();voidmain(){charchoose;intflag=1;while(flag){menu();//调用功能菜单函数,显示菜单项。printf(请选择功能:);choose=getchar();switch(choose){case'1':read();//调用建立链表的函数;输出链表信息;print();printf(\nPressanykeyContinue);getchar();break;case'2'://调用按学号查找学生信息的函数;并输出查找结果信息;longc;长春大学课程设计纸共17页第14页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊printf(输入要查找的学号:);scanf(%ld,&c);find(c);printf(\nPressanykeyContinue.);getchar();break;case'3'://调用按姓名查找学生信息的函数;并输出查找结果信息;chars[20];printf(输入要查找的姓名:);scanf(%s,s);searchname(s);printf(\nPressanykeyContinue.);getchar();getchar();break;case'4'://调用根据学号删除某个学生信息的函数;并输出删除后的链表信息;Node*h;longn;printf(输入要删除的学生学号:);scanf(%ld,&n);h=del(n);if(h==NULL)printf(Nofindthestudent\n);elseprint();printf(\nPressanykeyContinue.);getchar();getchar();break;case'5'://调用插入新的学生信息的函数;并输出插入后的链表信息;longa;printf(输入新学号:\n);scanf(%ld,&a);inser(a);print();printf(\nPressanykeyContinue.);getchar();getchar();break;case'6'://调用按分数降序排序输出的函数;并输出排序后的链表信息;sort(1);print();sort(0);printf(\nPressanykeyContinue.);getchar();getchar();break;case'0'://结束程序运行flag=0;printf(\n***TheEnd!***\n);break;长春大学课程设计纸共17页第15页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊default:printf(\nWrongSelection!(选择错误,重选)\n);getchar();}}}voidmenu()//综合作业功能菜单{printf(\n学生信息管理系统\n);printf(\n***************