版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、家谱管理系统一、需求分析本系统实现以下功能:1). 输入文件以存放最初家谱中各成员的信息。 成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)也可附加其它信息、但不是必需的。2). 实现数据的存盘和读盘。3). 以图形方式显示家谱。4). 显示第n 代所有人的信息。5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。6). 按照出生日期查询成员名单。7). 输入两人姓名,确定其关系。8). 某成员添加孩子。9). 删除某成员(若其还有后代,则一并删除)。10).修改某成员信息。11).按出生日期对家谱中所有人排序。12).打开一家谱时,提示
2、当天生日的健在成员。测试要求:1).建立至少30个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。2).对界面的要求是:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。二、设计概要1、抽象数据类型兄弟孩子树的定义如下:ADT CSNode数据对象:person是兄弟孩子树中的每一个节点,T是整个树的统一体数据关系:R1=personi-1,personi|personi-1,personi表示personi-1和personi之间有血缘关系基本操作:CSNode *CreatTree(fstream &outfile);初始条件:已经打开了文本文件Perso
3、nInfo.txt操作结果:创建一个兄弟孩子树T,并把从文件中的数据送到树中,关闭文件。void CreatParent_step(CSNode *parent);初始条件:兄弟孩子树T已经存在操作结果:对所有的孩子节点添加指向父亲的指针void InOrderTraverse(CSNode *T);初始条件:兄弟孩子树T已经存在操作结果:对T进行中序遍历。bool Today_Brithday(CSNode *T);初始条件:兄弟孩子树T已经存在操作结果:根据计算机系统的时间判断几天是否有人过生日,并显示他们的名字。bool (int n,CSNode *T,LinkQueue &Q); 初
4、始条件:兄弟孩子树T已经存在,队列Q也已经存在 操作结果:用队列Q返回第N代人的所有信息void Link_Info(LinkQueue Q); 初始条件:队列Q中是第N代人的所有信息 操作结果:显示队列中所有人的信息。CSNode *DetectMember_Name(CSNode *T,char name); 初始条件:兄弟孩子树T已经存在 操作结果:根据输入的姓名进行查找,如找到则返回该节点的指针。CSNode *DetectMember_BornDate(CSNode *T,Date date); 初始条件:兄弟孩子树T已经存在 操作结果:根据输入的出生日期进行查找,如找到则返回该节点
5、的指针。void OutputOneInfo(CSNode *T); 初始条件:采集到一个节点T 操作结果:显示这一个节点的所有信息。void Output_Name_Relation(CSNode *T); 初始条件:采集到一个节点T 操作结果:显示这一个节点的父亲和孩子的所有信息。void Delete_Member(CSNode *T,char name); 初始条件:兄弟孩子树T已经存在 操作结果:根据输入的姓名进行查找,如找到则删除该节点和他所有的孩子节点。void Edit_Member_Info(CSNode *T,char name); 初始条件:兄弟孩子树T已经存在 操作结果
6、:根据输入的姓名进行查找,如找到则根据用户要求修改相应的信息。bool Add_New_Child(CSNode *T); 初始条件:兄弟孩子树T已经存在 操作结果:根据输入的姓名进行查找,如找到则在他的孩子树中添加新的孩子节点。void InOrderInfile(CSNode *T,fstream &infile); 初始条件:兄弟孩子树T已经存在,且已经打开了文本文件PersonInfo.txt 操作结果:把现在的数据读入文件中,关闭文件。bool Generation(CSNode *T,CSNode *child); 初始条件:兄弟孩子树T已经存在 操作结果:判断child是否是T的
7、后代,如果是返回true,否则返回false。void Output_Two_Member_Realtionship(CSNode *T,char name1,char name2); 初始条件:兄弟孩子树T已经存在 操作结果:根据已经输入的两个姓名进行查找和判断,确定他们的关系。void InOrderIn(CSNode *T,CSNode S,int &num); 初始条件:兄弟孩子树T已经存在 操作结果:对T进行中序遍历,并且把每一个节点信息送到数组S中,num为S中成员个数。void LineChars(CSNode S,int num); 初始条件:节点数组S已经存在操作结果:对数组
8、的节点信息按照出生日期进行排序,采用的是基数排序ADT CSNode2、抽象数据类型队列的定义如下:ADT LinkQueue数据对象:D=ei| i=1,2,3,n;n0;eiLinkQueue 数据关系:R1=ei-1, ei|ei-1,ei表示ei-1和ei之间有先后顺序关系基本操作:bool InitQueue(LinkQueue &Q); 操作结果:创建一个空的队列Q。bool DestroyQueue(LinkQueue &Q); 初始条件:队列Q存在 操作结果:销毁队列Q,Q不再存在。bool EnQueue(LinkQueue &Q,CSNode e); 初始条件:队列Q存在
9、操作结果:插入元素e为Q的新的队尾元素。bool ClearQueue(LinkQueue &Q); 初始条件:队列Q存在 操作结果:清空队列Q。bool QueueEmpty(LinkQueue Q); 初始条件:队列Q存在 操作结果:若队列为空,则返回true,否则返回false。bool DeQueue(LinkQueue &Q,CSNode &e); 初始条件:队列Q存在 操作结果:删除Q的队头元素,并用e返回其值,并返回true。int QueueLength(LinkQueue Q); 初始条件:队列Q存在 操作结果:返回队列Q的长度。bool GetHead(LinkQueue
10、Q,CSNode &e); 初始条件:队列Q存在 操作结果:用e返回队首元素,并返回true。 ADT LinkQueue3、主程序Void main()打开文本文件PersonInfo.txt;Do接受命令(对兄弟孩子树进行相关的操作的选项);处理命令(对兄弟孩子树进行相关的操作);while(“命令”!=“退出”);三、详细设计1、程序:由于程序有1000多行,所以就不列出,见附后的源程序(电子报告)。2、函数的调用关系图:mainToday_BrithdayName_RelationEdit_Member_InfoDelete_MemberAdd_New_ChildDetectOutput_N_MembersOutput_Two_Member_RealtionshipInOrderInfileDetectMember_BornDateDetectMember_Name 四、调试分析1、家谱系统的编程过程还是比较简单的,储存结构是兄弟孩子树,所以调试的时候还是比较顺利的。2、这次程序因为是关于树的操作,所以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专用:焊接钢管购销合同
- 全球与中国DWDM收发器行业营销趋势及行情监测研究研究报告(2024-2030版)
- 竭诚人事代理协议
- 分润合作协议
- 2024年工业区环境卫生清洁合同
- 2024年劳务派遣合同书
- 合资经济合作协议案
- 2024年个人住宅室内设计合同
- 充电桩用户信息管理方案
- 2024年家居装修质保服务协议样本
- 山东省淄博市张店区2022-2023学年七年级上学期期中英语试卷
- 04.第四讲 坚持以人民为中心
- fg-400变频器说明书
- jgd280同步控制器使用说明
- 传染病首诊医生负责制度传染病首诊负责制
- 胸腰椎压缩骨折中医治疗难点及解决思路和措施
- 电梯维修保养总体施工方案
- 校企产学研合作框架协议
- 个人租房合同协议下载
- 变应性支气管肺曲霉病ABPA中国专家共识
- 智能水产品养殖系统商业计划书
评论
0/150
提交评论