2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩13頁(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>  計(jì) 算 機(jī)MFC課 程 設(shè) 計(jì) 報(bào) 告</p><p>  ——模 擬 計(jì) 算 器</p><p><b>  姓名:</b></p><p><b>  學(xué)號(hào): </b></p><p><b>  聯(lián)系電話:</b></p><p&

2、gt;<b>  指導(dǎo)教師:</b></p><p>  2012年10月14日</p><p><b>  模擬計(jì)算器</b></p><p><b>  摘要</b></p><p>  摘要內(nèi)容:以課本簡(jiǎn)單計(jì)算器為基礎(chǔ),首先實(shí)現(xiàn)了加、減、乘、除、求倒數(shù)和平方根的混合運(yùn)算,

3、并能進(jìn)行清屏及倒退操作,然后自行完善了書中未能實(shí)現(xiàn)的乘、除運(yùn)算的連續(xù)操作,最后自行設(shè)計(jì)并完成了lg、ln 、sin、cos、^、.、pi、e 八個(gè)按鈕控件的消息映射及程序代碼的添加和修改。從中學(xué)會(huì)了制作簡(jiǎn)單的基于對(duì)話框的小工具、掌握了常用控件的使用、明白了消息映射及消息處理、提高了VC++編程水平。</p><p>  關(guān)鍵詞:四則運(yùn)算 小數(shù)點(diǎn) 計(jì)算器</p><p>  Analo

4、g calculator</p><p><b>  Abstract</b></p><p>  Content of abstract: Simple calculator in textbooks as the foundation, first realized the addition, subtraction, multiplication, divis

5、ion, and reciprocal and square root of the mixed operation, and can clear screen and reverse operation, and then to improve the book failed to realize the multiplication, division operation of continuous operation, and f

6、inally to be designed and completed the eight button control news mapping and program code to add and modify. Learnt how to make simple dialog-ba</p><p>  Key word: arithmetic Decimal point Calculator<

7、/p><p>  本計(jì)算器是基于VC++的MFC編程,可完成大多數(shù)簡(jiǎn)單操作,其運(yùn)行后界面如下圖:</p><p>  以課本簡(jiǎn)單計(jì)算器為基礎(chǔ),首先實(shí)現(xiàn)了加、減、乘、除、求倒數(shù)和平方根的混合運(yùn)算,并能進(jìn)行清屏及倒退操作,然后自行完善了書中未能實(shí)現(xiàn)的乘、除運(yùn)算的連續(xù)操作,最后自行設(shè)計(jì)并完成了lg、ln 、sin、cos、^、.、pi、e 八個(gè)按鈕控件的消息映射及程序代碼的添加和修改。</p&

8、gt;<p><b>  完整的操作步驟:</b></p><p>  1、創(chuàng)建MFC應(yīng)用程序框架。使用MFC AppWizard【exe】向?qū)梢粋€(gè)基于對(duì)話框的應(yīng)用程序 Calculator。</p><p>  2、編輯對(duì)話框。按圖添加前21個(gè)控件,其中1個(gè)為編輯框,20個(gè)為按鈕,控件ID及Caption設(shè)置如下:</p><p

9、>  IDC_EDIT_PUTOUT IDC_NUMBER1 1 </p><p>  IDC_NUMBER2 2 IDC_NUMBER3 3 </p><p>  IDC_NUMBER4 4 </p>

10、<p>  IDC_NUMBER5 5 </p><p>  IDC_NUMBER6 6 </p><p>  IDC_NUMBER7 7 </p><p>  IDC_NUMBER8 8 </p><

11、;p>  IDC_NUMBER9 9 </p><p>  IDC_NUMBER0 0 </p><p>  IDC_ADD + </p><p>  IDC_SUBTRACT - </p><p>

12、  IDC_MULTIPLY * IDC_DIVIDE / IDC_RESULT = IDC_MINUS +/- </p><p>  IDC_BACK Back IDC_CLEAR Clear </p><p>  IDC_SQRT

13、 Sqrt </p><p>  IDC_RECIPROCAL 1/x </p><p>  IDC_LG lg </p><p>  IDC_LN ln </p><p>  IDC

14、_SIN sin </p><p>  IDC_COS cos </p><p>  IDC_CHENGFANG ^ </p><p>  IDC_POINT .

15、 </p><p>  IDC_PI pi </p><p>  IDC_CHAOYUESHU e </p><p>  添加成員變量。為編輯框在CCalculatorDlg對(duì)話框類中添加double型成員變量m_result,再為CCalculatorDlg類添加:int m_OperationCount (

16、存放加減乘除等運(yùn)算符的順序號(hào))、 int m_NumberCount (存放操作數(shù)的順序號(hào))、 double m_number[15](存放操作數(shù)) 、 double m_Operation[15] (存放操作符)、 bool flag (判斷整數(shù)和小數(shù))、 double p(小數(shù)退位)。</p><p>  添加消息映射及成員函數(shù)</p><p> ?。?)、在CalculatorDlg

17、.h頭文件中聲明消息映射函數(shù)。</p><p>  afx_msg void OnNumberKey(UINT nID); //響應(yīng)數(shù)字按鈕的單擊操作</p><p>  afx_msg void OnOperationKey(UINT nID); //響應(yīng)操作符按鈕的單擊操作</p><p> ?。?)、在CalculatorDlg.cpp實(shí)現(xiàn)文件消息映射

18、表中加入ON_COMMAND_RANGE命令消息</p><p>  ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER0,OnNumberKey)</p><p>  ON_COMMAND_RANGE(IDC_ADD,IDC_CHAOYUESHU,OnOperationKey) //有新增功能時(shí)命令消息中參數(shù)記得修改</p><p> 

19、?。?)、在CalculatorDlg.cpp實(shí)現(xiàn)文件中加入消息處理函數(shù)。</p><p>  void CCaculatorDlg::OnNumberKey (UINT nID)</p><p><b>  {</b></p><p><b>  int n=0;</b></p><p>  sw

20、itch(nID)</p><p><b>  {</b></p><p>  case IDC_NUMBER1:</p><p><b>  n=1;</b></p><p><b>  break;</b></p><p>  case IDC_NU

21、MBER2:</p><p><b>  n=2;</b></p><p><b>  break;</b></p><p>  case IDC_NUMBER3:</p><p><b>  n=3;</b></p><p><b>  br

22、eak;</b></p><p>  case IDC_NUMBER4:</p><p><b>  n=4;</b></p><p><b>  break;</b></p><p>  case IDC_NUMBER5:</p><p><b>  

23、n=5;</b></p><p><b>  break;</b></p><p>  case IDC_NUMBER6:</p><p><b>  n=6;</b></p><p><b>  break;</b></p><p>  c

24、ase IDC_NUMBER7:</p><p><b>  n=7;</b></p><p><b>  break;</b></p><p>  case IDC_NUMBER8:</p><p><b>  n=8;</b></p><p><

25、;b>  break;</b></p><p>  case IDC_NUMBER9:</p><p><b>  n=9;</b></p><p><b>  break;</b></p><p>  case IDC_NUMBER0:</p><p>&

26、lt;b>  n=0;</b></p><p><b>  break;</b></p><p><b>  } </b></p><p>  if(flag==true) //判斷是否為小數(shù)</p><p><b>  {</b></p>&l

27、t;p><b>  p*=0.1;</b></p><p>  m_number[m_NumberCount]=m_number[m_NumberCount]+n*p;</p><p><b>  }</b></p><p><b>  else</b></p><p&g

28、t;<b>  {</b></p><p>  m_number[m_NumberCount]=m_number[m_NumberCount]*10+n;</p><p>  flag=false;</p><p><b>  }</b></p><p>  m_result=m_number

29、[m_NumberCount];</p><p>  UpdateData(false); //功能加強(qiáng),不僅可輸入整數(shù),還可輸入小數(shù),使運(yùn)算范圍大大擴(kuò)增</p><p><b>  } </b></p><p>  void CCaculatorDlg::OnOperationKey (UINT nID)</p><

30、p><b>  {</b></p><p><b>  int i;</b></p><p>  switch(nID)</p><p><b>  {</b></p><p>  case IDC_ADD:</p><p>  m_Operati

31、on[m_OperationCount]=1;</p><p><b>  break;</b></p><p>  case IDC_SUBTRACT:</p><p>  m_Operation[m_OperationCount]=2;</p><p><b>  break;</b></

32、p><p>  case IDC_MULTIPLY:</p><p>  m_Operation[m_OperationCount]=3;</p><p><b>  break;</b></p><p>  case IDC_DIVIDE:</p><p>  m_Operation[m_Opera

33、tionCount]=4;</p><p><b>  break;</b></p><p>  case IDC_RESULT:</p><p><b>  cal();</b></p><p><b>  break;</b></p><p>  c

34、ase IDC_MINUS:</p><p>  m_number[m_NumberCount]=-m_number[m_NumberCount];</p><p><b>  break;</b></p><p>  case IDC_BACK:</p><p>  if(flag==false)</p>

35、<p><b>  {</b></p><p>  m_number[m_NumberCount]=(int)m_number[m_NumberCount]/10;</p><p>  m_result=m_number[m_NumberCount];</p><p><b>  }</b></p>

36、;<p><b>  else</b></p><p><b>  {</b></p><p>  m_number[m_NumberCount]=m_number[m_NumberCount]/p;</p><p>  m_number[m_NumberCount]=(int)m_number[m_Numb

37、erCount]/10;</p><p>  m_number[m_NumberCount]=m_number[m_NumberCount]*10*p;</p><p>  m_result=m_number[m_NumberCount];</p><p>  }//增加小數(shù)之后Back操作有所改變</p><p>  UpdateData(

38、false); </p><p><b>  break;</b></p><p>  case IDC_CLEAR:</p><p>  for(i=1;i<11;i++)</p><p><b>  {</b></p><p>  m_number[i]=0;<

39、;/p><p>  m_Operation[i]=999;</p><p>  m_NumberCount=1;</p><p>  m_OperationCount=1;</p><p>  flag=false;</p><p>  p=1; //增加小數(shù)之后Clear操作有所改變</p><p&g

40、t;  m_result=0; </p><p>  UpdateData(false);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case IDC_SQRT:</p><p>  m_number[m_N

41、umberCount]=sqrt(m_number[m_NumberCount]);</p><p><b>  break;</b></p><p>  case IDC_RECIPROCAL:</p><p>  m_number[m_NumberCount]=(double)1/m_number[m_NumberCount];</p

42、><p><b>  break;</b></p><p>  case IDC_LG:</p><p>  m_number[m_NumberCount]=log10(m_number[m_NumberCount]);</p><p><b>  break;</b></p><

43、p>  case IDC_LN:</p><p>  m_number[m_NumberCount]=log(m_number[m_NumberCount]);</p><p><b>  break;</b></p><p>  case IDC_SIN:</p><p>  m_number[m_NumberC

44、ount]=sin(m_number[m_NumberCount]);</p><p><b>  break;</b></p><p>  case IDC_COS:</p><p>  m_number[m_NumberCount]=cos(m_number[m_NumberCount]);</p><p><

45、b>  break;</b></p><p>  case IDC_CHENGFANG:</p><p>  m_Operation[m_OperationCount]=5;</p><p><b>  break;</b></p><p>  case IDC_POINT:</p>&l

46、t;p>  flag=true;</p><p><b>  break;</b></p><p>  case IDC_PI:</p><p>  m_result=m_number[m_NumberCount]=acos(-1);</p><p>  UpdateData(false);</p>

47、<p><b>  break;</b></p><p>  case IDC_CHAOYUESHU:</p><p>  m_result=m_number[m_NumberCount]=exp(1);</p><p>  UpdateData(false);</p><p><b>  br

48、eak;</b></p><p>  }//新增功能,使運(yùn)算更完善</p><p>  if(m_Operation[m_OperationCount]<6)</p><p><b>  {</b></p><p>  m_NumberCount++;</p><p>  m_O

49、perationCount++;</p><p>  flag=false;</p><p><b>  p=1;</b></p><p>  }//呼應(yīng)小數(shù)點(diǎn)和乘方的功能</p><p><b>  }</b></p><p> ?。?)、在CalculatorDlg對(duì)話框

50、中添加void型成員函數(shù)cal(),并在CalculatorDlg.cpp實(shí)現(xiàn)文件前加上包含語(yǔ)句 #include <math.h>。</p><p>  void CCaculatorDlg::cal()</p><p><b>  {</b></p><p>  m_result=m_number[1];</p>

51、<p>  for(int i=1;i<15;i++)</p><p>  switch(m_Operation[i])</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  m_result=m_result+m_numbe

52、r[i+1];</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  m_result=m_result-m_number[i+1];</p><p><b>  break;</b></p>&

53、lt;p><b>  case 3:</b></p><p>  m_result=m_result*m_number[i+1];</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  m_result=

54、(double)m_result/m_number[i+1];</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  m_result=pow(m_result,m_number[i+1]);</p><p>  break;

55、 //新增的處理乘方運(yùn)算</p><p><b>  } </b></p><p>  UpdateData(false);</p><p><b>  }</b></p><p><b>  5、成員變量初始化</b></p><p>  CCac

56、ulatorDlg::CCaculatorDlg(CWnd* pParent /*=NULL*/)</p><p>  : CDialog(CCaculatorDlg::IDD, pParent)</p><p><b>  {</b></p><p><b>  ……</b></p><p>  

57、m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);</p><p>  m_NumberCount=1;</p><p>  m_OperationCount=1;</p><p>  flag=false;</p><p>  p=1; //為自己新添的成員變量初始化</p>

58、<p>  for(int i=0;i<15;i++) </p><p><b>  {</b></p><p>  m_number[i]=0;</p><p>  m_Operation[i]=999;</p><p><b>  }</b></p><p&

59、gt;<b>  }</b></p><p>  結(jié)論: 看起來(lái)雖然簡(jiǎn)單,不過(guò)自己做起來(lái)還是挺難的。首先一定要細(xì)心,例如在CCalculator.cpp消息映射表中的命令消息ON_COMMAND_RANGE (IDC_ADD,IDC_CHAOYUESHU,OnOperationKey)前2個(gè)參數(shù)的ID號(hào)不可出錯(cuò)。其中最難的新增功能實(shí)現(xiàn)是小數(shù)點(diǎn),為實(shí)現(xiàn)小數(shù)點(diǎn)功能,增加了2個(gè)成員變量flag和p

60、,然后在初始化時(shí)不要忘記新增變量的初始化,以及OnNumberKey(UINT nID)函數(shù)和Back按鈕實(shí)現(xiàn)中有整數(shù)及小數(shù)之分等。圓周率pi和超越數(shù)e的值,采用庫(kù)存函數(shù) acos(double)和exp(double)實(shí)現(xiàn)而非自己定義,與三角函數(shù)和自然對(duì)數(shù)相對(duì)應(yīng),保證運(yùn)算準(zhǔn)確性。</p><p>  做完此次MFC大作業(yè),我從中學(xué)會(huì)了制作簡(jiǎn)單的基于對(duì)話框的小工具、掌握了常用控件的使用、明白了消息映射及消息處理、

61、提高了VC++編程水平。</p><p>  參考文獻(xiàn):Visual C++程序設(shè)計(jì)與應(yīng)用教程 馬石安等 編</p><p>  附錄:輸入小數(shù)1.23 顯示如圖所示:</p><p>  計(jì)算 lg5= 結(jié)果顯示如圖:</p><p>  點(diǎn)擊圓周率 pi 編輯框顯示如圖:</p><p>  點(diǎn)擊超越數(shù)

溫馨提示

  • 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)論