

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 計算機(jī)科學(xué)與技術(shù)學(xué)院</p><p> 《C高級語言程序設(shè)計》課程設(shè)計報告</p><p> ?。?013/2014學(xué)年 第一學(xué)期)</p><p> 學(xué)生姓名: </p><p> 學(xué)生專業(yè): 軟件工程</p><p> 學(xué)生班級: </p&
2、gt;<p> 學(xué)生學(xué)號: </p><p> 指導(dǎo)教師: </p><p> 2013 年 12 月 24 日</p><p><b> 目 錄</b></p><p> 功能需求描述 ………………………………………………………………1</p><
3、;p> 功能列表………………………………………………………………………1</p><p> 1.2 功能說明………………………………………………………………………1</p><p> 1.3 操作界面 ……………………………………………………………………1</p><p> 1.4 操作方法……………………………………………………………………
4、…2</p><p> 第二章 設(shè)計描述………………………………………………………………………2</p><p> 2.1 任務(wù)分解說明…………………………………………………………………2</p><p> 2.2 主要數(shù)據(jù)結(jié)構(gòu)設(shè)計說明………………………………………………………2</p><p> 2.3 主要函數(shù)接口
5、說明……………………………………………………………3</p><p> 2.3.1 主函數(shù)接口及包含的函數(shù)接口 …………………………………………3</p><p> 2.3.2 載入圖片函數(shù)接口 ………………………………………………………3</p><p> 2.3.3 設(shè)置右邊欄選擇顏色函數(shù)接口 …………………………………………4</p>
6、<p> 第三章 算法描述………………………………………………………………………4</p><p> 3.1 主要函數(shù)的程序流程圖………………………………………………………4</p><p> 第四章 開發(fā)過程描述…………………………………………………………………5</p><p> 4.1 源代碼…………………………………………
7、………………………………5</p><p> 4.2 代碼編譯………………………………………………………………………12</p><p> 4.3 代碼調(diào)試………………………………………………………………………12</p><p> 4.4 測試程序功能…………………………………………………………………13</p><p>
8、 第五章 設(shè)計心得體會 …………………………………………………………………15</p><p> 附錄一 規(guī)定題目的程序流程圖及程序代碼 …………………………………………15</p><p> 第一章 功能需求描述</p><p><b> 1.1功能列表</b></p><p> 簡易繪圖程序的功能如
9、下:</p><p> 1.1.1 提供8種顏色</p><p> 1.1.2 5種畫筆的大?。ó嫷亩际菆A)</p><p> 1.1.3 清屏和退出</p><p><b> 1.2 功能說明</b></p><p> 1.2.1 初始有默認(rèn)選的畫筆顏色為黑色,默認(rèn)的大小為
10、最小</p><p> 1.2.2 繪制的過程中實際顯示的是一個實心圓</p><p> 1.2.3 選擇畫筆的大小實際為選擇所畫圓的半徑的像素大小</p><p><b> 1.3 操作界面</b></p><p><b> 1.4 操作方法</b></p><p>
11、; 執(zhí)行程序后,彈出繪圖窗口:有默認(rèn)的顏色畫筆和大小,可以選擇畫筆的顏色,畫筆的大小,在空白區(qū)域點鼠標(biāo)左鍵來繪圖,再增加清屏和退出功能。</p><p><b> 第二章 設(shè)計描述</b></p><p> 2.1 任務(wù)分解說明</p><p> void Index(void); //初始化繪圖</p&g
12、t;<p> void Loadimg(void); //載入圖片</p><p> void Scolor(void); //設(shè)置右邊欄選擇顏色 </p><p> void Brush_size(void); //設(shè)置畫筆大小的顯示</p><p> voi
13、d art(void); //程序畫圖核心函數(shù)</p><p> 2.2 主要數(shù)據(jù)結(jié)構(gòu)設(shè)計說明</p><p> MOUSEMSG m; //定義全局獲取鼠標(biāo)信息的變量 詳細(xì)如下 </p><p> struct MOUSEMSG</p><p><b> {</b&g
14、t;</p><p> UINT uMsg; // 當(dāng)前鼠標(biāo)消息</p><p> bool mkCtrl; // Ctrl 鍵是否按下</p><p> bool mkShift; // Shift 鍵是否按下</p><p> bool mkLButton; // 鼠標(biāo)左鍵是否按下</p><p> bo
15、ol mkMButton; // 鼠標(biāo)中鍵是否按下</p><p> bool mkRButton; // 鼠標(biāo)右鍵是否按下</p><p> int x; // 當(dāng)前鼠標(biāo) x 坐標(biāo)</p><p> int y; // 當(dāng)前鼠標(biāo) y 坐標(biāo)</p><p> int wheel; // 鼠標(biāo)滾輪滾動值</p><p
16、><b> };</b></p><p> "當(dāng)前鼠標(biāo)消息"可能是以下值:</p><p> WM_MOUSEMOVE 鼠標(biāo)移動消息</p><p> WM_MOUSEWHEEL 鼠標(biāo)滾輪撥動消息</p><p> WM_LBUTTONDOWN 左鍵按下消息</p>&l
17、t;p> WM_LBUTTONUP 左鍵彈起消息</p><p> WM_LBUTTONDBLCLK 左鍵雙擊消息</p><p> WM_MBUTTONDOWN 中鍵按下消息</p><p> WM_MBUTTONUP 中鍵彈起消息</p><p> WM_MBUTTONDBLCLK 中鍵雙擊消息</p>&l
18、t;p> WM_RBUTTONDOWN 右鍵按下消息</p><p> WM_RBUTTONUP 右鍵彈起消息</p><p> WM_RBUTTONDBLCLK 右鍵雙擊消息</p><p> 2.3 主要函數(shù)接口說明</p><p> 2.3.1 主函數(shù)接口及包含的函數(shù)接口</p><p> in
19、t WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) //程序的入口 </p><p><b> {</b></p><p> Index(); //初始化繪圖</p><p
20、> Loadimg(); //載入圖片</p><p> Scolor(); //設(shè)置右邊欄選擇顏色</p><p> Brush_size(); //設(shè)置畫筆大小的顯示</p><p> art(); //程序畫圖核心函數(shù)<
21、;/p><p> closegraph(); //關(guān)閉繪圖屏幕</p><p><b> return 0;</b></p><p><b> }</b></p><p> 2.3.2載入圖片函數(shù)接口</p><p> void Loadimg(
22、void)</p><p><b> {</b></p><p> loadimage(&img, "圖片位置");</p><p> putimage(橫坐標(biāo), 縱坐標(biāo), &img);</p><p><b> }</b></p><
23、p> 2.3.3設(shè)置右邊欄選擇顏色函數(shù)接口</p><p> void Scolor(void)</p><p><b> {</b></p><p> setfillcolor(填充顏色); </p><p> fillrectangle(左上角橫坐標(biāo),左上角縱坐標(biāo),右下角橫坐標(biāo),右下角縱坐標(biāo))
24、; </p><p><b> }</b></p><p><b> 第三章 算法描述</b></p><p> 3.1 主要函數(shù)的程序流程圖</p><p> 圖3.1.1 主函數(shù)流程圖</p><p> 第四章 開發(fā)過程描述</p>
25、<p><b> 4.1 源代碼</b></p><p><b> /*</b></p><p> ---------------------------------</p><p> 時間:2013年12月24日22:35:28</p><p> 1.該程序?qū)崿F(xiàn)畫圖的基本功能:
26、可選擇提供的8種顏色,5種畫筆的大?。ó嫷亩际菆A),以及兩種額外功能,清屏和退出</p><p> 2.運用了WinMain函數(shù)來實現(xiàn)窗口程序</p><p> 3.運用graphics.h庫來實現(xiàn)繪圖操作</p><p> ---------------------------------</p><p><b> */&
27、lt;/b></p><p> #include <graphics.h> // 繪圖庫頭文件</p><p> MOUSEMSG m; //定義全局獲取鼠標(biāo)信息的變量 詳細(xì)如下 </p><p> /* struct MOUSEMSG</p><p><b> {&l
28、t;/b></p><p> UINT uMsg; // 當(dāng)前鼠標(biāo)消息</p><p> bool mkCtrl; // Ctrl 鍵是否按下</p><p> bool mkShift; // Shift 鍵是否按下</p><p> bool mkLButton; // 鼠標(biāo)左鍵是否按下</p><p&g
29、t; bool mkMButton; // 鼠標(biāo)中鍵是否按下</p><p> bool mkRButton; // 鼠標(biāo)右鍵是否按下</p><p> int x; // 當(dāng)前鼠標(biāo) x 坐標(biāo)</p><p> int y; // 當(dāng)前鼠標(biāo) y 坐標(biāo)</p><p> int wheel; // 鼠標(biāo)滾輪滾動值</p>
30、<p><b> };</b></p><p><b> */</b></p><p><b> /*</b></p><p> "當(dāng)前鼠標(biāo)消息"可能是以下值:</p><p> WM_MOUSEMOVE 鼠標(biāo)移動消息</p>
31、;<p> WM_MOUSEWHEEL 鼠標(biāo)滾輪撥動消息</p><p> WM_LBUTTONDOWN 左鍵按下消息</p><p> WM_LBUTTONUP 左鍵彈起消息</p><p> WM_LBUTTONDBLCLK 左鍵雙擊消息</p><p> WM_MBUTTONDOWN 中鍵按下消息</p&g
32、t;<p> WM_MBUTTONUP 中鍵彈起消息</p><p> WM_MBUTTONDBLCLK 中鍵雙擊消息</p><p> WM_RBUTTONDOWN 右鍵按下消息</p><p> WM_RBUTTONUP 右鍵彈起消息</p><p> WM_RBUTTONDBLCLK 右鍵雙擊消息</p&g
33、t;<p><b> */</b></p><p> void Index(void); //初始化繪圖聲明</p><p> void Loadimg(void); //載入圖片聲明</p><p> void Scolor(void); //設(shè)置右邊欄選
34、擇顏色的聲明 </p><p> void Brush_size(void); //設(shè)置畫筆大小的顯示的聲明</p><p> void art(void); //程序畫圖核心函數(shù)的聲明</p><p> /*用VC 6.0來寫,而且要寫窗口類程序,VC 6.0提供了一個專門用作窗口類程序的
35、入口函數(shù)WinMain()</p><p><b> 函數(shù)原型</b></p><p> int WINAPI WinMain(</p><p> HINSTANCE hInstance, </p><p> HINSTANCE hPrevInstance, </p><p> LPST
36、R lpCmdLine, </p><p> int nCmdShow</p><p><b> );</b></p><p><b> */</b></p><p> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstanc
37、e,LPSTR lpCmdLine,int nShowCmd) //程序的入口 </p><p><b> {</b></p><p> Index(); //初始化繪圖</p><p> Loadimg(); //載入圖片</p><p>
38、 Scolor(); //設(shè)置右邊欄選擇顏色</p><p> Brush_size(); //設(shè)置畫筆大小的顯示</p><p> art(); //程序畫圖核心函數(shù)</p><p> closegraph(); //關(guān)閉繪圖屏幕</
39、p><p><b> return 0;</b></p><p><b> }</b></p><p><b> //初始化繪圖</b></p><p> void Index(void)</p><p><b> {</b>
40、</p><p> initgraph(800,600); //初始化800x600的繪圖屏幕</p><p> setbkcolor(WHITE); //設(shè)置白色背景</p><p> cleardevice();</p><p><b> }</b></p><p>
41、<b> //載入圖片</b></p><p> void Loadimg(void)</p><p><b> {</b></p><p> IMAGE img;</p><p> loadimage(&img, "E:\\c語言源文件\\c語言課程設(shè)計\\小軍畫圖\\
42、1.jpg");</p><p> putimage(740, 0, &img);</p><p> loadimage(&img, "E:\\c語言源文件\\c語言課程設(shè)計\\小軍畫圖\\2.jpg");</p><p> putimage(740, 527, &img);</p><
43、p> loadimage(&img, "E:\\c語言源文件\\c語言課程設(shè)計\\小軍畫圖\\3.jpg");</p><p> putimage(30, 573, &img);</p><p> loadimage(&img, "E:\\c語言源文件\\c語言課程設(shè)計\\小軍畫圖\\4.jpg");</p&
44、gt;<p> putimage(740, 570, &img);</p><p> loadimage(&img, "E:\\c語言源文件\\c語言課程設(shè)計\\小軍畫圖\\5.jpg");</p><p> putimage(670, 570, &img);</p><p><b> }&
45、lt;/b></p><p> //設(shè)置右邊欄選擇顏色</p><p> void Scolor(void)</p><p><b> {</b></p><p> setfillcolor(RGB(255,255,255)); //設(shè)置填充顏色 白</p><p>
46、fillrectangle(750,10,790,50); //填充左上角(750,10)右下角(790,50)的矩形</p><p> setfillcolor(RGB(0,0,0)); //黑</p><p> fillrectangle(750,60,790,100);</p><p> setfillcolor(RGB(0,0,2
47、55)); //藍(lán)</p><p> fillrectangle(750,110,790,150);</p><p> setfillcolor(RGB(0,255,0)); //綠</p><p> fillrectangle(750,160,790,200);</p><p> setfillcol
48、or(RGB(0,255,255)); //淺藍(lán)</p><p> fillrectangle(750,210,790,250);</p><p> setfillcolor(RGB(255,0,0)); //紅</p><p> fillrectangle(750,260,790,300);</p><p>
49、; setfillcolor(RGB(255,0,255)); //紫紅</p><p> fillrectangle(750,310,790,350);</p><p> setfillcolor(RGB(255,255,0)); //黃</p><p> fillrectangle(750,360,790,400);</p&
50、gt;<p><b> }</b></p><p> //設(shè)置畫筆大小的顯示</p><p> void Brush_size(void)</p><p><b> {</b></p><p> for(int i=1; i<=5; i++)</p>&l
51、t;p><b> {</b></p><p> setfillcolor(BLACK); //設(shè)置填充顏色</p><p> solidcircle(80+30*i,580,i*3); //填充圓心坐標(biāo)為(80+30*i,580)半徑為i*3個像素的大小</p><p><b> }&l
52、t;/b></p><p><b> }</b></p><p> //程序畫圖核心函數(shù)</p><p> void art(void)</p><p><b> {</b></p><p> int a=3;
53、 //設(shè)置初始化(默認(rèn))畫筆大?。▓A心半徑的像素)</p><p> fillrectangle(750,480,790,520); //設(shè)置初始current color顯示為黑色</p><p> while(true)</p><p><b> {</b></p><p> m =
54、GetMouseMsg(); //GetMouseMsg()來獲取鼠標(biāo)的信息</p><p> switch(m.uMsg)</p><p><b> {</b></p><p> case WM_LBUTTONDOWN: //如果鼠標(biāo)左鍵按下</p><p&g
55、t; if(m.x>740)</p><p><b> {</b></p><p> if(m.y>570)</p><p> return; //如果鼠標(biāo)坐標(biāo)x>740,y>570,即點中Exit選項,退出函數(shù),否則,永遠(yuǎn)不會終止</p><p> swi
56、tch(int(m.y/50))</p><p><b> {</b></p><p> case 0:setfillcolor(RGB(255,255,255));break;</p><p> case 1:setfillcolor(RGB(0,0,0));break;</p><p> case 2:set
57、fillcolor(RGB(0,0,255));break;</p><p> case 3:setfillcolor(RGB(0,255,0));break;</p><p> case 4:setfillcolor(RGB(0,255,255));break;</p><p> case 5:setfillcolor(RGB(255,0,0));break
58、;</p><p> case 6:setfillcolor(RGB(255,0,255));break;</p><p> case 7:setfillcolor(RGB(255,255,0));break;</p><p><b> }</b></p><p> fillrectangle(750,480,7
59、90,520); //點了某個圖中的顏色后,先設(shè)置填充顏色,再在current color上面顯示出所選擇的顏色</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p>
60、 if(m.x>95 && m.x<245 && m.y>565 && m.y<595) </p><p><b> {</b></p><p> setcolor(WHITE);</p><p> rectangle(65+30*(a/3),565,95+30*(
61、a/3),595); //將上一次的黑色矩形框消除(用白色矩形框代替)</p><p> switch(int((m.x-95)/30))</p><p><b> {</b></p><p> case 0: a=3;break;</p><p> case 1: a=6;break;</p>
62、<p> case 2: a=9;break;</p><p> case 3: a=12;break;</p><p> case 4: a=15;break; //選擇畫筆的大小</p><p><b> }</b></p><p> setcolor(BLACK);&
63、lt;/p><p> rectangle(65+30*(a/3),565,95+30*(a/3),595); //將選擇的畫筆用一個黑色的矩形方框框起來</p><p><b> }</b></p><p><b> else</b></p><p> if(m.x>670 &&a
64、mp; m.x<730 && m.y>570 && m.y<600) //如果選中清屏選項</p><p><b> {</b></p><p> setfillcolor(WHITE); //設(shè)置白色填充色</p><p> solidrectangle(
65、0,0,740,564); //將整個可涂區(qū)域清白</p><p> setfillcolor(BLACK); //設(shè)置默認(rèn)的黑色填充色</p><p><b> }</b></p><p><b> else</b></p><p> if(
66、m.x<750 && m.y<550) </p><p> solidcircle(m.x,m.y,a); //在可涂區(qū)域用所選擇的顏色,畫筆大小畫一個實心圓,半徑為a</p><p><b> }</b></p><p><b> break;</
67、b></p><p> case WM_MOUSEMOVE: //鼠標(biāo)移動信息</p><p> if(m.mkLButton && m.x<725 && m.y<550) //如果在可涂的最大區(qū)域內(nèi),并且鼠標(biāo)左鍵按下</p><p>
68、solidcircle(m.x,m.y,a); //依舊畫圓,直到左鍵彈起</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.2 代碼編譯過程中碰到
69、的錯誤類型和原因</p><p> 編譯錯誤:error C2018: unknown character '0xa3'</p><p> 原因分析:因為那一行的代碼中最后的分號用了中文的分號,應(yīng)該為英文輸入法的分號。</p><p> 4.3 代碼調(diào)試碰到的問題和原因</p><p> 調(diào)試中碰到的問題:當(dāng)選中畫
70、筆的大小時,會顯示一個黑色方框框中選中的畫筆大小,但當(dāng)再次選擇畫筆大小時,以前的黑色方框不會消失。</p><p> 解決的方法:當(dāng)下一次選擇畫筆大小時,先用白色方框?qū)⑸弦淮蔚暮谏娇蛳?,再顯示當(dāng)前選中的畫筆大小。</p><p> 4.4 測試程序功能</p><p> 程序運行的初始界面:</p><p> 圖4.4.1 程
71、序截圖一</p><p> 圖4.4.2 程序截圖二</p><p><b> 五.設(shè)計心得體會</b></p><p> 通過這次課程設(shè)計,讓我學(xué)到了很多繪圖函數(shù),以前在教學(xué)中并沒有提及,通過自學(xué)graphics.h庫的使用,更進(jìn)一步激發(fā)了學(xué)習(xí)c語言的興趣,它不僅僅是我以前想的黑框框程序了,可以設(shè)計出各種各樣美麗的圖案,再結(jié)合語句的使用
72、,可以設(shè)計出更加復(fù)雜的功能,提高了自學(xué)能力,倘若沒有這次課程設(shè)計,我想自己寫代碼的水平還停留在初級階段,通過這次實踐,發(fā)現(xiàn)了很多平時沒有注意到的問題,大大提高了寫代碼的能力。</p><p> 附錄一 規(guī)定題目的程序流程圖及程序代碼</p><p> 附錄1.1 必選題之10的階乘程序代碼</p><p> #include <stdio.h>
73、;</p><p> int main(void)</p><p><b> {</b></p><p><b> int i;</b></p><p> int mul=1;</p><p> for(i = 1;i<=10;i++)</p>
74、<p><b> {</b></p><p><b> mul *= i;</b></p><p><b> }</b></p><p> printf("10! = %d\n", mul);</p><p><b> retu
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言語言課程設(shè)計報告
- c語言年歷課程設(shè)計報告
- C語言課程設(shè)計報告.doc
- c語言課程設(shè)計實踐報告
- c語言課程設(shè)計報告模版
- c++課程設(shè)計報告-簡易圖像處理
- c語言課程設(shè)計報告---游戲設(shè)計
- c課程設(shè)計報告-- c語言程序設(shè)計
- 【課程設(shè)計】c語言課程設(shè)計
- c語言課程設(shè)計--- 制作2.0版簡易計算器
- c語言背單詞課程設(shè)計報告
- c語言課程設(shè)計報告--背單詞
- c語言磁盤調(diào)度課程設(shè)計報告
- c語言背單詞課程設(shè)計報告
- c語言課程設(shè)計實踐報告--時鐘
- c語言課程設(shè)計報告-游戲2048
評論
0/150
提交評論