版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北华航天工业学院课程报告目录第一章绪论2第二章需求分析32.1题目32。2设计任务32。3数据测试3第三章概要设计33.1 设计思想33。2 实现方法4第四章详细设计44。1功能构想44。2界面设计44。3增加成员54.3.1 添加子女54。3。2 添加配偶54。4修改成员64.4。1修改个人信息64。4.2修改父母信息64。4。3修改兄弟姐妹的信息64.4。4修改子女的信息7第五章调试分析7第六章测试结果9致谢10参考文献11附录11第一章 绪论目前,很多家庭家谱丢失,家庭一些关系混乱,为了避免这一问题,制定一家谱程序.家谱用于记录某家族历代家族成员的情况与关系,实现对一个家族所有的资料进行
2、收集整理。支持对家谱的存储、更新、查询、统计等操作。并用计算机永久储存家族数据,方便随时调用。第二章 需求分析2。1题目家谱管理系统2。2设计任务系统总体说明:以树形结构存储家族信息,只考虑三代(祖父,父亲,叔叔,姑姑,自己,兄弟姐妹,堂兄弟姐妹),只考虑每个人有0或者1个兄弟姐妹的情况。注意每个结点结构.统计统计家族成员人数,查询家族成员辈份。完成功能的详细说明:1输入家族成员情况,建立树结构(涉及创建二叉树);2统计家族成员人数和每一个家庭成员人数(涉及树的遍历);3查询家族成员辈份情况(任意输入两个家庭成员,查询他们的关系,父子,祖孙,兄弟,堂兄弟,共同的祖先)。4。 选做,考虑每个人有
3、多个兄弟姐妹的情况。2。3数据测试测试的数据有:田迎新 陈瑞英 田紫藤 田紫恒 孙超 李美霖 。第三章 概要设计3。1 设计思想创建一棵树,存储家庭关系,数据类型有int Num; /记录这个人拥有几个儿女char Name20; /记录这个人的姓名char Sex; /标示节点的种类有女(0) 男(1)struct TreeNode NextNode20; /记录这个人的儿女struct TreeNode * Parent; /记录这个节点的父节点3。2 实现方法完成功能的函数有 void CreatTree(TreeNode Tree);/-创建树void OutPutAll(TreeNo
4、de *Tree);/-遍历并输出树中的内容void firstoftxt();/-写入文件的开始信息void ofAll(TreeNode *Tree);/-写入文件函数void ifAll();/-读取文件的函数TreeNode SearchTree(TreeNode Tree,char name,int length);/查找结点的函数void MainMenue(TreeNode Tree);/-主菜单void SubMenue1(TreeNode Tree);/-修改成员信息的菜单void SubMenue2(TreeNode Tree);/-添加新成员菜单void Change(T
5、reeNode * Tree);/-修改成员信息void AddNew(TreeNode * Tree);/-添加新成员void OutPutMessage(TreeNode Tree,char name,int length);/输出已经查找到的人的信息第四章 详细设计4。1功能构想构想好总体规划之后,便开始设计程序中需要用到的各个功能函数,初步构想是要先实现最基本的几项功能,其中数据操作的有:增加成员,修改成员资料,删除成员;数据存取的有:打开家谱,新建家谱,保存家谱;数据查询的有:查看某代信息,按姓名查找,查看成员关系,等等.4。2界面设计cout<"nnt -*请选择你
6、的操作*-";cout"nt-1:输入家谱信息建立多叉树-”;cout”nt-2:在家族中查找某人并输出他或(她)的相应信息-"cout<”nt-3:添加新的成员-";cout<”nt-4:输出整个家谱信息-”;cout”nt-5:修改某个人的信息-”; cout”nt-6:家谱信息存入文件-";cout<”nt-7:读取家谱信息文件-";cout<”nt-8:退出整个程序-nt”; if(选择1) CreatTree(TreeNode *Tree); Else if(选择2)OutPutMessage(Tre
7、eNode * Tree,char name,int length);Else if(选择3)AddNew(TreeNode * Tree);Else if(选择4)OutPutAll(TreeNode *Tree);Else if(选择5)Change(TreeNode Tree);Else if(选择6)ofAll(TreeNode *Tree);Else if(选择7)ifAll();Elseexit(0);4。3增加成员4.3。1 添加子女NewNode=new TreeNode;cout<"nnt请输入添加人员姓名: ”;cinNewNode>Name;cout
8、<”nnt请输入添加人员性别女(0) 男(1): ”;cin>>NewNodeSex;num=Tree>Num;NewNodeNextNode0=new TreeNode;NewNodeNextNode0=NULL;NewNodeNum=0;NewNodeParent=Tree;Tree->NextNodenum+1=NewNode;TreeNum=Tree>Num+1;cout"nnt-子女的信息添加成功-"4。3。2 添加配偶NewNode=new TreeNode;cout<”nnt请输入添加人员姓名: "cin&g
9、t;NewNode-Name;cout<<”nnt请输入添加人员性别女(0) 男(1): "cinNewNodeSex;NewNodeParent=Tree;TreeNextNode0=NewNode;4。4修改成员4.4。1修改个人信息cout”nnt请输入修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n”;cin>name;if(strcmp(name,”0”)!=0)strcpy(Tree>Name,name);cout”nnt是否要修改性别:(如果需要就输入1',不需要修改就输入0'然后按Enter键继续):n"
10、;cin>>flag;if (flag=1)if(TreeSex=0')TreeSex=1;else TreeSex=0;4.4.2修改父母信息cout”nnt请输入 "<Parent0” 要修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n”;cin>name;if(strcmp(name,”0")!=0)strcpy(Tree>Parent>Name,name);cout<"nnt请输入 ”Parent1<” 要修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n"ci
11、n>name;if(strcmp(name,”0")!=0)strcpy(TreeParentNextNode0>Name,name);4。4。3修改兄弟姐妹的信息cout<”nnt请输入 ”NewNodeNextNodeiName” 修改的姓名(如果不需要修改就输入'0,然后按Enter键继续):n”;cin>name;if(strcmp(name,”0")!=0)strcpy(NewNodeNextNodeiName,name);cout”nnt是否要修改性别(如果需要就输入1不需要修改就输入0'然后按Enter键继续):n&qu
12、ot;cin>flag;if (flag=1)if(NewNodeNextNodeiSex=0)NewNode>NextNodeiSex='1;else NewNode-NextNodeiSex='0;4。4.4修改子女的信息cout<”nnt请输入 ”<TreeNextNodei-Name” 修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n";cinname;if(strcmp(name,"0”)!=0)strcpy(TreeNextNodei-Name,name);cout<”nnt是否要修改性别(如果需要就
13、输入'1,不需要修改就输入0然后按Enter键继续):n"cinflag;if (flag=1)if(TreeNextNodeiSex='0')Tree>NextNodei>Sex='1'elseTreeNextNodei-Sex=0;第五章 调试分析1。进入系统2.建立家谱3.查看信息4。添加成员5.修改信息第六章 测试结果父亲姓名 田迎新 母亲姓名 陈瑞英 姐姐 田紫藤 姐夫 孙超 本人 田紫恒 李美霖致谢感谢孙红艳老师辛苦教导与教诲,让我学到了很多知识,提高了很大的能力.与此同时,也感谢老师为我辛苦验收课设,耐心讲解,让我也受
14、益匪浅。 今后,我一定会努力学习,用我的实际行动来回报家长,感谢我的老师,为学校争光,努力为我们的国家,贡献出一份微薄的贡献!参考文献1数据结构+语言版严蔚敏吴伟民编著 清华大学出版社 20112数据库数据结构软件工程课程设计指导及习题解答徐志才方贤文刘士喜编 北京师范大学出版社 20113C+语言程序设计 何钦铭 颜晖 主编 高等教育出版社2008附录include iostream。hinclude string。h>include stdio。h /getchar 可以将键入的信息存到缓冲区,按Enter键将进行输入include <stdlib。h> /system的
15、头文件,exit的头文件include <fstream.hint MATEFLAG=0;typedef struct TreeNodeint Num; /记录这个人拥有几个儿女char Name20; /记录这个人的姓名char Sex; /标示节点的种类有女(0) 男(1)struct TreeNode NextNode20; /记录这个人的儿女struct TreeNode * Parent; /记录这个节点的父节点TreeNode;void CreatTree(TreeNode Tree);/-创建树void OutPutAll(TreeNode Tree);/-遍历并输出树中的
16、内容void firstoftxt();/-写入文件的开始信息void ofAll(TreeNode Tree);/-写入文件函数void ifAll();/-读取文件的函数TreeNode SearchTree(TreeNode *Tree,char name,int length);/查找结点的函数void MainMenue(TreeNode Tree);/-主菜单void SubMenue1(TreeNode Tree);/-修改成员信息的菜单void SubMenue2(TreeNode Tree);/-添加新成员菜单void Change(TreeNode Tree);/-修改成员
17、信息void AddNew(TreeNode Tree);/-添加新成员void OutPutMessage(TreeNode Tree,char name,int length);/输出已经查找到的人的信息/主函数void main()TreeNode Tree;Tree=new TreeNode;Tree>Parent =NULL;strcpy(Tree-Name,”0"); MainMenue(Tree);/添加新的成员void AddNew(TreeNode * Tree)SubMenue2(Tree);/输出副菜单void SubMenue2(TreeNode *Tr
18、ee) char c;int num;char name20;TreeNode * NewNode;while(1)system(”cls”);cout<"t"; cout”nnt -*-请选择你的操作-*- ”;cout"nt-*-*-1:添加某个人的子女的信息-*-*- ”;cout"nt-2:添加某个人配偶的信息-*-*-* ”;cout”nt-*-*3:退出-*-*-*-nt”;cout<”请输入:";cinc;switch(c)case '1:cout<”nnt请输入那个人的名字: ”;cin>name
19、;Tree=SearchTree(Tree,name,20);if(Tree=NULL)cout<<"nnt*该家谱图中没有 ”name" 这个人的信息,请确认是否输入错误*n"break; if(Tree-Parent=NULL&Tree-NextNode0=NULLTree->Parent!=NULLTreeName!=TreeParentNextNode0Name) cout<<”nnt”<Tree->Name<” 至今还没有配偶请先添加配偶!" break; if(TreeParent=NU
20、LL(Tree>Num20|Tree>Num0))TreeNum=0; if(MATEFLAG=1)Tree=TreeParent; NewNode=new TreeNode; cout”nnt请输入添加人员姓名: ”;cin>NewNodeName;cout<”nnt请输入添加人员性别女(0) 男(1): ";cinNewNode-Sex;num=Tree-Num;NewNodeNextNode0=new TreeNode;NewNode>NextNode0=NULL;NewNodeNum=0;NewNode>Parent=Tree;Tree&g
21、t;NextNodenum+1=NewNode;Tree>Num=Tree>Num+1;cout<<”nnt-子女的信息添加成功-”;break;case 2:cout<"nnt请输入那个人的名字: ”;cinname;Tree=SearchTree(Tree,name,20);if(TreeParent!=NULL&&strcmp(TreeName,Tree>ParentNextNode0>Name)=0|Tree-NextNode0!=NULL)cout"nnt已经有了配偶”;break;if(Tree=NULL
22、)cout<"nnt*该家谱图中没有 "name” 这个人的信息,请确认是否输入错误*n”;break;NewNode=new TreeNode;cout<"nnt请输入添加人员姓名: ”;cin>NewNode>Name;cout<”nnt请输入添加人员性别女(0) 男(1): ”;cin>NewNode>Sex;NewNodeParent=Tree;Tree-NextNode0=NewNode;break;case '3:cout<<”nnt-本项服务到此结束-";break;case n
23、':break;default:cout<”nnt-对不起!你的选择不在服务范围之内!- ”;cout<<”nt-请您再次选择所需的服务项!- ”;cout<”nt-谢谢合作!-nt”;break;if (c='3')break;/修改某个人的信息void Change(TreeNode * Tree) char name20;TreeNode * NewNode;cout<"nt请输入你要修改的人的信息: " cinname; NewNode=SearchTree(Tree,name,20);if(NewNode=NU
24、LL) cout<”nnt*该家谱图中没有 "<name” 这个人的信息,请确认是否输入错误*n";return;else SubMenue1(NewNode);/输出副菜单void SubMenue1(TreeNode Tree)char c;int flag,i;char name20;char Parent220;TreeNode NewNode;while(1)system(”cls”);cout"t”; cout<”nnt -*请选择你的操作- ”;cout<”nt-1:修改个人的信息-*-*- ";cout<&q
25、uot;nt-*2:修改父母的信息-*-*- ”;cout”nt-*-3:修改兄弟姐妹的信息- ";cout<<"nt-*4:修改子女的信息-*- ";cout<”nt-5:修改配偶的信息-*- ”;cout”nt-*-6:退出-*-*-*-nt"cout<”请输入:";cin>c;switch(c)case 1:cout”nnt请输入修改的姓名(如果不需要修改就输入'0',然后按Enter键继续):n”;cinname;if(strcmp(name,”0”)!=0)strcpy(TreeName,
26、name);cout<"nnt是否要修改性别:(如果需要就输入1',不需要修改就输入0'然后按Enter键继续):n”;cin>flag;if (flag=1)if(Tree-Sex=0')Tree-Sex=1;else Tree>Sex='0;cout<"nnt个人信息修改成功!”;cout<”n按Enter键继续操作。 。”<<endl;getchar();break;case '2:if(Tree>Parent=NULL)/判断是不是头节点cout"nt是这个家谱图里最顶
27、端的人没有父母信息!"<endl;cout<"n-按Enter键继续操作。 。”<endl; getchar();break;if (MATEFLAG=1)/判断是不是入赘或加入此间的if(Tree-Sex=0) cout<<"nnt她是嫁入此间的所以父母信息不在家谱内包括!”;cout<”n-按Enter键继续操作.。 .。"endl; getchar(); else cout"nnt他是入赘此间的所以父母信息不在家谱内包括!";cout”n-按Enter键继续操作。. .。.”<endl;
28、 getchar(); break; if(TreeParent>Sex='0') strcpy(Parent0,”母亲”); strcpy(Parent1,"父亲”); else strcpy(Parent0,"父亲"); strcpy(Parent1,"母亲”); cout<”nnt请输入 ”<Parent0<" 要修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n"; cin>name; if(strcmp(name,”0")!=0) strcpy(TreeP
29、arent->Name,name); cout<"nnt请输入 "Parent1<<" 要修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n”; cinname; if(strcmp(name,"0”)!=0) strcpy(TreeParent-NextNode0Name,name); cout”nnt-父母的信息修改成功-"<endl;cout<<"n-按Enter键继续操作.。 。.。”<endl;getchar(); break; case 3: NewNode=T
30、ree>Parent; if(NewNode=NULL) /判断是不是头节点 cout"nt是这个家谱图里最顶端的人没有兄弟姐妹信息!”endl;cout<"n-按Enter键继续操作。.。 .。"<<endl; getchar(); break; if (MATEFLAG=1) /判断是不是入赘或加入此间的 if(Tree->Sex='0') cout<<”nnt她是嫁入此间的所以兄弟姐妹信息不在家谱内包括!”;cout”n-按Enter键继续操作.。 。.。"endl; getchar();
31、elsecout<"nnt他是入赘此间的所以兄弟姐妹信息不在家谱内包括!";cout”n-按Enter键继续操作。 。.”<endl; getchar(); break; if(NewNode>Num=1) cout<”nnt没有兄弟姐妹!”;cout”n-按Enter键继续操作。.。 。”<endl; getchar(); break; else for(i=1;i=NewNode-Num;i+) if(NewNode>NextNodeiName!=Tree->Name) cout<”nnt请输入 ”<NewNodeN
32、extNodei->Name" 修改的姓名(如果不需要修改就输入'0',然后按Enter键继续):n" cin>name; if(strcmp(name,”0”)!=0) strcpy(NewNode-NextNodei->Name,name); cout”nnt是否要修改性别(如果需要就输入1不需要修改就输入0'然后按Enter键继续):n”; cin>>flag; if (flag=1) if(NewNodeNextNodeiSex='0') NewNode-NextNodei->Sex=1;
33、else NewNodeNextNodeiSex='0;cout”nnt-兄弟姐妹的信息修改成功-”<<endl;cout<”n-按Enter键继续操作.。. .。”<endl;getchar();break;case 4':if(TreeNum=0) cout<<”nnt至今还没有子女!”;cout"n-按Enter键继续操作.。 .。”<endl; getchar(); break; if (TreeParent !=NULL)if (strcmp(Tree-Name,TreeParent>NextNode0>
34、Name)=0) /如果他是入赘或者是嫁入的就需用配偶节点完成修改 Tree=TreeParent;for(i=1;i<=Tree->Num;i+)cout"nnt请输入 ”TreeNextNodei->Name” 修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n”; cin>name; if(strcmp(name,"0”)!=0)strcpy(Tree>NextNodei->Name,name);cout<"nnt是否要修改性别(如果需要就输入1',不需要修改就输入'0'然后按E
35、nter键继续):n”; cinflag; if (flag=1) if(Tree-NextNodeiSex='0') TreeNextNodei-Sex=1' elseTree->NextNodeiSex='0;cout"nnt-子女的信息修改成功-”<endl;cout<”n-按Enter键继续操作.。. 。.。"<endl; getchar();break;case 5:if(TreeParent!=NULL)if (TreeNextNode0=NULL&&strcmp(TreeName,Tree
36、Parent>NextNode0-Name)!=0)cout<”nnt至今还没有配偶!”;cout”n-按Enter键继续操作.。 。"endl; getchar();break;if (strcmp(TreeName,Tree>Parent->NextNode0Name)=0)cout<"nnt请输入 ”Tree>Parent>Name” 修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n”; cinname; if(strcmp(name,”0”)!=0) strcpy(Tree>Parent-Name,na
37、me); elsecout”nnt请输入 "<<Tree->NextNode0Name<” 修改的姓名(如果不需要修改就输入0,然后按Enter键继续):n"; cin>name; if(strcmp(name,”0")!=0) strcpy(Tree>NextNode0Name,name); else if(TreeNextNode0=NULL)cout”nnt至今还没有配偶!"; else cout”nnt请输入 ”<<TreeNextNode0->Name<<" 修改的姓名
38、(如果不需要修改就输入'0然后按Enter键继续):n”; cinname; if(strcmp(name,"0")!=0) strcpy(Tree>NextNode0>Name,name); cout<”nnt-配偶的信息修改成功-"<endl;cout”n-按Enter键继续操作。.。 。.。”<endl;getchar(); break;case '6:cout”nnt-本项服务到此结束-"break;default:cout<”nnt-对不起!你的选择不在服务范围之内!-”;cout<”n
39、t-请您再次选择所需的服务项!-”;cout"nt-谢谢合作!-"<<endl;cout"n-按Enter键继续操作。.。 .。.”<endl;getchar();break;if (c=6')break;/输出主菜单void MainMenue(TreeNode *Tree)char c;char name20;while(1)system(”cls”);cout<”t”; cout<”nnt -*-请选择你的操作”;cout"nt-1:输入家谱信息建立多叉树-”;cout”nt-2:在家族中查找某人并输出他或(她
40、)的相应信息-”;cout"nt-3:添加新的成员-”;cout”nt-4:输出整个家谱信息-”;cout<”nt-5:修改某个人的信息-"; cout<”nt-6:家谱信息存入文件-”;cout”nt-7:读取家谱信息文件-”;cout"nt-8:退出整个程序-nt”;cout”请输入:"cinc;switch(c)case 1':/输入家谱信息建立多叉树TreeNode * NewNode; NewNode=new TreeNode; cout<”nt请输入姓名: ”; cinTree->Name; cout"nt请输入性别女(0) 男(1): " cinTreeSex; TreeParent=NewNode; Tree>Parent=NULL; CreatTree(Tree); cout<”nt-家谱图已经建立成功-nn”;cout”n-按Enter键继续操作.。 .。”<endl;getchar();break; case 2:/在家族中查找某人并输出他或(她)的相应信息 if(strcmp(TreeName,”0”)=0)cout<"nt家谱图的多
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家管网集团2026届高校毕业生招聘考试参考试题(浓缩500题)附答案详解(夺分金卷)
- 2026国网江苏省电力公司高校毕业生提前批招聘(约450人)笔试备考题库浓缩500题附答案详解(培优b卷)
- 2026国网黑龙江省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题含答案详解(培优a卷)
- 国家管网集团湖南公司2026届秋季高校毕业生招聘考试备考题库(浓缩500题)及答案详解(易错题)
- 2026秋季国家管网集团北方管道公司高校毕业生招聘考试参考题库(浓缩500题)附答案详解(黄金题型)
- 2026国网河南省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题附答案详解(典型题)
- 2026国家管网集团高校毕业生招聘考试参考试题(浓缩500题)及答案详解(考点梳理)
- 2026国网山西电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题附答案详解(典型题)
- 2026秋季国家管网集团北方管道公司高校毕业生招聘笔试参考题库(浓缩500题)含答案详解(研优卷)
- 2026年黑河市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(b卷)
- 减少老年住院患者口服药缺陷次数的pdca案例
- 普通心理学感觉和知觉蔡笑岳
- 护理安全警示教育
- 草诀百韵歌原文及译文
- GB/T 12970.4-2009电工软铜绞线第4部分:铜电刷线
- 【手抄小报】手绘消防安全手抄报电子小报(有线稿)
- 2023年兴海县社区工作者招聘考试笔试题库及答案解析
- 3.3数据与系统(第二课时) (1) 课件-高中信息技术必修1
- 2021年唐山交通发展集团有限公司校园招聘笔试试题及答案解析
- 高中历史必修上 《第6课 从隋唐盛世到五代十国》集体备课课件
- 煤矿岗位安全安全操作规程
评论
0/150
提交评论