发布时间 : 星期一 文章数据结构家谱管理系统方案更新完毕开始阅读
p->brother=creatfamily(fp); return p; } } }
void PreOrder(ptree p) {
if(p) {
show(p); PreOrder(p->fchild); PreOrder(p->brother); } }
void show(ptree p) {
printf(\名字 配偶 第几代\\n\
printf(\ }
void search(ptree p,char name[]) { if(p) {
if(strcmp(p->male,name)==0) {
show(p); getchar(); getchar(); }
search(p->fchild,name); search(p->brother,name); } }
void add(ptree p,char name[]) {
char fname[10],mname[10]; int i; if(p) {
if(strcmp(p->male,name)==0) {
printf(\名字 配偶 第几代\\n\
scanf(\ p->fchild=(ptree)malloc(sizeof(pnode));
strcpy(p->fchild->male,fname); strcpy(p->fchild->female,mname); p->fchild->n=i;
p->fchild->fchild=NULL; p->fchild->brother=NULL; }
add(p->fchild,name); add(p->brother,name); } }
void gai(ptree p,char name[]) {
char fname[10],mname[10]; int i; if(p) {
if(strcmp(p->male,name)==0) {
printf(\名字 配偶 第几代\\n\
scanf(\ strcpy(p->male,fname); strcpy(p->female,mname); p->n=i; }
gai(p->fchild,name); gai(p->brother,name); } }
void save(ptree p,FILE *stream) { if(p) {
fprintf(stream,\ save(p->fchild,stream); save(p->brother,stream); } else {
char out[20] = \
fprintf(stream,\ } }
int main() { int status;
char name[10]; ptree p;
FILE *fp= fopen(\ while(1){ status=Menu(); switch(status) {
case 1:
p=creatfamily(fp); getchar(); getchar(); break; case 2: PreOrder(p); getchar(); getchar(); break; case 3: printf(\请输入搜索的名字\\n\ scanf(\ search(p,name); break; case 4: printf(\请输入要孩子的人\\n\ scanf(\ add(p,name); break; case 5: printf(\请输入要修该的人\\n\ scanf(\ gai(p,name); break; case 6: save(p,fp); getchar(); getchar(); break; case 7: printf(\感谢使用本系统\\n\ fclose(fp); fclose(fp); exit(0); //如果选择5,则退出循环终止程序
}
break; default : printf(\您选择有误\\n\ getchar(); }
}四、调试与分析
1、主菜单
家谱管理系统的主界面