數(shù)據(jù)結(jié)構(gòu)課設(shè)——隊(duì)列程序_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課設(shè)——隊(duì)列程序_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課設(shè)——隊(duì)列程序_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課設(shè)——隊(duì)列程序_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課設(shè)——隊(duì)列程序_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 成 績(jī) 評(píng) 定 表學(xué)生姓名班級(jí)學(xué)號(hào)專(zhuān) 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)題目計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來(lái)先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與CPU的匹配 評(píng)語(yǔ)組長(zhǎng)簽字:成績(jī)?nèi)掌?2015 年12 月15 日課程設(shè)計(jì)任務(wù)書(shū)學(xué) 院信息科學(xué)與工程學(xué)院專(zhuān) 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名班級(jí)學(xué)號(hào)課程設(shè)計(jì)題目計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來(lái)先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與CPU的匹配。實(shí)踐教學(xué)要求與任務(wù):任務(wù):計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來(lái)先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與

2、CPU的匹配。要求:1)對(duì)相應(yīng)的題目進(jìn)行算法設(shè)計(jì)2)編寫(xiě)源代碼3)上機(jī)調(diào)試4)顯示調(diào)試結(jié)果5)寫(xiě)出實(shí)驗(yàn)總結(jié)工作計(jì)劃與進(jìn)度安排:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)時(shí)間安排在教學(xué)第14周、第15周內(nèi)完成,按上述題目要求完成查閱資料、程序設(shè)計(jì)、調(diào)試、運(yùn)行等工作。時(shí)間安排如下:1、 查閱資料、與初步設(shè)計(jì);1-2天2、 整體功能設(shè)計(jì)、代碼編碼與初步調(diào)試。1-3天3、 調(diào)試和軟件功能的測(cè)試和驗(yàn)收。1-3天4、 答辯與論文撰寫(xiě)。1-2天指導(dǎo)教師: 2015年11月28日專(zhuān)業(yè)負(fù)責(zé)人:2015年11月28日學(xué)院教學(xué)副院長(zhǎng):2015年11月28日目 錄 一、題目概述(內(nèi)容及要求)1二、功能分析4三、設(shè)計(jì)6四、運(yùn)行與測(cè)試7五、總結(jié)8

3、參考文獻(xiàn)13一、 題目概述(內(nèi)容及要求)1. 內(nèi)容:計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來(lái)先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與CPU的匹配。2. 要求:1)對(duì)相應(yīng)的題目進(jìn)行算法設(shè)計(jì)2)編寫(xiě)源代碼3)上機(jī)調(diào)試4)顯示調(diào)試結(jié)果二、 功能分析1. 功能模塊圖主函數(shù)創(chuàng)建隊(duì)列刪除隊(duì)列元素查詢(xún)隊(duì)列元素圖2.1 功能模塊圖程序主要功能分為三個(gè)部分:1, 第一個(gè)部分為創(chuàng)建隊(duì)列。創(chuàng)建一個(gè)尾插的鏈表存儲(chǔ)數(shù)據(jù)2, 第二部分為刪除隊(duì)列元素,根據(jù)隊(duì)列特點(diǎn),應(yīng)從鏈表頭部刪除元素3, 第三部分為查詢(xún)隊(duì)列元素,經(jīng)過(guò)查詢(xún)經(jīng)過(guò)一系列處理后,隊(duì)列中的元素。4, 在程序的主體main函數(shù)中設(shè)計(jì)程

4、序菜單,通過(guò)用戶(hù)輸入選擇實(shí)現(xiàn)種種功能2.程序流程圖定義變量Case3Case2Case1圖2.2 程序流程圖開(kāi)始While(1)Switch(n)Creat()Del()Print()顯示結(jié)果Main函數(shù)流程設(shè)計(jì)圖:通過(guò)一個(gè)while循環(huán)來(lái)實(shí)現(xiàn)菜單的設(shè)計(jì),內(nèi)部用switch語(yǔ)句實(shí)現(xiàn)對(duì)不同功能的函數(shù)的調(diào)用。三、 設(shè)計(jì)根據(jù)題目要求,是要設(shè)計(jì)一個(gè)隊(duì)列程序,隊(duì)列的特點(diǎn)為先進(jìn)先出。因此根據(jù)該特點(diǎn)我設(shè)計(jì)了一個(gè)尾插頭刪的鏈表。數(shù)據(jù)在內(nèi)存中鏈?zhǔn)酱鎯?chǔ),用一個(gè)Creat()函數(shù)實(shí)現(xiàn)對(duì)鏈表的創(chuàng)建。Creat()函數(shù)代碼如下:struct data * Creat(struct data * front, struc

5、t data * real)struct data * p;real = (struct data *)malloc(sizeof(struct data);p = real;p ->num = n + 1;printf("當(dāng)前用戶(hù)編號(hào):%d n", p->num);printf("輸入證件尾號(hào)和用戶(hù)姓名(中間都好分隔):");scanf("%d,%s", &p ->realnum, &p->name);while(p ->realnum != 0)n += 1;if(n = 1)fron

6、t = p;elsereal->next = p;real = p;p = (struct data *)malloc(sizeof(struct data);p ->num = n + 1;printf("當(dāng)前用戶(hù)編號(hào):%d n", p->num);printf("輸入證件尾號(hào)和用戶(hù)姓名(中間都好分隔,輸入0退出):n");scanf("%d,%s", &p ->realnum, &p->name);real ->next = NULL;return (front);以上函數(shù)實(shí)現(xiàn)了

7、隊(duì)列的后進(jìn)特點(diǎn),而先出特點(diǎn)則由del()函數(shù)實(shí)現(xiàn)del()函數(shù)代碼如下:struct data * del(struct data * front)struct data * p = NULL;if(front != NULL)p = front ->next;front ->next = NULL;printf("第%d號(hào)用戶(hù):%s業(yè)務(wù)辦理完畢n", front ->num, front ->name);elseprintf("當(dāng)前無(wú)人排隊(duì)辦理業(yè)務(wù)!n");return (p);最后一部分為查看隊(duì)列元素函數(shù),代碼如下:void

8、print(struct data * front)struct data * p;printf("現(xiàn)在排隊(duì)辦理業(yè)務(wù)的人有:n");p = front;if(front !=NULL)doprintf("序號(hào):%d, 姓名:%sn", p->num, p->name);p = p->next;while(p != NULL);設(shè)計(jì)思路:首先程序采用菜單,用戶(hù)需要輸入與操作相對(duì)應(yīng)的序號(hào)選項(xiàng)來(lái)運(yùn)行程序。其次,在輸入序號(hào)選項(xiàng)后,程序會(huì)執(zhí)行相應(yīng)的函數(shù)。題目要求做一個(gè)隊(duì)列程序,我把它想象作是一個(gè)排隊(duì)程序。(1) 有人來(lái)掛號(hào)排隊(duì)。這時(shí)候就需要?jiǎng)?chuàng)建尾

9、插鏈表函數(shù)。這部分也就相當(dāng)于計(jì)算機(jī)鍵盤(pán)錄入。(2) 有人排隊(duì)就需要有人處理。所以設(shè)計(jì)了一個(gè)del()函數(shù)從鏈表的頭部刪除數(shù)據(jù)。這部分就相當(dāng)于計(jì)算機(jī)CPU處理數(shù)據(jù)。(3) 有時(shí)候需要查詢(xún)當(dāng)前還有多少人排隊(duì)。所以設(shè)計(jì)個(gè)一個(gè)print()函數(shù)將隊(duì)列信息打印出來(lái)。這部分相當(dāng)于計(jì)算機(jī)顯示器部分。以此方式來(lái)實(shí)現(xiàn)題目要求的隊(duì)列緩沖程序。完整源代碼:#include<stdio.h>#include<stdlib.h>#include<windows.h>#define N 5struct data * Creat(struct data * front, struct d

10、ata * real);struct data * del(struct data * front);void print(struct data * front);struct data int num;int realnum;char nameN; struct data * next;int n = 0;/定義全局變量,記錄隊(duì)列長(zhǎng)度 int main(void)struct data * front = NULL;struct data * real = NULL;while(1)printf("-n");printf("- 1·掛號(hào)排隊(duì) -n&q

11、uot;);printf("- 2·業(yè)務(wù)辦理 -n");printf("- 3·查詢(xún)當(dāng)前辦理業(yè)務(wù)的人 -n");printf("-n");int num;printf("請(qǐng)輸入業(yè)務(wù)序號(hào):"); scanf("%d", &num);system("cls");switch(num)case 1: front = Creat(front, real); break;case 2: front = del(front);break;case 3: pri

12、nt(front) ; break;return 0;struct data * Creat(struct data * front, struct data * real)struct data * p;real = (struct data *)malloc(sizeof(struct data);p = real;p ->num = n + 1;printf("當(dāng)前用戶(hù)編號(hào):%d n", p->num);printf("輸入證件尾號(hào)和用戶(hù)姓名(中間都好分隔):");scanf("%d,%s", &p ->

13、;realnum, &p->name);while(p ->realnum != 0)n += 1;if(n = 1)front = p;elsereal->next = p;real = p;p = (struct data *)malloc(sizeof(struct data);p ->num = n + 1;printf("當(dāng)前用戶(hù)編號(hào):%d n", p->num);printf("輸入證件尾號(hào)和用戶(hù)姓名(中間都好分隔,輸入0退出):n");scanf("%d,%s", &p -&

14、gt;realnum, &p->name);real ->next = NULL;return (front); struct data * del(struct data * front)struct data * p = NULL;if(front != NULL)p = front ->next;front ->next = NULL;printf("第%d號(hào)用戶(hù):%s業(yè)務(wù)辦理完畢n", front ->num, front ->name);elseprintf("當(dāng)前無(wú)人排隊(duì)辦理業(yè)務(wù)!n");retur

15、n (p); void print(struct data * front)struct data * p;printf("現(xiàn)在排隊(duì)辦理業(yè)務(wù)的人有:n");p = front;if(front !=NULL)doprintf("序號(hào):%d, 姓名:%sn", p->num, p->name);p = p->next;while(p != NULL);四、運(yùn)行與測(cè)試1)運(yùn)行后主菜單界面圖 4.1 程序運(yùn)行圖一經(jīng)運(yùn)行,程序能正確顯示菜單。2)測(cè)試能否正確調(diào)用功能函數(shù)圖4.2 程序運(yùn)行圖二3)測(cè)試算法是否能夠正確執(zhí)行圖 4.2 程序運(yùn)行圖二圖

16、4.3 程序運(yùn)行圖三圖4.3 程序運(yùn)行圖四圖4.3 程序運(yùn)行圖五經(jīng)測(cè)試,算法能夠正確執(zhí)行,程序運(yùn)行正確。五、總結(jié)課程設(shè)計(jì)過(guò)程中出現(xiàn)的技術(shù)難點(diǎn)和解決方法: 在進(jìn)行課程設(shè)計(jì)過(guò)程中對(duì)題目不能夠很好的理解。題目?jī)?nèi)容略有抽象,無(wú)法直接具體實(shí)現(xiàn),這需要我們將題目和顯示生活進(jìn)行聯(lián)想。才能更好的解決問(wèn)題。在課程設(shè)計(jì)中設(shè)計(jì)創(chuàng)建鏈表的程序,鏈表創(chuàng)建要實(shí)現(xiàn)尾插。在設(shè)計(jì)過(guò)程中,由于指針較多,出現(xiàn)了混亂的情況,這就需要我們對(duì)于變量名字的定義要有含義,必要的地方要有注釋。在設(shè)計(jì)刪除元素函數(shù)的時(shí)候,出現(xiàn)了只能刪除第一個(gè)元素,之后的元素不能刪除顯示為沒(méi)有隊(duì)列元素可被刪除。經(jīng)排查這種情況出現(xiàn)的原因?yàn)閯?chuàng)建鏈表是首元素沒(méi)

17、有和后邊的元素連接上。導(dǎo)致創(chuàng)建了很多節(jié)點(diǎn),但在實(shí)際鏈表中只有一個(gè)元素。經(jīng)過(guò)修改creat()函數(shù)后,問(wèn)題解決。在主函數(shù)中設(shè)置了一個(gè)清屏語(yǔ)句。但是由于放置的位置不太合理。導(dǎo)致del()函數(shù)和print()函數(shù)所顯示在屏幕上的內(nèi)容被清除,無(wú)法觀察結(jié)果。因此調(diào)整了清屏語(yǔ)句的位置。課程設(shè)計(jì)期間的主要收獲: 通過(guò)這次課程設(shè)計(jì)使我對(duì)數(shù)據(jù)結(jié)構(gòu)有了更深的了解,也明白了數(shù)據(jù)結(jié)構(gòu)在生活中的實(shí)際應(yīng)用,每一個(gè)日常生活中的事情,都可以抽象為一種數(shù)據(jù)結(jié)構(gòu)。而我們程序設(shè)計(jì)的目的就是為了解決日常生活中遇到的問(wèn)題。因此學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)尤為重要。通過(guò)這次課設(shè)使我對(duì)程序設(shè)計(jì)的理解更深了。對(duì)數(shù)據(jù)結(jié)構(gòu)的理論知識(shí)和實(shí)現(xiàn)具體的程序的過(guò)程有了更多的經(jīng)驗(yàn),不再是單一的理論學(xué)習(xí)。算法很重要,但是也要能把算法做出程序的能力。有時(shí)我們對(duì)于算法的理解已經(jīng)很透

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論