版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 實(shí) 驗(yàn) 報(bào) 告 學(xué)期) 第 一(2013 / 2014 學(xué)年 windows 編程課程名稱 實(shí)驗(yàn)名稱 簡單計(jì)算器 日實(shí)驗(yàn)時(shí)間年月12 20 2023 計(jì)算機(jī)、軟件學(xué)院 指導(dǎo)單位 王子元 指導(dǎo)教師 班級學(xué)號學(xué)生姓名 計(jì)算機(jī)軟件與服 業(yè) 系學(xué)院() 計(jì)算機(jī)學(xué)院、專 軟件學(xué)院務(wù)外包 實(shí) 驗(yàn) 報(bào) 告 實(shí)驗(yàn)名稱 簡單計(jì)算器 指導(dǎo)教師王子元 實(shí)驗(yàn)類型 設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí) 實(shí)驗(yàn)時(shí)間2013.2.20 一、 實(shí)驗(yàn)?zāi)康暮鸵?要求:實(shí)現(xiàn)一個(gè)簡單計(jì)算器,其類似于Windows附件中自帶的計(jì)算器。要求界面簡潔大方,具有一個(gè)菜單欄,一個(gè)編輯框及若干按鍵。按鈕控件具有對鼠標(biāo)敏感的功能,當(dāng)鼠標(biāo)位于不同的位置和狀態(tài)時(shí),控件會(huì)
2、顯示不同的顏色。 1.編程思路清晰,圖像美觀 2.代碼書寫規(guī)范,關(guān)鍵部分有注釋 3.功能實(shí)現(xiàn)全面,計(jì)算結(jié)果正確 4.文檔書寫規(guī)范完整,有測試過程 5.實(shí)現(xiàn)按鈕控件對鼠標(biāo)的敏感處理功能 小組成員 背景 計(jì)算器的功能和界面我們都是十分熟悉的。雖然目前我們電腦上基本都配置得有windows附件自帶的計(jì)算器,相較于系統(tǒng)自帶的計(jì)算器,我們想要開發(fā)的計(jì)算器是要求能實(shí)現(xiàn)復(fù)雜表達(dá)式(如2*3+4-(3+2/2)之類的)運(yùn)算的,并能準(zhǔn)確快速的顯示計(jì)算結(jié)果的軟件。 本軟件的應(yīng)用目標(biāo)是準(zhǔn)確快速的計(jì)算表達(dá)式運(yùn)算。本軟件的作用范圍是面 向中小學(xué)生的簡單的表達(dá)式計(jì)算類型。本軟件全部內(nèi)容自含。 該項(xiàng)目開發(fā)的周期為兩周 二、
3、) 實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)環(huán)境( 硬件:微型計(jì)算機(jī)Microsoft Visual Studio 2010 軟件: 2 三、實(shí)驗(yàn)原理及內(nèi)容 實(shí)驗(yàn)內(nèi)容 工程的創(chuàng)建。使用MFC 創(chuàng)建一個(gè)基于對話框的工程;1. 界面設(shè)計(jì)。使用控件工具欄為對話框添加所需控件,并設(shè)置控件屬性;2. 使用界面布局工 具欄調(diào)整控件布局,完成應(yīng)用程序界面設(shè)計(jì)。為控件添加相關(guān)ClassWizard3. 創(chuàng)建對話框成員變量和成員函數(shù)。使用頁窗口的ClassView聯(lián)的對話框成員變量和消息相應(yīng)函數(shù);在Workspace 4中,根據(jù)需要為對話框添加其他成員變量和成員函數(shù)。 編寫代碼。 編譯、調(diào)試程序;運(yùn)行程序,并對程序功能進(jìn)行測試5 功能設(shè)計(jì)
4、 2+3=5)(1)支持加減乘除運(yùn)算( )支持輸入正確的乘方運(yùn)算(如(2)23=8 3 2+3*2=8) 如支持混合四則運(yùn)算(3) =22-4/22+3*(4)支持正確的表達(dá)式運(yùn)算(如() 4 (5)計(jì)算器的輸入方式:支持鼠標(biāo)點(diǎn)擊輸入和鍵盤輸入(鼠標(biāo)輸入是點(diǎn)擊按鈕,編輯框即本計(jì)算器支持鼠標(biāo)點(diǎn)擊操作和鍵盤輸入。顯示點(diǎn)擊的結(jié)果和計(jì)算結(jié)果,鍵盤輸入是點(diǎn)擊編輯框鎖定光標(biāo)后從鍵盤輸 入的)。 使用圖形界面中的事件委托機(jī)制來處理事件響應(yīng)(6) 計(jì)算器計(jì)算結(jié)果的輸出方式:在計(jì)算器窗口的顯示。按鈕將編輯框清零,點(diǎn)擊C(7)本計(jì)算器應(yīng)該要支持退格和清零。點(diǎn)擊 按鈕,退格,清除編輯框中最后一個(gè)輸入字符。backs
5、pace 算術(shù)運(yùn)算的數(shù)據(jù)類型:整數(shù)和浮點(diǎn)數(shù)(8)位,超出即位溢出,位小數(shù),支持的運(yùn)算是32 本計(jì)算器支持的精度是6”的表達(dá)式有=(8)同時(shí)顯示的結(jié)果僅保留6位小數(shù)。本計(jì)算器默認(rèn)諸如“ 效,不設(shè)置錯(cuò)誤提示。的情況,提示用戶被除數(shù)不能0. 出現(xiàn)運(yùn)算異常的情況為:被除數(shù)為 .輸入的表達(dá)式不正確時(shí),提示出錯(cuò)。為零?。c(diǎn)擊等號按鈕,或者鍵盤輸入等號時(shí),計(jì)算器在編輯框顯示計(jì)算結(jié)果。(9當(dāng)用戶通過計(jì)算或者輸入得到一個(gè)含有等號的表達(dá)式之后,再次點(diǎn)擊等號5 或者鍵盤輸入等號均不再經(jīng)行計(jì)算。 進(jìn)制下進(jìn)行。(10) 以上所有的運(yùn)算都是在10用戶不輸入任何表達(dá)式,直接點(diǎn)擊或者鍵盤輸入等號時(shí),默認(rèn)在編輯(11) ??蝻@
6、示0 實(shí)驗(yàn)結(jié)果: 注:關(guān)于鼠標(biāo)敏感的實(shí)現(xiàn)無法截圖,請看程序。 進(jìn)入界面 計(jì)算界面 0 輸入除數(shù)為6 6/0= 輸入: 運(yùn)算結(jié)果溢出9666666666666666666666666666666666666666*999999999999999999999999999999999999= 輸入: 表達(dá)式有誤*4= 輸入:(6* 7 實(shí)現(xiàn)視圖內(nèi)指定區(qū)域內(nèi)對鼠標(biāo)點(diǎn)擊和移動(dòng)的敏感處理功能 需要新加入函數(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; 關(guān)鍵代碼如下: CMfcTESTDlg:OnBTdian() void 9 / TODO: Add your control notification handler code here int leng;/ ?在等臺(tái)?號?是?否?已?經(jīng)- 存來int key=0; /key?標(biāo)括?記
9、 ?號?存?在等臺(tái)否/ leng=s.GetLength(); /判D斷?是? for (int i=0;i0) if panduandian=s.GetAt(length-1); ;length=length-1) &panduandian= 法合 否 參檢驗(yàn)(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 ?示算?,?并顯?否?輸?入?:阰+,?+-,?+/之類?的?運(yùn)?是能:阰判/ 函數(shù)簓功|D斷? ?輸入 /
11、TODO: Add your control notification handler code here / int leng; ?是否 ?已?經(jīng)-存號?在等臺(tái)?/keyint key=0; 來?標(biāo)括記 ?斷?是否?存?在等臺(tái)?號?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;/ ?在等臺(tái)?號?存是?標(biāo)括?記?否?已?經(jīng) - key=0; int/key來 號?存?在等臺(tái)?是/ 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); ?有瓺,?沒?默?認(rèn)?為a0y0?bool flag_opt; /標(biāo)括記?是?否?有瓺除操作痢?, 有瓺沒?為a0,?錯(cuò)洙?有瓺輸?入?誤,?默?認(rèn)是標(biāo)括bool flag_input;
16、 /?記?否 有瓺沒?認(rèn)?為a0,?bool flag_maxout; /標(biāo)括記?是否?有瓺溢出?,默 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; ?號-存?在等臺(tái)記?是?否?已?經(jīng)? int key=0; /key來標(biāo)括?
17、 號?在等臺(tái)?存?length=s.GetLength(); /判D斷?是?否/ / for (int i=0;iSetWindowText(s); ; s= ) (key!=1|s.Right(1)=/. elseif 有瓺等臺(tái)尾末式表括) (s.Right(1)!=if=/?達(dá) ? ?2沒?去?加進(jìn),號? GetDlgItem(IDC_BTEQ)-GetWindowText(s1); ; s1=s1+ ns=s+s1; ?否是號括?左哩?/ int 匹¥配? numl=0; 標(biāo)括記 /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 算?/計(jì)? float score=compute(str,length); ? if (flag_opt) /出錯(cuò)洙?處鋦理 , MB_ICONERROR | MB_OK); ?牲牯尿, 入 數(shù)簓為MessageBox(存?在除ya0, ?請?檢查輸? (flag_input) if else , MB_ICONERROR | ? MessageBox(表括?達(dá)式?輸入 ?有瓺誤,, ?牲牯?檢查輸入尿?請MB_OK); (flag_maxout) if else , MB_ICONERROR | MB_OK); ? MessageBox(運(yùn) 算結(jié)果溢?出?牲牯尿, ?匹¥配 ?不號括 (numl!=0) else if/?, , ?牲牯檢查輸?入尿?號不?匹¥配?,?請? MessageBox(表括達(dá)?式輸?入括MB_ICONERROR | MB_OK); numl=0; /numr=0; 示錯(cuò)洙沒/? 出?則顯?結(jié)果? else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色物流服務(wù)項(xiàng)目合同
- 旅游產(chǎn)業(yè)2024年戰(zhàn)略合作合同
- 合作社土地租賃合同
- 2025年度汽車租賃車輛租賃期限延長協(xié)議2篇
- 2025年度蔬菜大棚租賃與農(nóng)業(yè)休閑旅游合作合同
- 2025年度酒店整體租賃能源消耗管理合同
- 2025年度跨境電商合同標(biāo)的跨境電商平臺(tái)運(yùn)營數(shù)據(jù)監(jiān)測與分析協(xié)議
- 2025年度餐飲店服務(wù)員職業(yè)成長與團(tuán)隊(duì)建設(shè)合同
- 二零二五年度生態(tài)濕地綠化養(yǎng)護(hù)個(gè)人承包協(xié)議
- 2025年度食堂檔口租賃與消防安全合作協(xié)議范本
- 扣款通知單 采購部
- 《鋁及鋁合金產(chǎn)品殘余應(yīng)力評價(jià)方法》
- 電除顫操作流程圖
- 湖北教育出版社三年級下冊信息技術(shù)教案
- 設(shè)計(jì)基礎(chǔ)全套教學(xué)課件
- IATF16949包裝方案評審表
- 人教版八年級美術(shù)下冊全冊完整課件
- 1 運(yùn)行方案說明
- 北京房地產(chǎn)典當(dāng)合同
- PHILIPS HeartStart XL+操作培訓(xùn)課件
- 檔案工作管理情況自查表
評論
0/150
提交評論