c语言家谱管理系统(包含文件导入导出)-创新互联
这是该系统的组成模块:
void Menu()
{printf("\n\t\t------------------家谱管理系统-----------------\n\n"); //说明该代码的实现功能
printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t* *\n");
printf("\t\t* 家谱信息管理菜单 *\n");
printf("\t\t* *\n");
printf("\t\t* 1:创建家谱(祖先) *\n");
printf("\t\t* 2:添加新的家庭成员 *\n");
printf("\t\t* 3:修改某个人的信息 *\n");
printf("\t\t* 4:删除名为name的成员 *\n");
printf("\t\t* 5:输出整个家谱信息 *\n");
printf("\t\t* 6:查找某个人的信息 *\n");
printf("\t\t* 7:从文件中导入 *\n");
printf("\t\t* 8:保存进文件 *\n");
printf("\t\t* 9:统计家谱信息 *\n");
printf("\t\t* 0:退出整个程序 *\n");
printf("\t\t* *\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");
}
这是该系统的界面:
void input_file(PedTree Tree) {//导入文件
FILE* fp;
int i = 0;
fp = fopen("C:/Users/jkl13/Desktop/家谱1.txt", "r");
if (fp == NULL)
{printf("can not open file\n");
exit(0);
}
while (i< Maxx) {fscanf(fp, "%d%s%d%d%d%s%s%d\n", &node[i].num, &node[i].name, &node[i].sex, &node[i].birthday,
&node[i].death_day, &node[i].education, &node[i].work, &node[i].dai);
if (node[i].death_day != 0) { all_life_expe += int((node[i].death_day - node[i].birthday) / 10000);
com_peo++;
} //死亡日期减出生日期/10000得到寿命长度
if (node[i].sex == 1) { man++;
}
else if (node[i].sex == -1)
{ woman++;
}
i++;
}
fclose(fp);
CreatePedTree(Tree, 0);
}
这是他的读取和显示,这里是通过孩子数量(第一个)和排列顺序读取的,后面的代数没什么用,不过也不能去掉,可以自己照着改一下就行,建议改成以父母名字为寻找方向去读取,不过因为我比较忙,而且作业也过了,所以就没有继续优化了
void output_file(PedTree Tree) {//导入文件
FILE* fp;
if ((fp = fopen("C:/Users/jkl13/Desktop/家谱.txt", "a")) == NULL) {printf("cannot open file\n");
return;
}
_output_file(Tree, fp);
printf("保存成功!\n");
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t按任意键继续:");
getch();
fclose(fp);
fp = NULL;
free(fp);
}
这是删除和保存
void FindInfor(PedTree Tree)//查找名字为name的成员
{fflush(stdin);//清除键盘缓冲区
system("cls");
char Name[20];
char choice;//
int tempch;
char TempName[20];
char TempData[20];
int n;
PedTree TempTree;
printf("\n\t\t请输入要查找人的姓名:");
scanf("%s", Name);
if (SearchPedTree(Tree, Name, &TempTree))
{//PedTree TempParent = TempTree->parent;
system("cls");
printf("\n\t\t----****---***---查找人的信息---***----****-----");
printf("\n\t\t查找人的姓名:%s\n\t\t", TempTree->data.name);
printf("\n\t\t查找人的性别:%d\n\t\t", TempTree->data.sex);
printf("\n\t\t查找人的出生日期:%d\n\t\t", TempTree->data.birthday);
printf("\n\t\t查找人的死亡日期:%d\n\t\t", TempTree->data.death_day);
printf("\n\t\t查找人的学历:%s\n\t\t", TempTree->data.education);
printf("\n\t\t查找人的工作:%s\n\t\t", TempTree->data.work);
printf("\n\t\t----****---***---信息展示完毕---***----****-----");
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t按任意键继续:");
getch();
}
else {printf("\n\t\t找不到你要查找的人!\n");
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t按任意键继续:");
getch();
}
}
这是查找和显示
void ChangeInfor(PedTree Tree)//修改家谱信息
{fflush(stdin);//清除键盘缓冲区
system("cls");
char Name[20];
char choice;//
int tempch;
char TempName[20];
int TempData1;
int TempData2;
char TempData3[20];
char TempData4[20];
PedTree TempTree;
printf("\n\t\t请输入要修改人的姓名:");
scanf("%s", Name);
if (SearchPedTree(Tree, Name, &TempTree))
{PedTree TempParent = TempTree->parent;
fflush(stdin);//清除键盘缓冲区
system("cls");
printf("\n\t\t请输入要修改人的姓名:(不需要修改输入0)\n\t\t");
scanf("%s", TempName);
if (strcmp(TempName, "0") != 0)
strcpy(TempTree->data.name, TempName);
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t请输入要修改人的性别:(1男,-1女)\n\t\t");
scanf("%d", &tempch);
if (tempch != '0')
TempTree->data.sex = tempch;
if (Tree->data.sex == 1) { man++;
woman--;
}
else if (Tree->data.sex == -1)
{ woman++;
man--;
}
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t请输入要修改人的出生日期:(不需要修改输入0)\n\t\t");
scanf("%d", &TempData1);
if (TempData1 != 0)
TempTree->data.birthday = TempData1;
printf("\n\t\t请输入要修改人的死亡日期:(不需要修改输入0)\n\t\t");
scanf("%d", &TempData2);
if (TempData2 != 0)
TempTree->data.death_day = TempData2;
printf("\n\t\t请输入要修改人的学历:(不需要修改输入0)\n\t\t");
scanf("%s", TempData3);
if (strcmp(TempData3, "0") != 0)
strcpy(TempTree->data.education, TempData3);
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t请输入要修改人的工作:(不需要修改输入0)\n\t\t");
scanf("%s", TempData4);
if (strcmp(TempData4, "0") != 0)
strcpy(TempTree->data.work, TempData4);
printf("\n\t\t----****---***---信息修改成功---***----****-----");
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t按任意键继续:");
getch();
}
else
printf("\n\t\t找不到你要查找的人!\n");
fflush(stdin);//清除键盘缓冲区
printf("\n\t\t按任意键继续:");
getch();
}
修改信息
本来想做一下MFC项目的,可是没时间了,而且过了,也就没有做了。
这是我参考的博客,我在他的代码上进行了一些修改,加了几个功能,和修改了一些逻辑,满足我的作业需求。
这是本人写的代码,放github上了,进去可能有点慢,要是你有科学上网工具当我没说
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章标题:c语言家谱管理系统(包含文件导入导出)-创新互联
文章出自:http://scyanting.com/article/coepjo.html