c语⾔课程设计家谱管理系统,数据结构-家谱管理系统
《数据结构-家谱管理系统》由会员分享,可在线阅读,更多相关《数据结构-家谱管理系统(15页珍藏版)》请在⼈⼈⽂库⽹上搜索。
1、宁波⼤红鹰学院信息⼯程学院课程设计报告项⽬名称:家谱查询系统项⽬组长:⽩钰琦项⽬成员:徐程凯、徐海域、项鸿伟班级名称:10计科1班专业名称:计算机科学与技术完成时间:2012年12⽉1⽇信息⼯程学院制⽬ 录⼀、案例描述- 3 -1、总体描述- 3 -
2、模块描
述- 3 -⼆、设计思路- 3 -三、程序设计- 4 -1、数据结构描述- 4 -2、主函数及其流程图- 4 -3、源程序- 5 -四、调试与分析- 14 -1、主菜单- 14 -2、显⽰家谱信息- 15 -3、显⽰家谱中第n代⼈所有信息- 16 -4、按姓名查某⼈并相应输出- 16 -5、按出⽣⽇期查家谱成员信息- 16 -6、为家。
2、谱中成员添加孩⼦信息- 17 -7、为家谱中成员添加妻⼦信息- 17 -8、删除家谱中成员及其后代信息- 18 -9、修改家谱中成员信息- 18 -10、确定家谱中两个成员关系- 19 -11、按出⽣年⽉排序家谱- 19 -五、设计总结- 20 -1、完成情况- 20 -2、⼼得体会- 20 -⼀、案例描述1、总体描述家谱管理系统是查询家谱信息必不可少的⼀部分,利⽤家谱管理系统可以清楚的查询到家族成员的详细信息。该家谱管理系统是
通过树来实现的。本程序具有插⼊、查等功能,可以实现存放家谱中各成员的信息。程序的操作界⾯简洁美观,易于操作。本程序运⽤了函数、循环、树等知识来进⾏设计,实现系统和数据。
3、结构设计。2、模块描述1). 输⼊⽂件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出⽣⽇期、婚否、地址、健在否、死亡⽇期(若其已死亡),也可附加其它信息、但不是必需的。2). 实现数据的存盘和读盘。3). 以图形⽅式显⽰家谱。4). 显⽰第n 代所有⼈的信息。5). 按照姓名查询,输出成员信息(包括其本⼈、⽗亲、孩⼦的信息)。6). 按照出⽣⽇期查询成员名单。7). 输⼊两⼈姓名,确定其关系。8). 某成员添加孩⼦。9). 删除某成员(若其还有后代,则⼀并删除)。10).修改某成员信息。11).按出⽣⽇期对家谱中所有⼈排序。12).打开⼀家谱时,提⽰当天⽣⽇的健在成员。树。
4、操作模块主程序模块菜单选择模块图1 模块调⽤⽰意图⼆、设计思路本程序要求模块化管理,分成菜单函数、创建函数、添加函数、查函数、控制各个部分从⽽将程序简单化出来分析。本程序的主要功能是:创建数据:创建各相关数据,例如创建家谱信息。添加数据:增加家谱成员孩⼦信息。查询信息:按照姓名来查询成员信息,还可以通过输⼊出⽣⽇期来查询该家谱信息。退出系统:程序编译结束后退出系统。三、程序设计1、数据结构描述本程序⾸先定义了结构体,定义了lc,rc两个指针域; 定义如下:typedef struct BiTNodeint mark;/标记int level;char name50;/姓名char birth。
5、day50;/⽣⽇char addressMAXN;/住址int marriage;/婚否(true表⽰结婚,false表⽰没结婚)int live;/
建在(true表⽰活着,false表⽰过世)int sex;/性别(true表⽰男,false表⽰⼥)char livemassage50;/死亡⽇期(如果其已经死亡)Elemtype data;/struct BiTNode
*lc,*rc; BiTNode,*BiTree;2、主函数及其流程图LocateTime();ShowFamilyTree(T);ShowNth(T);SearchByName(T);退出SearchByBirthda。
6、y(T);MainAddChild(T);AddWife(T);DeleteByName(T);图3 家谱管理流程图申请节点,int i=1分配节点输⼊成员名Tree-Name,给定Node-Num输⼊成员名Tree-NameCreatTree(Node-NextNodei);inumYN结束CreateeTree()()图4 创建家谱流程图3、源程序
c++课程设计报告
#include #include#include#includetypedef struct pnodechar male10;char female10;int n;struct pnode
*fchild,*brother;pnode,*p。
7、tree;void creatfamily(ptree ,FILE );void preorder(ptree p);void show(ptree p);int Menu()system(color 1f);system(mode con:cols=76 lines=35);int i;printf(* 欢迎使⽤爱新觉罗家族管理系统*nn);printf(请选择:n);printf( n);printf( 1.读取⼀个家庭关系n);printf( n);printf( 2.显⽰⼀个家庭关系n);printf( n);printf( 3.查成员n);printf( n);printf( 4.。
8、添加新成员n);printf( n);printf( 5.修改成员n);printf( n);printf( 6.保存n);printf( n);printf( 7.退出系统nn
n);printf(
n);printf(*nn);printf(输⼊16之间的数字选择相应功能:);scanf(%d,&i);return i;ptree creatfamily(FILE *fp) if(!feof(fp)ptree p;p= (ptree)malloc(sizeof(pnode);char fname10,mname10;int i; fscanf(fp,%s %s %dn, fname,mname。
9、,&i);if(strcmp(fname,n)=0) & (strcmp(mname,n)=0) & (i=0)p=NULL;return p;elsestrcpy(p-male,fname);strcpy(p-
female,mname);p-n=i;printf(读取成功n);p-fchild=creatfamily(fp);p-brother=creatfamily(fp);return p;void PreOrder(ptree
p)if(p) show(p);PreOrder(p-fchild);PreOrder(p-brother); void show(ptree p) print。
10、f(名字 配偶 第⼏代n);printf(%2s %6s %dn,p-male,p-female,p-n);void search(ptree p,char name)if(p)if(strcmp(p-
male,name)=0)show(p);getchar();getchar();search(p-fchild,name);search(p-brother,name);void add(ptree p,char name) char fname10,mname10;int i;if(p)if(strcmp(p-male,name)=0)printf(名字 配偶 第⼏代n);scanf(%s 。
11、%s %d,fname,mname,&i);p-fchild=(ptree)malloc(sizeof(pnode); strcpy(p-fchild-male,fname);strcpy(p-fchild-
female,mname);p-fchild-n=i;p-fchild-fchild=NULL;p-fchild-brother=NULL; add(p-fchild,name);add(p-brother,name);void
gai(ptree p,char name)char fname10,mname10;int i;if(p)if(strcmp(p-male,name)=0)pr。
12、intf(名字 配偶 第⼏代n);scanf(%s %s %d,fname,mname,&i);strcpy(p-male,fname);strcpy(p-female,mname);p-n=i; gai(p-fchild,name);gai(p-brother,name); void save(ptree p,FILE *stream)if(p)fprintf(stream,%s %s %d,p-male,p-female,p-n);save(p-fchild,stream);save(p-brother,stream);elsechar out20 = n n 0;fprintf(stre。
13、am,%sn,out);int main() int status;char name10;ptree p;FILE *fp=
,r+);while(1)status=Menu();switch(status)case 1:p=creatfamily(fp);getchar();getchar();break;case
2:PreOrder(p);getchar();getchar();break;case 3:printf(请输⼊搜索的名字n);scanf(%s,name);search(p,name);break;case
4:printf(请输⼊要孩⼦的⼈n);。
14、scanf(%s,name);add(p,name);break;case 5:printf(请输⼊要修该的⼈n);scanf(%s,name);gai(p,name);break;case
6:save(p,fp);getchar();getchar();break;case 7:printf(n感谢使⽤本系统n);fclose(fp);fclose(fp);exit(0); /如果选择5,则退出循环终⽌程序break; default :printf(n您选择有误n);getchar(); 四、调试与分析1、主菜单家谱管理系统的主界⾯2、显⽰家谱信息读取家谱信息3、显⽰家谱中第n代⼈所有信。
15、息显⽰家谱中第n代⼈所有信息4、按姓名查某⼈并相应输出查询家谱成员信息的界⾯5、为家谱中成员添加孩⼦信息为家谱中成员添加孩⼦信息6、修改家谱中成员信息修改家谱中成员信息五、设计总结1、完成情况进程第1次课第2次课第3次课第4次课负责⼈项⽬计划全体成员总体⽅案全体成员编写代码徐程凯实验报告徐海域视频制作⽩钰琦整体完善全体成员答辩全体成员2、⼼得体会⽩钰琦:从这个项⽬中,我懂得了代码编写能⼒的提⾼不是⼀天两天的事,⽽是⼀个⽇积⽉累的过程。在不断地编写调试,是在提出问题解决问题的过程中慢慢提升起来的。所以,⾃⼰决定向编程⾼⼿看齐,多编程多提问多思考。在今后的时间⾥更加努⼒地学习。徐程凯:在这个项⽬。
16、⾥我做了对家谱管理的系统分析。刚开始我们从⽹上下载好了我们需要的资料,通过取其精华去其糟粕,本来是想把系统整合的很完美,可是由于我c语⾔基础不太扎实,未能完成。也向同学请教,
只能做到现在这个地步。通过这次课程设计,我对这个树的操作有了深刻的了解,对C语⾔也有了更深刻的了解。但我们需要更深刻地思考其实质是什么。了解实验所需的基本程序,并⽤所学知识实现它。徐海域:这次的项⽬我的主要任务是撰写实验报告,刚开始的⼏天我开始写项⽬描述,接着我也卡了下代码,关于树我懂的不多,看了以前的书,也是浑浑噩噩的。通过之前下载好的资料,我也试着去整合⼀些好的地⽅,不过未能完成。通过本次的项⽬我意识到⾃⼰知识的匮乏。在之后的⽇⼦⾥我会好好的补习知识。希望在下次的项⽬中可以完成的好点。项鸿伟:这次课程设计着实让⼈头疼,我们多次运⾏了程序,很可惜许多功能⽆法实现,这使我们⾮常的头疼,但是在百度强⼤的搜索下,我们到了模版,经过了艰难的研究,我们终于完善了这个程序。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。