已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告姓 名: 學(xué) 號: 班 級: 設(shè)計(jì)時(shí)間: 審閱教師: 目錄第一章 設(shè)計(jì)目的3第二章 設(shè)計(jì)任務(wù)及要求4一、基本要求:4二、內(nèi)容:4第三章 題目分析與解答5一、通訊錄管理系統(tǒng)51)題目要求52)應(yīng)用程序功能53)主要算法模塊描述64)源程序代碼9二、停車場管理系統(tǒng)161)題目要求16要求設(shè)計(jì)停車管理系統(tǒng),實(shí)現(xiàn)車輛的進(jìn)入、離開并根據(jù)停車時(shí)間計(jì)費(fèi)。172)應(yīng)用程序功能173)主要算法模塊描述184)源程序代碼18三、猴子選大王241)題目要求242)應(yīng)用程序功能243)主要算法模塊描述244)源程序代碼25四、二叉樹運(yùn)算271)題目要求272)應(yīng)用程序功能273)主要算法模塊描述274)源程序代碼27第四章 設(shè)計(jì)心得31第五章 參考文獻(xiàn)32第一章 設(shè)計(jì)目的1、培養(yǎng)學(xué)生運(yùn)用算法與數(shù)據(jù)結(jié)構(gòu)的基本知識解決實(shí)際編程中的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì)問題。2、培養(yǎng)學(xué)生獨(dú)立設(shè)計(jì)程序與解決問題的能力,培養(yǎng)學(xué)生團(tuán)隊(duì)協(xié)作集成程序模塊及調(diào)試能力。3、培養(yǎng)學(xué)生初步的軟件設(shè)計(jì)及軟件測試的能力。第二章 設(shè)計(jì)任務(wù)及要求一、 基本要求:學(xué)生必須仔細(xì)閱讀數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)指導(dǎo)書,認(rèn)真主動完成課設(shè)的要求。有問題及時(shí)主動通過各種方式與教師聯(lián)系溝通。學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時(shí)間,安排好課設(shè)的時(shí)間計(jì)劃,并在課設(shè)過程中不斷檢測自己的計(jì)劃完成情況,及時(shí)的向教師匯報(bào)。課程設(shè)計(jì)按照教學(xué)要求需要一周時(shí)間完成,一周中每天(按每周5天)至少要上3-4小時(shí)的機(jī)來調(diào)試c語言設(shè)計(jì)的程序,總共至少要上機(jī)調(diào)試程序15小時(shí)。根據(jù)設(shè)計(jì)報(bào)告要求編寫設(shè)計(jì)報(bào)告,主要內(nèi)容包括目的、意義、原理和實(shí)現(xiàn)方法簡介、過程分析及說明、實(shí)驗(yàn)結(jié)果情況說明、結(jié)論。每個(gè)人必須有可運(yùn)行的程序,學(xué)生能對自己的程序面對教師提問并能熟練地解釋清楚,學(xué)生回答的問題和程序運(yùn)行的結(jié)果作為評分的主要衡量標(biāo)準(zhǔn);(周二下午開始逐一檢查)二、 內(nèi)容:本次課程設(shè)計(jì)完成如下模塊(共11個(gè)模塊,學(xué)生可以在其中至少挑選4個(gè)功能塊完成,但有*號的模塊是必須要選擇的,多做可以加分)第三章 題目分析與解答一、 通訊錄管理系統(tǒng)1) 題目要求通訊錄一般包括通訊者的編號、姓名、性別、電話及地址等信息,設(shè)計(jì)一個(gè)通訊錄要求實(shí)現(xiàn)通訊者的插入、查詢、刪除、更新、排序操作。 struct node char num5; /編號 char name8; /姓名 char sex; /性別 char tel8; /電話 char address100; /地址;2) 應(yīng)用程序功能明確用戶的需求,如操作界面需求,系統(tǒng)功能需求,數(shù)據(jù)的具體流程等。添加界面:顯示界面:刪除界面:修改界面: 3) 主要算法模塊描述 工作流程圖:添加:添加通訊錄記錄顯示:顯示通訊錄記錄刪除:刪除通訊錄記錄查詢:查詢通訊錄記錄先選擇查詢方式,以姓名查詢方式為例修改:修改通訊錄記錄4) 源程序代碼#include #include#include typedef struct char score; /*編號*/char name10; /*姓名*/ char num15; /*號碼*/ char email20;/*郵箱*/char age8;/*年齡*/char adds20;/*住址*/person; person pe80; int menu_select() char c; do system(cls); printf(tt *通訊錄* n); printf(ttn); printf(tt 1. 添加記錄 n); printf(tt 2. 顯示記錄 n); printf(tt 3. 刪除記錄 n); printf(tt 4. 查詢記錄 n); printf(tt 5. 修改記錄 n); printf(tt 6. 保存記錄 n);printf(tt 0. 退出程序 n); printf(ttn); printf(tt請您選擇(0-6):); c=getchar(); while(c6); return(c-0); int input(person per,int n) int i=0; char sign,x10; while(sign!=n&sign!=n) printf(t編號:); scanf(t%d,&pern+i.score); printf(t姓名:); scanf(t%s,pern+); printf(t年齡:); scanf(t%s,pern+i.age);printf(t電話號碼:); scanf(t%s,pern+i.num); printf(t通訊住址:); scanf(t%s,pern+i.adds);printf(t電子郵箱:);scanf(t%s,pern+i.email);gets(x); printf(nt是否繼續(xù)添加?(y/n); scanf(t%c,&sign); i+; return(n+i); void display(person per,int n) int i; printf(-n); /*格式*/ printf(編號 姓名 年齡 電話號碼 通訊地址 電子郵箱n); printf(-n); for(i=1;i1&i%10=0) printf(t-n); printf(t); system(pause); printf(t-n); printf(-n);system(pause); int delete_a_record(person per,int n) char s20; int i=0,j; printf(t請輸入想刪除記錄中的名字:); scanf(%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(t通訊錄中沒有此人!n); return(n); for(j=i;jn-1;j+) strcpy(perj.num,perj+1.num); strcpy(,perj+1.name); strcpy(perj.age,perj+1.age);strcpy(perj.adds,perj+1.adds);strcpy(perj.email,perj+1.email);perj.score=perj+1.score; printf(ttt已經(jīng)成功刪除!n); return(n-1); void query_a_record(person per,int n) int m;printf(tn請選擇查詢方式:n); printf(tn); printf(t1-姓名 n); printf(t2-電話 n); printf(t3-地址 n); printf(t4-返回 n); printf(tn); printf(請選擇:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(輸入錯(cuò)誤,請重新選擇:);scanf(%d,&m);if(m=1)char s20; int i=0; printf(t請輸入想查詢的姓名:); scanf(t%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(t通訊錄中沒有此人!n); return; printf(t此人編號: %dn,peri.score);printf(t此人年齡: %sn,peri.age); printf(t電話號碼: %sn,peri.num); printf(t通訊地址: %sn,peri.adds);printf(t電子郵箱: %sn,peri.email); ;if(m=2)char s20; int i=0; printf(t請輸入想查詢的電話:); scanf(t%s,s); while(strcmp(peri.num,s)!=0&in) i+; if(i=n) printf(t通訊錄中沒有此人!n); return; printf(t此人編號: %dn,peri.score);printf(t此人姓名: %sn,);printf(t此人年齡: %sn,peri.age); printf(t通訊地址: %sn,peri.adds);printf(t電子郵箱: %sn,peri.email); ;if(m=3)char s20; int i=0; printf(t請輸入想查詢的地址:); scanf(t%s,s); while(strcmp(peri.adds,s)!=0&in) i+; if(i=n) printf(t通訊錄中沒有此人!n); return; printf(t此人編號: %dn,peri.score);printf(t此人姓名: %sn,);printf(t此人年齡: %sn,peri.age); printf(t電話號碼: %sn,peri.num); printf(t電子郵箱: %sn,peri.email); ;void change(person per,int n) char s20; int i=0; printf(t請輸入想修改的記錄中的名字:); scanf(%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(t通訊錄中沒有此人!n); return; printf(t編號:); scanf(t%d,&peri.score); printf(t姓名:); scanf(t%s,); printf(t年齡:); scanf(t%s,peri.age);printf(t電話號碼:); scanf(t%s,peri.num); printf(t通訊住址:); scanf(t%s,peri.adds);printf(t電子郵箱:);scanf(t%s,peri.email);printf(t修改成功!);void writetotext(person per,int n) int i=0; file *fp; /*定義文件指針*/ char filename20; /*定義文件名*/ printf(t保存到文件n); /*輸入文件名*/ printf(t請輸入所保存的文件名:); scanf(t%s,filename); if(fp=fopen(filename,w)=null) printf(t無法打開文件n); system(pause); return; fprintf(fp,*通訊錄*n);fprintf(fp,編號 姓名 年齡 電話號碼 通訊地址 電子郵箱n);fprintf(fp,-n);while(in) fprintf(fp,%-3dt%-6st%-3st%-13st%-20st%-20sn,peri.score,,peri.age,peri.num,peri.adds,peri.email); i+; fprintf(fp,-n);fprintf(fp,*共有%d條記錄*n,n); fclose(fp); /*關(guān)閉文件*/ printf(保存成功!n); void main() /*主函數(shù)*/ int n=0; for(;) switch(menu_select() case 1: printf(nt添加記錄到通訊錄n); /*添加記錄*/ n=input(pe,n); break; case 2: printf(nttt 通訊錄記錄表n); /*顯示記錄*/ display(pe,n); break;case 3: printf(nt從通訊錄中刪除記錄n); n=delete_a_record(pe,n); /*刪除記錄*/ printf(t); system(pause); break; case 4: printf(nt在通訊錄中查找記錄n); query_a_record(pe,n); /*查找記錄*/ printf(t); system(pause); break;case 5: printf(nt修改通訊錄中的記錄n); change(pe,n); /*修改數(shù)據(jù)*/ printf(t); system(pause); break; case 6: printf(nt保存功能n); writetotext(pe,n); /*保存數(shù)據(jù)*/ printf(t); system(pause); break; case 0: printf(ntt謝謝使用,再見!n); /*結(jié)束程序*/ printf(ntt); system(pause); exit(0); 二、 停車場管理系統(tǒng)1) 題目要求某停車場可以停放n輛汽車,該停車場只有一個(gè)大門, 每輛汽車離開停車場都要求之前的汽車必須先退出停車場為它讓道,而后讓道的汽車再次駛?cè)胪\噲?,停車場示意圖如下:要求設(shè)計(jì)停車管理系統(tǒng),實(shí)現(xiàn)車輛的進(jìn)入、離開并根據(jù)停車時(shí)間計(jì)費(fèi)。2) 應(yīng)用程序功能 明確用戶的需求,如操作界面需求,系統(tǒng)功能需求,數(shù)據(jù)的具體流程等。運(yùn)行時(shí)界面如下:車輛到達(dá):車場信息:3) 主要算法模塊描述4) 源程序代碼#include#include#include#include #define max 10 /*車庫容量*/ #define price 3 /*每車每時(shí)刻費(fèi)用*/typedef struct node int num; int reachtime; int leavetime; carnode; /*車輛信息結(jié)點(diǎn)*/ typedef struct node carnode *stackmax+1; int top; seqstackcar; /*模擬車站*/typedef struct car carnode *data; struct car *next; queuenode; typedef struct node queuenode *head; queuenode *rear; linkqueuecar; /*模擬通道*/*-*/ /*函數(shù)聲明部分*/ void initstack(seqstackcar *); /*初始化棧*/ int initqueue(linkqueuecar *); /*初始化便道*/ int arrival(seqstackcar *,linkqueuecar *); /*車輛到達(dá)*/ void leave(seqstackcar *,seqstackcar *,linkqueuecar *); /*車輛離開*/ void list(seqstackcar,linkqueuecar); /*顯示存車信息*/ void print(carnode *p) ;/*-*/ void option() int i; char choice; printf(nnnn); printf( 停車場管理系統(tǒng)); printf(nnnn); printf(n*); printf(t1.車輛到達(dá)-1 2.車輛離開-2 3.車輛信息-3 4.退出程序-4); printf(n*); printf(nnnt 是否進(jìn)入該系統(tǒng)(y/n)? ); choice=getchar(); if(choice=n|choice=n) exit(0); void main() seqstackcar enter,temp; linkqueuecar wait; int ch; system(graftabl 936); option();initstack(&enter); /*初始化車站*/ initstack(&temp); /*初始化讓路的臨時(shí)棧*/ initqueue(&wait); /*初始化通道*/ while(1) system(cls); printf(nnttt1. 車輛到達(dá) 請選擇 1); printf(nnttt2. 車輛離開 請選擇 2); printf(nnttt3. 車輛信息 請選擇 3); printf(nnttt4. 退出程序 請選擇 4); printf(nnttt現(xiàn)在請選擇以上信息 : );while(1) scanf(%d,&ch); printf(n); if(ch=1&chtop=0; for(i=0;istacks-top=null; int initqueue(linkqueuecar *q) /*初始化便道*/ q-head=(queuenode *)malloc(sizeof(queuenode); if(q-head!=null) q-head-next=null; q-rear=q-head; return(1); else return(-1); void print(carnode *p) /*打印出站車的信息*/ int a1,a2; printf(nttt請輸入離開時(shí)間: ); scanf(%d,&(p-leavetime); printf(nttt離開車輛的車牌號: %d,p-num); printf(nnttt離開車輛到達(dá)時(shí)間: %d ,p-reachtime); printf(nnttt離開車輛離開時(shí)間: %d,p-leavetime); a1=p-reachtime; a2=p-leavetime; printf(nnttt停車場管理費(fèi)用: %d,(a2-a1)*price); free(p); int arrival(seqstackcar *enter,linkqueuecar *w) /*車輛到達(dá)*/ carnode *p; queuenode *t; p=(carnode *)malloc(sizeof(carnode); flushall(); printf(ttt請輸入到達(dá)車輛車牌號: ); scanf(%d,&(p-num); if(enter-toptop+; printf(nttt該車輛在停車場的位置是: %dn,enter-top); printf(nttt請輸入該車輛到達(dá)的時(shí)間: ); scanf(%d,&(p-reachtime); enter-stackenter-top=p; return(1); else /*車場已滿,車進(jìn)便道*/ printf(nttt停車場已滿 該車輛需在便道上等待!); getch(); t=(queuenode *)malloc(sizeof(queuenode); t-data=p; t-next=null; w-rear-next=t; w-rear=t; return(1); void leave(seqstackcar *enter,seqstackcar *temp,linkqueuecar *w) /*車輛離開*/ int i, room; carnode *p,*t; queuenode *q; /*判斷車場內(nèi)是否有車*/ if(enter-top0) /*有車*/ while(1) /*輸入離開車輛的信息*/ printf(ttt停車場里停放的車輛總數(shù): %d,enter-top); printf(nnttt請輸入要離開車輛的位置: ); scanf(%d,&room); if(room=1&roomtop) break; while(enter-toproom) /*車輛離開*/ temp-top+; temp-stacktemp-top=enter-stackenter-top; enter-stackenter-top=null; enter-top-; p=enter-stackenter-top; enter-stackenter-top=null; enter-top-; while(temp-top=1) enter-top+; enter-stackenter-top=temp-stacktemp-top; temp-stacktemp-top=null; temp-top-; print(p);/*判斷通道上是否有車及車站是否已滿*/ if(w-head!=w-rear)&enter-tophead-next; t=q-data; enter-top+; printf(nnttt便道的%d號車進(jìn)入車場第%d位置.,t-num,enter-top); printf(nnttt請輸入現(xiàn)在的時(shí)間:); scanf(%d,&(t-reachtime); w-head-next=q-next; if(q=w-rear) w-rear=w-head; enter-stackenter-top=t; free(q); else printf(nnttt便道里沒有車.n); else printf(nnttt車場里沒有車.); /*沒車*/ void list1(seqstackcar *s) /*列表顯示車場信息*/ int i; if(s-top0) /*判斷車站內(nèi)是否有車*/ printf(nttt車場:); printf(nnttt位置 到達(dá)時(shí)間 車牌號n); for(i=1;itop;i+) printf(%26d,i); printf(%6d,s-stacki-reachtime); printf(%10d,s-stacki-num); printf(n); else printf(nttt車場里沒有車); void list2(linkqueuecar *w) /*列表顯示便道信息*/ queuenode *p; p=w-head-next; if(w-head!=w-rear) /*判斷通道上是否有車*/ printf(nttt等待車輛的號碼為: ); while(p!=null) printf(%-10d,p-data-num); p=p-next; printf(n); else printf(nttt便道里沒有車.); void list(seqstackcar s,linkqueuecar w) int flag,tag; flag=1; while(flag) printf(nttt請選擇 1|2|3:); printf(nnttt1.車場nnttt2.便道nnttt3.返回nnttt); while(1) scanf(%d,&tag); if(tag=1|tag=3) break; else printf(nttt請選擇 1|2|3:); switch(tag) case 1:list1(&s);break; /*列表顯示車場信息*/ case 2:list2(&w);break; /*列表顯示便道信息*/ case 3:flag=0;break; default: break; 三、 猴子選大王1) 題目要求任務(wù):一堆猴子都有編號,編號是1,2,3 .m ,這群猴子(m個(gè))按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第n個(gè),該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。要求:輸入數(shù)據(jù):輸入m,n m,n 為整數(shù),ndata = 1; for (i = 2; i data = i; p-next = q; p = q; p-next =(*l);void king(linklist *l, int n, int m) node *p, *q; int k; int j = 1; p = (*l); printf(n); for (; m 1; m-) k = 1; while (k != n) p = p-next; k+; printf(第%d個(gè)出隊(duì)的是%d號猴子,n, j+, p-data); p-data = p-next-data; q = p-next; p-next = p-next-next; free(q); printf(n最終結(jié)果:大王是
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度專業(yè)園藝設(shè)計(jì)施工合同3篇
- 2024年金融科技服務(wù)平臺委托合同
- 2025年度餐飲企業(yè)食品安全管理體系建設(shè)合同范本3篇
- 二零二五年度租賃鏟車附帶工程驗(yàn)收合同3篇
- 二零二五版企業(yè)社會責(zé)任LOGO設(shè)計(jì)合同3篇
- 2024年高標(biāo)準(zhǔn)管溝開挖工程合同
- 2025年度離婚協(xié)議及子女監(jiān)護(hù)權(quán)及財(cái)產(chǎn)分割合同3篇
- 2024裝飾項(xiàng)目工程承包合同版B版
- 2025年度航空航天器零部件加工與供應(yīng)合同規(guī)范4篇
- 年度其它網(wǎng)絡(luò)系統(tǒng)專用設(shè)備戰(zhàn)略市場規(guī)劃報(bào)告
- 2025年工程合作協(xié)議書
- 2025年山東省東營市東營區(qū)融媒體中心招聘全媒體采編播專業(yè)技術(shù)人員10人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年宜賓人才限公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- KAT1-2023井下探放水技術(shù)規(guī)范
- 垃圾處理廠工程施工組織設(shè)計(jì)
- 天皰瘡患者護(hù)理
- 駕駛證學(xué)法減分(學(xué)法免分)題庫及答案200題完整版
- 2024年四川省瀘州市中考英語試題含解析
- 2025屆河南省九師聯(lián)盟商開大聯(lián)考高一數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 撫養(yǎng)權(quán)起訴狀(31篇)
- 2024年“一崗雙責(zé)”制度(五篇)
評論
0/150
提交評論