版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 20萬噸玉米糧食烘干項(xiàng)目可行性研究報(bào)告寫作模板-備案審批
- 山東菏澤定陶區(qū)2023-2024學(xué)年中考聯(lián)考數(shù)學(xué)試題含解析
- 保定學(xué)院《和聲基礎(chǔ)寫作(二)》2022-2023學(xué)年第一學(xué)期期末試卷
- 寶雞文理學(xué)院《組織行為學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 寶雞文理學(xué)院《現(xiàn)代教育技術(shù)學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 新課標(biāo)2023版高考地理一輪檢測(cè)六十五海洋空間資源開發(fā)與國家安全
- 摩托車電線束項(xiàng)目可行性實(shí)施報(bào)告
- 寶雞文理學(xué)院《經(jīng)典節(jié)目與主持欣賞》2022-2023學(xué)年第一學(xué)期期末試卷
- 擱板桌相關(guān)項(xiàng)目建議書
- 威士忌玻璃杯項(xiàng)目可行性實(shí)施報(bào)告
- 身份證件類型代碼及國籍代碼
- 勘測(cè)定界標(biāo)書設(shè)計(jì)書測(cè)繪方案
- 無閥濾池方案1萬噸自來水廠詳細(xì)設(shè)計(jì)說明書
- 律師事務(wù)所金融業(yè)務(wù)部法律服務(wù)方案
- 全介質(zhì)自承式光纜(ADSS) 結(jié)構(gòu)參數(shù)及機(jī)械性能表
- 常用公文寫作
- 裝修工程施工進(jìn)度計(jì)劃表excel模板
- 三甲醫(yī)院財(cái)務(wù)工作流程圖
- 第二章 主料和配料的成本核算
- 朗誦稿 唐詩里的中國
- 2019年銀行重要空白憑證及有價(jià)單證管理辦法
評(píng)論
0/150
提交評(píng)論