數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)家譜管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、寧波大紅鷹學(xué)院信息工程學(xué)院課程設(shè)計(jì)報(bào)告項(xiàng)目名稱: 家譜查詢系統(tǒng)項(xiàng)目組長(zhǎng):白鈺琦項(xiàng)目成員:徐程凱、徐海域、項(xiàng)鴻偉班級(jí)名稱:10計(jì)科1班專業(yè)名稱: 計(jì)算機(jī)科學(xué)與技術(shù)完成時(shí)間: 2012年12月1日 信息工程學(xué)院制目 錄一、案例描述- 3 -1、總體描述- 3 -2、模塊描述- 3 -二、設(shè)計(jì)思路- 3 -三、程序設(shè)計(jì)- 4 -1、數(shù)據(jù)結(jié)構(gòu)描述- 4 -2、主函數(shù)及其流程圖- 4 -3、源程序- 5 -四、調(diào)試與分析- 14 -1、主菜單- 14 -2、顯示家譜信息- 15 -3、顯示家譜中第n代人所有信息- 16 -4、按姓名查找某人并相應(yīng)輸出- 16 -5、按出生日期查找家譜成員信息- 16 -

2、6、為家譜中成員添加孩子信息- 17 -7、為家譜中成員添加妻子信息- 17 -8、刪除家譜中成員及其后代信息- 18 -9、修改家譜中成員信息- 18 -10、確定家譜中兩個(gè)成員關(guān)系- 19 -11、按出生年月排序家譜- 19 -五、設(shè)計(jì)總結(jié)- 20 -1、完成情況- 20 -2、心得體會(huì)- 20 - 一、案例描述1、總體描述家譜管理系統(tǒng)是查詢家譜信息必不可少的一部分,利用家譜管理系統(tǒng)可以清楚的查詢到家族成員的詳細(xì)信息。該家譜管理系統(tǒng)是通過(guò)樹(shù)來(lái)實(shí)現(xiàn)的。本程序具有插入、查找等功能,可以實(shí)現(xiàn)存放家譜中各成員的信息。程序的操作界面簡(jiǎn)潔美觀,易于操作。本程序運(yùn)用了函數(shù)、循環(huán)、樹(shù)等知識(shí)來(lái)進(jìn)行設(shè)計(jì),實(shí)現(xiàn)

3、系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。2、模塊描述1). 輸入文件以存放最初家譜中各成員的信息,成員的信息中均應(yīng)包含以下內(nèi)容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。2). 實(shí)現(xiàn)數(shù)據(jù)的存盤(pán)和讀盤(pán)。3). 以圖形方式顯示家譜。4). 顯示第n 代所有人的信息。5). 按照姓名查詢,輸出成員信息(包括其本人、父親、孩子的信息)。6). 按照出生日期查詢成員名單。7). 輸入兩人姓名,確定其關(guān)系。8). 某成員添加孩子。9). 刪除某成員(若其還有后代,則一并刪除)。10).修改某成員信息。11).按出生日期對(duì)家譜中所有人排序。12).打開(kāi)一家譜時(shí),提示當(dāng)天生日的健

4、在成員。樹(shù)操作模塊 主程序模塊 菜單選擇模塊圖1 模塊調(diào)用示意圖二、設(shè)計(jì)思路本程序要求模塊化管理,分成菜單函數(shù)、創(chuàng)建函數(shù)、添加函數(shù)、查找函數(shù)、控制各個(gè)部分從而將程序簡(jiǎn)單化出來(lái)分析。本程序的主要功能是:創(chuàng)建數(shù)據(jù):創(chuàng)建各相關(guān)數(shù)據(jù),例如創(chuàng)建家譜信息。添加數(shù)據(jù):增加家譜成員孩子信息。查詢信息:按照姓名來(lái)查詢成員信息,還可以通過(guò)輸入出生日期來(lái)查詢?cè)摷易V信息。退出系統(tǒng):程序編譯結(jié)束后退出系統(tǒng)。三、程序設(shè)計(jì)1、數(shù)據(jù)結(jié)構(gòu)描述 本程序首先定義了結(jié)構(gòu)體,定義了lc,rc兩個(gè)指針域; 定義如下:typedef struct BiTNodeint mark;/標(biāo)記 int level; char name50;/姓名

5、 char birthday50;/生日 char addressMAXN;/住址 int marriage;/婚否(true表示結(jié)婚,false表示沒(méi)結(jié)婚) int live;/建在(true表示活著,false表示過(guò)世) int sex;/性別(true表示男,false表示女) char livemassage50;/死亡日期(如果其已經(jīng)死亡) Elemtype data;/ struct BiTNode *lc,*rc; BiTNode,*BiTree;2、主函數(shù)及其流程圖LocateTime();ShowFamilyTree(T);ShowNth(T);SearchByName(T)

6、;退出SearchByBirthday(T);MainAddChild(T);AddWife(T);DeleteByName(T);圖3 家譜管理流程圖申請(qǐng)節(jié)點(diǎn),int i=1分配節(jié)點(diǎn)輸入成員名Tree->Name,給定Node->Num輸入成員名Tree->NameCreatTree(Node->NextNodei);i<=node->numYN結(jié)束CreateeTree()()圖4 創(chuàng)建家譜流程圖3、源程序#include<stdio.h> #include<string.h>#include<stdlib.h>#in

7、clude<string.h>typedef struct pnode char male10; char female10; int n; struct pnode *fchild,*brother;pnode,*ptree;void creatfamily(ptree ,FILE );void preorder(ptree p);void show(ptree p);int Menu()system("color 1f");system("mode con:cols=76 lines=35");int i;printf("* 歡

8、迎使用愛(ài)新覺(jué)羅家族管理系統(tǒng)*nn");printf("請(qǐng)選擇:n");printf(" n");printf(" 1.讀取一個(gè)家庭關(guān)系n");printf(" n");printf(" 2.顯示一個(gè)家庭關(guān)系n");printf(" n");printf(" 3.查找成員n");printf(" n");printf(" 4.添加新成員n");printf(" n");printf(&qu

9、ot; 5.修改成員n");printf(" n");printf(" 6.保存n");printf(" n");printf(" 7.退出系統(tǒng)nnn");printf(" n");printf("*nn");printf("輸入16之間的數(shù)字選擇相應(yīng)功能:");scanf("%d",&i);return i;ptree creatfamily(FILE *fp) if(!feof(fp) ptree p;p=(ptr

10、ee)malloc(sizeof(pnode); char fname10,mname10; int i; fscanf(fp,"%s %s %dn", fname,mname,&i); if(strcmp(fname,"n")=0) && (strcmp(mname,"n")=0) && (i=0) p=NULL; return p; else strcpy(p->male,fname); strcpy(p->female,mname); p->n=i; printf(&qu

11、ot;讀取成功n"); p->fchild=creatfamily(fp); p->brother=creatfamily(fp); return p; void PreOrder(ptree p) if(p) show(p);PreOrder(p->fchild);PreOrder(p->brother); void show(ptree p) printf("名字 配偶 第幾代n"); printf("%2s %6s %dn",p->male,p->female,p->n);void search(

12、ptree p,char name) if(p) if(strcmp(p->male,name)=0) show(p); getchar(); getchar(); search(p->fchild,name);search(p->brother,name); void add(ptree p,char name) char fname10,mname10; int i; if(p) if(strcmp(p->male,name)=0) printf("名字 配偶 第幾代n"); scanf("%s %s %d",fname,mn

13、ame,&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); void gai(ptree p,char name) char fnam

14、e10,mname10; int i; 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); void save(ptree p,FILE *stream)if(p) fprintf(strea

15、m,"%s %s %d",p->male,p->female,p->n); save(p->fchild,stream); save(p->brother,stream); else char out20 = "n n 0" fprintf(stream,"%sn",out); int main() int status; char name10; ptree p; FILE *fp= fopen("lmx.txt","r+"); while(1)status=Me

16、nu();switch(status) case 1: p=creatfamily(fp); getchar(); getchar();break;case 2:PreOrder(p);getchar();getchar();break;case 3:printf("請(qǐng)輸入搜索的名字n");scanf("%s",name);search(p,name);break;case 4:printf("請(qǐng)輸入要孩子的人n");scanf("%s",name);add(p,name); break;case 5:printf

17、("請(qǐng)輸入要修該的人n");scanf("%s",name);gai(p,name);break;case 6: save(p,fp); getchar(); getchar();break;case 7: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、顯示家譜中第

18、n代人所有信息顯示家譜中第n代人所有信息4、按姓名查找某人并相應(yīng)輸出查詢家譜成員信息的界面5、為家譜中成員添加孩子信息為家譜中成員添加孩子信息6、修改家譜中成員信息修改家譜中成員信息五、設(shè)計(jì)總結(jié)1、完成情況進(jìn)程第1次課第2次課第3次課第4次課負(fù)責(zé)人項(xiàng)目計(jì)劃全體成員總體方案全體成員編寫(xiě)代碼徐程凱實(shí)驗(yàn)報(bào)告徐海域視頻制作白鈺琦整體完善全體成員答辯全體成員2、心得體會(huì)白鈺琦:從這個(gè)項(xiàng)目中,我懂得了代碼編寫(xiě)能力的提高不是一天兩天的事,而是一個(gè)日積月累的過(guò)程。在不斷地編寫(xiě)調(diào)試,是在提出問(wèn)題解決問(wèn)題的過(guò)程中慢慢提升起來(lái)的。所以,自己決定向編程高手看齊,多編程多提問(wèn)多思考。在今后的時(shí)間里更加努力地學(xué)習(xí)。徐程凱:在這個(gè)項(xiàng)目里我做了對(duì)家譜管理的系統(tǒng)分析。剛開(kāi)始我們從網(wǎng)上下載好了我們需要的資料,通過(guò)取其精華去其糟粕,本來(lái)是想把系統(tǒng)整合的很完美,可是由于我c語(yǔ)言基礎(chǔ)不太扎實(shí),未能完成。也向同學(xué)請(qǐng)教,只能做到現(xiàn)在這個(gè)地步。通過(guò)這次課程設(shè)計(jì),我對(duì)這個(gè)樹(shù)的操作有了深刻的了解,對(duì)C語(yǔ)言也有了更深刻

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論