c語言課程設(shè)計設(shè)計報告--模擬電子時鐘_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  單 位 電氣與電子工程學(xué)院 分院(系)</p><p>  專 業(yè) 電氣 </p><p>  學(xué) 號 </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師 </p><p>  完成日期 201

2、1 年5 月29日</p><p><b>  摘 要</b></p><p>  電子時鐘是一種用電腦實(shí)現(xiàn)時、分、秒計時的裝置,與機(jī)械時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命。電子鐘已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵?,廣泛用于個人家庭以及車站、碼頭、劇院、辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大地方便。</p>

3、;<p>  C語言功能豐富、表達(dá)能力強(qiáng)、使用方便、應(yīng)用面廣、目標(biāo)程序效率高,因此特別適合模擬電子時鐘的開發(fā)</p><p>  關(guān)鍵詞:模擬電子時鐘,程序設(shè)計。</p><p><b>  目錄</b></p><p>  第1章 選題的意義……………………………………………………………… 4</p><p

4、>  1.1 ………………………………………………………………………… 4</p><p>  1.2 ………………………………………………………………………… 4</p><p>  第2章 系統(tǒng)功能需求分析 ……………………………………………………… 5</p><p>  2.1系統(tǒng)的基本要求 ……………………………………………………… 5</p&

5、gt;<p>  2.2 ………………………………………………………………………… 5</p><p>  第3章 系統(tǒng)設(shè)計 ………………………………………………………………… 6</p><p>  第4章 系統(tǒng)實(shí)現(xiàn) ………………………………………………………………… 7</p><p>  第5章 總結(jié) …………………………………………………………

6、…………… 8</p><p><b>  第1章 選題的意義</b></p><p><b>  1.1 選題的意義</b></p><p>  隨著社會的發(fā)展,電子鐘逐漸成為人們生活中不可缺少的一部分。人們對時鐘精度的要求越來越高,這就要求我們動用電子模擬技術(shù)對時鐘的精度進(jìn)行保證,同時模擬電子時鐘還可以設(shè)計出美觀的畫面

7、,具有現(xiàn)實(shí)中時鐘不可相比的優(yōu)點(diǎn)。此程序所模擬出來的電子時鐘具有操作簡單,靈活,實(shí)用的優(yōu)點(diǎn),可以為我們提供方便。</p><p>  同時通過對生活中普遍存在實(shí)物的設(shè)計,可以加深我們對c語言的深入理解掌握開發(fā)電子鐘的基本原理,為進(jìn)一步開發(fā)高質(zhì)量程序打下基礎(chǔ)。</p><p><b>  1.2 硬件環(huán)境</b></p><p>  完整的電腦,包

8、括鍵盤、鼠標(biāo)、以及足夠大的內(nèi)存空間。屏幕尺寸推薦使用640*380.</p><p><b>  1.3軟件環(huán)境</b></p><p>  開發(fā)過程采用win-tc環(huán)境,</p><p>  運(yùn)行環(huán)境是采用windows xp操作系統(tǒng)。</p><p>  第2章 系統(tǒng)功能需求分析</p><p&g

9、t;  2.1系統(tǒng)的基本要求</p><p>  實(shí)現(xiàn)時鐘顯示功能 ,具有動畫模擬時鐘和數(shù)字時鐘,可以修改時間,</p><p><b>  界面友好,運(yùn)行穩(wěn)定</b></p><p><b>  2.2系統(tǒng)的功能</b></p><p>  首先畫出時鐘的界面,包括表盤,表針,以及數(shù)字時鐘界面。&

10、lt;/p><p>  同時還在屏幕上打印出幫助信息,使使用者輕松方便的使用該時鐘。</p><p>  預(yù)期設(shè)想實(shí)現(xiàn)時鐘的調(diào)時功能,按下一個鍵,進(jìn)入時鐘時間重設(shè)功能。</p><p>  本電子時鐘有四個模塊構(gòu)成,電子時鐘界面顯示,電子時鐘按鍵控制,電子時鐘動畫處理,數(shù)字時鐘模擬;具備修改時間功能,模擬出動態(tài)畫面,界面友好,顯示準(zhǔn)確??梢阅M出動畫狀態(tài)。運(yùn)行穩(wěn)定,時間

11、準(zhǔn)確,精度較高,界面給人以美感,舒適。</p><p><b>  第3章 系統(tǒng)設(shè)計</b></p><p>  設(shè)計主體為首先畫圖,然后調(diào)用時鐘處理函數(shù),其次再調(diào)用一個循環(huán),使之進(jìn)入主體時鐘處理函數(shù)。時鐘處理函數(shù)中含有劃線函數(shù),先取得電腦中的時間,調(diào)用畫圖函數(shù)畫出當(dāng)前所對應(yīng)的模擬時鐘圖像,同時把時間賦給數(shù)字時鐘</p><p><b&g

12、t;  3.1流程圖</b></p><p>  3.2電子時鐘界面顯示</p><p>  本程序定義了huatu()函數(shù),程序首先進(jìn)入主函數(shù)后,就開始調(diào)用huatu()函數(shù)。Huatu()函數(shù)中首先調(diào)用initgraph()函數(shù),使系統(tǒng)進(jìn)入圖形模式,調(diào)用setlinestyle(x,y,z)函數(shù)來設(shè)定線粗。Z代表線的粗細(xì),分為1,2,3三個等級的線型;調(diào)用setbkcolo

13、r(x)函數(shù)設(shè)置當(dāng)前的背景顏色,顏色分為1-15個等級,0為白色;然后調(diào)用setcolor(x)函數(shù)確定當(dāng)前畫線的顏色,同樣也有1-15個等級;調(diào)用line(x,y,a,b)函數(shù)開始畫線,(x,y)代表起點(diǎn)坐標(biāo)(a,b)代表終點(diǎn)坐標(biāo);然后調(diào)用outtextxy(x,y,””)函數(shù)在坐標(biāo)點(diǎn)為(x,y)的位置輸出分號中的內(nèi)容;其中還調(diào)用了circle(i,j,x)函數(shù)畫出了以x為半徑(x,y)為圓心的圓作為表示小時或者分鐘的圓點(diǎn);調(diào)用完以上

14、函數(shù)就完成了界面主體的繪制。</p><p><b>  3.3按鍵控制模塊</b></p><p>  在本模塊中,使用bioskey()函數(shù)讀取用戶的鍵值進(jìn)行判斷,執(zhí)行相應(yīng)操作。具體如下:</p><p>  用戶按下TAB或者Esc鍵,系統(tǒng)調(diào)按鍵判斷函數(shù),跳出時鐘處理函數(shù)1,進(jìn)入輸入界面,調(diào)用scanf()函數(shù)對結(jié)構(gòu)體變量中的元素&

15、;t[0].ti_min,&t[0].ti_hour,&t[0].ti_sec重新賦值后,再調(diào)用settime(t)函數(shù),使之把數(shù)值賦給系統(tǒng)時間,通過改變系統(tǒng)時間達(dá)到修改時間的功能。</p><p><b>  3.4時鐘動畫處理</b></p><p>  時鐘動畫處理是本程序的核心,巧妙模擬出動態(tài)效果。其中的關(guān)鍵在于對時針、分針、秒針的繪制以及計算

16、。具體設(shè)計如下:</p><p>  坐標(biāo)點(diǎn)的計算,表盤中的時分秒有一個共同的圓心,但是各在不同的圓弧上移動,規(guī)律是:秒針轉(zhuǎn)動60次,分針轉(zhuǎn)動1次;分針轉(zhuǎn)動60次,時針轉(zhuǎn)動1次;秒針每一次所經(jīng)過的角度是60度,并且可以通過與圓心的關(guān)系計算出來。具體計算如下:圓心坐標(biāo)為(x,y),半徑為r借助三角函數(shù)可以求得k點(diǎn)的坐標(biāo)值(x+a,y-a),同樣可以用相同的方法求得,分、秒的坐標(biāo)值。本程序中a,b,c分別取50,80

17、,98,單位為像素??梢阅M出不同的長度,作為時、分、秒指針示意圖如下:</p><p><b>  動畫處理流程</b></p><p>  初運(yùn)行階段首先取得系統(tǒng)時間并保存在t結(jié)構(gòu)體變量內(nèi),同時在數(shù)字時鐘中顯示出當(dāng)前系統(tǒng)時間。然后開始進(jìn)入for循環(huán),直到用戶按ESC或者Tab鍵跳出循環(huán)。同時打開揚(yáng)聲器,發(fā)出滴答聲,并利用while循環(huán)延遲一秒從而模擬出機(jī)械鐘的滴答

18、聲。延遲一秒后清除原來的秒針,繪制新的秒針,同時更新數(shù)字時鐘的數(shù)字。用一個if語句判斷如果分鐘有變化,清除分針,重繪分針;如果時針有變化,清除時針,重繪時針。最后通過對鍵值的判斷,若為Esc或者Tab則跳出循環(huán)。</p><p>  3.5數(shù)字時鐘處理模塊</p><p>  在本模塊中,每隔一秒會調(diào)用gettime(t)函數(shù)來得到系統(tǒng)時間,并把它賦給digitclock()函數(shù),并在顯示

19、相應(yīng)的數(shù)字時鐘位置,同時還有一個判斷語句,如果秒數(shù)等于60,那么秒數(shù)就會重新變?yōu)?,從而形成一個循環(huán)。修改時間是通過的改變系統(tǒng)時間來實(shí)現(xiàn)的,調(diào)用scanf()函數(shù)把t結(jié)構(gòu)體變量重新賦值,再調(diào)用settime()函數(shù)就把系統(tǒng)時間修改成功了。</p><p><b>  第4章 系統(tǒng)實(shí)現(xiàn)</b></p><p>  /*電子時鐘源代碼*/</p><p

20、>  #include<graphics.h></p><p>  #include<stdio.h></p><p>  #include<math.h></p><p>  #include<dos.h></p><p>  #define PI 3.1415926 /*定義常量*/&

21、lt;/p><p>  #define ESC 0x11b /*ESC鍵 : 退出系統(tǒng)*/</p><p>  #define TAB 0xf09 /*TAB鍵 : 移動光標(biāo)*/</p><p><b>  /*函數(shù)聲明*/</b></p><p>  int keyhandle(int); /*鍵盤按鍵判斷,并調(diào)用

22、相關(guān)函數(shù)處理*/</p><p>  int digithour(double); /*將double型的小時數(shù)轉(zhuǎn)換成int型*/</p><p>  int digitmin(double); /*將double型的分鐘數(shù)轉(zhuǎn)換成int型*/</p><p>  int digitsec(double); /*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/<

23、/p><p>  void digitclock(int,int,int ); /*在指定位置顯示時鐘或分鐘或秒鐘數(shù)*/</p><p>  void drawcursor(int); /*繪制一個光標(biāo)*/</p><p>  void clearcursor(int);/*消除前一個光標(biāo)*/</p><p>  void clockhandle

24、(); /*時鐘處理*/</p><p>  double h,m,s; /*全局變量:小時,分,秒*/</p><p>  double ho,mi;</p><p>  double x,x1,x2,y,y1,y2; /*全局變量:坐標(biāo)值*/</p><p>  struct time t[1];/*定義一個time結(jié)構(gòu)類型的數(shù)組*/&l

25、t;/p><p><b>  main()</b></p><p><b>  {</b></p><p><b>  huatu();</b></p><p>  clockhandle1();/*開始調(diào)用時鐘處理程序*/</p><p><b>

26、;  tab1:</b></p><p>  closegraph();</p><p>  printf("setuptime,now!\n please (min,hour,sec)\n");</p><p>  scanf("%d,%d,%d",&t[0].ti_min,&t[0].ti_ho

27、ur,&t[0].ti_sec);</p><p><b>  huatu();</b></p><p>  settime(t);</p><p>  clockhandle2();</p><p>  goto tab1;</p><p>  closegraph(); /*關(guān)閉圖形系

28、統(tǒng)*/</p><p>  return 0; /*表示程序正常結(jié)束,向操作系統(tǒng)返回一個0值*/</p><p><b>  }</b></p><p>  clockhandle1()</p><p><b>  {</b></p><p>  int k=0,count;

29、</p><p>  setcolor(15);</p><p>  gettime(t);/*取得系統(tǒng)時間,保存在time結(jié)構(gòu)類型的數(shù)組變量中*/</p><p>  h=t[0].ti_hour;</p><p>  m=t[0].ti_min;</p><p>  x=50*sin((h*60+m)/360*PI

30、)+320; /*時針的x坐標(biāo)值*/</p><p>  y=180-50*cos((h*60+m)/360*PI); /*時針的y坐標(biāo)值*/</p><p>  line(320,180,x,y);/*在電子表中繪制時針*/</p><p>  x1=80*sin(m/30*PI)+320; /*分針的x坐標(biāo)值*/</p><p>  y1

31、=180-80*cos(m/30*PI); /*分針的y坐標(biāo)值*/</p><p>  line(320,180,x1,y1); /*在電子表中繪制分針*/</p><p>  digitclock(260,333,digithour(h)); /*在數(shù)字時鐘中,顯示當(dāng)前的小時值*/</p><p>  digitclock(305,333,digitmin(m))

32、; /*在數(shù)字時鐘中,顯示當(dāng)前的分鐘值*/</p><p>  setwritemode(1);</p><p>  /*規(guī)定畫線的方式,如果mode=1,則表示畫線時用現(xiàn)在特性的線</p><p>  與所畫之處原有的線進(jìn)行異或(XOR)操作,實(shí)際上畫出的線是原有線與現(xiàn)在規(guī)定</p><p>  的線進(jìn)行異或后的結(jié)果。因此, 當(dāng)線的特性不變

33、, 進(jìn)行兩次畫線操作相當(dāng)于沒有 </p><p>  畫線,即在當(dāng)前位置處清除了原來的畫線*/</p><p>  for(count=2;k!=ESC&&k!=TAB;){ /*開始循環(huán),直至用戶按下ESC鍵結(jié)束循環(huán)*/</p><p>  setcolor(12);/*淡紅色*/</p><p>  sound(500);

34、/*以指定頻率打開PC揚(yáng)聲器,這里頻率為500Hz*/</p><p>  delay(700);/*發(fā)一個頻率為500Hz的音調(diào),維持700毫秒*/</p><p>  sound(200);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/</p><p>  delay(300);</p><p>  /*以上兩種不同頻率的音調(diào),可

35、仿真鐘表轉(zhuǎn)動時的嘀噠聲*/</p><p>  nosound(); /*關(guān)閉PC揚(yáng)聲器*/</p><p>  s=t[0].ti_sec;</p><p>  m=t[0].ti_min;</p><p>  h=t[0].ti_hour;</p><p>  x2=98*sin(s/30*PI)+320; /*秒

36、針的x坐標(biāo)值*/</p><p>  y2=180-98*cos(s/30*PI); /*秒針的y坐標(biāo)值*/</p><p>  setlinestyle(0,0,1);</p><p>  line(320,180,x2,y2);</p><p><b>  /*繪制秒針*/</b></p><p&

37、gt;  /*利用此循環(huán),延時一秒*/</p><p>  while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h)</p><p>  { gettime(t);/*取得系統(tǒng)時間*/</p><p>  if(bioskey(1)!=0){</p><p>

38、;  k=bioskey(0);</p><p>  count=keyhandle(k);</p><p><b>  }</b></p><p><b>  }</b></p><p>  setcolor(15);</p><p>  digitclock(353,33

39、3,digitsec(s)+1);/*數(shù)字時鐘增加1秒*/</p><p>  setcolor(12); /*淡紅色*/</p><p>  x2=98*sin(s/30*PI)+320;</p><p>  y2=180-98*cos(s/30*PI);</p><p>  line(320,180,x2,y2);</p>

40、<p>  /*用原來的顏色在原來位置處再繪制秒針,以達(dá)到清除當(dāng)前秒針的目的*/</p><p><b>  /*分鐘處理*/</b></p><p>  if(t[0].ti_min!=m){ /*若分鐘有變化*/</p><p>  /*消除當(dāng)前分針*/</p><p>  setcolor(15); /*

41、白色*/</p><p>  x1=80*sin(m/30*PI)+320;</p><p>  y1=180-80*cos(m/30*PI);</p><p>  line(320,180,x1,y1);</p><p>  /*繪制新的分針*/</p><p>  m=t[0].ti_min;</p>

42、<p>  digitclock(305,333,digitmin(m)); /*在數(shù)字時鐘中顯示新的分鐘值*/</p><p>  x1=80*sin(m/30*PI)+320;</p><p>  y1=180-80*cos(m/30*PI);</p><p>  line(320,180,x1,y1);</p><p>&l

43、t;b>  }</b></p><p><b>  /*小時處理*/</b></p><p>  if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){ /*若小時數(shù)有變化*/</p><p>  /*消除當(dāng)前時針*/</p><p>  setcolor(15);

44、/*白色*/</p><p>  x=50*sin((h*60+m)/360*PI)+320;/*50:時鐘的長度(單位:像素),320:圓心的x坐標(biāo)值*/</p><p>  y=180-50*cos((h*60+m)/360*PI);</p><p>  line(320,180,x,y);</p><p>  /*繪制新的時針*/<

45、;/p><p>  h=t[0].ti_hour;</p><p>  digitclock(260,333,digithour(h));</p><p>  x=50*sin((h*60+m)/360*PI)+320;</p><p>  y=180-50*cos((h*60+m)/360*PI);</p><p>  

46、line(320,180,x,y);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  int keyhandle(int key) /*鍵盤控制 */</p><

47、p>  { switch(key)</p><p>  case TAB:;</p><p><b>  }</b></p><p>  int digithour(double h)/*將double型的小時數(shù)轉(zhuǎn)換成int型*/</p><p><b>  {int i;</b></p

48、><p>  for(i=0;i<=23;i++)</p><p>  {if(h==i) return i;}</p><p><b>  }</b></p><p>  int digitmin(double m)/*將double型的分鐘數(shù)轉(zhuǎn)換成int型*/</p><p><b&g

49、t;  {int i;</b></p><p>  for(i=0;i<=59;i++)</p><p>  {if(m==i) return i;}</p><p><b>  }</b></p><p>  int digitsec(double s) /*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/

50、</p><p><b>  {int i;</b></p><p>  for(i=0;i<=59;i++)</p><p>  {if(s==i) return i;}</p><p><b>  }</b></p><p>  void digitclock(in

51、t x,int y,int clock)/*在指定位置顯示數(shù)字時鐘:時\分\秒*/</p><p>  {char buffer1[10];</p><p>  setfillstyle(0,2);</p><p>  bar(x,y,x+20,348);</p><p>  if(clock==60) clock=0;</p>

52、<p>  sprintf(buffer1,"%d",clock);</p><p>  outtextxy(x,y,buffer1);</p><p><b>  }</b></p><p>  void drawcursor(int count) /*根據(jù)count的值,畫一個光標(biāo)*/</p>

53、;<p>  {switch(count)</p><p><b>  {</b></p><p>  case 1:line(424,315,424,325);break;</p><p>  case 2:line(465,315,465,325);break;</p><p>  case 3:lin

54、e(505,315,505,325);break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void clearcursor(int count) /*根據(jù)count的值,清除前一個光標(biāo)*/</p><p>  {switch(cou

55、nt)</p><p><b>  {</b></p><p>  case 1:line(424,315,424,325);break;</p><p>  case 2:line(465,315,465,325);break;</p><p>  case 3:line(505,315,505,325);break;

56、</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  huatu()</b></p><p><b>  {</b></p><p>  int driver, mode=0,

57、i,j;</p><p>  driver=DETECT; /*自動檢測顯示設(shè)備*/</p><p>  initgraph(&driver, &mode, "");/*初始化圖形系統(tǒng)*/</p><p>  setlinestyle(0,0,3); /*設(shè)置當(dāng)前畫線寬度和類型:設(shè)置三點(diǎn)寬實(shí)線*/</p><p

58、>  setbkcolor(0);/*用調(diào)色板設(shè)置當(dāng)前背景顏色*/</p><p>  setcolor(9); /*設(shè)置當(dāng)前畫線顏色*/</p><p>  line(5,5,635,5);</p><p>  line(5,5,5,475);</p><p>  line(635,5,635,475);</p><

59、;p>  line(5,475,635,475);</p><p>  line(5,235,320,5);</p><p>  line(320,5,635,235);</p><p>  line(635,235,320,400);</p><p>  line(320,400,5,235); /*畫主體框架的邊直線*

60、/</p><p>  /*arc(int x, int y, int stangle, int endangle, int radius)*/</p><p>  setcolor(15);</p><p>  outtextxy(305,50,"CLOCK"); /*顯示標(biāo)題*/</p><p>  setcolor(

61、7);</p><p>  line(250,320,390,320);</p><p>  line(390,320,390,350);</p><p>  line(390,350,250,350);</p><p>  line(250,350,250,320);</p><p>  setcolor(5);&l

62、t;/p><p>  for(i=290;i<=336;i+=46)</p><p>  for(j=333;j<=340;j+=7){</p><p>  setlinestyle(0,0,3);</p><p>  circle(i,j,1); /*以(i, y)為圓心,1為半徑畫圓*/</p><p>&

63、lt;b>  }</b></p><p>  /*繪制表示小時的圓點(diǎn)*/</p><p>  setcolor(15);</p><p>  for(i=0,mi=0,ho=0;i<=11;i++,ho++){</p><p>  x=100*sin((ho*60+mi)/360*PI)+320;</p>

64、<p>  y=180-100*cos((ho*60+mi)/360*PI);</p><p>  setlinestyle(0,0,3);</p><p>  circle(x,y,2);</p><p><b>  }</b></p><p>  /*繪制表示分鐘或秒鐘的圓點(diǎn)*/</p>&

65、lt;p>  setcolor(11);</p><p>  for(i=0,mi=0;i<=59;mi++,i++){</p><p>  x=100*sin(mi/30*PI)+320;</p><p>  y=180-100*cos(mi/30*PI);</p><p>  setlinestyle(0,0,1);</

66、p><p>  circle(x,y,1);</p><p><b>  }</b></p><p>  /*在電子表的左邊打印幫助提示信息*/</p><p>  setcolor(12);</p><p>  outtextxy(250,420,"Do not waste time!&q

67、uot;);</p><p>  outtextxy(20,35,"print TAB or ESC to setup time!");</p><p>  outtextxy(385,35,"May you be happy forever");</p><p>  setcolor(10);</p><

68、p>  outtextxy(400,55,"version 1.0");</p><p>  outtextxy(20,55,"jinhengli c language program");</p><p>  outtextxy(313,65,"12");</p><p>  outtextxy(3

69、63,80,"1");</p><p>  outtextxy(413,120,"2");</p><p>  outtextxy(426,175,"3");</p><p>  outtextxy(413,225,"4");</p><p>  outtextx

70、y(370,273,"5");</p><p>  outtextxy(316,286,"6");</p><p>  outtextxy(263,275,"7");</p><p>  outtextxy(219,233,"8");</p><p>  outt

71、extxy(205,177,"9");</p><p>  outtextxy(214,120,"10");</p><p>  outtextxy(263,80,"11");</p><p>  setcolor(10);</p><p>  circle(150,240,50);

72、</p><p>  circle(150,240,45);</p><p>  circle(150,240,40);</p><p>  circle(150,240,35);</p><p>  circle(150,240,30);</p><p>  circle(150,240,25);</p>

73、<p>  circle(150,240,20);</p><p>  circle(150,240,15);</p><p>  circle(150,240,10);</p><p>  circle(150,240,05);</p><p>  circle(150,240,1);</p><p>

74、  circle(490,240,50);</p><p>  circle(490,240,45);</p><p>  circle(490,240,40);</p><p>  circle(490,240,35);</p><p>  circle(490,240,30);</p><p>  circle(4

75、90,240,25);</p><p>  circle(490,240,20);</p><p>  circle(490,240,15);</p><p>  circle(490,240,10);</p><p>  circle(490,240,05);</p><p>  circle(490,240,1);

76、</p><p><b>  }</b></p><p>  clockhandle2()</p><p><b>  {</b></p><p>  int k=0,count;</p><p>  setcolor(15);</p><p>  g

77、ettime(t);/*取得系統(tǒng)時間,保存在time結(jié)構(gòu)類型的數(shù)組變量中*/</p><p>  h=t[0].ti_hour;</p><p>  m=t[0].ti_min;</p><p>  x=50*sin((h*60+m)/360*PI)+320; /*時針的x坐標(biāo)值*/</p><p>  y=180-50*cos((h*60+

78、m)/360*PI); /*時針的y坐標(biāo)值*/</p><p>  line(320,180,x,y);/*在電子表中繪制時針*/</p><p>  x1=80*sin(m/30*PI)+320; /*分針的x坐標(biāo)值*/</p><p>  y1=180-80*cos(m/30*PI); /*分針的y坐標(biāo)值*/</p><p>  line

79、(320,180,x1,y1); /*在電子表中繪制分針*/</p><p>  digitclock(260,333,digithour(h)); /*在數(shù)字時鐘中,顯示當(dāng)前的小時值*/</p><p>  digitclock(305,333,digitmin(m)); /*在數(shù)字時鐘中,顯示當(dāng)前的分鐘值*/</p><p>  setwritemode(1);

80、</p><p>  /*規(guī)定畫線的方式,如果mode=1,則表示畫線時用現(xiàn)在特性的線</p><p>  與所畫之處原有的線進(jìn)行異或(XOR)操作,實(shí)際上畫出的線是原有線與現(xiàn)在規(guī)定</p><p>  的線進(jìn)行異或后的結(jié)果。因此, 當(dāng)線的特性不變, 進(jìn)行兩次畫線操作相當(dāng)于沒有 </p><p>  畫線,即在當(dāng)前位置處清除了原來的畫線*/&

81、lt;/p><p>  for(count=2;k!=ESC&&k!=TAB;){ /*開始循環(huán),直至用戶按下ESC鍵結(jié)束循環(huán)*/</p><p>  setcolor(12);/*淡紅色*/</p><p>  sound(500);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為500Hz*/</p><p>  delay(700)

82、;/*發(fā)一個頻率為500Hz的音調(diào),維持700毫秒*/</p><p>  sound(200);/*以指定頻率打開PC揚(yáng)聲器,這里頻率為200Hz*/</p><p>  delay(300);</p><p>  /*以上兩種不同頻率的音調(diào),可仿真鐘表轉(zhuǎn)動時的嘀噠聲*/</p><p>  nosound(); /*關(guān)閉PC揚(yáng)聲器*/&l

83、t;/p><p>  s=t[0].ti_sec;</p><p>  m=t[0].ti_min;</p><p>  h=t[0].ti_hour;</p><p>  x2=98*sin(s/30*PI)+320; /*秒針的x坐標(biāo)值*/</p><p>  y2=180-98*cos(s/30*PI); /*秒針的

84、y坐標(biāo)值*/</p><p>  setlinestyle(0,0,1);</p><p>  line(320,180,x2,y2);</p><p><b>  /*繪制秒針*/</b></p><p>  /*利用此循環(huán),延時一秒*/</p><p>  while(t[0].ti_sec=

85、=s&&t[0].ti_min==m&&t[0].ti_hour==h)</p><p>  { gettime(t);/*取得系統(tǒng)時間*/</p><p>  if(bioskey(1)!=0){</p><p>  k=bioskey(0);</p><p>  count=keyhandle(k);&l

86、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  setcolor(15);</p><p>  digitclock(353,333,digitsec(s)+1);/*數(shù)字時鐘增加1秒*/</p><p>  setcolor

87、(12); /*淡紅色*/</p><p>  x2=98*sin(s/30*PI)+320;</p><p>  y2=180-98*cos(s/30*PI);</p><p>  line(320,180,x2,y2);</p><p>  /*用原來的顏色在原來位置處再繪制秒針,以達(dá)到清除當(dāng)前秒針的目的*/</p><

88、;p><b>  /*分鐘處理*/</b></p><p>  if(t[0].ti_min!=m){ /*若分鐘有變化*/</p><p>  /*消除當(dāng)前分針*/</p><p>  setcolor(15); /*白色*/</p><p>  x1=80*sin(m/30*PI)+320;</p>

89、<p>  y1=180-80*cos(m/30*PI);</p><p>  line(320,180,x1,y1);</p><p>  /*繪制新的分針*/</p><p>  m=t[0].ti_min;</p><p>  digitclock(305,333,digitmin(m)); /*在數(shù)字時鐘中顯示新的分鐘值

90、*/</p><p>  x1=80*sin(m/30*PI)+320;</p><p>  y1=180-80*cos(m/30*PI);</p><p>  line(320,180,x1,y1);</p><p><b>  }</b></p><p><b>  /*小時處理*/

91、</b></p><p>  if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){ /*若小時數(shù)有變化*/</p><p>  /*消除當(dāng)前時針*/</p><p>  setcolor(15); /*白色*/</p><p>  x=50*sin((h*60+m)/360*PI)+320;/

92、*50:時鐘的長度(單位:像素),320:圓心的x坐標(biāo)值*/</p><p>  y=180-50*cos((h*60+m)/360*PI);</p><p>  line(320,180,x,y);</p><p>  /*繪制新的時針*/</p><p>  h=t[0].ti_hour;</p><p>  di

93、gitclock(260,333,digithour(h));</p><p>  x=50*sin((h*60+m)/360*PI)+320;</p><p>  y=180-50*cos((h*60+m)/360*PI);</p><p>  line(320,180,x,y);</p><p><b>  }</b>

94、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  第5章 總結(jié)</b></p><p>  本次課程設(shè)計用到了很多陌生的函數(shù),如:line(),circle(),setcolor(),settime()等,但是通過自

95、己細(xì)心地分析,在老師的耐心指導(dǎo)下,我很快學(xué)會了許多沒見過的函數(shù)。這次課程設(shè)計就如同上了一次c語言的課,在設(shè)計過程中學(xué)到很多書本上學(xué)不到的知識。真正的學(xué)習(xí)過程是在實(shí)踐中不斷地摸索,不斷地前進(jìn)中學(xué)習(xí)的,在實(shí)踐中可以發(fā)現(xiàn)一些現(xiàn)實(shí)的問題,可以遇見一些突發(fā)情況。在實(shí)踐中運(yùn)用知識,既增強(qiáng)了我們的動手能力,同時也鍛煉了我們的思維方式以及解決問題的能力。</p><p>  通過本次課程設(shè)計,使我掌握了如何設(shè)計一個程序,如何處理

96、程序設(shè)計過程中出現(xiàn)的問題。雖然設(shè)計過程中出現(xiàn)很多問題,但是努力去思考,努力去攻克,沒有設(shè)計不出來的程序,沒有攻克不了的難題。C語言是一個功能強(qiáng)大的計算機(jī)語言,學(xué)會c語言可以為我們以后的發(fā)展鋪平道路。這次實(shí)地上機(jī)操作,給了我們一份體驗(yàn),讓我們體會到了在程序編寫過程中所遇到的難題,同時也激勵我們繼續(xù)在實(shí)踐中學(xué)習(xí)c語言,為以后開發(fā)出功能強(qiáng)大的軟件積累經(jīng)驗(yàn)。</p><p>  最后非常感謝劉老師對我的精心指導(dǎo)!<

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論