版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 Foshan University課程設(shè)計(jì)說(shuō)明書(shū) 操作系統(tǒng)課程和設(shè)計(jì) 學(xué) 院: 電子與信息工程學(xué)院 專 業(yè): 2012網(wǎng)絡(luò)工程 2 學(xué) 號(hào): 學(xué)生姓名: 二一五 年 七 月課程設(shè)計(jì)任務(wù)書(shū) 專業(yè) 級(jí) 班 一、 設(shè)計(jì)題目:操作系統(tǒng)圖形顯示程序接口設(shè)計(jì)二、 主要內(nèi)容: 本設(shè)計(jì)的目的是通過(guò)設(shè)計(jì)一些簡(jiǎn)單的中斷調(diào)用接口,使學(xué)生掌握程序接口的設(shè)計(jì)方法。 要求在熟悉DOS操作系統(tǒng)的中斷接口及程序接口的基礎(chǔ)上,利用C語(yǔ)言設(shè)計(jì)簡(jiǎn)單的顯示程序接口,最后通過(guò)程序驗(yàn)證全部接口的正確性。 三、 具體要求利用C語(yǔ)言設(shè)計(jì)DOS中斷中21H與圖形操作相關(guān)的中斷調(diào)用,具體包括:1、 設(shè)置點(diǎn)陣圖形的彩色
2、2、 畫(huà)點(diǎn)3、 畫(huà)線4、 畫(huà)矩形5、 畫(huà)圓6、 屏幕區(qū)域填充7、屏幕區(qū)域保存8、屏幕區(qū)域邏輯恢復(fù)9、清除屏幕/區(qū)域10、屏幕區(qū)域卷動(dòng)11、鼠標(biāo)控制12、多窗口功能 上述功能由兩部分程序驗(yàn)證,中斷駐留程序和驗(yàn)證程序。首先運(yùn)行中斷駐留程序,然后運(yùn)行驗(yàn)證程序得到預(yù)期結(jié)果。4、 進(jìn)度安排 1-2天:資料查找、系統(tǒng)分析,數(shù)據(jù)流程分析,概要設(shè)計(jì) 1-2天:系統(tǒng)詳細(xì)設(shè)計(jì)、功能設(shè)計(jì) 5-6天:模塊設(shè)計(jì)、編程調(diào)試 1天:資料整理、課程設(shè)計(jì)說(shuō)明書(shū)編寫(xiě)。五、完成后應(yīng)上交的材料1、課程設(shè)計(jì)說(shuō)明書(shū)(程序流程圖、功能模塊圖、相關(guān)數(shù)據(jù)結(jié)構(gòu)、核心算法等)2、相關(guān)源程序文件六、總評(píng)成績(jī) 指導(dǎo)教師 簽名日期 年 月 日 系 主
3、任 審核日期 年 月 日目 錄一、程序概述51.1程序任務(wù).51.2程序原理 .5二、概念原理.5三、總體設(shè)計(jì) .63.1設(shè)計(jì)流程圖.63.2實(shí)現(xiàn)方法.6四、詳細(xì)設(shè)計(jì) .74.1函數(shù)使用.7五、完成情況 .7六、使用說(shuō)明 .7七、設(shè)計(jì)總結(jié) .97.1系統(tǒng)特色.97.2經(jīng)驗(yàn)教訓(xùn).97.3實(shí)踐感受.9參考資料.9附 錄.10一 程序概述1.1. 程序任務(wù)本設(shè)計(jì)是要求編寫(xiě)一個(gè)簡(jiǎn)單的命令解釋器,利用C語(yǔ)言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用進(jìn)行設(shè)計(jì)的,主要完成要求中所提到的功能如:畫(huà)點(diǎn)、畫(huà)線、畫(huà)圓、填充、恢復(fù)、屏幕滾動(dòng)等。1.2. 程序原理設(shè)計(jì)過(guò)程中發(fā)現(xiàn)使用C語(yǔ)言進(jìn)行圖形操作如果使用傳統(tǒng)的功能
4、菜單和接口選項(xiàng),會(huì)使功能無(wú)法銜接,模塊化感嚴(yán)重,功能使用不連續(xù)的問(wèn)題,用戶體驗(yàn)非常低。所以經(jīng)過(guò)思考了查閱資料后,改用單面板上,鼠標(biāo)控制輸入的辦法實(shí)現(xiàn)功能,鼠標(biāo)的控制使用已經(jīng)包含了中斷機(jī)制,所以不用特意添加其他功能模塊的中斷。使用鼠標(biāo)位置追蹤函數(shù),建立int 33h中斷功能調(diào)用組,隨時(shí)獲取鼠標(biāo)位置以及功能選擇。GetCursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo)),調(diào)用ScreenToClient(hwnd, &point) ; / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo),最后再檢測(cè)鼠標(biāo)按下左鍵的狀態(tài),調(diào)用函數(shù)GetAsyncKeyState(VK_LBUTTON)。
5、二 概念原理2.1中斷 中斷:顧名思義,是指當(dāng)出現(xiàn)需要時(shí),CPU暫時(shí)停止當(dāng)前程序的執(zhí)行而執(zhí)行處理新情況的程序和執(zhí)行過(guò)程。即在程序運(yùn)行過(guò)程中,系統(tǒng)出現(xiàn)了一個(gè)必須由CPU立即處理的情況,此時(shí),CPU暫時(shí)中止程序的執(zhí)行轉(zhuǎn)而處理這個(gè)新的情況的過(guò)程就叫做中斷。 2.2 圖形顯示程序接口圖形顯示接口(GDI)提供了一系列的函數(shù)和相關(guān)的結(jié)構(gòu),應(yīng)用程序可以使用它們?cè)陲@示器、打印機(jī)或其他設(shè)備上生成圖形化的輸出結(jié)果。使用GDI函數(shù)可以繪制直線、曲線、閉合圖形、文本以及。所繪制的圖形的顏色和風(fēng)格依賴于所創(chuàng)建的繪圖對(duì)象,即畫(huà)筆、和字體。你可以使用畫(huà)筆來(lái)繪制直線和曲線,使用來(lái)填充閉合圖形的內(nèi)部,使用字體來(lái)書(shū)寫(xiě)文本。2.
6、3. 中斷駐留程序 中斷駐留程序,指的是當(dāng)加載進(jìn)內(nèi)存的程序執(zhí)行完畢后,依然能夠保存產(chǎn)生的臨時(shí)數(shù)據(jù)跟臨時(shí)狀態(tài),而在下一次調(diào)用時(shí)繼續(xù)執(zhí)行。2.4. 系統(tǒng)調(diào)用 系統(tǒng)調(diào)用,顧名思義,說(shuō)的是操作系統(tǒng)提供給用戶程序調(diào)用的一組“特殊”接口。用戶程序可以通過(guò)這組“特殊”接口來(lái)獲得操作系統(tǒng)內(nèi)核提供的服務(wù),比如用戶可以通過(guò)文件系統(tǒng)相關(guān)的調(diào)用請(qǐng)求系統(tǒng)打開(kāi)文件、關(guān)閉文件或讀寫(xiě)文件,可以通過(guò)時(shí)鐘相關(guān)的系統(tǒng)調(diào)用獲得系統(tǒng)時(shí)間或設(shè)置定時(shí)器等。 從邏輯上來(lái)說(shuō),系統(tǒng)調(diào)用可被看成是一個(gè)內(nèi)核與用戶空間程序交互的接口,它好比一個(gè)中間人,把用戶進(jìn)程的請(qǐng)求傳達(dá)給內(nèi)核,待內(nèi)核把請(qǐng)求處理完畢后再將處理結(jié)果送回給用戶空間。三 總體設(shè)計(jì)選取顏色3
7、.1程序流程圖畫(huà)點(diǎn)鼠鼠標(biāo) 控 制畫(huà)線畫(huà)圓圖圖形顯示程序接口設(shè)計(jì)矩形多窗口功能屏幕幕 區(qū) 域 邏 輯 操作鼠標(biāo)控制清除屏幕/區(qū)域屏幕區(qū)域邏輯恢復(fù)屏幕區(qū)域保存屏幕區(qū)域填充3.2實(shí)現(xiàn)方法使用GetCursorPos(&point);函數(shù)獲取鼠標(biāo)指針位置(屏幕坐標(biāo)),隨時(shí)獲取鼠標(biāo)位置以及功能選擇。調(diào)用ScreenToClient(hwnd, &point) ; / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo),調(diào)用函數(shù)GetAsyncKeyState(VK_LBUTTON),檢測(cè)鼠標(biāo)按下左鍵的狀態(tài),根據(jù)鼠標(biāo)狀態(tài)選擇功能并輸出。四 詳細(xì)設(shè)計(jì)4.1函數(shù)使用Show()輸出功能面板邊框以及調(diào)色板色塊GetC
8、ursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo))ScreenToClient(hwnd, &point); / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo)Line() 畫(huà)線函數(shù)Bar() 畫(huà)條函數(shù)畫(huà)矩形函數(shù)Circle()畫(huà)圓函數(shù)Setfillstyle() 設(shè)置填充圖樣和顏色函數(shù)() 保存圖像函數(shù)Putimage() 輸出圖像函數(shù)Cleardevice();刷新屏幕五 完成情況 本程序完成了其中的選擇顏色,設(shè)置點(diǎn)陣圖形的彩色,畫(huà)點(diǎn),畫(huà)線,畫(huà)矩形,畫(huà)圓,屏幕區(qū)域填充,屏幕區(qū)域保存,屏幕區(qū)域邏輯恢復(fù),清除屏幕/區(qū)域,鼠標(biāo)控制,多窗口功能。屏幕卷動(dòng)功能尚未實(shí)現(xiàn),但大部分及主要
9、功能都已實(shí)現(xiàn),并不影響使用,部分功能存在BUG,使用時(shí)需遵循一定使用方法,有待改善。六 使用說(shuō)明左邊工具欄按順序?yàn)?、畫(huà)曲線2、畫(huà)直線3、畫(huà)矩形4、畫(huà)圓5、封閉區(qū)域顏色填充6、保存畫(huà)面到文件7、清屏8、撤銷一步操作9、恢復(fù)之前保存的文件到畫(huà)面上底部為調(diào)色板,點(diǎn)擊選色七 設(shè)計(jì)總結(jié)7.1系統(tǒng)特色本系統(tǒng)使用單頁(yè)面操作,比起傳統(tǒng)的DOS界面操作的選項(xiàng)菜單來(lái)說(shuō),更加便利以及直觀,可以在同一窗口看到多次操作的結(jié)果,用戶體驗(yàn)更好,而且全程鼠標(biāo)控制,直觀的菜單欄都是本軟件亮點(diǎn)。7.2經(jīng)驗(yàn)教訓(xùn)本次課程設(shè)計(jì)一開(kāi)始,我使用的是傳統(tǒng)的選擇菜單模式實(shí)現(xiàn)功能,每個(gè)功能都需要經(jīng)過(guò)一次選擇和退出才能執(zhí)行下一個(gè)功能,沒(méi)有連貫性
10、,并不符合我們本次任務(wù)的畫(huà)板功能,經(jīng)過(guò)與同學(xué)的討論分析后,我們才決定重新開(kāi)始,更改界面,這告訴我們要擺脫定勢(shì)思維,因?yàn)槲覀兞?xí)慣于作選項(xiàng)接口,就忘了分析。做項(xiàng)目之前應(yīng)先分析清楚,所需要的方法及功能再開(kāi)始程序設(shè)計(jì),而不應(yīng)該使用老方法,直接開(kāi)始。7.3實(shí)驗(yàn)感受本次課程設(shè)計(jì)讓我對(duì)C語(yǔ)言的感悟更加深了一層,曾經(jīng)以為C語(yǔ)言有許多功能都無(wú)法實(shí)現(xiàn),但當(dāng)開(kāi)始課程設(shè)計(jì)并查找資料都發(fā)現(xiàn),C語(yǔ)言功能強(qiáng)大而且深?yuàn)W,之前所學(xué)習(xí)的東西可以說(shuō)是滄海一粟,是在拿不出手,經(jīng)過(guò)了大量翻閱C語(yǔ)言高級(jí)教程后,才有所了解。數(shù)據(jù)結(jié)構(gòu)與操作系統(tǒng)知識(shí)也是不可或缺,作為本次設(shè)計(jì)的核心,操作系統(tǒng)的中斷功能又花費(fèi)了我們大量的時(shí)間來(lái)理解,然后用C語(yǔ)言
11、實(shí)現(xiàn),又一次鍛煉了我的編碼功能,在做后退功能的時(shí)候,需要用到棧結(jié)構(gòu)來(lái)保存之前多部操作,但是實(shí)現(xiàn)了棧之后,卻無(wú)法實(shí)現(xiàn) 類 類型入棧,所以最終只能做出單步恢復(fù)的功能,還是有待改進(jìn)。本次課程設(shè)計(jì)讓我加深了,軟件設(shè)計(jì)的整個(gè)流程以及對(duì)語(yǔ)言的熟悉程度,為以后打下堅(jiān)實(shí)基礎(chǔ)。參考資料1、計(jì)算機(jī)操作系統(tǒng)教程(第2版)張堯?qū)W 史美林 編著 清華大學(xué)出版社 2、操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)任愛(ài)華 李鵬 劉方毅 清華大學(xué)出版社3、操作系統(tǒng)實(shí)驗(yàn)教程核心技術(shù)與編程實(shí)例顧寶根 王立松 顧喜梅 科學(xué)出版社4、C+編程思想Bruck 著 侯捷譯 機(jī)械工業(yè)出版社5、C 語(yǔ)言程序中清除鍵盤(pán)緩沖區(qū)的方法 楊長(zhǎng)虹 益陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào)附 錄#in
12、clude<ctype.h>#include <graphics.h>#include <stdio.h>#include<math.h>void main() void show(); IMAGE img; initgraph(1000, 680); / 初始化繪圖窗口 HWND hwnd = GetHWnd(); / 獲取繪圖窗口句柄 POINT point; setfillcolor(LIGHTGRAY); show(); int x1,y1,a=0,p,color; char s="SAVE" char seban=&
13、quot;調(diào)色板" char t="FULL" char c="CLEAR" char b="BACK" char r="RETURN" outtextxy(15,220,t); outtextxy(10,635,seban); outtextxy(15,270,s); outtextxy(10,320,c); outtextxy(15,380,b); outtextxy(3,430,r);while(true) GetCursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo)) Scr
14、eenToClient(hwnd, &point); / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo) if(GetAsyncKeyState(VK_LBUTTON) if(point.y>630) setcolor(getpixel(point.x,point.y); color=getpixel(point.x,point.y); if(point.x<60) if(point.y>0&&point.y<=50)/曲線 a=0; if(point.y>50&&point.y<=100)/直線 a=1; if(point.y>
15、100&&point.y<=150)/矩形 a=2; if(point.y>150&&point.y<=200)/圓 a=3; if(point.y>200&&point.y<=250)/full a=4; if(point.y>300&&point.y<=350)/刷新屏幕,重新輸出所有 getimage(&img,60,0,1000,610); cleardevice(); show(); outtextxy(10,320,c); outtextxy(15,270,s); ou
16、ttextxy(15,220,t); outtextxy(10,635,seban); outtextxy(15,380,b); outtextxy(3,430,r); if(point.y>250&&point.y<=300)/保存 getimage(&img,60,0,1000,610); saveimage("E:test.jpg"); HWND hwnd = GetHWnd(); MessageBox(hwnd, _T("已保存到E:text.jpg!"), _T("save"), MB_O
17、K) ; if(point.y>350&&point.y<=400)/后退 a=5; if(point.y>400&&point.y<=450)/恢復(fù)到文件內(nèi)容 a=6; while(1) x1=point.x; y1=point.y; if(a=0) /曲線 getimage(&img,60,0,1000,610); GetCursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo)) ScreenToClient(hwnd, &point); / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo) line(x1,y1,po
18、int.x,point.y);if(!GetAsyncKeyState(VK_LBUTTON) break; if(a=2)/矩形 if(!GetAsyncKeyState(VK_LBUTTON) getimage(&img,60,0,1000,610); GetCursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo)) ScreenToClient(hwnd, &point); / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo) line(x1,y1,point.x,y1); line(x1,y1,x1,point.y); line(x1,point.y,point.x,p
19、oint.y); line(point.x,y1,point.x,point.y); break; if(a=1)/直線 if(!GetAsyncKeyState(VK_LBUTTON) getimage(&img,60,0,1000,610); GetCursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo)) ScreenToClient(hwnd, &point); / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo) line(x1,y1,point.x,point.y); break; if(a=3)/圓 if(!GetAsyncKeyState(VK_LBUTTON)
20、 getimage(&img,60,0,1000,610); GetCursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo)) ScreenToClient(hwnd, &point); / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo)far circle(x1, y1, (int)sqrt(point.x-x1)*(point.x-x1)+(point.y-y1)*(point.y-y1); break; if(a=4)/full if(!GetAsyncKeyState(VK_LBUTTON) getimage(&img,60,0,1000,610); GetC
21、ursorPos(&point); / 獲取鼠標(biāo)指針位置(屏幕坐標(biāo)) ScreenToClient(hwnd, &point); / 將鼠標(biāo)指針位置轉(zhuǎn)換為窗口坐標(biāo) setfillcolor(color); setfillstyle(BS_SOLID); floodfill(point.x,point.y, BLACK); break; if(a=5)/后退 putimage(60, 0, &img);break; if(a=6)/文件恢復(fù) loadimage(&img, "E:test.jpg"); putimage(0,0, &im
22、g);break; void show() far floodfill(1,1,BLUE); setbkmode(TRANSPARENT);/背景模式。透明setcolor(BLACK);setfillcolor(BLACK);setfillstyle(BS_SOLID);bar(75,620,95,640);/使用對(duì)角線坐標(biāo)畫(huà)矩形setcolor(RED);setfillcolor(RED);setfillstyle(BS_SOLID);bar(75,650,95,670);/使用對(duì)角線坐標(biāo)畫(huà)矩形setcolor(GREEN);setfillcolor(GREEN);setfillstyle(BS_SOLID);bar(105,620,125,640);/使用對(duì)角線坐標(biāo)畫(huà)矩形setcolor(BLUE);setfillcolor(BLUE);setfillstyle(BS_SOLID);bar(105,650,125,670);/使用對(duì)角線坐標(biāo)畫(huà)矩形setcolor(YELLOW);setfillcolor(YELLOW);setfillstyle(BS_SOLID);bar(135,620,155,640);/使用對(duì)角線坐標(biāo)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津苗圃立體綠化施工方案
- 水庫(kù)清理泥漿方案
- 物業(yè)掃雪預(yù)算方案
- 寵物美容服務(wù)毛發(fā)損傷保障協(xié)議
- 數(shù)據(jù)驅(qū)動(dòng)的智能農(nóng)業(yè)種植技術(shù)應(yīng)用方案
- 涉縣輕鋼龍骨別墅施工方案
- 消費(fèi)品品牌授權(quán)經(jīng)營(yíng)協(xié)議
- 特種設(shè)備操作員安全操作及事故免責(zé)合同
- 酒店綠色能源采購(gòu)協(xié)議
- 裝修公司設(shè)計(jì)服務(wù)指南
- 電鍋爐房設(shè)計(jì)規(guī)程
- 合唱與指揮課程教學(xué)大綱
- 四年級(jí)心理健康 12.我也能當(dāng)家 課件(7張ppt)
- 性格色彩培訓(xùn)-ppt課件
- 10kV架空線路工程初步設(shè)計(jì)說(shuō)明書(shū)模板
- 鍋爐汽包水位控制系統(tǒng)設(shè)計(jì)[1]
- 政務(wù)禮儀培訓(xùn)課件(PPT66頁(yè))rar
- 定向培養(yǎng)對(duì)象面試表政審審查表樣式
- 水土保持常用監(jiān)測(cè)手段及方法
- 片石擋土墻砌筑施工方案及工藝方法
- 分析刑法中認(rèn)識(shí)因素和意志因素的關(guān)系
評(píng)論
0/150
提交評(píng)論