版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 成 績 評 定 表學(xué)生姓名班級學(xué)號專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)題目計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與CPU的匹配 評語組長簽字:成績?nèi)掌?2015 年12 月15 日課程設(shè)計(jì)任務(wù)書學(xué) 院信息科學(xué)與工程學(xué)院專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名班級學(xué)號課程設(shè)計(jì)題目計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與CPU的匹配。實(shí)踐教學(xué)要求與任務(wù):任務(wù):計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與
2、CPU的匹配。要求:1)對相應(yīng)的題目進(jìn)行算法設(shè)計(jì)2)編寫源代碼3)上機(jī)調(diào)試4)顯示調(diào)試結(jié)果5)寫出實(shí)驗(yàn)總結(jié)工作計(jì)劃與進(jìn)度安排:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)時間安排在教學(xué)第14周、第15周內(nèi)完成,按上述題目要求完成查閱資料、程序設(shè)計(jì)、調(diào)試、運(yùn)行等工作。時間安排如下:1、 查閱資料、與初步設(shè)計(jì);1-2天2、 整體功能設(shè)計(jì)、代碼編碼與初步調(diào)試。1-3天3、 調(diào)試和軟件功能的測試和驗(yàn)收。1-3天4、 答辯與論文撰寫。1-2天指導(dǎo)教師: 2015年11月28日專業(yè)負(fù)責(zé)人:2015年11月28日學(xué)院教學(xué)副院長:2015年11月28日目 錄 一、題目概述(內(nèi)容及要求)1二、功能分析4三、設(shè)計(jì)6四、運(yùn)行與測試7五、總結(jié)8
3、參考文獻(xiàn)13一、 題目概述(內(nèi)容及要求)1. 內(nèi)容:計(jì)算機(jī)外部輸出設(shè)備(如顯示器)和的CPU處理數(shù)據(jù)的速度不同。按先來先服務(wù)的方式進(jìn)行管理,設(shè)計(jì)緩沖隊(duì)列,實(shí)現(xiàn)外設(shè)與CPU的匹配。2. 要求:1)對相應(yīng)的題目進(jìn)行算法設(shè)計(jì)2)編寫源代碼3)上機(jī)調(diào)試4)顯示調(diào)試結(jié)果二、 功能分析1. 功能模塊圖主函數(shù)創(chuàng)建隊(duì)列刪除隊(duì)列元素查詢隊(duì)列元素圖2.1 功能模塊圖程序主要功能分為三個部分:1, 第一個部分為創(chuàng)建隊(duì)列。創(chuàng)建一個尾插的鏈表存儲數(shù)據(jù)2, 第二部分為刪除隊(duì)列元素,根據(jù)隊(duì)列特點(diǎn),應(yīng)從鏈表頭部刪除元素3, 第三部分為查詢隊(duì)列元素,經(jīng)過查詢經(jīng)過一系列處理后,隊(duì)列中的元素。4, 在程序的主體main函數(shù)中設(shè)計(jì)程
4、序菜單,通過用戶輸入選擇實(shí)現(xiàn)種種功能2.程序流程圖定義變量Case3Case2Case1圖2.2 程序流程圖開始While(1)Switch(n)Creat()Del()Print()顯示結(jié)果Main函數(shù)流程設(shè)計(jì)圖:通過一個while循環(huán)來實(shí)現(xiàn)菜單的設(shè)計(jì),內(nèi)部用switch語句實(shí)現(xiàn)對不同功能的函數(shù)的調(diào)用。三、 設(shè)計(jì)根據(jù)題目要求,是要設(shè)計(jì)一個隊(duì)列程序,隊(duì)列的特點(diǎn)為先進(jìn)先出。因此根據(jù)該特點(diǎn)我設(shè)計(jì)了一個尾插頭刪的鏈表。數(shù)據(jù)在內(nèi)存中鏈?zhǔn)酱鎯?,用一個Creat()函數(shù)實(shí)現(xiàn)對鏈表的創(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)前用戶編號:%d n", p->num);printf("輸入證件尾號和用戶姓名(中間都好分隔):");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)前用戶編號:%d n", p->num);printf("輸入證件尾號和用戶姓名(中間都好分隔,輸入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號用戶:%s業(yè)務(wù)辦理完畢n", front ->num, front ->name);elseprintf("當(dāng)前無人排隊(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("序號:%d, 姓名:%sn", p->num, p->name);p = p->next;while(p != NULL);設(shè)計(jì)思路:首先程序采用菜單,用戶需要輸入與操作相對應(yīng)的序號選項(xiàng)來運(yùn)行程序。其次,在輸入序號選項(xiàng)后,程序會執(zhí)行相應(yīng)的函數(shù)。題目要求做一個隊(duì)列程序,我把它想象作是一個排隊(duì)程序。(1) 有人來掛號排隊(duì)。這時候就需要創(chuàng)建尾
9、插鏈表函數(shù)。這部分也就相當(dāng)于計(jì)算機(jī)鍵盤錄入。(2) 有人排隊(duì)就需要有人處理。所以設(shè)計(jì)了一個del()函數(shù)從鏈表的頭部刪除數(shù)據(jù)。這部分就相當(dāng)于計(jì)算機(jī)CPU處理數(shù)據(jù)。(3) 有時候需要查詢當(dāng)前還有多少人排隊(duì)。所以設(shè)計(jì)個一個print()函數(shù)將隊(duì)列信息打印出來。這部分相當(dāng)于計(jì)算機(jī)顯示器部分。以此方式來實(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ì)列長度 int main(void)struct data * front = NULL;struct data * real = NULL;while(1)printf("-n");printf("- 1·掛號排隊(duì) -n&q
11、uot;);printf("- 2·業(yè)務(wù)辦理 -n");printf("- 3·查詢當(dāng)前辦理業(yè)務(wù)的人 -n");printf("-n");int num;printf("請輸入業(yè)務(wù)序號:"); 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)前用戶編號:%d n", p->num);printf("輸入證件尾號和用戶姓名(中間都好分隔):");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)前用戶編號:%d n", p->num);printf("輸入證件尾號和用戶姓名(中間都好分隔,輸入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號用戶:%s業(yè)務(wù)辦理完畢n", front ->num, front ->name);elseprintf("當(dāng)前無人排隊(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("序號:%d, 姓名:%sn", p->num, p->name);p = p->next;while(p != NULL);四、運(yùn)行與測試1)運(yùn)行后主菜單界面圖 4.1 程序運(yùn)行圖一經(jīng)運(yùn)行,程序能正確顯示菜單。2)測試能否正確調(diào)用功能函數(shù)圖4.2 程序運(yùn)行圖二3)測試算法是否能夠正確執(zhí)行圖 4.2 程序運(yùn)行圖二圖
16、4.3 程序運(yùn)行圖三圖4.3 程序運(yùn)行圖四圖4.3 程序運(yùn)行圖五經(jīng)測試,算法能夠正確執(zhí)行,程序運(yùn)行正確。五、總結(jié)課程設(shè)計(jì)過程中出現(xiàn)的技術(shù)難點(diǎn)和解決方法: 在進(jìn)行課程設(shè)計(jì)過程中對題目不能夠很好的理解。題目內(nèi)容略有抽象,無法直接具體實(shí)現(xiàn),這需要我們將題目和顯示生活進(jìn)行聯(lián)想。才能更好的解決問題。在課程設(shè)計(jì)中設(shè)計(jì)創(chuàng)建鏈表的程序,鏈表創(chuàng)建要實(shí)現(xiàn)尾插。在設(shè)計(jì)過程中,由于指針較多,出現(xiàn)了混亂的情況,這就需要我們對于變量名字的定義要有含義,必要的地方要有注釋。在設(shè)計(jì)刪除元素函數(shù)的時候,出現(xiàn)了只能刪除第一個元素,之后的元素不能刪除顯示為沒有隊(duì)列元素可被刪除。經(jīng)排查這種情況出現(xiàn)的原因?yàn)閯?chuàng)建鏈表是首元素沒
17、有和后邊的元素連接上。導(dǎo)致創(chuàng)建了很多節(jié)點(diǎn),但在實(shí)際鏈表中只有一個元素。經(jīng)過修改creat()函數(shù)后,問題解決。在主函數(shù)中設(shè)置了一個清屏語句。但是由于放置的位置不太合理。導(dǎo)致del()函數(shù)和print()函數(shù)所顯示在屏幕上的內(nèi)容被清除,無法觀察結(jié)果。因此調(diào)整了清屏語句的位置。課程設(shè)計(jì)期間的主要收獲: 通過這次課程設(shè)計(jì)使我對數(shù)據(jù)結(jié)構(gòu)有了更深的了解,也明白了數(shù)據(jù)結(jié)構(gòu)在生活中的實(shí)際應(yīng)用,每一個日常生活中的事情,都可以抽象為一種數(shù)據(jù)結(jié)構(gòu)。而我們程序設(shè)計(jì)的目的就是為了解決日常生活中遇到的問題。因此學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)尤為重要。通過這次課設(shè)使我對程序設(shè)計(jì)的理解更深了。對數(shù)據(jù)結(jié)構(gòu)的理論知識和實(shí)現(xiàn)具體的程序的過程有了更多的經(jīng)驗(yàn),不再是單一的理論學(xué)習(xí)。算法很重要,但是也要能把算法做出程序的能力。有時我們對于算法的理解已經(jīng)很透
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 森林資源利用護(hù)林員勞動合同
- 高山鉆探鉆機(jī)施工合同
- 語言學(xué)習(xí)培訓(xùn)合同
- 旅游公司配電房安裝協(xié)議
- 施工期間技術(shù)支持協(xié)議
- 節(jié)日慶典空地租賃合同
- 大數(shù)據(jù)項(xiàng)目招投標(biāo)合同管理辦法
- 鄉(xiāng)村公路升級改造合同
- 城市改造廉政合同
- 8站小車呼叫的plc控制
- _ 基本粒子與宏觀物體內(nèi)在聯(lián)系
- 象棋比賽積分編排表
- 小學(xué)贛美版六年級美術(shù)上冊第二十課向往和平課件(16張)ppt課件
- 溶解度曲線教學(xué)設(shè)計(jì)
- DPP4抑制劑比較篇PPT課件
- 中藥飲片購進(jìn)驗(yàn)收記錄表格模板
- TCM遠(yuǎn)紅外發(fā)展初析
- 滑坡穩(wěn)定性計(jì)算及滑坡推力計(jì)算
- 繼教脈圖分析 0
- 醫(yī)院各科室規(guī)章制度匯編
評論
0/150
提交評論