- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
家族管理系统
一、案例描述
1、总体描述
拿到这道题目我们首先想到的毫无疑问就是树,然而怎样将整个家庭的成员信息整合到一颗树上就是我们具体所要做的。
首先我们要定义一个结构来记录一个成员的信息。而每个成员又和其他成员拥有不同的关系,这个就要靠自己去逻辑了,用左孩子右兄弟的方法可以将这个成员与其兄弟和儿女进行联系起来,然而还差两个关系就是父母和配偶的关系这就要在这个结构里多添加两个指针了一个用来和父亲节点建立关系另一个用来和配偶节点建立关系。而然用多叉树的方法也是很合适的,只需在结构里定义一个结构数组将配偶和子女都放在儿子节点上,而配偶节点放在数组的第一个位子即可区分清楚配偶和子女。另外多加一个指针来将节点和父亲节点联系起来。这样就同样可也访问某个成员的兄弟姐妹了,只需访父亲节点的儿子节点即可。
上图就是一个简单的家谱示意图:
功能演示
【1】首先,运行程序用户看到的是提示界面如下:
创建家谱信息建立多叉树
显示整个家谱信息
创新点:会显示生日提示
添加新成员
查找成员信息
二、设计思路
本程序要求模块管理,分成菜单函数、输入函数、输出函数、查询函数、插入删除函数等,控制各个部分从而将程序简单化出来分析。本程序的主要功能有:
创建一个家谱,能够输入家族的相关信息
查找相应的人员
添加新的成员
输出整个家族的成员
修改成员的信息
退出
图 1家族管理系统功能模块图
三、程序设计
2、数据结构描述
主程序
#include stdio.h
#include stdlib.h
#include string.h
#include windows.h
char c1,c2,c3;
int sum=0;
int MATEFLAG=0;
int tadaym,tadayd;
typedef struct TreeNode
{
int Num; //记录这个人拥有几个儿女
char Name[20]; //记录这个人的姓名
char Kind; //标示节点的种类有女G男B
char birth[10];
int birthy; //记录这个人的生日
int birthm;
int birthd;
struct TreeNode * NextNode[20]; //记录这个人的儿女,配偶。 NextNode[0]为配偶
struct TreeNode * Parent; //记录这个节点的父节点
}TreeNode;
void CreatTree(TreeNode *Tree);
void OutPutAll(TreeNode *Tree);
TreeNode * SearchTree(TreeNode *Tree,char name[],int length);
void MainMenue(TreeNode *Tree);
void SubMenue1(TreeNode * Tree);
void SubMenue2(TreeNode *Tree);
void Change(TreeNode * Tree);
void AddNew(TreeNode * Tree);
void OutPutMessage(TreeNode * Tree,char name[],int length);
int showtime( void )
{
SYSTEMTIME sys;
GetLocalTime( sys );
printf( \n\n\n\n\n\n\t\t\t%4d年%02d月%02d日 %02d:%02d:%02d 星期%1d\n,sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wDayOfWeek);
tadaym=sys.wMonth;
tadayd=sys.wDay;
printf(\n\n\t\t\t 按回车进入主界面...);
return 0;
}
//主函数
main()
{
TreeNode *Tree;
Tree=(TreeNode *)malloc(sizeof(TreeNode));
Tree-Parent =NULL;
strcpy(Tree-Name,0);
showtime();
getchar();
MainMenue(Tree);
}
家族管理系统包括以下几个部分:
int Num; //记
您可能关注的文档
最近下载
- 烟草考试真题及答案.doc VIP
- 2025年最新人教版八年级(初二)数学上册教学计划及进度表(新课标,新教材).docx
- 外研版高中《英语》(新标准)选择性必修一Unit1 单元整体教学设计附作业设计.docx VIP
- 5.1《论语》十二章 课件(共48张PPT)统编版高中语文选择性必修上册.pptx VIP
- 计算机网络实验报告(8)网络地址转换NAT配置、网络端口地址转换NAPT配置.pdf VIP
- 工程材料及成形技术基础-全套PPT课件.pptx
- 单证员考试试题.pdf VIP
- 地面空压机安装技术措施.docx VIP
- 工程建设法规的案例.ppt VIP
- 农产品食品检验员职业技能竞赛理论考试题库(含答案).docx VIP
文档评论(0)