ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:286.06KB ,
资源ID:23863845      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23863845.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构与算法应用课程设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构与算法应用课程设计.docx

1、数据结构与算法应用课程设计数据结构与算法应用综合课程设计要求与指导数据结构是一门实践性很强的课程,只靠读书和做习题是不能提高实践能力的,尤其是在数据结构中要解决的问题更接近于实际。所以要求学生在学习过程中,结合实际问题进行相应的课程设计与实践,自己分析问题、设计数据结构和算法,再编写代码上机调试和测试程序,以达到解决实际问题,培养数据结构的应用能力与实践能力。一、 课程设计的要求1、熟练掌握各种数据结构的逻辑结构特性、存储结构与常用操作算法;2、能分析课程设计的相应题目,结合理论学习考虑用一种或多种数据结构来解决问题;3、能分析并设计在某种数据结构下解决问题的步骤即算法;4、熟练掌握面向对象程

2、序设计思想方法与编译系统的使用方法,能较好地编写程序实现数据结构与算法,解决实际问题5、能较好地进行程序的静态检查与动态调试与测试6、能按要求写好课程设计报告二、 课程设计的目的1、深入理解和掌握书本上的理论知识,将书本上的知识变“活”2、理论与实践相结合,学会如何把书本上的数据结构和算法的知识用于解决实际问题,培养数据结构的应用能力和软件工程所需要的实践能力3、进行软件工作的规范训练,初次体会软件开发的一般简单过程4、培养团队合作精神和良好的科学作风以及沟通能力三、 课程设计的工作步骤1、明确课程设计小组构成与分工每一小组由2人组成,各同学可自由组合。每小组选择后面课程设计备选题目中的一个,

3、共同完成问题分析和任务定义、数据类型和系统设计后,2人协商分工进行程序设计与调试。每个同学必须有明确而又互不相同的工作任务,并保证工作量一致。在课程设计中还要注意两人的协调与合作。2、问题分析和任务定义首先充分分析和理解问题,明确问题要求做什么,限制条件是什么,即明确“做什么”。如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么,是否接受非法的输入,对非法输入的回答方式是什么等等2、数据类型和系统设计1)逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并定义主程序模块和各抽象数据类型,画出模块之间调用关系图2)详细设计:

4、定义相应的存储结构(写出数据存储结构的类型定义)并写出各过程和函数的算法3、3、编码实现和静态检查1)编码实现:把算法设计的结果用程序设计语言程序写出来。每个函数体,即不计首部和规格说明部分,一般不要超过40行,最长不得超过60行,否则应分成更小的函数。要控制IF语句连续嵌套的深度。首先可以在一个程序文件中实现,然后做成头文件形式的软件模块,随着工作的积累,这些成熟的软件模块也会越来越丰富,当常用的数据结构都以抽象数据类型的形式实现以后,其他问题编程的工作也就会比较顺手了。抽象数据类型的实现作为头文件必须包含进工程文件。2) 静态检查:通过阅读或给别人讲解自己的程序深入全面理解程序逻辑,检查是

5、否有明显错误,加入一些注释。可用简单的数据试人工运行程序,此时数据规模应比较小,而且考虑到各种情况,如空表、空二叉树、一个结点二叉树、两个结点二叉树等各种情况。应访遍程序的各条路径(即各分支的情况)。通过静态检查程序由于疏漏而产生的错误,也可为接下去的动态调试找到一种“程序感觉”4、上机准备和上机调试首先,应熟悉Microsoft Visual C+5.0/6.0的开发环境。在运行时可能发生以下三种类型的错误:语法错误、连接错误、运行错误前两种错误一般由系统提示指出,一般按语言的语法和系统的环境要求加以改正即可。第三种错误与算法和程序有关,大致又有两种情况:一种是因为存储结构使用不当引起的,例

6、如最常见的无效指针和数组下标越界等;另一种是纯粹的逻辑性错误,如程序不能正常终止、输出与问题的要求有出入等,在很大程度上是由于控制条件考虑不周所至。这类错误是初学数据结构编程者最易犯的毛病,而当运行出现这类错误时又往往感到束手无策。为了从程序中忙地排除这类错误,首要是能对错误的出处准确定位,常用的简便办法是利用集成环境提供的Debug功能加以定位。在程序中适当位置临时加入一些反映调试信息的输出语句,以此来反映动态运行善有时也比较有效。调试中出现的警告性提示,也不能轻易放过,必须究其原因排除之。对某一组数据运行成功,并不意味程序正确。在进行整个程序的联调时,要特别注意对多组数据模型进行试验,并分

7、别选择几种具有一般性和特殊性的数据进行调试,用测试数据(包括正确的数据和错误的数据)测试程序是否能得到正确结果,程序健壮性(容错处理)怎样等?因为本材料不是讲解Microsoft Visual C+的专门手册性读物,有关Visual C+本身的知识内容的讲解,请读者参考相关的书籍。可带一本C+程序设计教材或Visual C+操作手册,进行调试。5、总结和整理课程设计报告课程设计报告应包括以下几部分内容1)题目、姓名、学号、完成日期,见封面附件2)问题描述包括题目内容,基本要求,测试数据3)需求分析: 输入的形式和输入值的范围 输出的形式 程序所能达到的功能 测试数据要求4)概要设计:抽象数据类

8、型的定义,各程序模块之间的调用关系,各类之间的继承关系5)详细设计定义所有类,写出每个操作的算法,主程序也可按需要写出算法,函数调用关系图6)调试分析:遇到的问题及解决的方法 经验与体会7)用户使用说明简单说明怎样使用你的程序,特别是对使用中应注意的问题加以说明8)测试结果:列出输入输出结果附录:源程序本示例中的分析、描述与实现均是在以C语言的形式,用到了C+对C的扩展,代码是在VC+6.0中调试成功的。有些同学反映主程序不会写,大家可在示例程序中了解简单主程序的写法,并在这里通过两个例子体会主函数如何调用各模块,从而统一协调地完成要求的。需要强调的是决不是仅有此一种方法,事实上,在主函数中常

9、作的类似的事情都还可以在主程序中写成其他函数,以让主函数所作的主要工作能更清晰。9)总结:详细注明小组中每位同学负责的工作、课程设计过程的收获、遇到问题以及解决问题的思路和方法、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对数据结构课程的认识等内容10)附录:将程序清单及程序附上四、 评分办法:课程设计成绩=上机考勤10%+程序及其调试40%(程序的规范性10%、功能实现情况20%、程序调试能力10%)+设计报告质量50%(流程规范15%,设计合理15%,报告撰写15%,分工合理5%)程序的规范:应养成良好的程序书写规范,需要注意:注释,命名规则,格式等。源代码作为设计报告附

10、件提交。流程规范性:报告中显示出来的设计过程按规范的步骤进行:问题分析、系统设计、代码编写、测试与调试,每个步骤均在报告中描述清楚。设计合理性:在查询参考文献、问题分析的基础上,认真完成系统的设计,模块设计合理、数据类型设计合理、类的设计合理、算法设计合理报告撰写:认真书写设计报告,要求:逻辑合理、内容翔实、格式规范、排版工整、语句通顺。无设计报告者以及严重抄袭他人设计者,成绩为不及格。五、 课程设计报告示例:本材料以一个简单的题目来说明课程设计报告的格式与内容,每一个题目都不同,每个同学课程设计后的心得体会与收获与不同,请注意准确完整地描述课程设计的步骤与成果。数据结构课程设计报告 封面(见

11、封面模板)一、问题描述1、题目内容:利用链表表示家电信息,实现链表的初始化、创建表、插入、 删除、更新数据、打印、查询以及链式结构的有序表与文件之间的数据转换。2、基本要求:由用户输入一组数据包括家电名称、品牌型号、单价、及数量, 以结点中单价值的非减序列体现着有序性。3、测试数据:链表初始数据为彩电、TCL超平29英寸、2100元、234台,冰箱、海尔、1800元、 302台,洗衣机、小鸭、1200元、105台二、需求分析1、本程序用以实现家电信息的初始化、创建表、插入、删除、更新数据、打印、查询以及有序表与文件之间的数据转换。2、程序运行后显示提示信息,由用户输入家电相关信息来创建有序链表

12、。3、在创建好后,用户可根据需要选择所要的操作。4、数据信息应包含家电名称、品牌型号、单价、及数量。三、概要设计为实现上述程序功能,应以有序链表表示家电信息。为此需要有序表和结构体两个 抽象数据类型。1、结构体的抽象数据类型定义为: ADT goods 数据对象:d=char name10; char sname10; int price; int num; ADT goods 2、有序表的抽象数据类型定义为: ADT OrderedList lnode *listcreate_l(goods *a,int n) 初始条件: 运行结果: ADT OrderedList 数据关系:同属于一个结点

13、 基本操作:lnode *listcreate_l(goods *a,int n) 操作结果:构造一个有序链表。 node *listinsert_l(lnode *l,goods a) 初始条件:有序链表已经存在。 操作结果:插入一个结点,此结点信息为a。 lnode *listdelete_l(lnode *l,goods e) 初始条件:有序链表已经存在。 操作结果:删除e结点。 lnode *listchange_l(lnode *l,goods e) 初始条件:有序链表已经存在。 操作结果:用e的信息更换有序表中与e同名的结点的信息。 void listsearch_l(lnode

14、*l,char *sname) 初始条件:有序链表已经存在。 操作结果:查询结点中名为sname的结点的相关信息。 void listtraverse_l(lnode *l) 初始条件:有序链表已经存在。 操作结果:打印有序链表中的信息。 3、本程序包含三个模块: 主程序模块:进行简要说明 结构体模块:进行简要说明 有序表模块:进行简要说明模块之间的关系如图所示:(加一模块结构图)四、详细设计1、元素类型、结点类型、指针类型。 typedef struct char name20; char sname20; int price; int num; goods;2、有序表类型。 typedef

15、 struct lnode goods data; struct lnode *next; lnode,*linklist;部分操作实现的伪代码算法如下:1)lnode *listcreate_l(goods *a,int n) for (int k=0;kn;+k) for (int j=0;jn-k-1;j+) if (aj.priceaj+1.price) goods b; strcpy(b.name,aj.name); strcpy(b.sname,aj.sname); b.price=aj.price; b.num=aj.num; strcpy(aj.name,aj+1.name);

16、 strcpy(aj.sname,aj+1.sname); aj.price=aj+1.price; aj.num=aj+1.num; strcpy(aj+1.name,b.name); strcpy(aj+1.sname,b.sname); aj+1.price=b.price; aj+1.num=b.num; /if /for /倒用起泡法对结构体数组以price为关键字进行排序lnode *l=NULL;lnode *s;for (int i=0;idata.name,ai.name); strcpy(s-data.sname,ai.sname); s-data.price=ai.pri

17、ce; s-data.num=ai.num; s-next=l;l=s; return l; /创建链表并返回头指针 /listcreate_l()2)lnode *listinsert_l(lnode *l,goods a) lnode *q=l; lnode *r=l; lnode *p=new lnode; strcpy(p-data.name,a.name); strcpy(p-data.sname,a.sname); p-data.price=a.price; p-data.num=a.num; /把goods结构体的内容复制给结点指针p while (a.priceq-data.p

18、rice&q) r=q; q=q-next; if (q=l) p-next=l;l=p; /p插在头结点之前 else if (q=NULL) r-next=p;p-next=NULL;/p插在最后一个结点后面 else r-next=p;p-next=q; /p插在中间的一般情况 return l; /listinsert_l()3)lnode *listdelete_l(lnode *l,goods e) lnode *p=l; lnode *r=l; while (strcmp(p-data.sname,e.sname)&p) r=p; p=p-next; if (p=l) l=p-n

19、ext; /删除结点为头结点 else if (p-next=NULL) r-next=NULL; /删除结点为最后一个结点 else r-next=p-next; /删除结点为一般情形 if (!p) cout删除项目不在产品信息中,请确认后在输入,谢谢!data.sname) p=p-next; if (p) strcpy(p-data.name,e.name); strcpy(p-data.sname,e.sname); p-data.price=e.price; p-data.num=e.num; /用e的信息替换结点p的信息 else cout更新信息与产品信息中的所有规格都不匹配,

20、确认后在输入,谢谢!data.sname) p=p-next; coutdata.name data.sname data.price data.numnext; i+; /用i记录产品总类个数 infiendl; while(l) coutdata.name data.sname data.priceyuan data.num台endl; infdata.name data.sname data.price data.num next; /打开d:information并从中写入信息 /listtraverse_l()打印信息4、主函数的算法: void main() cout进入程序请按1

21、,退出请按0m; while (m) cout创建请按1;其它操作请按2n; switch (n) case 1: cout请输入产品种类数量和相关信息:n; a=new goodsn; for (int i=0;iai.nameai.sname ai.priceai.num; lnode *l; l=listcreate_l(a,n); listtraverse_l(l); break; case 2: cout插入请按3;删除请按4;更新请按5;查询请按6;打印请按7.n; a=new goodsn; for (int i=0;iai.nameai.sname ai.priceai.num

22、; /利用文件流创建文件流对象以读方式 lnode *l; /打开d:information并从中读入信息 l=listcreate_l(a,n); int j; cinj; switch (j) case 3: cout请输入要插入产品的相关信息:m.namem.snamem.pricem.num; lnode *p=listinsert_l(l,m);listtraverse_l(p);break; case 4: cout请输入要删除项目的相关信息:m.namem.snamem.pricem.num; lnode *p=listdelete_l(l,m);listtraverse_l(p

23、);break; case 5: cout请输入要更改项目的相关信息:m.namem.snamem.pricem.num; lnode *p=listchange_l(l,m);listtraverse_l(p);break; case 6: cout请输入要查询项目的名称:m;listsearch_l(l,m);break; case 7: cout公司库存产品相关信息如下:endl;listtraverse_l(l); break; /switch() /switch() /while() cout进入程序请按1,退出请按0m; cout查看最新产品信息请到d:information(2)

24、.endl; /main()五、调试分析:调试过程中经常出现运行时出现错误提示而没有结果的情况,经检查是指针处理的问题六、使用说明 程序运行后用户根据提示信息输入产品信息,按照提示运行就可以了。七、测试结果 所采用的测试数据和测试结果如下:进入程序请按1,退出请按01创建请按1;其它操作请按21 请输入产品种类数量和相关信息:3冰箱 海尔 1800 302 彩电 TCL超平29英寸 2100 234 洗衣机 小鸭 1200 105 此是d盘的information的内容为:3洗衣机 小鸭 1200yuan 105台 洗衣机 小鸭 1200 105冰箱 海尔 1800yuan 302台 冰箱 海

25、尔 1800 302彩电 TCL超平29英寸 2100yuan 234台 彩电 TCL超平29英寸 2100 234进入程序请按1,退出请按01创建请按1;其它操作请按22插入请按3;删除请按4;更新请按5;查询请按6;打印请按7.3请输入要插入产品的相关信息:DVD 康佳 1350 169 此是d盘的information的内容为:4 洗衣机 小鸭 1200yuan 105台 洗衣机 小鸭 1200 105DVD 康佳 1350yuan 169台 DVD 康佳 1350 169冰箱 海尔 1800yuan 302台 冰箱 海尔 1800 302 彩电 TCL超平29英寸 2100yuan 2

26、34台 彩电 TCL超平29英寸 2100 234进入程序请按1,退出请按01创建请按1;其它操作请按22插入请按3;删除请按4;更新请按5;查询请按6;打印请按7.4请输入要删除项目的相关信息:DVD 康佳 1350 169 此是d盘的information的内容为:3 洗衣机 小鸭 1200yuan 105台 洗衣机 小鸭 1200 105冰箱 海尔 1800yuan 302台 冰箱 海尔 1800 302彩电 TCL超平29英寸 2100yuan 234台 彩电 TCL超平29英寸 2100 234进入程序请按1,退出请按0 1创建请按1;其它操作请按22插入请按3;删除请按4;更新请按5;查询请按6;打印请按7.5 请输入要更改项目的相关信息:彩电 TCL超平29英寸 2000 153 此是d盘的info

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1