版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、簡單科學計算器設計VC+課程設計報告簡單科學計算器設計簡單科學計算器設計一、設計任務1. 選題意義此題選擇意義在于引導學生學會設計簡單的科學計算器,進一步掌握Visual C+應用程序。統(tǒng)計學習面向?qū)ο缶幊趟枷?,了解MFC架構(gòu),逐步熟悉可視化編程環(huán)境 Visual C+,并在此環(huán)境下設計并實現(xiàn)一個簡單計算器系統(tǒng)。 該計算器應能實現(xiàn)如下功能:1)、 二進制、八進制、十進制及十六進制數(shù)的加、減、乘、除、乘方等簡單計算2)、科學計算函數(shù),包括正弦、余弦、正切、余切、開方、對數(shù)、指數(shù)等函數(shù)運算3)、具備歷史計算的記憶功能。2. 設計目標使計算器含有以下功能:(1)、基本運算功能:可以進行加、減、乘、除
2、等基本運算。(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、In)、指數(shù)函數(shù)(exp) 等函數(shù)的運算。(5)、刪除功能:可以在輸入錯誤時刪除已輸入的數(shù)值。(6)、歸零功能:可以在計算完成后清空編輯框中的已有數(shù)值。-2 -二、程序設計與實現(xiàn)1. 程序結(jié)構(gòu)本計算器首先是通過在計算器的界面上按下相應的按鈕,來進行基本的加,減,乘, 除等基本運算,計
3、算器還能夠進行平方運算,求平方根運算,乘方運算,三角函數(shù)運算 (包括正弦函數(shù)(sin)、余弦函數(shù)(cos)、正切函數(shù)(tan)、余切函數(shù)(cot),對數(shù)函數(shù)(In、log), 指數(shù)函數(shù)(exp),幕函數(shù)(x)和進制轉(zhuǎn)換(包括二進制轉(zhuǎn)十進制、十進制轉(zhuǎn)二進制和八進 制轉(zhuǎn)二進制)等運算。以下是本計算器的運算流程圖:簡單科學計算器設計4u開始二輸入數(shù)據(jù)輸出結(jié)果輸入數(shù)據(jù)1T丄丄丄1加減乘除正余正乘進歸平根指對法法法法弦弦切方制零方式數(shù)數(shù)運運運運運運運運轉(zhuǎn)功運運運運吉束2. 設計步驟:(1) 創(chuàng)建一個基于對話框的應用程序。(2) 利用資源編輯器編輯對話框資源,及設計計算器界面并修改對話框各按鈕的ID屬性和
4、Caption屬性。(3) 利用ClassWizard為各按鈕添加消息映射(代碼在下面詳細介紹)(4) 設置對話框文本背景顏色。(5) 編輯圖標。3詳細介紹:(2)主要代碼:void CGyDlg:O n0()/輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 0 s2=s2+0;m_xs=m_xs+0;UpdateData(FALSE);void CGyDlg:O n1()/輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 1 s2=s2+1;m_xs=m_xs+1;UpdateData(FALSE);void CGyDlg:O n2()/輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 2 s2=s2+2;m_xs=m_xs+2;UpdateDat
5、a(FALSE);void CGyDlg:O n3()/輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 3 s2=s2+3;m_xs=m_xs+3;UpdateData(FALSE);void CGyDlg:O n4()/輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 4 s2=s2+4;m_xs=m_xs+4;UpdateData(FALSE);void CGyDlg:O n5()/輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 5 s2=s2+5;m_xs=m_xs+5;簡單科學計算器設計UpdateData(FALSE);void CGyDlg:O n6()/ 輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 6 s2=s2+6;m_xs=m_xs+6;Upd
6、ateData(FALSE);void CGyDlg:O n7()/ 輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 7 s2=s2+7;m_xs=m_xs+7;UpdateData(FALSE);void CGyDlg:O n8()/ 輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 8 s2=s2+8;m_xs=m_xs+8;UpdateData(FALSE);void CGyDlg:O n9()/ 輸入相應的數(shù)據(jù),這為輸入數(shù)據(jù) 9 s2=s2+9;m_xs=m_xs+9;UpdateData(FALSE);void CGyDlg:O nadd() /力卩 s2=;s1=m_xs;m_xs=m_xs+;str=+;Update
7、Data(false);void CGyDlg:O nsub() / 減 s2=;s1=m_xs;m_xs=m_xs+-;str=-;UpdateData(false);void CGyDlg:O nxsd() / 小數(shù)點 s2=s2+.;m_xs=m_xs+.;UpdateData(false);void CGyDlg:O nchen g() / 乘 s2=;s1=m_xs;m_xs=m_xs+*;str=*;UpdateData(false);void CGyDlg:O nchu() / 除 s2=;s1=m_xs;m_xs=m_xs+/;str=/;UpdateData(false);v
8、oid CGyDlg:O ndel() / 刪除m_xs.Delete(m_xs.GetLe ngth()-1,1);UpdateData(false);void CGyDlg:O npf() / 平方 s2=;s1=m_xs;m_xs=m_xs+A2;str=p;UpdateData(false);-6 -簡單科學計算器設計void CGyDlg:Onkf() / 開 2 次方 s2=;s1=m_xs;m_xs=m_xs+1/2;str=k;UpdateData(false);void CGyDlg:O nsi n() /sin 函數(shù) s2=;s1=m_xs;m_xs=s in +m_xs;
9、str=s;UpdateData(false);void CGyDlg:O ncos() /cos 函數(shù) s2=;s1=m_xs;m_xs=cos+m_xs;str=c;UpdateData(false);void CGyDlg:O nta n() /tan 函數(shù) s2=;s1=m_xs;m_xs=ta n+m_xs;str=t;UpdateData(false);void CGyDlg:O nln() /ln 函數(shù)簡單科學計算器設計 s2=;s1=m_xs;m_xs=l n+m_xs;str=T;UpdateData(false);void CGyDlg:O nlog() /log 函數(shù) s
10、2=;s1=m_xs;m_xs=log+m_xs;str=g;以e為底的指數(shù)UpdateData(false);void CGyDlg:O nex() / s2=;s1=m_xs; m_xs=eA+m_xs;str=e;UpdateData(false);void CGyDlg:On3cfg() / 開 3 次方 s2=;s1=m_xs;m_xs=m_xs+A1/3;str=f;UpdateData(false);void CGyDlg:Onxy() / x 的 y 次方 s2=;s1=m_xs;m_xs=m_xs+A;str=A;UpdateData(false);void CGyDlg:O
11、 nqk() / 歸零按鈕 m_xs=;UpdateData(FALSE);void CGyDlg:O nsze() / 十進制轉(zhuǎn)二進制 s2=;int n,i,t;double Y,p=0.0;Y=strtod( m_xs,NULL); /把字符串轉(zhuǎn)化成浮點型t=(i nt)(Y);if(t!=1)for(i=1;t1;i+) 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);void CGyDlg:O nezs() /二進制轉(zhuǎn)十進制 s2=;int len;double
12、sum=0.0,num;len=strle n( m_xs);for (i nt i=0;ile n;i+) num=(m_xsi-48);num=nu m*pow(2,le n-i-1);sum+=num;m_xs.Format(%f,sum);UpdateData(false);void CGyDlg:O nbze() /八進制轉(zhuǎn)二進制 s2=;int i,le n;char s;len=strle n( m_xs);CStri ng m_xs1;for(i=0;ile n;i+) s=m_xsi;switch(s) case1:m_xs仁m_xs1+001;break;case 2:m_
13、xs1=m_xs1+010;break;case 3:m_xs 仁m _xs1+011;break;case 4:m_xs1=m_xs1+100;break;case5:m_xs1=m_xs1+101;break;case 6:m_xs1=m_xs1+110;break;case7:m_xs1=m_xs1+111;break;m_xs=m_xs1;UpdateData(false);double add(double X, double Y) return X+Y; /加函數(shù)double subtract(double X, double Y) return X-Y; /減函數(shù)double c
14、hu(double X, double Y) return X/Y; /除函數(shù)double che ng(double X, double Y) return X*Y; /乘函數(shù)double jzf(double fu) return fu / 180.0 * 3.14159265;/角度轉(zhuǎn)弧度double che ngfan g(double X, int Y) /乘方 double m=1.0;if(Y=1)return X;elsefor(i nt i=1;iSetBkColor(RGB(190,255,0);return hbr;(3)函數(shù)功能說明整個計算器除了基本的加、減、乘、除運算
15、外,另外還有8個功能,實現(xiàn)八大運算:三角函數(shù)運算功能、對數(shù)函數(shù)運算功能、指數(shù)函數(shù)運算功能、乘方運算功能、平方運算功能、根式運算功能、進制轉(zhuǎn)換功能、歸零功能。各個運算功能的詳細設計說明分別如下:a、基本運算功能主要實現(xiàn)數(shù)據(jù)的加、減、乘、除運算,提供簡單的科學計算!b、三角函數(shù)運算功能用來執(zhí)行三角函數(shù)的運算,包括正弦函數(shù)(sin)、余弦函數(shù)(cos)、正切函數(shù)(tan)和余切函數(shù)(cot)。C、對數(shù)函數(shù)運算功能用來執(zhí)行對數(shù)函數(shù)的運算,包括以 e為底In函數(shù)和以10為底的lg函數(shù)。d、指數(shù)函數(shù)運算功能用來執(zhí)行指數(shù)函數(shù)的運算。e、乘方運算功能用來執(zhí)行乘方的運算,進行數(shù)值的成倍計算。f、平方運算功能用來
16、執(zhí)行平方運算,說到底它也屬于乘方運算的范疇。g、根式運算功能用來執(zhí)行根式的運算。h、進制轉(zhuǎn)換運算功能主要實現(xiàn)數(shù)值間的轉(zhuǎn)換,包括二進制轉(zhuǎn)十進制、十進制轉(zhuǎn)二進制和八進制轉(zhuǎn)二進制的運算。二進制轉(zhuǎn)十進制N-S流程圖:num=(m_xsi-48);num=nu m*pow(2,le n-i-1);sum+=num;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=(i nt)(Y);t!=1是i=1; 當 t1;n=t%2;t=t/2;p+=n*pow(1
17、0,(i-1);p+=1*pow(10,(i-1);m_xs.Format(%f,p);UpdateData(false);i、歸零、刪除功能主要實現(xiàn)數(shù)據(jù)的清零,當用戶輸入數(shù)據(jù)出錯時,使用此功能可以清除已輸入的內(nèi)容 并重新輸入新的運算內(nèi)容。三、設計難點與解決方法設計難點1:遇到一些復雜的函數(shù)計算時,設計的代碼不能很好的反映出該有的功 能。解決策略:通過看書、上網(wǎng)查資料和與同學討論,自己再反復修改代碼,運行程序, 直到實際效果滿意為止。設計難點2:在編譯程序時,出現(xiàn)類型不匹配的錯誤,查找是Cstring和double類型之間沒有轉(zhuǎn)換。解決策略:查找到Format ()和atof ()函數(shù)可以進行
18、他們之間的轉(zhuǎn)換四、設計效果與不足之處程序效果圖如下:不足之處:計算器的計算功能還不是很多,設計效果也不是很理想,輸入數(shù)據(jù)和顯示結(jié)果不能 同步顯示,只能分別顯示。五、學習體會經(jīng)過幾星期的的VC程序的編寫,感覺學會不少!加深了對VC+程序設計課 程所學知識的理解,進一步鞏固VC+講法規(guī)則,進一步掌握了各種函數(shù)的應用和調(diào)用。首先在編輯對話框資源上,讓我更加了解 VC+程序的內(nèi)部結(jié)構(gòu)和資源使用。其次在做課程設計的過程中,發(fā)現(xiàn)了平時很多沒有注意到的問題,例如:一些細小 的問題更重要的是,這次課程設計雖然花了我不少時間,但正是這些時間,讓我認識到了 VC+的重要性。這個計算器基本是在自己知識范圍內(nèi)完成的,所以界面清晰簡單,雖 然不是很好看,但十分實用!從這里我也得到一個體會,做一個程序,或者開發(fā)一個軟件,應該著重從它的后臺 制作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度泥工工程材料采購合同樣本4篇
- 二零二五年度實木門定制與安裝服務合同3篇
- 教育機構(gòu)實驗室的安全管理體系構(gòu)建
- 讓孩子遠離過度消費家長的有效引導方法
- 中介合同的法律特征
- 二零二四年度新型環(huán)保門窗研發(fā)、定制與安裝合同范本3篇
- 2025年度充電樁充電站智能充電與支付系統(tǒng)開發(fā)合同3篇
- 2025版智能安全門窗工程分包合同范本4篇
- 二零二五年度體育賽事贊助合同合3篇
- 二零二五年度城市軌道交通電梯安全運行服務合同3篇
- 第一節(jié)-貨幣資金資料講解
- 如何提高售后服務的快速響應能力
- 北師大版 2024-2025學年四年級數(shù)學上冊典型例題系列第三單元:行程問題“拓展型”專項練習(原卷版+解析)
- 2023年譯林版英語五年級下冊Units-1-2單元測試卷-含答案
- Unit-3-Reading-and-thinking課文詳解課件-高中英語人教版必修第二冊
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級數(shù)學下冊全冊課件
- 華為攜手深圳國際會展中心創(chuàng)建世界一流展館
評論
0/150
提交評論