家谱管理系统Word格式.docx

上传人:b****5 文档编号:17275025 上传时间:2022-11-30 格式:DOCX 页数:28 大小:149.43KB
下载 相关 举报
家谱管理系统Word格式.docx_第1页
第1页 / 共28页
家谱管理系统Word格式.docx_第2页
第2页 / 共28页
家谱管理系统Word格式.docx_第3页
第3页 / 共28页
家谱管理系统Word格式.docx_第4页
第4页 / 共28页
家谱管理系统Word格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

家谱管理系统Word格式.docx

《家谱管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《家谱管理系统Word格式.docx(28页珍藏版)》请在冰豆网上搜索。

家谱管理系统Word格式.docx

定义结构体时给定指针数组的最大容量,来规定家谱中最多可以存多少人。

定义一个家族树的指针变量用来当每个子函数的参数,从而将其返回到主函数中。

以下时算法思想流程图:

、模块划分

1.intmain():

主函数

2.voidCreatTree(TreeNode*Tree)创建家族树

3.voidOutPutAII(TreeNode*Tree):

显示家谱

4.voidMenue(TreeNode*Tree):

主菜单

5.voidSubMenue1(TreeNode*Tree)副菜单(修改选项菜单)

6.voidChange(TreeNode*Tree)修改家谱

7.TreeNode*SearchTree(TreeNode*Tree,charname[],intlength)按照姓名查找家谱成员

8.TreeNode*SearchTree1(TreeNode*Tree,charbirth[],intlength:

)按照生日查找家谱成员

9.voidOutPutMessage(TreeNode*Tree,charname[],intlength)输出按姓名查找到的家谱成员

10.voidOutPutMessage1(TreeNode*Tree,charbirth[],intlength):

输出按生日查找到的家谱成员

11.voidSaveFamily(TreeNode*root):

保存家谱

12.voidReadFamily(TreeNode**root):

读取家谱

三、数据结构

typedefstructTreeNode

{

intChildNum;

//记录这个人拥有几个儿女

charName[20];

//记录这个人的姓名

charbirthday[20];

//生日

intmarriage;

//婚否(1表示结婚,0表示没结婚)

intdeath;

//生死(1表示活着,0表示过世)

charKind;

〃标示节点的种类有女G男B

charaddress[100];

〃住址

charlivemassage[50];

〃死亡日期(如果其已经死亡)structTreeNode*NextNode[20];

//记录这个人的儿女structTreeNode*Parent;

//记录这个节点的父节点

}TreeNode,*tree;

四、测试

第一组数据为:

爷爷,奶奶,爸爸,妈妈,我,二叔,二婶,姐姐,三叔,三婶,弟弟一共三代11个人。

其中爷爷是根节点,奶奶为爷爷的配偶,同时也是爷爷的第一个后继节点。

爸爸,二叔,三叔为爷爷的子女。

爸爸的配偶是妈妈,爸爸的子女是我。

二叔的配偶是二婶,子女是姐姐。

三叔的的配偶是三婶,三叔的的子女是弟弟。

进入程序之后,首先进行创建家谱,然后进行存盘,之后进行修改和查询等步骤。

退出程序在进入程序时,进行读盘。

之后在进行其他操作,程序完成之后退出即可。

 

图1家族树

第一组数据测试截图为:

trtt―x**4ct寓**«

*h*#ttsnt

姓容:

年普出圭H期:

1944.他.药家庭崔址t山东冑鹰沂市性剧:

B1I

妻子趣有;

拥奶母香量在门傩左・卜击此hD

和彳讦立旳姓旨爸爸出生日駅1.9陌03一06遽庭性扯山东肖临折市性瑕晒女的娃客:

二H出生白期!

19?

O.Q8.0iS康庭住址:

Ll_耒省吐沂巾fi&

JEM

B3牛于玄的逑备三权Lt±

1977(T14\0思圧臣址:

山东石话沂育隹刖已英

-—*■**——・・♦——**«

———■---*4■—•«

*—■

妊名:

二就31±

B^;

]ST0.08.05氟眶佚fch山專首t®

祈巾世刑:

E申

套子妊営:

二瞬在qw在.—去世)=L

竟1个手女的蛙各蛆粗由生Sfe:

lMl.ML14黑麗隹址土血条嘗薯诉市性]・c女

1**+事—■—SS*t————istt1———

旌名一姐粗岀iBfllilW1.02.14蠢庭生址t山未肯尙诉巾住狂:

Gt

車今逵雄配囲和子玄

图2显示家谱

■1C:

\Likteng-eke1—Q

**十*E■欢迎便用东廳营瑾蚕^C*T■**•<

***

A&

•、豪港它U建上忖

R怖呂乎孚屮

|?

岭朝去扛苹k

D:

擔堆名査找棠人匸魅汽昱-\r-s3.

F:

c:

^a

H-退吕豎'

•煜?

底听蓦找巧人己雄找麹博.鼠(0下昕示

壮名一等孕岀生m羁一_创丄一旧一亠豪哇生址I山未肯I乱rrrtf性制卫臭岂■連在「■羞芒,)-壬世”1

谨蜀社Z:

三怛

H亲曲呂;

三R

涓迫至令iEti青扌任w疔子

图3按照姓名查找家族成员

Ut乂Ulef丸>£

iHlitl\dkti^plke£

he%."

E=口

*片*=口廿軌迎怯用!

t族管理系统十*中***=

B:

五出%t■应诒怙u匚:

筈出主刁些会技-枣人D:

«

<

d.o査找冥.扎

卜人的信息

存盘

tas

H:

ifitE^f£

(T

*****保存家涪*****

AAX件容迪陳存(X豪(*E:

D:

\\«

XU»

Ltxt)ID:

\\JIAFV.t>

t新建丸件成功.文件世耳瓯怦为:

?

\JIAJV.tit

图4存盘

第二组数据为:

图4王家家族树

第二组数据测试截屏为:

■'

CALter&

\^drmn\pe-口fAkucJumgLEXL—□X

—•«

=**—-flJiiS恨的嫌ft…«

**—

”__*#fl.:

修说牛人的佶息*■*--****

…紀*L希—B:

修段父彎的■荷胃一•金「打••*口命

■■■拿—耳—C:

價i氐于女的fg息

stt~—*"

^0:

jfi岀*—*事-"

新一p*—*—

图5修改家族成员的信息

・'

C:

\Jtin'

J.ie-s.^iDp,<

e-:

he--'

C-.rjs

"

用一、忙汝=■:

七$」■■丐抵诈池和祀iV匕三芳三:

理卞冷王'

」■■二

曼召薑幣改岂耳•上毕筆逶丸糊.2:

匸詩芝密氏讥議汎P燃弓崔比“于貢遵束0

荷荷人修改的出生日糊;

帕果不需要核改就输人中‘幣石桂Enttr这进決0

淸达人悸戏为疣庭地址:

0卑乂需呈底戌戏输人-0-然台養E「-t£

r健进塗

■-L信息修改成功

谊按Ent刊-站年蒔於作1

图6修改某个人的具体信息

■1C;

'

Ll^^'

^diTwADe^tlop.<

.f<

ier*g.«

f

柑*・*"

*飞门悭用療族管邂帝^***-**-**'

任听要找的人己軽找捌悟总5P下听示:

柱合:

王4■二岀主白皑2O0S家咗住址:

缶匡性钊B境

■mr・|||^M■

锻政拥音笙

图7按照生日查找某人

L.」i11'

1-j-l!

t-in1:

u■:

c.-r-

a?

fii瓦港盲目逢亶nr

t祜卅峑牛落滑伍帛

c芒V三三卑耳述早\

加據硅茗占找其人

E條就笑牛人的■息

存我

G.isS

U咆出整不程字

读翳家请H4»

441

»

Ajt仲宕聂算踣栏*口便賦中flfflur晉.

亢杵宅艮耳珞律〈*E;

m^xaii^1<

.txt),E?

'

-JIA.txt

图8读盘

五、源程序

#include<

stdio.h>

stdlib.h>

#inelude<

string.h>

#ifdefWIN32

#defineCLEARsystem("

cls"

#defineTipForSaveFilePositionprintf("

\t\t输入文件名及保存位置(eg:

\W\example.txt):

#defineTipForReadFilePositionprintf("

\t\t文件名及其路径(eg:

#else

clear"

\t\t输入文件名及保存位置(eg:

/home/xiong/example.txt):

"

#endif

#definemaxFileNameLen50//保存的文件名的最大长度

intFLAG=0;

inta=1;

//记录这个人拥有几个儿女

〃记录这个人的姓名

〃生日

//婚否(1表示结婚,0表示没结婚)

//记录这个人的儿女

structTreeNode*Parent;

voidCreatTree(TreeNode*Tree);

voidOutPutAll(TreeNode*Tree);

voidMenue(TreeNode*Tree);

voidSubMenue1(TreeNode*Tree);

voidSubMenue2(TreeNode*Tree);

voidChange(TreeNode*Tree);

voidAddNew(TreeNode*Tree);

TreeNode*SearchTree(TreeNode*Tree,charname[],intlength);

TreeNode*SearchTree1(TreeNode*Tree,charbirth[],intlength);

voidOutPutMessage(TreeNode*Tree,charname[],intlength);

voidOutPutMessage1(TreeNode*Tree,charbirth[],intlength);

voidSaveFamily(TreeNode*root);

voidReadFamily(TreeNode**root);

intmain()//主函数

TreeNode*Tree;

//TreeNode**Tree1;

//Tree1=&

(*Tree);

Tree=(TreeNode*)malloc(sizeof(TreeNode));

Tree->

Parent=NULL;

strcpy(Tree->

Name,"

0"

);

Menue(Tree);

return0;

}

voidMenue(TreeNode*Tree)//输出主菜单

/*TreeNode**Tree1;

Tree1=&

Tree;

*/

charc;

charname[20];

charbirth[20];

while

(1)

system("

欢迎使用家族管理系统**********\n\n"

A:

输入家谱信息建立树"

printf("

\t"

\n\n\t\t**********

\n\t\t

输出整个家谱信息

);

C:

按出生日期查找某人

D:

按姓名查找某人

E:

修改某个人的信息

F:

存盘”);

G:

读盘"

\n\t\tc=getchar();

switch(c)

case'

A'

:

退出整个程序

\n\t"

TreeNode*NewNode;

NewNode=(TreeNode*)malloc(sizeof(TreeNode));

printf("

\n\t请输入姓名:

scanf("

%s"

Tree->

Name);

\n\t请输入性别女G男B:

getchar();

scanf("

%c"

&

(Tree->

Kind));

Tree->

Parent=NewNode;

Parent=NULL;

//CreatTree(Tree);

//

\n\t家谱图已经建立成功\n\n"

\n\n\t请按Enter键继续操作"

break;

B'

if(strcmp(Tree->

)==0){

\n\t家谱图的多叉树尚未建立请先建立树\n"

getchar();

\n\n\t整个家谱的主要信息如下:

OutPutAll(Tree);

C'

if(strcmp(Tree->

birthday,"

)==0)

\n\t请输入你要查找的出生日期:

birth);

OutPutMessage1(SearchTree1(Tree,birth,20),birth,20);

\n\n\t**********\n\t"

D'

\n\t请输入你要查找的人的姓名:

name);

OutPutMessage(SearchTree(Tree,name,20),name,20);

E'

Change(Tree);

F'

SaveFamily(Tree);

G'

/*if(strcmp(Tree->

}*/

ReadFamily(&

Tree);

H'

\n\n\t

本次服务到此结束--

\n\t

欢迎下次使用

谢谢

\n\n"

\n'

default:

---对不起!

你的选择不在服务范围之内

---请您再次选择所需的服务项!

谢谢\n\t"

if(c=='

||c=='

f'

)break;

voidCreatTree(TreeNode*Node)//创建树

inti;

TreeNode*NewNode;

Node->

NextNode[0]=NewNode;

NextNode[0]=NULL;

\n\t请输入出生日期:

Node->

birthday);

\n\t请输入家庭住址:

address);

\n\t请输入是否建在(1-是或0-否):

%d"

(Node->

death));

if(Node->

death==0)

\n\t请输入去世日期:

livemassage);

elseif(Node->

death=='

1'

)printf("

\n\t仍然建在"

\n\t请输入%s的配偶的姓名(输入0代表没结婚):

NewNode->

if(strcmp(NewNode->

)!

=0){printf("

\t请输入配偶的出生日期:

\n\t请输入是否建在(1-是或0-否):

(NewNode->

if(NewNode->

{printf("

elseif(NewNode->

}printf("

\n\t请输入%s的子女的数目(当子女输入0时便停止输入该成员有关信息):

ChildNum));

if((Node->

ChildNum)==0&

&

strcmp(NewNode->

)==0)return;

Kind=='

||Node->

g'

NewNode->

Kind='

;

else

ChildNum=0;

NextNode[0]->

Parent=Node;

//孩子的父母for(i=1;

i<

=Node->

ChildNum;

i++)

a++;

\n\t请输入%s的第%d子女的名字:

Name,i);

\n\t请输入%s的第%d子女的性别女G男B:

Kind);

NewNode->

ChildNum=-1;

Node->

NextNode[i]=NewNode;

CreatTree(Node->

NextNode[i]);

//从子女的数目开始

voidOutPutAll(TreeNode*Tree)

inti,flag=0;

\n\t---****---***---***---***---***---***---***---***---***---"

\n\t姓名:

%s出生日期:

%s家庭住址:

%s性别:

%c"

Name,Tree->

birthday,Tree->

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1