2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  XX大學(xué)</b></p><p><b>  課程設(shè)計說明書</b></p><p>  學(xué)生姓名: </p><p>  學(xué) 號:

2、 </p><p>  學(xué) 院: </p><p>  專 業(yè): </p><p>  題 目: 指針式時鐘 </p&g

3、t;<p>  指導(dǎo)教師:  職稱: </p><p>  2013 年 1 月 11 日</p><p><b>  XX大學(xué)</b></p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  12/1

4、3 學(xué)年第 一 學(xué)期</p><p>  學(xué) 院: </p><p>  專 業(yè): </p><p>  學(xué) 生 姓 名:

5、 </p><p>  學(xué) 號: </p><p>  題 目: 指針式時鐘 </p><p>  起 迄 日 期:

6、 </p><p>  課程設(shè)計地點: </p><p>  指 導(dǎo) 教 師: </p><p>  系 主 任: <

7、;/p><p>  下達任務(wù)書日期: 2012年12月24日</p><p>  課 程 設(shè) 計 任 務(wù) 書</p><p>  課 程 設(shè) 計 任 務(wù) 書</p><p><b>  目錄</b></p><p>  摘要……………………………………………………………….1</p&g

8、t;<p>  關(guān)鍵詞…………………………………………………………….2</p><p>  設(shè)計目的、意義.......................................3</p><p>  設(shè)計內(nèi)容.............................................4</p><p>  結(jié)果分析.......

9、......................................5</p><p>  設(shè)計心得.............................................6</p><p>  參考文獻.............................................7</p><p>  運行結(jié)果........

10、.....................................8</p><p><b>  摘要:</b></p><p>  計時器是程序中最常用的后臺任務(wù)機制之一,其時間間隔最低約55毫秒,被廣泛用于時鐘、磁盤備份程序或需要在某一時刻運行的程序等。而模擬時鐘是一種集計時器和時鐘顯示于一體的程序。以實例為背景學(xué)習(xí)基于MFC的WINDOWS應(yīng)用程序設(shè)計

11、,編寫一個指針式時鐘程序,此程序在屏幕正中有一個指針式鐘面。指針式的時鐘表盤為橢圓形或圓形,并且圓周上有分布均勻的12個刻度,刻度要求顯示清晰,鐘面上有長度和顏色及粗細(xì)各不相同的指針,即時針、分針、秒針,以便各個指針重合時亦可以輕易辨認(rèn),指針的運動要求具有規(guī)律性,且為順時針。</p><p><b>  關(guān)鍵詞:指針式時鐘</b></p><p><b> 

12、 設(shè)計目的、意義:</b></p><p>  綜合應(yīng)用VC++的各種編程知識和技巧進行程序設(shè)計的能力,最終掌握面向?qū)ο蟮木幊碳夹g(shù)。通過本次課程設(shè)計,培養(yǎng)自主學(xué)習(xí)和獨立創(chuàng)新能力。</p><p><b>  設(shè)計內(nèi)容:(正文)</b></p><p>  void CMy2View::OnDraw(CDC* pDC)</p&g

13、t;<p><b>  {</b></p><p>  CMy2Doc* pDoc = GetDocument();</p><p>  ASSERT_VALID(pDoc);</p><p>  // TODO: add draw code for native data here</p><p>  R

14、ECT Rect;</p><p>  GetClientRect(&Rect);//計算橢圓中心位置</p><p>  int CenterX=Rect.right/2;</p><p>  int CenterY=Rect.bottom/2;</p><p>  CTime Time=CTime::GetCurrentTime(

15、);</p><p>  CString str;</p><p>  int i,x,y;</p><p>  CSize size;//創(chuàng)建一支畫筆,用來畫橢圓</p><p>  CPen Pen(PS_SOLID,5,RGB(0,0,0));//設(shè)置當(dāng)前畫筆,并記下以前的現(xiàn)筆</p><p>  CPen *O

16、ldPen=pDC->SelectObject(&Pen);//繪制鐘面橢圓</p><p>  pDC->Ellipse(5,5,Rect.right-5,Rect.bottom-5);</p><p>  double Radians;//設(shè)置字體</p><p>  pDC->SetTextColor(RGB(255,0,0));&l

17、t;/p><p>  for(i=1;i<=12;i++)</p><p><b>  {</b></p><p>  str.Format("%d",i);</p><p>  size=pDC->GetTextExtent(str,str.GetLength());</p>

18、<p>  Radians=(double)i*6.28/12.0;//計算鐘點放置的位置</p><p>  x=CenterX-(size.cx/2)+(int)((double)(CenterX-20)*sin(Radians));</p><p>  y=CenterY-(size.cy/2)-(int)((double)(CenterY-20)*cos(Radians)

19、);</p><p><b>  //繪制鐘點</b></p><p>  pDC->TextOut(x,y,str);</p><p><b>  }</b></p><p>  //計算時鐘指針的夾角</p><p>  Radians=(double)Time.G

20、etHour()+(double)Time.GetMinute()/60.0+(double)Time.GetSecond()/3600.0;</p><p>  Radians*=6.28/12.0;</p><p>  //創(chuàng)建時鐘指針畫筆</p><p>  CPen HourPen(PS_SOLID,5,RGB(100,200,100));</p>

21、;<p>  pDC->SelectObject(&HourPen);</p><p><b>  //繪制時鐘指針</b></p><p>  pDC->MoveTo(CenterX,CenterY);</p><p>  pDC->LineTo(CenterX+(int)((double)(Cente

22、rX/3)*sin(Radians)),CenterY-(int)((double)(CenterY/3)*cos(Radians)));</p><p>  Radians=(double)Time.GetMinute()+(double)Time.GetSecond()/60.0;</p><p>  Radians*=6.28/60.0;</p><p>  

23、//創(chuàng)建分鐘指針畫筆</p><p>  CPen MinutePen(PS_SOLID,3,RGB(0,0,255));</p><p>  pDC->SelectObject(&MinutePen);</p><p><b>  //繪制分鐘指針</b></p><p>  pDC->MoveTo

24、(CenterX,CenterY);</p><p>  pDC->LineTo(CenterX+(int)((double)(CenterX*2)/3)*sin(Radians),CenterY-(int)((double)(CenterY*2/3)*cos(Radians)));</p><p>  Radians=(double)Time.GetSecond();</p&

25、gt;<p>  Radians*=6.28/60.0;</p><p>  //創(chuàng)建秒鐘指針畫筆</p><p>  CPen SecondPen(PS_SOLID,1,RGB(0,25,0));</p><p>  pDC->SelectObject(&SecondPen);</p><p><b>

26、  //繪制秒鐘指針</b></p><p>  pDC->MoveTo(CenterX,CenterY);</p><p>  pDC->LineTo(CenterX+(int)((double)(CenterX*4)/5)*sin(Radians),CenterY-(int)((double)(CenterY*4)/5*cos(Radians)));</p

27、><p>  pDC->SelectObject(OldPen);</p><p>  // TODO: add draw code for native data here</p><p><b>  }</b></p><p>  void CMy2View::OnTimer(UINT nIDEvent) <

28、/p><p><b>  {</b></p><p>  // TODO: Add your message handler code here and/or call default</p><p>  InvalidateRect(NULL,true);</p><p>  UpdateWindow();</p&g

29、t;<p>  CView::OnTimer(nIDEvent);</p><p><b>  }</b></p><p>  int CMy2View::OnCreate(LPCREATESTRUCT lpCreateStruct) </p><p><b>  {</b></p><p

30、>  if (CView::OnCreate(lpCreateStruct) == -1)</p><p>  return -1;</p><p>  // TODO: Add your specialized creation code here</p><p>  SetTimer(1,1000,NULL);</p><p>&l

31、t;b>  return 0;</b></p><p><b>  }</b></p><p><b>  結(jié)果分析:</b></p><p>  計時器消息不是和其他消息異步處理的,計時器不會中斷另一個非計時器消息。另外,計時器編程所設(shè)定的時間間隔并不是精確值,因為計時器所基于的硬件計時器每54.9秒“

32、滴答”一次,Windows將把計時值舍入到下一個55毫秒的倍數(shù)。</p><p><b>  設(shè)計心得:</b></p><p>  通過本次課程設(shè)計更加意識到提高編程能力關(guān)鍵是要多多實踐,讀書是為了代碼打基礎(chǔ),但只讀書不敲代碼是不可能提高實際的編程能力的。只有多讀源碼,多寫代碼,多思考才能對知識有更加深刻的了解。</p><p><b&

33、gt;  參考文獻:</b></p><p>  Visual C++課程設(shè)計案例精編</p><p>  《Visual C++程序設(shè)計——基礎(chǔ)與實例分析》 ,朱晴婷,黃海鷹,陳蓮君,清華大學(xué)出版社。</p><p>  《Visual C++6.0開發(fā)技巧與實例教程》 ,同志工作室,人民郵電出版社。</p><p>  《Vi

34、sual C++6.0面向?qū)ο蟪绦蛟O(shè)計教程》 ,劉瑞新,機械工業(yè)出版社。</p><p><b>  運行結(jié)果:</b></p><p><b>  總程序</b></p><p>  // 2View.cpp : implementation of the CMy2View class</p><p&

35、gt;<b>  //</b></p><p>  //#include "math.h"</p><p>  #include "stdafx.h"</p><p>  #include "2.h"</p><p>  #include "2Doc.

36、h"</p><p>  #include "2View.h"</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p>  #undef THIS_FILE</p><p>  static char THIS_FIL

37、E[] = __FILE__;</p><p><b>  #endif</b></p><p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // CMy2View</p><p>  

38、IMPLEMENT_DYNCREATE(CMy2View, CView)</p><p>  BEGIN_MESSAGE_MAP(CMy2View, CView)</p><p>  //{{AFX_MSG_MAP(CMy2View)</p><p>  ON_WM_TIMER()</p><p>  ON_WM_CREATE()</p

39、><p>  //}}AFX_MSG_MAP</p><p>  // Standard printing commands</p><p>  ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)</p><p>  ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFil

40、ePrint)</p><p>  ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)</p><p>  END_MESSAGE_MAP()</p><p>  ///////////////////////////////////////////////////////////////////

41、//////////</p><p>  // CMy2View construction/destruction</p><p>  CMy2View::CMy2View()</p><p><b>  {</b></p><p>  // TODO: add construction code here</p&

42、gt;<p><b>  }</b></p><p>  CMy2View::~CMy2View()</p><p><b>  {</b></p><p><b>  }</b></p><p>  BOOL CMy2View::PreCreateWindow(

43、CREATESTRUCT& cs)</p><p><b>  {</b></p><p>  // TODO: Modify the Window class or styles here by modifying</p><p>  // the CREATESTRUCT cs</p><p>  retu

44、rn CView::PreCreateWindow(cs);</p><p><b>  }</b></p><p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // CMy2View drawing</

45、p><p>  void CMy2View::OnDraw(CDC* pDC)</p><p><b>  {</b></p><p>  CMy2Doc* pDoc = GetDocument();</p><p>  ASSERT_VALID(pDoc);</p><p>  // TODO: a

46、dd draw code for native data here</p><p>  RECT Rect;</p><p>  GetClientRect(&Rect);//計算橢圓中心位置</p><p>  int CenterX=Rect.right/2;</p><p>  int CenterY=Rect.bottom/2

47、;</p><p>  CTime Time=CTime::GetCurrentTime();</p><p>  CString str;</p><p>  int i,x,y;</p><p>  CSize size;//創(chuàng)建一支畫筆,用來畫橢圓</p><p>  CPen Pen(PS_SOLID,5,RG

48、B(0,0,0));//設(shè)置當(dāng)前畫筆,并記下以前的現(xiàn)筆</p><p>  CPen *OldPen=pDC->SelectObject(&Pen);//繪制鐘面橢圓</p><p>  pDC->Ellipse(5,5,Rect.right-5,Rect.bottom-5);</p><p>  double Radians;//設(shè)置字體<

49、;/p><p>  pDC->SetTextColor(RGB(255,0,0));</p><p>  for(i=1;i<=12;i++)</p><p><b>  {</b></p><p>  str.Format("%d",i);</p><p>  siz

50、e=pDC->GetTextExtent(str,str.GetLength());</p><p>  Radians=(double)i*6.28/12.0;//計算鐘點放置的位置</p><p>  x=CenterX-(size.cx/2)+(int)((double)(CenterX-20)*sin(Radians));</p><p>  y=Ce

51、nterY-(size.cy/2)-(int)((double)(CenterY-20)*cos(Radians));</p><p><b>  //繪制鐘點</b></p><p>  pDC->TextOut(x,y,str);</p><p><b>  }</b></p><p> 

52、 //計算時鐘指針的夾角</p><p>  Radians=(double)Time.GetHour()+(double)Time.GetMinute()/60.0+(double)Time.GetSecond()/3600.0;</p><p>  Radians*=6.28/12.0;</p><p>  //創(chuàng)建時鐘指針畫筆</p><p

53、>  CPen HourPen(PS_SOLID,5,RGB(100,200,100));</p><p>  pDC->SelectObject(&HourPen);</p><p><b>  //繪制時鐘指針</b></p><p>  pDC->MoveTo(CenterX,CenterY);</p>

54、;<p>  pDC->LineTo(CenterX+(int)((double)(CenterX/3)*sin(Radians)),CenterY-(int)((double)(CenterY/3)*cos(Radians)));</p><p>  Radians=(double)Time.GetMinute()+(double)Time.GetSecond()/60.0;</p&g

55、t;<p>  Radians*=6.28/60.0;</p><p>  //創(chuàng)建分鐘指針畫筆</p><p>  CPen MinutePen(PS_SOLID,3,RGB(0,0,255));</p><p>  pDC->SelectObject(&MinutePen);</p><p><b>

56、  //繪制分鐘指針</b></p><p>  pDC->MoveTo(CenterX,CenterY);</p><p>  pDC->LineTo(CenterX+(int)((double)(CenterX*2)/3)*sin(Radians),CenterY-(int)((double)(CenterY*2/3)*cos(Radians)));</p

57、><p>  Radians=(double)Time.GetSecond();</p><p>  Radians*=6.28/60.0;</p><p>  //創(chuàng)建秒鐘指針畫筆</p><p>  CPen SecondPen(PS_SOLID,1,RGB(0,25,0));</p><p>  pDC->Se

58、lectObject(&SecondPen);</p><p><b>  //繪制秒鐘指針</b></p><p>  pDC->MoveTo(CenterX,CenterY);</p><p>  pDC->LineTo(CenterX+(int)((double)(CenterX*4)/5)*sin(Radians),

59、CenterY-(int)((double)(CenterY*4)/5*cos(Radians)));</p><p>  pDC->SelectObject(OldPen);</p><p>  // TODO: add draw code for native data here</p><p><b>  }</b></p&g

60、t;<p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // CMy2View printing</p><p>  BOOL CMy2View::OnPreparePrinting(CPrintInfo* pInfo)</p>

61、<p><b>  {</b></p><p>  // default preparation</p><p>  //這個函數(shù)是doc/view結(jié)構(gòu)的MFC程序中固有的,用來為繪制做準(zhǔn)備,無需要自己調(diào)用,</p><p>  //當(dāng)MFC程序運行時,系統(tǒng)自動調(diào)用當(dāng)返回1時表明開始繪制,0時告訴系統(tǒng)繪制被取消</p>

62、<p>  return DoPreparePrinting(pInfo);</p><p><b>  }</b></p><p>  void CMy2View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)</p><p><b>  {</b>

63、</p><p>  // TODO: add extra initialization before printing</p><p><b>  }</b></p><p>  void CMy2View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)</p><p

64、><b>  {</b></p><p>  // TODO: add cleanup after printing</p><p><b>  }</b></p><p>  //////////////////////////////////////////////////////////////////////

65、///////</p><p>  // CMy2View diagnostics</p><p>  #ifdef _DEBUG</p><p>  void CMy2View::AssertValid() const</p><p><b>  {</b></p><p>  CView::A

66、ssertValid();</p><p><b>  }</b></p><p>  void CMy2View::Dump(CDumpContext& dc) const</p><p><b>  {</b></p><p>  CView::Dump(dc);</p>

67、<p><b>  }</b></p><p>  CMy2Doc* CMy2View::GetDocument() // non-debug version is inline</p><p><b>  {</b></p><p>  ASSERT(m_pDocument->IsKindOf(RUNTI

68、ME_CLASS(CMy2Doc)));</p><p>  return (CMy2Doc*)m_pDocument;</p><p><b>  }</b></p><p>  #endif //_DEBUG</p><p>  ////////////////////////////////////////////

69、/////////////////////////////////</p><p>  // CMy2View message handlers</p><p>  void CMy2View::OnTimer(UINT nIDEvent) </p><p><b>  {</b></p><p>  // TODO:

70、Add your message handler code here and/or call default</p><p>  InvalidateRect(NULL,true);</p><p>  UpdateWindow();</p><p>  CView::OnTimer(nIDEvent);</p><p><b> 

71、 }</b></p><p>  int CMy2View::OnCreate(LPCREATESTRUCT lpCreateStruct) </p><p><b>  {</b></p><p>  if (CView::OnCreate(lpCreateStruct) == -1)</p><p>  

72、return -1;</p><p>  // TODO: Add your specialized creation code here</p><p>  SetTimer(1,1000,NULL);</p><p><b>  return 0;</b></p><p><b>  }</b>

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論