c語(yǔ)言課程設(shè)計(jì)報(bào)告-- 簡(jiǎn)單圖形處理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩16頁(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、<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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論