长春大学数据结构任务书_第1页
长春大学数据结构任务书_第2页
长春大学数据结构任务书_第3页
长春大学数据结构任务书_第4页
长春大学数据结构任务书_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录一、设计题目二、设计目的三、设计分析四、总体设计五、详细设计六、系统调试七、结论一、设计题目家谱管理系统二、设计目的用已经学过的知识设计一个简单的应用程序,方便家谱的管理。了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。家谱用于记录某家族历代家族成员的情况与关系。本课程设计要求设计并实现一个计算机软件,支持对家谱的存储、更新、查询、统计等操作。培养大家的由理论到实践的学习能力,增强同学们的团队合作精神。三、设计分析内部要求:要求将家谱信息看作树形结构处理,并可存储在外存。数据可一次读入内存;外部要求:这一级要求系统具备下列基本功能:1、家庭成员信息存储:将每个家庭成员的基本信息存储在计算机中(可永久保存)。家庭成员的基本信息至少应包括:(姓名,出生地,出生日期,死亡日期,性别,身高,学历,职业,最高职务/职称,…);2、家族关系存储:将各家庭成员之间的关系,存储在计算机中(可永久保存);3、更新:家谱数据的更新(修改、删除、加入);D)输出:将家谱以较友好的格式输出(显示);4、查询:按基本信息查询成员,按亲戚关系查询;四、总体设计对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图。五、详细设计家庭成员基本信息用线性表表示,程序结束后存储在磁盘上,程序开始是从磁盘读出;家庭成员之间的关系,用树形结构(家族树)表示;家族树在程序结束后存储在磁盘上,程序开始是从磁盘读出;树在内存中的存储结构:邻接表或孩子兄弟链,带父指示器;家庭成员基本信息设置数字编号,用于唯一地标识记录;树结点用家庭成员的编号标识。通过编号,建立家庭成员的基本信息与树结点的联系;树在磁盘文件中的存储结构:存储串行化结果,如“根-叶序列”;所谓“根-叶序列”,是指,从树根到每个叶子结点的路径。路径的排列次序表示兄弟的次序。例如,下图表示的树的“根-叶序列”为:1,2,41,2,61,2,8,5(这三行的次序,表示4,6,8的次序,即4,6,8分别是2的第1,2,3个孩子)1,71,3,91,3,10六、系统调试系统的所有功能:如图1图1建立家谱:如图2图2七、结论在设计的初期,首先通过文档的整理,初步定了一下本系统主要实现的功能:建立新的家庭系谱图,在家谱中增加新成员以及其基本信息,更新一个成员的信息,删除和查看一个人的信息,通过亲属寻找一个成员。在设计中期,进行算法设计,代码编写。最后进行上机调试,并在调试过程中改进代码。撰写说明书。此次设计使我学的知识得到了升华。附源代码:#include<iostream.h>#include<fstream.h>#include<string.h>#include<stdlib.h>#include"genealogy.h"voidmain(){GEnealogyged;personpnode=newCSNode;personresultname=newCSNode;intchoice1;charName[max_char_num],tag[max_char_num];strcpy(tag,"-1");while(1){//输出主画面选择菜单cout<<"***************************GenealogySystem***************************"<<endl;cout<<"1.BuildanewGenealogy"<<endl;cout<<"2.ReadGenealogyDatafromabinarydatfile"<<endl;cout<<"3.SaveGenealogyDataintodisk"<<endl;cout<<"4.AddapersontotheGenealogy"<<endl;cout<<"5.ModifyapersonintheGenealogy"<<endl;cout<<"6.Deleteapersonandhisalloffspring"<<endl;cout<<"7.DisplaytheGenealogyinthetreeform"<<endl;cout<<"8.StatisticapersonstatusintheGenealogy"<<endl;cout<<"9.Findapersonbyhisinformation"<<endl;cout<<"10.Findapersonbyrelativerelationshiop"<<endl;cout<<"0.Exit"<<endl;cin>>choice1;switch(choice1){case1://选1,建立一个二叉树家谱,并输入根结点信息system("cls");cout<<"*************BuildanewGenealogyOperation*********************"<<endl;strcpy(pnode->data.parentname,tag);ged.NewGEnealogy();cout<<"Pleaseinputtheinformationoftherootperson"<<endl;ged.InputData(pnode);ged.Add(NULL,pnode);break;case2://选2,从文件读取数据建立二叉树ged.CreateGEnealogy();system("cls");cout<<"***********************ReadOpertation***************************"<<endl;cout<<"Readsuccessfully"<<endl;break;case3://选3,保存二叉树信息到文件system("cls");cout<<"***********************SaveOpertation***************************"<<endl;ged.SaveGEnealogy();cout<<"Savesuccessfully"<<endl;break;case4://选4,在二叉树添加结点system("cls");cout<<"***********************AddChildOpertation***************************"<<endl;if(ged.GetRoot())ged.AddOperation();//根结点非空,调用addoperation()添加结点else{//否则添加根结点ged.NewGEnealogy();cout<<"It'sanullGenealogy,Pleaseinputtheinformationoftherootperson"<<endl;ged.InputData(pnode);ged.Add(NULL,pnode);}break;case5://选5,修改树结点信息system("cls");cout<<"***********************ModifyOpertation***************************"<<endl;cout<<"Pleaseinputthenameofthepersonyouwanttomodify"<<endl;cin>>Name;resultname=NULL;ged.FindByName(ged.GetRoot(),resultname,Name);if(resultname){cout<<"Pleaseinputnewinformationoftheperson"<<endl;ged.InputData(pnode);ged.Modify(resultname,pnode);}elsecout<<"Inputerror"<<endl;break;case6://选6,删除某个结点以及他的所有孩子结点system("cls");cout<<"***********************DeleteOpertation***************************"<<endl;cout<<"Pleaseinputthenameofthepersonandhisoffspringyouwanttodelete"<<endl;cin>>Name;resultname=NULL;ged.FindByName(ged.GetRoot(),resultname,Name);if(resultname){ged.Delete(resultname);cout<<"Deletesuccessfully"<<endl;}elsecout<<"Inputerror"<<endl;break;case7://选7,输出树型表system("cls");cout<<"***********************DisplayOpertation***************************"<<endl;if(ged.GetRoot())ged.DisplayTree(ged.GetRoot());elsecout<<"GenealogyisNULL"<<endl;break;case8://选8,调用统计函数system("cls");cout<<"***********************StatisticOpertation***************************"<<endl;ged.Statistic();break;case9://选9,调用按基本信息查询函数system("cls");cout<<"***********************InquieOpertationI***************************"<<endl;ged.Inquire();break;case10://选10,查询亲属关系system("cls");cout<<"***********************InquieOpertationII***************************"<<endl;cout<<"Pleaseinputthenameofthepersonyouwanttofindabouthisrelative"<<endl;cin>>Name;ged.FindByName(ged.GetRoot(),resultname,Name)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论