c语言家谱管理系统(包含文件导入导出)-创新互联

这是该系统的组成模块:
整个模块的组成

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比广宗网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式广宗网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖广宗地区。费用合理售后完善,十载实体公司更值得信赖。
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