C++課程設(shè)計:計算器(4)_第1頁
C++課程設(shè)計:計算器(4)_第2頁
C++課程設(shè)計:計算器(4)_第3頁
C++課程設(shè)計:計算器(4)_第4頁
C++課程設(shè)計:計算器(4)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.課 程 設(shè) 計 報 告 課程名稱:面向?qū)ο蟪绦蛟O(shè)計C+ 設(shè)計題目: 計算器 專 業(yè):計算機科學與技術(shù) 姓 名: 學 號: 指導教師:李 曉 虹2016 年 1 月 1 日(1) 系統(tǒng)需求分析編寫一個程序來實現(xiàn)算術(shù)計算器。通過結(jié)構(gòu)體數(shù)組和共用體數(shù)組來存放輸入的每一數(shù)字或運算符號的記錄(包括1、2、3等數(shù)字,+、-、*、/、等運算符號),然后將其信息存入文件中。輸入一個算術(shù)計算式,就在屏幕上顯示結(jié)果。(2) 總體設(shè)計是通過在計算器的界面上按下相應(yīng)的按鈕,來進行基本的加,減,乘,除等基本運算。A 創(chuàng)建一個基于對話框的應(yīng)用程序。 B 利用資源編輯器編輯對話框資源,及設(shè)計

2、計算器界面并修改對話框各按鈕的ID屬性和Caption屬性。 C 利用ClassWizard為各按鈕添加消息映射(代碼在下面詳細介紹)。 D 設(shè)置對話框文本背景顏色。(3) 詳細設(shè)計打開Microsoft Visual C+ 6.0,在文件中點擊新建,在彈出框內(nèi)選擇MFC AppWizardexe工程,輸入工程名計算器及其所在位置,點擊確定,如圖1-1圖1-1將彈出MFC AppWizard-step 1對話框,選擇基本對話框,點擊完成,如圖1-2圖1-2這樣,MFC AppWizard就建立了一個基于對話窗口的程序框架,如圖1-3圖1-3界面設(shè)計1、創(chuàng)

3、建控件Resoure View選項卡中打開Dialog資源組,雙擊IDD_main,在右邊的窗口中顯示出待編輯的對話框。開始擺放控件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“1”為例進行介紹,其他按鈕的創(chuàng)建可參照此進行操作。1)在圖5中Controls的“編輯框”按鈕上單擊鼠標左鍵,在對話框編輯窗口上合適的位置按下鼠標左鍵并拖動鼠標畫出一個大小合適的編輯框。在編輯框上單擊鼠標右鍵,在彈出的快捷萊單中選擇屬性選項,此時彈出Edit屬性對話框,在該對話框中輸入ID屬性。 如圖2-1圖1-42)Controls的“Button”按鈕上單擊鼠標左鍵,在對話框上的合適的位置上按下鼠標左鍵并拖動鼠標畫出一個

4、大小合適的下壓式按鈕。在按鈕上單擊鼠標右鍵,在彈出的快捷菜單中選擇屬性選項,此時也彈出Push Button屬性對話框,在該對話框中輸入控件的ID值和標題屬性。如圖1-5圖1-5按照上面的操作過程編輯其他按鈕和編輯框等對象的屬性。如表2-1各按鈕和編輯框等對象的屬性對象ID標題或說明編輯框IDC_EDIT結(jié)果顯示按鈕IDC_00按鈕IDC_11按鈕IDC_22按鈕IDC_33按鈕IDC_44按鈕IDC_55按鈕IDC_66按鈕IDC_77按鈕IDC_88按鈕IDC_99按鈕IDC_CHANGE+/-按鈕IDC_DOT.按鈕IDC_PLUSS+按鈕IDC_SUB-按鈕IDC_MUL*按鈕IDC_

5、DIV/按鈕IDC_SQRTSqrt按鈕IDC_1CX1/x按鈕IDC_BFH%按鈕IDC_CC按鈕IDC_CECE按鈕IDC_BACKSPACEBackspace按鈕IDC_STATIC按鈕IDC_MCMC按鈕IDC_MRMR按鈕IDC_MSMS按鈕IDC_MPLUSSM+表2-1完成后界面如圖1-6圖1-62、連接變量和代碼1) 給編輯框連接變量。在編輯框上單擊鼠標右鍵,在彈出菜單中選擇ClassWizard菜單項,彈出MFC ClassWizard對話框,選擇Member Variables選項卡3、菜單的設(shè)計選擇 插入/資源命令,將顯示插入資源對話框。選擇Menu,點擊新建即可。如圖1

6、-7圖1-7Resoure View選項卡中打開Menu資源組,雙擊IDR_MENU,如圖1-8圖1-8最終的得到的界面如圖1-9圖1-9(4) 系統(tǒng)調(diào)試加減乘除均能正常運行 當除數(shù)為0時 如圖1-10圖1-10證明錯誤提示功能實現(xiàn)正常。計算器功能基本實現(xiàn)。(5) 結(jié)果分析在Windows可視化界面中,消息映射函數(shù)十分重要,每個按鈕必須與與之對應(yīng)的消息函數(shù)對應(yīng),同時,函數(shù)的變量也應(yīng)該在MFC Class Wizard里設(shè)置準確,否則會影響最終的調(diào)試。在設(shè)置編輯框的變量時要注意與程序中的的變量名保持一致,這樣才能保證鍵入的數(shù)值能正確顯示在程序框中。在初始化列表框的過程中,添加Onintdialo

7、g中的代碼時要注意各個操作項的順序,否則會造成操作項的反串給對應(yīng)按鍵加函數(shù)時注意添加到源文件中正確的位置,否則會造成程序產(chǎn)生錯誤。(6) 總結(jié)通過計算器程序的設(shè)計,使我對VC+ MFC有了一定了解,使用MFC類庫可以大大簡化程序的設(shè)計,為我們設(shè)計程序提供了很大的方便。我們通過查閱各種介紹MFC編程的書籍,最后學會了從利用MFC的應(yīng)用程序向?qū)ВˋppWizard)創(chuàng)建一個應(yīng)用程序,再到添加控件,再到消息函數(shù)的創(chuàng)建,再到控件代碼的編輯,最后完成程序。在程序設(shè)計中遇到困難時,我和同學們一起討論,解決問題,遇到實在是想不通的地方,通過老師的指點答疑,最終共同完成了程序。在整個過程中,也增進了我發(fā)現(xiàn)問題

8、和解決問題的能力。附源代碼Main.cpp/ 計算器.cpp : Defines the entry point for the application./#include "stdafx.h"#include "resource.h"#include "MainDlg.h"#include <COMMCTRL.H>int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)/Enable

9、IPAddress、Calendar.etcInitCommonControls();DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);return 0;MainDlg.cpp#include "stdafx.h"#include <windows.h>#include <windowsx.h>#include "resource.h"#include "MainDlg.h"#include <math.h>TCHAR

10、text50;TCHAR opt='c'BOOL have=FALSE,enable=TRUE;double num1=0,num2=0;BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) switch(uMsg) HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose)

11、; return FALSE;BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)memset(text,'0',sizeof(TCHAR)*50);SetDlgItemText(hwnd,IDC_EDIT,TEXT("0."); return TRUE;void trim()int i=0,j=0;for (i=0;i<lstrlen(text);i+)if (texti!='0'&&texti!='0')j=i;for (j=

12、j+1;j<lstrlen(text);j+)textj='0'void AppendText(HWND hwnd,TCHAR c)if (lstrlen(text)=1&&text0='0'&&c!='.')text0=c;elsetextlstrlen(text)=c;SetDlgItemText(hwnd,IDC_EDIT,text);void result(HWND hwnd)switch(opt)case '+':num2=num2+num1;break;case '-

13、9;:num2=num2-num1;break;case '*':num2=num1*num2;break;case '/':if (num1=0)SetDlgItemText(hwnd,IDC_EDIT,TEXT("除數(shù)不能為零.");enable=FALSE;return; elsenum2=num2/num1;break;default:num2=num2+num1;break;num1=0;sprintf(text,TEXT("%f"),num2);trim();SetDlgItemText(hwnd,IDC_ED

14、IT,text);void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)TCHAR c2; switch(id) case IDC_0:case IDC_1:case IDC_2:case IDC_3:case IDC_4:case IDC_5:case IDC_6:case IDC_7:case IDC_8:case IDC_9:if (enable)GetDlgItemText(hwnd,id,c,2);AppendText(hwnd,c0);break;case IDC_DOT:if (!have&

15、;&enable)have=TRUE;if (lstrlen(text)=0)AppendText(hwnd,'0');AppendText(hwnd,'.');break;case IDC_PLUSS:case IDC_SUB:case IDC_MUL:case IDC_DIV:if(enable)if (lstrlen(text)!=0)num1=atof(text);result(hwnd);GetDlgItemText(hwnd,id,c,2);opt=c0;memset(text,'0',sizeof(TCHAR)*50);ha

16、ve=FALSE; elseGetDlgItemText(hwnd,id,c,2);opt=c0;break;case IDC_EQUAL:if (lstrlen(text)!=0&&enable)num1=atof(text);result(hwnd);memset(text,'0',sizeof(TCHAR)*50);have=FALSE;break;case IDC_C:memset(text,'0',sizeof(TCHAR)*50);num1=0;num2=0;have=FALSE;enable=TRUE;opt='c'

17、SetDlgItemText(hwnd,IDC_EDIT,TEXT("0.");break;case IDC_CE:memset(text,'0',sizeof(TCHAR)*50);num1=0;have=FALSE;enable=TRUE;SetDlgItemText(hwnd,IDC_EDIT,TEXT("0.");break;case IDC_CHANGE:if (strlen(text)!=0&&enable)num1=atof(text);num1=-num1;sprintf(text,TEXT("%

18、f"),num1);trim();SetDlgItemText(hwnd,IDC_EDIT,text);break;case IDC_1CX:if (enable)num1=atof(text);if (num1=0)SetDlgItemText(hwnd,IDC_EDIT,TEXT("除數(shù)不能為零.");enable=FALSE; elsenum1=1.0/num1;sprintf(text,TEXT("%f"),num1);trim();SetDlgItemText(hwnd,IDC_EDIT,text);break;case IDC_BFH:break;case IDC_SQRT:if (enable)num1=atof(text);if (num1<0)SetDlgItemText(hwnd,IDC_EDIT,TEXT("被開方數(shù)不能為負數(shù).");enable=FALSE;elsenum1=sqr

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論