家譜管理系統(tǒng)設計報告材料_第1頁
家譜管理系統(tǒng)設計報告材料_第2頁
家譜管理系統(tǒng)設計報告材料_第3頁
家譜管理系統(tǒng)設計報告材料_第4頁
家譜管理系統(tǒng)設計報告材料_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

實用標準文案目錄第一章緒論....................................................................................................................................2第二章需求分析...........................................................................................................................42.1題目.........................................................................................................................................42.2設計任務.................................................................................................................................42.3數(shù)據(jù)測試.................................................................................................................................4第三章概要設計...........................................................................................................................53.1設計思想..........................................................................................................................53.2實現(xiàn)方法..........................................................................................................................5第四章詳細設計...........................................................................................................................64.1功能構(gòu)想.................................................................................................................................64.2界面設計.................................................................................................................................64.3增加成員.................................................................................................................................84.3.1添加子女....................................................................................................................84.3.2添加配偶....................................................................................................................84.4修改成員.................................................................................................................................94.4.1修改個人信息.............................................................................................................94.4.2修改父母信息.............................................................................................................94.4.3修改兄弟姐妹的信息..............................................................................................104.4.4修改子女的信息.......................................................................................................11第五章調(diào)試分析.........................................................................................................................12精彩文檔實用標準文案第六章 測試結(jié)果 14致 謝 14參考文獻 16附 錄 16第一章 緒論目前,很多家庭家譜丟失,家庭一些關系混亂,為了避免這一問題,制定一家譜程序。家譜用于記錄某家族歷代家族成員的情況與關系,實現(xiàn)對一個家族所有的資料進行收集整理。支持對家譜的存儲、更新、查詢、統(tǒng)計等操作。并用計算機永久儲存家族數(shù)據(jù),方便隨精彩文檔實用標準文案時調(diào)用。精彩文檔實用標準文案第二章 需求分析2.1題目家譜管理系統(tǒng)2.2設計任務系統(tǒng)總體說明:以樹形結(jié)構(gòu)存儲家族信息,只考慮三代(祖父,父親,叔叔,姑姑,自己,兄弟姐妹,堂兄弟姐妹),只考慮每個人有 0或者1個兄弟姐妹的情況。注意每個結(jié)點結(jié)構(gòu)。統(tǒng)計統(tǒng)計家族成員人數(shù),查詢家族成員輩份。完成功能的詳細說明:1.輸入家族成員情況,建立樹結(jié)構(gòu)(涉及創(chuàng)建二叉樹) ;2.統(tǒng)計家族成員人數(shù)和每一個家庭成員人數(shù)(涉及樹的遍歷) ;3.查詢家族成員輩份情況(任意輸入兩個家庭成員,查詢他們的關系,父子,祖孫,兄弟,堂兄弟,共同的祖先) 。選做,考慮每個人有多個兄弟姐妹的情況。2.3數(shù)據(jù)測試測試的數(shù)據(jù)有:田迎新 陳瑞英 田紫藤 田紫恒 孫超 李美霖 ??..精彩文檔實用標準文案第三章 概要設計3.1設計思想創(chuàng)建一棵樹,存儲家庭關系,數(shù)據(jù)類型有intNum;//記錄這個人擁有幾個兒女charName[20];//記錄這個人的姓名charSex;//標示節(jié)點的種類有女(0)男(1)structTreeNode*NextNode[20];//記錄這個人的兒女structTreeNode*Parent;//記錄這個節(jié)點的父節(jié)點3.2 實現(xiàn)方法完成功能的函數(shù)有voidCreatTree(TreeNode*Tree);//-------------------------------- 創(chuàng)建樹void OutPutAll(TreeNode *Tree);//------------------------------- 遍歷并輸出樹中的內(nèi)容void firstoftxt();//---------------------------------------------------- 寫入文件的開始信息voidofAll(TreeNode*Tree);//------------------------------------- 寫入文件函數(shù)voidifAll();//--------------------------------------------------------- 讀取文件的函數(shù)TreeNode * SearchTree(TreeNode *Tree,char name[],int length);// 查找結(jié)點的函數(shù)voidMainMenue(TreeNode*Tree);//----------------------------- 主菜單精彩文檔實用標準文案void SubMenue1(TreeNode *Tree);//---------------------------- 修改成員信息的菜單voidSubMenue2(TreeNode*Tree);//----------------------------- 添加新成員菜單voidChange(TreeNode*Tree);//--------------------------------- 修改成員信息voidAddNew(TreeNode*Tree);//-------------------------------- 添加新成員voidOutPutMessage(TreeNode*Tree,charname[],intlength);// 輸出已經(jīng)查找到的人的信息第四章 詳細設計4.1功能構(gòu)想構(gòu)想好總體規(guī)劃之后,便開始設計程序中需要用到的各個功能函數(shù),初步構(gòu)想是要先實現(xiàn)最基本的幾項功能,其中數(shù)據(jù)操作的有:增加成員,修改成員資料,刪除成員;數(shù)據(jù)存取的有:打開家譜,新建家譜,保存家譜;數(shù)據(jù)查詢的有:查看某代信息,按姓名查找,查看成員關系,等等。4.2界面設計cout<<"\n\n\t---*****---請選擇你的操作---****---";cout<<"\n\t--------------1:輸入家譜信息建立多叉樹----------------------";cout<<"\n\t--------------2:在家族中查找某人并輸出他或(她)的相應信息----";cout<<"\n\t--------------3:添加新的成員--------------------------------";精彩文檔實用標準文案cout<<"\n\t--------------4:輸出整個家譜信息----------------------------";cout<<"\n\t--------------5:修改某個人的信息----------------------------";cout<<"\n\t--------------6:家譜信息存入文件----------------------------";cout<<"\n\t--------------7:讀取家譜信息文件----------------------------";cout<<"\n\t--------------8:退出整個程序--------------------------------\n\t";if(選擇1){CreatTree(TreeNode*Tree);}Elseif(選擇2){OutPutMessage(TreeNode*Tree,charname[],intlength);}Elseif(選擇3){AddNew(TreeNode*Tree);}Elseif(選擇4){OutPutAll(TreeNode*Tree);}Elseif(選擇5){Change(TreeNode*Tree);}Elseif(選擇6){ofAll(TreeNode*Tree);}Elseif(選擇7){ifAll();}Else{exit(0);}精彩文檔實用標準文案4.3增加成員 添加子女NewNode=newTreeNode;cout<<"\n\n\t 請輸入添加人員姓名 : ";cin>>NewNode->Name;cout<<"\n\n\t 請輸入添加人員性別女 (0) 男(1): ";cin>>NewNode->Sex;num=Tree->Num;NewNode->NextNode[0]=newTreeNode;NewNode->NextNode[0]=NULL;NewNode->Num=0;NewNode->Parent=Tree;Tree->NextNode[num+1]=NewNode;Tree->Num=Tree->Num+1;cout<<"\n\n\t------------- 子女的信息添加成功 ----------------"; 添加配偶NewNode=newTreeNode;cout<<"\n\n\t 請輸入添加人員姓名 : ";cin>>NewNode->Name;cout<<"\n\n\t 請輸入添加人員性別女 (0) 男(1): ";精彩文檔實用標準文案cin>>NewNode->Sex;NewNode->Parent=Tree;Tree->NextNode[0]=NewNode;4.4修改成員 修改個人信息cout<<"\n\n\t 請輸入修改的姓名 (如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Name,name);cout<<"\n\n\t 是否要修改性別 :(如果需要就輸入 '1',不需要修改就輸入 '0'然后按 Enter 鍵繼續(xù)):\n";cin>>flag;if(flag==1){if(Tree->Sex=='0')Tree->Sex='1';elseTree->Sex='0';} 修改父母信息cout<<"\n\n\t 請輸入 "<<Parent[0]<<" 要修改的姓名 (如果不需要修改就輸入 '0',然后精彩文檔實用標準文案按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Parent->Name,name);cout<<"\n\n\t 請輸入 "<<Parent[1]<<" 要修改的姓名 (如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Parent->NextNode[0]->Name,name); 修改兄弟姐妹的信息cout<<"\n\n\t 請輸入 "<<NewNode->NextNode[i]->Name<<" 修改的姓名(如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(NewNode->NextNode[i]->Name,name);cout<<"\n\n\t 是否要修改性別 (如果需要就輸入 '1'不需要修改就輸入 '0'然后按Enter鍵繼續(xù)):\n";cin>>flag;if(flag==1){if(NewNode->NextNode[i]->Sex=='0')精彩文檔實用標準文案NewNode->NextNode[i]->Sex='1';elseNewNode->NextNode[i]->Sex='0';} 修改子女的信息cout<<"\n\n\t 請輸入 "<<Tree->NextNode[i]->Name<<" 修改的姓名(如果不需要修改就輸入'0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->NextNode[i]->Name,name);cout<<"\n\n\t 是否要修改性別 (如果需要就輸入 '1',不需要修改就輸入 '0'然后按Enter鍵繼續(xù)):\n";cin>>flag;if(flag==1){if(Tree->NextNode[i]->Sex=='0')Tree->NextNode[i]->Sex='1';elseTree->NextNode[i]->Sex='0';}精彩文檔實用標準文案第五章 調(diào)試分析1.進入系統(tǒng)2.建立家譜3.查看信息精彩文檔實用標準文案4.添加成員5.修改信息精彩文檔實用標準文案第六章 測試結(jié)果父親姓名 田迎新 母親姓名 陳瑞英 姐姐 田紫藤 姐夫 孫超 本人 田紫恒 李美霖致 謝感謝孫紅艷老師辛苦教導與教誨,讓我學到了很多知識,提高了很大的能力。與此同時,也感謝老師為我辛苦驗收課設,耐心講解,讓我也受益匪淺。今后,我一定會努力學習,用我的實際行動來回報家長,感謝我的老師,為學校爭光,精彩文檔實用標準文案努力為我們的國家,貢獻出一份微薄的貢獻!精彩文檔實用標準文案參考文獻《數(shù)據(jù)結(jié)構(gòu)》C++語言版嚴蔚敏吳偉民編著清華大學出版社2011[2]《數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)軟件工程課程設計指導及習題解答》 徐志才 方賢文 劉士喜編 北京師范大學出版社 2011《C++語言程序設計》何欽銘顏暉主編高等教育出版社2008附錄精彩文檔實用標準文案#include<iostream.h>#include<string.h>#include <stdio.h> //getchar 可以將鍵入的信息存到緩沖區(qū) ,按Enter鍵將進行輸入#include<stdlib.h> //system 的頭文件,exit的頭文件#include<fstream.h>intMATEFLAG=0;typedefstructTreeNode{ int Num; //記錄這個人擁有幾個兒女charName[20]; //記錄這個人的姓名charSex; //標示節(jié)點的種類有女 (0) 男(1)structTreeNode*NextNode[20]; //記錄這個人的兒女structTreeNode*Parent; //記錄這個節(jié)點的父節(jié)點}TreeNode;voidCreatTree(TreeNode*Tree);//------------------------------- 創(chuàng)建樹voidOutPutAll(TreeNode*Tree);//------------------------------- 遍歷并輸出樹中的內(nèi)容voidfirstoftxt();//-------------------------------------------- 寫入文件的開始信息voidofAll(TreeNode*Tree);//----------------------------------- 寫入文件函數(shù)voidifAll();//------------------------------------------------- 讀取文件的函數(shù)TreeNode* SearchTree(TreeNode*Tree,charname[],intlength);// 查找結(jié)點的函數(shù)voidMainMenue(TreeNode*Tree);//------------------------------- 主菜單voidSubMenue1(TreeNode*Tree);//------------------------------ 修改成員信息的菜單精彩文檔實用標準文案voidSubMenue2(TreeNode*Tree);//------------------------------- 添加新成員菜單voidChange(TreeNode*Tree);//--------------------------------- 修改成員信息voidAddNew(TreeNode*Tree);//--------------------------------- 添加新成員voidOutPutMessage(TreeNode*Tree,charname[],intlength);//--- 輸出已經(jīng)查找到的人的信息//主函數(shù)voidmain(){ TreeNode*Tree;Tree=newTreeNode;Tree->Parent=NULL;strcpy(Tree->Name,"0");MainMenue(Tree);}//添加新的成員voidAddNew(TreeNode*Tree){ SubMenue2(Tree); }輸出副菜單voidSubMenue2(TreeNode*Tree){charc;int num;charname[20];TreeNode*NewNode;精彩文檔實用標準文案while(1){system("cls");cout<<"\t";cout<<"\n\n\t ---*****--- 請選擇你的操作---****---";cout<<"\n\t---*---*---*---1:";

添加某個人的子女的信息---*---*---*---*----cout<<"\n\t---*---*---*---2:添加某個人配偶的信息-*---*---*---*---*----";cout<<"\n\t---*---*---*---3:退出-*---*---*---*---*---*---*---*---*----\n\t";cout<<" 請輸入:";cin>>c;switch(c){case'1':cout<<"\n\n\t 請輸入那個人的名字 : ";cin>>name;Tree=SearchTree(Tree,name,20);if(Tree==NULL){ cout<<"\n\n\t**** 該家譜圖中沒有 "<<name<<" 這個人的信息 ,請確認是否輸入錯誤 *****\n"; break; }if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL&&Tree->Name!=Tree->Parent->NextNode[0]->Name){ cout<<"\n\n\t"<<Tree->Name<<" 至今還沒有配偶請先添加配精彩文檔實用標準文案偶!";break;}if(Tree->Parent==NULL&&(Tree->Num>20||Tree->Num<0))Tree->Num=0;if(MATEFLAG==1)Tree=Tree->Parent;NewNode=newTreeNode;cout<<"\n\n\t 請輸入添加人員姓名 : ";cin>>NewNode->Name;cout<<"\n\n\t 請輸入添加人員性別女 (0) 男(1): ";cin>>NewNode->Sex;num=Tree->Num;NewNode->NextNode[0]=newTreeNode;NewNode->NextNode[0]=NULL;NewNode->Num=0;NewNode->Parent=Tree;Tree->NextNode[num+1]=NewNode;Tree->Num=Tree->Num+1;cout<<"\n\n\t------------- 子女的信息添加成功 ----------------";break;case'2':精彩文檔實用標準文案cout<<"\n\n\t 請輸入那個人的名字 : ";cin>>name;Tree=SearchTree(Tree,name,20);if(Tree->Parent!=NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0||Tree->NextNode[0]!=NULL){ cout<<"\n\n\t 已經(jīng)有了配偶";break;}if(Tree==NULL){ cout<<"\n\n\t**** 該家譜圖中沒有 "<<name<<" 這個人的信息 ,請確認是否輸入錯誤 *****\n"; break; }NewNode=newTreeNode;cout<<"\n\n\t 請輸入添加人員姓名 : ";cin>>NewNode->Name;cout<<"\n\n\t 請輸入添加人員性別女 (0) 男(1): ";cin>>NewNode->Sex;NewNode->Parent=Tree;Tree->NextNode[0]=NewNode;break;case'3':cout<<"\n\n\t---------------- 本項服務到此結(jié)束-----------------";break;精彩文檔實用標準文案case'\n': break;default:cout<<"\n\n\t-------- 對不起!你的選擇不在服務范圍之內(nèi) !---------";cout<<"\n\t----------- 請您再次選擇所需的服務項 !------------- ";cout<<"\n\t------------------ 謝 謝 合作!----------------------\n\t";break;}if(c=='3')break;}}修改某個人的信息voidChange(TreeNode*Tree){charname[20];TreeNode*NewNode;cout<<"\n\t請輸入你要修改的人的信息:";cin>>name;NewNode=SearchTree(Tree,name,20);if(NewNode==NULL){cout<<"\n\n\t****該家譜圖中沒有"<<name<<"這個人的信息,請確認是否輸入錯誤*****\n"; return; }精彩文檔實用標準文案else{ SubMenue1(NewNode); }}輸出副菜單voidSubMenue1(TreeNode*Tree){charc;intflag,i;charname[20];charParent[2][20];TreeNode*NewNode;while(1){system("cls");cout<<"\t";cout<<"\n\n\t ---*****--- 請選擇你的操作---****---";cout<<"\n\t---*---*---*---1:修改個人的信息---*---*---*---*---*---*----";cout<<"\n\t---*---*---*---2:修改父母的信息---*---*---*---*---*---*----";cout<<"\n\t---*---*---*---3:修改兄弟姐妹的信息---*---*---*---*---*----";cout<<"\n\t---*---*---*---4:修改子女的信息---*---*---*---*---*---*----";cout<<"\n\t---*---*---*---5:修改配偶的信息---*---*---*---*---*---*----";cout<<"\n\t---*---*---*---6:退出-*---*---*---*---*---*---*---*---*----\n\t";cout<<"請輸入:";精彩文檔實用標準文案cin>>c;switch(c){case'1':cout<<"\n\n\t 請輸入修改的姓名 (如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Name,name);cout<<"\n\n\t 是否要修改性別 :(如果需要就輸入 '1',不需要修改就輸入'0'然后按Enter鍵繼續(xù)):\n";cin>>flag;if(flag==1){if(Tree->Sex=='0')Tree->Sex='1';elseTree->Sex='0';}cout<<"\n\n\t 個人信息修改成功 !";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar();break;case'2':精彩文檔實用標準文案if(Tree->Parent==NULL) //判斷是不是頭節(jié)點{ cout<<"\n\t 是這個家譜圖里最頂端的人沒有父母信息 !"<<endl;cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;}if(MATEFLAG==1) //判斷是不是入贅或加入此間的{if(Tree->Sex=='0'){cout<<"\n\n\t她是嫁入此間的所以父母信息不在家譜內(nèi)包括!";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar();}else{ cout<<"\n\n\t 他是入贅此間的所以父母信息不在家譜內(nèi)包括!";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar();} break;}if(Tree->Parent->Sex=='0'){strcpy(Parent[0],"母親");strcpy(Parent[1],"父親");精彩文檔實用標準文案}else{strcpy(Parent[0],"父親");strcpy(Parent[1]," 母親");}cout<<"\n\n\t 請輸入 "<<Parent[0]<<" 要修改的姓名 (如果不需要修改就輸入'0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Parent->Name,name);cout<<"\n\n\t 請輸入 "<<Parent[1]<<" 要修改的姓名 (如果不需要修改就輸入'0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Parent->NextNode[0]->Name,name);cout<<"\n\n\t------------- 父 母 的 信 息 修 改 成 功----------------"<<endl;cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'3':NewNode=Tree->Parent;if(NewNode==NULL) //判斷是不是頭精彩文檔實用標準文案節(jié)點{ cout<<"\n\t 是這個家譜圖里最頂端的人沒有兄弟姐妹信息!"<<endl;cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }if(MATEFLAG==1) //判斷是不是入贅或加入此間的{if(Tree->Sex=='0'){cout<<"\n\n\t她是嫁入此間的所以兄弟姐妹信息不在家譜內(nèi)包括!";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar();}else{cout<<"\n\n\t 他是入贅此間的所以兄弟姐妹信息不在家譜內(nèi)包括!";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar();} break; }if(NewNode->Num==1){ cout<<"\n\n\t 沒有兄弟姐妹!";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;精彩文檔實用標準文案getchar(); break; }else{for(i=1;i<=NewNode->Num;i++){if(NewNode->NextNode[i]->Name!=Tree->Name){ cout<<"\n\n\t 請 輸 入"<<NewNode->NextNode[i]->Name<<" 修改的姓名(如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(NewNode->NextNode[i]->Name,name);cout<<"\n\n\t 是否要修改性別 (如果需要就輸入 '1'不需要修改就輸入'0'然后按Enter鍵繼續(xù)):\n";cin>>flag;if(flag==1){if(NewNode->NextNode[i]->Sex=='0')NewNode->NextNode[i]->Sex='1';elseNewNode->NextNode[i]->Sex='0';}}}}精彩文檔實用標準文案cout<<"\n\n\t------------ 兄 弟 姐 妹 的 信 息 修 改 成 功-------------"<<endl;cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'4':if(Tree->Num==0){ cout<<"\n\n\t 至今還沒有子女 !";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }if(Tree->Parent!=NULL)if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0) //如果他是入贅或者是嫁入的就需用配偶節(jié)點完成修改{ Tree=Tree->Parent; }for(i=1;i<=Tree->Num;i++){ cout<<"\n\n\t 請輸入 "<<Tree->NextNode[i]->Name<<"修改的姓名(如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->NextNode[i]->Name,name);cout<<"\n\n\t 是否要修改性別 (如果需要就輸入 '1',不需要修改就輸入'0'然后按Enter鍵繼續(xù)):\n";精彩文檔實用標準文案cin>>flag;if(flag==1){if(Tree->NextNode[i]->Sex=='0')Tree->NextNode[i]->Sex='1';elseTree->NextNode[i]->Sex='0';}}cout<<"\n\n\t--------------- 子 女 的 信 息 修 改 成 功----------------"<<endl;cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'5':if(Tree->Parent!=NULL){if(Tree->NextNode[0]==NULL&&strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)!=0){ cout<<"\n\n\t 至今還沒有配偶 !";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }if(strcmp(Tree->Name,Tree->Parent->NextNode[0]->Name)==0)精彩文檔實用標準文案{ cout<<"\n\n\t 請輸入 "<<Tree->Parent->Name<<" 修改的姓名(如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->Parent->Name,name);}else{ cout<<"\n\n\t 請 輸 入"<<Tree->NextNode[0]->Name<<" 修改的姓名 (如果不需要修改就輸入 '0',然后按Enter鍵繼續(xù)):\n";cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->NextNode[0]->Name,name);}}else{if(Tree->NextNode[0]==NULL){ cout<<"\n\n\t 至今還沒有配偶 !"; }else{ cout<<"\n\n\t 請 輸 入"<<Tree->NextNode[0]->Name<<" 修改的 姓名(如果不需要修改就輸入 '0'然后按Enter鍵繼續(xù)):\n";精彩文檔實用標準文案cin>>name;if(strcmp(name,"0")!=0)strcpy(Tree->NextNode[0]->Name,name);}}cout<<"\n\n\t--------------- 配 偶 的 信 息 修 改 成 功----------------"<<endl;cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'6':cout<<"\n\n\t---------------- 本項服務到此結(jié)束 -----------------";break;default:cout<<"\n\n\t-------- 對不起!你的選擇不在服務范圍之內(nèi) !---------";cout<<"\n\t----------- 請您再次選擇所需的服務項 !-------------";cout<<"\n\t------------------ 謝 謝 合作!----------------------"<<endl;cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }if(c=='6')break;}精彩文檔實用標準文案}輸出主菜單voidMainMenue(TreeNode*Tree){charc;charname[20];while(1){system("cls");cout<<"\t";cout<<"\n\n\t---*****---請選擇你的操作---****---";cout<<"\n\t--------------1:輸入家譜信息建立多叉樹----------------------";cout<<"\n\t--------------2:在家族中查找某人并輸出他或(她)的相應信息----";cout<<"\n\t--------------3:添加新的成員--------------------------------";cout<<"\n\t--------------4:輸出整個家譜信息----------------------------";cout<<"\n\t--------------5:修改某個人的信息----------------------------";cout<<"\n\t--------------6:家譜信息存入文件----------------------------";cout<<"\n\t--------------7:讀取家譜信息文件----------------------------";cout<<"\n\t--------------8:退出整個程序--------------------------------\n\t";cout<<"請輸入:";cin>>c;switch(c){case'1'://輸入家譜信息建立多叉樹TreeNode*NewNode;NewNode=newTreeNode;cout<<"\n\t請輸入姓名:";cin>>Tree->Name;精彩文檔實用標準文案cout<<"\n\t 請輸入性別女 (0)男(1): ";cin>>Tree->Sex;Tree->Parent=NewNode;Tree->Parent=NULL;CreatTree(Tree);cout<<"\n\t-------------- 家譜圖已經(jīng)建立成功 ---------------\n\n";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'2':// 在家族中查找某人并輸出他或 (她)的相應信息if(strcmp(Tree->Name,"0")==0){ cout<<"\n\t 家譜圖的多叉樹尚未建立請先建立樹 \n";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }cout<<"\n\t 請輸入你要查找的人的姓名 : ";cin>>name;OutPutMessage(SearchTree(Tree,name,20),name,20);cout<<"\n\n\t-----*----*----*----*----*----*----*----*----*----*----\n\t";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'3':// 添加新的成員if(strcmp(Tree->Name,"0")==0)精彩文檔實用標準文案{ cout<<"\n\t****** 家譜圖的多叉樹尚未建立請先建立樹 ******\n";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }AddNew(Tree);cout<<"\n-------------- 按Enter 鍵繼續(xù)操作......"<<endl; getchar();break;case'4':// 輸出整個家譜信息if(strcmp(Tree->Name,"0")==0){ cout<<"\n\t****** 家譜圖的多叉樹尚未建立請先建立樹 ******\n";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }cout<<"\n\n\t 整個家譜的主要信息如下 :";OutPutAll(Tree);cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'5':// 修改某個人的信息if(strcmp(Tree->Name,"0")==0){ cout<<"\n\t****** 家譜圖的多叉樹尚未建立請先建立樹 ******\n";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }Change(Tree);cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;精彩文檔實用標準文案getchar(); break;case'6':// 家譜信息存入文件if(strcmp(Tree->Name,"0")==0){ cout<<"\n\t****** 家譜圖的多叉樹尚未建立請先建立樹 ******\n";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }firstoftxt();ofAll(Tree);cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'7':// 讀取家譜信息文件ifAll();cout<<"\n-------------- 請按Enter鍵繼續(xù)操作......"<<endl;getchar(); break;case'8':// 退出整個程序cout<<"\n\n\t----------------- 本次服務到此結(jié)束 ------------------";cout<<"\n\t------------------ 歡迎下次使用---------------------";cout<<"\n\t---------------------- 謝謝-------------------------\n\n";exit(0); break;default:cout<<"\n\n\t-------------- 對不起!你的選擇不在服務范圍之內(nèi)!--------------";精彩文檔實用標準文案cout<<"\n\t----------------- 請 您 再 次 選 擇 所 需 的 服 務項!------------------";cout<<"\n\t------------------------ 謝 謝 合作!---------------------------\n\t";cout<<"\n-------------- 按Enter鍵繼續(xù)操作......"<<endl;getchar(); break; }}}創(chuàng)建樹voidCreatTree(TreeNode*Node){inti;intflag;TreeNode*NewNode;NewNode=newTreeNode;Node->NextNode[0]=NewNode;Node->NextNode[0]=NULL;cout<<"\n\t 請輸入 "<<Node->Name<<" 的配偶的姓名 : ";cin>>NewNode->Name;cout<<"\n\t 請輸入 "<<Node->Name<<" 的子女的數(shù)目 : ";cin>>Node->Num;if((Node->Num)==0&&strcmp(NewNode->Name,"0")==0)return;精彩文檔實用標準文案if(Node->Sex=='0')NewNode->Sex='1';elseNewNode->Sex='0';NewNode->Num=0;NewNode->NextNode[0]=NULL;Node->NextNode[0]=NewNode;Node->NextNode[0]->Parent=Node;for(i=1;i<=Node->Num;i++){NewNode=newTreeNode;cout<<"\n\t 請輸入 "<<Node->Name<<" 的第"<<i<<" 子女的名字: ";cin>>NewNode->Name;cout<<"\n\t 請輸入 "<<Node->Name<<" 的第 "<<i<<" 子女的性別女 (0)男(1): ";cin>>NewNode->Sex;NewNode->Num=0;NewNode->Parent=Node;Node->NextNode[i]=NewNode;CreatTree(Node->NextNode[i]);}}遍歷并輸出樹中的內(nèi)容精彩文檔實用標準文案voidOutPutAll(TreeNode*Tree){inti,flag=0;cout<<"\n\t---****---***---***---***---***---***---***---***---***---";cout<<"\n\t 姓名:"<<Tree->Name<<" 性別:";if(Tree->Sex=='0'){ flag=1; cout<<" 女";}elsecout<<" 男";if(!(Tree->NextNode[0])){ cout<<"\n\t****** 至今沒有配偶和子女 ******\n"; return; }if(flag==1)cout<<"\n\t 丈夫 姓名:"<<Tree->NextNode[0]->Name;elsecout<<"\n\t 妻子 姓名:"<<Tree->NextNode[0]->Name;for(i=1;i<=Tree->Num;i++){cout<<"\n\t第"<<i<<"個子女的姓名:"<<Tree->NextNode[i]->Name<<"性別:";if(Tree->NextNode[i]->Sex=='0')cout<<" 女";elsecout<<" 男";}精彩文檔實用標準文案cout<<"\n\t";for(i=1;i<=Tree->Num;i++){ OutPutAll(Tree->NextNode[i]); }}家譜信息存入文件voidfirstoftxt(){fstreamoutf("D:\\f1.txt",ios::out|ios::trunc);if(!outf){cerr<<"打開文件錯誤!"<<endl;return;}else{ outf<<"\n\n\t****** 整個家譜的主要信息如下 :"<<endl; }outf.close();}voidofAll(TreeNode*Tree){fstreamoutf("D:\\f1.txt",ios::out|ios::ate|ios::app);if(!outf){cerr<<"打開文件錯誤!"<<endl;return; }else{inti,flag=0;outf<<"\n\t---****---***---***---***---***---***---***---***---***---";精彩文檔實用標準文案outf<<"\n\t 姓名:"<<Tree->Name<<" 性別:";if(Tree->Sex=='0'){ flag=1;outf<<" 女";}elseoutf<<" 男";if(!(Tree->NextNode[0])){ outf<<"\n\t****** 至今沒有配偶和子女 ******\n";return; }if(flag==1)outf<<"\n\t 丈夫 姓名:"<<Tree->NextNode[0]->Name;elseoutf<<"\n\t 妻子 姓名:"<<Tree->NextNode[0]->Name;for(i=1;i<=Tree->Num;i++){outf<<"\n\t 第"<<i<<" 個子女的姓名 :"<<Tree->NextNode[i]->Name<<"性別:";if(Tree->NextNode[i]->Sex=='0')outf<<" 女";elseoutf<<" 男"; }outf<<"\n\t";for(i=1;i<=Tree->Num;i++)精彩文檔實用標準文案{ ofAll(Tree->NextNode[i]); }}outf.close();cout<<"\n\t****** 家譜信息存入文件成功 !**********"<<endl;}讀取家譜信息voidifAll(){chars[100];ifstreaminf("D:\\f1.txt",ios::in);if(!inf){cerr<<"文件打開錯誤!"<<endl;return;}inf.getline(s,100);cout<<s<<'\n';while(!inf.eof()){inf.getline(s,100);cout<<s<<'\n';}inf.close();cout<<"\n\t********* 家譜信息文件讀取成功 !**********"<<endl;}在樹中經(jīng)過遍歷查找某個人TreeNode*SearchTree(T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論