數(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頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 課程設計 數(shù)據(jù)結構課程設計報告 學 號: 姓 名:張燦 指導教師:曹春萍 專 業(yè):計算機 完成日期: 目錄 A篇:旅游信息管理系統(tǒng) 、題目要求 1、題目內(nèi)容1 、程序設計目標 1、題目分析1 2 、功能簡介2 3 、數(shù)據(jù)結構2 、概要簡述 2、模塊分析3 四、詳細設計 1、結構體定義3 2 、程序流程圖 5 五、源程序代碼 1、源程序 C+實現(xiàn)代碼6 六、調(diào)試分析及測試結果 1、運行結果截 14 七、附錄 1、補充說明19 八、程序小結 1、報告總結19 B篇:B-樹手工題 一、題目要求 1、題目內(nèi)容20 、運行過程 1從空樹插入20 2 、插入完成25 3 、依次刪除要求點 26 4 、最

2、終結果28 C篇:附加題 、題目 1題目內(nèi)容29 、程序設計目標 1功能簡介29 2、數(shù)據(jù)結構29 二、設計思路 1、結構體定義29 2 、功能結構圖30 3 、程序流程圖30 四、實現(xiàn)代碼 1程序代碼32 五、程序調(diào)試以及運行結果 1調(diào)試結果及截圖 43 六、報告總結 1報告總結44 A 篇:旅游信息管理系統(tǒng) 一、題目要求 1、題目內(nèi)容 旅游信息管理系統(tǒng) 1)數(shù)據(jù)結構 (1)、二叉排序樹加單鏈表 (2)、二叉排序樹 說明:1、用二叉排序樹表示旅游地點,用單鏈表表示游客 2、用二叉排序樹表示旅游地點和游客。 2 )、功能 (1)、旅游地點的插入 (2)、游客報名 建議游客該選其 建議游客改選

3、(3)、當某地的旅游人數(shù)少于三個人時, 取消次旅游地, 他旅游點 (4)、當某旅游地旅游人數(shù)等于六個時,不允許在報名。 其它旅游地。 二、程序設計目標 1、題目分析 讀題可知,需完成兩方面的編程以對旅游系統(tǒng)進行操作。一方面是旅游公司 管理人員,主要是旅游景點的添加與刪除,對旅游人員的錄入與刪除,對旅游人 數(shù)的統(tǒng)計,把游客所需信息打印等等;第二方面是游客對于旅游地的選、改、刪, 以及個人信息的輸入、確認等等。 2 、功能簡介 由以上分析可得:本設計程序功能主要有: ?、 旅游公司管理人員對旅游人員和旅游地點的操作,用二叉排序樹管理 旅游地點。主要有地點的變更,插入、刪除、游客的信息存儲及及時提醒

4、等功能。 其中二叉樹每一個結點包括旅游地點的區(qū)號(area_node)、名稱(area)、該旅 游地的游客人數(shù)(count )、以及一個指向游客信息結構的指針(list ),還有二 叉樹結點的左孩子和右孩子指針(Ichild ,rchild )。 ?、游客可以登陸旅游公司界面進行報名、選擇旅游地點和輸入個人信息。 游客結構采用單鏈表,其中包括單鏈表的初始化、插入、刪除、計數(shù)功能。其中 每一個單鏈表結點包括游客的編號(id)、姓名(name)性別(sex )、和鏈接鏈 表的指針(next )。 3 、數(shù)據(jù)結構 用到的數(shù)據(jù)結構有:單鏈表,排序二叉樹,數(shù)組 、概要簡述 1 、功能結構圖 主菜單 程序

5、員 1 游客q 1 1 1 2、模塊分析 本程序包括三個模塊: 主程序模塊、二叉排序樹模塊、單鏈表模塊,工作 區(qū)選擇模塊。如圖: *二叉排序樹模塊 主程序模塊 單鏈表模塊 四、詳細設計 1 、結構體定義 1)、鏈表結點結構體 typedef struct tourist stri ng n ame; int id; stri ng sex; struct tourist *n ext; Trist,*li nklist; 2 )、二叉排序樹結點結構體 typedef struct Tree_Place int area_code;/ stri ng area;/ int count;/ 旅游地

6、區(qū)號 旅游地名稱 記錄該旅游地報名游客人數(shù) struct Tree_Place *lchild,*rchild; 指向游客所在單鏈表的指針 Trist *list;/ Place,*TPlace; 2、程序流程圖 三菜單(1、程序員,2、游客) 入 可 錯誤 T 可 f 退 、,超 所 旅. 輸 五、源程序代碼 1、源程序C+實現(xiàn)代碼 #in clude #i nclude #in clude #i ncludevioma nip using n amespace std; #defi ne MAX 50 #defi ne SIZE 12 typedef struct tourist char

7、 n ameSIZE; int id; char sex5; struct tourist *n ext; Trist,*li nklist; typedef struct Tree_Place int code;/旅游地區(qū)號 char areaSIZE; / 旅游地名 / 記錄該旅游地報 int count; 名游客人數(shù) struct Tree_Place *lchild,*rchild; Trist *list;/指向游客所 在單鏈表的指針 Place,*TPlace; void Search_T(TPlace void Main list(TPIace void Tour_1(TPlac

8、e void Tour_2(TPlace void Destory(TPlace void In it_L(li nklist void In sert_L (TPIace char c; int i=1,co,id; while(t-cou nt6 tr=(li nklist)malloc(sizeof(Trist); tr-id =id; cout輸入姓名,性別: tr- n ametr-sex; tr-n ext=head; head=tr; t-co un t+; coutvv繼續(xù)報名請按1,按0退出! vvendl; cin i; if(t-co un t=6) coutvv此旅游地

9、人數(shù)已滿,按y選擇其他旅游地,其他鍵退出! c; if(c=y|c=Y)coutvv請重 新 輸入 區(qū) co;Search_T(tree,co); else Tour_2(tree); void Delet_L (li nklist pro=head; while(pro) p=pro ;pro=p-n ext ;free(p); 在二叉排序樹中插 void Insert_T(TPIace else if(p-codecode) In sert_T(tree-lchild,p); else if(p-codetree-code) In sert_T(tree-rchild,p); void S

10、earch_T(TPlace TPIace p; int code; p=tree; while(p else p=p-rchild ; if(!p)cout此 旅 游 地 點 還 未 co un t=6) coutvv此旅游地人數(shù)已滿,按y選擇其他旅游地,其他鍵退出! e ndl;ci nc; if(c=y|c=Y)cout請 重新輸入 區(qū)號 code;Search_T(tree,code);else Tour_2(tree); elsecout可 以 報 名 list);Tour_2(tree); TPlace Delete_T(TPIace /pare nt指向要刪除的節(jié)點的雙親,p指向

11、要刪除的 節(jié)點 p=t; pare nt=NULL; while(p) if(p-code=co) break; pare nt=p; if(p-codeco) p=p-lchild; else p=p-rchild; if(p=NULL)/不存在該樹節(jié)點 return t; if(p-lchild=NULL) /無左子樹,右子樹可有可無 if(pare nt=NULL) t=p-rchild; else if(pare nt-lchild=p) pare nt-lchild=p-rchild; else pare nt-rchild=p-rchild; Delet_L (p-list); f

12、ree(p); else /有左子樹,右子樹可有可無 q=p; s=q-lchild; / while(s-rchild) q=s; s=s-rchild; if(q=p) / 其左孩子沒有右子樹 q-lchild=s-lchild; else q-rchild=s-lchild; p-code=s-code; Delet_L (s-list); free(s); return t; void Fun 1(TPIace int n; TPlace p; cout請輸入插入地點個數(shù):endl; cinn; coutvv依次輸入各個旅游地點的區(qū)號和地名:endl; for(i nt i=0;i n

13、 ;i+) p=(TPIace)malloc(sizeof(Place); coutvv請輸入第i+1個地點: p-codep-area ; p-lchild =p-rchild =NULL; p-list=NULL; p-co unt =0; In sert_T(tree,p); coutvv輸入完成,輸入y或者丫繼續(xù)操作,其他鍵退出! cin c; if(c=y|c=Y) Fun 1(tree); else system(cls);Tour_1(tree); void Fun 2(TPlace TPlace p,sMAX; p=tree; while(p|top0) while(p) st

14、op+=p; p=p-lchild; if(top0) p=s-top;coutcodevsetw(10)vv 地 名:areasetw(10) 人數(shù):co un trchild; e ndl; if(tree=NULL)cout 還未錄入旅游地!請稍后查詢! coutvv按任意鍵返回上一級菜單!0) while(p) stop+=p; p=p-lchild; if(top0) p=s-top; if(p-cou nt3n 1+; if(p-cou nt6; n2+; p=p-rchild; if(x=1)cout 共有n1各旅游景點人數(shù)少于三個endl;cout 刪除旅游地請輸入D或者d,其

15、他鍵返回菜單! c; if(c=d|c=D)for(i nti=0;i n1;i+) Delete_T(tree,elemi);cout刪 除 完 成! e ndl; system(pause);Tour_1(tree); if(x=2)cout 一共有n2個旅游景點仍可報名endl;cout按任 意鍵返回上一級菜單!e ndl;system(pause);Tour_2(tree); void Fun 4(TPIace TPlace p; li nklist l,pre; p=tree; coutvv輸入要退出旅游地的區(qū)號和自己的身份證號: coid; while(p else p=p-rch

16、ild ; if(!p)cout此 旅 游 地 點 還 未 存 在! list;pre=l; while(l-id!=id) pre=l; l=l-n ext; pre-next=l-next;free(l);p-count-;cout輸入要報名 的地點 區(qū)號: co; Search_T(tree,co); void Mai nlist(TPIace cout e ndle ndl; *、 cout 歡迎登陸旅游購票系統(tǒng)endl; cout請選擇登錄身份:e ndl; cout1 cout2 cout3 、旅游公司管理人員endl; 、游客e ndl; 、退出程序e ndl; *、 cout

17、int n, key,i=1; cinn; switch( n) case 3: Destory(tree);exit(0); case 1:docout key;i+; while(key!=12345 if(key=12345) Tour_1(tree);else Mai nlist(tree);break; case 2: Tour_2(tree);break; default :cout輸入錯誤,請重新 選擇! endl;system(pause); Mai nl ist(tree); void Tour_1(TPlace int n; cout *、 e ndle ndl; cout

18、1 cout2 cout3 cout4 、輸入旅游地點endl; 、查詢各旅游地游客人數(shù)endl; 、顯示不足三人的旅游地endl; 、退出endl; cout *、 e ndle ndl; cinn; switch( n) case 1: Fun 1(tree);break; case 2: Fun 2(tree,1);break; case 3: Fun 3(tree,1);break; case 4: Main list(tree);break; default :cout輸入錯誤 請重新輸入! e ndl;system(pause);Tour_1(tree); void Tour_2(

19、TPIace system(cls); int n; cout e ndle ndl; *、 cout1 cout2 cout3 cout4 cout5 、輸入旅游地區(qū)號endl; 、顯示所有旅游地endl; 、查詢可報名地endl; 、修改旅游地點endl; 、退出endl; cout *、 cinn; switch( n) case1:cout請 輸 入 區(qū) 號 code;Search_T(tree,code);break; case 2: Fun 2(tree,2);break; case 3: Fun 3(tree,2);break; case 4: Fun 4(tree);break; case 5:Ma in list(tree);break; default:cout輸入錯誤, 請重新輸 e ndl;system(pause);Tour_2(tree); /銷毀二叉樹 void Destory(TPlace if(tree coutvcodevvsetw(5)vvtree-areavve ndl; Delet_L (tree-list); free(tree); void mai n() TPlace T=NULL; Mai nlist(T); 六、調(diào)試分析及測試結果 1運行結果截圖 七、附

溫馨提示

  • 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

提交評論