多功能計算器報告_第1頁
多功能計算器報告_第2頁
多功能計算器報告_第3頁
多功能計算器報告_第4頁
多功能計算器報告_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

多功能計算器《軟件綜合設(shè)計》實驗報告書項目名稱:多功能計算器同組人員1:袁偉強學(xué)號1:2012102073同組人員2:李浩偉學(xué)號2:2012102063同組人員3:張寶學(xué)號3:2012102095報告撰寫日期:2015/4/14

目錄第1章可行性研究報告 31.1項目背景 31.2實用意義 31.3技術(shù)方案 3第2章需求規(guī)格說明書 42.1軟件功能需求 42.2運行需求 4第3章軟件概要設(shè)計 53.1任務(wù)概述 53.2總體設(shè)計 5第4章詳細設(shè)計說明書 64.1功能說明 64.2設(shè)計思路 64.3程序流程圖 74.4計算器軟件操作界面 104.5計算器重要代碼 104.6匯率轉(zhuǎn)化界面 11第5章多功能計算器代碼及算法 135.1計算器主要代碼及算法 135.2匯率轉(zhuǎn)換器主要代碼及算法 18第1章可行性研究報告1.1項目背景隨著計算機技術(shù)的高速發(fā)展,人們的生活節(jié)奏也變得越來越快。面對如此高速的生活節(jié)奏,我們現(xiàn)代人必不可少的應(yīng)用計算機來幫我們解決一些問題以提高做事情的效率,其中多功能計算器就是其中最好的一個代表。多功能計算器不僅能幫助人們快速計算,更能夠保證計算的正確率,從而幫助人們快速地解決一些使用的問題。另一方面隨著國際化的到來,人們對外的交流日益增多,這期間必不可少的就會牽扯到貨幣,所以擁有一個貨幣轉(zhuǎn)化器是一個最佳的選擇。多功能計算器集合了計算器和貨幣轉(zhuǎn)換器,由此可見它的需求還是很大的。1.2實用意義計算器因其高速準(zhǔn)確的特點在人們的生活中得到廣泛的應(yīng)用,但是隨著社會的發(fā)展,單純的計算器已經(jīng)不能適應(yīng)人們?nèi)粘I畹男枨?。所以多功能計算器的產(chǎn)生給人們帶來了更大的便捷,也使傳統(tǒng)計算器得到了更好的拓展,更能適合現(xiàn)代人的生活方式以及特點。1.3技術(shù)方案本設(shè)計基于MFC進行設(shè)計,以C++語言為設(shè)計語言,實現(xiàn)了以下幾大功能:1、傳統(tǒng)計算功能2、時間顯示3、貨幣匯率轉(zhuǎn)換;需求規(guī)格說明書軟件功能需求多功能計算器是日常小工具,所以良好的人機交互應(yīng)該做到要涉及到轉(zhuǎn)換頁面的操作,所以要學(xué)會對頁面轉(zhuǎn)換因為涉及到要用對話框進行人機交互,所以設(shè)計到對對話框的學(xué)習(xí)及使用在計算器界面有時間顯示功能,所以要掌握在示例編輯框內(nèi)顯示時間的操作2.2運行需求軟件需要在visualstudio2010軟件下進行運行調(diào)試。軟件概要設(shè)計任務(wù)概述本軟件是簡單計算器,同時附帶匯率轉(zhuǎn)換功能以及系統(tǒng)時間顯示功能。本設(shè)計按軟件工程的方法進行,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡單地進行操作。即時準(zhǔn)確地獲得需要的計算的結(jié)果,匯率轉(zhuǎn)換以及系統(tǒng)時間。本軟件分為兩個模塊,下面對兩模塊進行簡單分析:1:計算機模塊能簡單進行加、減、乘、除四種運算,同時還有相應(yīng)的返回與清零功能。同時在該模塊正上方顯示系統(tǒng)日期時間。2:匯率轉(zhuǎn)換模塊能將人民幣換算成美元、日元、韓元、英鎊、歐元等各種貨幣。3.2總體設(shè)計

基于MFC庫類進行對對話框界面的設(shè)計,通過創(chuàng)建類成員函數(shù)成員變量,編輯控件創(chuàng)建消息映射,調(diào)用消息函數(shù)完成數(shù)據(jù)的輸入輸出,實現(xiàn)計算功能和匯率轉(zhuǎn)換功能,生成應(yīng)用軟件。計算機模塊總體設(shè)計:單擊按鈕響應(yīng)函數(shù)功能,選擇操作數(shù)進行相應(yīng)的運算,計算出結(jié)果并在該模塊中顯示。匯率轉(zhuǎn)換模塊的總體設(shè)計思路是:輸入人民幣的數(shù)值,單擊按鈕響應(yīng)函數(shù)功能,計算出相應(yīng)結(jié)果并在匯率模塊中顯示出結(jié)果。詳細設(shè)計說明書4.1功能說明它的設(shè)計按軟件工程的方法進行,系統(tǒng)具有良好的界面;必要的交互信息;簡約美觀的效果。使用人員能快捷簡單地進行操作。即可單機按鈕進行操作,也可直接通過鍵盤直接輸入。即時準(zhǔn)確地獲得需要的計算的結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助。(1)包含的功能有:加、減、乘、除運算,匯率轉(zhuǎn)換,時鐘顯示等功能。(2)計算器上數(shù)字0—9為一個控件數(shù)組,加、減、乘、除為一個控件數(shù)組,其余為單一的控件。(3)給對話框添加菜單。(4)計算功能基本上是用系統(tǒng)內(nèi)部函數(shù)。(5)程序可以能自動判斷輸入數(shù)據(jù)的正確性,保證不出現(xiàn)多于一個小數(shù)點、以0開頭等不正常現(xiàn)象。(6)“C”按鈕可以清除所有已輸入的數(shù)據(jù)從頭計算。(7)匯率轉(zhuǎn)換由計算器界面按鈕控制單獨條轉(zhuǎn)出頁面。(8)時鐘顯示分別在計算器界面與匯率轉(zhuǎn)換界面顯示,調(diào)用系統(tǒng)時間。4.2設(shè)計思路如圖是整個計算器的流程圖,打開計算器程序,輸入數(shù)據(jù),調(diào)用輸入數(shù)據(jù)子程序。子程序開始時m_dEditNo為零。按下數(shù)字按鈕后,判斷m_dEditNo,對其進行相關(guān)處理,然后在判斷是否有小數(shù)點,處理后輸出結(jié)果?;氐娇偭鞒虉D中,輸完第一個操作數(shù)后,若按下雙目運算符,則把m_dEditNo存入oldNumber,按下輸入第二個操作數(shù)并算出結(jié)果。若按下的是單目運算符,則直接對其處理得出結(jié)果。若按下清零,則m_dEditNo等于0.在運算中還要判斷運算是否合法,以及結(jié)果是否超出顯示范圍,以做出相關(guān)提示,按下清零。算出后把結(jié)果保存至oldNumber。若需用算出的結(jié)果繼續(xù)運算則回到輸入完第一個操作數(shù)后,若不需要則判斷試否需要開始新一輪的運算,不需要則結(jié)束。4.3程序流程圖NNNY鍵入一個數(shù)是否為正數(shù)?m_dEditNo=m_dEditNo*10+nm_dEditNo=m_dEditNo*10-n是否為小數(shù)?用UpdateData(true)刷新顯示還原m_dEditNo根據(jù)小數(shù)點后位數(shù)將鍵入的數(shù)除以n次10累加到m_numYN繼續(xù)鍵入數(shù)字?Y編輯框關(guān)聯(lián)變量m_num=0圖4-1輸入數(shù)據(jù)子函數(shù)流程圖m_dEditNo清零開始運算是否合法把結(jié)果保存到oldNumber彈出對話框顯示ERRORNY是否用保存的結(jié)果繼續(xù)進行運算N是否開始新一輪的計算YY結(jié)束jieN運算符編輯框關(guān)聯(lián)的變量保存至oldNumber輸入數(shù)據(jù)子函數(shù)進行運算輸入數(shù)據(jù)子函數(shù)m_dEditNo清零開始運算是否合法把結(jié)果保存到oldNumber彈出對話框顯示ERRORNY是否用保存的結(jié)果繼續(xù)進行運算N是否開始新一輪的計算YY結(jié)束jieN運算符編輯框關(guān)聯(lián)的變量保存至oldNumber輸入數(shù)據(jù)子函數(shù)進行運算輸入數(shù)據(jù)子函數(shù)圖4-2簡單計算器總流程圖結(jié)束jie結(jié)束jie選擇貨幣種類進行數(shù)據(jù)轉(zhuǎn)化運算判斷運算結(jié)果數(shù)據(jù)顯示轉(zhuǎn)換后金額輸入人民幣金額輸入數(shù)據(jù)不對開始Y圖4-3簡單匯率轉(zhuǎn)換流程圖計算器軟件測試界面圖4-4計算器界面上圖為計算器界面,C為清零按鈕,CE為清除剛輸入的數(shù)據(jù),方便輸入數(shù)據(jù)錯誤的時候改數(shù)據(jù)。BackSpace為數(shù)據(jù)退位按鈕,沒按一次數(shù)據(jù)縮小為前面的十倍,相當(dāng)于小數(shù)點往后退一位。加減乘除分別對應(yīng)各自的運算符,數(shù)字0—9為一個控件數(shù)組,匯率轉(zhuǎn)換按鈕跳轉(zhuǎn)到匯率轉(zhuǎn)換界面。4.5計算器重要代碼圖4-5數(shù)據(jù)輸入代碼圖4-6數(shù)據(jù)計算代碼4.6匯率轉(zhuǎn)換界面圖4-7匯率轉(zhuǎn)換界面上面為匯率轉(zhuǎn)換界面,當(dāng)輸入一定的人民幣金額時,選擇對應(yīng)的轉(zhuǎn)換金額種類,下面的示例編輯框就會顯示出轉(zhuǎn)換出來的數(shù)據(jù)金額。圖4-8匯率轉(zhuǎn)換有關(guān)的部分代碼圖4-9時鐘顯示代碼時鐘顯示調(diào)用的為系統(tǒng)的時間。第5章關(guān)鍵代碼及算法5.1計算器主要代碼及算法voidCCalculaterDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//用??于?¨2繪?制?的ì?設(shè)|¨¨備à?上|?下?文? SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0); //使o1圖a?標(biāo)à¨o在¨2工?è作á??區(qū)?矩?形?中D居¨?中D intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; //繪?制?圖a?標(biāo)à¨o dc.DrawIcon(x,y,m_hIcon); } else { CDialog::OnPaint(); }}//當(dāng)ì?à用??戶?ì拖a?動?¥最á?小?化?¥窗???口¨2時o?à系|ì統(tǒng)a3調(diào)ì??用??此??函?¥數(shù)oy取¨?得ì?光a標(biāo)à¨o//顯?示o?。?êHCURSORCCalculaterDlg::OnQueryDragIcon(){ returnstatic_cast<HCURSOR>(m_hIcon);}voidCCalculaterDlg::OnBnClickedBtn0(){ OnNoBtn(0);}voidCCalculaterDlg::OnBnClickedBtn1(){ OnNoBtn(1);}voidCCalculaterDlg::OnBnClickedBtn2(){ OnNoBtn(2);}voidCCalculaterDlg::OnBnClickedBtn3(){ OnNoBtn(3);}voidCCalculaterDlg::OnBnClickedBtn4(){ OnNoBtn(4);}voidCCalculaterDlg::OnBnClickedBtn5(){ OnNoBtn(5);}voidCCalculaterDlg::OnBnClickedBtn6(){ OnNoBtn(6);}voidCCalculaterDlg::OnBnClickedBtn7(){ OnNoBtn(7);}voidCCalculaterDlg::OnBnClickedBtn8(){ OnNoBtn(8);}voidCCalculaterDlg::OnBnClickedBtn9(){ OnNoBtn(9);}voidCCalculaterDlg::OnNoBtn(intn)//OnNoBtn(intn)函?¥數(shù)oy定?§義°?{ UpdateData(true); if(flag){ m_dEditNo=n; flag=false; } else m_dEditNo=m_dEditNo*10+n; UpdateData(false);}voidCCalculaterDlg::OnBnClickedBtnC(){ UpdateData(true); oldNumber=0; m_dEditNo=0; UpdateData(false);}voidCCalculaterDlg::OnBnClickedBtnCe(){ UpdateData(true); m_dEditNo=0; UpdateData(false);}voidCCalculaterDlg::OnBnClickedBtnBackspace(){ UpdateData(true); m_dEditNo=m_dEditNo/10; UpdateData(false);}voidCCalculaterDlg::OnBnClickedBtnAdd(){ Calculate(); type=ADD;}voidCCalculaterDlg::OnBnClickedBtnSubtract(){ Calculate(); type=SUBTRACT;}voidCCalculaterDlg::OnBnClickedBtnMultiply(){ Calculate(); type=MULTIPLY;}voidCCalculaterDlg::OnBnClickedBtnDivide(){ Calculate(); type=DIVIDE;}voidCCalculaterDlg::OnBnClickedBtnResult(){ Calculate(); type=NULL;}voidCCalculaterDlg::Calculate(){ UpdateData(true); switch(type){ caseADD: m_dEditNo+=oldNumber;break; caseSUBTRACT: m_dEditNo=oldNumber-m_dEditNo;break; caseMULTIPLY: m_dEditNo*=oldNumber;break; caseDIVIDE: m_dEditNo=oldNumber/m_dEditNo;break; default:break; } oldNumber=m_dEditNo; UpdateData(false); flag=true;}voidCCalculaterDlg::OnBnClickedButton2(){ Chuilvhuilv; huilv.DoModal(); //TODO:在¨2此??添?¨a加¨?控?件t通a?§知a處?|理¤¨a程¨?序¨°代?¨2碼?}voidCCalculaterDlg::OnEnChangeEditShow(){ //TODO:IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCDialog::OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask() //withtheENM_CHANGEflagORedintothemask. //TODO:Addyourcontrolnotificationhandlercodehere}//voidCCalculaterDlg::OnTimeChange()//{// CDialog::OnTimeChange();//// CTimetmSCan=CTime::GetCurrentTime();// m_time=tmSCan.Format("'%Y-%m-%d%H:%M:%S'");;// UpdateData(false);// //TODO:在¨2此??處?|添?¨a加¨?消?息?é處?|理¤¨a程¨?序¨°代?¨2碼?//}voidCCalculaterDlg::OnTimer(UINT_PTRnIDEvent){ //TODO:在¨2此??添?¨a加¨?消?息?é處?|理¤¨a程¨?序¨°代?¨2碼?和¨a/或¨°調(diào)ì??用??默?認(rèn)¨?值|ì CDialog::OnTimer(nIDEvent);//設(shè)|¨¨置?一°?個?定?§時o?à器??,ê?如¨?果?毀¨′掉ì?函?¥數(shù)oy是o?NULL的ì?話??,ê?就¨a會¨¢每?隔?一°?段?時o?à間?往a¨′hWnd標(biāo)à¨o至¨¢的ì?窗???口¨2發(fā)¤?é送¨aWM_TIMER消?息?é,ê?而?OnTimer(nIDEvent)//就¨a是o?用??來¤??處?|理¤¨a這a個?消?息?é的ì?函?¥數(shù)oy CTimetmSCan=CTime::GetCurrentTime(); m_time=tmSCan.Format("%Y-%m-%d%H:%M:%S");//y表à¨a示o?年¨om表à¨a示o?月?d表à¨a示o?日¨?H表à¨a示o?時o?àM表à¨a示o?分¤?S表à¨a示o?秒? UpdateData(false);}voidCCalculaterDlg::OnEnChangeEdit1(){ //TODO:如¨?果?該?控?件t是o?RICHEDIT控?件t,ê?它¨1將?不? //發(fā)¤?é送¨a此??通a?§知a,ê?除y非¤?重?寫??CDialog::OnInitDialog() //函?¥數(shù)oy并?é調(diào)ì??用??CRichEditCtrl().SetEventMask(),ê? //同a?時o?à將?ENM_CHANGE標(biāo)à¨o志?“??或¨°”?à運?算?到ì?掩¨2碼?中D。?ê //TODO:在¨2此??添?¨a加¨?控?件t通a?§知a處?|理¤¨a程¨?序¨°代?¨2碼?}5.2匯率轉(zhuǎn)換器主要代碼及算法voidChuilv::OnBnClickedRadio1(){ UpdateData(true); result=text*0.1614; UpdateData(false); //TODO:在¨2此??添?¨a加¨?控?件t通a?§知a處?|理¤¨a程¨?序¨°代?¨2碼?}voidChuilv::OnBnClickedRadio2(){ UpdateData(true); result=text*19.3003; UpdateData(false); //TODO:在¨2此??添?¨a加¨?控?件t通a?§知a處?|理¤¨a程¨?序¨°代?¨2碼?}voidChuilv::OnBnClickedRadio3(){ UpdateData(true); result=text*177.8710; UpdateData(false); //TODO:在¨2此??添?¨a加¨?控?件t通a?§知a處?|理¤¨a程¨?序¨°代?¨2碼?}voidChuilv::OnBnClickedRadio4(){ UpdateData(true); result=text*0.1086; UpdateData(false); //TODO:在¨2此??添?¨a加¨?控?件t通a?§知a處?|理¤¨a程¨?序¨°代?¨2碼?}voidChuilv::OnBnClickedRadio5(){ UpdateData(true); result=text*0.1497; UpdateData(false); //TODO:在¨2此??添?¨a加¨?控?件t通a?§知a處?|理¤¨a程¨?序¨°代?¨2碼?}voidChuilv::OnBnClickedButton1(){ OnOK(); //TODO:Addyourcontrolnotificationhandlercodehere}voidChuilv::OnEnChangeEdit2(){ //TODO:IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCDialogEx::OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論