家谱管理系统.doc
《家谱管理系统.doc》由会员分享,可在线阅读,更多相关《家谱管理系统.doc(23页珍藏版)》请在咨信网上搜索。
1、洛阳理工学院课程设计报 告数据结构课程设计课程名称 _家谱管理系统设计题目 _计算机科学与技术专 业 _B150405班 级 _B15080822学 号 _宋士龙姓 名 _2016年12月30日完成日期 _课 程 设 计 任 务 书设计题目:家谱管理系统设计内容与要求:【问题描述】:实现具有下列功能的家谱管理系统1)。 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。2). 实现数据的存盘和读盘。3)。 显示家谱。4)。 按照出生日期查询成员名单。5)。 按照姓名查询,输出成员信息(
2、包括其本人、父亲、孩子的信息)。6). 修改某成员信息。【基本要求】:界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中.测试数据:要求使用1、全部合法数据;2、局部非法数据.进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。 指导教师:_年 月 日课 程 设 计 评 语 成绩:指导教师:_年 月 日洛 阳 理 工 学 院 课 程 设 计 报 告一、 算法思想本程序是一个管理家谱的系统,通过这个系统可以对家族成员进行创建、显示、查找、修改、以及保存家谱和读取家谱功能
3、.该系统分为以下几个模块,分别是:创建家谱,显示家谱、按姓名和生日查找家庭成员、修改家谱、存盘、读盘以及退出系统。本程序用到的存储形式为多叉树,因为家谱中每个人既有父母又有孩子,而且孩子的个数并不确定,所以用多叉树来存储最为合适.用多叉树来存储,就用用到多叉树的递归创建及递归遍历.因为是多叉树,所以遍历时用广度优先搜索合适。本函数最主要的思想就是递归调用,每个子函数中都会用到递归。定义结构体时给定指针数组的最大容量,来规定家谱中最多可以存多少人。定义一个家族树的指针变量用来当每个子函数的参数,从而将其返回到主函数中。以下时算法思想流程图:家谱管理系统创建家谱显示家谱修改家谱查找成员读写家谱按照
4、姓名按照生日修改本人修改父母修改孩子存盘读盘退出系统二、 模块划分1. int main():主函数2. void CreatTree(TreeNode Tree):创建家族树3. void OutPutAll(TreeNode *Tree):显示家谱4. void Menue(TreeNode Tree):主菜单5. void SubMenue1(TreeNode Tree):副菜单(修改选项菜单)6. void Change(TreeNode Tree):修改家谱7. TreeNode * SearchTree(TreeNode Tree,char name,int length):按照姓
5、名查找家谱成员8. TreeNode SearchTree1(TreeNode Tree,char birth,int length):按照生日查找家谱成员9. void OutPutMessage(TreeNode Tree,char name,int length):输出按姓名查找到的家谱成员10. void OutPutMessage1(TreeNode Tree,char birth,int length):输出按生日查找到的家谱成员11. void SaveFamily(TreeNode root):保存家谱12. void ReadFamily(TreeNode *root):读取
6、家谱三、 数据结构typedef struct TreeNode int ChildNum; /记录这个人拥有几个儿女 char Name20;/记录这个人的姓名 char birthday20;/生日int marriage;/婚否(1表示结婚,0表示没结婚)int death;/生死(1表示活着,0表示过世) char Kind;/标示节点的种类有女G男B char address100;/住址 char livemassage50;/死亡日期(如果其已经死亡) struct TreeNode *NextNode20; /记录这个人的儿女 struct TreeNode Parent; /
7、记录这个节点的父节点 TreeNode,*tree;四、 测试第一组数据为:爷爷,奶奶,爸爸,妈妈,我,二叔,二婶,姐姐,三叔,三婶,弟弟一共三代11个人。其中爷爷是根节点,奶奶为爷爷的配偶,同时也是爷爷的第一个后继节点.爸爸,二叔,三叔为爷爷的子女。爸爸的配偶是妈妈,爸爸的子女是我.二叔的配偶是二婶,子女是姐姐。三叔的的配偶是三婶,三叔的的子女是弟弟.进入程序之后,首先进行创建家谱,然后进行存盘,之后进行修改和查询等步骤.退出程序在进入程序时,进行读盘。之后在进行其他操作,程序完成之后退出即可.爷爷爸爸二叔奶奶三叔妈妈二婶三婶我姐姐弟弟图1 家族树第一组数据测试截图为:图2 显示家谱图3 按
8、照姓名查找家族成员图4 存盘第二组数据为:王老王大刘老王二李大张二王小一王小二图4 王家家族树第二组数据测试截屏为:图5 修改家族成员的信息图6 修改某个人的具体信息图7 按照生日查找某人图8 读盘五、 源程序include stdio。h #include stdlib。h #include string.h ifdef WIN32define CLEAR system(cls)#define TipForSaveFilePosition printf(”tt输入文件名及保存位置(eg: D:example.txt): ”)define TipForReadFilePosition prin
9、tf(”tt文件名及其路径(eg: D:example.txt): ”)#else#define CLEAR system(”clear)#define TipForSaveFilePosition printf(”tt输入文件名及保存位置(eg: /home/xiong/example。txt): )define TipForReadFilePosition printf(”tt文件名及其路径(eg: /home/xiong/example。txt): ”)endif#define maxFileNameLen 50 /保存的文件名的最大长度int FLAG=0;int a=1; typed
10、ef struct TreeNode int ChildNum; /记录这个人拥有几个儿女 char Name20;/记录这个人的姓名 char birthday20;/生日int marriage;/婚否(1表示结婚,0表示没结婚)int death;/生死(1表示活着,0表示过世) char Kind;/标示节点的种类有女G男B char address100;/住址 char livemassage50;/死亡日期(如果其已经死亡) struct TreeNode NextNode20; /记录这个人的儿女 struct TreeNode *Parent; /记录这个节点的父节点 Tre
11、eNode,tree; void CreatTree(TreeNode *Tree); void OutPutAll(TreeNode *Tree); void Menue(TreeNode *Tree); void SubMenue1(TreeNode * Tree); void SubMenue2(TreeNode Tree); void Change(TreeNode * Tree); void AddNew(TreeNode Tree); TreeNode SearchTree(TreeNode Tree,char name,int length); TreeNode * Search
12、Tree1(TreeNode Tree,char birth,int length) ; void OutPutMessage(TreeNode Tree,char name,int length); void OutPutMessage1(TreeNode Tree,char birth,int length); void SaveFamily(TreeNode *root); void ReadFamily(TreeNode root); int main()/主函数 TreeNode Tree;/TreeNode Tree1; /Tree1=(*Tree); Tree=(TreeNode
13、 )malloc(sizeof(TreeNode); Tree-Parent =NULL; strcpy(Tree-Name,0”); Menue(Tree); return 0; void Menue(TreeNode Tree)/输出主菜单 /TreeNode *Tree1; Tree1=&Tree;/ char c; char name20;char birth20;while(1) system(”cls”); printf(”t”); printf(”nntt*欢 迎 使 用 家 族 管 理 系 统*nn”);printf(ntt A:输入家谱信息建立树 ”); printf(ntt
14、 B:输出整个家谱信息 ”); printf(”ntt C:按出生日期查找某人 ”); printf(ntt D:按姓名查找某人 ); printf(ntt E:修改某个人的信息 );printf(ntt F:存盘 ”);printf(”ntt G:读盘 ”); printf(”ntt H:退出整个程序 nt); c=getchar();switch(c) case A: TreeNode NewNode; NewNode=(TreeNode )malloc(sizeof(TreeNode);printf(nt请输入姓名:); scanf(”s,Tree-Name); printf(nt请输入
15、性别女G男B:”); getchar(); scanf(c,(Tree-Kind);TreeParent=NewNode; TreeParent=NULL;/ CreatTree(Tree); / printf(”nt-家谱图已经建立成功-nn”); printf(”nnt-请按Enter键继续操作-”); getchar(); break; case B: if(strcmp(TreeName,”0)=0) printf(nt家谱图的多叉树尚未建立请先建立树n); getchar(); break; printf(nnt整个家谱的主要信息如下:); OutPutAll(Tree); getc
16、har(); break; case C: if(strcmp(Treebirthday,0”)=0) printf(”nt家谱图的多叉树尚未建立请先建立树n”); getchar(); break; printf(”nt请输入你要查找的出生日期:”); scanf(%s”,birth); OutPutMessage1(SearchTree1(Tree,birth,20),birth,20); printf(”nnt-*-nt); getchar(); break; case D: if(strcmp(Tree-Name,”0)=0) printf(nt家谱图的多叉树尚未建立请先建立树n”);
17、 getchar(); break; printf(”nt请输入你要查找的人的姓名:nt”); scanf(”%s”,name); OutPutMessage(SearchTree(Tree,name,20),name,20); printf(”nnt-*-*-*-nt); getchar(); break; case E:if(strcmp(TreeName,0)=0) printf(”nt家谱图的多叉树尚未建立请先建立树n”); getchar(); break; Change(Tree); getchar(); break;case F:if(strcmp(Tree-Name,”0)=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家谱 管理 系统
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。