計(jì)算器程序設(shè)計(jì)報(bào)告_第1頁
計(jì)算器程序設(shè)計(jì)報(bào)告_第2頁
計(jì)算器程序設(shè)計(jì)報(bào)告_第3頁
計(jì)算器程序設(shè)計(jì)報(bào)告_第4頁
計(jì)算器程序設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

./計(jì)算器程序設(shè)計(jì)報(bào)告一、設(shè)計(jì)分析編寫一個(gè)計(jì)算器程序,要求:1、界面類似于windows系統(tǒng)中提供的計(jì)算器界面;2、能實(shí)現(xiàn)加、減、乘、除、乘方、開方等功能。界面類似于windows系統(tǒng)中提供的計(jì)算器界面,則數(shù)字的輸入和功能的執(zhí)行都通過按鍵來實(shí)現(xiàn),并且能夠在顯示區(qū)域里及時(shí)的顯示出數(shù)據(jù),所用本程序使用VC++提供的高度可視化的應(yīng)用程序開發(fā)工具M(jìn)FC來實(shí)現(xiàn)。要實(shí)現(xiàn)加、減、乘、除、乘方、開方等功能,則在程序中包含"math.h"庫函數(shù)文件,通過引用相應(yīng)的函數(shù)來實(shí)現(xiàn)乘方、開方等功能。在輸入第一個(gè)計(jì)算參數(shù)以后,點(diǎn)擊需要執(zhí)行的計(jì)算方式,然后輸入第二個(gè)計(jì)算參數(shù),點(diǎn)擊"="按鈕,則會(huì)在顯示區(qū)顯示出正確的結(jié)果。本程序從設(shè)計(jì)上來講,主要分為兩個(gè)重點(diǎn)部分,一個(gè)是數(shù)字的輸入,即逐個(gè)點(diǎn)擊單個(gè)數(shù)字〔包括小數(shù)點(diǎn)之后,這些數(shù)據(jù)能夠在顯示區(qū)正確的顯示。第二個(gè)是數(shù)據(jù)的計(jì)算,先輸入第一個(gè)計(jì)算參數(shù),然后選擇計(jì)算方式,再輸入第二個(gè)計(jì)算參數(shù),最后點(diǎn)擊"="按鈕,計(jì)算結(jié)果。二、程序結(jié)構(gòu)按照程序的設(shè)計(jì),可以分為數(shù)據(jù)顯示模塊、數(shù)據(jù)輸入模塊、計(jì)算方式選擇模塊、結(jié)果計(jì)算模塊、菜單模塊等五個(gè)主要模塊,其中,數(shù)字輸入模塊和計(jì)算模塊是重點(diǎn)和難度,這兩個(gè)模塊的流程圖如下所示:1、數(shù)字輸入的流程圖:點(diǎn)擊一個(gè)數(shù)字鍵以后,流程開始:開始開始顯示框中原來的數(shù)據(jù)是否繼續(xù)使用。是否已經(jīng)輸入小數(shù)點(diǎn)。清除原來的數(shù)據(jù);并且將標(biāo)識(shí)符改為繼續(xù)使用。m_num=m_num*10+1;floatjishu=1;for<inti=0;i<m_dianshu;i++>jishu=jishu/10;m_num=m_num+jishu; m_dianshu=m_dianshu+1;數(shù)據(jù)更新到界面上,顯示在顯示框結(jié)束否是是否2、數(shù)據(jù)計(jì)算的流程:開始開始結(jié)束輸入第一個(gè)操作數(shù)據(jù)。輸入第二個(gè)操作數(shù)據(jù)。點(diǎn)擊計(jì)算方式按鈕,操作方式記入計(jì)算方式標(biāo)識(shí)變量中。數(shù)據(jù)更新到界面上,顯示在顯示框點(diǎn)擊"="按鈕后,根據(jù)第一個(gè)操作數(shù)據(jù)、計(jì)算方式、第二個(gè)操作數(shù)據(jù)進(jìn)行相應(yīng)的計(jì)算。是否有后續(xù)的數(shù)據(jù)輸入。是否三、各模塊的功能及程序說明按照程序的設(shè)計(jì),可以分為數(shù)據(jù)顯示模塊、數(shù)據(jù)輸入模塊、計(jì)算方式選擇模塊、結(jié)果計(jì)算模塊、菜單模塊等五個(gè)主要模塊,以下逐個(gè)說明各模塊的功能及程序說明。1、數(shù)據(jù)顯示模塊。數(shù)據(jù)顯示模塊顯示用戶輸入的數(shù)字和計(jì)算器計(jì)算的結(jié)果,主要由一個(gè)數(shù)字顯示框組成。數(shù)字顯示框是一個(gè)編輯框控件,屬性設(shè)置為只讀模式,不能由用戶編輯。在MFC的類向?qū)е?給數(shù)字顯示框添加一個(gè)變量m_num,用來記錄數(shù)字的變化,當(dāng)每次操作以后,都會(huì)把數(shù)字更新到界面上,顯示給用戶。2、數(shù)據(jù)輸入模塊。數(shù)據(jù)輸入模塊用來輸入1、2、3、4、5、6、7、8、9、0等十個(gè)數(shù)字和一個(gè)"."小數(shù)點(diǎn),并且可以進(jìn)行數(shù)據(jù)正負(fù)的轉(zhuǎn)換。此模塊由十個(gè)數(shù)字按鍵、一個(gè)小數(shù)點(diǎn)按鍵、一個(gè)正負(fù)轉(zhuǎn)換按鍵組成。有一個(gè)bool型的變量來標(biāo)識(shí)小數(shù)點(diǎn)是否已經(jīng)輸入,如果標(biāo)識(shí)為假,則操作的數(shù)據(jù)為整數(shù),如果標(biāo)識(shí)為真,則操作的數(shù)據(jù)為小數(shù)。在同一個(gè)數(shù)據(jù)的輸入中,小數(shù)點(diǎn)標(biāo)識(shí)只在第一次點(diǎn)擊時(shí)有效。每一個(gè)按鍵的操作都由一個(gè)函數(shù)單獨(dú)完成,避免相互影響。每一次數(shù)據(jù)輸入,都會(huì)更新數(shù)據(jù)框的顯示,達(dá)到實(shí)時(shí)性。3、計(jì)算方式選擇模塊。計(jì)算方式選擇用來選擇加、減、乘、除、乘方、開方等六個(gè)操作,每個(gè)計(jì)算方式都有一個(gè)單獨(dú)的按鈕,每個(gè)按鈕都有一個(gè)單獨(dú)的函數(shù)來執(zhí)行。用一個(gè)int類型的變量m_fuhao來標(biāo)識(shí)計(jì)算方式的選擇。執(zhí)行計(jì)算方式選擇以后,把原先數(shù)據(jù)框中顯示的數(shù)據(jù)賦值給第一個(gè)計(jì)算參數(shù)m_canshu1,并且對(duì)于系統(tǒng)標(biāo)識(shí)變量進(jìn)行相應(yīng)的處理。因?yàn)閷?duì)于六個(gè)函數(shù)來說,這些系統(tǒng)標(biāo)識(shí)變量的相應(yīng)處理都是相同的,所以把這些系統(tǒng)標(biāo)識(shí)變量整理為一個(gè)函數(shù)voidCJisuanqiDlg::TagFuc<>,以利于代碼的重復(fù)利用。4、結(jié)果計(jì)算模塊。結(jié)果計(jì)算模塊是點(diǎn)擊了"="按鍵以后,執(zhí)行相應(yīng)的計(jì)算,并且輸出結(jié)果。在其他的模塊已經(jīng)以此執(zhí)行輸入了第一個(gè)操作數(shù)據(jù)、計(jì)算方式、第二個(gè)操作數(shù)據(jù),然后在這里根據(jù)這些數(shù)據(jù)進(jìn)行計(jì)算。如果前面沒有完整的執(zhí)行輸入第一個(gè)操作數(shù)據(jù)、計(jì)算方式、第二個(gè)操作數(shù)據(jù),則此模塊不做任何處理。在這個(gè)模塊中,使用switch語句,分別根據(jù)計(jì)算方式的不同執(zhí)行相應(yīng)的操作,其中乘方和開方的操作需要調(diào)用"math.h"庫函數(shù)文件中的pow<m_canshu1,m_canshu2>和sqrt<m_canshu1>函數(shù)來實(shí)現(xiàn)。執(zhí)行完計(jì)算以后,將結(jié)果顯示在顯示框中,并且對(duì)系統(tǒng)標(biāo)識(shí)變量進(jìn)行一些相應(yīng)的處理。5、菜單模塊。因?yàn)閿?shù)據(jù)顯示框中的數(shù)據(jù)對(duì)于用戶是只讀的,所以當(dāng)用戶在進(jìn)行使用的時(shí)候,不能對(duì)數(shù)據(jù)框中的數(shù)據(jù)進(jìn)行復(fù)制和粘貼等操作。這樣在一定程度上限制了程序使用的方便性。為了解決這個(gè)問題,添加了菜單操作模塊。菜單由兩部分構(gòu)成,第一個(gè)清零、關(guān)閉功能,當(dāng)用戶在輸入數(shù)據(jù)的時(shí)候,如果不小心輸入錯(cuò)誤,可以執(zhí)行清零操作,重新輸入。如果用完計(jì)算器,可以執(zhí)行關(guān)閉操作,關(guān)閉程序的運(yùn)行。第二部分是編輯功能,包括數(shù)據(jù)的復(fù)制和粘貼功能,這樣用戶在使用中可以對(duì)重要的數(shù)據(jù)進(jìn)行復(fù)制,先保存起來,然后再需要的時(shí)候進(jìn)行粘貼,方便了用戶的操作。四、源程序根據(jù)程序模塊的劃分,除顯示模塊只有變量不進(jìn)行任何操作,不需要說明源程序外,下面根據(jù)模塊依次來對(duì)其他模塊的源程序進(jìn)行說明。1、數(shù)據(jù)輸入模塊:voidCJisuanqiDlg::OnButton1<>//Button1是字符1的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere if<m_tag==false>//顯示框中原來的數(shù)據(jù)是否繼續(xù)使用。剛點(diǎn)擊過加減乘除乘方開方或者等于按鍵,則原來的數(shù)據(jù)不繼續(xù)使用 { m_num=0; m_tag=true; } if<m_dian==false>//是否已經(jīng)輸入小數(shù)點(diǎn) { m_num=m_num*10+1;//整數(shù),則把新數(shù)據(jù)加在原來數(shù)據(jù)之后 } else { floatjishu=1; for<inti=0;i<m_dianshu;i++>jishu=jishu/10; m_num=m_num+jishu; m_dianshu=m_dianshu+1;//小數(shù)點(diǎn)后的位數(shù)再加1 } UpdateData<false>;}voidCJisuanqiDlg::OnButton12<>//Button12是小數(shù)點(diǎn)的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere if<m_dian==false> m_dian=true;}voidCJisuanqiDlg::OnButton19<>//Button19是清零的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_num=0; m_dian=false; m_dianshu=1; m_tag=true; UpdateData<false>;}voidCJisuanqiDlg::OnButton11<>//Button11是正負(fù)轉(zhuǎn)換的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_num=0-m_num; UpdateData<false>;}2、計(jì)算方式選擇模塊:voidCJisuanqiDlg::OnButton13<>//Button13是加法的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_fuhao=1; m_canshu1=m_num; TagFuc<>; m_tag=false;}voidCJisuanqiDlg::OnButton14<>//Button14是減法的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_fuhao=2; m_canshu1=m_num; TagFuc<>; m_tag=false;}voidCJisuanqiDlg::OnButton15<>//Button15是乘法的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_fuhao=3; m_canshu1=m_num; TagFuc<>; m_tag=false;}voidCJisuanqiDlg::OnButton16<>//Button16是除法的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_fuhao=4; m_canshu1=m_num; TagFuc<>; m_tag=false;}voidCJisuanqiDlg::OnButton17<>//Button17是乘方的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_fuhao=5; m_canshu1=m_num; TagFuc<>; m_tag=false;}voidCJisuanqiDlg::OnButton18<>//Button18是開方的按鍵{ //TODO:Addyourcontrolnotificationhandlercodehere m_fuhao=6; m_canshu1=m_num; TagFuc<>; m_tag=false;}voidCJisuanqiDlg::TagFuc<>{ //m_num=0; m_dian=false; m_dianshu=1; m_tag=true; UpdateData<false>;}3、結(jié)果計(jì)算模塊voidCJisuanqiDlg::OnButton20<>{ //TODO:Addyourcontrolnotificationhandlercodehere if<m_tag==true>//這個(gè)判斷是為了處理用戶點(diǎn)擊完"=",沒有點(diǎn)擊其他按鍵再點(diǎn)擊"=",這種情況下,不更新第二個(gè)計(jì)算參數(shù)。 { m_canshu2=m_num; } //if<m_tag==true>m_canshu1=m_num; //CStringsTemp; // sTemp.Format<"m_canshu1=%f;m_canshu2=%f\n",m_canshu1,m_canshu2>; // MessageBox<sTemp>; switch<m_fuhao> { case1: m_num=m_canshu1+m_canshu2; UpdateData<false>; break; case2: m_num=m_canshu1-m_canshu2; UpdateData<false>; break; case3: m_num=m_canshu1*m_canshu2; UpdateData<false>; break; case4: m_num=m_canshu1/m_canshu2; UpdateData<false>; break; case5: m_num=pow<m_canshu1,m_canshu2>; UpdateData<false>; break; case6: m_num=sqrt<m_canshu1>;//m_canshu1 UpdateData<false>; break; default: break; } //m_num=0; m_canshu1=m_num; m_tag=false;}4、菜單模塊:voidCJisuanqiDlg::OnMenuitem32773<>//復(fù)制{ //TODO:Addyourcommandhandlercodehere m_baocun=m_num;}voidCJisuanqiDlg::OnMenuitem32774<>//粘貼{ //TODO:Addyourcommandhandlercodehere if<m_baocun!=0>m_num=m_baocun; UpdateData<false>;}voidCJisuanqiDlg::OnMenuitem32771<>//清零{ //TODO:Addyourcommandhandlercodehere OnButton19<>;}voidCJisuanqiDlg::OnMenuitem32772<>//關(guān)閉{ //TODO:Addyourcommandhandlercodehere CDialog::OnCancel<>;}五、操作方法1,輸入第一個(gè)計(jì)算參數(shù),比如:2642、246.78、-578、-2.6;2,點(diǎn)擊選擇計(jì)算方式,比如:加、減、乘、除、乘方、開方;3,輸入第二個(gè)計(jì)算參數(shù)〔注:開方計(jì)算只需要一個(gè)計(jì)算參數(shù),不需要輸入第二個(gè)計(jì)算參數(shù)。;4,點(diǎn)擊"="按鍵,輸入計(jì)算結(jié)果;5,由于程序做過處理,可以實(shí)現(xiàn)連等操作,多次點(diǎn)擊"="按鍵計(jì)算;6,在操作過程中,可以對(duì)操作框進(jìn)行復(fù)制、粘貼等操作。六、實(shí)驗(yàn)結(jié)果1、輸入7865.78,結(jié)果如下圖顯示:2、執(zhí)行34+98,結(jié)果

溫馨提示

  • 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)論