版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 数据结构课程设计报告题目一、学生管理系统的设计与实现 采用顺序表结构实现题目二、图的算法实现采用邻接表和邻接矩阵结构实现班 级:_计算机101_姓 名:_刘文辉_指导教师:_董跃华_成 绩:_ 信息工程学院 2012 年 06月18 日目 录 1、 需求分析1.1、 目的设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成绩)的的顺序表,可以不考虑重名的情况 熟练查找和排序的数据结构算法 熟练掌握数据结构 复习C语言的各个知识点1.2、 功能(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 给定一个学生信息
2、,插入到表中指定的位置;(4) 删除指定位置的学生记录;(5) 统计表中学生个数;(6) 利用直接插入排序或者折半插入排序按照姓名进行排序;(7) 利用快速排序按照学号进行排序;(8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩;(9) 根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和成绩。 2、详细设计2.1、数据类型1、 本次程序采用顺序存储结构,利用结构体数组的优点进行设计。ADT List数据对象:D=ai|aiElemset,i=1,2,n,n=0数据关系:R1=|a(i-1),a(i) D,i=2,n基本操作:Last_locate(
3、)操作结果:得到最后一个元素的位置基本操作:Stu_Insert()操作结果:学生信息的插入基本操作:Stu_Insert_appoint()操作结果:学生信息插入到指定位置基本操作:Stu_Delete_appoint()操作结果:删除某位置上的学生信息基本操作:Stu_OutAll() 操作结果:学生信息的输出基本操作:Stu_Count()操作结果:学生个数的统计基本操作:InsertSort()操作结果:按姓名直接排序基本操作:Stu_Partition(int low,int high)操作结果:按学号快速排序基本操作:Stu_Search_Bin ()操作结果:非递归折半查找基本操
4、作:DG_Stu_Search_Bin(char key10,int low,int high)操作结果:递归折半查找 ADT List2.2、总体功能流程图1、功能模块2、主界面流程图2.3、伪码算法1、插入操作的伪代码及流程图int Stu_Insert()scanf(%d,&n);for(i=0;in;i+) scanf(%d,&stui.number); scanf(%s,&); scanf(%d,&stui.score);return 1;2、插入学生信息到指定位置的伪代码及流程图int Stu_Insert_appoint() scanf(%d,&j);/j为插入
5、的位置 for(i=Last_locate();i=j;i-)/进行元素后移操作 tui+1.number=stui.number;stui+1.name15=15;stui+1.score=stui.score;scanf(%d,&stuj.number);scanf(%s,&);scanf(%d,&stuj.score);3、删除指定位置的学生信息的伪代码及流程图int Stu_Delete_appoint()scanf(%d,&j);free(stuj)for(i=j+1;i=Last_locate();i+)stui-1=stui;return 1;
6、 4、学生信息的全部结果输出的伪代码及流程图int Stu_OutAll()int i=0;while(stui.number)printf(%dtt,stui.number);printf(%stt,);printf(%dttn,stui.score);i+;return 1;5、学生数量统计的伪代码及流程图int Stu_Count()int i=0;while(stui.number)i+;printf(学生总人数:t);printf(%d,i);return 1;6、快速排序的伪代码及流程图int Score_Partition()Privotkey = stulow
7、.key;While(lowhigh)While(low=privotkey) high;StulowStuhighWhile(lowhigh&Stulow.key=privotkey) +lowStulowStuhighreturn low;7、直接插入排序伪代码及流程图Void InsertSort()For(i=2;i= Last_locate();+i)If(LT(stui.key,stu.i-1.key)Stu0=stuiStui=stui-1For(j=i-2;LT(stu0.key,stuj.key);-j)Stuj+1=stuj;Stuj+1=stu08、折半查找非递归伪代码及
8、流程图int Search_Bin (SSTable ST, int key ) int low, high, mid; low = 1; high = ST.length; while (low = high) mid = (low + high) / 2; if (key=ST.elemmid.key) return mid; else if (keykey) return D(ST,key,lo,mi-1); if(ST.elemmi.keykey) return D(ST,key,mid+1,high); return 0;3、 调试设计3.1、遇到的问题几乎没什么大问题3.2、算法的
9、时空分析T(n)=O(n2)3.3、改进设想在进入某个功能模块时,或者某个功能的某个步骤时,可以允许出现输入错误,因此,要实现进入某个步骤时实现撤销操作.3.4、经验体会由于第一次写这么复杂的程序,开始有点无从下手,在选择合适的数据结构的时候不知道怎么去选,只能一个一个的去试,最后从结合了C语言的结构体和程序需要用到的算法中慢慢摸索到了合适的数据结构,写程序时会出现好多小的语法问题或者逻辑问题,一点点逻辑问题就会让人抓狂。但最后还是静下心来梳理情绪,慢慢的找到了问题。开始的时候没有好好理解折半插入排序。便把第0个位置也存了信息。导致哨兵没地方放。然后又全部修改了。也许哨兵不一定要放在第0个位置。但开始遇到的这个问题时,脑子里就只有一个想法,就是全部把信息结构修改一遍,虽然这看起来不是个好方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学林学(林学进阶技巧)试题及答案
- 5.5《分数基本性质》(教学课件)-五年级 数学上册 北师大版
- 工程材料检测培训课件
- 工程施工安全培训
- 工程师思维培训
- 2026年食源性疾病和食品标签培训考试试题
- 安徽六校2026年元月高三素质检测考试思想政治试卷(含答案详解)
- 手术AI与多模态数据的融合应用
- 成本优化策略
- 安全培训认证协议书
- 《宪法学》课后习题及答案
- 租赁手机合同范本
- CJJT269-2017城市综合地下管线信息系统技术规范正式版
- 船舶电站及其自动化装置 课件 10 船舶照明系统
- 2024驾校合伙经营简单协议书
- 知道网课智慧树《失智失能老人整合照护(浙江中医药大学)》章节测试答案
- JT-T-883-2014营运车辆行驶危险预警系统技术要求和试验方法
- 适用于新高考新教材天津专版2024届高考英语一轮总复习写作专项提升Step3变魔句-提升描写逼真情境能力课件外研版
- 元宇宙技术与应用智慧树知到期末考试答案章节答案2024年中国科学技术大学
- 竹雕的雕刻工艺
- 社交媒体网络虚假信息传播的影响和治理
评论
0/150
提交评论