资源描述:
《数据结构课程设计--家谱管理系统设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数据结构课程设计题目:家谱管理系统设计与实现姓名:何健良学号:200814602013006一.需求分析1.记录某家族历代的家族成员情况及关系,对家谱的存储、更新、查询、统计等的操作。2.存放记录家谱以后缀名为txt的文件形式记录家谱中各成员的信息。3.家族成员信息中均包含以下内容:如姓名、出生地、出生日期、死亡日期、性别、身高、学历、职业、职称。4.能对修改后存盘的家谱文件进行随时的修改及更新,方便操作。5.文件中打印的家谱及读出的家谱,应该形成树状的关系。6.家谱建立好后,以Dos(或windows下的命
2、令行模式)字符方式下运行。7.显示第n代人的所有信息(即家谱所有人的信息),并查询家谱中已有姓名的信息。8.按亲属关系的方式进行查询,输出上下亲属关系的姓名。9.随意出进添加某人的孩子,及删除某人(若其存在后代,则一并删除)。10.修改某人的信息。11.统计家族中的相关信息(如:平均寿命、平均身高、男女比例、家庭平均人口、平无(最高/低)学历等…..)二.概要设计采用二叉树进行家谱的管理,并以友好的输出形式展示,具有支持鼠标、全屏的可视化操作、树形显示家族,现程序涉及围绕家谱管理软件的类型,但基本操作者在”家
3、谱”类型中。1.定义”个人的信息”类型:ADTPerson{数据对象:D={Pj
4、Pj={姓名、出生日期、性别、出生地、出生日期、死亡日期、学历、身高、职业、职称},j=0,1,2,3……n,其中n>=0}数据关系:R={}基本操作:无}ADTPerson2.定义”家谱类型文件”类型ADTFamilyTypeFile{数据对象:D={Aj
5、Aj属于person,j=1,2,3,……,n其中n>=1}数据关系:D中每个对象用特定的字符隔开,R={
6、Aj属于D,j=1,2,3,……n,其中n
7、>=1,String属于字符串类型,为Aj父亲姓名(若String=-1,Aj无父亲,若String=Aj的姓名,表示家谱文件结束)}基本操作:1.打开家谱类型文件(.txt),建立兄弟、孩子二叉树。2.从内存读取兄弟、孩子二叉树,并建立家谱类型文件。}ADTFamilyTypeFile3.定义”家谱”类型ADTFamily{数据对象:D={Aj
8、Aj属于Person,j=1,2,3……n其中n>=0}数据关系:V={
9、aj-1,aj属于D,j=2,3,…..n其中n>=2,且Aj-1与Aj
10、为祖先与后代关系(parent),判断是否有后代,及其兄弟的关系,能过二叉链表表示}基本操作:1.显示某人信息。2.修改某人信息。3.增加某人孩子。4.删除某人。5.通过某人查找其双亲、孩子、兄弟。}ADTFamily二.详细设计1.定义”个人信息”类型structperson{charsex[10],birthaddress[20],birthday[14],deathday[20];//姓名,性别,出生地,生日charname[20],parentname[30];charwork[15],xueli[1
11、0],consort[20],zhiche[15];//职业学历配偶职称;charstature[10];//身高};2.定义”家谱类型文件”类型{//一个人的有关信息在磁盘文件中存储结构DWORDres;HANDLEhIn;INPUT_RECORDmouseRec;hIn=GetStdHandle(STD_INPUT_HANDLE);//获取标准输入设备句柄COORDpos={21,16},posa={33,27},posb={52,27};buttona[10],b[2],c[2];SetConsoleC
12、ursorPosition(hOut,pos);a[0].createbutton(pos,"姓名",14,236,hOut);//姓名pos.X+=30;a[1].createbutton(pos,"性别",14,236,hOut);//性别pos.X+=12;c[0].createbutton(pos,"男",14,236,hOut);pos.X+=4;c[1].createbutton(pos,"女",14,236,hOut);pos.Y+=2;pos.X-=46;a[2].createbutton(p
13、os,"身高",14,236,hOut);//身高pos.X+=20;SetConsoleCursorPosition(hOut,pos);cout<<"cm";pos.X+=10;a[3].createbutton(pos,"配偶",14,236,hOut);pos.Y+=2;pos.X-=30;a[4].createbutton(pos,"出生时间",14,236,hOut);//出生时间pos