




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、/*家譜管理系統(tǒng)任務(wù) :實現(xiàn)具有下列功能得家譜管理系統(tǒng)功能要求 : )、 輸入文件以存放最初家譜中各成員得信息,成員得信息中均應(yīng)包含以下內(nèi)容:姓名、出生日期、婚否、地址、健在否、死亡日期 (若其已死亡 ),也可附加其它信息、但不就是必需得。2)、實現(xiàn)數(shù)據(jù)得存盤與讀盤。3)、以圖形方式顯示家譜。4)、顯示第 代所有人得信息 .5)、按照姓名查詢,輸出成員信息(包括其本人、父親、孩子得信息)。6)、按照出生日期查詢成員名單。7)、輸入兩人姓名 ,確定其關(guān)系。8)、某成員添加孩子。 )、 刪除某成員 (若其還有后代 ,則一并刪除) 。0)、修改某成員信息 .1)、按出生日期對家譜中所有人排序。12)
2、、打開一家譜時,提示當天生日得健在成員。要求:建立至少30 個成員得數(shù)據(jù) ,以較為直觀得方式顯示結(jié)果,并提供文稿形式以便檢查界面要求 :有合理得提示,每個功能可以設(shè)立菜單,根據(jù)提示 ,可以完成相關(guān)得功能要求。存儲結(jié)構(gòu) :學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計,但就是要求相關(guān)數(shù)據(jù)要存儲在數(shù)據(jù)文件中。測試數(shù)據(jù) :要求使用1、全部合法數(shù)據(jù);2、局部非法數(shù)據(jù)。進行程序測試,以保證程序得穩(wěn)定.測試數(shù)據(jù)及測試結(jié)果請在上交得資料中寫明;#in lud s i 、 in lude stdlib 、 h#include i clude ti e、h #in e” ma、 ”#deine MAXN 100#dei e
3、MAMEM 1 0 fi e Elemtype c a= = = = =/ 樹 ype e truct B TNoemark;/ 標記intle el;char am 50;/ 姓名char bi thday50 ; / 生日char ddr ss MAXN;/ 住址bool marria e;婚否 (true 表示結(jié)婚, false 表示沒結(jié)婚 )boo live; / 建在 (tr e 表示活著 ,f lse 表示過世 ) oo se ; / 性別( tru 表示男 ,fals表示女 )c rl vema sa e 5 ;/ 死亡日期 (如果其已經(jīng)死亡)El mtyp d ta;/ tru
4、 t iTNode *lc,*r ;B TNode, *B ee;/ 樹得相關(guān)操作 ha nam te p 50; / 姓名c ar bi h ayte 50 ; / 生日c a address emp A N ; / 住址bo lmarr getemp ; / 婚否( true 表示結(jié)婚 ,fals表示沒結(jié)婚)boo ive mp; / 建在( true 表示或者 ,fa se 表示過世) ool sexte p;chal v ma sae empMA ;/ 死亡日期(如果其已經(jīng)死亡)har h;額外使用int level emp;/ 人得代數(shù)n th; / 顯示第 n 代人時要用c ar
5、r h ata50;char searcn me 0;intcount ;/ 計數(shù)ic oi e;/ 各種選擇int u e; iTre t mp;structB TNod istBiT e d ta;B TodeList next; iT o List i t ;/ - -v i r BTr e( iTree &T, IL* )/ 建立雙鏈二叉樹fsc n (in,%c/ print (”,& );n”,c ); f( h =)T = NULL;f canf( n, ” c” ,&ch);elseT= (BiTre )mallo ( si f( TNod ));/f nf( in, ” %s
6、 s%d%d”, n metemp , birthdaytem ,ad r sst, m rr g temp, livet mp) ;fscan(in, ”s”, n m temp) ;str ( a, nam t mp );fscanf(in , ” %s” ,birhdaytemp);str py(T b rthday , bi hdatemp ) ;f can (in,”% ”,addresstemp );strc (T add ess,addres emp);f can( in, ”d% d%d”,& r iage emp , l v te p, evltemp , & e te );
7、T m riae marriage emp; -liv = li ete;T lev l= evelt mp;T s= sextemp;/ pr ntf(” %s s% d% n”, name emp , ir hdaytem ,addres temp , mar iget ,liv t mp) ;i(! lietem )fsc n (n,%s,l ve as ag t p);/prin f( ” %s ,li emassaget mp );if(!T liv)st c y(T- i mssage, li e assage e p); sca( in, c”,&ch);Creat iT e(
8、T lc,in);CeatBiTr e( T c,in); dP intInfo ( B Tree T) rintf( ” % 0s 出生于 :%-s” ,T- a e, - rt ay, T ddress) ;if(T marriag )printf ( t 已婚” );if(! ma rage) rint (t 未婚) ; (T- ex) ri tf ( 男 );i (!T- se ) rint (t 女” );if( T ve)p n f( t 健在 n ”) ;i( !T l ve)pt (去世于:%sn”, Tivemassag );voidPreO eTraerse_recursi
9、on( i ree T) / 遞歸先序遍歷(檢查建樹就是否正確)?/ pri( ”P eOr erTraverse_ ecusionn ) ;if( T)? * int (”% 10s 出生于: % 0s% 10s”,T ame,T-bi day,dd e s); f ( ma i g)pr ntf( ”已婚 ); (!T- m rri ge)pr ntf(t未婚” ); (T x)print ( t 男 );if(!T- se) rin f( 女”) ; if( liv)printf( ” t 健在 n) ;if(!T liv )pr ntf (” 去世于 : , ivemas age);
10、/ Pr ntI f( );Pr Order vrse_ ecu sion( T l );?P O d T erse_ e urs on( T- rc);voidShowFamil Tree(Bi ee ) / 以圖形得方式顯示家譜int, v;Bi re p; T; f( T)lev T- lev l;for(i=0; i v; + )prin ( ”t ”);printf (” %s ,” name ) ;if(l )p - lc;print ( %5% n,p name);if( p- rc)p = c;Shw amilyTree( );elp tf(未婚 ) ; ( rc) = T-
11、c;Sho a ily e( );voS w th( BiTre T)顯示第代所有人得信息 f(T)if(T- lev l = N)P in I o(T) ;/ p intf( ” %0 %- 0 %10s 5d%5 %5d n , T am ,Tbir hday, T address,T marr ge,T v, sex);count+ ;?S owNth ( T lc) ;?Sho N (T rc) ;void earchByNam(BiTree ) / 按照姓名查詢 ,輸出成員信息(包括其本人、父親、孩子得信息 )。不能查詢祖先信息if(T)?if(T lc) (T- lc rc) m
12、= lc-rc;whi e( emp)i (strcmp ( tep- ame,sea chnam ) = 0)c un;pri tf( n 此人得信息為:n );PrintInf ( tep );/printf ( %1 s -0 %- 0s 5d 5d d n”, mp ame,t mp-birt da , ema dr ,t - arriage,t mp ive , t m se ); in f( ”此人父母得信息為: n ”);PrintInfo(T) ;PrintInfo(T c) ;/ rin ( ”% 10s% 0s%0s%5 %5d 5n, e,T rt a ,T addres
13、s,Tmarr a e,T live,T- sex) ; /print ( ” -10s%10 10 5d%n” ,T cname, l bir hd,T-lcaddre ,Tlc-marriage,T c-l e,T c-s x);if( !te l vema sage) r ntf( 此人還沒有妻室elsn ” );printf (”此人妻子得信息為: n);rin nfo ( e p-lc);/ prin f( ”%-10 %10s 0s%5d%5dn”, p lcname, e -l irthda ,t mp lc dress,temp l m riage,tem lc- live,
14、mp sx);if(temp lc- c)printf( 此人孩子得信息為: );te p= tem -lc rc; hile( temp)Pri t o(t m) ;/pr ntf( 10s% 0s% 0s% d 5d%5 , e p- na ,tem -birthday, empad ess,temp rri g, e p ve,tem sex); em = emp- c;r tu n;elsetemp = temp rc;? S achBy e( lc);? earch yN m( T-rc);?voSearchByBirthda(BiTree ) / 按照出生日期查詢成員名單 f(T)
15、i( stcmp(Tbirth ay, se hdata) = 0)PrintIn () ;/pri t ( %-1 s%-1 s%10 %5d% dn” ,T a e, T r h a ,T- ddress, T marri ge,T li e, T-se );c u t+; ?Sea chByBirthday ( T lc) ;?Se rc By irthday ( rc);?void AddChi d( iT&T)某成員添加孩子 f( T)? (st p( - na e, earch am)=0)coun ;if( ! lc) r n f(”該成員還沒有結(jié)婚,不能添加孩子n ); etu
16、rn;if(!T- e )p int (”不能為該家譜中得女性添加孩子) ;return ;el etem =( B Tre)ma oc(s zeof(BiTNode));pr ntf( 請輸入添加孩子得姓名” );s a( %s,t mp-n m );pri tf( 請輸入添加孩子得出生年月(格式形如:scanf( %s” ,temp- irthday); r n f ( 請輸入添加孩子得家庭住址n) ;sc n (%s, temp adde s);010 1 1)n ”);pr ntf( ”請輸入添加孩子得婚姻狀況0(0 表示未婚, 1 表示已婚” );sca f( ” %d” ,&tmp
17、 riage);p in f(”請輸入添加孩子得在世情況0/ (0表示去世,1 表示在世)” ); canf( ” ,&te pl ve);i (! e p live)printf (”請輸入添加孩子得去世時間(格式形如 : 20 01)n); c nf( %”, t mp- livemassa e);p ntf( 請輸入添加孩子得性別0/1( 0 表示女,1 表示男 )n ”);s anf( % , tem - sex); emp le = - eve + ; temp rc - rc;t p lc = ULL;T r temp;prin f( ”孩子添加成功n ”) ;return ; ?
18、AddChld(Tlc);? AddC il (T c) ;?v id ddW fe( iTr e &T) / 某成員添加妻子if(T)if(sr mp(T name,sear hna e) = 0) ount+ ; f( Tlc)pri t (”該成員已有妻子 ,可以通過修改得方式替換該妻子 n ); turn; lsetemp (BiTre)m lloc( sizeo (BiTNde)) ; r ntf( 請輸入添加妻子得姓名 n ”) ; scanf( ”%s,temp-na e);printf( 請輸入添加妻子得出生年月(格式形如:2010 -1)n ” );scanf( s” ,te
19、mpbi hday);p n ( 請輸入添加妻子得家庭住址”) ;scanf( , t ddre ); rintf( ”請輸入添加妻子得婚姻狀況0 1 ( 0 表示未婚 ,1 表示已婚 )n ” );s an (%d ” ,&tmp m ri ge);p ntf ( 請輸入添加妻子得在世情況(0 表示去世 ,1 表示在世)n ” );sca f(%d ”, & emp- lie) ;if(!te p- liv )print ( 請輸入添加妻子得去世時間(格式形如: 01 -1 );scanf( s,temp liv assage); intf( 請輸入添加妻子得性別0/1( 0 表示女,sc
20、n ( ” d, temp sex) ;1 表示男 )n) ; em eve= T lv l;temp-l = N L; emp rc = NULL; l emp;T ma r a e= t ;p ntf (”妻子添加成功n);return; ?A Wif (- lc);AddW fe(T c);v id Dl eByN m( Bi ee &T) / 刪除某成員 (若其還有后代 ,則一并刪除 )?/p ntf(” PreOderTr ver e_ ecn” );i(T)i (s cmp(T- me , ear hn me)0)c nt+ ;T NU L;re urn; /printf(”%10
21、s%- 0 10s%5d%5d% ,T-name,T- birthda , dress,T-marr g ,T live,Tsex);? el te y a e(T lc);? Dele ByName(T c);?v id FixLevel( iTre T)if(T)i( strcmp (Tname, sea chname) = 0)count=T lvel;FixLevel(T-lc); i e el( T- c) ;vo d FixRela i n(BiTree T)/ 輸入兩人姓名,確定其關(guān)系i t levo,lev ; har l e 5 ,levtw 5 ;prin f(”請輸入第一
22、個人得姓名n );s a f( %”,sarc ame) ;strc y(lev ne,s r hna e) ;F xLevel(T);l vo =c unt;if( levo=-1)prin f(”家譜無此人,請從新進入 n);re u n;pr n f(”請輸入第二個人得姓名n ” );scanf( % ”, a hna ); rcp (levtwo, earc name);F xL el() ;levt= unt ;if( levt = -1)printf( 家譜無此人 n ” );retur ;if(l o lev)p int (%s 比 大% 輩 n ” ,levoe, evtwo,
23、le t le o);el eif(l vo le t )pr ntf( s 比 %s大d 輩 n,levtwo , l v ne, evo-l t) ; ls f(le = l vt)p ntf(%s 與%s 平輩 n,l on ,evt );v d ShowAmend ( )prin (” 1、修改姓名 n”) ;printf (” 2、修改出生年月n ) ;pr ntf(3 、修改家庭住址n” ); nt ( 4、修改婚姻狀況 );p ntf (”、修改在世情況n ”) ;pri t( 6、修改性別 n ” );pr tf(7 、返回上一級 n );printf( 請輸入選項 ( 7):
24、 ” );void A end( iTree & )w il()syste( cl);Show me d() ;sca f(%d ”, &hoice ); i c( c oi e)ca e 1:printf( 請輸入修改后得姓名:);sc nf( ,T am );brea ; a e :pr ntf (”請輸入修改后得出生年月: );s anf( ”, Tbirt d y); reak;cse3:p itf( 請輸入修改后得住址: ”);scanf( ” %s” ,Taddr ss);br ak;case 4:p intf( ”請輸入修改后得婚姻狀況:” );scan( ”% ,&T- mar
25、riage ) ; eak;ca e:pr n f( 請輸入修改后得在世情況: );s anf( ” ”, l ve);i (! live)pri tf( 請輸入本人得過世時間:” ); canf(%s ”,- v ma sage);break;case 6:printf( 請輸入修改后得性別( 1 表示男 ,0 表示女) : ); canf( ” %d,”&T sex);case 7:re rn;default :printf( ”輸入非法 ,請重新輸入 n);b eak;void Am Inf ( iTre& ) / 修改某成員信息。if( )i ( trc p(T nam , rc n
26、me) ) ount+ ;DoAm d(T); et rn;? AmendInfo ( l ) ;? Amend nf ( rc);void Sequen e(BiTr e T)/ 按出生日期對家譜中所有人排序。if()? iT odList * p;B TNo Li ;t mp = (BiT o e i t ) malloc( izeof( BiT od Lis)) ; p = ist;/w l (p )for( is ; (pnext!= UL)& ( trcmp( ext at bir da ,te pdata b ay) 0); p -next) ;te p n t p n xt;p-
27、 ne tem ;?S qu n e(T- lc);?S qu n( c);?void r ntSequence( BiTree T) iTNo eLis *p; = ist;Seq e c( T);prin f(” tttt排序結(jié)果 nn ) ;Print ine ( );pr nt ( ” ”);while( ext! = N LL)pintf(” ); rint nfo( ne t da a);/p tf( t” 10%10s%-10 5d% d%dn,p n xt-data-n m ,p- xt a a-bi t y,p next d a-addr ss,pn xta a- mrria
28、 e,p n xt- data l ,p- next-da a s x); = p n xt; rint ( n ); PrintLine( );void LocateTime() ime_t t= ime();strftime( i t daytemp,6 , ” %Y%m %d” ,loc t me(&t);v id irthTo ay(BiTre ) / 打開一家譜時,提示當天生日得健在成員。?if(T)?if(st p( bi t d ,bir ytemp) ) oun +;printf ( %s n, T-nam);?Bi thT ay(T c);?B rthToday( T );?
29、v id S o enu() ri Bat();print ( ” ”) ;Pri tL ne(); rin ( ”n) ;p intf (” t t歡迎進入家譜管理系統(tǒng)nn) ;printf (”printf( ” r ntf ( 1、顯示今天生日成員3、顯示第 n 代所有人得信息5、按出生日期查找成員、顯示家譜 n );4、按姓名查找成員”6、為成員添加孩子);n ” );pri tf ( 7 、為成員添加妻子8、刪除成員n ); r tf(”9、修改成員信息10、確定兩個人得關(guān)系” ); rint (11、按出生年月排序家譜成員12、退出程序n ”);pr ntf( n);”P intL
30、i e() ;p ntf( ”n” ); rin(”已經(jīng)從文件讀入初始家譜信息,請輸入您得操作(1 2): ) ; t m i (vi )inchoi ; I n; n o en( 、 o , r );/ Pre derTra er e_r ursion(T); hile(1) s m(c s) ; how en ();scan( ” %d” ,&choice);gtch r();system( cls); wit h( c oice)case 1:LocateTi e();count 0; rthT d (T) ;if( o t = 0)print (”今天家譜中沒有成員過生日n);syst
31、 m( se”) ;case re k;:ShowFaily ree() ; s m(p use) ;br ak;case 3:printf( 請輸入需要查詢第幾代人count 0;s a (%d, N );ShowN () ; f( count= 0): ”) ;printf(第代尚未有人.n, h) ; ystem( ” paus ”);break;cas :printf( ”請輸入要查詢?nèi)说眯彰? ); canf(%s”,sea h ame);if(strc ( T ame, earchnam ) = 0)pr n f( 此人為家譜得祖先,其信息為: n ” );?pri f( 10 - 0s -1 %5d5d 5 n , Tnam ,T birthda , - ddre , marr age,T- live,T se );ri tf( 她妻子得信息為: n );pr ntf(% 10s%- 0 -1 s%5d%5 % d n ,T lcn me,T c b t ay, address, lcmar iage,T c ve, lc-sex) ; em = T- lc; if(t mp- c)pr ntf( 她孩子得信息為:” );t mp =temp rc;while( emp)p ntf(
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中考語文作文預(yù)測范文6篇及題目
- 抖音商戶跨部門協(xié)作項目推進辦法
- 全球汽車零部件行業(yè)自動化生產(chǎn)技術(shù)發(fā)展趨勢報告
- 八大城市物流企業(yè)物流園區(qū)投資熱點與風(fēng)險預(yù)測研究報告
- 2024-2025學(xué)年福建省三明市梅列區(qū)梅列、永安七上數(shù)學(xué)期末調(diào)研模擬試題含解析
- 北京十一學(xué)校2024年化學(xué)九上期末統(tǒng)考模擬試題含解析
- 2024-2025學(xué)年江蘇省無錫市河塘中學(xué)化學(xué)九年級第一學(xué)期期末質(zhì)量檢測模擬試題含解析
- 重慶三峽學(xué)院《園林資源及應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 藥店干貨知識培訓(xùn)課件
- 共享出行信用評價體系構(gòu)建與平臺運營效率提升2025報告
- 復(fù)式公寓分割協(xié)議書
- 海上風(fēng)電運維船安全
- 生產(chǎn)經(jīng)營單位事故隱患內(nèi)部報告獎勵機制實踐與案例
- 2025年江西省金控科技產(chǎn)業(yè)集團社會招聘4人(第一批次)筆試參考題庫附帶答案詳解
- 菜園開墾種植合同協(xié)議
- 紡織品紗線疵點分析與處理考核試卷
- AI賦能下的護理專業(yè)教育與培訓(xùn)革新
- 瓦楞紙板生產(chǎn)線操作機長培訓(xùn)講義
- 2025電子病歷書寫基本規(guī)范
- 全年病蟲害防治明細表
- 林權(quán)林地轉(zhuǎn)租協(xié)議書
評論
0/150
提交評論