

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> C語(yǔ)言課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱: 計(jì)算機(jī)綜合課程設(shè)計(jì) </p><p> 學(xué) 院: 土木工程學(xué)院 </p><p> 設(shè)計(jì)題目: 簡(jiǎn)單圖形處理系統(tǒng) </p><p>
2、 2013年 9月 11日</p><p><b> 目錄</b></p><p> 1、課程設(shè)計(jì)目的···············3</p><p> 2、課程設(shè)計(jì)題目描述和要求·
3、;·········3</p><p> 3、模塊設(shè)計(jì)·················3</p><p> 4、課程設(shè)計(jì)報(bào)告內(nèi)
4、容·············4</p><p> 5、調(diào)試及測(cè)試················11</p>
5、<p> 6、運(yùn)行結(jié)果················12</p><p> 7、設(shè)計(jì)總結(jié)············
6、83;····14</p><p> 8、參考文獻(xiàn)·················15</p><p><b> 1、課程設(shè)計(jì)目的</b></p&g
7、t;<p> 開(kāi)拓思維,檢查和鞏固所學(xué)的知識(shí),為以后的學(xué)習(xí)和編程打下基礎(chǔ)。</p><p> 2、課程設(shè)計(jì)題目描述和要求</p><p><b> 2、1課程題目</b></p><p><b> 簡(jiǎn)單圖形處理系統(tǒng)</b></p><p><b> 2、2課程要求&
8、lt;/b></p><p> 設(shè)某個(gè)圖形處理程序只考慮點(diǎn)、直線、圓三種基本圖形。</p><p> 對(duì)于點(diǎn),給出點(diǎn)的橫縱坐標(biāo);</p><p> 對(duì)于直線,給出直線方程ax+by+c=0的三個(gè)系數(shù)a,b,c;</p><p> 對(duì)于圓,給出圓心坐標(biāo)和半徑。</p><p> 要求程序可以輸入和輸出圖形
9、元素,求兩點(diǎn)距離,求兩直線交點(diǎn),已知點(diǎn)和半徑形成圓,已知兩點(diǎn)形成直線</p><p><b> 3、模塊設(shè)計(jì)</b></p><p><b> 3、1模塊分析</b></p><p> 根據(jù)題目要求可以將題目中的每一個(gè)要求與一個(gè)函數(shù)對(duì)應(yīng)下來(lái),這樣算下來(lái)大概需要</p><p><b>
10、; 畫(huà)點(diǎn)函數(shù)</b></p><p><b> 根據(jù)兩點(diǎn)畫(huà)直線函數(shù)</b></p><p><b> 根據(jù)方程畫(huà)直線函數(shù)</b></p><p><b> 畫(huà)圓函數(shù)</b></p><p><b> 求兩點(diǎn)距離函數(shù)</b></p
11、><p><b> 求兩直線交點(diǎn)函數(shù)</b></p><p> 編程過(guò)程中可能需要一些其他的輔助函數(shù),比如:畫(huà)坐標(biāo)系函數(shù),坐標(biāo)轉(zhuǎn)換函數(shù)等;為幫大家選擇不同的函數(shù),可在開(kāi)頭設(shè)計(jì)一個(gè)目錄幫助選擇。</p><p><b> 3、2模塊設(shè)計(jì)</b></p><p> 根據(jù)模塊分析,以及編程方便起見(jiàn),將
12、程序大致分為以下幾個(gè)模塊:</p><p> 1、目錄模塊:運(yùn)用printf函數(shù)輸出目錄,并和switch架構(gòu)搭配,幫助用者選擇合適的函數(shù)解決問(wèn)題。</p><p> 2、圖形處理模塊:主要進(jìn)行圖形的處理和輸出,包括畫(huà)點(diǎn)函數(shù),畫(huà)坐標(biāo)系函數(shù),畫(huà)直線函數(shù),畫(huà)圓函數(shù)。</p><p> 3、計(jì)算處理模塊:用于解決需要計(jì)算才能得到結(jié)果的部分,包括求兩個(gè)直線的交點(diǎn)函數(shù),
13、求兩個(gè)點(diǎn)之間的距離函數(shù),以及坐標(biāo)轉(zhuǎn)換函數(shù)。</p><p><b> 大致流程圖為:</b></p><p> 4、課程設(shè)計(jì)報(bào)告內(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)畫(huà)直線</p><p> void line_2(); //根據(jù)方程畫(huà)直線</p><p> void dot(); //根據(jù)坐標(biāo)畫(huà)點(diǎn)</p><
17、;p> void yuan(); //根據(jù)半徑和圓心畫(huà)圓</p><p> void lon(); //求兩點(diǎn)間的距離</p><p> void dt();
18、 //根據(jù)兩條直線求交點(diǎn)</p><p> void cad(); //畫(huà)坐標(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(" 簡(jiǎn)單圖形處理系統(tǒng) \n");</p><p> printf("由于精度問(wèn)題,請(qǐng)盡量取較大的值,坐標(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)計(jì)算兩點(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("請(qǐng)輸入選擇:");</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("輸入錯(cuò)誤,請(qǐng)重新輸入\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)畫(huà)直線函數(shù)</p><p><b> {</b></p><p> double a[4];</p><p> printf("請(qǐng)輸入兩點(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> /****************畫(huà)圖******************************/</p><p><b> cad();</b></p><p><b> //設(shè)置線的顏色</b></p><p> setlinecolo
39、r(YELLOW);</p><p><b> //畫(huà)線</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() //方程畫(huà)直線函數(shù)</p><p><b> {</b></p><p> double a[3],b[2];</p>&l
41、t;p> printf("請(qǐng)輸入直線方程:(如: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> /****************畫(huà)圖*
49、*****************************/</p><p><b> cad();</b></p><p><b> //設(shè)置線的顏色</b></p><p> setlinecolor(YELLOW);</p><p><b> //畫(huà)線</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)畫(huà)點(diǎn)函數(shù)</p><p><b> {</b></p><p> double a[2];</p><p> printf("請(qǐng)輸入點(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> //畫(huà)點(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ù)半徑和圓心畫(huà)圓函數(shù)</p><p><b> {</b></p><p> double a[3];</p>
55、<p> printf("請(qǐng)輸入半徑和圓心的坐標(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> //畫(huà)圓</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() //畫(huà)坐標(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> //畫(huà)坐標(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("請(qǐng)輸入兩點(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> //用勾股定理計(jì)算</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("請(qǐng)輸入一條直線方程:(如:3x+4y+5=0)\n");</p><p> scanf(&q
67、uot;%lfx+%lfy+%lf=0",&a[0],&a[1],&a[2]);</p><p> printf("請(qǐng)輸入另一條直線方程:(如: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("無(wú)交點(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("有無(wú)數(shù)個(gè)交點(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)試及測(cè)試</b></p><p><b> 5、1調(diào)試</b></p><p> 本程序在個(gè)人
74、電腦的windows 7環(huán)境下安裝的Visual C++6.0語(yǔ)言系統(tǒng)下調(diào)試,通過(guò)調(diào)試發(fā)現(xiàn)了一些error,有的是語(yǔ)法錯(cuò)誤,有的是邏輯錯(cuò)誤,但是經(jīng)過(guò)修改,這些error都被消除,調(diào)試結(jié)果如下:</p><p> 現(xiàn)在程序已經(jīng)可以安全運(yùn)行。</p><p><b> 5、2測(cè)試</b></p><p> 通過(guò)運(yùn)行程序,發(fā)現(xiàn)了一些被遺漏的情況
75、,如求兩條直線的交點(diǎn)的時(shí)候沒(méi)有考慮到平行和重合的情況,但是經(jīng)過(guò)改正,已經(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è)計(jì)總結(jié)</b></p><p><b> 7、1心得體會(huì)</b></p>
77、;<p> 通過(guò)這次的程序設(shè)計(jì),我深切意識(shí)到目前我們所學(xué)的有關(guān)C語(yǔ)言的知識(shí)是多么的少,而且由于學(xué)完C語(yǔ)言之后很少應(yīng)用,以至于遺忘了很多已經(jīng)學(xué)過(guò)的東西,比如文件處理函數(shù)等。在網(wǎng)上查閱資料的時(shí)候發(fā)現(xiàn)一些人用已經(jīng)學(xué)過(guò)的東西也能編寫(xiě)一些很高級(jí)的程序。由此認(rèn)識(shí)到學(xué)以致用非常重要,在接下來(lái)的時(shí)間里,我一定會(huì)好好利用圖書(shū)館及網(wǎng)絡(luò)資源,擴(kuò)充自己的知識(shí)面。與此同時(shí)會(huì)花更多的時(shí)間與大家交流,來(lái)使彼此成長(zhǎng)的更快。</p><
78、;p><b> 7、2編寫(xiě)所遇問(wèn)題</b></p><p> 1、Visual C++ 6.0運(yùn)行平臺(tái)沒(méi)有圖形處理函數(shù)</p><p> 2、系統(tǒng)坐標(biāo)和常規(guī)坐標(biāo)系不一致</p><p> 3、畫(huà)線函數(shù)只能畫(huà)出線段不能畫(huà)出直線</p><p> 4、整個(gè)圖形處理函數(shù)只能在整數(shù)單位上標(biāo)點(diǎn)</p>
79、<p><b> 7、3問(wèn)題解決方案</b></p><p> 1、在網(wǎng)上找到了圖形處理函數(shù)頭文件,將該文件安裝到Visual C++ 6.0上,就可以在Visual C++ 6.0運(yùn)行圖形處理函數(shù)。</p><p> 2、添加一個(gè)坐標(biāo)轉(zhuǎn)換函數(shù),使得坐標(biāo)系與常規(guī)坐標(biāo)系一致。</p><p> 3、將線段的兩個(gè)端點(diǎn)的坐標(biāo)按照比
80、例進(jìn)行延長(zhǎng),使得兩個(gè)端點(diǎn)坐標(biāo)在窗口之外,這樣視覺(jué)上就是一條直線。</p><p> 4、整個(gè)計(jì)算過(guò)程采用雙精度進(jìn)行計(jì)算,在畫(huà)圖時(shí)將雙進(jìn)度轉(zhuǎn)化為整型變量,這樣就可以運(yùn)用圖形處理函數(shù)。</p><p><b> 參考文獻(xiàn)</b></p><p> 【1】譚浩強(qiáng)編著.C程序設(shè)計(jì)(第四版),北京,清華大學(xué)出版社,2010年</p>
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)——簡(jiǎn)單圖形的處理系統(tǒng)
- 課程設(shè)計(jì)--簡(jiǎn)單圖形的處理系統(tǒng)
- 【課程設(shè)計(jì)】簡(jiǎn)單語(yǔ)音處理系統(tǒng)設(shè)計(jì)
- 簡(jiǎn)單圖形處理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--銀行數(shù)據(jù)處理系統(tǒng)
- c語(yǔ)言圖形時(shí)鐘課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- c課程設(shè)計(jì)---字符串處理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--符串處理
- 圖形模擬時(shí)鐘c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--圖像處理
- c語(yǔ)言課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告
- c語(yǔ)言圖形五子棋課程設(shè)計(jì)報(bào)告
- c語(yǔ)言圖形五子棋課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告(宿舍管理系統(tǒng))
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—服裝銷售系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--車票管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--成績(jī)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論