版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 實 驗 報 告 學期) 第 一(2013 / 2014 學年 windows 編程課程名稱 實驗名稱 簡單計算器 日實驗時間年月12 20 2023 計算機、軟件學院 指導單位 王子元 指導教師 班級學號學生姓名 計算機軟件與服 業(yè) 系學院() 計算機學院、專 軟件學院務外包 實 驗 報 告 實驗名稱 簡單計算器 指導教師王子元 實驗類型 設計 實驗學時 實驗時間2013.2.20 一、 實驗目的和要求 要求:實現(xiàn)一個簡單計算器,其類似于Windows附件中自帶的計算器。要求界面簡潔大方,具有一個菜單欄,一個編輯框及若干按鍵。按鈕控件具有對鼠標敏感的功能,當鼠標位于不同的位置和狀態(tài)時,控件會
2、顯示不同的顏色。 1.編程思路清晰,圖像美觀 2.代碼書寫規(guī)范,關鍵部分有注釋 3.功能實現(xiàn)全面,計算結果正確 4.文檔書寫規(guī)范完整,有測試過程 5.實現(xiàn)按鈕控件對鼠標的敏感處理功能 小組成員 背景 計算器的功能和界面我們都是十分熟悉的。雖然目前我們電腦上基本都配置得有windows附件自帶的計算器,相較于系統(tǒng)自帶的計算器,我們想要開發(fā)的計算器是要求能實現(xiàn)復雜表達式(如2*3+4-(3+2/2)之類的)運算的,并能準確快速的顯示計算結果的軟件。 本軟件的應用目標是準確快速的計算表達式運算。本軟件的作用范圍是面 向中小學生的簡單的表達式計算類型。本軟件全部內(nèi)容自含。 該項目開發(fā)的周期為兩周 二、
3、) 實驗設備實驗環(huán)境( 硬件:微型計算機Microsoft Visual Studio 2010 軟件: 2 三、實驗原理及內(nèi)容 實驗內(nèi)容 工程的創(chuàng)建。使用MFC 創(chuàng)建一個基于對話框的工程;1. 界面設計。使用控件工具欄為對話框添加所需控件,并設置控件屬性;2. 使用界面布局工 具欄調(diào)整控件布局,完成應用程序界面設計。為控件添加相關ClassWizard3. 創(chuàng)建對話框成員變量和成員函數(shù)。使用頁窗口的ClassView聯(lián)的對話框成員變量和消息相應函數(shù);在Workspace 4中,根據(jù)需要為對話框添加其他成員變量和成員函數(shù)。 編寫代碼。 編譯、調(diào)試程序;運行程序,并對程序功能進行測試5 功能設計
4、 2+3=5)(1)支持加減乘除運算( )支持輸入正確的乘方運算(如(2)23=8 3 2+3*2=8) 如支持混合四則運算(3) =22-4/22+3*(4)支持正確的表達式運算(如() 4 (5)計算器的輸入方式:支持鼠標點擊輸入和鍵盤輸入(鼠標輸入是點擊按鈕,編輯框即本計算器支持鼠標點擊操作和鍵盤輸入。顯示點擊的結果和計算結果,鍵盤輸入是點擊編輯框鎖定光標后從鍵盤輸 入的)。 使用圖形界面中的事件委托機制來處理事件響應(6) 計算器計算結果的輸出方式:在計算器窗口的顯示。按鈕將編輯框清零,點擊C(7)本計算器應該要支持退格和清零。點擊 按鈕,退格,清除編輯框中最后一個輸入字符。backs
5、pace 算術運算的數(shù)據(jù)類型:整數(shù)和浮點數(shù)(8)位,超出即位溢出,位小數(shù),支持的運算是32 本計算器支持的精度是6”的表達式有=(8)同時顯示的結果僅保留6位小數(shù)。本計算器默認諸如“ 效,不設置錯誤提示。的情況,提示用戶被除數(shù)不能0. 出現(xiàn)運算異常的情況為:被除數(shù)為 .輸入的表達式不正確時,提示出錯。為零?。c擊等號按鈕,或者鍵盤輸入等號時,計算器在編輯框顯示計算結果。(9當用戶通過計算或者輸入得到一個含有等號的表達式之后,再次點擊等號5 或者鍵盤輸入等號均不再經(jīng)行計算。 進制下進行。(10) 以上所有的運算都是在10用戶不輸入任何表達式,直接點擊或者鍵盤輸入等號時,默認在編輯(11) ??蝻@
6、示0 實驗結果: 注:關于鼠標敏感的實現(xiàn)無法截圖,請看程序。 進入界面 計算界面 0 輸入除數(shù)為6 6/0= 輸入: 運算結果溢出9666666666666666666666666666666666666666*999999999999999999999999999999999999= 輸入: 表達式有誤*4= 輸入:(6* 7 實現(xiàn)視圖內(nèi)指定區(qū)域內(nèi)對鼠標點擊和移動的敏感處理功能 需要新加入函數(shù):UINT pWnd, UINT nHitTest, BOOL CMFCDlg:OnSetCursor(CWnd* message) BOOL bRes=CDialog:OnSetCursor(pWnd
7、, nHitTest, message); HCURSOR h; if(nHitTest=HTCLIENT&message=WM_RBUTTONDOWN) h=AfxGetApp()-LoadCursor(IDC_CURSOR1); bRes=TRUE; 8 if(message=WM_LBUTTONDOWN) h=AfxGetApp()-LoadCursor(IDC_CURSOR5); bRes=TRUE; if(nHitTest=HTCAPTION&message!=WM_RBUTTONDOWN&mess age=WM_LBUTTONDOWN) h=AfxGetApp()-LoadStan
8、dardCursor(IDC_SIZEALL); bRes=TRUE; if(nHitTest=HTMENU&message!=WM_RBUTTONDOWN) h=AfxGetApp()-LoadCursor(IDC_CURSOR4); bRes=TRUE; SetCursor(h); return bRes; 關鍵代碼如下: CMfcTESTDlg:OnBTdian() void 9 / TODO: Add your control notification handler code here int leng;/ ?在等臺?號?是?否?已?經(jīng)- 存來int key=0; /key?標括?記
9、 ?號?存?在等臺否/ leng=s.GetLength(); /判D斷?是? for (int i=0;i0) if panduandian=s.GetAt(length-1); ;length=length-1) &panduandian= 法合 否 參檢驗(length=0) if /GetAt?數(shù)簓是?; break else panduandian=s.GetAt(length-1); 少? / 長度減? ) . if (lengthGetWindowText(s1); s=s+s1; GetDlgItem(IDC_EDIT1)-SetWindowText(s); else10 Ge
10、tDlgItem(IDC_BTdian)-GetWindowText(s1); +s1; 0 s=s+ GetDlgItem(IDC_EDIT1)-SetWindowText(s); CMfcTESTDlg:OnBtc() void / TODO: Add your control notification handler code here ; s= ); GetDlgItem(IDC_EDIT1)-SetWindowText( CMfcTESTDlg:OnBtadd() void ?示算?,?并顯?否?輸?入?:阰+,?+-,?+/之類?的?運?是能:阰判/ 函數(shù)簓功|D斷? ?輸入 /
11、TODO: Add your control notification handler code here / int leng; ?是否 ?已?經(jīng)-存號?在等臺?/keyint key=0; 來?標括記 ?斷?是否?存?在等臺?號?D/ leng=s.GetLength(); /判 for (int i=0;i0) ifpanduandian=s.GetAt(length-1); ) &panduandian=if|panduandian= 9)GetDlgItem(IDC_BTADD)-GetWindowText(s1); 11 s=s+s1; GetDlgItem(IDC_EDIT1)-
12、SetWindowText(s); else /CMfcTESTDlg.OnBtback(); ? 用int length=s.GetLength(); / onbtback 功|能重 s.Delete(length-1,1); GetDlgItem(IDC_EDIT1)-SetWindowText(s); GetDlgItem(IDC_BTADD)-GetWindowText(s1); s=s+s1; GetDlgItem(IDC_EDIT1)-SetWindowText(s); elseGetDlgItem(IDC_BTADD)-GetWindowText(s1); +s1; 0 s=s+
13、 GetDlgItem(IDC_EDIT1)-SetWindowText(s); CMfcTESTDlg:OnBtsub() void / TODO: Add your control notification handler code here int leng;/ ?在等臺?號?存是?標括?記?否?已?經(jīng) - key=0; int/key來 號?存?在等臺?是/ leng=s.GetLength(); /判D斷?否? / for (int i=0;i0) 12 panduandian=s.GetAt(length-1); ) )&panduandian=GetDlgItem(IDC_BTS
14、UB)-GetWindowText(s1); s=s+s1; GetDlgItem(IDC_EDIT1)-SetWindowText(s); else /CMfcTESTDlg.OnBtback(); 能重?用 ?/ onbtbackint length=s.GetLength(); 功|s.Delete(length-1,1); GetDlgItem(IDC_EDIT1)-SetWindowText(s); GetDlgItem(IDC_BTSUB)-GetWindowText(s1); s=s+s1; GetDlgItem(IDC_EDIT1)-SetWindowText(s); /* e
15、lse if (length=0) GetDlgItem(IDC_BTSUB)-GetWindowText(s1); s=s+s1; GetDlgItem(IDC_EDIT1)-SetWindowText(s); */ elseGetDlgItem(IDC_BTSUB)-GetWindowText(s1); +s1; 0 s=s+ GetDlgItem(IDC_EDIT1)-SetWindowText(s); ?有瓺,?沒?默?認?為a0y0?bool flag_opt; /標括記?是?否?有瓺除操作痢?, 有瓺沒?為a0,?錯洙?有瓺輸?入?誤,?默?認是標括bool flag_input;
16、 /?記?否 有瓺沒?認?為a0,?bool flag_maxout; /標括記?是否?有瓺溢出?,默 CMfcTESTDlg:OnBteq() void / TODO: Add your control notification handler code here length; intCString s1; sout100; char str25; char ?間空 請申(str); memset(str,0,sizeof/? flag_opt=0; flag_input=0; 13 flag_maxout=0; ?號-存?在等臺記?是?否?已?經(jīng)? int key=0; /key來標括?
17、 號?在等臺?存?length=s.GetLength(); /判D斷?是?否/ / for (int i=0;iSetWindowText(s); ; s= ) (key!=1|s.Right(1)=/. elseif 有瓺等臺尾末式表括) (s.Right(1)!=if=/?達 ? ?2沒?去?加進,號? GetDlgItem(IDC_BTEQ)-GetWindowText(s1); ; s1=s1+ ns=s+s1; ?否是號括?左哩?/ int 匹¥配? numl=0; 標括記 /int numr=0; ?/length=s.GetLength(); 轉(zhuǎn)羇換成字 ?數(shù)簓組哩? ?符 i
18、=length;i0;i-) (for intstri-1=s.GetAt(i-1); 號?括 ? ?左哩 /) (stri-1=if(匹¥配?問題琣 numl+; ) ) (stri-1=if numl-; ; strlength=0 14 算?/計? float score=compute(str,length); ? if (flag_opt) /出錯洙?處鋦理 , MB_ICONERROR | MB_OK); ?牲牯尿, 入 數(shù)簓為MessageBox(存?在除ya0, ?請?檢查輸? (flag_input) if else , MB_ICONERROR | ? MessageBox(表括?達式?輸入 ?有瓺誤,, ?牲牯?檢查輸入尿?請MB_OK); (flag_maxout) if else , MB_ICONERROR | MB_OK); ? MessageBox(運 算結果溢?出?牲牯尿, ?匹¥配 ?不號括 (numl!=0) else if/?, , ?牲牯檢查輸?入尿?號不?匹¥配?,?請? MessageBox(表括達?式輸?入括MB_ICONERROR | MB_OK); numl=0; /numr=0; 示錯洙沒/? 出?則顯?結果? else
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年秋天的懷念教案篇
- 2024年美術教案匯編8篇
- 制造業(yè)合同范本(2篇)
- 2024無錫經(jīng)典財稅獨家資料初級會計職稱考試《初級會計經(jīng)濟法基礎》考試密卷
- 2024年福建省《公共基礎之管理公文》必刷500題帶解析含答案ab卷
- 【人教版九上歷史】背誦秘笈
- gps靜態(tài)測量實習報告(實習報告,靜態(tài),測量)
- 2025蘋果街塑鋼門窗制作安裝合同
- 2025關于住房公積金借款合同
- 2024年度四川省公共營養(yǎng)師之四級營養(yǎng)師每日一練試卷A卷含答案
- 錨桿錨索鉆機操作規(guī)程
- 《錄音技術與藝術》課程教學大綱
- 部編版七年級語文上下冊教材解讀分析精編ppt
- InternationalSettlementsLecture3InternationalClearingSystems
- (完整版)景觀園林工程施工規(guī)范和技術要求
- (完整版)六年級轉(zhuǎn)述句練習題
- 蘇武傳作文素材整理-
- 小學一年級班會課教案匯編 全冊
- 公司董事會、總經(jīng)理辦公會議事清單.docx
- 煤礦礦井供電設計(DOC26頁)
- 中國鶴翔莊氣功之五站樁功
評論
0/150
提交評論