家谱管理系统。
洛阳科技学院课程设计报告数据结构课程设计课程名称_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _家谱管理系统设计主题_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _计算机科学与技术专业_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ b 150405班级_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ b 15080822学校编号_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _宋世龙的姓氏是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x XXX,2006年12月30日。
完成日期_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
家谱管理系统设计的内容和要求;
[问题描述]
以下内容:
实现了具有以下功能的家谱树管理系统1)。
输入一个文件,将每个成员的信息保存在原始家谱中,每个成员的信息应包括以下内容: 姓名、出生日期、婚姻状况、地址、生活状况和死亡日期(如果
他们已经死亡),可以添加其他信息,但不是必需的。
2)。
实现数据保存和读取。
3)。
展示家谱。
4)。
根据出生日期查询成员列表。
5)。
根据姓名查询,输出成员信息(包括自己的、父亲的、孩子的信息)。
6)。
修改成员的信息。
[基本要求]
以下内容:
接口要求:
有合理的提示,可以为每个功能设置菜单。
根据提示,可以完成相关的功能需求。
存储结构:
学生根据系统功能要求自行设计,但要求相关数据存储在数据文件中。
测试数据:
需要使用
1.所有法律数据;
2.本地非法数据。
进行程序测试以确保程序的稳定性。
请在提交的材料中注明测试数据和测试结果。
讲师:
在_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _月日,课程评估结果如下:
讲师:
于_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _.
首先,算法思维这个程序是一个管理家谱的系统。
通过这个系统,
可以创建、显示、搜索、修改、保存和读取家庭成员。
系统分为以下模块:
创建一个家谱,显示它,通过名字和生日找到家庭成员,修改它,保存它,阅读它,并退出系统。
本程序中使用的存储形式是多叉树,因为家谱中的每个人都有父母和孩子,孩子的数量是不确定的,所以使用多叉树来存储是最合适的。
如果您使用多叉树来存储它,您将使用递归创建和递归遍历多叉树。
因为它是一个多分支树,广度优先搜索适合遍历。
这个函数的主要思想是递归调用。
递归将用于每个子函数。
当定义一个结构时,指针数组的最大容量用来指定一个家谱中的最大人数。
定义一个家谱的指针变量作为每个子函数的参数,从而将其返回给主函数。
以下是算法思想流程图:
系谱树管理系统创建系谱树,显示系谱树,修改系谱树,搜索成员,根据他们的名字读写系谱树,根据他们的生日修改他们自己,修改他们的父母,保存和读取他们的孩子以退出系统。
2.模块1。
int main(): main函数2。
void CreatTree(树节点*T-省略-ad-儿童编号;i ) { head-NextNode[i]=(树)malloc(sizeof(树节点));如果(head-nextnode[I]==null){ printf(' \ t \ t重建树时内存分配失败!\ n ');返回;fread(head-NextNode[i),sizeof(TreeNode),1,FP);head-下一节点[I]-Parent=head;队列[后方]=头部-下一节点[I];} } f close(FP);fp=空;}
6.总结数据结构课程设计我选择的题目是家谱管理系统,历时四
天,由王月和我一起完成。
总的来说,课程设计还是比较难的,我们选择的题目在这些题目中也很难。
中间有很多困难,但在我和她讨论以及老师的帮助下,最终顺利完成了。
在选题的开始,我没有太注意选择什么。
我只是随便选了一个。
只是后来我发现很难选择这个话题。
经过分析,发现这个主题需要树,我没有学好树,所以很难写。
起初,我用二叉树来存储它。
后来,我发现我不能把它写成两半。
使用递归来创建函数总是不合适的。
最后,我不得不放弃。
所以我开始在网上搜索信息,但是我发现的大部分信息与这个实验不一致,其中一些也是不可理解的。
只有一个。
我发现他用的是多分枝的树。
我看了一会儿就能理解了。
所以我计划把它储存在一棵多叉树里。
然而,我不知道如何写它,但是我在检查了在互联网上创建多叉树的递归方法之后开始写它。
电脑出现的前一天晚上,王月把他写的程序发给了我。
除了保存和读取磁盘,其他功能基本实现。
我把他的和我的做了比较,发现我们的写作是相似的,所以我和她结合来改变我的,基本的功能是可以实现的。
接下来是最重要的模块,也是最麻烦的,保存磁盘和读取磁盘。
王月和我咨询了去年课程设计的保存和阅读。
但这是顺序表的保存和读取,与我们使用的不同。
这时我们不知道,所以我们向老师求助。
老师给我们讲了一些关于储蓄和阅读的知识,让我们看看这本书。
我们终于对这一知识有了大致的了解。
接下来,我们在互联网上搜索信息,最后写出了存档和读取磁盘。
然而,当它运行时,发现还有另一个问题。
从表面上看,它似乎只能被存储而不能被读取。
所以我们向老师寻求帮助。
读完我们的程序后,老师建议我们用不同
的方式保存和读取磁盘,保存节点,然后在读取磁盘时在树中放一个。
晚上,我回去仔细检查了我的功能,突然发现了问题。
保存我的程序也有问题。
循环中写入的文件数量少于一次,或者次数不固定。
因为我父亲节点的第一个节点有一个配偶,它有一个配偶,如果没有,它有孩子,这是非常随机的。
我发现这个漏洞后,花了很长时间才想出解决办法。
我分别保存父节点的第一个节点,阻止他加入团队,然后保存第二个后继节点,直到最后一个周期。
这样,存储和读取磁盘的问题就解决了。
完成后,我们的程序就完成了。
通过这次课程设计,我学到了很多课本上学不到的知识。
例如,创建和遍历多叉树,以及保存和读取树。
此外,数据结构的过程对我们来说非常重要,这是我们未来研究和应用的基础。
在未来,我们仍然应该努力学习,探索更多的其他知识,使我们的大学生活更加丰富多彩。
简单的教科书内容不能满足学生的需要。
教育中常见的问题是教大脑的人不使用手,不使用手的人使用大脑,所以他们什么也做不了。
教育革命的对策是手脑联盟。
因此,双手和大脑的力量都是不可思议的。