MFC計(jì)算器設(shè)計(jì)_第1頁
MFC計(jì)算器設(shè)計(jì)_第2頁
MFC計(jì)算器設(shè)計(jì)_第3頁
MFC計(jì)算器設(shè)計(jì)_第4頁
MFC計(jì)算器設(shè)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、成績:實(shí) 驗(yàn) 報(bào) 告課程名稱:Visual C+面向?qū)ο笈c可視化程序設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目:計(jì)算器設(shè)計(jì)姓 名:專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí):學(xué) 號(hào):計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí)驗(yàn)教學(xué)中心2016 年 11月 19日哈爾濱理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí)驗(yàn)教學(xué)中心 實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)項(xiàng)目名稱: 計(jì)算器設(shè)計(jì) ( 2課時(shí) )一、 實(shí)驗(yàn)?zāi)康?. 靈活使用MFC應(yīng)用程序設(shè)計(jì)2. 設(shè)計(jì)計(jì)算器二、實(shí)驗(yàn)內(nèi)容設(shè)計(jì)一個(gè)簡單的計(jì)算器,可以實(shí)現(xiàn)加法,減法,除法,乘法,取模,開平方,輸入數(shù)字要求可以輸入小數(shù),可以連加。具有清空,回退功能。三、實(shí)驗(yàn)步驟 1.啟動(dòng)VS打2012開新建項(xiàng)目2出現(xiàn)的New對(duì)話框的Projects標(biāo)簽內(nèi)選擇MFC應(yīng)用

2、程序3. Projects Name指定項(xiàng)目的名字,在Location中指定路徑后按OK按鈕4.選擇創(chuàng)建類型,(例如基于對(duì)話框),確定項(xiàng)目類型后按Finish完成。5.編寫實(shí)驗(yàn)代碼四、實(shí)驗(yàn)結(jié)果五、程序代碼/ project_1Dlg.h : 頭文件/#pragma once#include "afxwin.h"/ Cproject_1Dlg 對(duì)話框class Cproject_1Dlg : public CDialogEx/ 構(gòu)造public:Cproject_1Dlg(CWnd* pParent = NULL);/ 標(biāo)準(zhǔn)構(gòu)造函數(shù)void Equal2();void Cpr

3、oject_1Dlg:AddDigit(char numKey);/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_PROJECT_1_DIALOG ;protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV 支持/ 實(shí)現(xiàn)protected:HICON m_hIcon;longdouble m_op1,m_op2,m_result;int m_operation;int i,s;long double r;long double m_m;long double data50;bool st1,st2;bool pflag;

4、long double p;/ 生成的消息映射函數(shù)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:double m_num;CEdit m_control_e;BOOL m_inv;BOOLm_hp;/CStringm_sd;CString m_sd;afx_msg void OnClicked1x();afx_msg

5、 void OnClickedAdd();afx_msg void OnClickedB1();afx_msg void OnClickedB2();afx_msg void OnClickedB3();afx_msg void OnClickedB4();afx_msg void OnClickedB5();afx_msg void OnClickedB6();afx_msg void OnClickedB7();afx_msg void OnClickedB8();afx_msg void OnClickedB9();afx_msg void OnClickedB10();afx_msg

6、void OnClickedClaer();afx_msg void OnClickedClaer2();afx_msg void OnClickedBp();afx_msg void OnClickedBp2();afx_msg void OnClickedBsp();afx_msg void OnClickedM();afx_msg void OnClickedMc();afx_msg void OnClickedMm();afx_msg void OnClickedMod();afx_msg void OnClickedSqrt();afx_msg void OnClickedMr();

7、afx_msg void OnClickedSubract();afx_msg void OnClickedMul();afx_msg void OnClickedDevide();afx_msg void OnChangeEdit1();afx_msg void OnClickedEqual();/ project_1Dlg.cpp : 實(shí)現(xiàn)文件/#include "stdafx.h"#include "project_1.h"#include "project_1Dlg.h"#include "afxdialogex.h

8、"#include<math.h>#ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于應(yīng)用程序“關(guān)于”菜單項(xiàng)的 CAboutDlg 對(duì)話框class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 實(shí)現(xiàn)protected:DECLARE_MESSAGE_MAP();CAboutDlg:

9、CAboutDlg() : CDialogEx(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()/ Cproject_1Dlg 對(duì)話框Cproject_1Dlg:Cproject_1Dlg(CWnd* pParent /*=NULL*/): CDialogEx(Cproject_1Dlg:IDD, pParent), m_num(0), m_sd(

10、_T("")m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void Cproject_1Dlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, m_num);DDX_Control(pDX, IDC_EDIT1, m_control_e);DDX_Text(pDX, IDC_sd, m_sd);BEGIN_MESSAGE_MAP(Cproject_1Dlg, CDialogEx)ON_WM_S

11、YSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_1x, &Cproject_1Dlg:OnClicked1x)ON_BN_CLICKED(IDC_ADD, &Cproject_1Dlg:OnClickedAdd)ON_BN_CLICKED(IDC_b1, &Cproject_1Dlg:OnClickedB1)ON_BN_CLICKED(IDC_b2, &Cproject_1Dlg:OnClickedB2)ON_BN_CLICKED(IDC_b3, &Cproject_1Dlg:

12、OnClickedB3)ON_BN_CLICKED(IDC_b4, &Cproject_1Dlg:OnClickedB4)ON_BN_CLICKED(IDC_b5, &Cproject_1Dlg:OnClickedB5)ON_BN_CLICKED(IDC_b6, &Cproject_1Dlg:OnClickedB6)ON_BN_CLICKED(IDC_b7, &Cproject_1Dlg:OnClickedB7)ON_BN_CLICKED(IDC_b8, &Cproject_1Dlg:OnClickedB8)ON_BN_CLICKED(IDC_b9, &

13、amp;Cproject_1Dlg:OnClickedB9)ON_BN_CLICKED(IDC_b10, &Cproject_1Dlg:OnClickedB10)ON_BN_CLICKED(IDC_claer, &Cproject_1Dlg:OnClickedClaer)ON_BN_CLICKED(IDC_claer2, &Cproject_1Dlg:OnClickedClaer2)ON_BN_CLICKED(IDC_bp, &Cproject_1Dlg:OnClickedBp)ON_BN_CLICKED(IDC_bp2, &Cproject_1Dlg:

14、OnClickedBp2)ON_BN_CLICKED(IDC_bsp, &Cproject_1Dlg:OnClickedBsp)ON_BN_CLICKED(IDC_M, &Cproject_1Dlg:OnClickedM)ON_BN_CLICKED(IDC_MC, &Cproject_1Dlg:OnClickedMc)ON_BN_CLICKED(IDC_MM, &Cproject_1Dlg:OnClickedMm)ON_BN_CLICKED(IDC_MOD, &Cproject_1Dlg:OnClickedMod)ON_BN_CLICKED(IDC_sq

15、rt, &Cproject_1Dlg:OnClickedSqrt)ON_BN_CLICKED(IDC_MR, &Cproject_1Dlg:OnClickedMr)ON_BN_CLICKED(IDC_SUBRACT, &Cproject_1Dlg:OnClickedSubract)ON_BN_CLICKED(IDC_mul, &Cproject_1Dlg:OnClickedMul)ON_BN_CLICKED(IDC_devide, &Cproject_1Dlg:OnClickedDevide)ON_EN_CHANGE(IDC_EDIT1, &Cp

16、roject_1Dlg:OnChangeEdit1)ON_BN_CLICKED(IDC_EQUAL, &Cproject_1Dlg:OnClickedEqual)END_MESSAGE_MAP()/ Cproject_1Dlg 消息處理程序BOOL Cproject_1Dlg:OnInitDialog()CDialogEx:OnInitDialog();/ 將“關(guān)于.”菜單項(xiàng)添加到系統(tǒng)菜單中。/ IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX &l

17、t; 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAbout

18、Menu);/ 設(shè)置此對(duì)話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對(duì)話框時(shí),框架將自動(dòng)/ 執(zhí)行此操作SetIcon(m_hIcon, TRUE);/ 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE);/ 設(shè)置小圖標(biāo)/ TODO: 在此添加額外的初始化代碼m_result=0;m_op1=0,m_op2=0;return TRUE; / 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUEvoid Cproject_1Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;

19、dlgAbout.DoModal();elseCDialogEx:OnSysCommand(nID, lParam);/ 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼/ 來繪制該圖標(biāo)。對(duì)于使用文檔/視圖模型的 MFC 應(yīng)用程序,/ 這將由框架自動(dòng)完成。void Cproject_1Dlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用于繪制的設(shè)備上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc(), 0);/ 使圖標(biāo)在工作區(qū)矩形中居中int c

20、xIcon = GetSystemMetrics(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;/ 繪制圖標(biāo)dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/當(dāng)用戶拖動(dòng)最小化窗口時(shí)系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)/顯示。HCURSOR Cproject_1Dlg:

21、OnQueryDragIcon()return static_cast<HCURSOR>(m_hIcon);void Cproject_1Dlg:Equal2()UpdateData(TRUE);m_op2=m_num;switch(m_operation)case 1:m_result = m_op1 + m_op2;break;case 2:m_result = m_op1 - m_op2;break;case 3:m_result = m_op1/m_op2;break;case 4:m_result = m_op1*m_op2;break;case 5:m_result =

22、 pow(m_op1,m_op2);break;case 6:m_result = (m_op1|m_op2);break;case 7:m_op2=1/m_op2;m_result = pow(m_op1,m_op2);break;case 8:/m_result = int(m_op1) bitor int(m_op2) ; break;break;case 9:/m_result = int(m_op1) bitand int(m_op2) ; break;case 10:m_result=int(m_op1) % int(m_op2) ;break;case 12:/m_result=

23、int(m_op1) compl int(m_op2) ;break;default :/AfxMessageBox(" NO OPERATION TO DO ");m_num = m_result;st1=0; m_op1=m_result; pflag=0;m_control_e.SetFocus(); / m_control_e.SetSel(0,-1);UpdateData(FALSE);void Cproject_1Dlg:AddDigit(char numKey) / TODO: Add your control notification handler cod

24、e hereCString str, tmp;tmp.Format(L"%c", numKey);m_control_e.GetWindowText(str);if(str = '0'|st1=0)str = tmp;elsestr += tmp;st1=1;m_control_e.SetWindowText(str);void Cproject_1Dlg:OnClicked1x()/ TODO: 在此添加控件通知處理程序代碼UpdateData(TRUE);m_num=1/m_num;UpdateData(FALSE); st1=0;m_control_e

25、.SetFocus(); pflag=0;void Cproject_1Dlg:OnClickedAdd()/ TODO: 在此添加控件通知處理程序代碼if(st2=0)UpdateData(TRUE);m_op1 = m_num;m_operation = 1; m_control_e.SetFocus(); st1=pflag=0;st2=1;elseUpdateData(TRUE);m_operation = 1; m_control_e.SetFocus();Equal2();void Cproject_1Dlg:OnClickedB1()/ TODO: 在此添加控件通知處理程序代碼A

26、ddDigit('1');void Cproject_1Dlg:OnClickedB2()/ TODO: 在此添加控件通知處理程序代碼AddDigit('2');void Cproject_1Dlg:OnClickedB3()/ TODO: 在此添加控件通知處理程序代碼AddDigit('3');void Cproject_1Dlg:OnClickedB4()/ TODO: 在此添加控件通知處理程序代碼AddDigit('4');void Cproject_1Dlg:OnClickedB5()/ TODO: 在此添加控件通知處理程

27、序代碼AddDigit('5');void Cproject_1Dlg:OnClickedB6()/ TODO: 在此添加控件通知處理程序代碼AddDigit('6');void Cproject_1Dlg:OnClickedB7()/ TODO: 在此添加控件通知處理程序代碼AddDigit('7');void Cproject_1Dlg:OnClickedB8()/ TODO: 在此添加控件通知處理程序代碼AddDigit('8');void Cproject_1Dlg:OnClickedB9()/ TODO: 在此添加控件通

28、知處理程序代碼AddDigit('9');void Cproject_1Dlg:OnClickedB10()/ TODO: 在此添加控件通知處理程序代碼AddDigit('0');void Cproject_1Dlg:OnClickedClaer()/ TODO: 在此添加控件通知處理程序代碼m_op1 = 0.0;m_op2 = 0.0;m_result = 0.0;m_operation =0;m_num = 0.0;m_inv = FALSE;m_hp = FALSE;UpdateData(FALSE);m_control_e.SetFocus(); st

29、1=st2=0; pflag=0;void Cproject_1Dlg:OnClickedClaer2()/ TODO: 在此添加控件通知處理程序代碼m_num = 0;UpdateData(FALSE);st1=0;pflag=0;void Cproject_1Dlg:OnClickedBp()/ TODO: 在此添加控件通知處理程序代碼if(pflag=0)AddDigit('.');/st2=1;pflag=1;void Cproject_1Dlg:OnClickedBp2()/ TODO: 在此添加控件通知處理程序代碼UpdateData(TRUE);m_num=-m_

30、num;UpdateData(FALSE);st1=0;void Cproject_1Dlg:OnClickedBsp()/ TODO: 在此添加控件通知處理程序代碼CString str, tmp;/tmp.Format("%c", numKey);m_control_e.GetWindowText(str); int a;a=str.GetLength();if(a!=0) str.Delete(a-1,1);m_control_e.SetWindowText(str);void Cproject_1Dlg:OnClickedM()/ TODO: 在此添加控件通知處理程

31、序代碼UpdateData(TRUE); m_m=m_num; /m_num=NULL;UpdateData(FALSE);m_control_e.SetFocus(); st1=0; m_control_e.SetSel(0,-1);pflag=0;void Cproject_1Dlg:OnClickedMc()/ TODO: 在此添加控件通知處理程序代碼m_m=0;m_control_e.SetFocus(); st1=0; m_control_e.SetSel(0,-1);i=0;s=0;r=0;pflag=0;void Cproject_1Dlg:OnClickedMm()/ TODO

32、: 在此添加控件通知處理程序代碼UpdateData(TRUE);m_m=m_m+m_num;m_num=NULL;UpdateData(FALSE);m_control_e.SetFocus(); st1=0;void Cproject_1Dlg:OnClickedMod()/ TODO: 在此添加控件通知處理程序代碼UpdateData(TRUE);m_op1 = m_num; m_operation= 10; st1=0; pflag=0;m_control_e.SetFocus(); m_control_e.SetSel(0,-1);void Cproject_1Dlg:OnClick

33、edSqrt()/ TODO: 在此添加控件通知處理程序代碼UpdateData(TRUE);m_num=sqrt(m_num);UpdateData(FALSE);m_control_e.SetFocus(); st1=0; m_control_e.SetSel(0,-1);void Cproject_1Dlg:OnClickedMr()/ TODO: 在此添加控件通知處理程序代碼m_num=m_m; UpdateData(FALSE);m_control_e.SetFocus(); st1=0; m_control_e.SetSel(0,-1);pflag=0;void Cproject_

34、1Dlg:OnClickedSubract()/ TODO: 在此添加控件通知處理程序代碼if(st2=0)UpdateData(TRUE);m_op1 = m_num;m_operation = 2; m_control_e.SetFocus(); st1=pflag=0;st2=1; / m_control_e.SetSel(0,-1);elseUpdateData(TRUE);m_operation = 2; m_control_e.SetFocus();Equal2();void Cproject_1Dlg:OnClickedMul()/ TODO: 在此添加控件通知處理程序代碼if(st2=0)UpdateData(TRUE);m_op1 = m_num;m_operation = 4; m_control_e.SetFocus(); st1=pflag=0;st2=1; / m_control_e.SetSel(0,-1);elseUpdateData(TR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論