当前位置:文档之家› 数据结构课程设计心得体会.doc

数据结构课程设计心得体会.doc

数据结构课程设计心得体会篇一:数据结构课程设计总结报告郑州轻工业学院课程设计任务书题目家族关系查询系统专业、班级软件外包11-01学号541107080145 姓名周朱莉主要内容、基本要求、主要参考资料等:主要内容:建立家族关系数据库,实现对家族成员关系的相关查询。

基本要求:(1)建立家族关系并能存储到文件中;(2)实现家族成员的添加。

(3)可以查询家族成员的双亲、祖先、兄弟、孩子和后代等信息。

课程设计按照教学要求需要一周时间完成,总共要上机调试程序10小时。

对每个题目要有需求分析,在需求分析中,将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,设计或叙述解决此问题的算法,描述算法建议使用流程图,进行算法分析指明关键语句的时间复杂度。

给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来。

源程序要按照写程序的规则来编写。

要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

程序能够运行,要有基本的容错功能。

尽量避免出现操作错误时出现死循环;主要参考资料:数据结构(C语言版),在网上查询的相关资料及部分代码完成期限:2013.6.18-2013.6.20 指导教师签名:课程负责人签名:2013年6 月18 日郑州轻工业学院本科数据结构课程设计总结报告设计题目:家族关系查询系统学生姓名:周朱莉系别:计算机与通信工程专业:软件外包班级:11-01 学号:541107080145 指导教师:卢冰2013年6月20日一、设计题目(任选其一)家族关系查询系统二、运行环境(软、硬件环境)电脑及Visual C++ 6.0 三、算法设计的思想随着社会发展,人们使用纸质的家谱已经非常不方便而且不利于在家谱里进行添加和修改。

而用算法设计一个家族关系查询系统则可以解决这个问题。

数据结构的二叉树刚好满足家谱的基本结构。

首先建立一个文件作为家谱,然后在文件中输入字符串,实现了在文件中按照数据的逻辑关系进进输入便可建立相应的三叉链表。

然后就是进行数据的存储、删除及查找工作。

四、算法的流程图家谱的创建:载入家谱:修改家谱:成员查询:五、算法设计分析本次设计研究的是建立家族关系,实现对家族成员关系相关查询的问题。

在设计中使用的数据结构为树状结构,树状结构采用三叉链表实现。

我们在建立好家族关系后将其存储在文件中,在文件中家族关系是以树的形式存储,运用树的操作使家族关系得以准确建立。

家族关系查询系统可分为六大模块,分别是创建、修改、查询、保存、退出等。

建立家族关系模块,建立家族关系并存入文件。

建立时首先输入家族关系的名称,以此名称为名建立文本文件。

接下来按层输入成员姓名,输入一个在文件中写入一篇二:数据结构与算法课程设计心得体会学习体会课程设计的心得体会姓名:何云龙学号:0804012022班级:08计科(2)班“数据结构与算法课程设计”是计算机科学与技术专业学生的集中实践性环节之一,是学习“数据结构与算法”理论和实验课程后进行的一次全面的综合练习。

其目的是要达到理论与实际应用相结合,提高学生组织数据及编写程序的能力,使学生能够根据问题要求和数据对象的特性,学会数据组织的方法,把现实世界中的实际问题在计算机内部表示出来并用软件解决问题,培养良好的程序设计技能。

当初拿到这次课程设计题目时,似乎无从下手,但是经过分析可知,对于简单文本编辑器来说功能有限,不外乎创作文本、显示文本、统计文本中字母—数字—空格—特殊字符—文本总字数、查找、删除及插入这几项功能。

于是,我进行分模块进行编写程序。

虽然每个模块程序并不大,但是每个模块都要经过一番思考才能搞清其算法思想,只要有了算法思想,再加上C程序语言基础,基本完成功能,但是,每个模块不可能一次完成而没有一点错误,所以,我给自己定了一个初级目标:用C语言大体描述每个算法,然后经调试后改掉其中明显的错误,并且根据调试结果改正一些算法错误,当然,这一目标实现较难。

最后,经过反复思考,看一下程序是否很完善,如果能够达到更完善当然最好。

并非我们最初想到的算法就是最好的算法,所以,有事我们会而不得不在编写途中终止换用其他算法,但是,我认为这不是浪费时间,而是一种认识过程,在编写程序中遇到的问题会为我们以后编写程序积累经验,避免再犯同样的错误。

但是,有的方法不适用于这个程序,或许会适用于另外一个程序。

所以,探索的过程是成长的过程,是为成功做的铺垫。

经过努力后获得成功,会更有成就感。

在课程设计过程中通过独立解决问题,首先分析设计题目中涉及到的数据类型,在我们学习的数据存储结构中不外乎线性存储结构及非线性存储结构,非线性存储结构中有树型,集合型,图型等存储结构,根据数据类型设计数据结点类型。

然后根据设计题目的主要任务,设计出程序大体轮廓(包括子函数和主函数),然后对每个子函数进行大体设计,过程中错误在所难免,所以要经过仔细探索,对每个函数进行改进。

程序基本完成后,功能虽然齐全,但是程序是否完善(例如,输入数据时是否在其范围之内,所以加入判断语句是很有必要的)还需运行测试多次,如有发现应该对其进行改善,当然要在力所能及的前提下。

课程设计过程虽然短暂,但是使我深刻理解数据结构和算法课程对编程的重要作用,还有“数据结构与算法”还提供了一些常用的基本算法思想及算法的编写程序。

通过独立完成设计题目,使我系统了解编程的基本步骤,提高分析和解决实际问题的能力。

通过实践积累经验,才能有所创新。

正所谓,良好的基础决定上层建筑。

只有基本功做好了,才有可能做出更好的成果。

篇三:数据结构课程设计课程设计报告计算机科学与技术学院课程名称专业:班级:学号:姓名:指导老师:袁嵩计算机科学与技术学院课程设计成绩单优秀:90分~100分良好:80分~89分中等:70~79分及格:60~69分不及格0分~59分武汉科技大学计算机科学与技术学院制表题目一通讯录[问题描述]1)通过键盘建立通讯录,每条记录至少包括2个数据项:姓名、电话号码;2)对通讯录进行插入、删除、修改和查找;3)通过姓名查找,必须实现精确查找和模糊查找,例如输入“张”,则显示第一个姓张的朋友,然后可以选择“下一个”,鼓励思路创新,提供其他多种查找方式,例如拼音查找等;4)也可以根据电话号码或部分电话号码进行精确查找和模糊查找;5)自行定义数据结构,可以选择性的将顺序查找、折半查找、索引查找、树型查找、哈希表等灵活运用其中,完成多方式查找功能。

[解题思路]由于题目要求通讯录能增、删、改、查,所以选择用线性链表这一存储结构比较好操作。

又由于存放的数据至少包含两个数据,因此节点类型应该为结构体。

题目要求实现精确查找和模糊查找,可以利用string类中的strcmp()函数实现。

查找类型为顺序查找。

[算法描述][程序设计]// data数据类型定义struct ElemType { string name; string num; };// 线性表的单链表存储结构struct LNode { ElemType data; LNode *next; };typedef LNode *LinkList; // 另一种定义LinkList的方法void Build//新建联系人并插入链表{ int i; cout请输入姓名:endl; //键入联系人信息; cout*--*--*--*--*--*endl; cout请输入电话号码:endl; cine.num; cout*--*--*--*--*--*endl; i=Locate; if{int j=ListInsert; //调用ListInsert()函数printf;cout*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--* endl;cout*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*e ndl; } else{cout请选择操作项:endl;cout*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*e ndl;cout*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*en dl; } }void Delete //删除联系人{ string name; cout请输入要删除的联系人姓名:endl; cinname; cout*--*--*--*--*--*endl; int i=GetId; if{int x=ListDelete ;//调用ListDelete函数cout删除成功!请选择操作项:endl; cout*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*endl;c out*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*endl; } else{cout对不起,输入的联系人不存在!endl; //输入联系人不存在删除失败printf;cout*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--* endl;cout*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*e ndl; } }int Modify//修改联系人信息{ string name; cout请输入要修改的联系人姓名:endl; cinname; cout*--*--*--*--*--*endl;int i=GetId;//调用GetId函数,在链表中找到要修改的位置while{cout输入联系人不存在,是否继续?endlY:YES N:NOendl;string a;cina;cout*--*--*--*--*--*endl;while{ cout无效选项,请从新输入:endl; cina; cout*--*--*--*--*--*endl;}if{ cout请输入要修改的联系人姓名:endl; cinname; cout*--*--*--*--*--*endl;。

相关主题