数据结构课程设计之简易家谱.doc

上传人:marr****208 文档编号:141316419 上传时间:2020-08-06 格式:DOC 页数:12 大小:116.66KB
返回 下载 相关 举报
数据结构课程设计之简易家谱.doc_第1页
第1页 / 共12页
数据结构课程设计之简易家谱.doc_第2页
第2页 / 共12页
数据结构课程设计之简易家谱.doc_第3页
第3页 / 共12页
数据结构课程设计之简易家谱.doc_第4页
第4页 / 共12页
数据结构课程设计之简易家谱.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数据结构课程设计之简易家谱.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计之简易家谱.doc(12页珍藏版)》请在金锄头文库上搜索。

1、课程设计(论文)学 号: * 课 程 设 计题 目简易家谱系统教 学 院计算机学院专 业计算机科学与技术班 级*姓 名*指导教师*2012年6月 18日目 录一 概述2二 总体方案设计3三 详细设计5四 程序的调试与运行结果说明8五 课程设计总结9参考文献10一 概述1. 课程设计的目的1理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养综合运用所学知识独立完成课题的能力。3培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识

2、和创新能力。2. 课程设计的要求设计要求:输入家族成员情况,建立树结构,统计家族成员人数,能查询家族成员辈份情况。系统功能:1. 输入、修改与删除家谱信息功能2. 查询功能:1)某家谱成员的所有子孙的集合2)某家谱成员的所有祖先的集合3)某家谱成员的所有同辈成员的集合4)求某家谱成员的所有上一辈成员的集合5)给出两个家谱成员,确定他们的关系3. 统计功能1)统计家谱成员总人数2)统计从事某种职业的人数二 总体方案设计1.简单家谱系统整体设计思路 此次课程设计的整体思路是采用遍历算法,整个树的定义使用两个结构体来表示,一个结构体专门用于存放每一个节点的信息,另一个节点中定义了三个指针域,分别为父

3、指针域(兄长指针域),兄弟指针域,子指针域,整个树的输入采用文件导入的方式,首先将文件导入到树中,文件包含每一个家族成员的信息,以及一个标志位flag,标志位的值为0,1,2,0表示此节点没有兄弟节点,1表示此节点至少有一个子节点,2表示此节点至少有一个兄弟节点,使用的算法是先定义一个链式队列,将文件中第一个节点的内容读取放入开辟的树的节点的空间里,然后将树节点放入队列中,此时队列不为空,以队列不为空为判断条件,进行while循环,判断flag的值,循环体中再进行文件读取,循环中进行判断,若flag为0,则继续判断队列是否为空,为空就结束循环,若不为空,则继续出队列,取标志位进行判断,若标志位

4、为1,则生成新节点,用刚刚出列的节点的子指针域进行指向新节点,新节点的父指针域指向出列的节点,剩余的域为空,然后将新生成的节点插入到队列中,若flag为1,则进行兄弟节点的插入,继续循环,若flag不为0,则在进行判断,若为2,则继续进行兄弟节点的插入,以此类推,根据文件的读取,将树生成,本程序中所有的算法都基于以上所介绍的算法。2简单家谱系统的主要特点及功能 本系统的主要特点是算法简洁,易于阅读,用户交互界面良好。 主要实现功能如下: 1、 查询全部的家谱成员信息; 2、 查询某一个家谱成员的信息; 3、 查询某一成员的所有子孙信息;4、 查询某一成员的所有祖先信息;5、 查询某一成员的所有

5、同辈信息;6、 查询某一成员的所有上辈信息;7、 统计家谱中所有的人数;8、 统计家谱中从事某一职业的人数; 9、 修改某一成员的家谱信息;10、 输入两个人的名字,求其关系; 0、 退出;系统结构图贾探春贾环贾宝玉贾元春林黛玉贾珍贾珠贾琏贾迎春贾惜春贾蓉贾敏贾政贾演贾敬贾代化贾源贾源贾赦贾无名 贾府结构图:三 详细设计4.1 查询全部的家谱成员信息;该部分程序所完成的具体功能是把贾府中所有的成员信息按照辈份依次显示出来,首先从贾无名开始,然后下一辈份的贾演、贾源等最后是贾蓉的信息。每个辈份之间都有间隔。设计思想:利用队列遍历所有的结点,在遍历的同时依次输出每个结点的值(即为家庭成员的信息)。

6、代码如下:void displayElemtoFamily(LINKFAMILY lfy)int flag=1;LinkQueues linkq;initLinkQueues(linkq);displayElem(lfy);insertElemtype2Queues(linkq,lfy);while(isQueuesEmpty(linkq)!=0)LINKFAMILY temp=output2LinkQueues(linkq);if(temp-down!=NULL)temp=temp-down;if(flaginfor.grade)printf(n-下一辈-n);flag=temp-infor

7、.grade; displayElem(temp);insertElemtype2Queues(linkq,temp);while(temp-brother!=NULL)temp=temp-brother;displayElem(temp);insertElemtype2Queues(linkq,temp); 4.2 查询某一个家谱成员的信息;、该部分代码所完成的具体功能是查询某一个家庭成员的信息。首先手动输入你要查询的那个成员的名字,然后利用队列依次查找该成员的信息,如果该家谱中存在这个成员则输出该成员的有关信息;如果家谱中不存在该成员,则输出提示信息:家谱中无此人!设计思想:有两个函数,一

8、个函数(queryElemt)利用队列遍历所有的节点,在遍历的同时即可查找所输入的成员是否存在该家谱中;另外一个函数(queryElemtoFamily)用于输入你要查找的成员的名字和输出查找的结果。代码如下:LINKFAMILY queryElemt(LINKFAMILY lfy,char name)LinkQueues linkq;initLinkQueues(linkq);if(strcmp(lfy-infor.husName,name)=0)return lfy; insertElemtype2Queues(linkq,lfy);while(isQueuesEmpty(linkq)!=

9、0)LINKFAMILY temp=output2LinkQueues(linkq);if(temp-down!=NULL)temp=temp-down;if(strcmp(temp-infor.husName,name)=0)return temp; insertElemtype2Queues(linkq,temp);while(temp-brother!=NULL)temp=temp-brother;if(strcmp(temp-infor.husName,name)=0)return temp; insertElemtype2Queues(linkq,temp); return NULL

10、; /*查询,通过姓名查找某一族人的详细信息 */void queryElemtoFamily(LINKFAMILY lfy)printf(请输入你要查询的名字:);char name20;scanf(%s,name);LINKFAMILY temp=queryElemt(lfy,name);if(NULL=temp)printf(n家谱中无此人!);elsedisplayElem(temp); 4.3、 查询某一成员的所有子孙信息;该部分程序所完成的具体功能是:输入你要查找人的名字,比如贾政,它会显示出该人的所有子孙。设计思想:首先利用函数(queryElemt)来查找家谱中是否有这个成员,

11、如果无,则输出提示信息(家谱中无此人);如果有,则输出其子孙信息。代码如下:void sontoElem(LINKFAMILY lfy)printf(请输入你要查询的人的名字:);char name20;scanf(%s,name);LINKFAMILY temp=queryElemt(lfy,name);if(NULL=temp)printf(家谱中无此人!n);elseif(temp-down=NULL)printf(%s并无孩子!,temp-infor.husName);elsedisplayElemtoFamily(temp);四 程序的调试与运行结果说明五 课程设计总结本组的课程任务

12、为简易家谱,在组长的带领下,经过我们共同的努力,本程序主要任务已基本完成。另外本程序功能完善,具有良好的交互性,可以满足用户多种需求。美中不足的是本系统没有采用之前我所设想的递归,我们这次改用队列来建树、查找等,这样代码少有一定的冗余,如果时间充分,我们会更加精进,争取采用代码量相对较少的递归算法,另外更加完善一些功能,包括增加日志功能,给不同级别的人员设置管理权限,比如说家谱管理员在获得本族长的同意下修改某个成员的信息,而其他成员只具备浏览的功能。在本程序简易家谱的创作过程中,我们组员各抒己见,意见很不一致,包括是采用递归算法,还是采用队列;数据成员的结构如何定义,甚至包括成员的名字,大家的

13、意见都不统一。但是在探讨的过程中,我们也理解自己思维的不足,也见识了另外不同的编程思想,这也让我体会到了交流的魅力。只有我们大家坦诚布公的把自己想法说出来,然后我们在理性的分析算法的优劣与可行性,这样就能结合大家共同的智慧,组织大家共同的力量,为共同的目标努力奋斗。参考文献如:1 谭浩强,C程序设计题解与上机指导(第二版),北京,清华大学出版社,2000年9月。2 严蔚敏,吴伟民,数据结构,北京,清华大学出版社,2004年6月。3 殷人昆,陶永雷,谢若阳等,数据结构,北京,清华大学出版社,2005年3月。4 沈晴霓,聂青,苏京霞,现代程序设计 C+ 与数据结构面向对象的方法与实现 ,北京,北京理工大学出版社, 2002年3月。5 朱战立,张选平,数据结构学习指导与典型题解,西安,西安交通大学出版社, 2002年7月。6 罗文劼,王苗,石强,数据结构习题解答与实验指导,北京,中国铁道出版社, 2004年11月。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号