C語(yǔ)言課程設(shè)計(jì)《小畫板課程設(shè)計(jì)》_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)《小畫板課程設(shè)計(jì)》_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)《小畫板課程設(shè)計(jì)》_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)《小畫板課程設(shè)計(jì)》_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)《小畫板課程設(shè)計(jì)》_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、小畫板課程設(shè)計(jì)報(bào)告黑龍江東方學(xué)院電子信息專業(yè)課程設(shè)計(jì)報(bào)告 課程名稱 c語(yǔ)言課程設(shè)計(jì) 設(shè)計(jì)題目 小畫板課程設(shè)計(jì) 學(xué)生姓名 學(xué) 號(hào) 專業(yè)班級(jí) 電子信息一班 指導(dǎo)教師 2010年 12 月 22 日目錄第一章 概述(2)1.1課程設(shè)計(jì)目的(2)1.2課程設(shè)計(jì)要求(2)1.3設(shè)計(jì)要求具體說(shuō)明(2)1.4功能描述(2)第二章 軟件設(shè)計(jì)相關(guān)基礎(chǔ)知識(shí)介紹(3)2.1書寫程序時(shí)應(yīng)遵循的規(guī)則(3)2.2數(shù)據(jù)類型及其他格式控制變量(3) 2.3getch和printf函數(shù)(4)2.4if.else語(yǔ)句及實(shí)例說(shuō)明(4)2.5for語(yǔ)句及實(shí)例說(shuō)明(6)2.6wihile語(yǔ)句及實(shí)例說(shuō)明(7)2.7goto語(yǔ)句及用got

2、o語(yǔ)句構(gòu)成循環(huán)(8)2.8switch語(yǔ)句及實(shí)例說(shuō)明(8)第三章 詳細(xì)設(shè)計(jì)說(shuō)明(10)3.1 項(xiàng)目設(shè)計(jì)流程(10)3.2 系統(tǒng)模塊圖(10)3.3 圖形繪制流程(10)3.4 函數(shù)功能描述(11)3.5 源程序(11)第四章 程序說(shuō)明(14)4.1 運(yùn)行圖例(14)4.2 程序設(shè)計(jì)說(shuō)明(14)第五章 課程設(shè)計(jì)總結(jié)(15)第六章 附錄(參考文獻(xiàn))(15) 第一章 概述windows系統(tǒng)自帶的畫圖板簡(jiǎn)單靈巧,深受windows用戶的喜愛(ài),其占用資源少,操作簡(jiǎn)單,功能齊全等特點(diǎn)為用戶的小型圖形開(kāi)發(fā)帶來(lái)了很多便利。為此,也出現(xiàn)了很多利用vc等可視化開(kāi)發(fā)工具的模仿windows的畫圖板,這次課程設(shè)計(jì)我就

3、用c語(yǔ)言設(shè)計(jì)了一個(gè)簡(jiǎn)易的畫圖板,該畫板可以畫出任意圖形。操作也簡(jiǎn)單易懂。1.1 課程設(shè)計(jì)目的1.鞏固和加深學(xué)生對(duì)c語(yǔ)言課程的基本知識(shí)的理解和掌握;2.掌握c語(yǔ)言編程和程序調(diào)試的基本技能;3.利用c語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì);4.掌握書寫程序設(shè)計(jì)說(shuō)明文檔的能力5.提高運(yùn)用c語(yǔ)言解決實(shí)際問(wèn)題的能力。1.2 課程設(shè)計(jì)要求1.分析課程設(shè)計(jì)題目的要求;2.寫出詳細(xì)設(shè)計(jì)說(shuō)明;3.編寫程序代碼,調(diào)試程序使其能正確運(yùn)行;4.設(shè)計(jì)完成的軟件要便于操作和使用,有整齊、美觀的使用界面;5.設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告和源代碼文件的電子文檔。1.3 設(shè)計(jì)要求具體說(shuō)明1.在指導(dǎo)書提供的課程設(shè)計(jì)題目中選擇一題或自選題目(需經(jīng)指

4、導(dǎo)教師認(rèn)可);2.每個(gè)題目限一人完成,題目選定后不可更換;3.用戶提供的主操作界面應(yīng)該方便用戶的操作。4.最后提交的課程設(shè)計(jì)成果包括:a)課程設(shè)計(jì)報(bào)告電子稿;b)源程序文件;c)可執(zhí)行程序文件。1.4 功能描述 用c語(yǔ)言編程實(shí)現(xiàn)的畫圖板,具有基本的畫圖功能。本程序可以通過(guò)見(jiàn)大門的鼠標(biāo)按動(dòng),移動(dòng)畫出任意的圖形。具有簡(jiǎn)潔,易懂,方便的特點(diǎn)。 第二章 軟件設(shè)計(jì)相關(guān)知識(shí)介紹2.1書寫程序是應(yīng)遵循的規(guī)則從書寫清晰,便于閱讀,理解,維護(hù)的角度出發(fā),在書寫程序時(shí)應(yīng)遵循以下規(guī)則:1) 一個(gè)說(shuō)明或一個(gè)語(yǔ)句占一行。2) 用括起來(lái)的部分,通常表示了程序的某一層次結(jié)構(gòu),一般與該結(jié)構(gòu)語(yǔ)句的第一個(gè)字幕對(duì)齊,并單獨(dú)占一行。

5、3) 低一層次的語(yǔ)句或說(shuō)明可比高一層的語(yǔ)句或說(shuō)明縮進(jìn)若干格后書寫。一邊看起來(lái)更加清晰,增加程序的可讀性。4) 在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。2.2數(shù)據(jù)類型以及格式控制變量類型說(shuō)明符字節(jié)數(shù)值范圍字符型char1c字符集基本整型int2-3276832767短整型short int2-3276832767長(zhǎng)整型long int4-214783648214783647無(wú)符號(hào)型unsigned2065535無(wú)符號(hào)長(zhǎng)整型unsigned long404294967295單精度實(shí)型float43/4e-383/4e+38雙精度實(shí)型double81/7e-3081/7e+308表(1)格

6、式變量用于輸入輸出數(shù)字或字符時(shí)應(yīng)與數(shù)據(jù)類型保持一致。int、long int和char是本程序的用的最多的格式變量%d是十進(jìn)制數(shù)據(jù)輸入和輸出時(shí)的格式變量如要輸出已整數(shù)100則printf(“%d”,100),若將%d改為%x則輸出的將會(huì)是十六進(jìn)制的64,getch()的格式控制變量則是%c所以格式控制變量應(yīng)與要輸入和輸出的數(shù)據(jù)類型保持一致。除此之外本程序還用到了另外的一些控制變量如a、b、n、r。a:蜂鳴,響鈴當(dāng)程序執(zhí)行到帶有a的語(yǔ)句時(shí)系統(tǒng)將會(huì)發(fā)出帶有警示的聲音,以告訴人們應(yīng)該慎重地操作,或操作時(shí)出現(xiàn)了錯(cuò)誤等。b用于回退向后退一格,獨(dú)立使用則沒(méi)有什么大的作用和空格一起使用則可以將屏幕上以顯示的

7、字符刪去。n、r用于換行或回車等。2.3 getch和printf函數(shù)3在前兩個(gè)例子中用到了輸入和輸出函數(shù)getch和 printf,在以后要詳細(xì)介紹。這里我們先簡(jiǎn)單介紹一下它們的格式,getch和 printf這兩個(gè)函數(shù)分別稱為格式輸入函數(shù)和格式輸出函數(shù)。其意義是按指定的格式輸入輸出值。因此,這兩個(gè)函數(shù)中的printf括號(hào)中的參數(shù)表由以下兩部分組成:“格式控制串” ,參數(shù)表 格式控制串是一個(gè)字符串,必須用雙引號(hào)括起來(lái),它表示了輸入輸出量的數(shù)據(jù)類型。各種類型的格式表示法可參照上表1所列舉的格式變量,在printf函數(shù)中還可以在格式控制串內(nèi)出現(xiàn)非格式控制字符,這時(shí)在顯示屏幕上將原文照印。括號(hào)的雙

8、引號(hào)中有多少個(gè)格式變量,后面的參數(shù)表中就應(yīng)該有多少個(gè)參量。當(dāng)有多個(gè)量時(shí),用逗號(hào)間隔。:例: printf(max %lf min %lfn,x,s);其中%lf為格式字符,表示按雙精度浮點(diǎn)數(shù)處理。它在格式串中兩次現(xiàn),對(duì)應(yīng)了x和s兩個(gè)變量。其余字符為非格式字符則照原樣輸出在屏幕上上面例中程序的功能是由用戶輸入兩個(gè)整數(shù),程序執(zhí)行后max和min原樣輸出。本例子由兩個(gè)參數(shù)組成,x和s參數(shù)。參數(shù)之間是并列關(guān)系。getch和printf函數(shù)的應(yīng)用實(shí)例如下:main()char ch;while(1)printf(“請(qǐng)輸入一組字符串:”);ch=getch();printf(“%c”,ch);if(ch=

9、13)break;首先在屏幕上顯示提示字符串,請(qǐng)用戶輸入一組字符串,用戶可以循環(huán)地輸入回車后由break語(yǔ)句結(jié)束循環(huán)。2.4 if- else 語(yǔ)句及實(shí)例說(shuō)明if語(yǔ)句的三種形式1. 第一種形式為基本形式:if(表達(dá)式) 語(yǔ)句其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行其后的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。例1:main()int a,b,max;printf(n input two numbers: );scanf(%d%d,&a,&b);max=a;if (maxb)printf(max=%dn,a);elseprintf(max=%dn,b);輸入兩個(gè)整數(shù),輸出其中的大數(shù)。改用if-else語(yǔ)句判別a,b

10、的大小,若a大,則輸出a,否則輸出b。3. 第三種形式為if-else-if形式前二種形式的 if語(yǔ)句一般都用于兩個(gè)分支的情況。當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語(yǔ)句,其一般形式為:if(表達(dá)式1)語(yǔ)句1;else if(表達(dá)式2) 語(yǔ)句2;else if(表達(dá)式3) 語(yǔ)句3; else if(表達(dá)式m) 語(yǔ)句m;else 語(yǔ)句n;5其語(yǔ)義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語(yǔ)句。然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。 如果所有的表達(dá)式均為假,則執(zhí)行語(yǔ)句n。然后繼續(xù)執(zhí)行后續(xù)程序。 2.5 for語(yǔ)句及實(shí)例說(shuō)明在c語(yǔ)言中,for語(yǔ)句使用最為靈活,它完全可以取代

11、while 語(yǔ)句。它的一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句它的執(zhí)行過(guò)程如下:(1) 先求解表達(dá)式1。(2) 求解表達(dá)式2,若其值為真(非0),則執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下面第(3)步;若其值為假(0),則結(jié)束循環(huán),轉(zhuǎn)到第(5)步。(3) 求解表達(dá)式3。(4) 轉(zhuǎn)回上面第(2)步繼續(xù)執(zhí)行。(5) 循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句。for語(yǔ)句最簡(jiǎn)單的應(yīng)用形式如for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增量) 語(yǔ)句循環(huán)變量賦初值總是一個(gè)賦值語(yǔ)句,它用來(lái)給循環(huán)控制變量賦初值, 循環(huán)條件是一個(gè)關(guān)系表達(dá)式,它決定什么時(shí)候退出循環(huán),循環(huán)變量增量,定義循環(huán)控制變量每循

12、環(huán)一次后 按什么方式變化。這三個(gè)部分之間用“;”分開(kāi)。例::for(i=1; i100時(shí),結(jié)束循環(huán)。2.6 while語(yǔ)句及實(shí)例說(shuō)明while語(yǔ)句的一般形式為:while(表達(dá)式)語(yǔ)句其中表達(dá)式是循環(huán)條件,語(yǔ)句為循環(huán)體。while語(yǔ)句的語(yǔ)義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí), 執(zhí)行循環(huán)體語(yǔ)句具體應(yīng)用:例 while語(yǔ)句求用1100的和算法,main()int i=1,sum=0;i=1;while(i=100)6sum=sum+i;i+;printf(%dn,sum);例 統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。#include main()int n=0;printf(input a string

13、:n);while(getchar()!=n) n+;printf(%d,n);本例程序中的循環(huán)條件為getchar()!=n,其意義是, 只要從鍵盤輸入的字符不是回車就繼續(xù)循環(huán)。循環(huán)體n+完成對(duì)輸入字符個(gè)數(shù)計(jì)數(shù)。從而程序?qū)崿F(xiàn)了對(duì)輸入一行字符的字符個(gè)數(shù)計(jì)數(shù)。2.7 goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán)goto語(yǔ)句是一種無(wú)條件轉(zhuǎn)移語(yǔ)句, goto 語(yǔ)句的使用格式為:goto 語(yǔ)句標(biāo)號(hào);其中標(biāo)號(hào)是一個(gè)有效的標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符加上一個(gè)“:”一起出現(xiàn)在函數(shù)內(nèi)某處, 執(zhí)行g(shù)oto語(yǔ)句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號(hào)處并執(zhí)行其后的語(yǔ)句。另外標(biāo)號(hào)必須與goto語(yǔ)句同處于一個(gè)函數(shù)中,但可以不在一個(gè)循環(huán)層中。通常got

14、o語(yǔ)句與if條件語(yǔ)句連用, 當(dāng)滿足某一條件時(shí), 程序跳到標(biāo)號(hào)處運(yùn)行。例 用goto語(yǔ)句和if語(yǔ)句構(gòu)成循環(huán),。main()int i,sum=0;i=1;loop: if(i=100)sum=sum+i;i+;goto loop;printf(%dn,sum);72.8 switch語(yǔ)句及實(shí)例說(shuō)明 語(yǔ)言還提供了另一種用于多分支選擇的switch語(yǔ)句,其一般形式為:switch(表達(dá)式) case常量表達(dá)式1: 語(yǔ)句1;case常量表達(dá)式2: 語(yǔ)句2;case常量表達(dá)式n: 語(yǔ)句n;default : 語(yǔ)句n+1;其語(yǔ)義是:計(jì)算表達(dá)式的值。并逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表

15、達(dá)式的值相等時(shí),即執(zhí)行其后的語(yǔ)句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語(yǔ)句。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語(yǔ)句。例main()int a;printf(input integer number: );scanf(%d,&a);switch (a) case 1:printf(mondayn); break;case 2:printf(tuesdayn); break;case 3:printf(wednesdayn); break;case 4:printf(thursdayn); break;case 5:printf(fridayn)

16、; break;case 6:printf(saturdayn); break;case 7:printf(sundayn); break;default:printf(errorn); break;本程是輸入一個(gè)數(shù)字,輸出一個(gè)英文單詞,與switch一起使用的還有break語(yǔ)句,專用于跳出switch語(yǔ)句,break 語(yǔ)句只有關(guān)鍵字break,沒(méi)有參數(shù)。在每一case語(yǔ)句之后增加一個(gè)break 語(yǔ)句, 使每一次執(zhí)行之后均可跳出switch語(yǔ)句,從而避免輸出不應(yīng)有的結(jié)果。第三章 總體設(shè)計(jì)3.1 項(xiàng)目設(shè)計(jì)流程1. 學(xué)習(xí)獲得鼠標(biāo)坐標(biāo)方法及相關(guān)函數(shù)2. 程序控制界面繪制線條方法及相關(guān)函數(shù)3. 項(xiàng)目設(shè)

17、計(jì)圖規(guī)劃設(shè)計(jì)4. 代碼編寫3.2系統(tǒng)模塊圖本系統(tǒng)只需要兩個(gè)模塊,即圖形繪制模塊。如圖3.1.1所示. 畫圖板圖形繪制模塊鼠標(biāo)控制模塊繪制任意圖形 圖3.1.1(1) 圖形繪制模塊。該模塊主要包括圖形的繪制功能,可以繪制直線。矩形。圓等任意圖形。(2) 鼠標(biāo)控制模塊。該模塊主要實(shí)現(xiàn)鼠標(biāo)狀態(tài)的獲取,鼠標(biāo)位置的設(shè)置,以及鼠標(biāo)的繪制等。3.3圖形繪制流程程序首先捕獲鼠標(biāo),當(dāng)用戶單擊鼠標(biāo)右鍵時(shí),開(kāi)始畫圖,隨著鼠標(biāo)的移動(dòng),圖形將被畫出,直到松開(kāi)右鍵。結(jié)束操作時(shí),只要單擊鼠標(biāo)左鍵即可。具體流程圖如圖3.1.2所示單擊右鍵開(kāi)始繪圖移動(dòng)鼠標(biāo)開(kāi)始繪圖右鍵松開(kāi)?單擊左鍵?結(jié)束開(kāi)始否是否是圖3.1.2 圖形繪制流程圖

18、3.4函數(shù)功能描述1)mousestatus()函數(shù)原型:int mousestatus(int* x,int* y)mousestatus()函數(shù)用于獲取鼠標(biāo)的狀態(tài),即鼠標(biāo)的按鍵情況,1表示鼠標(biāo)按下左鍵,2表示鼠標(biāo)按下右鍵。2)drawmouse()函數(shù)原型:void drawmouse(float x,float y)drawmouse()函數(shù)用于繪制鼠標(biāo)。x,y分別表示鼠標(biāo)指針?biāo)幍奈恢谩?.5源程序#include #include #include #include #include #include #include #include int mousestatus(int* x,

19、int* y) union regs inregs,outregs; int status; status=0; inregs.x.ax=3; int86(0x33,&inregs,&outregs); *x=outregs.x.cx; *y=outregs.x.dx; if(outregs.x.bx&1) status=1; else if(outregs.x.bx&2) status=2; return (status);void drawmouse(float x,float y) line(x,y,x+5,y+15); line(x,y,x+15,y+5); line(x+5,y+15

20、,x+15,y+5); line(x+11,y+9,x+21,y+19); line(x+9,y+11,x+19,y+21); line(x+22,y+19,x+20,y+21);void main() int gdriver,gmode; int x0,y0,x1,y1; int last_x,last_y; int i; int status_m; x0=250; y0=250; gdriver=detect; initgraph(&gdriver,&gmode,); setbkcolor(0); setcolor(14); rectangle(5,30,630,445); setfill

21、style(1,2); floodfill(10,10,14); setwritemode(1); while( 1) status_m=mousestatus(&x1,&y1); if(last_x!=x1|last_y!=y1) setcolor(red); drawmouse(last_x,last_y); drawmouse(x1,y1); last_x=x1; last_y=y1; if(status_m=2) if(x1!=x0 | y1!=y0 ) putpixel(x1, y1, 25); x0=x1;y0=y1; if(status_m=1) break; 第四章 程序說(shuō)明4.1程序圖例(1)開(kāi)始界面圖一(2)開(kāi)始繪圖4.2程序運(yùn)行說(shuō)明設(shè)計(jì)程序過(guò)程中包括獲得鼠標(biāo)坐標(biāo)方法及相關(guān)函數(shù), 程序控制界面繪制線條方法及相關(guān)函數(shù)其中利用了打點(diǎn)的命令。若果鼠標(biāo)移動(dòng)的一點(diǎn)和前一點(diǎn)的橫

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論