數(shù)據(jù)結構家譜管理系統(tǒng)范本_第1頁
數(shù)據(jù)結構家譜管理系統(tǒng)范本_第2頁
數(shù)據(jù)結構家譜管理系統(tǒng)范本_第3頁
數(shù)據(jù)結構家譜管理系統(tǒng)范本_第4頁
數(shù)據(jù)結構家譜管理系統(tǒng)范本_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)結構家譜管理系統(tǒng)寧波大紅鷹學院信息工程學院課程設計報告項目名稱: 家譜查詢系統(tǒng)項目組長:白鈺琦項目成員:徐程凱、徐海域、項鴻偉班級名稱:10計科1班專業(yè)名稱:計算機科學與技術完成時間:12月1日信息工程學院制目錄一、案例描述 -3-1、總體描述 -3-2、模塊描述 -3-二、設計思路 -3-三、程序設計 -4-1、數(shù)據(jù)結構描述 -4-2、主函數(shù)及其流程圖 -4-3、源程序 -5-四、調(diào)試與分析 -14-1、主菜單 0\h-14-2、顯示家譜信息 1\h-15-3、顯示家譜中第n代人所有信息 2\h-16-4、按姓名查找某人并相應輸出 3\h-16-5、按出生日期查找家譜成員信息 4\h-16-6、為家譜中成員添加孩子信息 5\h-17-7、為家譜中成員添加妻子信息 6\h-17-8、刪除家譜中成員及其后代信息 7\h-18-9、修改家譜中成員信息 8\h-18-10、確定家譜中兩個成員關系 9\h-19-11、按出生年月排序家譜 0\h-19-五、設計總結 1\h-20-1、完成情況 2\h-20-2、心得體會 3\h-20-一、案例描述1、總體描述家譜管理系統(tǒng)是查詢家譜信息必不可少的一部分,利用家譜管理系統(tǒng)能夠清楚的查詢到家族成員的詳細信息。該家譜管理系統(tǒng)是經(jīng)過樹來實現(xiàn)的。本程序具有插入、查找等功能,能夠?qū)崿F(xiàn)存放家譜中各成員的信息。程序的操作界面簡潔美觀,易于操作。本程序運用了函數(shù)、循環(huán)、樹等知識來進行設計,實現(xiàn)系統(tǒng)和數(shù)據(jù)結構設計。2、模塊描述1).輸入文件以存放最初家譜中各成員的信息,成員的信息中均應包含以下內(nèi)容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必須的。2).實現(xiàn)數(shù)據(jù)的存盤和讀盤。3).以圖形方式顯示家譜。4).顯示第n代所有人的信息。5).按照姓名查詢,輸出成員信息(包括其本人、父親、孩子的信息)。6).按照出生日期查詢成員名單。7).輸入兩人姓名,確定其關系。8).某成員添加孩子。9).刪除某成員(若其還有后代,則一并刪除)。10).修改某成員信息。11).按出生日期對家譜中所有人排序。12).打開一家譜時,提示當天生日的健在成員。樹操作模塊主程序模塊菜單選擇模塊樹操作模塊主程序模塊菜單選擇模塊圖1模塊調(diào)用示意圖二、設計思路本程序要求模塊化管理,分成菜單函數(shù)、創(chuàng)立函數(shù)、添加函數(shù)、查找函數(shù)、控制各個部分從而將程序簡單化出來分析。本程序的主要功能是:創(chuàng)立數(shù)據(jù):創(chuàng)立各相關數(shù)據(jù),例如創(chuàng)立家譜信息。添加數(shù)據(jù):增加家譜成員孩子信息。查詢信息:按照姓名來查詢成員信息,還能夠經(jīng)過輸入出生日期來查詢該家譜信息。退出系統(tǒng):程序編譯結束后退出系統(tǒng)。三、程序設計1、數(shù)據(jù)結構描述本程序首先定義了結構體,定義了lc,rc兩個指針域;定義如下:typedefstructBiTNode{intmark;//標記intlevel;charname[50];//姓名charbirthday[50];//生日charaddress[MAXN];//住址intmarriage;//婚否(true表示結婚,false表示沒結婚)intlive;//建在(true表示活著,false表示過世)intsex;//性別(true表示男,false表示女)charlivemassage[50];//死亡日期(如果其已經(jīng)死亡)Elemtypedata;//structBiTNode*lc,*rc;}BiTNode,*BiTree;2、主函數(shù)及其流程圖LocateTime();LocateTime();ShowFamilyTree(T);ShowFamilyTree(T);ShowNth(T);ShowNth(T);SearchByName(T);SearchByName(T);退出SearchByBirthday(T);Main退出SearchByBirthday(T);MAddChild(T);AddChild(T);AddWife(T);AddWife(T);DeleteByName(T);DeleteByName(T);圖3家譜管理流程圖申請節(jié)點,inti=1申請節(jié)點,inti=1分配節(jié)點輸入成員名Tree->Name,給定Node->Num輸入成員名Tree->NameCreatTree(Node->NextNode[i]);i<=node->numYN結束CreateeTree()()圖4創(chuàng)立家譜流程圖3、源程序#include<stdio.h>#include<string.h>#include<stdlib.h>#include<string.h>typedefstructpnode{charmale[10];charfemale[10];intn;structpnode*fchild,*brother;}pnode,*ptree;voidcreatfamily(ptree,FILE);voidpreorder(ptreep);voidshow(ptreep);intMenu(){ system("color1f"); system("modecon:cols=76lines=35"); inti; printf("******************歡迎使用愛新覺羅家族管理系統(tǒng)*****************\n\n"); printf("請選擇:\n"); printf("\n"); printf("1.讀取一個家庭關系\n"); printf("\n"); printf("2.顯示一個家庭關系\n"); printf("\n"); printf("3.查找成員\n"); printf("\n"); printf("4.添加新成員\n"); printf("\n"); printf("5.修改成員\n"); printf("\n"); printf("6.保存\n"); printf("\n"); printf("7.退出系統(tǒng)\n\n\n"); printf("\n"); printf("********************************************************************\n\n"); printf("輸入1~6之間的數(shù)字選擇相應功能:"); scanf("%d",&i); returni;}ptreecreatfamily(FILE*fp){if(!feof(fp)){ ptreep; p=(ptree)malloc(sizeof(pnode));charfname[10],mname[10]; inti; fscanf(fp,"%s%s%d\n",fname,mname,&i); if((strcmp(fname,"n")==0)&&(strcmp(mname,"n")==0)&&(i==0)){ p=NULL;returnp;} else {strcpy(p->male,fname);strcpy(p->female,mname);p->n=i;printf("讀取成功\n");p->fchild=creatfamily(fp);p->brother=creatfamily(fp); returnp;}}}voidPreOrder(ptreep){if(p) {show(p); PreOrder(p->fchild); PreOrder(p->brother); } }voidshow(ptreep){printf("名字配偶第幾代\n"); printf("%2s%6s%d\n",p->male,p->female,p->n); }voidsearch(ptreep,charname[]){ if(p) {if(strcmp(p->male,name)==0){ show(p); getchar(); getchar();}search(p->fchild,name); search(p->brother,name);}}voidadd(ptreep,charname[]){charfname[10],mname[10];inti; if(p) {if(strcmp(p->male,name)==0){ printf("名字配偶第幾代\n"); scanf("%s%s%d",fname,mname,&i);p->fchild=(ptree)malloc(sizeof(pnode));strcpy(p->fchild->male,fname);strcpy(p->fchild->female,mname);p->fchild->n=i;p->fchild->fchild=NULL;p->fchild->brother=NULL;}add(p->fchild,name); add(p->brother,name);}}voidgai(ptreep,charname[]){charfname[10],mname[10];inti; if(p) {if(strcmp(p->male,name)==0){ printf("名字配偶第幾代\n"); scanf("%s%s%d",fname,mname,&i);strcpy(p->male,fname);strcpy(p->female,mname);p->n=i;}gai(p->fchild,name); gai(p->brother,name);} }voidsave(ptreep,FILE*stream){ if(p){ fprintf(stream,"%s%s%d",p->male,p->female,p->n);save(p->fchild,stream);save(p->brother,stream);}else{ charout[20]="nn0"; fprintf(stream,"%s\n",out);}}intmain(){intstatus;charname[10];ptreep;FILE*fp=fopen("lmx.txt","r+"); while(1){ status=Menu(); switch(status) {case1:p=creatfamily(fp);getchar();getchar(); break; case2: PreOrder(p); getchar(); getchar(); break; case3: printf("請輸入搜索的名字\n"); scanf("%s",name); search(p,name); break; case4: printf("請輸入要孩子的人\n"); scanf("%s",name); add(p,name); break; case5: printf("請輸入要修該的人\n"); scanf("%s",name); gai(p,name); break; case6: save(p,fp); getchar(); getchar(); break; case7: printf("\n感謝使用本系統(tǒng)\n"); fclose(fp); fclose(fp); exit(0);//如果選擇5,則退出循環(huán)終止程序 break; default: printf("\n您選擇有誤\n"); getchar(); } }}四、調(diào)試與分析1、主菜單家譜管理系統(tǒng)的主界面2、顯示家譜信息讀取家譜信息3、顯示家譜中第n代人所有信息顯示家譜中第n代人所有信息4、按姓名查找某人并相應輸出查詢家譜成員信息的界面5、為家

溫馨提示

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

最新文檔

評論

0/150

提交評論