多功能計(jì)算器報(bào)告_第1頁(yè)
多功能計(jì)算器報(bào)告_第2頁(yè)
多功能計(jì)算器報(bào)告_第3頁(yè)
多功能計(jì)算器報(bào)告_第4頁(yè)
多功能計(jì)算器報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、多功能計(jì)算器1軟件綜合設(shè)計(jì)軟件綜合設(shè)計(jì)實(shí)驗(yàn)報(bào)告書(shū)實(shí)驗(yàn)報(bào)告書(shū)項(xiàng)目名稱(chēng): 多功能計(jì)算器 同組人員同組人員 1: 袁偉強(qiáng)袁偉強(qiáng) 學(xué)號(hào)學(xué)號(hào) 1: 2012102073 同組人員同組人員 2: 李浩偉李浩偉 學(xué)號(hào)學(xué)號(hào) 2: 2012102063 同組人員同組人員 3: 張寶張寶 學(xué)號(hào)學(xué)號(hào) 3: 2012102095 報(bào)告撰寫(xiě)日期:2015/4/14多功能計(jì)算器2目錄目錄第第 1 1 章章 可行性研究報(bào)告可行性研究報(bào)告.3 31.1 項(xiàng)目背景.31.2 實(shí)用意義.31.3 技術(shù)方案.3第第 2 2 章章 需求規(guī)格說(shuō)明書(shū)需求規(guī)格說(shuō)明書(shū).4 42.1 軟件功能需求.42.2 運(yùn)行需求.4第第 3 3 章章 軟

2、件概要設(shè)計(jì)軟件概要設(shè)計(jì).5 53.1 任務(wù)概述.53.2 總體設(shè)計(jì).5第第 4 4 章章 詳細(xì)設(shè)計(jì)說(shuō)明書(shū)詳細(xì)設(shè)計(jì)說(shuō)明書(shū).6 64.1 功能說(shuō)明.64.2 設(shè)計(jì)思路.64.3 程序流程圖.74.4 計(jì)算器軟件操作界面.104.5 計(jì)算器重要代碼.104.6 匯率轉(zhuǎn)化界面.11第第 5 5 章章 多功能計(jì)算器代碼及算法多功能計(jì)算器代碼及算法.13135.1 計(jì)算器主要代碼及算法.135.2 匯率轉(zhuǎn)換器主要代碼及算法.18多功能計(jì)算器3第第 1 1 章章 可行性研究報(bào)告可行性研究報(bào)告1.1 項(xiàng)目背景項(xiàng)目背景隨著計(jì)算機(jī)技術(shù)的高速發(fā)展,人們的生活節(jié)奏也變得越來(lái)越快。面對(duì)如此高速的生活節(jié)奏,我們現(xiàn)代人必不

3、可少的應(yīng)用計(jì)算機(jī)來(lái)幫我們解決一些問(wèn)題以提高做事情的效率,其中多功能計(jì)算器就是其中最好的一個(gè)代表。多功能計(jì)算器不僅能幫助人們快速計(jì)算,更能夠保證計(jì)算的正確率,從而幫助人們快速地解決一些使用的問(wèn)題。另一方面隨著國(guó)際化的到來(lái),人們對(duì)外的交流日益增多,這期間必不可少的就會(huì)牽扯到貨幣,所以擁有一個(gè)貨幣轉(zhuǎn)化器是一個(gè)最佳的選擇。多功能計(jì)算器集合了計(jì)算器和貨幣轉(zhuǎn)換器,由此可見(jiàn)它的需求還是很大的。1.2 實(shí)用意義實(shí)用意義計(jì)算器因其高速準(zhǔn)確的特點(diǎn)在人們的生活中得到廣泛的應(yīng)用,但是隨著社會(huì)的發(fā)展,單純的計(jì)算器已經(jīng)不能適應(yīng)人們?nèi)粘I畹男枨?。所以多功能?jì)算器的產(chǎn)生給人們帶來(lái)了更大的便捷,也使傳統(tǒng)計(jì)算器得到了更好的拓展

4、,更能適合現(xiàn)代人的生活方式以及特點(diǎn)。1.3 技術(shù)方案技術(shù)方案多功能計(jì)算器4 本設(shè)計(jì)基于 MFC 進(jìn)行設(shè)計(jì),以 C+語(yǔ)言為設(shè)計(jì)語(yǔ)言,實(shí)現(xiàn)了以下幾大功能:1、傳統(tǒng)計(jì)算功能 2、時(shí)間顯示 3、貨幣匯率轉(zhuǎn)換;第第 2 章章 需求規(guī)格說(shuō)明書(shū)需求規(guī)格說(shuō)明書(shū)2.1 軟件功能需求軟件功能需求1. 多功能計(jì)算器是日常小工具,所以良好的人機(jī)交互應(yīng)該做到2. 要涉及到轉(zhuǎn)換頁(yè)面的操作,所以要學(xué)會(huì)對(duì)頁(yè)面轉(zhuǎn)換3. 因?yàn)樯婕暗揭脤?duì)話框進(jìn)行人機(jī)交互,所以設(shè)計(jì)到對(duì)對(duì)話框的學(xué)習(xí)及使用4. 在計(jì)算器界面有時(shí)間顯示功能,所以要掌握在示例編輯框內(nèi)顯示時(shí)間的操作2.2 運(yùn)行需求運(yùn)行需求軟件需要在 visual studio2010 軟

5、件下進(jìn)行運(yùn)行調(diào)試。多功能計(jì)算器5第第 3 章章 軟件概要設(shè)計(jì)軟件概要設(shè)計(jì)3.1 任務(wù)概述任務(wù)概述本軟件是簡(jiǎn)單計(jì)算器,同時(shí)附帶匯率轉(zhuǎn)換功能以及系統(tǒng)時(shí)間顯示功能。本設(shè)計(jì)按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡(jiǎn)單地進(jìn)行操作。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,匯率轉(zhuǎn)換以及系統(tǒng)時(shí)間。本軟件分為兩個(gè)模塊,下面對(duì)兩模塊進(jìn)行簡(jiǎn)單分析:1:計(jì)算機(jī)模塊能簡(jiǎn)單進(jìn)行加、減、乘、除四種運(yùn)算,同時(shí)還有相應(yīng)的返回與清零功能。同時(shí)在該模塊正上方顯示系統(tǒng)日期時(shí)間。2:匯率轉(zhuǎn)換模塊能將人民幣換算成美元、日元、韓元、英鎊、歐元等各種貨幣。3.2 總體設(shè)計(jì)總體設(shè)計(jì) 基

6、于 MFC 庫(kù)類(lèi)進(jìn)行對(duì)對(duì)話框界面的設(shè)計(jì),通過(guò)創(chuàng)建類(lèi)成員函數(shù)成員變量,編輯控件創(chuàng)建消息映射,調(diào)用消息函數(shù)完成數(shù)據(jù)的輸入輸出,實(shí)現(xiàn)計(jì)算功能和匯率轉(zhuǎn)換功能,生成應(yīng)用軟件。計(jì)算機(jī)模塊總體設(shè)計(jì):?jiǎn)螕舭粹o響應(yīng)函數(shù)功能,選擇操作多功能計(jì)算器6數(shù)進(jìn)行相應(yīng)的運(yùn)算,計(jì)算出結(jié)果并在該模塊中顯示。匯率轉(zhuǎn)換模塊的總體設(shè)計(jì)思路是:輸入人民幣的數(shù)值,單擊按鈕響應(yīng)函數(shù)功能,計(jì)算出相應(yīng)結(jié)果并在匯率模塊中顯示出結(jié)果。第第 4 章章 詳細(xì)設(shè)計(jì)說(shuō)明書(shū)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)4 4.1.1 功能說(shuō)明功能說(shuō)明它的設(shè)計(jì)按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面;必要的交互信息;簡(jiǎn)約美觀的效果。使用人員能快捷簡(jiǎn)單地進(jìn)行操作。即可單機(jī)按鈕進(jìn)行操作,也可直

7、接通過(guò)鍵盤(pán)直接輸入。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。(1)包含的功能有:加、減、乘、除運(yùn)算,匯率轉(zhuǎn)換,時(shí)鐘顯示等功能。(2)計(jì)算器上數(shù)字 09 為一個(gè)控件數(shù)組,加、減、乘、除為一個(gè)控件數(shù)組,其余為單一的控件。(3)給對(duì)話框添加菜單。(4)計(jì)算功能基本上是用系統(tǒng)內(nèi)部函數(shù)。(5)程序可以能自動(dòng)判斷輸入數(shù)據(jù)的正確性,保證不出現(xiàn)多于一個(gè)小數(shù)點(diǎn)、以 0 開(kāi)頭等不正?,F(xiàn)象。(6)“C”按鈕可以清除所有已輸入的數(shù)據(jù)從頭計(jì)算。(7)匯率轉(zhuǎn)換由計(jì)算器界面按鈕控制單獨(dú)條轉(zhuǎn)出頁(yè)面。(8)時(shí)鐘顯示分別在計(jì)算器界面與匯率轉(zhuǎn)換界面顯示,調(diào)用系統(tǒng)時(shí)間。4 4.

8、2.2 設(shè)計(jì)思路設(shè)計(jì)思路如圖是整個(gè)計(jì)算器的流程圖,打開(kāi)計(jì)算器程序,輸入數(shù)據(jù),調(diào)用輸入數(shù)據(jù)子程序。子程序開(kāi)始時(shí)m_dEditNo為零。按下數(shù)字按鈕后,判斷m_dEditNo,對(duì)其進(jìn)行相關(guān)處理,然后在判斷是否有小數(shù)點(diǎn),處理后輸出結(jié)果?;氐娇偭鞒虉D中,輸完第一個(gè)操作數(shù)后,若按下雙目運(yùn)算符,則把m_dEditNo存入oldNumber,按下輸入第二個(gè)操作數(shù)并算出結(jié)果。若按下的是單目運(yùn)算符,則直接對(duì)其處理得出結(jié)果。若按下清零,則m_dEditNo等于0.在運(yùn)算中還要判斷運(yùn)算多功能計(jì)算器7是否合法,以及結(jié)果是否超出顯示范圍,以做出相關(guān)提示,按下清零。算出后把結(jié)果保存至oldNumber。若需用算出的結(jié)果繼

9、續(xù)運(yùn)算則回到輸入完第一個(gè)操作數(shù)后,若不需要?jiǎng)t判斷試否需要開(kāi)始新一輪的運(yùn)算,不需要?jiǎng)t結(jié)束。4.3 程序流程圖程序流程圖NNY鍵入一個(gè)數(shù)是否為正數(shù)?m_dEditNo = m_dEditNo*10 +nm_dEditNo = m_dEditNo*10 -n是否為小數(shù)?用 UpdateData(true)刷新顯示還原m_dEditNo根據(jù)小數(shù)點(diǎn)后位數(shù)將鍵入的數(shù)除以 n 次 10 累加到m_numYN繼續(xù)鍵入數(shù)字?Y編輯框關(guān)聯(lián)變量m_num=0圖 4-1 輸入數(shù)據(jù)子函數(shù)流程圖多功能計(jì)算器8結(jié)束jieN運(yùn)算符編輯框關(guān)聯(lián)的變量保存至oldNumber輸入數(shù)據(jù)子函數(shù)進(jìn)行運(yùn)算輸入數(shù)據(jù)子函數(shù)圖 4-2 簡(jiǎn)單計(jì)算

10、器總流程圖Y開(kāi)始運(yùn)算是否合法把結(jié)果保存到oldNumberm_dEditNo清零彈出對(duì)話框顯示 ERRORNY是否用保存的結(jié)果繼續(xù)進(jìn)行運(yùn)算N是否開(kāi)始新一輪的計(jì)算Y多功能計(jì)算器9結(jié)束jie選擇貨幣種類(lèi)進(jìn)行數(shù)據(jù)轉(zhuǎn)化運(yùn)算判斷運(yùn)算結(jié)果數(shù)據(jù)顯示轉(zhuǎn)換后金額輸入人民幣金額輸入數(shù)據(jù)不對(duì)開(kāi)始Y圖 4-3 簡(jiǎn)單匯率轉(zhuǎn)換流程圖多功能計(jì)算器104.44.4 計(jì)算器軟件測(cè)試界面計(jì)算器軟件測(cè)試界面圖 4-4 計(jì)算器界面上圖為計(jì)算器界面,C 為清零按鈕,CE 為清除剛輸入的數(shù)據(jù),方便輸入數(shù)據(jù)錯(cuò)誤的時(shí)候改數(shù)據(jù)。BackSpace 為數(shù)據(jù)退位按鈕,沒(méi)按一次數(shù)據(jù)縮小為前面的十倍,相當(dāng)于小數(shù)點(diǎn)往后退一位。加減乘除分別對(duì)應(yīng)各自的運(yùn)算

11、符,數(shù)字09 為一個(gè)控件數(shù)組,匯率轉(zhuǎn)換按鈕跳轉(zhuǎn)到匯率轉(zhuǎn)換界面。4.5 計(jì)算器重要代碼計(jì)算器重要代碼圖 4-5 數(shù)據(jù)輸入代碼多功能計(jì)算器11圖 4-6 數(shù)據(jù)計(jì)算代碼4.6 匯率轉(zhuǎn)換界面匯率轉(zhuǎn)換界面圖 4-7 匯率轉(zhuǎn)換界面 上面為匯率轉(zhuǎn)換界面,當(dāng)輸入一定的人民幣金額時(shí),選擇對(duì)應(yīng)的轉(zhuǎn)換金額種類(lèi),下面的示例編輯框就會(huì)顯示出轉(zhuǎn)換出來(lái)的數(shù)據(jù)金額。多功能計(jì)算器12圖 4-8 匯率轉(zhuǎn)換有關(guān)的部分代碼圖 4-9 時(shí)鐘顯示代碼 時(shí)鐘顯示調(diào)用的為系統(tǒng)的時(shí)間。多功能計(jì)算器13第第 5 5 章章 關(guān)鍵代碼及算法關(guān)鍵代碼及算法5.1計(jì)算器主要代碼及算法計(jì)算器主要代碼及算法void CCalculaterDlg:OnPai

12、nt()if (IsIconic()CPaintDC dc(this); / 用?于繪?制?的?設(shè)備?上?下?文?SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使1圖?標(biāo)在工作區(qū)?矩?形?中D居中Dint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1)

13、/ 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 繪?制?圖?標(biāo)dc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/當(dāng)用?戶(hù)拖?動(dòng)最?小?化窗口時(shí)系統(tǒng)3調(diào)用?此?函數(shù)y取?得?光a標(biāo)/顯?示?。HCURSOR CCalculaterDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CCalculaterDlg:OnBnClickedBtn0()OnNoBtn(0);多功能計(jì)算器14void CCalculaterDlg:OnBnClickedBt

14、n1()OnNoBtn(1);void CCalculaterDlg:OnBnClickedBtn2()OnNoBtn(2);void CCalculaterDlg:OnBnClickedBtn3()OnNoBtn(3);void CCalculaterDlg:OnBnClickedBtn4()OnNoBtn(4);void CCalculaterDlg:OnBnClickedBtn5()OnNoBtn(5);void CCalculaterDlg:OnBnClickedBtn6()OnNoBtn(6);void CCalculaterDlg:OnBnClickedBtn7()OnNoBtn(

15、7);void CCalculaterDlg:OnBnClickedBtn8()OnNoBtn(8);void CCalculaterDlg:OnBnClickedBtn9()OnNoBtn(9);多功能計(jì)算器15void CCalculaterDlg:OnNoBtn(int n) /OnNoBtn(int n) 函數(shù)y定義?UpdateData(true);if(flag)m_dEditNo = n;flag = false;elsem_dEditNo = m_dEditNo*10 +n;UpdateData(false);void CCalculaterDlg:OnBnClickedBtn

16、C()UpdateData(true);oldNumber = 0;m_dEditNo = 0;UpdateData(false);void CCalculaterDlg:OnBnClickedBtnCe()UpdateData(true);m_dEditNo = 0;UpdateData(false);void CCalculaterDlg:OnBnClickedBtnBackspace()UpdateData(true);m_dEditNo = m_dEditNo/10;UpdateData(false);void CCalculaterDlg:OnBnClickedBtnAdd()Cal

17、culate();type = ADD;void CCalculaterDlg:OnBnClickedBtnSubtract()多功能計(jì)算器16Calculate();type = SUBTRACT;void CCalculaterDlg:OnBnClickedBtnMultiply()Calculate();type = MULTIPLY;void CCalculaterDlg:OnBnClickedBtnDivide()Calculate();type = DIVIDE;void CCalculaterDlg:OnBnClickedBtnResult()Calculate();type =

18、 NULL;void CCalculaterDlg:Calculate()UpdateData(true);switch(type)case ADD:m_dEditNo += oldNumber;break;case SUBTRACT:m_dEditNo = oldNumber - m_dEditNo;break;case MULTIPLY:m_dEditNo *= oldNumber;break;case DIVIDE: m_dEditNo = oldNumber/m_dEditNo;break;default:break;oldNumber = m_dEditNo;UpdateData(f

19、alse);flag = true;void CCalculaterDlg:OnBnClickedButton2()Chuilv huilv;huilv.DoModal();多功能計(jì)算器17/ TODO: 在此?添加控?件t通知a處|理程序代碼?void CCalculaterDlg:OnEnChangeEditShow()/ TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialog:OnInitDialog()/ funct

20、ion and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code here/void CCalculaterDlg:OnTimeChange()/CDialog:OnTimeChange();/CTime tmSCan = CTime:GetCurrentTime();/m_time = tmSCan.Format(%Y-%m-%d %H:%M:%S);/UpdateData(fal

21、se);/ TODO: 在此?處|添加消?息處|理程序代碼?/void CCalculaterDlg:OnTimer(UINT_PTR nIDEvent)/ TODO: 在此?添加消?息處|理程序代碼?和/或調(diào)用?默?認(rèn)?值CDialog:OnTimer(nIDEvent);/設(shè)置?一?個(gè)?定時(shí)器,?如?果?毀掉?函數(shù)y是?NULL的?話,?就會(huì)每?隔?一?段?時(shí)間?往hWnd標(biāo)至的?窗口發(fā)送WM_TIMER消?息,?而?OnTimer(nIDEvent) /就是?用?來(lái)處|理這a個(gè)?消?息的?函數(shù)yCTime tmSCan = CTime:GetCurrentTime();m_time =

22、tmSCan.Format(%Y-%m-%d %H:%M:%S);/ y表示?年 m表示?月? d表示?日? H表示?時(shí) M表示?分? S表示?秒?UpdateData(false);void CCalculaterDlg:OnEnChangeEdit1()多功能計(jì)算器18/ TODO: 如?果?該?控?件t是? RICHEDIT 控?件t,?它將?不?/ 發(fā)送此?通知a,?除y非?重?寫(xiě) CDialog:OnInitDialog()/ 函數(shù)y并調(diào)用? CRichEditCtrl().SetEventMask(),?/ 同?時(shí)將? ENM_CHANGE 標(biāo)志?“或”運(yùn)?算?到?掩碼?中D。/

23、TODO: 在此?添加控?件t通知a處|理程序代碼?5.2匯率轉(zhuǎn)換器主要代碼及算法匯率轉(zhuǎn)換器主要代碼及算法void Chuilv:OnBnClickedRadio1()UpdateData(true);result = text * 0.1614;UpdateData(false);/ TODO: 在此?添加控?件t通知a處|理程序代碼?void Chuilv:OnBnClickedRadio2()UpdateData(true);result = text * 19.3003;UpdateData(false);/ TODO: 在此?添加控?件t通知a處|理程序代碼?void Chuilv:

24、OnBnClickedRadio3()UpdateData(true);result = text * 177.8710;UpdateData(false);/ TODO: 在此?添加控?件t通知a處|理程序代碼?void Chuilv:OnBnClickedRadio4()UpdateData(true);result = text * 0.1086;UpdateData(false);/ TODO: 在此?添加控?件t通知a處|理程序代碼?多功能計(jì)算器19void Chuilv:OnBnClickedRadio5()UpdateData(true);result = text * 0.14

25、97;UpdateData(false);/ TODO: 在此?添加控?件t通知a處|理程序代碼?void Chuilv:OnBnClickedButton1()OnOK();/ TODO: Add your control notification handler code herevoid Chuilv:OnEnChangeEdit2()/ TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialogEx:OnInitDialog()/ function and cal

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論