栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言家谱管理系统(包含文件导入导出)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言家谱管理系统(包含文件导入导出)

这是该系统的组成模块:

void Menu()
{
	printf("ntt------------------家谱管理系统-----------------nn");  //说明该代码的实现功能
	printf("tt* * * * * * * * * * * * * * * * * * * * * * *n");
	printf("tt*                                           *n");
	printf("tt*         家谱信息管理菜单                  *n");
	printf("tt*                                           *n");
	printf("tt*          1:创建家谱(祖先)               *n");
	printf("tt*          2:添加新的家庭成员               *n");
	printf("tt*          3:修改某个人的信息               *n");
	printf("tt*          4:删除名为name的成员             *n");
	printf("tt*          5:输出整个家谱信息               *n");
	printf("tt*          6:查找某个人的信息               *n");
	printf("tt*          7:从文件中导入                   *n");
	printf("tt*          8:保存进文件                     *n");
	printf("tt*          9:统计家谱信息                   *n");
	printf("tt*          0:退出整个程序                   *n");
	printf("tt*                                           *n");
	printf("tt* * * * * * * * * * * * * * * * * * * * * * *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 filen");
		exit(0);
	}
	while (i < Maxx) {
		fscanf(fp, "%d%s%d%d%d%s%s%dn", &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 filen");
		return;
	}
	_output_file(Tree, fp);
	printf("保存成功!n");
	fflush(stdin);//清除键盘缓冲区 
	printf("ntt按任意键继续:");
	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("ntt请输入要查找人的姓名:");
	scanf("%s", Name);
	if (SearchPedTree(Tree, Name, &TempTree))
	{
		//PedTree TempParent = TempTree->parent;
		system("cls");
		printf("ntt----****---***---查找人的信息---***----****-----");
		printf("ntt查找人的姓名:%sntt", TempTree->data.name);
		printf("ntt查找人的性别:%dntt", TempTree->data.sex);
		printf("ntt查找人的出生日期:%dntt", TempTree->data.birthday);
		printf("ntt查找人的死亡日期:%dntt", TempTree->data.death_day);
		printf("ntt查找人的学历:%sntt", TempTree->data.education);
		printf("ntt查找人的工作:%sntt", TempTree->data.work);
		printf("ntt----****---***---信息展示完毕---***----****-----");
		fflush(stdin);//清除键盘缓冲区 
		printf("ntt按任意键继续:");
		getch();
	}
	else {
		printf("ntt找不到你要查找的人!n");
		fflush(stdin);//清除键盘缓冲区 
		printf("ntt按任意键继续:");
		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("ntt请输入要修改人的姓名:");
	scanf("%s", Name);
	if (SearchPedTree(Tree, Name, &TempTree))
	{
		PedTree TempParent = TempTree->parent;
		fflush(stdin);//清除键盘缓冲区 
		system("cls");
		printf("ntt请输入要修改人的姓名:(不需要修改输入0)ntt");
		scanf("%s", TempName);
		if (strcmp(TempName, "0") != 0)
			strcpy(TempTree->data.name, TempName);
		fflush(stdin);//清除键盘缓冲区
		printf("ntt请输入要修改人的性别:(1男,-1女)ntt");
		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("ntt请输入要修改人的出生日期:(不需要修改输入0)ntt");
		scanf("%d", &TempData1);
		if (TempData1 != 0)
			TempTree->data.birthday = TempData1;
		printf("ntt请输入要修改人的死亡日期:(不需要修改输入0)ntt");
		scanf("%d", &TempData2);
		if (TempData2 != 0)
			TempTree->data.death_day = TempData2;
		printf("ntt请输入要修改人的学历:(不需要修改输入0)ntt");
		scanf("%s", TempData3);
		if (strcmp(TempData3, "0") != 0)
			strcpy(TempTree->data.education, TempData3);
		fflush(stdin);//清除键盘缓冲区	
		printf("ntt请输入要修改人的工作:(不需要修改输入0)ntt");
		scanf("%s", TempData4);
		if (strcmp(TempData4, "0") != 0)
			strcpy(TempTree->data.work, TempData4);
		printf("ntt----****---***---信息修改成功---***----****-----");
		fflush(stdin);//清除键盘缓冲区 
		printf("ntt按任意键继续:");
		getch();
	}
	else
		printf("ntt找不到你要查找的人!n");
	fflush(stdin);//清除键盘缓冲区 
	printf("ntt按任意键继续:");
	getch();
}

修改信息
本来想做一下MFC项目的,可是没时间了,而且过了,也就没有做了。
这是我参考的博客,我在他的代码上进行了一些修改,加了几个功能,和修改了一些逻辑,满足我的作业需求。
这是本人写的代码,放github上了,进去可能有点慢,要是你有科学上网工具当我没说

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号