版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> C語言課程設(shè)計報告</b></p><p> 課程名稱: 計算機(jī)綜合課程設(shè)計 </p><p> 學(xué) 院: 土木工程學(xué)院 </p><p> 設(shè)計題目: 簡單圖形處理系統(tǒng) </p><p>
2、 2013年 9月 11日</p><p><b> 目錄</b></p><p> 1、課程設(shè)計目的···············3</p><p> 2、課程設(shè)計題目描述和要求·
3、;·········3</p><p> 3、模塊設(shè)計·················3</p><p> 4、課程設(shè)計報告內(nèi)
4、容·············4</p><p> 5、調(diào)試及測試················11</p>
5、<p> 6、運(yùn)行結(jié)果················12</p><p> 7、設(shè)計總結(jié)············
6、83;····14</p><p> 8、參考文獻(xiàn)·················15</p><p><b> 1、課程設(shè)計目的</b></p&g
7、t;<p> 開拓思維,檢查和鞏固所學(xué)的知識,為以后的學(xué)習(xí)和編程打下基礎(chǔ)。</p><p> 2、課程設(shè)計題目描述和要求</p><p><b> 2、1課程題目</b></p><p><b> 簡單圖形處理系統(tǒng)</b></p><p><b> 2、2課程要求&
8、lt;/b></p><p> 設(shè)某個圖形處理程序只考慮點(diǎn)、直線、圓三種基本圖形。</p><p> 對于點(diǎn),給出點(diǎn)的橫縱坐標(biāo);</p><p> 對于直線,給出直線方程ax+by+c=0的三個系數(shù)a,b,c;</p><p> 對于圓,給出圓心坐標(biāo)和半徑。</p><p> 要求程序可以輸入和輸出圖形
9、元素,求兩點(diǎn)距離,求兩直線交點(diǎn),已知點(diǎn)和半徑形成圓,已知兩點(diǎn)形成直線</p><p><b> 3、模塊設(shè)計</b></p><p><b> 3、1模塊分析</b></p><p> 根據(jù)題目要求可以將題目中的每一個要求與一個函數(shù)對應(yīng)下來,這樣算下來大概需要</p><p><b>
10、; 畫點(diǎn)函數(shù)</b></p><p><b> 根據(jù)兩點(diǎn)畫直線函數(shù)</b></p><p><b> 根據(jù)方程畫直線函數(shù)</b></p><p><b> 畫圓函數(shù)</b></p><p><b> 求兩點(diǎn)距離函數(shù)</b></p
11、><p><b> 求兩直線交點(diǎn)函數(shù)</b></p><p> 編程過程中可能需要一些其他的輔助函數(shù),比如:畫坐標(biāo)系函數(shù),坐標(biāo)轉(zhuǎn)換函數(shù)等;為幫大家選擇不同的函數(shù),可在開頭設(shè)計一個目錄幫助選擇。</p><p><b> 3、2模塊設(shè)計</b></p><p> 根據(jù)模塊分析,以及編程方便起見,將
12、程序大致分為以下幾個模塊:</p><p> 1、目錄模塊:運(yùn)用printf函數(shù)輸出目錄,并和switch架構(gòu)搭配,幫助用者選擇合適的函數(shù)解決問題。</p><p> 2、圖形處理模塊:主要進(jìn)行圖形的處理和輸出,包括畫點(diǎn)函數(shù),畫坐標(biāo)系函數(shù),畫直線函數(shù),畫圓函數(shù)。</p><p> 3、計算處理模塊:用于解決需要計算才能得到結(jié)果的部分,包括求兩個直線的交點(diǎn)函數(shù),
13、求兩個點(diǎn)之間的距離函數(shù),以及坐標(biāo)轉(zhuǎn)換函數(shù)。</p><p><b> 大致流程圖為:</b></p><p> 4、課程設(shè)計報告內(nèi)容</p><p> ///////////////////////////////</p><p><b> //頭文件包含</b></p>&l
14、t;p> //////////////////////////////</p><p> #include<stdio.h></p><p> #include<graphics.h></p><p> #include<conio.h></p><p> #include<math.
15、h></p><p> //////////////////////////////</p><p><b> //函數(shù)聲明</b></p><p> //////////////////////////////</p><p> void line_1();
16、 //根據(jù)兩點(diǎn)畫直線</p><p> void line_2(); //根據(jù)方程畫直線</p><p> void dot(); //根據(jù)坐標(biāo)畫點(diǎn)</p><
17、;p> void yuan(); //根據(jù)半徑和圓心畫圓</p><p> void lon(); //求兩點(diǎn)間的距離</p><p> void dt();
18、 //根據(jù)兩條直線求交點(diǎn)</p><p> void cad(); //畫坐標(biāo)系</p><p> void trans(double *x,double *y); //坐標(biāo)轉(zhuǎn)換</p>
19、<p> //////////////////////////////</p><p><b> //定義整函數(shù)</b></p><p> //////////////////////////////</p><p> int main()</p><p><b> {</b>&
20、lt;/p><p><b> for(;;)</b></p><p><b> {</b></p><p> /*****************************目錄*********************************/</p><p><b> int a;&l
21、t;/b></p><p> printf(" 簡單圖形處理系統(tǒng) \n");</p><p> printf("由于精度問題,請盡量取較大的值,坐標(biāo)系范圍x(-320—320),y(-320—320)\n\n\n");</p><p>
22、 printf("1·······························輸出點(diǎn)\n");</
23、p><p> printf("2···························根據(jù)兩點(diǎn)輸出直線\n");</p&g
24、t;<p> printf("3···························根據(jù)方程輸出直線\n");</p>
25、<p> printf("4································輸出
26、圓\n");</p><p> printf("5·························根據(jù)兩點(diǎn)計算兩點(diǎn)距離\n");&l
27、t;/p><p> printf("6··························根據(jù)兩條直線求交點(diǎn)\n");</p>
28、<p> printf("0·······························退出程序\n&
29、quot;);</p><p> printf("請輸入選擇:");</p><p> scanf("%d",&a);</p><p><b> switch(a)</b></p><p><b> {</b></p><p
30、> case 1:dot();break;</p><p> case 2:line_1();break;</p><p> case 3:line_2();break;</p><p> case 4:yuan();break;</p><p> case 5:lon();break;</p><p>
31、; case 6:dt();break;</p><p> case 0:exit(0);</p><p> default:printf("輸入錯誤,請重新輸入\n");break;</p><p><b> }</b></p><p><b> }</b></
32、p><p><b> return 0;</b></p><p><b> }</b></p><p> /********************************函數(shù)定義*************************************/</p><p> void line_
33、1() //兩點(diǎn)畫直線函數(shù)</p><p><b> {</b></p><p> double a[4];</p><p> printf("請輸入兩點(diǎn)坐標(biāo):(如:23,23 23,23)\n");</p><p&
34、gt; scanf("%lf,%lf %lf,%lf",&a[0],&a[1],&a[2],&a[3]);</p><p> /******************轉(zhuǎn)換坐標(biāo)*************************/</p><p> trans(&a[0],&a[1]);</p><p&
35、gt; trans(&a[2],&a[3]);</p><p> /*************按比例延伸坐標(biāo)**********************/</p><p> for(int i=0;a[2]>0&&a[3]>0&&a[2]<640&&a[3]<640;i++)</p>
36、<p><b> {</b></p><p> a[2]=a[2]+i*(a[2]-a[0]);</p><p> a[3]=a[3]+i*(a[3]-a[1]);</p><p><b> }</b></p><p> for(i=0;a[0]>0&&a
37、[1]>0&&a[0]<640&&a[1]<640;i++)</p><p><b> {</b></p><p> a[0]=a[0]+i*(a[0]-a[2]);</p><p> a[1]=a[1]+i*(a[1]-a[3]);</p><p><b&g
38、t; }</b></p><p> /****************畫圖******************************/</p><p><b> cad();</b></p><p><b> //設(shè)置線的顏色</b></p><p> setlinecolo
39、r(YELLOW);</p><p><b> //畫線</b></p><p> line((int)a[0],(int)a[1],(int)a[2],(int)a[3]);</p><p><b> getch();</b></p><p> closegraph();</p>
40、;<p><b> }</b></p><p> void line_2() //方程畫直線函數(shù)</p><p><b> {</b></p><p> double a[3],b[2];</p>&l
41、t;p> printf("請輸入直線方程:(如:3x+4y+5=0或3x+-4y+-5=0)\n");</p><p> scanf("%lfx+%lfy+%lf=0",&a[0],&a[1],&a[2]);</p><p> if(a[2]!=0)</p><p><b> {
42、</b></p><p> b[0]=(0-a[2])/a[1];</p><p> b[1]=(0-a[2])/a[0];</p><p> /******************轉(zhuǎn)換坐標(biāo)*************************/</p><p> trans(&b[1],&b[0]);<
43、/p><p><b> a[0]=320;</b></p><p><b> a[1]=320;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {
44、</b></p><p> a[1]=(0-a[0])/a[1];</p><p><b> a[0]=0;</b></p><p><b> b[0]=0;</b></p><p><b> b[1]=1;</b></p><p>
45、 /******************轉(zhuǎn)換坐標(biāo)*************************/</p><p> trans(&a[0],&b[0]);</p><p> trans(&b[1],&a[1]);</p><p><b> }</b></p><p> /**
46、***********按比例延伸坐標(biāo)**********************/</p><p> for(int i=0;b[1]>0&&a[1]>0&&b[1]<640&&a[1]<640;i++)</p><p><b> {</b></p><p> b[1
47、]=b[1]+i*(b[1]-a[0]);</p><p> a[1]=a[1]+i*(a[1]-b[0]);</p><p><b> }</b></p><p> for(i=0;a[0]>0&&b[0]>0&&a[0]<640&&b[0]<640;i++)<
48、;/p><p><b> {</b></p><p> a[0]=a[0]+i*(a[0]-b[1]);</p><p> b[0]=b[0]+i*(b[0]-a[1]);</p><p><b> }</b></p><p> /****************畫圖*
49、*****************************/</p><p><b> cad();</b></p><p><b> //設(shè)置線的顏色</b></p><p> setlinecolor(YELLOW);</p><p><b> //畫線</b>&l
50、t;/p><p> line((int)a[0],(int)b[0],(int)b[1],(int)a[1]);</p><p><b> getch();</b></p><p> closegraph();</p><p><b> }</b></p><p> v
51、oid dot() //坐標(biāo)畫點(diǎn)函數(shù)</p><p><b> {</b></p><p> double a[2];</p><p> printf("請輸入點(diǎn)的坐標(biāo):(如:34,23)\n");</p><
52、;p> scanf("%lf,%lf",&a[0],&a[1]);</p><p> trans(&a[0],&a[1]);</p><p><b> cad();</b></p><p><b> //設(shè)置點(diǎn)的顏色</b></p><p
53、> setcolor(YELLOW);</p><p><b> //畫點(diǎn)</b></p><p> putpixel((int)a[0],(int)a[1],WHITE);</p><p><b> getch();</b></p><p> closegraph();</p
54、><p><b> }</b></p><p> void yuan() //根據(jù)半徑和圓心畫圓函數(shù)</p><p><b> {</b></p><p> double a[3];</p>
55、<p> printf("請輸入半徑和圓心的坐標(biāo):(如:23 23,23)\n");</p><p> scanf("%lf %lf,%lf",&a[0],&a[1],&a[2]);</p><p> trans(&a[1],&a[2]);</p><p><b&g
56、t; cad();</b></p><p><b> //設(shè)置圓的顏色</b></p><p> setcolor(YELLOW);</p><p><b> //畫圓</b></p><p> circle((int)a[1],(int)a[2],(int)a[0]);<
57、;/p><p><b> getch();</b></p><p> closegraph();</p><p><b> }</b></p><p> void cad() //畫坐標(biāo)系</p>
58、;<p><b> {</b></p><p><b> //初始化圖形界面</b></p><p> initgraph(640,640);</p><p><b> //設(shè)定圖形顏色</b></p><p> setcolor(WHITE);<
59、/p><p><b> //畫坐標(biāo)線及箭頭</b></p><p> line(0,320,640,320);</p><p> line(320,0,320,640);</p><p> line(640,320,635,315);</p><p> line(640,320,635,32
60、5);</p><p> line(320,0,325,5);</p><p> line(320,0,315,5);</p><p><b> //設(shè)置字體顏色</b></p><p> settextcolor(GREEN);</p><p><b> //設(shè)置字體格式&l
61、t;/b></p><p> settextstyle(20, 0, _T("宋體"));</p><p> //標(biāo)注x,y和坐標(biāo)范圍</p><p> outtextxy(610,330,"320");</p><p> outtextxy(630,295,"x");
62、</p><p> outtextxy(330,10,"y");</p><p> outtextxy(290,10,"320");</p><p> outtextxy(323,325,"0");</p><p><b> }</b></p>
63、;<p> void lon() //兩點(diǎn)間的距離函數(shù)</p><p><b> {</b></p><p> double a[4],c;</p><p> printf("請輸入兩點(diǎn)的坐標(biāo):(如:23,23 23,23
64、)\n");</p><p> scanf("%lf,%lf %lf,%lf",&a[0],&a[1],&a[2],&a[3]);</p><p><b> //用勾股定理計算</b></p><p> c=fabs(a[0]-a[2])*fabs(a[0]-a[2])+fab
65、s(a[1]-a[3])*fabs(a[1]-a[3]);</p><p> c=sqrt(c);</p><p> printf("兩點(diǎn)間的距離為:%lf\n",c);</p><p><b> }</b></p><p> void dt()
66、 //求交點(diǎn)函數(shù)</p><p><b> {</b></p><p> double a[3],b[3],t,x,y;</p><p> printf("請輸入一條直線方程:(如:3x+4y+5=0)\n");</p><p> scanf(&q
67、uot;%lfx+%lfy+%lf=0",&a[0],&a[1],&a[2]);</p><p> printf("請輸入另一條直線方程:(如:3x+4y+5=0)\n");</p><p> scanf("%lfx+%lfy+%lf=0",&b[0],&b[1],&b[2]);</
68、p><p> //分不同的情況討論</p><p> if(a[0]/b[0]==a[1]/b[1]&&a[2]/b[2]!=a[1]/b[1])</p><p><b> {</b></p><p> printf("無交點(diǎn)\n");</p><p>&l
69、t;b> }</b></p><p> else if(a[0]/b[0]==a[1]/b[1]&&a[2]/b[2]==a[1]/b[1])</p><p><b> {</b></p><p> printf("有無數(shù)個交點(diǎn)\n");</p><p>&l
70、t;b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> t=a[0]*b[1]-b[0]*a[1];</p><p> a[2]=(0-a[2])*b[1]-(0-b[2])*a[1];</p>
71、<p> b[2]=a[0]*(0-b[2])-b[0]*(0-a[2]);</p><p><b> x=a[2]/t;</b></p><p><b> y=b[2]/t;</b></p><p> printf("兩條直線的交點(diǎn)為:%lf,%lf\n",x,y);</p
72、><p><b> }</b></p><p><b> }</b></p><p> void trans(double *x,double *y) //轉(zhuǎn)換坐標(biāo)</p><p><b> {</b></p>
73、<p> *x=*x+320;</p><p> *y=320-*y;</p><p><b> }</b></p><p><b> 調(diào)試及測試</b></p><p><b> 5、1調(diào)試</b></p><p> 本程序在個人
74、電腦的windows 7環(huán)境下安裝的Visual C++6.0語言系統(tǒng)下調(diào)試,通過調(diào)試發(fā)現(xiàn)了一些error,有的是語法錯誤,有的是邏輯錯誤,但是經(jīng)過修改,這些error都被消除,調(diào)試結(jié)果如下:</p><p> 現(xiàn)在程序已經(jīng)可以安全運(yùn)行。</p><p><b> 5、2測試</b></p><p> 通過運(yùn)行程序,發(fā)現(xiàn)了一些被遺漏的情況
75、,如求兩條直線的交點(diǎn)的時候沒有考慮到平行和重合的情況,但是經(jīng)過改正,已經(jīng)將被遺漏的情況添加在了里面。</p><p><b> 運(yùn)行結(jié)果</b></p><p><b> 6、1目錄</b></p><p><b> 6、2輸出點(diǎn)</b></p><p><b>
76、; 6、2輸出圓</b></p><p><b> 6、3輸出直線</b></p><p><b> 6、4求交點(diǎn)</b></p><p><b> 設(shè)計總結(jié)</b></p><p><b> 7、1心得體會</b></p>
77、;<p> 通過這次的程序設(shè)計,我深切意識到目前我們所學(xué)的有關(guān)C語言的知識是多么的少,而且由于學(xué)完C語言之后很少應(yīng)用,以至于遺忘了很多已經(jīng)學(xué)過的東西,比如文件處理函數(shù)等。在網(wǎng)上查閱資料的時候發(fā)現(xiàn)一些人用已經(jīng)學(xué)過的東西也能編寫一些很高級的程序。由此認(rèn)識到學(xué)以致用非常重要,在接下來的時間里,我一定會好好利用圖書館及網(wǎng)絡(luò)資源,擴(kuò)充自己的知識面。與此同時會花更多的時間與大家交流,來使彼此成長的更快。</p><
78、;p><b> 7、2編寫所遇問題</b></p><p> 1、Visual C++ 6.0運(yùn)行平臺沒有圖形處理函數(shù)</p><p> 2、系統(tǒng)坐標(biāo)和常規(guī)坐標(biāo)系不一致</p><p> 3、畫線函數(shù)只能畫出線段不能畫出直線</p><p> 4、整個圖形處理函數(shù)只能在整數(shù)單位上標(biāo)點(diǎn)</p>
79、<p><b> 7、3問題解決方案</b></p><p> 1、在網(wǎng)上找到了圖形處理函數(shù)頭文件,將該文件安裝到Visual C++ 6.0上,就可以在Visual C++ 6.0運(yùn)行圖形處理函數(shù)。</p><p> 2、添加一個坐標(biāo)轉(zhuǎn)換函數(shù),使得坐標(biāo)系與常規(guī)坐標(biāo)系一致。</p><p> 3、將線段的兩個端點(diǎn)的坐標(biāo)按照比
80、例進(jìn)行延長,使得兩個端點(diǎn)坐標(biāo)在窗口之外,這樣視覺上就是一條直線。</p><p> 4、整個計算過程采用雙精度進(jìn)行計算,在畫圖時將雙進(jìn)度轉(zhuǎn)化為整型變量,這樣就可以運(yùn)用圖形處理函數(shù)。</p><p><b> 參考文獻(xiàn)</b></p><p> 【1】譚浩強(qiáng)編著.C程序設(shè)計(第四版),北京,清華大學(xué)出版社,2010年</p>
溫馨提示
- 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è)計——簡單圖形的處理系統(tǒng)
- 課程設(shè)計--簡單圖形的處理系統(tǒng)
- 【課程設(shè)計】簡單語音處理系統(tǒng)設(shè)計
- 簡單圖形處理系統(tǒng)
- c語言課程設(shè)計--銀行數(shù)據(jù)處理系統(tǒng)
- c語言圖形時鐘課程設(shè)計實(shí)驗報告
- c課程設(shè)計---字符串處理系統(tǒng)
- c語言課程設(shè)計報告--符串處理
- 圖形模擬時鐘c語言課程設(shè)計
- c語言課程設(shè)計--圖像處理
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言圖形五子棋課程設(shè)計報告
- c語言圖形五子棋課程設(shè)計報告
- c語言課程設(shè)計報告(宿舍管理系統(tǒng))
- c語言課程設(shè)計報告—服裝銷售系統(tǒng)
- c語言課程設(shè)計報告--車票管理系統(tǒng)
- c語言課程設(shè)計報告--成績管理系統(tǒng)
評論
0/150
提交評論