数据结构C语言课程设计任务书完整版_第1页
数据结构C语言课程设计任务书完整版_第2页
数据结构C语言课程设计任务书完整版_第3页
数据结构C语言课程设计任务书完整版_第4页
数据结构C语言课程设计任务书完整版_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计报告题目_、学生管理系统的设计与实现——采用顺序表结构实现题目二、图的算法实现——采用邻接表和邻接矩阵结构实现班级:―计算机101姓名:—刘文辉指导教师:_董跃华成绩: 必W女学信息工程学院2012年06月18日TOC\o"1-5"\h\z\o"CurrentDocument"1 需求分析 3\o"CurrentDocument"目的 3\o"CurrentDocument"功能 3\o"CurrentDocument"2详细设计 3\o"CurrentDocument"2.1 数据类型 4\o"CurrentDocument"2.2总体功能流程图 4\o"CurrentDocument"伪码算法 53 调试分析 14遇到的问题 14\o"CurrentDocument"算法的时空分析 14改进设想 14\o"CurrentDocument"经验体会 14\o"CurrentDocument"测试结果 15参考文献 错误!未定义书签。1、需求分析1.1、 目的设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成绩)的顺序表,可以不考虑重名的情况熟练查找和排序的数据结构算法熟练掌握数据结构复习C语言的各个知识点1.2、 功能根据指定学生个数,逐个输入学生信息;逐个显示学生表中所有学生的相关信息;给定一个学生信息,插入到表中指定的位置;删除指定位置的学生记录;统计表中学生个数;利用直接插入排序或者折半插入排序按照姓名进行排序;利用快速排序按照学号进行排序;根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩;根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和成绩。2、详细设计2.1、数据类型1、本次程序采用顺序存储结构,利用结构体数组的优点进行设计。ADTList{数据对象:D={ailaiEElemset,i=1,2, n,n>=0}数据关系:R1={<a(i-1),a(i)>|a(i-1),a(i)eD,i=2, n}基本操作:Last_locate()操作结果:得到最后一个元素的位置基本操作:Stu_Insert()操作结果:学生信息的插入基本操作:Stu_Insert_appoint()操作结果:学生信息插入到指定位置基本操作:Stu_Delete_appoint()操作结果:删除某位置上的学生信息基本操作:Stu_OutAll()操作结果:学生信息的输出基本操作:Stu_Count()操作结果:学生个数的统计基本操作:InsertSort()操作结果:按姓名直接排序基本操作:Stu_Partition(intlow,inthigh)操作结果:按学号快速排序基本操作:Stu_Search_Bin()操作结果:非递归折半查找基本操作:DG_Stu_Search_Bin(charkey[10],intlow,inthigh)操作结果:递归折半查找}ADTList}2.2、总体功能流程图1、功能模块iiiiiiiiiJ-fS-ly'<main)::; 「1FJ. 1[ L„.!1FVM11ii'■,ci:插入信以:一十…X-r…-HI除信日: K …T---,:既il侣息;折半插入排序' 7D1 桦序:半 维 1~2、主界面流程图]|IMftlSuc1<|Amikcy.2.^iuh2)&.uqiEu二ul]|IMftlSuc1<|Amikcy.2.^iuh2)&.uqiEu二ul:gjiiKJsi叫4&luVuLlLII)^iuHiyn.c■..-m:-t;■:网时I.) )2.3、伪码算法1、插入操作的伪代码及流程图intStu_Insert(){scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&stu[i].number);scanf("%s”,&stu[i].name);scanf("%d”,&stu[i].score);}return1;}

2、插入学生信息到指定位置的伪代码及流程图intStu_Insert_appoint(){scanf("%d",&j);//j为插入的位置for(i=Last_locate();i<=j;i--)//进行元素后移操作{tu[i+1].number=stu[i].number;stu[i+1].name[15]=stu[i].name[15];stu[i+1].score=stu[i].score;}scanf("%d”,&stu[j].number);scanf("%s”,&stu[j].name);scanf("%d",&stu[j].score);}

3、删除指定位置的学生信息的伪代码及流程图intStu_Delete_appoint(){scanf("%d”,&j);free(stu[j])for(i=j+1;i<=Last_locate();i++){stu[i-1]=stu[i];}return1;}

4、学生信息的全部结果输出的伪代码及流程图intStu_OutAll(){inti=0;while(stu[i].number){printf("%d\t\t”,stu[i].number);printf("%s\t\t”,stu[i].name);printf("%d\t\t\n”,stu[i].score);i++;}return1;}

5、学生数量统计的伪代码及流程图intStu_Count(){inti=0;while(stu[i].number){i++;}printf("学生总人数:\t");printf("%d",i);return1;}

6、快速排序的伪代码及流程图intScore_Partition(){Privotkey=stu[low].key;While(low<high){While(low<high&&stu[high].key>=privotkey)high;Stu[low]63Stu[high]While(low<high&&Stu[low].key<=privotkey)++lowStu[low]63Stu[high]}returnlow;}

7、直接插入排序伪代码及流程图VoidInsertSort(){For(i=2;i<=Last_locate();++i){If(LT(stu[i].key,stu.[i-1].key)){Stu[0]=stu[i]Stu[i]=stu[i-1]For(j=i-2;LT(stu[0].key,stu[j].key);--j)Stu[j+1]=stu[j];Stu[j+1]=stu[0]}}Stuftlpsiu.l]新u〔i]「uu[i・l]:-■i■,河HE,“ufil8、折半查找非递归伪代码及流程图intSearch_Bin(SSTableST,intkey){intlow,high,mid;low=1;high=ST.length;while(low<=high){mid=(low+high)/2;if(key==ST.elem[mid].key)returnmid;elseif(key<ST.elem[mid].key)high=mid-elselow=mid+1;return0;:Lo*v=niid+114…I-I:……wi:1!I:-4——+:Lo*v=niid+114…I-I:……wi:1!I:-4——+9、折半查找递归伪代码及流程图intDGSearch_Bin(SSTableST,intkey,intlow,inthigh){intlo,hig,mi;low=1;hig=ST.length;mid=(lo+hig)/2;if(ST.elem[mi].key==key)returnmid;if(ST.elem[mi].key>key)returnD(ST,key,lo,mi-1);if(ST.elem[mi].key<key)returnD(ST,key,mid+1,high);return0;MuHlgIriLKhli'l4---1■:Ki:-iunimidSlup]_k-ey<key3、调试设计3・1、遇到的问题几乎没什么大问题3・2、算法的时空分析T(n)=O(n2)3・3、改进设想在进入某个功能模块时,或者某个功能的某个步骤时,可以允许出现输入错误,因此,要实现进入某个步骤时实现撤销操作・・・..

3.4、经验体会由于第一次写这么复杂的程序,开始有点无从下手,在选择合适的数据结构的时候不知道怎么去选,只能一个一个的去试,最后从结合了c语言的结构体和程序需要用到的算法中慢慢摸索到了合适的数据结构,写程序时会出现好多小的语法问题或者逻辑问题,一点点逻辑问题就会让人抓狂。但最后还是静下心来梳理情绪,慢慢的找到了问题。开始的时候没有好好理解折半插入排序。便把第0个位置也存了信息。导致哨兵没地方放。然后又全部修改了。也许哨兵不一定要放在第0个位置。但开始遇到的这个问题时,脑子里就只有一个想法,就是全部把信息结构修改一遍,虽然这看起来不是个好方法,但对于这种小程序来说,还是比较容易修改。总体来说,收获很大。。。。4、测试结果欢迎使用坚生信息管理系统系统功能荣单关到关到人半速谨非

息酉心置生仃

有一^孟进面

生生生定黑进名号界

学还学王

输显回

1234567890找查置录序查半应■&排半折息定虫入序酒•一刘文辉请选择您需要的菜单项:4.2查询学生信息名姓辉辉辉生文成口_名姓辉辉辉生文成口_号文文文9879-OJ-V2010001血丽明20100034.3添加学生信息到指定位置

请选择您需要的菜单项,{入富要添加的学生信息的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论