程序,往往会有一种成就感,这是一种动力,我相信我会越走越远?
5.结束语
这次实训让我学到了很多关于树和结构体、队列等的相关操作,使我对编程有了更大的信心,很感谢阳树洪老师对我的教导,不懂的地方也是能够耐心解释,虽然只是一个小程序,但我感到很自豪,因为它是我自己的成果。 附录:程序清单
//头文件 #include
#define len 20 #define MAX 100
////////////////////////////////////////////////
typedef struct Date { int year; //年 int month; //月
int day; //日}Date;
typedef struct ifo { char Name[len]; Date Birthday; char SW[len]; Date Dieday; char Kind[len]; char Marital[len]; char Brothadd[len]; char Address[len]; char Vocation[len];
char Degree[len]; //定义时间结构体 //成员信息结构体 //记录这个人的姓名 //记录这个人的出生日期 //记录这个人是否死亡 //记录这个人的死亡日期 //记录这个人的性别 //记录这个人婚否 //记录这个人的出生地址 //记录这个人的家庭住址 //记录这个人的职业 //记录这个人的简历
- - 21 - -
char Father[len]; //记录这个人的父亲姓名 int Degress; //记录这个人的辈分 int Height; //记录这个人身高 int Age; //记录这个人年龄
int Num; //记录这个人拥有几个儿女
}ifo;
typedef struct BinNode //定义树 {
ifo data; //成员信息
struct BinNode *child; //定义孩子指针 struct BinNode *brother; //定义兄弟指针 struct BinNode *parent; //定义父亲指针
}BinNode,*BinTree;
/////////////////////////////////////////////////////////////////////// typedef BinTree QElemType;
typedef struct QNode //队列 {
QElemType Data; struct QNode *next;
}QNode,*QueuePtr; typedef struct {
QueuePtr front,rear;
}LinkQueue;
///////////////////////////////////////////////////////////////////////
void MainMenue1(BinTree T); //子菜单选择 void MainMenue(BinTree T); //菜单选择
int Inspect1(Date B,Date D); //判断日期大小--B大于D int Inspect(Date D); //判断时间的正确性 BinTree Value(BinTree T,char Name[len]); //查找指定结点
void AddDegress(BinTree &T); //添加祖先时树的每个成员辈分加一
void Add(BinTree &T); //增加成员 void CreateTree(BinTree &T,BinTree F); //单个节点的录入 void BaoCun(BinTree T); //把家谱保存到文件中
- - 22 - -
void InPut(BinTree &B,FILE *fp); //从文件读取信息辅助函数 void ReadTree(BinTree &T); //从文件读取信息建立家谱树 void Put(BinTree T); //输出成员信息
void InquireName(BinTree T); //姓名查询家谱成员并显示该成员的各项信息
void DeleteTree(BinTree &T); //删除成员 void XiuGaiName(BinTree &T); //修改成员姓名 void ChangeBirthday(BinTree &T); void ChangeSW(BinTree &T); void ChangeBrothadd(BinTree &T); void ChangeAddress(BinTree &T); void ChangeVocation(BinTree &T); void ChangeDegree(BinTree &T); void OutPutFamily(BinTree T); int ValueBirthday(BinTree T,Date Birth); void InquireBirthday(BinTree T); int ValueDie(BinTree T,Date Die); int ValueSW(BinTree T); void InquireSW(BinTree T); 查找
int ValueBrothadd(BinTree T,char Birthadd[len]); void InquireBrothadd(BinTree T); int ValueBrothadd(BinTree T,char Address[len]); void InquireAddress(BinTree T); int ValueVocation(BinTree T,char Vocation[len]); void InquireVocation(BinTree T); int ValueFather(BinTree T,char Father[len]); void InquireFather(BinTree T); int ValueDegress(BinTree T,int Degress); void InquireDegress(BinTree T); int ValueHeight(BinTree T,int Height); void InquireHeight(BinTree T); int ValueAge(BinTree T,int Age); void InquireAge(BinTree T); void MainMenueTongji(BinTree T); - - 23 - -
//修改成员出生日期 //修改成员是否健在 //修改成员出生地址 //修改成员家庭住址 //修改成员职业 //修改成员简历 //按层次遍历输出家谱 //按出生日期查找辅助函数 //按出生日期查找 //按死亡日期查找辅助函数 //查找健在的人的辅助函数 //按成员是否健在及死亡日期 //按成员出生地址查找辅助函数 //按成员出生地址查找 //按成员家庭住址查找辅助函数 //按成员家庭住址查找 //按成员职业查找辅助函数 //按成员职业查找 //按父亲姓名查找辅助函数 //按父亲姓名查找 //按辈分查找辅助函数 //按辈分查找 //按身高查找辅助函数 //按身高查
//按年龄查找辅助函数 //按身高查找 //统计操作
void CengciPut(BinTree T); //层次遍历输出
int ValueZhixi(BinTree T,char Name[len]); //查询某一成员的所有直系亲属辅助函数
void InquireZhixi(BinTree T); //查询某一成员的所有直系亲属 void InquireRoot(BinTree T); //查询某一成员的所有嫡系祖先
void RelationShip(BinTree T); //查询两个人的关系 int Count_day(BinTree T); //生存天数计算 void Inquireday(BinTree T); //生存天数
#include
//typedef BinTree QElemType;
////////////////////////////////////////////////////////////////////////// void MainMenue1(BinTree T) {//菜单选择
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GR
int c; while(1) {
system(\好像是清屏幕 HANDLE consolehwnd;
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
EEN|FOREGROUND_RED); //设置文字颜色为黄色
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GR
printf(\
printf(\ ---*****---请选择你的操作---****---\
EEN|FOREGROUND_RED|FOREGROUND_BLUE);//设置文字颜色为白色
printf(\
- - 24 - -
SetConsoleTextAttribute(consolehwnd,FOREGROUND_GREEN|FOREGROUND_INTENS
ITY); //设置文字颜色为绿色
printf(\修改姓名------------------------------\printf(\修改出生日期--------------------------\
printf(\修改成员是否健在及死亡日期------------\printf(\修改出生地址--------------------------\printf(\修改家庭住址--------------------------\printf(\修改职业------------------------------\printf(\修改简历------------------------------\printf(\返回上一菜单--------------------------\
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GR
EEN|FOREGROUND_RED|FOREGROUND_BLUE); //设置文字颜色为白色
printf(\printf(\请输入你的选项:(0~5)\fflush(stdin); scanf(\switch(c) { case 1:
system(\清屏幕 if (T==NULL) { } else { }
printf(\请按Enter键继续操作--------------\fflush(stdin); getchar(); break;
XiuGaiName(T);
printf(\不存在家谱树!请返回重新选择\
case 2:
system(\清屏幕
- - 25 - -