版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計 總結(jié) 報 告最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除鄭州輕工業(yè)學(xué)院課 程 設(shè) 計 任 務(wù) 書題目家族關(guān)系查詢系統(tǒng)專業(yè)、班級軟件外包 11-01 學(xué)號 541107080145 姓名 周朱莉主要內(nèi)容、基本要求、主要參考資料等:主要內(nèi)容:建立家族關(guān)系數(shù)據(jù)庫,實現(xiàn)對家族成員關(guān)系的相關(guān)查詢?;疽螅海?)建立家族關(guān)系并能存儲到文件中;(2)實現(xiàn)家族成員的添加。(3)可以查詢家族成員的雙親、祖先、兄弟、孩子和后代等信息。課程設(shè)計按照教學(xué)要求需要一周時間完成,總共要上機調(diào)試程序10小時。對每個題目要有需求分析,在需求分析中,將題目中要求的
2、功能進行敘述分析,并且設(shè)計解決此問題的數(shù)據(jù)存儲結(jié)構(gòu),設(shè)計或敘述解決此問題的算法,描述算法建議使用流程圖,進行算法分析指明關(guān)鍵語句的時間復(fù)雜度。給出實現(xiàn)功能的一組或多組測試數(shù)據(jù),程序調(diào)試后,將按照此測試數(shù)據(jù)進行測試的結(jié)果列出來 。源程序要按照寫程序的規(guī)則來編寫。要結(jié)構(gòu)清晰,重點函數(shù)的重點變量,重點功能部分要加上清晰的程序注釋。程序能夠運行,要有基本的容錯功能。盡量避免出現(xiàn)操作錯誤時出現(xiàn)死循環(huán);主要參考資料: 數(shù)據(jù)結(jié)構(gòu)( c語言版),在網(wǎng)上查詢的相關(guān)資料及部分代碼完成期限: 2013.6.18-2013.6.20 指導(dǎo)教師簽名:課程負責(zé)人簽名:2013 年 6 月 18 日最新好資料推薦-如有侵權(quán)
3、請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除鄭州輕工業(yè)學(xué)院本科數(shù)據(jù)結(jié)構(gòu)課程設(shè)計總結(jié)報告設(shè)計題目 :家族關(guān)系查詢系統(tǒng)學(xué)生姓名 :周朱莉系別:計算機與通信工程專業(yè):軟件外包班級:11-01 學(xué)號:541107080145 指導(dǎo)教師 :盧冰 2013 年 6 月 20 日最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除一、 設(shè)計題目(任選其一)家族關(guān)系查詢系統(tǒng)二、 運行環(huán)境(軟、硬件環(huán)境)電腦 及 visual c+ 6.0 三、 算法設(shè)計的思想隨著社會發(fā)展,人們使用紙質(zhì)的家譜已經(jīng)非常不方便而且不利于在家譜里進行添加和修改。而用算法設(shè)計一個家族關(guān)系查詢系統(tǒng)則可以解決這
4、個問題。數(shù)據(jù)結(jié)構(gòu)的二叉樹剛好滿足家譜的基本結(jié)構(gòu)。首先建立一個文件作為家譜,然后在文件中輸入字符串,實現(xiàn)了在文件中按照數(shù)據(jù)的邏輯關(guān)系進進輸入便可建立相應(yīng)的三叉鏈表。然后就是進行數(shù)據(jù)的存儲、刪除及查找工作。四、 算法的流程圖家譜的創(chuàng)建:開始輸入家譜名稱輸入家族成結(jié)束最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除載入家譜:修改家譜:開始輸入家譜載入成功結(jié)束家譜是否存在?家譜打開失敗是否開始選擇輸入成員姓名結(jié)束添加成員輸入成員姓名是否返回上一刪除成成員是否存在?刪除成請重新輸入最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除成員查詢:五、 算法設(shè)計
5、分析本次設(shè)計研究的是建立家族關(guān)系,實現(xiàn)對家族成員關(guān)系相關(guān)查詢的問題。在設(shè)計中使用的數(shù)據(jù)結(jié)構(gòu)為樹狀結(jié)構(gòu),樹狀結(jié)構(gòu)采用三叉鏈表實現(xiàn)。我們在建立好家族關(guān)系后將其存儲在文件中,在文件中家族關(guān)系是以樹的形式存儲,運用樹的操作使家族關(guān)系得以準(zhǔn)確建立。家族關(guān)系查詢系統(tǒng)可分為六大模塊,分別是創(chuàng)建、修改、查詢、保存、退出等。建立家族關(guān)系模塊,建立家族關(guān)系并存入文件。建立時首先輸入家族關(guān)系的名稱,以此名稱為名建立文本文件。接下來按層輸入成員姓名,輸入一個在文件中開始輸入成員名輸出成員信結(jié)束成員是否存在?不在家譜中,請重新輸入是否最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除寫入一個字符
6、串,以回車鍵結(jié)束。打開一個家族關(guān)系。在界面輸入選項名,以家族關(guān)系名為文件名打開文件,如果家族關(guān)系不存在,返回空;如果存在,打開文件,讀取文件。向家族中添加一個新成員,添加的新成員要根據(jù)其父親確定其在家族中的位置。首先判斷該父親是否在此家族關(guān)系中,若存在,則查找其父親,將新節(jié)點插入其父親的最后一個孩子之后;若沒有孩子,直接作為左孩子插入。以寫入的方式打開文件,更新數(shù)組中的信息,然后將數(shù)組中的信息寫入文件保存,關(guān)閉文件。查找功能模塊,查找一個成員的所有祖先及其兄弟,查找一個成員的所有祖先路徑,需要從它的父親一直向上查找?guī)ЦY(jié)點。查找一個成員的兄弟,一個成員的兄弟為其父親除了該結(jié)點以外的所有孩子。對
7、于要操作的結(jié)點,先判斷它是否是根結(jié)點,若是根結(jié)點,則無兄弟;若不是根結(jié)點,則找到該結(jié)點的父親。接著判斷父親的兄弟是否都存在,如果都不存在,則無兄弟;如果都存在,對父親的孩子操作。六、源代碼#include #include #include #include typedef char telemtype; 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除typedef int status; typedef struct bitpnode telemtype data10; struct bitpnode *parent,*lchild,*rchild; /父親及左右
8、孩子指針bitpnode,*biptree; biptree p; biptree t; /家譜的創(chuàng)建int cre() system(cls); file *fp; / 聲明指向文件的指針 char filename40,str10; printf( 請輸入家譜名稱 :); getchar(); gets(filename); / 輸入家譜名稱 while(filename0=null) printf( 家譜名不能為空 ,請重新輸入 :); gets(filename); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 if(fp=fopen(filename,w
9、)=null) printf(%s家譜創(chuàng)建失敗 !n,filename); return 0; printf( 請輸入家譜內(nèi)容 :n); while (strlen(gets(str)0) fputs(str,fp); / 向文件寫入字符串 putc(n,fp); fclose(fp); /關(guān)閉文件 printf( 按任一鍵繼續(xù) !); getch(); return 1; status loc(biptree t,biptree &p,telemtype name10) if(t) 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 p=t; /字符串的比較
10、if(!strcmp(name,t-data) return 1; if(loc(t-lchild,p,name) return 1; if(loc(t-rchild,p,name) return 1; else return 0; /構(gòu)造二叉樹status inittree(biptree &t) t=(bitpnode *)malloc(sizeof(bitpnode); if(t) return 0; t-lchild=null; t-rchild=null; t-parent=null; return 1; 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站
11、刪除/載入家譜status crt(biptree &t) file *fp; biptree q,r,m,n; char filename40,name10; system(cls); / 清屏 r=(bitpnode *)malloc(sizeof(bitpnode); /分配存儲空間 m=(bitpnode *)malloc(sizeof(bitpnode); n=(bitpnode *)malloc(sizeof(bitpnode); printf( 請輸入家譜名 :); getchar(); gets(filename); while(filename0=null) prin
12、tf( 家譜名不能為空 ,請重新輸入 :); gets(filename); if(fp=fopen(filename,r)=null) printf(%s家譜打開失敗 !n,filename); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 return 0; inittree(t); fscanf(fp,%s,name); /從文件讀入姓名 strcpy(t-data,name); t-lchild=null; t-rchild=null; t-parent=null; fclose(fp); if(fp=fopen(filename,r)=null) pri
13、ntf(%家譜打開失敗 !n,filename); return 0; fscanf(fp,%s,name); while(!feof(fp) if(loc(t,p,name) fscanf(fp,%s,name); q=(bitpnode *)malloc(sizeof(bitpnode); strcpy(q-data,name); p-lchild=q; / 構(gòu)建孩子 q-parent=p; 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 q-lchild=null; q-rchild=null; n=p; else if(!loc(t,p,name) q=(b
14、itpnode *)malloc(sizeof(bitpnode); r=n; r=r-lchild; while(r) m=r; r=r-rchild; strcpy(q-data,name); m-rchild=q; q-parent=m; q-lchild=null; q-rchild=null; fscanf(fp,%s,name); printf( 信息載入成功 ,按任一鍵繼續(xù) !); getch(); return 1; 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除/添加成員status in(biptree &t) char father10
15、,name10; biptree q,m; system(cls); printf( 請輸入要添加到該家譜中的人的父親姓名:); getchar(); gets(father); while(!loc(t,p,father) printf(%s不在該家譜中 !請重新輸入 :,father); gets(father); printf( 請輸入要添加到該家譜中的人的姓名:); gets(name); q=(bitpnode *)malloc(sizeof(bitpnode); m=(bitpnode *)malloc(sizeof(bitpnode); strcpy(q-data,name);
16、q-lchild=null; q-rchild=null; if(!p-lchild) p-lchild=q; 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 q-parent=p; else p=p-lchild; while(p) m=p; p=p-rchild; m-rchild=q; q-parent=m; printf( 成員添加成功 ,按任一鍵繼續(xù) !); getch(); return 1; /刪除成員status de(biptree &t) char name10; system(cls); printf( 請輸入要刪除的人的姓名:); g
17、etchar(); gets(name); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 while(!loc(t,p,name) printf(%s不在該家譜中 !請重新輸入 :,name); gets(name); if(!p-rchild) if(p-parent-lchild=p) p-parent-lchild=null; else p-parent-rchild=null; free(p); else if(p-rchild) if(p-parent-lchild=p) p-parent-lchild=p-rchild; else p-parent-r
18、child=p-rchild; free(p); printf( 成員刪除成功 ,按任一鍵繼續(xù) !); getch(); return 1; status show(telemtype e10) 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 printf(%s ,e); return 1; /二叉樹的遍歷status pre(biptree t,status(*visit)(telemtype10) if(t) if (*visit)(t-data) if (pre(t-lchild,visit) if (pre(t-rchild,visit) return 1;
19、 return 0; else return 1; /家族成員查詢status sea(biptree t) char name10; biptree n; n=(bitpnode *)malloc(sizeof(bitpnode); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 system(cls); printf( 請輸入要查尋的人的姓名:); getchar(); gets(name); while(!loc(t,p,name) printf(%s不在該家譜中 !請重新輸入 :,name); gets(name); n=p; if(p=t) printf(
20、%s的父親在該家譜中沒有記載!n,p-data); else while(n-parent-rchild=n) n=n-parent; printf(%s的父親是 :%sn,p-data,n-parent-data); n=p; if(p=t) printf(%s沒有兄弟 !n,p-data); else if(!p-rchild&p-parent-rchild!=p) printf(%s沒有兄弟 !n,p-data); else printf(%s的兄弟有 :n,name); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 while(n-rchild)
21、printf(%s ,n-rchild-data); n=n-rchild; n=p; while(n-parent-rchild=n) printf(%s ,n-parent-data); n=n-parent; printf(n); if(p=t) printf(%s的祖先在該家譜中沒有記載!n,name); else printf(%s的祖先是 :%sn,name,t-data); n=p; if(!p-lchild) printf(%s沒有孩子 !n,name); printf(%s沒有后代 n,name); else printf(%s的孩子有 :n,name); printf(%s
22、 ,p-lchild-data); n=n-lchild; while(n-rchild) 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 printf(%s ,n-rchild-data); n=n-rchild; printf(n); printf(%s的后代有 :n,name); pre(p-lchild,show); printf(n); printf( 按任一鍵繼續(xù) !); getch(); return 1; /文件的創(chuàng)建status write(biptree t,char filename40) file *fp; if(fp=fopen(filen
23、ame,a+)=null) printf(%s文件創(chuàng)建失敗 !n,filename); return 0; fprintf(fp,%s ,t-data); t=t-lchild; 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 while(t) fprintf(fp,%s ,t-data); t=t-rchild; fprintf(fp,n); /輸出 fclose(fp); return 1; status prewrite(biptree t,status(*visit)(biptree,char40),char filename40) if(t) if (t-
24、lchild) (*visit)(t,filename); prewrite(t-lchild,visit,filename); prewrite(t-rchild,visit,filename); return 1; else return 1; 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除status wrong() char a; scanf(%c,&a); printf( 無此選項 ,請重新選擇 !(按任一鍵繼續(xù) !); getch(); return 1; /家譜的存儲status sav(biptree t) file *fp; char fi
25、lename40; system(cls); printf( 請輸入新的文件名 :); getchar(); gets(filename); while(filename0=null) printf( 家譜名不能為空 ,請重新輸入 :); gets(filename); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 prewrite(t,write,filename); printf(%s家譜保存成功 ,按任一鍵繼續(xù) !,filename); getch(); return 1; /修改家譜status upd() system(cls); int xz; whi
26、le(1) system(cls); printf(nnnn); printf(*) 家族成員的添加與刪除操作(* *) n); printf(*) 請選擇 (* *)n); printf(*) 1. 添加成員 . (*)n); printf(*) 2.刪除成員 . (*)n); printf( (*) 3. 返回上一級 . (* *)n); printf( 請選擇:); scanf(%d,&xz); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 switch(xz) case 1 : in(t);break; case 2 : de(t);break;
27、case 3 : return 0; default : wrong(); break; main() p=(bitpnode *)malloc(sizeof(bitpnode); int xz; while(1) system(cls); printf(nnnn); printf(*) 家族關(guān)系查詢系統(tǒng) (* *) n); 最新好資料推薦-如有侵權(quán)請聯(lián)系網(wǎng)站刪除精品好資料 -如有侵權(quán)請聯(lián)系網(wǎng)站刪除 printf(*) 具體操作如下 (* *) n); printf(*) 1. 創(chuàng)建家譜 . (* *) n); printf(*) 2. 載入家譜 . (* *) n); printf(*) 3. 修改家譜 . (* *) n); printf(*) 4. 查尋成員
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高中語文第二單元置身詩境緣景明情夢游天姥吟留別訓(xùn)練含解析新人教版選修中國古代詩歌散文欣賞
- 2024高考地理一輪復(fù)習(xí)第十三單元人類與地理環(huán)境的協(xié)調(diào)發(fā)展練習(xí)含解析
- 2024高考歷史一輪復(fù)習(xí)方案專題十三近現(xiàn)代中國的先進思想專題綜合測驗含解析人民版
- 2024高考地理一輪復(fù)習(xí)第一部分自然地理-重在理解第四章地表形態(tài)的塑造第12講營造地表形態(tài)的力量學(xué)案新人教版
- DB42-T 2329-2024 固定污染源氣態(tài)汞采樣裝置技術(shù)要求與檢測方法
- 烤漆房緊急預(yù)案
- 二零二五年度糧油產(chǎn)品進出口代理合同3篇
- 二零二五年綠色建材認證瓷磚供應(yīng)商合作協(xié)議3篇
- 鎂合金成型與應(yīng)用教學(xué)教案
- 北師大版數(shù)學(xué)八年級上冊《平面直角坐標(biāo)系中三角形面積問題》
- 通信工程建設(shè)標(biāo)準(zhǔn)強制性條文匯編(2023版)-定額質(zhì)監(jiān)中心
- 2024年棄土堆放合同協(xié)議
- DB11∕T 353-2021 城市道路清掃保潔質(zhì)量與作業(yè)要求
- 中醫(yī)特色科室創(chuàng)建
- 多旋翼無人機駕駛員執(zhí)照(CAAC)備考試題庫大全-上部分
- Unit 2 同步練習(xí)人教版2024七年級英語上冊
- JGJ94-2008建筑樁基技術(shù)規(guī)范
- 電子產(chǎn)品模具設(shè)計
- (正式版)JBT 11270-2024 立體倉庫組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- 失能老年人的護理與康復(fù)
- 微信小程序運營投標(biāo)方案(技術(shù)方案)
評論
0/150
提交評論