实训总结报告_3d实训报告总结
实训总结报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“3d实训报告总结”。
QST青软实训学员学习总结
班级:软件113 学号:201107257 学员:陈昊
转眼间一个学期又将有结束,我们的实训课程也就还有一天。差不多两个周的实训时间不长,但感触良多。
记得上学期实训是在软件园,每天奔波于四方校区和软件园之间,尽管很累但是学的很多,过的很充实。这学期实训是在学校实验楼,由于教室缺少问题,我们每天只上半天课,剩下的半天自己安排。所以很多问题就要自己解决,或者拖到第二天找老师。可以说这两次实训经历都是压缩时间,波折不少。
但是由于徐美娇老师很负责,教课很认真仔细,有问必答,所以我们学的都很好。在做项目的过程中,也遇到很多的错误,其中有的错误到最后解决的时候却是发现是因为自己对知识掌握的不够熟练所造成的,在徐老师的耐心教导和同学们的热心帮助下,使我自身的排错能力有了很大的提高。在我看来,实训和平时上课最大的不同就是:自己 能有时间独立地进行编程。这一点很重要。在实训期间,老师会教给我们解决问题的思路,领着我们整合一遍程序,然后给我们充足的时间独立思考,解决问题,然后编写程序。这在很大程度上弥补了自己的缺陷和不足,使自己的能力有了不小的进步与提高。
现在很期待下一次实训,希望还是能由徐老师教我们,也希望实训环境能比上两次好,也希望时间稍微加上一点,好让我们在专业课上有更大的进步。
QST青软实训学员学习总结
班级:软件113班 学号:201107275 学员:许高博
时间过的好快啊,为期两个星期的实训生活即将结束了,短短的两个星期让我们收获很大,专业知识、编程水平都有很大的提高。刚开始三天的高强度的课
程安排让我们受益匪浅;接下来的上机实训又让我们可以巩固了课程。这让我觉得实习生活充实而有意义。辅导老师配好了环境之后,我们开始了项目的制作,这次项目实训算是自己小学期间主要完成的项目。最后,自己的努力还是有收获的,看着电脑上记录得满满的代码,看着自己的项目最终能够运行成功,就觉得很有成就感。
在本次的实训中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这次所学知识与实际的应用,理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实习对于我以后学习、找工作也真是受益菲浅,在短短的一个星期中让我初步从理性回到感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!相信这些宝贵的经验会成为我今后成功的重要的基石。
我非常感谢徐老师对我们的悉心指导以及刘刚老师对我们的照顾。
七、学生实训成果
项目界面
1、学员:孙振 1)项目界面如下:
2)项目代码如下:
#include #include #include
int MATEFLAG=0;typedef struct TreeNode {
int Num;
//记录这个人拥有几个儿女 char Name[20];
//记录这个人的姓名
char Kind;
//标示节点的种类有女G男B
struct TreeNode * NextNode[20];//记录这个人的儿女 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 OutPutMeage(TreeNode * Tree,char name[],int length);
void time()//延时1 {
}
void end()//结束暂停
{
n“);
for(int k=1;k
printf(”nnnn“);if(j%2==1){ printf(”tt◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆ printf(“tt◆
◇
n”);n“);n”);n“);n”);n“);n”);n“);n”);n“);n”);
n“);n”);n“);printf(”tt◇
◆ printf(“tt◆
◇ printf(”tt◇
O(∩_∩)O哈!
◆ printf(“tt◆
欢 迎 使 用.vcc
家 谱 系 统!
◇ printf(”tt◇
◆ printf(“tt◆
◇ printf(”tt◇
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
◆ printf(“tt◆
◇ printf(”tt◇
◆ printf(“tt◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
} else { printf(”tt◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ printf(“tt◇
◆ printf(”tt◆
◇
n“);n”);n“);n”);n“);n”);n“);n”);n“);printf(”tt◇
◆ printf(“tt◇
O(∩_∩)O哈!
◆ printf(”tt◆
欢 迎 使 用 KOBE 家 谱 系 统!
◇ printf(“tt◆
◇ printf(”tt◇
◆ printf(“tt◆
◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
◇ printf(”tt◇
◆ printf(“tt◆
◇ printf(”tt◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆ }
if(j!=29)
time();}
printf(“tttPre ENTER to exit”);
fflush(stdin);
getchar();
for(int i=1;i
{
printf(“nnnnnnntt”);for(int l=1;l
}
printf(“■”);printf(“nttttloading”);for(int j=1;j
%d%%“,i);time();printf(”.“);} //主函数 void main(){
TreeNode *Tree;Tree=(TreeNode *)malloc(sizeof(TreeNode));Tree->Parent =NULL;strcpy(Tree->Name,”0“);end();
MainMenue(Tree);}
//输出主菜单
void MainMenue(TreeNode *Tree){
char c;
char name[20];while(1){ system(”cls“);printf(”t“);
printf(”n★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★nt“);printf(”nt←←←←←←←A:创建家谱→→→→→→→→→→→→→→→→→→→→n“);printf(”nt←←←←←←←B:在家族中查询某人的信息→→→→→→→→→→→→→n“);printf(”nt←←←←←←←C:添加新的成员→→→→→→→→→→→→→→→→→→n“);printf(”nt←←←←←←←D:输出整个家族信息→→→→→→→→→→→→→→→→n“);printf(”nt←←←←←←←E:修改某个人的信息→→→→→→→→→→→→→→→→n“);printf(”nt←←←←←←←F:退出整个程序→→→→→→→→→→→→→→→→→→nt“);printf(”n☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆nt“);
c=getchar();switch(c){ case 'A': case 'a': system(”cls“);printf(”n★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★nt“);
→nn”);
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←←←←←(^_^)不错嘛!家谱图已经建立成功→→→→→
printf(”nnt--------------请按Enter键继续操作--------------“);getchar();break;case 'B': case 'b': system(”cls“);printf(”n★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★nt“);
if(strcmp(Tree->Name,”0“)==0){
} printf(”nt请输入你要查找的人的姓名:nt“);scanf(”%s“,name);OutPutMeage(SearchTree(Tree,name,20),name,20);
printf(”nt家谱图的多叉树尚未建立请先建立树n“);getchar();break;
----nt”);
getchar();break;
printf(“nnt-----卍----卍----卍----卍----卍----卍----卍----卍----卍----卍case 'C': case 'c': system(”cls“);printf(”n★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★nt“);
if(strcmp(Tree->Name,”0“)==0){
} AddNew(Tree);getchar();break;
printf(”nt家谱图的多叉树尚未建立请先建立树n“);getchar();break;case 'D': case 'd': system(”cls“);printf(”n★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★nt“);
if(strcmp(Tree->Name,”0“)==0){
}
printf(”nt家谱图的多叉树尚未建立请先建立树n“);getchar();break;
printf(”nnt整个家谱的主要信息如下:“);OutPutAll(Tree);getchar();break;case 'E': case 'e': system(”cls“);printf(”n★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★nt“);
if(strcmp(Tree->Name,”0“)==0){
} Change(Tree);getchar();break;
printf(”nt家谱图的多叉树尚未建立请先建立树n“);getchar();break;case 'F': case 'f': system(”cls“);printf(”n★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★nt“);
printf(”nn-----------------本次服务到此结束------------------“);
printf(”nt------------------欢迎下次使用---------------------“);printf(”nt------------------~~(╯﹏╰)b-------------------------nn“);break;case 'n':
break;default:
}
}
printf(”nnt--------对不起!你的选择不在服务范围之内!-----------“);
} if(c=='F'||c=='f')
getchar();break;printf(”nt-----------请您再次选择所需的服务项!---------------“);printf(”nt$_$----------------谢谢合作!----------------------$_$nt“);getchar();break;//添加新的成员
void AddNew(TreeNode * Tree){ }
//输出副菜单
void SubMenue2(TreeNode *Tree){
char c;
SubMenue2(Tree);int num;char name[20];TreeNode * NewNode;getchar();while(1)
{ system(”cls“);printf(”t“);
printf(”nnt
⌒⌒⌒⌒---****---请选择你的操作---****---⌒⌒⌒⌒“);
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这个人的信息请确认是否输入错误*****n“,name);
}
break;if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL&&Tree->Name!=Tree->Parent->NextNode[0]->Name)
{
printf(”nnt%s至今还没有配偶请先添加配偶“,Tree->Name);break;
} if(Tree->Parent==NULL&&(Tree->Num>20||Tree->Num
Tree->Num=0;if(MATEFLAG==1)
Tree=Tree->Parent;
NewNode=(TreeNode *)malloc(sizeof(TreeNode));printf(”nnt请输入添加人员姓名:nt“);scanf(”%s“,NewNode->Name);printf(”nnt请输入添加人员性别女G男B:nt“);scanf(”%1s“,&NewNode->Kind);num=Tree->Num;NewNode->NextNode[0]=(TreeNode *)malloc(sizeof(TreeNode));NewNode->NextNode[0]=NULL;NewNode->Num=0;NewNode->Parent=Tree;Tree->NextNode[num+1]=NewNode;
Tree->Num=Tree->Num+1;
printf(”nnt-------------子女的信息添加成功----------------“);break;
case 'B': case 'b': system(”cls“);printf(”⌒⌒⌒⌒---****---卍卍卍卍卍卍---****---⌒⌒⌒⌒“);
printf(”nnt请输入那个人的名字:nt“);scanf(”%s“,name);Tree=SearchTree(Tree,name,20);
if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0||Tree->NextNode[0]!=NULL)
{
} if(Tree==NULL){
printf(”nnt****该家谱图中没有%s这个人的信息请确认是否输printf(“nnt已经有了配偶”);break;入错误*****n“,name);
}
break;NewNode=(TreeNode *)malloc(sizeof(TreeNode));printf(”nnt请输入添加人员姓名:nt“);scanf(”%s“,NewNode->Name);printf(”nnt请输入添加人员性别女G男B:nt“);scanf(”%1s“,&NewNode->Kind);NewNode->Parent=Tree;Tree->NextNode[0]=NewNode;break;case 'C': case 'c': system(”cls“);printf(”⌒⌒⌒⌒---****---卍卍卍卍卍卍---****---⌒⌒⌒⌒“);
printf(”nnt----------------本项服务到此结束-----------------“);break;
case 'n':
break;default: system(”cls“);
}
} printf(”⌒⌒⌒⌒---****---卍卍卍卍卍卍---****---⌒⌒⌒⌒“);
printf(”nnt--------对不起!你的选择不在服务范围之内!---------“);
} if(c=='C'||c=='c')break;printf(”nnt--------------请按Enter键继续操作--------------“);getchar();getchar();printf(”nt-----------请您再次选择所需的服务项!-------------“);printf(”nt------------------谢谢合作!----------------------nt“);break;//修改某个人的信息
void Change(TreeNode * Tree){
char name[20];TreeNode * NewNode;printf(”nt请输入你要修改的人的信息:nt“);
scanf(”%s“,name);
NewNode=SearchTree(Tree,name,20);if(NewNode==NULL)
{ printf(”nnt****该家谱图中没有%s这个人的信息请确认是否输入错误*****n“,name);
} return;else {
} } SubMenue1(NewNode);//输出副菜单
void SubMenue1(TreeNode * Tree){
char c;int flag,i;char name[20];char Parent[2][20];TreeNode * NewNode;getchar();while(1){
system(”cls“);printf(”nt⌒⌒⌒⌒---****---请输入修改的服务选项---****---⌒⌒⌒⌒“);printf(”nt---*---*---*---A:修改个人的信息---*---*---*---*---*---*----“);printf(”nt---*---*---*---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“);
printf(”nnt是否要修改性别:如果需要就输入'1'不需要修改就输入'0'
scanf(“%s”,name);if(strcmp(name,“0”)!=0)
strcpy(Tree->Name,name);然后按Enter键继续nt“);
scanf(”%d“,&flag);
if(flag==1)
◇◆”);if(Tree->Parent==NULL)
{
} printf(“nnt个人信息修改成功”);break;
if(Tree->Kind=='G'||Tree->Kind=='g')
Tree->Kind='B';
else Tree->Kind='G';case 'B': case 'b': system(“cls”);printf(“t◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆ //判断是不是头节点
{
printf(”nt是这个家谱图里最顶端的人没有父母信息!“,name);
break;} if(MATEFLAG==1)
//判断是不是入赘或加入此间的 {
if(Tree->Kind=='G'||Tree->Kind=='g'){
printf(”nnt她是嫁入此间的所以父母信息不在家谱内包括“);
”);
if(Tree->Parent->Kind=='G'||Tree->Parent->Kind=='g'){
} else {
}
printf(“nnt请输入%s要修改的姓名:如果不需要修改就输入‘0’然
strcpy(Parent[0],”父亲“);strcpy(Parent[1],”母亲“);strcpy(Parent[0],”母亲“);strcpy(Parent[1],”父亲“);
}
} break;
} else {
printf(”nnt他是入赘此间的所以父母信息不在家谱内包括后按Enter键继续nt“,Parent[0]);
scanf(”%s“,name);if(strcmp(name,”0“)!=0)
strcpy(Tree->Parent->Name,name);printf(”nnt请输入%s要修改的姓名:如果不需要修改就输入‘0’然后按Enter键继续nt“,Parent[1]);
◇◆”);NewNode=Tree->Parent;if(NewNode==NULL)
//
scanf(“%s”,name);if(strcmp(name,“0”)!=0)
strcpy(Tree->Parent->NextNode[0]->Name,name);
printf(“nnt-------------父母的信息修改成功----------------”);break;case 'C': case 'c': system(“cls”);printf(“t◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆判断是不是头节点
{
printf(”nt是这个家谱图里最顶端的人没有兄弟姐妹信息!“,name);
break;} if(MATEFLAG==1)
//判断是不是入赘或加入此间的 {
if(Tree->Kind=='G'||Tree->Kind=='g'){
printf(”nnt她是嫁入此间的所以兄弟姐妹信息不在家谱内包括“);
} else
包括”);
{
printf(“nnt他是入赘此间的所以兄弟姐妹信息不在家谱内
}
} break;if(NewNode->Num==1){
} else {
for(i=1;iNum;i++){
if(NewNode->NextNode[i]->Name!=Tree->Name){
printf(”nnt请输入%s修改的姓名:如果不需要修改就
printf(“nnt没有兄弟姐妹”);break;输入‘0’然后按Enter键继续nt“,NewNode->NextNode[i]->Name);
scanf(”%s“,name);if(strcmp(name,”0“)!=0)
printf(”nnt是否要修改性别:如果需要就输入'1'不需要
strcpy(NewNode->NextNode[i]->Name,name);修改就输入'0'然后按Enter键继续nt“);
scanf(”%d“,&flag);if(flag==1){ if(NewNode->NextNode[i]->Kind=='G'||NewNode->NextNode[i]->Kind=='g')
◇◆”);
}
}
}
}
NewNode->NextNode[i]->Kind='B';
else NewNode->NextNode[i]->Kind='G';
printf(“nnt------------兄弟姐妹的信息修改成功-------------”);break;case 'D': case 'd': system(“cls”);printf(“t◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆
if(Tree->Num==0){
} if(Tree->Parent!=NULL)
if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0)
printf(”nnt至今还没有子女“);break;//如果他是入赘或者是嫁入的就需用配偶节点完成修改
for(i=1;iNum;i++){
{ }
Tree=Tree->Parent;
printf(”nnt请输入%s修改的姓名:如果不需要修改就输入‘0’然后按Enter键继续nt“,Tree->NextNode[i]->Name);
scanf(”%s“,name);
if(strcmp(name,”0“)!=0)
printf(”nnt是否要修改性别:如果需要就输入'1'不需要修改就输
strcpy(Tree->NextNode[i]->Name,name);入'0'然后按Enter键继续nt“);
scanf(”%d“,&flag);if(flag==1){ if(Tree->NextNode[i]->Kind=='G'||Tree->NextNode[i]->Kind=='g')
}
}
Tree->NextNode[i]->Kind='B';
else Tree->NextNode[i]->Kind='G';
printf(”nnt---------------子女的信息修改成功----------------“);break;case 'E': case 'e': system(”cls“);printf(”t◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆“);
if(Tree->Parent!=NULL){
if(Tree->NextNode[0]==NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)!=0)
{
printf(”nnt至今还没有配偶“);break;
}
if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0){
printf(”nnt请输入%s修改的姓名:如果不需要修改就输入‘0’然后按Enter键继续nt“,Tree->Parent->Name);
} else {
printf(”nnt请输入%s修改的姓名:如果不需要修改就输入scanf(“%s”,name);if(strcmp(name,“0”)!=0)
strcpy(Tree->Parent->Name,name);
‘0’然后按Enter键继续nt“,Tree->NextNode[0]->Name);
} else {
if(Tree->NextNode[0]==NULL)else {
printf(”nnt请输入%s修改的姓名:如果不需要修改就输入printf(“nnt至今还没有配偶”);
}
scanf(“%s”,name);if(strcmp(name,“0”)!=0)
strcpy(Tree->NextNode[0]->Name,name);‘0’然后按Enter键继续nt“,Tree->NextNode[0]->Name);
scanf(”%s“,name);if(strcmp(name,”0“)!=0)
strcpy(Tree->NextNode[0]->Name,name);
}
}
}
printf(”nnt---------------配偶的信息修改成功----------------“);break;case 'F': case 'f':
printf(”nnt----------------本项服务到此结束-----------------“);break;
case 'n':
}
break;default:
printf(”nnt--------对不起!你的选择不在服务范围之内!---------“);
} if(c=='F'||c=='f')break;printf(”nt-----------请您再次选择所需的服务项!-------------“);printf(”nt------------------谢谢合作!----------------------nt“);break;
printf(”nnt--------------请按Enter键继续操作--------------“);getchar();getchar();//创建树
void CreatTree(TreeNode *Node){
int i;
TreeNode *NewNode;NewNode=(TreeNode *)malloc(sizeof(TreeNode));
Node->NextNode[0]=NewNode;
printf(”nt请输入%s的子女的数目:nt“,Node->Name);Node->NextNode[0]=NULL;//Node->Parent =NULL;
scanf(”%d“,&(Node->Num));
printf(”nt请输入%s的配偶的姓名:nt“,Node->Name);scanf(”%s“,NewNode->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->NextNode[0]=NULL;Node->NextNode[0]=NewNode;Node->NextNode[0]->Parent=Node;for(i=1;iNum;i++){ NewNode=(TreeNode *)malloc(sizeof(TreeNode));printf(”nt请输入%s的第%d子女的名字nt“,Node->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->NextNode[i]=NewNode;CreatTree(Node->NextNode[i]);//遍历并输出树中的内容 void OutPutAll(TreeNode *Tree){
int i, flag=0;printf(”nt---****---***---***---***---***---***---***---***---***---“);printf(”nt姓名:%s 性别:“,Tree->Name);if(Tree->Kind=='G'||Tree->Kind=='g'){
} else printf(”男“);flag=1;printf(”女“);if(!(Tree->NextNode[0])){
} printf(”nt至今没有配偶和子女n“);return;
if(flag==1)
printf(”nt丈夫 姓名:%s“,Tree->NextNode[0]->Name);else printf(”nt妻子 姓名:%s“,Tree->NextNode[0]->Name);
for(i=1;iNum;i++){ printf(”nt
第%d
个
子
女的姓
名
:%s 别:“,i,Tree->NextNode[i]->Name,Tree->NextNode[i]->Kind);
if(Tree->NextNode[i]->Kind=='G'||Tree->NextNode[i]->Kind=='g')
printf(”女“);
else
printf(”男“);}
printf(”nt“);
for(i=1;iNum;i++){
OutPutAll(Tree->NextNode[i]);} }
//在树中经过遍历查找某个人
TreeNode * SearchTree(TreeNode *Tree,char name[],int length){ int i;TreeNode *NewNode;
性
if(strcmp(Tree->Name,name)==0)
}
//输出已经查找到的人的信息
void OutPutMeage(TreeNode * Tree,char name[],int length){
{ if(length==0)MATEFLAG=1;
} else MATEFLAG=0;return Tree;if(Tree->NextNode[0]==NULL)return NULL;for(i=0;iNum;i++){
} if(i==0)
NewNode=SearchTree(Tree->NextNode[i],name,0);
else
NewNode=SearchTree(Tree->NextNode[i],name,20);if(NewNode!=NULL)
return NewNode;
return NULL;
int flag=0,i;TreeNode *NewNode;
if(Tree==NULL){ printf(”nnt****该家谱图中没有%s这个人的信息请确认是否输入错误*****n“,name);
return;
printf(”nnt您所要找的人已经找到信息如下所示:“);printf(”nnt姓名:%st性别:“,name);}
if(Tree->Kind=='G'||Tree->Kind=='g')的性别
NewNode=Tree->Parent;
{ flag=1;
//标记他(她)
} printf(”女“);else printf(”男“);
if(MATEFLAG==1){
if(flag==1){
} else
printf(”nnt她是嫁入此间的所以父母信息不在家谱内包括“);printf(”nt丈夫 姓名:%s“,NewNode->Name);
{
} if((NewNode->Num)>0)
//判断
printf(”nnt他是入赘此间的所以父母信息不在家谱内包括“);printf(”nt妻子 姓名:%s“,NewNode->Name);他(她)是否有孩子
{
printf(”nt的孩子的信息如下:“);
//输出他(她)的孩子的信息
for(i=1;iNum;i++){
printf(”nt
姓
名
:%s
性别:“,NewNode->NextNode[i]->Name);
if(NewNode->NextNode[i]->Kind=='G'||NewNode->Kind=='g')
}
} return;
}
printf(”女“);
else
printf(”男“);
if(NewNode==NULL)
//判断它是不是根节点如果是的话就没有父母兄弟信息
printf(”nt是这个家谱图里最顶端的人没有父母和兄弟姐妹信息!“,name);
else {
if(NewNode->Kind=='G'||NewNode->Kind=='g')
//判断父亲节点是父亲还是母亲
{
//输出他(她)的父母亲的信息
} else {
} if(NewNode->Num>1)
//判断他(她)
printf(”nt母亲 姓名:%s“,NewNode->NextNode[0]->Name);printf(”nt父亲 姓名:%s“,NewNode->Name);printf(”nt母亲 姓名:%s“,NewNode->Name);
printf(”nt父亲 姓名:%s“,NewNode->NextNode[0]->Name);是否有兄弟姐妹
{
//输出他(她)的兄弟姐妹的信息
printf(”nt%s的兄弟姐妹信息如下:“,name);
for(i=1;iNum;i++){
if(NewNode->NextNode[i])
printf(”nt%s
姓
名
:%s
性别:“,NewNode->NextNode[i]->Name,NewNode->NextNode[i]->Name);
}
}
if(NewNode->NextNode[i]->Kind=='G'||Tree->Kind=='g')
printf(”女“);
else
printf(”男“);
else
否有配偶
配偶的信息
有孩子
息
printf(”nt%s没有兄弟姐妹!“,Tree->Name);} if(Tree->NextNode[0]!=NULL)
//判断他(她)是{
//输出他(她)的 if(flag==1)
printf(”nt丈夫 姓名:%s“,Tree->NextNode[0]->Name);else
printf(”nt妻子 姓名:%s“,Tree->NextNode[0]->Name);if(Tree->Num>0)
//判断他(她)是否 {
printf(”nt的孩子的信息如下:“);
//输出他(她)的孩子的信
for(i=1;iNum;i++)
{
printf(”nt姓名:%s 性别:“,Tree->NextNode[i]->Name);
if(Tree->NextNode[i]->Kind=='G'||Tree->Kind=='g')
printf(”女“);
else
printf(”男“);
} } else
printf(”nt%s至今还没有孩子“,name);
}
} else printf(”nt%s至今还没有配偶和孩子n“,Tree->Name);
2、学员:陈昊 1)项目界面如下:
2)项目代码如下:
#include #include #include
#include #include
//树的结构体定义 typedef struct TreeNode {
}TreeNode;
int MATEFLAG;
//构建家谱树函数
void createTree(TreeNode *t){
char name[20];
//姓名 char sex[3];
//性别 int num;
//孩子个数
struct TreeNode *nextNode[20];
//记录儿女 struct TreeNode *parent;
//记录上一级结点
TreeNode *NewNode=(TreeNode*)malloc(sizeof(TreeNode));NewNode->nextNode[0]=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->nextNode[0]=NULL;//没有配偶
return;//跳出 } if(strcmp(t->sex,”男“)==0){ strcpy(NewNode->sex,”女“);} if(strcmp(t->sex,”女“)==0){ strcpy(NewNode->sex,”男“);} NewNode->num=0;//将配偶连接到上一级相互连结 NewNode->parent=t;t->nextNode[0]=NewNode;//建立孩子结点
for(int i=1;inum;i++){
NewNode=(TreeNode*)malloc(sizeof(TreeNode));
printf(”请输入第%d个孩子的姓名“,i);
fflush(stdin);
gets(NewNode->name);
printf(”请输入第%d个孩子的性别“,i);
fflush(stdin);gets(NewNode->sex);
//重新分配
}
//将孩子与上一级相互连结
NewNode->parent=t;t->nextNode[i]=NewNode;
//递归创建孩子结点的孩子
createTree(t->nextNode[i]);
} //先序递归遍历并输出树中的内容 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){ } if(!(t->nextNode[0])){
}
printf(”nt至今没有配偶和子女n“);return;
flag=1;
if(flag==1)else
printf(”nt妻子
姓名:%s“,t->nextNode[0]->name);
printf(”nt丈夫
姓名:%s“,t->nextNode[0]->name);
//输出孩子
for(i=1;inum;i++)
{
printf(”nt%s的第%d
个子女的姓名别:%s“,t->name,i,t->nextNode[i]->name,t->nextNode[i]->sex);
}
//递归输出子女信息
for(i=1;inum;i++)
{
printf(”n“);
output(t->nextNode[i]);
}
}
//查找信息
TreeNode * SearchTree(TreeNode *t,char name[],int length){
int i;
TreeNode *NewNode;
if(strcmp(t->name,name)==0)
//比较查找姓名 :%s
性
} {
//MATEFLAG为0表示是子女,是1表示是配偶
if(length==0)MATEFLAG=1;
else
MATEFLAG=0;return t;
}//if if(t->nextNode[0]==NULL)return NULL;//递归比较配偶和子女 for(i=0;inum;i++){ if(i==0)NewNode=SearchTree(t->nextNode[i],name,0);
else NewNode=SearchTree(t->nextNode[i],name,20);if(NewNode!=NULL)return NewNode;
}//for
return NULL;//输出查找到的信息
void OutPutMeage(TreeNode * t){
int flag=0,i;
TreeNode *NewNode;
printf(”nnt---------------------“);
if(t==NULL){
printf(”nnt-------该家谱图中没有这个人的信息请确认是否输入错误-------n“);
printf(”nnt**********您所要找的人已经找到信息如下所 }
return;示**********“);
if(strcmp(t->sex,”女“)==0){
}
flag=1;
printf(”nnt姓名:%st性别:%s“,t->name,t->sex);
NewNode=t->parent;
if(MATEFLAG==1){
if(flag==1)
{
}//if
printf(”nnt她是嫁入此间的所以父母信息不在该家谱内“);printf(”nt丈夫 姓名:%s“,NewNode->name);
else
{
printf(”nnt他是入赘此间的所以父母信息不在该家谱内“);printf(”nt妻子 姓名:%s“,NewNode->name);
}//else
if((NewNode->num)>0)
//判断他(她)是否有孩子
{
printf(”nt的孩子的信息如下:“);
//输出他(她)的孩子的信息
for(i=1;inum;i++)
{ printf(”nt
姓
名
:%s
性别:%s“,NewNode->nextNode[i]->name,NewNode->nextNode[i]->sex);
}
} return;
}
if(NewNode==NULL)
//判断它是不是根节点如果是的话就没有父母兄弟信息
printf(”nt是这个家谱图里最顶端的人没有父母和兄弟姐妹信息!“,t->name);
else {
if(strcmp(NewNode->sex,”女“)==0)
//判断父亲节点是父亲还是母亲
{
//输出他(她)的父母亲的信息
} else {
}
if(NewNode->num>1)
//判断
printf(”nt母亲 姓名:%s“,NewNode->nextNode[0]->name);printf(”nt父亲 姓名:%s“,NewNode->name);printf(”nt母亲 姓名:%s“,NewNode->name);
printf(”nt父亲 姓名:%s“,NewNode->nextNode[0]->name);他(她)是否有兄弟姐妹
{
//输出他(她)的兄弟姐妹的信息
printf(”nt%s的兄弟姐妹信息如下:“,t->name);
for(i=1;inum;i++){
if(strcmp(NewNode->nextNode[i]->name,t->name)!=0)printf(”nt
姓
名
:%s
性别:%s“,NewNode->nextNode[i]->name,NewNode->nextNode[i]->sex);
if(t->nextNode[0]!=NULL)
}
}//for }//if else
printf(”nt%s没有兄弟姐妹!“,t->name);
//判断他(她)是否有配偶
{
//输出他(她)的配偶的信息
if(t->num>0)
//判断他
if(flag==0)else
printf(”nt妻子 姓名:%s“,t->nextNode[0]->name);printf(”nt丈夫 姓名:%s“,t->nextNode[0]->name);(她)是否有孩子
{
printf(”nt的孩子的信息如下:“);
//输出他(她)的孩子的信息
for(i=1;inum;i++){
printf(”nt
姓
名
:%s
性别%s:“,t->nextNode[i]->name,t->nextNode[i]->sex);
}
//输出副菜单
}//for }//if else
printf(”nt%s至今还没有孩子“,t->name);
}
else
printf(”nt%s至今还没有配偶和孩子n“,t->name);
void SubMenue2(TreeNode *t){
nt”);nt“);nt”);
printf(“nt
☆
C:
退 printf(”nt
☆
B:添加某个人配偶的信息
while(1)
char c;
//接受选择 char name[20];//记录添加姓名 TreeNode * NewNode;{
system(“cls”);//清楚屏幕先前的显示内容
printf(“nnt
*********** 请选择你的操作 ***********nt”);printf(“nt
☆
A:添加某个人的子女的信息
出
scanf(”%c“,&c);switch(c)
{ case 'A': case 'a': printf(”nnt请输入那个人的名字:nt“);fflush(stdin);
gets(name);
t=SearchTree(t,name,20);if(t==NULL){ printf(”nnt------该家谱图中没有%s这个人的信息,请确认是否输入错误------n“,name);
return;}
if(MATEFLAG==0&&t->nextNode[0]==NULL)//判断是否有配偶 { printf(”nnt%s至今还没有配偶请先添加配偶“,t->name);return;} //if(Tree->parent==NULL&&(Tree->num>20||Tree->numnum=0;} if(MATEFLAG==1){ t=t->parent;return;} //添加子女信息
NewNode=(TreeNode*)malloc(sizeof(TreeNode));printf(”nnt请输入添加人员姓名:nt“);scanf(”%s“,NewNode->name);printf(”nnt请输入添加人员性别:nt“);fflush(stdin);gets(NewNode->sex);
NewNode->nextNode[0]=(TreeNode *)malloc(sizeof(TreeNode));NewNode->nextNode[0]=NULL;NewNode->num=0;NewNode->parent=t;t->nextNode[t->num+1]=NewNode;t->num=t->num+1;
printf(”nnt-------------子女的信息添加成功----------------“);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->nextNode[0]->name)==0||t->nextNode[0]!=NULL)
{ printf(”nnt已经有了配偶“);break;} if(t==NULL){ printf(”nnt-------该家谱图中没有%s这个人的信息请确认是否输入错误------n“,name);
break;} NewNode=(TreeNode *)malloc(sizeof(TreeNode));printf(”nnt请输入添加人员姓名:nt“);scanf(”%s“,NewNode->name);printf(”nnt请输入添加人员性别:nt“);fflush(stdin);gets(NewNode->sex);NewNode->parent=t;t->nextNode[0]=NewNode;break;
case 'C':
case 'c': printf(”nnt----------------本项服务到此结束-----------------");