版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、洛 陽理工學(xué) 院課 程 設(shè) 計報 告課程名稱_ _ _ 數(shù)據(jù)結(jié)構(gòu)_課程設(shè)計_ _ _設(shè)計題目 _家譜管理系統(tǒng) _專計算機科學(xué)與技術(shù)業(yè) _ _ _ _ _班級 _B150405_ _學(xué)號_ B15080822 _ _姓名 _ _ 宋士龍 _ _完成日期_2016_年 12月30日_ _ _?課程 設(shè)計 任 務(wù) 書設(shè)計題目 :家譜管理系統(tǒng)設(shè)計內(nèi)容與要求 :【問題描述】: 實現(xiàn)具有下列功能得家譜管理系統(tǒng)1)、 輸入文件以存放最初家譜中各成員得信息 ,成員得信息中均應(yīng)包含以下內(nèi)容:姓名、出生日期、婚否、地址、健在否、死亡日期 (若其已死亡 ),也可附加其它信息、但不就是必需得。2)、 實現(xiàn)數(shù)據(jù)得存盤與
2、讀盤 .3)、 顯示家譜。4)、按照出生日期查詢成員名單。5)、 按照姓名查詢,輸出成員信息(包括其本人、父親、孩子得信息).6)、 修改某成員信息。【基本要求】:界面要求:有合理得提示,每個功能可以設(shè)立菜單,根據(jù)提示 ,可以完成相關(guān)得功能要求 .存儲結(jié)構(gòu) :學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計, 但就是要求相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。測試數(shù)據(jù):要求使用、全部合法數(shù)據(jù) ;2、局部非法數(shù)據(jù)。進行程序測試 ,以保證程序得穩(wěn)定 .測試數(shù)據(jù)及測試結(jié)果請在上交得資料中寫明。指導(dǎo)教師: _ _ _年月日課 程 設(shè) 計 評語成績:指導(dǎo)教師 : _ _ _年月日一、算法思想本程序就是一個管理家譜得系統(tǒng),通過這個系
3、統(tǒng)可以對家族成員進行創(chuàng)建、顯示、查找、修改、以及保存家譜與讀取家譜功能。該系統(tǒng)分為以下幾個模塊,分別就是 :創(chuàng)建家譜,顯示家譜、按姓名與生日查找家庭成員、修改家譜、存盤、讀盤以及退出系統(tǒng).本程序用到得存儲形式為多叉樹, 因為家譜中每個人既有父母又有孩子,而且孩子得個數(shù)并不確定,所以用多叉樹來存儲最為合適。用多叉樹來存儲,就用用到多叉樹得遞歸創(chuàng)建及遞歸遍歷。因為就是多叉樹,所以遍歷時用廣度優(yōu)先搜索合適.本函數(shù)最主要得思想就就是遞歸調(diào)用,每個子函數(shù)中都會用到遞歸 .定義結(jié)構(gòu)體時給定指針數(shù)組得最大容量,來規(guī)定家譜中最多可以存多少人。定義一個家族樹得指針變量用來當(dāng)每個子函數(shù)得參數(shù),從而將其返回到主函數(shù)
4、中。以下時算法思想流程圖:家譜管理系統(tǒng)創(chuàng)建家譜顯示家譜查找成員修改家譜讀寫家譜按按修修修存讀照照改改改盤盤姓生本父孩名日人母子退出系統(tǒng)二、模塊劃分1. int m n():主函數(shù)2. vod Creat re( eeNoe Tree):創(chuàng)建家族樹3. void OutPu ll(Tr eo *Tr e):顯示家譜4. vod enue( T eeNo e Tree):主菜單5. vo ubMenue1( T e Nd * ree):副菜單 (修改選項菜單)6. v d Change(TreeNod Tree):修改家譜7. TeeNoe Serch ee( TreNod Tee, ar n,i
5、n en th):按照姓名查找家譜成員8. TreeN de Sea cT e1(reeNode Tr e, char birth ,int l ngt) :按照生日查找家譜成員9. oi utPutM s g (Tre N de ree, ar n m ,inleng):輸出按姓名查找到得家譜成員10.void ut t ss e( TreeNode T ee,char rh , i tlength):輸出按生日查找到得家譜成員11.void S veFamily(T eeNode *roo):保存家譜12.vod ReaFamly(TreeNod *r ot):讀取家譜三、數(shù)據(jù)結(jié)構(gòu)tyed
6、ef tuTreeNo eintC il ;/記錄這個人擁有幾個兒女char Na e 20; /記錄這個人得姓名char birt a 2; /生日?int marriage ; /婚否(表示結(jié)婚,0 表示沒結(jié)婚 )?int deah;/生死( 1 表示活著, 0 表示過世)cha Kind;/ 標(biāo)示節(jié)點得種類有女男chaadd es 100 ;/住址?char l vema sa e 50 ;/死亡日期(如果其已經(jīng)死亡)struc T eeNod Nex ode20;/ 記錄這個人得兒女stucT eNode r nt;/記錄這個節(jié)點得父節(jié)點T eeN e, t e;四、測試第一組數(shù)據(jù)為
7、:爺爺,奶奶 ,爸爸 ,媽媽,我,二叔 ,二嬸 ,姐姐,三叔 ,三嬸,弟弟一共三代 11 個人 .其中爺爺就是根節(jié)點,奶奶為爺爺?shù)门渑?,同時也就是爺爺?shù)玫谝粋€后繼節(jié)點 .爸爸,二叔,三叔為爺爺?shù)米优?。爸爸得配偶就是媽?爸爸得子女就是我 .二叔得配偶就是二嬸,子女就是姐姐。三叔得得配偶就是三嬸,三叔得得子女就是弟弟 .進入程序之后,首先進行創(chuàng)建家譜,然后進行存盤,之后進行修改與查詢等步驟。退出程序在進入程序時, 進行讀盤 .之后在進行其她操作 ,程序完成之后退出即可。爺爺奶奶爸爸媽媽二叔二嬸三叔三嬸我姐姐弟弟圖 1 家族樹第一組數(shù)據(jù)測試截圖為:圖 顯示家譜圖 3 按照姓名查找家族成員圖 4存盤
8、第二組數(shù)據(jù)為:王老劉老王二張二王大李大王 小王 小一二圖 4 王家家族樹第二組數(shù)據(jù)測試截屏為 :圖 5 修改家族成員得信息圖 6 修改某個人得具體信息圖 7 按照生日查找某人圖 8 讀盤五、源程序 includ n l stdlib 、#incl d ifd WI 3#defineL system( ls )defin ipForSa e printf(”t t 輸入文件名及保存位置( eg:D: xample 、 xt) :)#defi e Ti ForRead p ntf( ” tt文件名及其路徑(eg:D:e am le、 xt):”)# l efine defineC E RTi Fo
9、rs stem(c ear)v p (tt輸入文件名及保存位置(eg:/he/xiong/exampl 、 txt ):define T ForR ad) rintf( t t 文件名及其路徑(g:hom /xi n /e amp e、txt):) nf# f ne max 5 / 保存得文件名得最大長度 nt LAG 0;int a=1 ;t pedf st uct ree ode?inChildNum ; 記錄這個人擁有幾個兒女ch r Na e 0; /記錄這個人得姓名?chab th y 20; /生日?int arri ge; /婚否(表示結(jié)婚,0 表示沒結(jié)婚 )?int ath;
10、/生死( 1 表示活著 ,0 表示過世 )ch ind; /標(biāo)示節(jié)點得種類有女G 男 B?char ad ss1 0 ;/住址? ar livem ss ge 50;/ 死亡日期 ( 如果其已經(jīng)死亡)stru t TreeN de *NextNode 20;/記錄這個人得兒女str ct T e N de *Parent;/記錄這個節(jié)點得父節(jié)點 TreeN de,* r;voi re tTree(T eeNode Tree);voOutP tAl (T eeNode*Tre );v d e ue(Treeod re) ;v id ubMenue1( reeode Tree);voidSub e
11、n e2(Treeo e re ); oid Cha ge(T ee de Tr e); oidAd e( TreeNod Tree) ;TreeNode Sea chTr e(TreeNode ee, harna e, in le g h) ;T eeNod* Search re 1(Tree od *T ee,c arbrth,i t ngth) ; oid uP tMesa( TreeNode * Tree ,c ar ame , int len th) ;void Ou P tMessa 1( Tree ode T ee,cha birth ,int le th) ; id Save
12、amily ( Tree de *r ot);void ea Faml ( Tre N de r t); tm in()/ 主函數(shù)? T eNod r ;/Tr eNode *Tr e1;? / re 1 & ( *Tr e) ;Tr e=( ree o e ) ll ( sizeof ( Tr e ode));? ee Parent = UL ;strcpy( Tr e- Nam ,0) ;Me ( Tree); eturn;void M nu( T eeN deTr e)/輸出主菜單/ Tre No e *Tr e1; ee1=&Tr ; /? rc;? ar name20;chabir
13、0;while ()? system(cls )”;? printf ( ” t);pr ntf(nntt * * 歡迎 使用 家族 管 理 系 統(tǒng) * * * nn );?print ( ttA :輸入家譜信息建立樹”) ;?p tB:輸出整個家譜信息” );?p i tf (” nttC:按出生日期查找某人) ;?printf (” tD :按姓名查找某人);printf( n : 修 改 某 個 人 得 信息”) ;?pri tf (” tF:存盤 ) ;? r ntf( ntG:讀盤);?ri tf ( n ttH:退出整個程序nt);?=getchar();?w tch(c)?cas
14、e A:T e e * N wNod ;? N wNode=( ree ode )ma loc( sizeof( Tr Node);? pri t( t 請輸入姓名: ” );? scanf( %s,Tre - Name);?pr tf( ”nt 請輸入性別女G 男 B : ) ;?getchar();? ca f( c”,( Tree-Kind );? ree- a ent=Ne N de;? T e e N L;/? r tTr ( re );/? p intf (” n t- - - - -家譜圖已經(jīng)建立成功 - -n);print ( - - -請按Ent鍵繼續(xù)操作 - );ge ch
15、ar();? br ak; ase B:? if(strcmp (T e - N me, ” ) =0)? ?p int (” nt 家譜圖得多叉樹尚未建立請先建立樹?gethar( );?b eak;n) ;?prin f( n t 整個家譜得主要信息如下O t utAl ( Tree) ;: );?getcha ();?break;?caseC :if ( st c p(T e bi h ay, 0) =0)? ?prin f ( n家譜圖得多叉樹尚未建立請先建立樹n) ;?g tchar( );?brea;? printf (” nt 請輸入您要查找得出生日期: ”);scanf( s”
16、, bir h) ;?OutP tMes age1( ear hTree1( Tre, brth,20 ), bi th, 2); r nt( n nt - - - - - -* -* -* - - -* - - -*- n t );getch() ;? bre k;?ase :?f (strcm(e - N me, ”)=0)?rintf (”家譜圖得多叉樹尚未建立請先建立樹” );?getchar();? ?bre k;? ?printf( n t 請輸入您要查找得人得姓名:nt);?scanf( ” %s,”nme);?O P Me ge( earc T e( T ee, name, 2
17、0),name, 2);? r tf ( n nt- -*- - - - - * - - -*- *- - *- - nt );?ge c ar() ;?br k;? ase E:? f( trcmp ( T e-Na e, 0 ”) =0 )? rin f( ” t 家譜圖得多叉樹尚未建立請先建立樹 e char( );n”);? ?br a ;?Ch n e(Tr e);? g t har();? r ak; ?case :? if (strc p(Tree-Nam , ” ) =0)?prin f(n t 家譜圖得多叉樹尚未建立請先建立樹n);? get h r() ;? ? brea;
18、? ? ?Sav a ly ( Tre );? e har( );?b eak;?case :? / if( trc p( ree Na e,” ) =0 ) ?pr tf (家譜圖得多叉樹尚未建立請先建立樹n );?get ar( );? br ak;? /Read am ly(&Tree) ;?getchar();? break;?c e H:? ?printf ( nnt - - - -本次服務(wù)到此結(jié)束 - - - -” );?pr ntf(” t- - - - -歡迎下次使用- -”);? t- - - - -謝謝 - - - - -n n”);? b eak;?cae n:? rea
19、k;def ult:? pri tf ( nnt - - -對不起!您得選擇不在服務(wù)范圍之內(nèi)! - - - - );?rintf( t - -請您再次選擇所需得服務(wù)項!- - -” );? ?prin f( nt - - - - -謝謝 - - - nt ” );? ?getc a () ; ea;?if( c=H | = f)? eak;?g tcha( ); oid CreatTre ( Tr eN de ode) /創(chuàng)建樹i i;? reeNode *New de;?N o e (T eeNode *) al o( sz of(Tree od )) ; No e e de0 =Ne No
20、de;No e-NextN de 0= ULL ;p intf( ” nt 請輸入出生日期: );s nf( ”s”, No - birth ay) ; ri tf( n t 請輸入家庭住址: ” ); getchar( );? nf(%s,Node addr ss);pri t( nt 請輸入就是否建在(1-就是或 0否 ): ); canf( ”d ,&(No - deat );?i (Node death=0)? ri tf( nt sc nf(請輸入去世日期:) ;, d ivemas ag) ;? lse if(N de- d ath= 1)prin f( n t 仍然建在” );?
21、ri f( ” n t 請輸入 %s 得配偶得姓名(輸入0 代表沒結(jié)婚): , N dee);?canf( s, Ne Node Name);?if ( strcm(Ne ode Name, ) !=0)?printf( t 請輸入配偶得出生日期: );?scanf( % ”,NewNod birthday );printf (” 請輸入家庭住址: );getcha( ); ?sca f( ” s” ,NewNode addres) ;?pr ntf( ” 請輸入就是否建在( 1就是或 0否 ): ); scanf( ” d, & ( NewN de- ath));? if( ewNode d
22、eath=0 )? ? rintf ( nt 請輸入去世日期:);?s nf(%s , ewNode ivemassa e) ;elif(Ne No e eah= 1 )? p i tf( nt 仍然建在”) ; ?pr ntf ( t 請輸入 s 得子女得數(shù)目(當(dāng)子女輸入時便停止輸入該成員有關(guān)信息ode me);): ,sc f ( d”, &( o e- C ild um);i( (N d ChildNu )= s c(NewNode N m,0)=0?r tur;)? if( ode- ind= N de-K = g)N w o e Kin =B ;? lse? N Node Ki G;
23、? N wNod Ch ld u =0; e N e ex No e 0= ULL ;?N e xt d 0 e Nod;? o e Ne No 0 ren=Node; / 孩子得父母? f r(i=1;iCh ldN m;i+ )? ? N de=( reeode * ) malloc(s z of ( reeNo e); a+;? printf ( t 請輸入 s 得第 d 子女得名字 :,Node N me,) ;?sc f( s ,New ode Na);?printf (” nt 請輸入得第%d 子女得性別女G 男 B: , Node- Nam ,i) ;? tchar();? sc
24、anf( ”c”,NewNode Kind );? NewNo -Chi Num -1;? ?N de Nex No e =NewN de;? ? tTr e(No NextNo e i); / 從子女得數(shù)目開始? oid OutPutAll ( Tr eNode *Tree)? nti, fl =0;?pr ntf(” n t * - * - * *- * * *- * * - );?p intf(”n姓名 : 出生日期: s 家庭住址: %s 性別: %c ,T e Name,Tr -b rt ay, Tr e addess, ree Kind ) ; f ( Tr e Ki d=G |T
25、r - ind= )gflag=1 ;?pr(女”); lsepri tf( ”男” );? rintf ( t 就是否健在(1健在, 0-去世 ):” );if ( ree dea h= ) printf ( 1 ”);else f ( Tre dea h=0 ) r ntf(0);( ! (Tr e Nex Node 0)?pr nt( nt 至今沒有配偶與子女n);?re r;if( lag=1 )? intf ( t 丈夫 姓名 :s”, Tree N x No 0- Nae); ? ls?pri tf(” nt 妻子 姓名 : s, T ee-N xtN e0 N me);? t(”
26、 就是否健在(1健在 ,去世 ): ); f(Tree dea h=1) p ntf( 1 );ei ( r death=0) p in (0”);?for(i=1;i hl Num; +)printf( ” 第 d 個子女得姓名: s出生日期 : s家庭住址 :%s性別 % ,i, reeNex N d i Name, ree xtNodei birthday, ee extNode ddre s,T ee Ne t odei Kind) ;?i (Tree- extNode Kind= G|Tree- NextN e Kind= g )? ?prin f( 女 );?else?print
27、(”男”) ;p i f(t 就是否健在 (1- 健在,去世) : ) ;if ( Tre deat =1 ) pri tf(1);el e if( Tree deth=0 ) printf(”)0;? rintf ( ” );for( i= ; i =T ee Ch l m; +)? utPutA l(Tree NextNode i);?Tr Node Se rcTree(TreeNode?i t ;?T ee ode NewN d;?if (strcmp( Tree me, name)=0) Tr,char name ,int ngth)? f(l ngth=0)?FLAG=1;?el e
28、? FLAG= ;return re ;?i ( Tr e NextNod =NUL )retur LL ;for( i; i =Tree-Ch N m; +)if (i= )? NewNode=SearchT ee( T e- N xtNode i , na e,) ; elseN wN d =S ar hT( ree Next ode i , a e, 20);? if ( e o! =N LL )? retrn NewNod ;?ret rn L;voi t tMe ge( TreeNode *Tr, har m, i t ength)?int lag 0,i;?TreeNod ewNo
29、 e; i tf( nnt”- - - - *- -* - - - - *- - - - - ) ; if(Tree= ULL )? r f( nn t該家譜圖中沒有這個人得信息請確認(rèn)就是否輸入錯誤 , am );return;?p in( n t 您所要找得人已經(jīng)找到信息如下所示:);? rint ( t 姓名 :%s 出生日期 : s 家庭住址 :%s性別 : c, am ,Tree brthday,Tree adress, re-K n );( ee Kind= |Tre Kind= )g? lag=1;/標(biāo)記她(她)得性別? printf ( 女 );? se? pri f (男 );
30、?p n( t 就是否健在( 1健在, 0去世) :); if(Tree- eath=1) pintf( ” 1” );?els if(T ee-de t =0)printf ( ” ”);N w o e=Tree-Par nt;?if ( L G= 1)? if ( fla =1)?print nt 她就是嫁入此家族得所以親生父母信息不在家譜內(nèi)包括? rin (” nt 丈夫姓名 :%s”, ewN de N me););?e s? ?p t 她就是入贅此家族得所以親生父母信息不在家譜內(nèi)包括pri tf( ” nt 妻子姓名 :%s” ,NewNo e Name) ; ) ;(( ew od
31、e Ch ldN m) ) /判斷她(她)就是否有孩子?p i tf( n得孩子得信息如下:) ;/ 輸出她(她)得孩子得信息f r( i= ; i =N wNode- ildNum ; +)?pr n f(” nt 姓名 :%s性別: , ewNod - ext o ei- me);if ( NewNod xtN de i Kind= G wN de K nd= )g ?pr ntf( 女 );? se? rintf (”男 );?rin f( t 就是否健在(健在,0-去世):”);?if ( Tre d ath=)printf ( ”1);?elsei( r e de th= 0)pri
32、nt ( ” ) ;?retu ;i(NewNode=N L )/判斷它就是不就是根節(jié)點如果就是得話就沒有父母兄弟信息?print (” n t 就是這個家譜圖里最年長得人, n me);?e se? if ( N Node-Kin G |NewNod ind= ) /判斷父親節(jié)點就是父親還就是母親? ? p n f( ”n t 母親 姓名: s, N wN e- am);/輸出她(她 ) 得父母親得信息?p in (nt 父親姓名 : s” ,N wNo e-e t od 0 - Name);? els? printf( n t 母親姓名 : s, e Node Next de 0-N me
33、) ;? prin f ( n t 父親 姓名: %,NewNo - a e);? if( ree ex Nod 0! =N LL) / 判斷她 ( 她)就是否有配偶? ?if(f ag=1) /輸出她(她)得配偶得信息printf( nt 丈夫姓名 :s”, T ee- extNod - Name);?elsei ? p intf( 妻子 姓名 :s,Tre NextNode ame) ; ( e Chi d um 0) 判斷她(她)就是否有孩子? ? intf(nt 得孩子得信息如下: ”); / 輸出她 (她 )得孩子得信息? ? f r(i=1 ; iNext ode i N me);? ? i ( Tree Ne tNode Ki d= | Tree Kind=g )? ?printf ( 女”);? ? else?pr nt(”男”);? p int (” t 就是否健在( 1-健在, 0去世) :”);? f (Tr death=)pr f ( ” 1”); lif ( T ee-d ah=0) rintf ( 0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年精密零件加工服務(wù)協(xié)議版B版
- 2024年美容SPA加盟店合同合同版
- 2024年鐵路快運包裹服務(wù)協(xié)議條款版B版
- 2025版精裝修住宅項目施工監(jiān)理合同范本
- 2024年版權(quán)質(zhì)押合同質(zhì)押權(quán)具體規(guī)定
- 2024年特色民宿物業(yè)托管服務(wù)合同示范3篇
- 2024年瓷磚買賣協(xié)議
- 2024年版實習(xí)生合作協(xié)議細(xì)則版
- 2024年股權(quán)轉(zhuǎn)讓協(xié)議:合伙人退出公司規(guī)定
- 2024年租賃購買協(xié)議:商業(yè)房產(chǎn)
- 2024屆安徽省物理八年級第一學(xué)期期末復(fù)習(xí)檢測試題含解析
- 全國主要城市氣象參數(shù)
- 宣城消防鋼樓梯施工方案
- 框架柱的配筋計算二
- IPC-7530A-2017 CN群焊工藝溫度曲線指南(再流焊和波峰焊)
- 初期支護設(shè)計驗算
- 石關(guān)煤礦緊急避險系統(tǒng)管理制度及技術(shù)檔案匯編
- 醫(yī)院醫(yī)務(wù)科科長崗位競聘答辯PPT課件(帶內(nèi)容)
- 2023年華僑、港澳、臺聯(lián)考高考語文試卷(含解析)
- 快上來吧要開車了課件
- 非織造學(xué)講義(大學(xué)期末復(fù)習(xí)資料)
評論
0/150
提交評論