家谱管理系统-数据结构大作业

2020-03-27 02:31

/* 家谱管理系统

任务:实现具有下列功能的家谱管理系统 功能要求:

1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容: 姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。

2). 实现数据的存盘和读盘。 3). 以图形方式显示家谱。

4). 显示第n 代所有人的信息。

5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 按照出生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。

9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。

11).按出生日期对家谱中所有人排序。

12).打开一家谱时,提示当天生日的健在成员。

要求:建立至少30个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。 测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明; */

#include #include #include #include #include\

#define MAXN 100 #define MAXMEM 100 #define Elemtype char

============================== //树

typedef struct BiTNode { int mark;//标记 int level;

char name[50];//姓名 char birthday[50];//生日 char address[MAXN];//住址

bool marriage;//婚否(true表示结婚,false表示没结婚) bool live;//建在(true表示活着,false表示过世) bool sex;//性别(true表示男,false表示女)

char livemassage[50];//死亡日期(如果其已经死亡) Elemtype data;//

struct BiTNode *lc,*rc; }BiTNode,*BiTree;

//树的相关操作

char nametemp[50];//姓名 char birthdaytemp[50];//生日 char addresstemp[MAXN];//住址

bool marriagetemp;//婚否(true表示结婚,false表示没结婚) bool livetemp;//建在(true表示或者,false表示过世) bool sextemp;

char livemassagetemp[MAXN];//死亡日期(如果其已经死亡) char ch;//额外使用

int leveltemp;//人的代数

int Nth;//显示第n代人时要用 char searchdata[50]; char searchname[50]; int count;//计数

int choice;//各种选择 int use;

BiTree temp;

struct BiTNodeList {

BiTree data;

BiTNodeList *next; };

BiTNodeList *List;

//-----------

void CreatBiTree(BiTree &T,FILE *in)//建立双链二叉树 {

fscanf(in,\ //printf(\ if(ch == '@') {

T = NULL;

fscanf(in,\ } else {

T = (BiTree)malloc(sizeof(BiTNode));

//fscanf(in,\ fscanf(in,\ strcpy(T->name,nametemp); fscanf(in,\ strcpy(T->birthday,birthdaytemp); fscanf(in,\ strcpy(T->address,addresstemp);

fscanf(in,\ T->marriage = marriagetemp; T->live = livetemp; T->level = leveltemp; T->sex = sextemp;

//printf(\ %s %s %d %d\\n\mp);

if(!livetemp) {

fscanf(in,\

//printf(\ }

if(!T->live)

strcpy(T->livemassage,livemassagetemp); fscanf(in,\ CreatBiTree(T->lc,in); CreatBiTree(T->rc,in); } }

void PrintInfo(BiTree T) {

printf(\出生于:%-10s%-10s\ if(T->marriage)

printf(\已婚\ if(!T->marriage)

printf(\未婚\ if(T->sex)

printf(\男\ if(!T->sex)

printf(\女\ if(T->live)

printf(\健在\\n\ if(!T->live)

printf(\去世于:%s\\n\}

void PreOrderTraverse_recursion(BiTree T)//递归 先序遍历(检查建树是否正确) { //printf(\ if(T) { /*printf(\出生于:%-10s%-10s\ if(T->marriage) printf(\已婚\ if(!T->marriage)

printf(\未婚\ if(T->sex)

printf(\男\ if(!T->sex) printf(\女\ if(T->live)

printf(\健在\\n\ if(!T->live)

printf(\去世于:%s\\n\ PrintInfo(T); PreOrderTraverse_recursion(T->lc); PreOrderTraverse_recursion(T->rc); } }

void ShowFamilyTree(BiTree T)//以图形的方式显示家谱 {

int i,lev; BiTree p; p = T; if(T) {

lev = T->level; for(i=0; i

printf(\ if(p->lc) {

p = T->lc;

printf(\★*★ %5s%\\n\ if(p->rc) {

p = p->rc;

ShowFamilyTree(p); } } else

printf(\ (未婚)\\n\ }

if(T->rc) {

p = T->rc;

ShowFamilyTree(p); } }

void ShowNth(BiTree T)//显示第n代所有人的信息 {

if(T) {

if(T->level == Nth) {

PrintInfo(T);

//printf(\>sex);

count++; } ShowNth(T->lc); ShowNth(T->rc); } }

void SearchByName(BiTree T)//按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。不能查询祖先信息 {

if(T)


家谱管理系统-数据结构大作业.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:黑龙江各市县土壤类型介绍

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: