版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、VC+課程設(shè)計報告簡單科學(xué)計算器設(shè)計姓 名 : 學(xué) 號 : 學(xué) 院 : 電氣工程學(xué)院 班 級 : 日 期 : 2009-12-27 目 錄一、設(shè)計任務(wù)11、選題意義12、設(shè)計目標(biāo)1二、程序設(shè)計與實現(xiàn)11、程序結(jié)構(gòu)12、設(shè)計步驟33、詳細(xì)設(shè)計41、計算器界面42、主要代碼43、函數(shù)功能說明16三、設(shè)計難點與解決方法17四、設(shè)計效果與缺乏之處181、程序效果圖182、缺乏之處18五、學(xué)習(xí)體會18一、 設(shè)計任務(wù)1. 選題意義此題選擇意義在于引導(dǎo)學(xué)生學(xué)會設(shè)計簡單的科學(xué)計算器,進一步掌握Visual C+應(yīng)用程序。統(tǒng)地學(xué)習(xí)面向?qū)ο缶幊趟枷?,了解MFC架構(gòu),逐步熟悉可視化編程環(huán)境Visual C+,并在此
2、環(huán)境下設(shè)計并實現(xiàn)一個簡單計算器系統(tǒng)。該計算器應(yīng)能實現(xiàn)如下功能: 1)、二進制、八進制、十進制及十六進制數(shù)的加、減、乘、除、乘方等簡單計算 2)、科學(xué)計算函數(shù),包括正弦、余弦、正切、余切、開方、對數(shù)、指數(shù)等函數(shù)運算 3)、具備歷史計算的記憶功能。2. 設(shè)計目標(biāo)使計算器含有以下功能:1、根本運算功能:可以進行加、減、乘、除等根本運算。2、數(shù)制轉(zhuǎn)換功能:可以一次完成二進制轉(zhuǎn)十進制、十進制轉(zhuǎn)二進制、八進制轉(zhuǎn)二進制等運算。3、三角函數(shù)運算功能:可以一次完成三角函數(shù)之間的計算,求正弦函數(shù)sin、余弦函數(shù)cos、正切函數(shù)tan、余切函數(shù)cot等函數(shù)的值。4、對數(shù)、指數(shù)運算功能:可以一次求的對數(shù)函數(shù)log、l
3、n、指數(shù)函數(shù)exp等函數(shù)的運算。5、刪除功能:可以在輸入錯誤時刪除已輸入的數(shù)值。6、歸零功能:可以在計算完成后清空編輯框中的已有數(shù)值。二、 程序設(shè)計與實現(xiàn)1. 程序結(jié)構(gòu) 本計算器首先是通過在計算器的界面上按下相應(yīng)的按鈕,來進行根本的加,減,乘,除等根本運算,計算器還能夠進行平方運算,求平方根運算,乘方運算,三角函數(shù)運算(包括正弦函數(shù)(sin)、余弦函數(shù)(cos)、正切函數(shù)(tan)、余切函數(shù)(cot),對數(shù)函數(shù)(ln、log),指數(shù)函數(shù)(exp),冪函數(shù)(x)和進制轉(zhuǎn)換(包括二進制轉(zhuǎn)十進制、十進制轉(zhuǎn)二進制和八進制轉(zhuǎn)二進制)等運算。 以下是本計算器的運算流程圖:結(jié)束開始加法運算輸入數(shù)據(jù)進制轉(zhuǎn)換乘
4、方運算正切運算余弦運算正弦運算除法運算乘法運算減法運算歸零功能平方運算根式運算輸出結(jié)果輸入數(shù)據(jù)指數(shù)運算對數(shù)運算二進制轉(zhuǎn)十進制N-S流程圖:int len;double sum=0.0,num;len=strlen(m_xs);int i=0;i<len;num=(m_xsi-48);num=num*pow(2,len-i-1);sum+=num;i+;m_xs.Format("%f",sum);UpdateData(false);十進制轉(zhuǎn)二進制N-S流程圖:int n,i,t;double Y,p=0.0;Y=strtod( m_xs,NULL);t=(int)(Y)
5、;t!=1是否i=1;當(dāng)t>1;n=t%2;t=t/2;p+=n*pow(10,(i-1);p+=1*pow(10,(i-1);m_xs.Format("%f",p);UpdateData(false);2. 設(shè)計步驟:(1) 創(chuàng)立一個基于對話框的應(yīng)用程序。(2) 利用資源編輯器編輯對話框資源,及設(shè)計計算器界面并修改對話框各按鈕的ID屬性和Caption屬性。(3) 利用ClassWizard為各按鈕添加消息映射代碼在下面詳細(xì)介紹。(4) 設(shè)置對話框文本背景顏色。(5) 編輯圖標(biāo)。3. 詳細(xì)介紹:1計算器界面:2主要代碼:void CGyDlg:On0() /輸入相應(yīng)
6、的數(shù)據(jù),這為輸入數(shù)據(jù)0 s2=s2+"0" m_xs=m_xs+"0" UpdateData(FALSE); void CGyDlg:On1() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)1 s2=s2+"1" m_xs=m_xs+"1" UpdateData(FALSE);void CGyDlg:On2() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)2 s2=s2+"2" m_xs=m_xs+"2" UpdateData(FALSE);void CGyDlg:On3() /輸入相應(yīng)的數(shù)據(jù),這為輸入
7、數(shù)據(jù)3 s2=s2+"3" m_xs=m_xs+"3"UpdateData(FALSE);void CGyDlg:On4() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)4 s2=s2+"4" m_xs=m_xs+"4" UpdateData(FALSE);void CGyDlg:On5() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)5 s2=s2+"5" m_xs=m_xs+"5" UpdateData(FALSE);void CGyDlg:On6() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)6 s2=s2+
8、"6" m_xs=m_xs+"6"UpdateData(FALSE);void CGyDlg:On7() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)7s2=s2+"7" m_xs=m_xs+"7" UpdateData(FALSE);void CGyDlg:On8() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)8 s2=s2+"8"m_xs=m_xs+"8" UpdateData(FALSE);void CGyDlg:On9() /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)9 s2=s2+"9"
9、; m_xs=m_xs+"9" UpdateData(FALSE);void CGyDlg:Onadd() /加法運算 s2="" s1=m_xs; m_xs=m_xs+'+' str='+' UpdateData(false);void CGyDlg:Onsub() /減法運算 s2="" s1=m_xs; m_xs=m_xs+'-' str='-' UpdateData(false);void CGyDlg:Onxsd() /小數(shù)點運算 s2=s2+".&q
10、uot; m_xs=m_xs+"." UpdateData(false);void CGyDlg:Oncheng() /乘法運算 s2="" s1=m_xs; m_xs=m_xs+'*' str='*' UpdateData(false);void CGyDlg:Onchu() /除法運算 s2="" s1=m_xs; m_xs=m_xs+'/' str='/' UpdateData(false);void CGyDlg:Ondel() /刪除功能 m_xs.Delete
11、(m_xs.GetLength()-1,1); UpdateData(false);void CGyDlg:Onpf() /平方運算 s2="" s1=m_xs; m_xs=m_xs+"2" str='p' UpdateData(false);void CGyDlg:Onkf() /開2次方運算 s2="" s1=m_xs; m_xs=m_xs+"1/2" str='k' UpdateData(false);void CGyDlg:Onsin() /sin函數(shù)運算 s2="
12、" s1=m_xs; m_xs="sin"+m_xs; str='s' UpdateData(false);void CGyDlg:Oncos() /cos函數(shù)運算 s2="" s1=m_xs; m_xs="cos"+m_xs; str='c' UpdateData(false);void CGyDlg:Ontan() /tan函數(shù)運算 s2="" s1=m_xs; m_xs="tan"+m_xs; str='t' UpdateData(
13、false);void CGyDlg:Onln() /ln函數(shù)運算 s2="" s1=m_xs; m_xs="ln"+m_xs; str='l' UpdateData(false);void CGyDlg:Onlog() /log函數(shù)運算 s2="" s1=m_xs; m_xs="log"+m_xs; str='g' UpdateData(false);void CGyDlg:Onex() /以e為底的指數(shù)運算 s2="" s1=m_xs; m_xs="
14、e"+m_xs; str='e' UpdateData(false);void CGyDlg:On3cfg() /開3次方運算 s2="" s1=m_xs; m_xs=m_xs+"1/3" str='f' UpdateData(false);void CGyDlg:Onxy() / x的y次方運算 s2="" s1=m_xs; m_xs=m_xs+"" str='' UpdateData(false);void CGyDlg:Onqk() / 歸零按鈕 m_
15、xs="" UpdateData(FALSE);void CGyDlg:Onsze() /十進制轉(zhuǎn)二進制 s2="" int n,i,t; double Y,p=0.0; Y=strtod( m_xs,NULL); /把字符串轉(zhuǎn)化成浮點型 t=(int)(Y); if(t!=1) for(i=1;t>1;i+) n=t%2; t=t/2; p+=n*pow(10,(i-1); p+=1*pow(10,(i-1); m_xs.Format("%f",p); m_xs=scl(m_xs); UpdateData(false);voi
16、d CGyDlg:Onezs() /二進制轉(zhuǎn)十進制 s2="" int len; double sum=0.0,num; len=strlen(m_xs); for (int i=0;i<len;i+) num=(m_xsi-48); num=num*pow(2,len-i-1); sum+=num; m_xs.Format("%f",sum); m_xs=scl(m_xs); UpdateData(false);void CGyDlg:Onbze() /八進制轉(zhuǎn)二進制 s2="" int i,len; char s; len=
17、strlen(m_xs); CString m_xs1; for(i=0;i<len;i+) s=m_xsi; switch(s) case'1': m_xs1=m_xs1+"001" break; case '2': m_xs1=m_xs1+"010" break; case '3': m_xs1=m_xs1+"011" break; case '4': m_xs1=m_xs1+"100" break; case'5': m_x
18、s1=m_xs1+"101" break; case '6': m_xs1=m_xs1+"110" break; case'7': m_xs1=m_xs1+"111" break; case'.': m_xs1=m_xs1+"." break; m_xs=m_xs1; UpdateData(false); double add(double X, double Y) return X+Y; /加函數(shù)double subtract(double X, double Y)
19、 return X-Y; /減函數(shù)double chu(double X, double Y) return X/Y; /除函數(shù)double cheng(double X, double Y) return X*Y; /乘函數(shù)double jzf(double fu) return fu / 180.0 * 3.14159265; / 角度轉(zhuǎn)弧度CString scl(CString m) /刪除小數(shù)點后多余的零 int len,i,j=0; len=strlen(m); if(mlen-1='0') i=len-1; while(mi='0') j+; i-;
20、 m.Delete(len-j,j); / 刪除小數(shù)點后無用的零 return m;double chengfang(double X, int Y) /乘方 double m=1.0; if(Y=1) return X; else for(int i=1;i<=Y;i+) m=m*X; return m;void CGyDlg:Ondy() /等于號的功能函數(shù) double X,Y;X=strtod(s1,NULL); /把字符串轉(zhuǎn)化成浮點型Y=strtod(s2,NULL); /把字符串轉(zhuǎn)化成浮點型switch(str)case '+': m_xs.Format(&q
21、uot;%f",add(X,Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case '-': m_xs.Format("%f",subtract(X,Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case '*': m_xs.Format("%f",cheng( X,Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case &
22、#39;/': m_xs.Format("%f",chu(X,Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case 'p': m_xs.Format("%f",cheng(Y,Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case 'k': m_xs.Format("%f",sqrt(Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(fa
23、lse); break; case 's': m_xs.Format("%f",sin(jzf(Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case 'c': m_xs.Format("%f",cos(jzf(Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case 't': m_xs.Format("%f",tan(jzf(Y); m_xs=scl(m_xs)
24、; /調(diào)用刪除零函數(shù) UpdateData(false); break; case 'l': m_xs.Format("%f",log(Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case 'g': m_xs.Format("%f",log10(Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case 'e': m_xs.Format("%f",exp(Y);
25、m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case '': m_xs.Format("%f", chengfang(X,(int)Y); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; case 'f': m_xs.Format("%f", pow(Y,M3); m_xs=scl(m_xs); /調(diào)用刪除零函數(shù) UpdateData(false); break; default : UpdateData(false); m_xs="" s2=""HBRUSH CGyDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) /設(shè)置編輯框背景顏色HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor); pDC->SetBkColor(RGB(190,255,0);return hbr;3函數(shù)功能說明整個計算器除了根本的加、減、乘、除運算外,另外還有8個功能,實現(xiàn)八大運算:三角函數(shù)運算功能、對數(shù)函數(shù)運
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 先天性小耳畸形護理
- 商業(yè)門面轉(zhuǎn)讓合同協(xié)議書
- 2024年愛車客車轉(zhuǎn)讓協(xié)議書模板范本
- 離婚協(xié)議書范本無財產(chǎn)2022標(biāo)準(zhǔn)版
- 幼兒園器械合作協(xié)議書范文模板
- 專利戰(zhàn)略性合作協(xié)議書范文
- 人教版英語八年級下冊 Unit 2 Section A(1a~2d)課后練習(xí)
- 特殊教育學(xué)情跟蹤方案
- 2024年血透室年終總結(jié)
- 小區(qū)物業(yè)防汛防洪應(yīng)急預(yù)案
- 危險性較大的分部分項安全管理核查表
- 2024年紀(jì)檢監(jiān)察綜合業(yè)務(wù)知識題庫含答案(研優(yōu)卷)
- 第8課《用制度體系保證人民當(dāng)家做作主》第2框《我國的基本政治制度》課件 2023-2024學(xué)年 中職高教版(2023)中國特色社會主義
- 2024年入團積極分子結(jié)業(yè)考試試題
- 餐飲服務(wù)質(zhì)量提升
- 健康評估練習(xí)題大全(含答案)
- 新北師大版小學(xué)數(shù)學(xué)二年級上冊《六-測量:課桌有多長》-公開課教案-1
- 構(gòu)建文明校園共同創(chuàng)造和諧學(xué)園
- 鐵路邊坡水害分析報告
- 南平出租車從業(yè)資格證模擬考試題
- 《怎樣聽課評課》課件
評論
0/150
提交評論