




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.wd.wd.wd.QST青软实训学员学习总结班级:软件113学号:201107257学员:陈昊转眼间一个学期又将有完毕,我们的实训课程也就还有一天。差不多两个周的实训时间不长,但感触良多。记得上学期实训是在软件园,每天奔波于四方校区和软件园之间,尽管很累但是学的很多,过的很充实。这学期实训是在学校实验楼,由于教室缺少问题,我们每天只上半天课,剩下的半天自己安排。所以很多问题就要自己解决,或者拖到第二天找教师。可以说这两次实训经历都是压缩时间,曲折不少。但是由于徐美娇教师很负责,教课很认真仔细,有问必答,所以我们学的都很好。在做工程的过程中,也遇到很多的错误,其中有的错误到最后解决的时候却是发
2、现是因为自己对知识掌握的不够熟练所造成的,在徐教师的耐心教导和同学们的热心帮助下,使我自身的排错能力有了很大的提高。在我看来,实训和平时上课最大的不同就是:自己能有时间独立地进展编程。这一点很重要。在实训期间,教师会教给我们解决问题的思路,领着我们整合一遍程序,然后给我们充足的时间独立思考,解决问题,然后编写程序。这在很大程度上弥补了自己的缺陷和缺乏,使自己的能力有了不小的进步与提高。现在很期待下一次实训,希望还是能由徐教师教我们,也希望实训环境能比上两次好,也希望时间稍微加上一点,好让我们在专业课上有更大的进步。QST青软实训学员学习总结班级:软件113班学号:201107275学员:许高博
3、时间过的好快啊,为期两个星期的实训生活即将完毕了,短短的两个星期让我们收获很大,专业知识、编程水平都有很大的提高。刚开场三天的高强度的课程安排让我们受益匪浅;接下来的上机实训又让我们可以稳固了课程。这让我觉得实习生活充实而有意义。辅导教师配好了环境之后,我们开场了工程的制作,这次工程实训算是自己小学期间主要完成的工程。最后,自己的努力还是有收获的,看着电脑上记录得满满的代码,看着自己的工程最终能够运行成功,就觉得很有成就感。在本次的实训中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想方法一点一点的排除障碍,到最后获取成功,
4、一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这次所学知识与实际的应用,理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实习对于我以后学习、找工作也真是受益菲浅,在短短的一个星期中让我初步从理性回到感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!相信这些珍贵的经历会成为我今后成功的重要的基石。 我非常感谢徐教师对我们的悉心指导以及刘刚教师对我们的照顾。七、学
5、生实训成果工程界面学员:孙振1工程界面如下:2工程代码如下:#include #include #include int MATEFLAG=0;typedef struct TreeNodeint Num; /记录这个人拥有几个儿女char Name20; /记录这个人的姓名char Kind; /标示节点的种类有女G男Bstruct TreeNode * NextNode20; /记录这个人的儿女struct TreeNode * Parent; /记录这个节点的父节点TreeNode;void CreatTree(TreeNode *Tree);void OutPutAll(TreeNod
6、e *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);void time()/延时1for(int
7、k=1;k5000000;k+);system(cls);void end()/完毕暂停 for(int j=1;j30;j+)printf(nnnn);if(j%2=1)printf(ttn);printf(ttn);printf(ttn);printf(ttn);printf(tt O(_)O哈! n);printf(tt 欢 迎 使 用 .vcc 家 谱 系 统 ! n);printf(ttn);printf(ttn);printf(ttn);printf(ttn);printf(ttn);printf(ttn);elseprintf(ttn);printf(ttn);printf(tt
8、n);printf(ttn);printf(tt O(_)O哈! n);printf(tt 欢 迎 使 用 KOBE 家 谱 系 统 ! n);printf(ttn);printf(ttn);printf(ttn);printf(ttn);printf(ttn);printf(ttn); if(j!=29) time(); printf(tttPress ENTER to exit); fflush(stdin); getchar(); for(int i=1;i=100;i+) printf(nnnnnnntt);for(int l=1;l=i*0.2;l+)printf();printf(
9、nttttloading);for(int j=1;jParent =NULL;strcpy(Tree-Name,0);end(); MainMenue(Tree);/输出主菜单void MainMenue(TreeNode *Tree)char c;char name20;while(1)system(cls);printf(t); printf(nnt);printf(ntA:创立家谱n);printf(ntB:在家族中查询某人的信息n);printf(ntC:添加新的成员n);printf(ntD:输出整个家族信息n);printf(ntE:修改某个人的信息n);printf(ntF:退
10、出整个程序nt);printf(nnt);c=getchar();switch(c)case A:case a:system(cls);printf(nnt);TreeNode * NewNode;NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf(nt请输入姓名:nt);scanf(%s,Tree-Name);printf(nt请输入性别女G男B:nt);getchar();scanf(%c,&(Tree-Kind);Tree-Parent=NewNode;Tree-Parent=NULL;CreatTree(Tree);printf(nt(
11、 _ )不错嘛!家谱图已经建设成功nn);printf(nnt-请按Enter键继续操作-);getchar();break;case B:case b:system(cls);printf(nnt);if(strcmp(Tree-Name,0)=0)printf(nt家谱图的多叉树尚未建设请先建设树n);getchar();break;printf(nt请输入你要查找的人的姓名:nt);scanf(%s,name);OutPutMessage(SearchTree(Tree,name,20),name,20); printf(nnt-卍-卍-卍-卍-卍-卍-卍-卍-卍-卍-nt);getch
12、ar();break;case C:case c:system(cls);printf(nnt);if(strcmp(Tree-Name,0)=0)printf(nt家谱图的多叉树尚未建设请先建设树n);getchar();break;AddNew(Tree);getchar();break;case D:case d:system(cls);printf(nnt);if(strcmp(Tree-Name,0)=0)printf(nt家谱图的多叉树尚未建设请先建设树n);getchar();break;printf(nnt整个家谱的主要信息如下:);OutPutAll(Tree);getcha
13、r();break;case E:case e:system(cls);printf(nnt);if(strcmp(Tree-Name,0)=0)printf(nt家谱图的多叉树尚未建设请先建设树n);getchar();break;Change(Tree);getchar();break;case F:case f:system(cls);printf(nnt); printf(nn-本次服务到此完毕-);printf(nt-欢迎下次使用-);printf(nt-()b-nn);break;case n: break;default: printf(nnt-对不起!你的选择不在服务范围之内!
14、-);printf(nt-请您再次选择所需的服务项!-);printf(nt$_$-谢谢合作!-$_$nt);getchar();break;if (c=F|c=f)break;getchar();/添加新的成员void AddNew(TreeNode * Tree)SubMenue2(Tree);/输出副菜单void SubMenue2(TreeNode *Tree) char c;int num;char name20;TreeNode * NewNode;getchar();while(1)system(cls);printf(t); printf(nnt -*-请选择你的操作-*-);
15、printf(nt-*-*-*-A:添加某个人的子女的信息-*-*-*-*-n);printf(nt-*-*-*-B:添加某个人配偶的信息-*-*-*-*-*-n);printf(nt-*-*-*-C:退出-*-*-*-*-*-*-*-*-*-nt);c=getchar();switch(c)case A:case a:system(cls);printf(-*-卍卍卍卍卍卍-*-); printf(nnt请输入那个人的名字:nt);scanf(%s,name);Tree=SearchTree(Tree,name,20);if(Tree=NULL)printf(nnt*该家谱图中没有%s这个人
16、的信息请确认是否输入错误*n,name);break;if(Tree-Parent=NULL&Tree-NextNode0=NULL|Tree-Parent!=NULL&Tree-Name!=Tree-Parent-NextNode0-Name)printf(nnt%s至今还没有配偶请先添加配偶,Tree-Name);break;if(Tree-Parent=NULL&(Tree-Num20|Tree-NumNum=0;if(MATEFLAG=1) Tree=Tree-Parent;NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf(nnt请输
17、入添加人员姓名:nt);scanf(%s,NewNode-Name);printf(nnt请输入添加人员性别女G男B:nt);scanf(%1s,&NewNode-Kind);num=Tree-Num;NewNode-NextNode0=(TreeNode *)malloc(sizeof(TreeNode);NewNode-NextNode0=NULL;NewNode-Num=0;NewNode-Parent=Tree;Tree-NextNodenum+1=NewNode;Tree-Num=Tree-Num+1; printf(nnt-子女的信息添加成功-);break;case B:case
18、 b:system(cls);printf(-*-卍卍卍卍卍卍-*-); printf(nnt请输入那个人的名字:nt);scanf(%s,name);Tree=SearchTree(Tree,name,20);if(Tree-Parent!=NULL&strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0|Tree-NextNode0!=NULL)printf(nnt已经有了配偶);break;if(Tree=NULL)printf(nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n,name);break;NewNode=(TreeNode
19、*)malloc(sizeof(TreeNode);printf(nnt请输入添加人员姓名:nt);scanf(%s,NewNode-Name);printf(nnt请输入添加人员性别女G男B:nt);scanf(%1s,&NewNode-Kind);NewNode-Parent=Tree;Tree-NextNode0=NewNode;break;case C:case c:system(cls);printf(-*-卍卍卍卍卍卍-*-); printf(nnt-本项服务到此完毕-);break; case n: break;default:system(cls);printf(-*-卍卍卍卍
20、卍卍-*-); printf(nnt-对不起!你的选择不在服务范围之内!-);printf(nt-请您再次选择所需的服务项!-);printf(nt-谢谢合作!-nt);break;if (c=C|c=c)break;printf(nnt-请按Enter键继续操作-);getchar();getchar();/修改某个人的信息void Change(TreeNode * Tree) char name20;TreeNode * NewNode;printf(nt请输入你要修改的人的信息:nt); scanf(%s,name);NewNode=SearchTree(Tree,name,20);i
21、f(NewNode=NULL) printf(nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n,name);return;else SubMenue1(NewNode);/输出副菜单void SubMenue1(TreeNode * Tree)char c;int flag,i;char name20;char Parent220;TreeNode * NewNode;getchar();while(1)system(cls);printf(nt-*-请输入修改的服务选项-*-);printf(nt-*-*-*-A:修改个人的信息-*-*-*-*-*-*-);printf(nt-*
22、-*-*-B:修改父母的信息-*-*-*-*-*-*-);printf(nt-*-*-*-C:修改兄弟姐妹的信息-*-*-*-*-*-);printf(nt-*-*-*-D:修改子女的信息-*-*-*-*-*-*-);printf(nt-*-*-*-E:修改配偶的信息-*-*-*-*-*-*-);printf(nt-*-*-*-F:退出-*-*-*-*-*-*-*-*-*-nt);c=getchar();switch(c)case A:case a:system(cls);printf(t); printf(nnt请输入修改的姓名:如果不需要修改就输入0然后按Enter键继续nt);scanf
23、(%s,name);if(strcmp(name,0)!=0) strcpy(Tree-Name,name);printf(nnt是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续nt); scanf(%d,&flag); if (flag=1)if(Tree-Kind=G|Tree-Kind=g)Tree-Kind=B;else Tree-Kind=G;printf(nnt个人信息修改成功);break;case B:case b:system(cls);printf(t);if(Tree-Parent=NULL) /判断是不是头节点printf(nt是这个家谱图里最顶
24、端的人没有父母信息!,name); break;if (MATEFLAG=1) /判断是不是入赘或参加此间的if(Tree-Kind=G|Tree-Kind=g) printf(nnt她是嫁入此间的所以父母信息不在家谱内包括);elseprintf(nnt他是入赘此间的所以父母信息不在家谱内包括);break;if(Tree-Parent-Kind=G|Tree-Parent-Kind=g)strcpy(Parent0,母亲);strcpy(Parent1,父亲);else strcpy(Parent0,父亲);strcpy(Parent1,母亲);printf(nnt请输入%s要修改的姓名:
25、如果不需要修改就输入0然后按Enter键继续nt,Parent0);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Parent-Name,name);printf(nnt请输入%s要修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Parent1);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Parent-NextNode0-Name,name); printf(nnt-父母的信息修改成功-);break;case C:case c:system(cls);printf(t);Ne
26、wNode=Tree-Parent;if(NewNode=NULL) /判断是不是头节点printf(nt是这个家谱图里最顶端的人没有兄弟姐妹信息!,name); break;if (MATEFLAG=1) /判断是不是入赘或参加此间的if(Tree-Kind=G|Tree-Kind=g) printf(nnt她是嫁入此间的所以兄弟姐妹信息不在家谱内包括);elseprintf(nnt他是入赘此间的所以兄弟姐妹信息不在家谱内包括);break;if(NewNode-Num=1)printf(nnt没有兄弟姐妹);break;elsefor(i=1;iNum;i+)if(NewNode-Next
27、Nodei-Name!=Tree-Name)printf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,NewNode-NextNodei-Name);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(NewNode-NextNodei-Name,name);printf(nnt是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续nt);scanf(%d,&flag);if (flag=1)if(NewNode-NextNodei-Kind=G|NewNode-NextNodei-Kind=g)NewNod
28、e-NextNodei-Kind=B;else NewNode-NextNodei-Kind=G; printf(nnt-兄弟姐妹的信息修改成功-);break;case D:case d:system(cls);printf(t);if(Tree-Num=0)printf(nnt至今还没有子女);break;if (Tree-Parent !=NULL)if (strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0) /如果他是入赘或者是嫁入的就需用配偶节点完成修改Tree=Tree-Parent;for(i=1;iNum;i+)printf(nnt请输
29、入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tree-NextNodei-Name);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-NextNodei-Name,name);printf(nnt是否要修改性别:如果需要就输入1不需要修改就输入0然后按Enter键继续nt);scanf(%d,&flag);if (flag=1)if(Tree-NextNodei-Kind=G|Tree-NextNodei-Kind=g)Tree-NextNodei-Kind=B;else Tree-NextNodei-Kind=G; pr
30、intf(nnt-子女的信息修改成功-);break;case E:case e:system(cls);printf(t);if(Tree-Parent!=NULL)if (Tree-NextNode0=NULL&strcmp(Tree-Name,Tree-Parent-NextNode0-Name)!=0)printf(nnt至今还没有配偶);break;if (strcmp(Tree-Name,Tree-Parent-NextNode0-Name)=0)printf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tree-Parent-Name);scan
31、f(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-Parent-Name,name);elseprintf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tree-NextNode0-Name);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-NextNode0-Name,name);elseif(Tree-NextNode0=NULL)printf(nnt至今还没有配偶);elseprintf(nnt请输入%s修改的姓名:如果不需要修改就输入0然后按Enter键继续nt,Tr
32、ee-NextNode0-Name);scanf(%s,name);if(strcmp(name,0)!=0)strcpy(Tree-NextNode0-Name,name); printf(nnt-配偶的信息修改成功-);break;case F:case f: printf(nnt-本项服务到此完毕-);break; case n: break;default: printf(nnt-对不起!你的选择不在服务范围之内!-);printf(nt-请您再次选择所需的服务项!-);printf(nt-谢谢合作!-nt);break;if (c=F|c=f)break; printf(nnt-请按
33、Enter键继续操作-);getchar();getchar();/创立树void CreatTree(TreeNode *Node)int i;TreeNode *NewNode;NewNode=(TreeNode *)malloc(sizeof(TreeNode); Node-NextNode0=NewNode;Node-NextNode0=NULL;/Node-Parent =NULL;printf(nt请输入%s的子女的数目:nt,Node-Name); scanf(%d,&(Node-Num);printf(nt请输入%s的配偶的姓名:nt,Node-Name);scanf(%s,N
34、ewNode-Name);if(Node-Num)=0&strcmp(NewNode-Name,0)=0)return ;if (Node-Kind=G|Node-Kind=g)NewNode-Kind=B;else NewNode-Kind=G;NewNode-Num=0;NewNode-NextNode0=NULL;Node-NextNode0=NewNode;Node-NextNode0-Parent=Node;for(i=1;iNum;i+)NewNode=(TreeNode *)malloc(sizeof(TreeNode);printf(nt请输入%s的第%d子女的名字nt,Nod
35、e-Name,i);scanf(%s,NewNode-Name);printf(nt请输入%s的第%d子女的性别女G男B:nt,Node-Name,i);getchar();scanf(%c,&NewNode-Kind);NewNode-Num=0;NewNode-Parent=Node;Node-NextNodei=NewNode;CreatTree(Node-NextNodei);/遍历并输出树中的内容void OutPutAll(TreeNode *Tree)int i, flag=0;printf(nt-*-*-*-*-*-*-*-*-*-);printf(nt姓名:%s 性别:,Tr
36、ee-Name);if (Tree-Kind=G|Tree-Kind=g)flag=1;printf(女);else printf(男);if (!(Tree-NextNode0) printf(nt至今没有配偶和子女n);return; if(flag=1)printf(nt丈夫 姓名:%s,Tree-NextNode0-Name);elseprintf(nt妻子 姓名:%s,Tree-NextNode0-Name);for(i=1;iNum;i+)printf(nt第%d个子女的姓名:%s 性别:,i,Tree-NextNodei-Name,Tree-NextNodei-Kind);if
37、(Tree-NextNodei-Kind=G|Tree-NextNodei-Kind=g)printf(女);else printf(男);printf(nt);for(i=1;iNum;i+)OutPutAll(Tree-NextNodei);/在树中经过遍历查找某个人TreeNode * SearchTree(TreeNode *Tree,char name,int length)int i;TreeNode *NewNode; if(strcmp(Tree-Name,name)=0)if(length=0) MATEFLAG=1;else MATEFLAG=0;return Tree;i
38、f(Tree-NextNode0=NULL)return NULL;for(i=0;iNum;i+)if (i=0) NewNode=SearchTree(Tree-NextNodei,name,0);else NewNode=SearchTree(Tree-NextNodei,name,20);if (NewNode!=NULL) return NewNode; return NULL;/输出已经查找到的人的信息void OutPutMessage(TreeNode * Tree,char name,int length) int flag=0,i;TreeNode *NewNode;if(
39、Tree=NULL)printf(nnt*该家谱图中没有%s这个人的信息请确认是否输入错误*n,name); return;printf(nnt您所要找的人已经找到信息如下所示:);printf(nnt姓名:%st性别:,name); if (Tree-Kind=G|Tree-Kind=g) flag=1; /标记他(她)的性别printf(女);else printf(男); NewNode=Tree-Parent;if (MATEFLAG=1)if(flag=1) printf(nnt她是嫁入此间的所以父母信息不在家谱内包括);printf(nt丈夫 姓名:%s,NewNode-Name)
40、;elseprintf(nnt他是入赘此间的所以父母信息不在家谱内包括);printf(nt妻子 姓名:%s,NewNode-Name);if (NewNode-Num)0) /判断他(她)是否有孩子printf(nt的孩子的信息如下:); /输出他(她)的孩子的信息for(i=1;iNum;i+)printf(nt姓名:%s 性别:,NewNode-NextNodei-Name);if (NewNode-NextNodei-Kind=G|NewNode-Kind=g) printf(女);else printf(男);return;if(NewNode=NULL)/判断它是不是根节点如果是的
41、话就没有父母兄弟信息printf(nt是这个家谱图里最顶端的人没有父母和兄弟姐妹信息!,name);elseif (NewNode-Kind=G|NewNode-Kind=g) /判断父亲节点是父亲还是母亲 /输出他她的父母亲的信息printf(nt母亲 姓名:%s,NewNode-Name);printf(nt父亲 姓名:%s,NewNode-NextNode0-Name);else printf(nt母亲 姓名:%s,NewNode-NextNode0-Name);printf(nt父亲 姓名:%s,NewNode-Name);if (NewNode-Num1) /判断他(她)是否有兄弟姐
42、妹/输出他(她)的兄弟姐妹的信息printf(nt%s的兄弟姐妹信息如下:,name);for(i=1;iNum;i+)if(NewNode-NextNodei)printf(nt%s姓名:%s 性别:,NewNode-NextNodei-Name,NewNode-NextNodei-Name);if (NewNode-NextNodei-Kind=G|Tree-Kind=g)printf(女);else printf(男);elseprintf(nt%s没有兄弟姐妹!,Tree-Name);if(Tree-NextNode0!=NULL) /判断他(她)是否有配偶 /输出他(她)的配偶的信息
43、if(flag=1)printf(nt丈夫 姓名:%s,Tree-NextNode0-Name);elseprintf(nt妻子 姓名:%s,Tree-NextNode0-Name);if (Tree-Num0) /判断他(她)是否有孩子printf(nt的孩子的信息如下:); /输出他(她)的孩子的信息for(i=1;iNum;i+)printf(nt姓名:%s 性别:,Tree-NextNodei-Name);if (Tree-NextNodei-Kind=G|Tree-Kind=g) printf(女);else printf(男);elseprintf(nt%s至今还没有孩子,name
44、);else printf(nt%s至今还没有配偶和孩子n,Tree-Name);学员:陈昊1工程界面如下:2工程代码如下:#include#include#include#include#include/树的构造体定义typedef struct TreeNodechar name20; /姓名char sex3; /性别int num; /孩子个数struct TreeNode *nextNode20; /记录儿女struct TreeNode *parent; /记录上一级结点TreeNode;int MATEFLAG;/构建家谱树函数void createTree(TreeNode *
45、t)TreeNode *NewNode=(TreeNode*)malloc(sizeof(TreeNode);NewNode-nextNode0=NULL;if(strcmp(t-name,0)=0) /0表示没有return; printf(请输入%s的孩子个数,t-name);scanf(%d,&t-num); /建设配偶结点printf(请输入%s的配偶的姓名(输入0表示没有配偶): ,t-name);fflush(stdin);gets(NewNode-name);if(strcmp(NewNode-name,0)=0)t-nextNode0=NULL;/没有配偶 return; /跳
46、出if(strcmp(t-sex,男)=0)strcpy(NewNode-sex,女);if(strcmp(t-sex,女)=0)strcpy(NewNode-sex,男);NewNode-num=0;/将配偶连接到上一级相互连结NewNode-parent=t;t-nextNode0=NewNode;/建设孩子结点for(int i=1; inum;i+) NewNode=(TreeNode*)malloc(sizeof(TreeNode); /重新分配 printf(请输入第%d个孩子的姓名,i); fflush(stdin); gets(NewNode-name); printf(请输入
47、第%d个孩子的性别,i); fflush(stdin); gets(NewNode-sex); /将孩子与上一级相互连结 NewNode-parent=t; t-nextNodei=NewNode; /递归创立孩子结点的孩子 createTree(t-nextNodei); /先序递归遍历并输出树中的内容void output(TreeNode *t) int flag=0; int i;printf(n n);printf(nt姓名:%s 性别:%s,t-name,t-sex);/flag为1表示女if(strcmp(t-sex,女)=0) flag=1; if (!(t-nextNode0
48、) printf(nt至今没有配偶和子女n);return;if(flag=1)printf(nt丈夫 姓名:%s,t-nextNode0-name);elseprintf(nt妻子 姓名:%s,t-nextNode0-name); /输出孩子for(i=1;inum;i+) printf(nt%s的第%d个子女的姓名:%s 性别:%s,t-name,i,t-nextNodei-name,t-nextNodei-sex); /递归输出子女信息for(i=1;inum;i+) printf(n); output(t-nextNodei); /查找信息TreeNode * SearchTree(T
49、reeNode *t,char name,int length)int i; TreeNode *NewNode; if(strcmp(t-name,name)=0) /比较查找姓名/MATEFLAG为0表示是子女,是1表示是配偶if(length=0)MATEFLAG=1; else MATEFLAG=0;return t;/ifif(t-nextNode0=NULL)return NULL;/递归比较配偶和子女for(i=0;inum;i+)if (i=0)NewNode=SearchTree(t-nextNodei,name,0); else NewNode=SearchTree(t-n
50、extNodei,name,20);if (NewNode!=NULL)return NewNode; /for return NULL;/输出查找到的信息void OutPutMessage(TreeNode * t) int flag=0,i; TreeNode *NewNode; printf(nnt-);if(t=NULL) printf(nnt-该家谱图中没有这个人的信息请确认是否输入错误-n); return; printf(nnt*您所要找的人已经找到信息如下所示*); printf(nnt姓名:%st性别:%s,t-name,t-sex); if(strcmp(t-sex,女)
51、=0) flag=1; NewNode=t-parent;if (MATEFLAG=1) if(flag=1) printf(nnt她是嫁入此间的所以父母信息不在该家谱内);printf(nt丈夫 姓名:%s,NewNode-name);/ifelseprintf(nnt他是入赘此间的所以父母信息不在该家谱内);printf(nt妻子 姓名:%s,NewNode-name);/elseif (NewNode-num)0) /判断他(她)是否有孩子printf(nt的孩子的信息如下:); /输出他(她)的孩子的信息for(i=1;inum;i+)printf(nt姓名:%s 性别:%s,NewN
52、ode-nextNodei-name,NewNode-nextNodei-sex);return;if(NewNode=NULL) /判断它是不是根节点如果是的话就没有父母兄弟信息printf(nt是这个家谱图里最顶端的人没有父母和兄弟姐妹信息!,t-name);else if(strcmp(NewNode-sex,女)=0) /判断父亲节点是父亲还是母亲 /输出他她的父母亲的信息printf(nt母亲 姓名:%s,NewNode-name);printf(nt父亲 姓名:%s,NewNode-nextNode0-name);else printf(nt母亲 姓名:%s,NewNode-nex
53、tNode0-name);printf(nt父亲 姓名:%s,NewNode-name);if (NewNode-num1) /判断他(她)是否有兄弟姐妹 /输出他(她)的兄弟姐妹的信息printf(nt%s的兄弟姐妹信息如下:,t-name);for(i=1;inum;i+)if(strcmp(NewNode-nextNodei-name,t-name)!=0)printf(nt姓名:%s 性别:%s,NewNode-nextNodei-name,NewNode-nextNodei-sex);/for/ifelseprintf(nt%s没有兄弟姐妹!,t-name);if(t-nextNod
54、e0!=NULL) /判断他(她)是否有配偶 /输出他(她)的配偶的信息if(flag=0)printf(nt丈夫 姓名:%s,t-nextNode0-name);elseprintf(nt妻子 姓名:%s,t-nextNode0-name);if (t-num0) /判断他(她)是否有孩子printf(nt的孩子的信息如下:); /输出他(她)的孩子的信息for(i=1;inum;i+) printf(nt姓名:%s 性别%s:,t-nextNodei-name,t-nextNodei-sex);/for/ifelseprintf(nt%s至今还没有孩子,t-name);else print
55、f(nt%s至今还没有配偶和孩子n,t-name);/输出副菜单void SubMenue2(TreeNode *t)char c; /承受选择char name20; /记录添加姓名TreeNode * NewNode;while(1) system(cls); /清楚屏幕先前的显示内容printf(nnt * 请选择你的操作 *nt);printf(nt A:添加某个人的子女的信息 nt);printf(nt B:添加某个人配偶的信息 nt);printf(nt C:退出 nt); scanf(%c,&c);switch(c)case A:case a:printf(nnt请输入那个人的名
56、字:nt);fflush(stdin); gets(name);t=SearchTree(t,name,20);if(t=NULL)printf(nnt-该家谱图中没有%s这个人的信息,请确认是否输入错误-n,name);return;if(MATEFLAG=0&t-nextNode0=NULL)/判断是否有配偶printf(nnt%s至今还没有配偶请先添加配偶,t-name);return;/if(Tree-parent=NULL&(Tree-num20|Tree-numnum=0;if(MATEFLAG=1)t=t-parent;return; /添加子女信息NewNode=(TreeNo
57、de*)malloc(sizeof(TreeNode);printf(nnt请输入添加人员姓名:nt);scanf(%s,NewNode-name);printf(nnt请输入添加人员性别:nt);fflush(stdin);gets(NewNode-sex);NewNode-nextNode0=(TreeNode *)malloc(sizeof(TreeNode);NewNode-nextNode0=NULL;NewNode-num=0;NewNode-parent=t;t-nextNodet-num+1=NewNode;t-num=t-num+1; printf(nnt-子女的信息添加成功
58、-);break; case B: case b: printf(nnt请输入那个人的名字:nt);scanf(%s,name); t=SearchTree(t,name,20);if(t-parent!=NULL&strcmp(t-name,t-parent-nextNode0-name)=0|t-nextNode0!=NULL)printf(nnt已经有了配偶);break;if(t=NULL)printf(nnt -该家谱图中没有%s这个人的信息请确认是否输入错误-n,name);break;NewNode=(TreeNode *)malloc(sizeof(TreeNode);prin
59、tf(nnt请输入添加人员姓名:nt);scanf(%s,NewNode-name);printf(nnt请输入添加人员性别:nt);fflush(stdin);gets(NewNode-sex);NewNode-parent=t;t-nextNode0=NewNode;break; case C: case c: printf(nnt-本项服务到此完毕-);break;/switch if (c=C|c=c) break; printf(nnt-请按Enter键继续操作-); getchar();/while/main/添加成员信息void AddNew(TreeNode *t) SubMe
60、nue2(t);/输出副菜单void SubMenue1(TreeNode *t)char c;int flag,i;char name20;char Parent220;TreeNode * NewNode;while(1)system(cls); /清楚屏幕先前的显示内容printf(t);printf(nnt -请选择你的操作- );printf(nt A 修改个人的信息 n);printf(nt B 修改父母的信息 n);printf(nt C 修改兄弟姐妹的信息 n);printf(nt D 修改子女的信息 n);printf(nt E修改配偶的信息 n);printf(nt F退出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园防诈骗宣传合作合同(2篇)
- 2025全面劳动合同模板
- 2025医疗器械专业技术转让合同
- 间接型颈动脉海绵窦瘘的临床护理
- 新质生产力探源
- 2025年杭州解除劳动合同协议书范本
- 2025年国有企业土地转让中介服务合同
- 2025年统计师之中级统计师工作实务过关检测试卷B卷附答案
- 《社区精神健康管理》课件
- 大学物理教学设计质点运动的描述
- 公园绿地四害监测及消杀预案
- 电梯生产质量安全总监题库含答案
- 民用无人机操控员执照(CAAC)考试复习重点题库500题(含答案)
- 机械租赁保障措施
- 中山大学与吉首大学联合培养本科生项目实施办法
- 山东省烟台市2024-2025学年高二地理下学期期中试题
- 门窗店和装修公司合作协议书
- 顺丰控股成本问题及对策分析
- 美的公司存货管理存在的问题及研究对策
- 抖音火花合同模板
- 2024年共青团入团积极分子考试题库(含答案)
评论
0/150
提交评论