家族关系查询系统
再通过主函数调用实现的。 主函数:
/* 主控函数*/
int main(int argc,char* argv[]) {
DataType str[MAXNUM]=\,input[40]; int i,j,flag,start=0,pos,tag1,tag2; TriTree *temp,*tree=NULL; while(1) { printf(\欢迎使用家族关系查询系统!\\n\); printf(\请输入与之匹配的函数和参数,如parent(C)\\n\); printf(\新建一个家庭关系: Create(familyname) 参数为字符串\\n\); printf(\打开一个家庭关系: Open(familyname) 参数为字符串\\n\); printf(\添加新成员的信息: Append() 无参数\\n\); printf(\查找一个成员的祖先: Ancesstor(name) 参数为字符串\\n\); printf(\查找一个成员的祖先路径:AncesstorPath(name) 参数为字符串\\n\); printf(\确定一个成员是第几代: Generation(name) 参数为字符串\\n\); printf(\查找一个成员的双亲: Parent(name) 参数为字符串\\n\); printf(\查找一个成员的兄弟: Brothers(name) 参数为字符串\\n\); printf(\查找一个成员的堂兄弟: Consin(name) 参数为字符串\\n\); printf(\查找一个成员的孩子: Children(name) 参数为字符串\\n\);
printf(\查找一个成员的子孙后代:Descendants(name) 参数为字符串\\n\); printf(\退出系统: Exit() 无参数\\n? \);
21
家族关系查询系统
  gets(input);        /* input数组存放输入的函数和参数*/   j=0,tag1=0,tag2=0;   for(i=0;i   22  家族关系查询系统      else if(strcmp(input,\)==0)    flag=7;   else if(strcmp(input,\)==0)    flag=8;   else if(strcmp(input,\)==0)    flag=9;   else if(strcmp(input,\)==0)    flag=10;   else if(strcmp(input,\)==0)    flag=11;   else if(strcmp(input,\)==0)    flag=12;    else                      /* 无匹配则重新输入*/   {    printf(\无匹配的函数,请重新输入!\\n\);    continue;   }                 if(!(flag==1||flag==2||flag==12)&&start==0)   { /* 如果第一次输入函数不是建立、打开或退出,则重新输入*/    printf(\请先建立或打开一个家族关系!\\n\);    continue;   }   start=1;                /* 标记不是第一次输入input */   if(flag>=4&&flag<=11) /* 函数需要字符串型参数name */   {    temp=Search(tree,str);/* 若存在则返回结点*/    if(!temp)             /* 若不存在则返回*/    {     printf(\该成员不存在!\\n\);     continue;    }   }   switch(flag)              /* 根据flag标记调用函数*/   {    case 1:      tree=Create(str);     23  家族关系查询系统                                        }       break;   case 2:    tree=Open(str);     break;   case 3:     Append(tree);     break;   case 4:    Ancesstor(tree);     break;   case 5:     AncesstorPath(temp);     break;   case 6:     Parent(temp);     break;   case 7:    Generation(temp);     break;   case 8:     Brothers(temp,str);     break;   case 9:     Consin(temp);     break;   case 10:     Children(temp);     break;   case 11:    Descendants(temp);     break;   case 12:     exit(OK);  } }  return 0;  24