图2 成员二叉树功能模块图
1.2 总体功能模块
家谱管理系统 家谱的建立 家谱的插入 家谱的删除 图3 总体功能模块图
家谱的查找 家谱的显示 2 系统各功能模块的详细设计
2.1功能选择
功能选择模块函数,主要提供1:文件 2:家谱 两个功能模块让用户选择。输入数字1的时候,出现界面1:输入 2:输出 9:清盘 0:存盘返回。返回后输入数字2,出现界面1:找某人的所有儿子 2:找某人所有祖先 。用户根据自己的需求选择 void main()
4
{
BTree *bt;
FamType fam[MaxSize]; int n,sel,sell; ReadFile(fam,n); do {
printf(\文件操作2.家谱操作0.退出 请选择:\scanf(\switch(sel) {
case 1:
do {
printf(\:输入2:输出9:全清0:存盘返回 请选择:\scanf(\switch(sell) {
case 9:DelAll(fam,n);
break;
case 1:InputFam(fam,n);
break;
case 2:OutputFile(fam,n);
break;
case 0:SaveFile(fam,n); }
break;
}while (sell!=0); break; case 2:
bt=CreatBTree(\
5
}
}
do {
printf(\找某人所有儿子 2.找某人所有祖先 0:返回 请选择:\scanf(\switch(sell) { case 1:
FindSon(bt);
break;
case 2:
printf(\ }
break;
}while(sell!=0); break;
}while(sel!=0);
2.2信息输入
信息输入模块函数,出现界面请输入父亲、母亲和儿子的姓名让用户输入信息。代码如下:
void InputFam(FamType fam[],int &n) { }
printf(\输入父亲、母亲和儿子姓名:\
scanf(\n++;
6
2.3信息输出
信息输出模块函数,自动输出数据的信息及它们之间的家谱关系。按顺序输出父亲,母亲,儿子。代码如下: void OutputFile(FamType fam[],int n) {
int i; if(n<0) { }
for(i=0;i printf(\printf(\没有任何记录\\n\return; } 2.4信息存盘 信息存盘模块函数,将用户输入的信息存盘,下次要用时自动调用。代码如下: void SaveFile(FamType fam[],int n) { int i; FILE *fp; if((fp=fopen(\{ } for(i=0;i fwrite(&fam[i],sizeof(FamType),1,fp); printf(\数据家谱文件不能打开\\n\return; 7 } fclose(fp); 2.5信息清盘 信息清盘模块函数,将用户输入的信息全部清盘。代码如下: void DelAll(FamType fam[],int &n) { } FILE *fp; if((fp=fopen(\{ } n=0; fclose(fp); printf(\不能打开家谱文件\\n\return; 2.6信息查询 信息查询模块函数,查询用户输入数据的信息及家谱关系。具有的功能是1:找某人所有儿子2:找某人所有祖先。用户根据需要操作。 找某人所有儿子的代码: void FindSon(BTree *bt) { char xm[NAMEWIDTH]; BTree *p; printf(\父亲姓名:\scanf(\p=FindNode(bt,xm); if(p==NULL) printf(\不存在%s的父亲!\\n\ 8