課程設(shè)計---常用功能計算器軟件設(shè)計_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  計算機課程設(shè)計論文</b></p><p>  題 目:常用功能計算器軟件設(shè)計</p><p>  學 院:測試與光電工程學院 </p><p>  專業(yè)名稱:電子科學與技術(shù)</p><p>  班級學號: </p>&l

2、t;p>  學生姓名: </p><p>  指導教師: </p><p><b>  2013年 6月 </b></p><p>  常用功能計算器軟件設(shè)計</p><p>  摘要:計算器是我們?nèi)粘I钪谐S玫墓ぞ咧?,計算器使用方法簡單,操作方便,便于攜帶,適用于簡單快捷的計算。&

3、lt;/p><p>  本設(shè)計使用Visual C++語言編寫具備常用功能的計算器軟件,用Microsoft Visual C++6.0環(huán)境編譯調(diào)試,制作了簡潔的應用界面,使用模塊化設(shè)計和自頂向下的功能實現(xiàn)。</p><p>  本軟件可以進行小數(shù)量級下的加減乘除計算以及開根號、求比例等計算功能,還可以使用存儲器進行多數(shù)據(jù)求和,還可以用退位、清零的方式修正操作失誤,在進行不符合數(shù)學規(guī)則的非法計

4、算時會報出錯誤提示。</p><p>  關(guān)鍵詞: 計算器 Visual C++ Microsoft Visual C++ 6.0</p><p><b>  目錄</b></p><p>  引言…………………………………………………………(1)</p><p>  2、C++語言簡介…………………………………

5、……………(1)</p><p>  3、Microsoft Visual C++開發(fā)環(huán)境簡介……………………(1) </p><p>  4、開發(fā),調(diào)試及運行硬件和軟件環(huán)境…………………………(1) </p><p>  5、軟件整體設(shè)計思路……………………………………………(1)</p><p>  軟件運行效果………………………………

6、………………(2)</p><p>  源代碼………………………………………………………(3)</p><p>  致謝…………………………………………………………(23)</p><p>  參考文獻……………………………………………………(23)</p><p><b>  1、引言</b></p>&

7、lt;p>  計算器是我們?nèi)粘I钪谐S玫囊环N工具,隨著電子科學的發(fā)展,計算器的功能越來越多樣化、復雜化,外觀也越來越多樣化、輕量化,我們可以用很低的價格在市場上買到很實用很漂亮的計算器。為了鞏固和加深對計算機軟件設(shè)計課程的掌握,本課程設(shè)計使用高級語言在Windows環(huán)境下實現(xiàn)了具備常用功能的計算器軟件的設(shè)計。 </p><p><b>  2、C++語言簡介</b></p>

8、;<p>  C++是一種使用非常廣泛的計算機編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計語言。它支持過程化程序設(shè)計、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計、泛型程序設(shè)計等多種程序設(shè)計風格。</p><p>  3、Microsoft Visual C++開發(fā)環(huán)境簡介 </p><p>  Microsoft Visual C++是Microsoft公司推出

9、的開發(fā)Win32環(huán)境程序,面向?qū)ο蟮目梢暬删幊滔到y(tǒng)。它不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設(shè)計集成交互操作、可開發(fā)多種程序等優(yōu)點,而且通過簡單的設(shè)置就可使其生成的程序框架支持數(shù)據(jù)庫接口、OLE2,WinSock網(wǎng)絡(luò)、3D控制界面。</p><p>  它以擁有“語法高亮”,IntelliSense(自動完成功能)以及高級除錯功能而著稱。比如,它允許用戶進行遠程調(diào)試,單步執(zhí)行等。還有允許用

10、戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動正在調(diào)試的程序。其編譯及建置系統(tǒng)以預編譯頭文件、最小重建功能及累加連結(jié)著稱。這些特征明顯縮短程式編輯、編譯及連結(jié)花費的時間,在大型軟件計劃上尤其顯著。</p><p>  4、開發(fā),調(diào)試及運行硬件和軟件環(huán)境    </p><p>  處理器: Intel Pentium® Dual-Core CPU T4200 @2.00G

11、Hz </p><p>  BIOS: Lenovo</p><p>  內(nèi)存 : 2GB (金士頓 1066mhz)</p><p>  顯卡: Intel Mobile 4 Series Express Chipest Family (256MB) </p><p>  操作系統(tǒng): 32-bit Windows

12、XP</p><p>  編程語言: Visual C++</p><p>  編譯環(huán)境: Microsoft Visual C++ 6.0</p><p>  5、軟件整體設(shè)計思路 </p><p>  經(jīng)調(diào)查,非科學計算器常用功能主要有以下三個部分:</p><p><b> ?、?、運算功能&

13、lt;/b></p><p>  常用的運算功能有加法計算、減法計算、乘法計算、除法計算、根式計算、比率計算;</p><p><b> ?、?、存儲功能</b></p><p>  常用的存儲功能有:清除存儲器中的數(shù)值(MC)、將存于存儲器中的數(shù)顯示在計算器的顯示框上(MR)、將顯示框的數(shù)值存于存儲器中(MS)、將顯示框的數(shù)與存儲器中的數(shù)

14、相加并進行存儲(M+)。如果存儲器中有數(shù)值將會顯示M標志;</p><p><b> ?、?、清除功能</b></p><p>  常用的清除功能有清除輸入(CE)、清除鍵(C)、退格鍵(BACK)。</p><p>  由于visual c++ 6.0自帶了許多強大的數(shù)學計算庫文件,這為軟件的開發(fā)省去了不少的工作量,而visual c++6.0

15、優(yōu)秀的對話框繪制模塊也使得這個小軟件美觀不少,為了方便計算器的使用,開發(fā)者特意加入了許多非法計算的錯誤提示,例如“Can not divide by zero”等。</p><p><b>  6、軟件運行效果</b></p><p> ?、?、運用計算器計算:78*80</p><p>  圖一、運用計算器計算:78 *80

16、 圖二、在計算器上輸入:78*</p><p>  圖三、在計算器上輸入:80 圖四、輸出結(jié)果:6240</p><p>  ②、在計算器中輸入2/0</p><p>  圖五、非法操作,屏幕會顯示錯誤提示</p><p><b>  7、源代碼</b></p>&

17、lt;p>  aboutdialog.cpp</p><p>  #include <afxwin.h></p><p>  #include "aboutdialog.h"</p><p>  #include <mmsystem.h></p><p>  #include "re

18、source.h"</p><p>  aboutdialog::aboutdialog( ) : CDialog ( IDD_DIALOG1 )</p><p><b>  {</b></p><p><b>  }</b></p><p>  int aboutdialog::OnIn

19、itDialog( )</p><p><b>  {</b></p><p>  ::PlaySound ( "music.wav", NULL, SND_FILENAME | SND_ASYNC | SND_LOOP ) ;</p><p>  return 1 ;</p><p><b&g

20、t;  }</b></p><p>  void aboutdialog::OnOK( ) </p><p><b>  {</b></p><p>  ::PlaySound ( NULL, NULL, NULL ) ;</p><p>  CDialog::OnOK( ) ;</p><

21、;p><b>  }</b></p><p>  void aboutdialog::OnCancel( ) </p><p><b>  {</b></p><p>  ::PlaySound ( NULL, NULL, NULL ) ;</p><p>  CDialog::OnCance

22、l( ) ;</p><p><b>  }</b></p><p><b>  l </b></p><p>  aboutdialog.h </p><p>  class aboutdialog : public CDialog</p><p><b>

23、  {</b></p><p><b>  public :</b></p><p>  aboutdialog( ) ;</p><p>  int OnInitDialog( ) ;</p><p>  void OnOK( ) ;</p><p>  void OnCancel(

24、 ) ;</p><p><b>  };</b></p><p><b>  myapp.cpp</b></p><p>  #include <afxwin.h></p><p>  #include "myapp.h"</p><p> 

25、 #include "myedit.h"</p><p>  #include "myframe.h"</p><p><b>  myapp a ;</b></p><p>  int myapp::InitInstance( )</p><p><b>  {<

26、/b></p><p>  myframe *p ;</p><p>  p = new myframe ;</p><p>  p -> ShowWindow ( 1 ) ;</p><p>  m_pMainWnd = p ;</p><p>  return 1 ;</p><p&

27、gt;<b>  }</b></p><p><b>  myapp.h</b></p><p>  class myapp : public CWinApp</p><p><b>  {</b></p><p><b>  public :</b>&l

28、t;/p><p>  int InitInstance( ) ;</p><p><b>  } ;</b></p><p>  myedit.cpp</p><p>  #include <afxwin.h></p><p>  #include "myedit.h"

29、</p><p>  BEGIN_MESSAGE_MAP ( myedit, CEdit )</p><p>  ON_WM_CREATE( )</p><p>  ON_WM_LBUTTONDOWN( )</p><p>  ON_WM_MOUSEMOVE( )</p><p>  END_MESSAGE_MAP(

30、)</p><p>  int myedit::OnCreate ( LPCREATESTRUCT l ) </p><p><b>  {</b></p><p>  CEdit::OnCreate ( l ) ;</p><p>  m_cur = AfxGetApp( ) -> LoadStandardCur

31、sor ( IDC_ARROW ) ;</p><p>  return 0 ;</p><p><b>  }</b></p><p>  void myedit::OnLButtonDown ( UINT flags, CPoint pt )</p><p><b>  {</b></p&

32、gt;<p><b>  }</b></p><p>  void myedit::OnMouseMove ( UINT flags, CPoint pt )</p><p><b>  {</b></p><p>  SetCursor ( m_cur ) ;</p><p><

33、;b>  }</b></p><p><b>  myedit.h</b></p><p>  class myedit : public CEdit </p><p><b>  {</b></p><p><b>  private :</b></p

34、><p>  HCURSOR m_cur ;</p><p><b>  public :</b></p><p>  int OnCreate ( LPCREATESTRUCT l ) ;</p><p>  void OnLButtonDown ( UINT flags, CPoint pt ) ;</p>

35、<p>  void OnMouseMove ( UINT flags, CPoint pt ) ;</p><p>  DECLARE_MESSAGE_MAP( )</p><p><b>  } ;</b></p><p>  myframe.cpp</p><p>  #include <afxw

36、in.h></p><p>  #include "myedit.h"</p><p>  #include "myframe.h"</p><p>  #include "aboutdialog.h"</p><p>  #include <math.h><

37、/p><p>  #include "resource.h"</p><p>  BEGIN_MESSAGE_MAP ( myframe, CFrameWnd )</p><p>  ON_WM_CREATE( )</p><p>  ON_COMMAND ( 1001, myabout )</p><p&

38、gt;  ON_COMMAND_RANGE ( 1, 10, numbers0to9 ) </p><p>  ON_COMMAND ( 101, back )</p><p>  ON_COMMAND ( 102, ce ) </p><p>  ON_COMMAND ( 103, c ) </p><p>  ON_COMMAND ( 1

39、06, memorycancel ) </p><p>  ON_COMMAND ( 107, divide )</p><p>  ON_COMMAND ( 108, squareroot ) </p><p>  ON_COMMAND ( 109, memoryrecall ) </p><p>  ON_COMMAND ( 110, m

40、ultiply ) </p><p>  ON_COMMAND ( 111, percentage ) </p><p>  ON_COMMAND ( 112, memorystore ) </p><p>  ON_COMMAND ( 113, minus )</p><p>  ON_COMMAND ( 114, onebyx ) <

41、;/p><p>  ON_COMMAND ( 115, memoryplus ) </p><p>  ON_COMMAND ( 117, plusminus ) </p><p>  ON_COMMAND ( 118, point ) </p><p>  ON_COMMAND ( 119, plus ) </p><p&g

42、t;  ON_COMMAND ( 120, equalto ) </p><p>  ON_WM_PARENTNOTIFY( )</p><p>  ON_WM_KEYDOWN( )</p><p>  END_MESSAGE_MAP()</p><p>  CString myframe::m_helpstrings[] = { "

43、;No help topic is associated with this item.",</p><p>  "Delete the last digit of the displayed number.",</p><p>  "Clears the displayed number.",</p><p>  

44、"Clears the current calculation.",</p><p><b>  "",</b></p><p><b>  "",</b></p><p>  "Clears any number stored in memory.&q

45、uot;,</p><p>  "Puts this number in the calculator display.",</p><p>  "Puts this number in the calculator display.",</p><p>  "Puts this number in the calc

46、ulator display.",</p><p>  "Divdes.",</p><p>  "Calculates the square root of the displayed number.",</p><p>  "Recalls the number stored in memory. Th

47、e number remains in the memory.",</p><p>  "Puts this number in the calculator display.",</p><p>  "Puts this number in the calculator display.",</p><p>  &

48、quot;Puts this number in the calculator display.",</p><p>  "Multiplies.",</p><p>  "Displays the result of the multiplication as percentage.",</p><p>  &qu

49、ot;Stores the displayed number in the memory.",</p><p>  "Puts this number in the calculator display.",</p><p>  "Puts this number in the calculator display.",</p>

50、<p>  "Puts this number in the calculator display.",</p><p>  "Subracts.",</p><p>  "Calculates the reciprocal of the displayed number.",</p><p>

51、;  "Adds the displayed number to any number already in memory.",</p><p>  "Puts this number in the calculator display.",</p><p>  "Changes the sign of the displayed numb

52、er.",</p><p>  "Inserts a decimal point.",</p><p><b>  "Adds.",</b></p><p>  "Performs any operation on the previous two numbers. To repeat

53、 he last operation click again."</p><p><b>  } ;</b></p><p>  myframe::myframe( )</p><p><b>  {</b></p><p>  CString mywindowclass ;</p

54、><p>  CBrush mybrush ;</p><p>  mybrush.CreateStockObject ( LTGRAY_BRUSH ) ;</p><p>  mywindowclass = AfxRegisterWndClass ( CS_HREDRAW | CS_VREDRAW,</p><p>  AfxGetApp( )

55、 -> LoadStandardCursor ( IDC_ARROW ),</p><p><b>  mybrush, </b></p><p>  AfxGetApp( ) -> LoadIcon ( IDI_ICON1 ) ) ;</p><p>  Create ( mywindowclass, "Calculat

56、or", WS_SYSMENU | WS_MINIMIZEBOX, CRect ( 100, 100, 400, 400 ), 0, MAKEINTRESOURCE ( IDR_MENU1 ) ) ;</p><p><b>  }</b></p><p>  BOOL myframe::PreCreateWindow ( CREATESTRUCT&

57、 cs ) </p><p><b>  {</b></p><p>  CFrameWnd::PreCreateWindow ( cs ) ;</p><p>  cs.dwExStyle &= ~WS_EX_CLIENTEDGE ;</p><p>  return TRUE ;</p><

58、;p><b>  }</b></p><p>  int myframe::OnCreate ( LPCREATESTRUCT l )</p><p><b>  {</b></p><p>  CFrameWnd::OnCreate ( l ) ;</p><p>  struct butt

59、oninfo</p><p><b>  {</b></p><p>  char m_str[5] ;</p><p><b>  int id ;</b></p><p><b>  } ;</b></p><p>  buttoninfo m[3

60、0] = </p><p><b>  {</b></p><p><b>  "", 100,</b></p><p>  "Back", 101,</p><p>  "CE", 102,</p><p><

61、;b>  "C", 103,</b></p><p><b>  "", 104,</b></p><p><b>  "", 105,</b></p><p>  "MC", 106,</p><p>

62、;<b>  "7", 8,</b></p><p><b>  "8", 9,</b></p><p><b>  "9", 10,</b></p><p><b>  "/", 107,</b>&

63、lt;/p><p>  "Sqrt", 108,</p><p>  "MR", 109,</p><p><b>  "4", 5,</b></p><p><b>  "5", 6,</b></p><

64、;p><b>  "6", 7,</b></p><p><b>  "*", 110,</b></p><p><b>  "%", 111,</b></p><p>  "MS", 112,</p>

65、<p><b>  "1", 2,</b></p><p><b>  "2", 3,</b></p><p><b>  "3", 4,</b></p><p><b>  "-", 113,<

66、;/b></p><p>  "1/x", 114,</p><p>  "M+", 115,</p><p><b>  "0", 1,</b></p><p>  "+/-", 117,</p><p>&l

67、t;b>  ".", 118,</b></p><p><b>  "+", 119,</b></p><p>  "=", 120 </p><p><b>  } ;</b></p><p>  m_editre

68、ct = CRect ( 10, 10, 275, 35 ) ;</p><p>  m_e.CreateEx ( WS_EX_CLIENTEDGE, "EDIT", "0.", WS_VISIBLE | WS_CHILD | ES_RIGHT | ES_MULTILINE, m_editrect, this, 30 ) ;</p><p>  in

69、t x1 = 10, y1 = 50, x2, y2 ;</p><p>  for ( int i = 0 ; i <= 29 ; i++ )</p><p><b>  {</b></p><p>  x2 = x1 + 40 ;</p><p>  y2 = y1 + 30 ;</p><

70、;p>  m_buttonrect[i] = CRect ( x1, y1, x2, y2 ) ;</p><p>  if ( i != 0 && i != 4 && i != 5 )</p><p>  m_b[i].Create ( m[i].m_str, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, m_butt

71、onrect[i], this, m[i].id ) ;</p><p>  if ( i == 0 )</p><p>  m_st.CreateEx ( WS_EX_CLIENTEDGE, "STATIC", "", WS_VISIBLE | WS_CHILD | SS_NOTIFY, m_buttonrect[i], this, m[i].id

72、 ) ;</p><p>  x1 += 45 ;</p><p>  if ( ( i + 1 ) % 6 == 0 ) </p><p><b>  {</b></p><p><b>  x1 = 10 ;</b></p><p>  y1 = y1 + 40 ;<

73、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  m_oper = ' ' ;</p><p>  m_over = true;</p><p>  m_decipoint = false ;</p>

74、<p>  m_mem = 0 ;</p><p>  return 0 ;</p><p><b>  }</b></p><p>  void myframe::myabout( )</p><p><b>  {</b></p><p>  aboutdia

75、log d ;</p><p>  d.DoModal( ) ;</p><p><b>  }</b></p><p>  void myframe::back()</p><p><b>  {</b></p><p>  CString lf, rt ;</p&g

76、t;<p>  m_e.GetWindowText ( m_str ) ;</p><p>  lf = m_str.Left ( m_str.GetLength( ) - 1 ) ;</p><p>  rt = m_str.Right ( 1 ) ;</p><p>  if ( rt == "." )</p>&

77、lt;p><b>  {</b></p><p>  m_decipoint = false ;</p><p>  if ( m_str == "0." )</p><p>  m_over = true ;</p><p><b>  else</b></p>

78、;<p>  m_str = lf ;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if ( lf.Right ( 1 ) == "." )&

79、lt;/p><p><b>  {</b></p><p>  m_decipoint = false ;</p><p>  if ( lf == "0." )</p><p><b>  {</b></p><p>  m_str = "0.&q

80、uot; ;</p><p>  m_over = true ;</p><p><b>  }</b></p><p><b>  else</b></p><p>  m_str = lf.Left ( lf.GetLength( ) - 1 ) ;</p><p>&l

81、t;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if ( lf == "" )</p><p><b>  {</b></p><p>

82、;  m_str = "0." ;</p><p>  m_over = true ;</p><p><b>  }</b></p><p><b>  else</b></p><p>  m_str = lf ;</p><p><b> 

83、 }</b></p><p><b>  }</b></p><p>  m_e.SetWindowText ( m_str ) ;</p><p><b>  }</b></p><p>  void myframe::c( )</p><p><b>

84、;  {</b></p><p>  m_num1 = m_num2 = 0 ;</p><p>  m_over = true ;</p><p>  m_decipoint = false ;</p><p>  m_str = "0." ;</p><p>  m_e. SetWi

85、ndowText(m_str) ;</p><p><b>  }</b></p><p>  void myframe::ce( )</p><p><b>  {</b></p><p>  if ( m_oper == ' ' )</p><p>  m

86、_num1 = 0 ;</p><p><b>  else</b></p><p>  m_num2 = 0 ;</p><p>  m_str= "0." ;</p><p>  m_e. SetWindowText ( m_str ) ;</p><p>  m_over

87、 = true ;</p><p>  m_decipoint = false ;</p><p><b>  }</b></p><p>  void myframe::numbers0to9 ( int id )</p><p><b>  {</b></p><p> 

88、 CString temp ;</p><p>  temp.Format ( "%d", id - 1 ) ;</p><p>  if ( m_over == false )</p><p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;&l

89、t;/p><p>  if ( m_str == "0." )</p><p><b>  return ;</b></p><p>  if ( m_str.GetLength( ) == 13 )</p><p><b>  {</b></p><p> 

90、 ::MessageBeep ( 1 ) ;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  m_str = m_str + temp ;</p><p>

91、  m_e.SetWindowText ( m_str ) ;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>&l

92、t;p>  m_e.SetWindowText ( temp ) ;</p><p>  m_over = false ;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void myframe::plusminus( )</p>

93、;<p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num = atof ( m_str ) ;</p><p>  if ( m_num != 0 )</p><p>  m_num = m_num * -1 ;<

94、/p><p>  m_str.Format ( "%.8g", m_num ) ;</p><p>  m_e. SetWindowText ( m_str ) ;</p><p>  m_over = true ;</p><p><b>  }</b></p><p>  vo

95、id myframe::onebyx( )</p><p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num = atof ( m_str ) ;</p><p>  if ( m_num != 0 )</p><p

96、>  m_num = 1 / m_num ;</p><p>  m_str.Format ( "%.8g", m_num ) ;</p><p>  m_e.SetWindowText ( m_str ) ;</p><p>  m_over = true ;</p><p>  m_decipoint = fal

97、se ;</p><p><b>  }</b></p><p>  void myframe::squareroot( )</p><p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num

98、 = atof ( m_str ) ;</p><p>  if ( m_num != 0 )</p><p>  m_num = sqrt ( m_num ) ;</p><p>  m_str.Format( "%.8g", m_num ) ;</p><p>  m_e.SetWindowText(m_str) ;&

99、lt;/p><p>  m_over = true ;</p><p>  m_decipoint = false ;</p><p><b>  }</b></p><p>  void myframe::percentage()</p><p><b>  {</b><

100、/p><p>  double num3 ;</p><p>  if ( m_oper != ' ' )</p><p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num2 = atof ( m_s

101、tr ) ;</p><p>  num3 = m_num2 * m_num1 ;</p><p>  num3 = num3 / 100 ;</p><p>  m_str.Format( "%.8g", num3 ) ;</p><p>  m_e.SetWindowText ( m_str ) ;</p>

102、<p>  m_over = true ;</p><p>  m_decipoint = false ;</p><p>  m_oper = ' ' ;</p><p><b>  }</b></p><p><b>  }</b></p><p

103、>  void myframe::point( )</p><p><b>  {</b></p><p>  if ( m_decipoint == false )</p><p><b>  {</b></p><p>  if ( m_over == true ) </p>

104、<p><b>  {</b></p><p>  m_e.SetWindowText ( "0." ) ;</p><p>  m_over = false ;</p><p><b>  }</b></p><p><b>  else</b>

105、;</p><p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  if ( m_str == "0." )</p><p><b>  return ;</b></p><p>

106、<b>  else</b></p><p><b>  {</b></p><p>  m_str = m_str + "." ;</p><p>  m_e. SetWindowText ( m_str ) ;</p><p><b>  }</b>&l

107、t;/p><p><b>  }</b></p><p>  m_decipoint = true ;</p><p><b>  }</b></p><p><b>  else</b></p><p>  ::MessageBeep ( 1 ) ;<

108、;/p><p><b>  }</b></p><p>  void myframe::plus( )</p><p><b>  {</b></p><p>  if ( m_oper != ' ' )</p><p>  equalto( ) ;</p&

109、gt;<p>  m_oper = '+' ;</p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num1 = atof ( m_str ) ;</p><p>  m_over = true ;</p><p>  m_decipoint = false ;

110、</p><p><b>  }</b></p><p>  void myframe::minus( )</p><p><b>  {</b></p><p>  if ( m_oper != ' ' )</p><p>  equalto( ) ;<

111、;/p><p>  m_oper = '-' ;</p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num1 = atof ( m_str ) ;</p><p>  m_over = true ;</p><p>  m_decipoint = fal

112、se ;</p><p><b>  }</b></p><p>  void myframe::multiply( )</p><p><b>  {</b></p><p>  if ( m_oper != ' ' )</p><p>  equalto(

113、 ) ;</p><p>  m_oper = '*' ;</p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num1 = atof ( m_str ) ;</p><p>  m_over = true ;</p><p>  m_decipoin

114、t = false ;</p><p><b>  }</b></p><p>  void myframe::divide( )</p><p><b>  {</b></p><p>  if ( m_oper != ' ' )</p><p>  equ

115、alto( ) ;</p><p>  m_oper = '/' ;</p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num1 = atof ( m_str ) ;</p><p>  m_over = true ;</p><p>  m_dec

116、ipoint = false ;</p><p><b>  }</b></p><p>  void myframe::equalto( )</p><p><b>  {</b></p><p>  if ( m_oper == ' ' )</p><p>

117、;<b>  return ;</b></p><p>  double num3 ;</p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num2 = atof ( m_str ) ;</p><p>  switch ( m_oper )</p>&l

118、t;p><b>  {</b></p><p>  case '+' :</p><p>  num3 = m_num1 + m_num2 ;</p><p><b>  break ;</b></p><p>  case '-' :</p>&

119、lt;p>  num3 = m_num1 - m_num2 ;</p><p><b>  break ;</b></p><p>  case '*' :</p><p>  num3 = m_num1 * m_num2 ;</p><p><b>  break ;</b>

120、</p><p>  case '/' :</p><p>  if ( m_num2 == 0 )</p><p><b>  {</b></p><p>  m_over = true ;</p><p>  m_decipoint = false ;</p>&

121、lt;p>  m_e.SetWindowText ( "Cannot divide by zero." ) ;</p><p><b>  return ;</b></p><p><b>  }</b></p><p><b>  else</b></p>&

122、lt;p>  num3 = m_num1 / m_num2 ;</p><p><b>  }</b></p><p>  m_str.Format ( "%.8g", num3 ) ;</p><p>  if ( m_str == "0" )</p><p>  m_st

123、r = "0." ;</p><p>  m_over = true ;</p><p>  m_decipoint = false ;</p><p>  m_oper = ' ' ;</p><p>  m_e.SetWindowText ( m_str ) ;</p><p>

124、<b>  }</b></p><p>  void myframe::memorystore( )</p><p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_mem = atof ( m_str ) ;</

125、p><p>  m_st.SetWindowText ( "M" ) ;</p><p>  m_over = true ;</p><p>  m_decipoint = false ;</p><p>  m_oper = ' ' ;</p><p><b>  }<

126、/b></p><p>  void myframe::memoryrecall( )</p><p><b>  {</b></p><p>  m_str.Format( "%.8g", m_mem ) ;</p><p>  m_e.SetWindowText ( m_str ) ;<

127、;/p><p>  m_over = true ;</p><p>  m_decipoint = false ;</p><p>  m_oper = ' ' ;</p><p><b>  }</b></p><p>  void myframe::memorycancel( )&

128、lt;/p><p><b>  {</b></p><p>  m_mem = 0 ;</p><p>  m_st.SetWindowText ( "" ) ;</p><p><b>  }</b></p><p>  void myframe::memo

129、ryplus( )</p><p><b>  {</b></p><p>  m_e.GetWindowText ( m_str ) ;</p><p>  m_num = atof ( m_str ) ; </p><p>  m_mem = m_mem + m_num ; </p><p>

130、  m_st.SetWindowText ( "M" ) ;</p><p>  m_over = true ;</p><p>  m_decipoint = false ;</p><p>  m_oper = ' ' ;</p><p><b>  }</b></p>

131、<p>  void myframe::OnParentNotify ( long int m, unsigned long int p )</p><p><b>  {</b></p><p>  int mousebutton = LOWORD ( m ) ;</p><p>  if ( mousebutton == WM

132、_RBUTTONDOWN )</p><p><b>  {</b></p><p>  int x = LOWORD ( p ) ;</p><p>  int y = HIWORD ( p ) ;</p><p>  CPoint pt ( x, y ) ;</p><p>  if ( m_

133、editrect.PtInRect ( pt ) )</p><p>  MessageBox ( "Shows the result.", "Help...", MB_OK | MB_ICONQUESTION ) ;</p><p>  for ( int i = 0 ; i <= 29 ; i++ )</p><p

134、><b>  {</b></p><p>  if ( m_buttonrect[i].PtInRect ( pt ) )</p><p>  MessageBox ( m_helpstrings[i], "Help...", MB_OK | MB_ICONQUESTION ) ;</p><p><b&g

135、t;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void myframe::OnKeyDown ( UINT ch, UINT rep, UINT flag )</p><p><b>  {</b&

136、gt;</p><p>  switch ( ch )</p><p><b>  {</b></p><p>  case VK_BACK :</p><p><b>  back( );</b></p><p><b>  break ;</b>&l

137、t;/p><p>  case VK_NUMPAD7 :</p><p>  case '7' :</p><p>  m_b[7].SetState ( 1 ) ;</p><p>  numbers0to9 ( 8 ) ;</p><p>  Sleep ( 20 ) ;</p><

138、p>  m_b[7].SetState ( 0 ) ;</p><p><b>  break ;</b></p><p>  case VK_NUMPAD8 :</p><p>  case '8' :</p><p>  m_b[8].SetState ( 1 ) ;</p>&l

139、t;p>  numbers0to9 ( 9 ) ;</p><p>  Sleep ( 20 ) ;</p><p>  m_b[8].SetState ( 0 ) ;</p><p><b>  break ;</b></p><p>  case VK_NUMPAD9 :</p><p>

140、;  case '9' :</p><p>  m_b[9].SetState ( 1 ) ;</p><p>  numbers0to9 ( 10 ) ;</p><p>  Sleep ( 20 ) ;</p><p>  m_b[9].SetState ( 0 ) ;</p><p><b&

141、gt;  break ;</b></p><p>  case VK_DIVIDE :</p><p>  m_b[10].SetState ( 1 ) ;</p><p>  divide( );</p><p>  Sleep ( 20 ) ;</p><p>  m_b[10].SetState (

142、0 ) ;</p><p><b>  break ;</b></p><p>  case VK_NUMPAD4 :</p><p>  case '4' :</p><p>  m_b[13].SetState ( 1 ) ;</p><p>  numbers0to9 ( 5

143、 ) ;</p><p>  Sleep ( 20 ) ;</p><p>  m_b[13].SetState ( 0 ) ;</p><p><b>  break ;</b></p><p>  case VK_NUMPAD5 :</p><p>  case '5' :&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論