VC課程設(shè)計(jì)-簡單計(jì)算器系統(tǒng)_第1頁
VC課程設(shè)計(jì)-簡單計(jì)算器系統(tǒng)_第2頁
VC課程設(shè)計(jì)-簡單計(jì)算器系統(tǒng)_第3頁
VC課程設(shè)計(jì)-簡單計(jì)算器系統(tǒng)_第4頁
VC課程設(shè)計(jì)-簡單計(jì)算器系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

一、設(shè)計(jì)任務(wù)與要求TOC\o"1-5"\h\z\o"CurrentDocument".設(shè)計(jì)任務(wù) 2\o"CurrentDocument".實(shí)驗(yàn)要求 2\o"CurrentDocument"二、需求分析 2\o"CurrentDocument".功能需求 2\o"CurrentDocument".運(yùn)行需求 3\o"CurrentDocument"三、系統(tǒng)設(shè)計(jì) 3\o"CurrentDocument".總體方案設(shè)計(jì) 3\o"CurrentDocument".詳細(xì)設(shè)計(jì) 4\o"CurrentDocument"四、運(yùn)行結(jié)果和測試 8.運(yùn)行界面及其效果圖 8.對在編程與調(diào)試中的問題 錯(cuò)誤!未定義書簽。\o"CurrentDocument"五、課程設(shè)計(jì)總結(jié)與體會 91.軟件設(shè)計(jì)方案評價(jià)一、設(shè)計(jì)任務(wù)與要求.設(shè)計(jì)任務(wù)系統(tǒng)地學(xué)習(xí)面向?qū)ο缶幊趟枷?,了解MFC架構(gòu),逐步熟悉可視化編程環(huán)境VisualC++,并在此環(huán)境下設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡單計(jì)算器系統(tǒng),該計(jì)算器應(yīng)能實(shí)現(xiàn)如下功能:1)、二進(jìn)制、八進(jìn)制、十進(jìn)制及十六進(jìn)制數(shù)的加、減、乘、除、乘方、取模等簡單計(jì)算2)、科學(xué)計(jì)算函數(shù),包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、指數(shù)等函數(shù)運(yùn)算3)、以角度、弧度兩種方式實(shí)現(xiàn)上述部分函數(shù)4)、具備歷史計(jì)算的記憶功能5)、對不正確的表達(dá)式能指出其錯(cuò)誤原因.實(shí)現(xiàn)要求1)、能獨(dú)立搭建可視化程序編程環(huán)境,掌握VisualC++6的安裝、運(yùn)行和使用。2)、總體要求:用面向?qū)ο缶幊痰乃枷肱c方法,實(shí)現(xiàn)一個(gè)簡單計(jì)算器的分析與設(shè)計(jì)階段的開發(fā)工作,開發(fā)工具使用VisualC++6。3)、具體要求:本系統(tǒng)為簡單計(jì)算器程序開發(fā),實(shí)現(xiàn)基本的算術(shù)運(yùn)算以及科學(xué)計(jì)算,具備計(jì)算歷史的查詢功能,并能檢查算術(shù)表達(dá)式中的錯(cuò)誤,分別以二進(jìn)制、十進(jìn)制等數(shù)制的計(jì)算。4)、編寫設(shè)計(jì)方案,設(shè)計(jì)過程,源程序文件結(jié)構(gòu),分析設(shè)計(jì)方案,并做出總結(jié)。二、需求分析1.功能需求1)、二進(jìn)制、八進(jìn)制、十進(jìn)制及十六進(jìn)制數(shù)的加、減、乘、除、乘方、取模簡單計(jì)算2)、實(shí)現(xiàn)進(jìn)制間浮點(diǎn)數(shù)的轉(zhuǎn)換3)、科學(xué)計(jì)算函數(shù),包括正弦、余弦、正切、余切、開方、指數(shù)的函數(shù)運(yùn)算4)、以角度、弧度兩種方式實(shí)現(xiàn)正弦、余弦、正切、余切函數(shù)5)、具備歷史計(jì)算的記憶功能6)、對不正確的表達(dá)式能指出其錯(cuò)誤原因2.運(yùn)行需求1)界面友好2)方便用戶:輸入方便(可以鍵盤直接輸入)、常用功能鍵(如Backspace,可減少用戶輸入出錯(cuò)后重新輸入量)、出錯(cuò)提示。三、系統(tǒng)設(shè)計(jì).總體方案設(shè)計(jì)1)功能框架如下:可處理二、八、十、十六進(jìn)制2)主要功能原理:①正弦、余弦、正切、余切函數(shù):制度的選擇,程序運(yùn)行默認(rèn)制度選中角度,當(dāng)選項(xiàng)中“角度”按鈕時(shí),則需將其轉(zhuǎn)換為角度計(jì)算,由公式:弧度=PI*角度/180,可將表達(dá)式中角度轉(zhuǎn)換為弧度既s[ll-1]=PI*s[ll-1]/180。對于反、正余弦和反正余切,由于C++math.h庫函數(shù)提供的計(jì)算結(jié)果是弧度的,所以當(dāng)選中默認(rèn)的“弧度”按鈕時(shí)可不必將計(jì)算結(jié)果轉(zhuǎn)換,當(dāng)選中“角度”按鈕時(shí),則由公式:角度二弧度*180/PI,既可計(jì)算出來。②實(shí)現(xiàn)進(jìn)制間浮點(diǎn)數(shù)的轉(zhuǎn)換對不同進(jìn)制的輸入,將其轉(zhuǎn)換為十進(jìn)制數(shù)后出入,顯示時(shí)轉(zhuǎn)換為所選擇的進(jìn)行輸出。所以進(jìn)制間的轉(zhuǎn)換輸出,其實(shí)只是將已存的那個(gè)十進(jìn)制數(shù)轉(zhuǎn)換為其他進(jìn)制輸出。③歷史計(jì)算的記憶功能對(和),使用一個(gè)運(yùn)算符棧和一個(gè)操作數(shù)棧存儲。按(時(shí),進(jìn)棧保存;按)時(shí),出棧運(yùn)算。對MC、MR、MS、M+,使用一個(gè)浮點(diǎn)數(shù)存儲中間值,MC為將其清零,MR為讀取其值,MS為保存、M+為在原有值的基礎(chǔ)上加當(dāng)前值。

.詳細(xì)設(shè)計(jì)1)進(jìn)行開始編程前的數(shù)據(jù)結(jié)構(gòu)分析:〃進(jìn)制基數(shù)〃進(jìn)制基數(shù)〃存儲當(dāng)前輸入的操作數(shù)〃存儲當(dāng)前的計(jì)算處理結(jié)果〃表示當(dāng)前輸入是否是小數(shù)〃小數(shù)輸入是的系數(shù)〃當(dāng)前運(yùn)算符doublem_mem;boolm_IsHudu;voidinit();CRectrectSmall;CRectrectLarge;doublebase;doublem_operand;doublem_accum;boolm_bCoff;doublem_coff;Operatorm_operator;〃中間值〃弧度、角度判斷CalcErrorm_errorState;〃當(dāng)前運(yùn)算狀態(tài)boolm_bOperandAvail;〃表示當(dāng)前是否是新輸入數(shù)字2)界面設(shè)計(jì),將要實(shí)現(xiàn)的按鍵添加入:3)添加按鍵函數(shù):voidCCalculatorDlg::OnAdd() //力口voidCCalculatorDlg::OnAddMi() //+/-

voidCCalculatorDlg::OnBackspace()voidCCalculatorDlg::OnClear()voidCCalculatorDlg::OnClearE()voidCCalculatorDlg::OnDivid()voidCCalculatorDlg::OnEqual()voidCCalculatorDlg::OnMimus()voidCCalculatorDlg::OnMod()voidCCalculatorDlg::OnMultiply()voidCCalculatorDlg::OnPoint()voidCCalculatorDlg::OnX2()voidCCalculatorDlg::OnSin()voidCCalculatorDlg::OnTan()voidCCalculatorDlg::OnMs()voidCCalculatorDlg::OnMr()voidCCalculatorDlg::OnMc()voidCCalculatorDlg::OnMadd()voidCCalculatorDlg::OnLog()voidCCalculatorDlg::OnLn()voidCCalculatorDlg::OnCot()voidCCalculatorDlg::OnCos()voidCCalculatorDlg::OnSqrt()//Backspace//清除//Backspace//清除//清除當(dāng)前//除//等于//減//取模//乘//小數(shù)點(diǎn)//平方//sin函數(shù)//tan函數(shù)〃覆蓋記憶〃讀記憶〃清零記憶〃增加記憶//log函數(shù)//ln函數(shù)//cot函數(shù)//cos函數(shù)〃開方//X的Y次方等等…4)完善功能:增加如下函數(shù)實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換:charchange(inta) 〃將整數(shù)轉(zhuǎn)換為字符{if(a<10)return'0'+a;else//將//將double(根據(jù)基數(shù)base)轉(zhuǎn)換CStringToCString(intbase,doublem_operand)為CString(CStringtemp="",temp2;if(m_operand==0)return"0";—int64operand=(—int64)m_operand;m_operand=m_operand-operand;〃整數(shù)部分while(operand){temp2.Format("%c",change((int)(operand%base)));temp=temp2+temp;operand/=base;)temp=temp+".";〃小數(shù)部分while(m_operand>10e-10){m_operand*=base;operand=(—int64)m_operand;temp2.Format("%c",change((int)operand));temp=temp+temp2;m_operand=m_operand-operand;)returntemp;)doublechange2(chara) 〃將字符轉(zhuǎn)換為浮點(diǎn)數(shù){if(a>='0'&&a<='9')return(double)(a-'0');elsereturn(double)(a-'A');)doubleToDouble(doublebase,CStringstr,int&k) //將CString(根據(jù)基數(shù)base)轉(zhuǎn)換為double//k為標(biāo)志是否刪除了小數(shù)點(diǎn)(doublenum=0.0;doubletemp=1.0/base;intlen=str.GetLength(),i=0;k=0;〃整數(shù)部分while(i<len){if(str.GetAt(i)=='.')break;num=num*base+change2(str.GetAt(i));i++;)i++;if(i>=len)k=1;〃小數(shù)部分while(i<len){num=num+change2(str.GetAt(i))*temp;temp*=1.0/base;i++;)returnnum;)加入出錯(cuò)處理:if(m_errorState!=ErrNone){if(m_errorState==ErrDivideByZero)m_Edit="除數(shù)不能為零”;elseif(m_errorState==ErrModFloat)m_Edit="浮點(diǎn)數(shù)不能取mod";elseif(m_errorState==ErrTanMax)m_Edit="tan為無窮大”;elseif(m_errorState==ErrCotMin)m_Edit="cot為無窮大”;elseif(m_errorState==ErrLogSign)m_Edit="不可以對負(fù)數(shù)取對數(shù)";)5)增加方便用戶功能:加入加速鍵:

IDKeyITypeIDC_MULT*ASCIIIDC_ADD+ASCIIIDC_MIMUSASCIIIDC_POINTASCIIIDC_DIVID/ASCIIIDC_O0ASCIIIDC_11ASCIIIDC_22ASCIIIDC_33ASCIIIDC_44ASCIIIDC_55ASCIIIDC_66ASCIIIDC_77ASCIIIDC_88ASCIIIDC_99ASCIIIDC_AAASCIIIDC_BBASCIIIDC_CCCASCIIIDC_DDASCIIIDC_EEVIRTKEYIDC_BACKSPACEVK_BACKVIRTKEYIDC_CCtrl+VK_BACKVIRTKEYIDCEQUALVKRETUR

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論