《計算器源代碼》word版_第1頁
《計算器源代碼》word版_第2頁
《計算器源代碼》word版_第3頁
《計算器源代碼》word版_第4頁
《計算器源代碼》word版_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、頭文件class CCacl2Dlg : public CDialog/ Constructionpublic: int m_fun; /m_fun是運算符如:+,-,*,/ void AddFun(int j); /該函數(shù)的功能是輸入數(shù)字 void AddNum(int i); /該函數(shù)的功能是輸入運算符 int m_ForS; /指示此時輸入的是 /第一個數(shù)還是第二個數(shù) bool m_firx,m_secx; /指示此時是否在輸入小數(shù)部分 /即是否按過了小數(shù)點 double m_first,m_second; /第一第二個數(shù) double m_firstz,m_secondz; /第一第二

2、個數(shù)的整數(shù)部分 double m_firstx,m_secondx; /第一第二個數(shù)的小數(shù)部分 int m_firxw,m_secxw; /第一第二個數(shù)的小數(shù)部分的位數(shù) int m_firzorf,m_seczorf; /指示是否是負數(shù) /既是否按過+/-鍵 bool m_EnterSec; /是否輸入了第二個數(shù); double m_result; /結(jié)果 double m_mfir,m_msec; / 記住上次參加運算的第一二個數(shù) bool m_sfmf,m_sfms,m_sfmfun; /指示是否此時還記的上次的數(shù)和運算符 int m_mfun; /記住上次的運算符 CCacl2Dlg(C

3、Wnd* pParent = NULL); / standard constructor/ Dialog Data /AFX_DATA(CCacl2Dlg) enum IDD = IDD_CACL2_DIALOG ; CEdit m_xedit; double m_x; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CCacl2Dlg) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /

4、AFX_VIRTUAL/ Implementationprotected: HICON m_hIcon; / Generated message map functions /AFX_MSG(CCacl2Dlg) afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void On0(); afx_msg void On1(); afx_msg void On2(); afx_msg void On3(); af

5、x_msg void On4(); afx_msg void On5(); afx_msg void On6(); afx_msg void On7(); afx_msg void On8(); afx_msg void On9(); afx_msg void OnAdd(); afx_msg void OnBack(); afx_msg void OnDiv(); afx_msg void OnGo(); afx_msg void OnOn(); afx_msg void OnSub(); afx_msg void OnTim(); afx_msg void OnXsd(); afx_msg

6、 void OnZfh(); afx_msg void OnAbtath(); /AFX_MSG DECLARE_MESSAGE_MAP();CPP文件CCacl2Dlg:CCacl2Dlg(CWnd* pParent /*=NULL*/) : CDialog(CCacl2Dlg:IDD, pParent) /AFX_DATA_INIT(CCacl2Dlg) m_x = 0.0; /AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()

7、-LoadIcon(IDR_MAINFRAME); m_first=0.0;m_second=0.0; /該行以下為初始化 m_firstz=0;m_firstx=0.0; m_secondz=0;m_secondx=0.0; m_firx=FALSE;m_secx=FALSE; m_firxw=0;m_secxw=0; m_firzorf=1;m_seczorf=1; m_EnterSec=FALSE; m_result=0.0; m_ForS=1; m_mfir=0.0;m_msec=0.0;m_mfun=0; m_sfmf=FALSE;m_sfms=FALSE;m_sfmfun=FALS

8、E; void CCacl2Dlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CCacl2Dlg) DDX_Control(pDX, IDC_RESULT, m_xedit); DDX_Text(pDX, IDC_RESULT, m_x); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCacl2Dlg, CDialog) /AFX_MSG_MAP(CCacl2Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRA

9、GICON() ON_BN_CLICKED(IDC_0, On0) ON_BN_CLICKED(IDC_1, On1) ON_BN_CLICKED(IDC_2, On2) ON_BN_CLICKED(IDC_3, On3) ON_BN_CLICKED(IDC_4, On4) ON_BN_CLICKED(IDC_5, On5) ON_BN_CLICKED(IDC_6, On6) ON_BN_CLICKED(IDC_7, On7) ON_BN_CLICKED(IDC_8, On8) ON_BN_CLICKED(IDC_9, On9) ON_BN_CLICKED(IDC_ADD, OnAdd) ON

10、_BN_CLICKED(IDC_BACK, OnBack) ON_BN_CLICKED(IDC_DIV, OnDiv) ON_BN_CLICKED(IDC_GO, OnGo) ON_BN_CLICKED(IDC_ON, OnOn) ON_BN_CLICKED(IDC_SUB, OnSub) ON_BN_CLICKED(IDC_TIM, OnTim) ON_BN_CLICKED(IDC_XSD, OnXsd) ON_BN_CLICKED(IDC_ZFH, OnZfh) ON_BN_CLICKED(IDC_ABTATH, OnAbtath) /AFX_MSG_MAPEND_MESSAGE_MAP(

11、)/ CCacl2Dlg message handlersvoid CCacl2Dlg:OnSysCommand(UINT nID, LPARAM lParam) if (nID & 0 xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbout.DoModal(); else CDialog:OnSysCommand(nID, lParam); / If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC

12、applications using the document/view model,/ this is automatically done for you by the framework.void CCacl2Dlg:OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); / Center icon in client rectangle int cxIcon = GetSys

13、temMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; / Draw the icon dc.DrawIcon(x, y, m_hIcon); else CDialog:OnPaint(); / The system calls this to obtain the cursor to di

14、splay while the user drags/ the minimized window.HCURSOR CCacl2Dlg:OnQueryDragIcon() return (HCURSOR) m_hIcon;void CCacl2Dlg:On0() /輸入0 / TODO: Add your control notification handler code here AddNum(0);void CCacl2Dlg:On1() /輸入1 / TODO: Add your control notification handler code here AddNum(1); void

15、CCacl2Dlg:On2() /輸入2 / TODO: Add your control notification handler code here AddNum(2); void CCacl2Dlg:On3() /輸入3 / TODO: Add your control notification handler code here AddNum(3); void CCacl2Dlg:On4() /輸入4 / TODO: Add your control notification handler code here AddNum(4);void CCacl2Dlg:On5() /輸入5 /

16、 TODO: Add your control notification handler code here AddNum(5);void CCacl2Dlg:On6() /輸入6 / TODO: Add your control notification handler code here AddNum(6);void CCacl2Dlg:On7() /輸入7 / TODO: Add your control notification handler code here AddNum(7); void CCacl2Dlg:On8() /輸入8 / TODO: Add your control

17、 notification handler code here AddNum(8);void CCacl2Dlg:On9() /輸入9 / TODO: Add your control notification handler code here AddNum(9);void CCacl2Dlg:OnAdd() /輸入+ / TODO: Add your control notification handler code here AddFun(1); void CCacl2Dlg:OnBack() /按back鍵 / TODO: Add your control notification h

18、andler code here if(m_ForS=1) /如果此時在輸入第一個數(shù) if(m_firx=FALSE) /如果此時在輸入整數(shù)部分 if(m_firstz10) /如果整數(shù)部分小于10 m_firstz=0; /改為0 m_firzorf=1; /置符號為正 else int y1=(int)m_firstz;/y1為一與整數(shù)部分相等的數(shù) y1/=10; /去掉個位數(shù) m_firstz=y1; else /如果在輸入小數(shù)部分 if(m_firxw=1) /此時小數(shù)部分只有一位 m_firstx=0.0;m_firxw=0;m_firx=FALSE;/小數(shù)部分清為0 else in

19、t y2=(int)(m_firstx*pow(10,m_firxw); /取一整數(shù)與小數(shù)點所有的數(shù)表示的整數(shù)相等,如123等于0.123的小數(shù)部分表示的數(shù) y2/=10;m_firxw-; /去掉最后一位 m_firstx=y2*pow(10,(-1)*m_firxw); m_first=m_firzorf*(m_firstz+m_firstx); /計算出第一個數(shù) m_x=m_first;UpdateData(FALSE); /顯示它 else if(m_ForS=2) /如果在輸入第二個數(shù),處理方法同第一個數(shù) if(m_secx=FALSE) if(m_secondz10) m_seco

20、ndz=0; m_seczorf=1; else int y3=(int)m_secondz; y3/=10; m_secondz=y3; else if(m_secxw=1) m_secondx=0.0;m_secxw=0;m_secx=FALSE; else int y4=(int)(m_secondx*pow(10,m_secxw); y4/=10;m_secxw-; m_secondx=y4*pow(10,(-1)*m_secxw); m_second=m_seczorf*(m_secondz+m_secondx); m_x=m_second;UpdateData(FALSE); vo

21、id CCacl2Dlg:OnDiv() /輸入/ / TODO: Add your control notification handler code here AddFun(4);void CCacl2Dlg:OnGo() /按=號運算 / TODO: Add your control notification handler code here if(m_sfmf=TRUE&m_sfms=TRUE&m_sfmfun=TRUE) /如果記著第一,二個數(shù)和運算符,即上次算完后未輸入數(shù),而再次按= if(m_mfun=1)m_result=m_mfir+m_msec; /m_fun為1,則用上

22、次的數(shù)和符號加,下同 else if(m_mfun=2)m_result=m_mfir-m_msec; /m_fun為2,則減,下同 else if(m_mfun=3)m_result=m_mfir*m_msec; /為3,則乘,下同 else if(m_mfun=4)m_result=m_mfir/m_msec; /為4,則除,下同 m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; /記住參加運算的數(shù)和運算符 m_mfir=m_result;m_msec=m_msec;m_mfun=m_mfun; else if(m_sfmf=TRUE&m_sfms=FALSE&

23、m_sfmfun=FALSE)/只記的第一數(shù),如算完2+3=5后按*4= if(m_fun=1)m_result=m_mfir+m_second; else if(m_fun=2)m_result=m_mfir-m_second; else if(m_fun=3)m_result=m_mfir*m_second; else if(m_fun=4)m_result=m_mfir/m_second; m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; m_mfir=m_result;m_msec=m_second;m_mfun=m_fun; else if(m_sfmf=

24、TRUE&m_sfms=TRUE&m_sfmfun=FALSE) /記住了第一個數(shù),未輸入第二個數(shù),輸入了運算符.如算完2+3=5后按*=結(jié)果為5*5=25; m_second=m_mfir; if(m_fun=1)m_result=m_mfir+m_second; else if(m_fun=2)m_result=m_mfir-m_second; else if(m_fun=3)m_result=m_mfir*m_second; else if(m_fun=4)m_result=m_mfir/m_second; m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; m

25、_mfir=m_result;m_msec=m_second;m_mfun=m_fun; else if(m_sfmf=FALSE&m_sfms=FALSE&m_sfmfun=FALSE)/第一二個數(shù)和運算符都不記的,記全重新輸入,如算完2+3=5后輸入4*6= if(m_EnterSec=FALSE)m_second=m_first; if(m_fun=1)m_result=m_first+m_second; else if(m_fun=2)m_result=m_first-m_second; else if(m_fun=3)m_result=m_first*m_second; else i

26、f(m_fun=4)m_result=m_first/m_second; m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; m_mfir=m_result;m_msec=m_second;m_mfun=m_fun; m_x=m_result; UpdateData(FALSE); /顯示結(jié)果 m_first=0;m_second=0.0; m_firstz=0;m_firstx=0.0; m_secondz=0;m_secondx=0.0; m_firx=FALSE;m_secx=FALSE; m_firxw=0;m_secxw=0; m_firzorf=1;m_s

27、eczorf=1; m_ForS=1; m_EnterSec=FALSE; void CCacl2Dlg:OnOn() /按on鍵 / TODO: Add your control notification handler code here m_x=0.0; /恢復默認值,下同 m_first=0.0;m_second=0.0; m_firstz=0;m_firstx=0.0; m_secondz=0;m_secondx=0.0; m_firx=FALSE;m_secx=FALSE; m_firxw=0;m_secxw=0; m_firzorf=1;m_seczorf=1; m_ForS=1

28、; m_mfir=0.0;m_msec=0.0; m_mfun=0; m_sfmf=FALSE;m_sfms=FALSE;m_sfmfun=FALSE; m_EnterSec=FALSE; UpdateData(FALSE); void CCacl2Dlg:OnSub() /輸入- / TODO: Add your control notification handler code here AddFun(2); void CCacl2Dlg:OnTim() /輸入* / TODO: Add your control notification handler code here AddFun(

29、3);void CCacl2Dlg:OnXsd() /按小數(shù)點. / TODO: Add your control notification handler code here if(m_ForS=1)m_firx=TRUE; /此時在輸入第一個數(shù),第一個數(shù)指示十是否該輸入小數(shù)部分變量置為真 else if(m_ForS=2)m_secx=TRUE; /在輸入第二個數(shù)void CCacl2Dlg:OnZfh() /按+/-鍵 / TODO: Add your control notification handler code here if(m_ForS=1) /此時在輸入第一個數(shù) m_fir

30、zorf=-1; /指示符置為-1 m_first*=-1; m_x=m_first; UpdateData(FALSE); else m_seczorf=-1; m_second*=-1; m_x=m_second; UpdateData(FALSE); void CCacl2Dlg:AddNum(int i) /輸入數(shù)字是時的處理函數(shù) if(m_ForS=1) if(m_firx=FALSE) /整數(shù)數(shù)部分 m_firstz*=10;m_firstz+=i; else /小數(shù)部分 m_firxw+;m_firstx+=pow(10,(-1)*m_firxw)*i; m_first=m_fi

31、rzorf*(m_firstz+m_firstx); m_x=m_first; m_sfmf=FALSE;m_mfir=0; UpdateData(FALSE); else if(m_ForS=2) /第二個數(shù),處理同第一個數(shù) m_EnterSec=TRUE; /將指示是否輸入第二個數(shù)的變量置為真 if(m_secx=FALSE) m_secondz*=10;m_secondz+=i; else m_secxw+;m_secondx+=pow(10,(-1)*m_secxw)*i; m_second=m_seczorf*(m_secondz+m_secondx); m_sfms=FALSE;m_msec=0; m_x=m_second; UpdateData(FALSE); void CCacl2Dlg:AddFun(int j) /輸入運算符時的處理函數(shù) if(m_sfmf=TRUE&m_sfmfun=FALSE&m_EnterSec=TRUE) if(m_fun=1)m_result=m_mfir+m_second; else if(m_fun=2)m_result

溫馨提示

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

評論

0/150

提交評論