




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VC+課程設(shè)計(jì)_簡單科學(xué)計(jì)算器設(shè)計(jì) VC+課程設(shè)計(jì)報(bào)告簡單科學(xué)計(jì)算器設(shè)計(jì)姓 名 : 學(xué) 號(hào) : 學(xué) 院 : 電氣工程學(xué)院 班 級(jí) : 日 期 : 2021-12-27 目 錄一、設(shè)計(jì)任務(wù)11、選題意義12、設(shè)計(jì)目標(biāo)1二、程序設(shè)計(jì)與實(shí)現(xiàn)11、程序結(jié)構(gòu)12、設(shè)計(jì)步驟33、詳細(xì)設(shè)計(jì)41、計(jì)算器界面42、主要代碼43、函數(shù)功能說明16三、設(shè)計(jì)難點(diǎn)與解決方法17四、設(shè)計(jì)效果與缺乏之處181、程序效果圖182、缺乏之處18五、學(xué)習(xí)體會(huì)18設(shè)計(jì)任務(wù)選題意義此題選擇意義在于引導(dǎo)學(xué)生學(xué)會(huì)設(shè)計(jì)簡單的科學(xué)計(jì)算器,進(jìn)一步掌握Visual C+應(yīng)用程序。統(tǒng)地學(xué)習(xí)面向?qū)ο缶幊趟枷?,了解MFC架構(gòu),逐步熟悉可視化編程環(huán)境V
2、isual C+,并在此環(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ù),包括正弦、余弦、正切、余切、開方、對(duì)數(shù)、指數(shù)等函數(shù)運(yùn)算 3 、具備歷史計(jì)算的記憶功能。設(shè)計(jì)目標(biāo)使計(jì)算器含有以下功能:1、根本運(yùn)算功能:可以進(jìn)行加、減、乘、除等根本運(yùn)算。2、數(shù)制轉(zhuǎn)換功能:可以一次完成二進(jìn)制轉(zhuǎn)十進(jìn)制、十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制轉(zhuǎn)二進(jìn)制等運(yùn)算。3、三角函數(shù)運(yùn)算功能:可以一次完成三角函數(shù)之間的計(jì)算,求正弦函數(shù)sin、余弦函數(shù)cos、正切函數(shù)tan、余切函數(shù)cot等函數(shù)的值。4、對(duì)數(shù)、指數(shù)運(yùn)算功能:可以一次求的
3、對(duì)數(shù)函數(shù)log、ln、指數(shù)函數(shù)exp等函數(shù)的運(yùn)算。5、刪除功能:可以在輸入錯(cuò)誤時(shí)刪除已輸入的數(shù)值。6、歸零功能:可以在計(jì)算完成后清空編輯框中的已有數(shù)值。程序設(shè)計(jì)與實(shí)現(xiàn)程序結(jié)構(gòu) 本計(jì)算器首先是通過在計(jì)算器的界面上按下相應(yīng)的按鈕,來進(jìn)行根本的加,減,乘,除等根本運(yùn)算,計(jì)算器還能夠進(jìn)行平方運(yùn)算,求平方根運(yùn)算,乘方運(yùn)算,三角函數(shù)運(yùn)算 包括正弦函數(shù) sin 、余弦函數(shù) cos 、正切函數(shù) tan 、余切函數(shù) cot ,對(duì)數(shù)函數(shù) ln、log ,指數(shù)函數(shù) exp ,冪函數(shù) x 和進(jìn)制轉(zhuǎn)換 包括二進(jìn)制轉(zhuǎn)十進(jìn)制、十進(jìn)制轉(zhuǎn)二進(jìn)制和八進(jìn)制轉(zhuǎn)二進(jìn)制 等運(yùn)算。 以下是本計(jì)算器的運(yùn)算流程圖:二進(jìn)制轉(zhuǎn)十進(jìn)制N-S流程圖:
4、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 ;十進(jìn)制轉(zhuǎn)二進(jìn)制N-S流程圖:int n,i,t;double Y,p 0.0;Y strtod m_xs,NULL ;t int Y ;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
5、"%f",p ;UpdateData false ;設(shè)計(jì)步驟:創(chuàng)立一個(gè)基于對(duì)話框的應(yīng)用程序。利用資源編輯器編輯對(duì)話框資源,及設(shè)計(jì)計(jì)算器界面并修改對(duì)話框各按鈕的ID屬性和Caption屬性。利用ClassWizard為各按鈕添加消息映射代碼在下面詳細(xì)介紹。設(shè)置對(duì)話框文本背景顏色。編輯圖標(biāo)。詳細(xì)介紹:1計(jì)算器界面:2主要代碼:void CGyDlg:On0 /輸入相應(yīng)的數(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
6、 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ù),這為輸入數(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+"
7、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+"6" m_xs m_xs+"6"UpdateData FALSE ; void CGyDlg:On7 /輸入相應(yīng)的數(shù)據(jù),這為輸入數(shù)據(jù)7 s2 s2+"7" m_xs
8、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" m_xs m_xs+"9" UpdateData FALSE ; void CGyDlg:Onadd /加法運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+'+'
9、str '+' UpdateData false ; void CGyDlg:Onsub /減法運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+'-' str '-' UpdateData false ; void CGyDlg:Onxsd /小數(shù)點(diǎn)運(yùn)算 s2 s2+"." m_xs m_xs+"." UpdateData false ; void CGyDlg:Oncheng /乘法運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+'*'
10、; str '*' UpdateData false ; void CGyDlg:Onchu /除法運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+'/' str '/' UpdateData false ; void CGyDlg:Ondel /刪除功能 m_xs.Delete m_xs.GetLength -1,1 ; UpdateData false ; void CGyDlg:Onpf /平方運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+"2" str '
11、;p' UpdateData false ; void CGyDlg:Onkf /開2次方運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+"1/2" str 'k' UpdateData false ; void CGyDlg:Onsin /sin函數(shù)運(yùn)算 s2 "" s1 m_xs; m_xs "sin"+m_xs; str 's' UpdateData false ; void CGyDlg:Oncos /cos函數(shù)運(yùn)算 s2 "" s1 m_
12、xs; m_xs "cos"+m_xs; str 'c' UpdateData false ; void CGyDlg:Ontan /tan函數(shù)運(yùn)算 s2 "" s1 m_xs; m_xs "tan"+m_xs; str 't' UpdateData false ; void CGyDlg:Onln /ln函數(shù)運(yùn)算 s2 "" s1 m_xs; m_xs "ln"+m_xs; str 'l' UpdateData false ; void CGyD
13、lg:Onlog /log函數(shù)運(yùn)算 s2 "" s1 m_xs; m_xs "log"+m_xs; str 'g' UpdateData false ; void CGyDlg:Onex /以e為底的指數(shù)運(yùn)算 s2 "" s1 m_xs; m_xs "e"+m_xs; str 'e' UpdateData false ; void CGyDlg:On3cfg /開3次方運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+"1/3" str
14、'f' UpdateData false ; void CGyDlg:Onxy / x的y次方運(yùn)算 s2 "" s1 m_xs; m_xs m_xs+"" str '' UpdateData false ; void CGyDlg:Onqk / 歸零按鈕 m_xs "" UpdateData FALSE ; void CGyDlg:Onsze /十進(jìn)制轉(zhuǎn)二進(jìn)制 s2 "" int n,i,t; double Y,p 0.0; Y strtod m_xs,NULL ; /把字符串轉(zhuǎn)化成
15、浮點(diǎ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 ; void CGyDlg:Onezs /二進(jìn)制轉(zhuǎn)十進(jì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
16、-1 ; sum+ num; m_xs.Format "%f",sum ; m_xs scl m_xs ; UpdateData false ; void CGyDlg:Onbze /八進(jìn)制轉(zhuǎn)二進(jìn)制 s2 "" int i,len; char s; len 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+"
17、;010" break; case '3': m_xs1 m_xs1+"011" break; case '4': m_xs1 m_xs1+"100" break; case'5': m_xs1 m_xs1+"101" break; case '6': m_xs1 m_xs1+"110" break; case'7': m_xs1 m_xs1+"111" break; case'.': m_
18、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 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.1415
19、9265; / 角度轉(zhuǎn)弧度CString scl CString m /刪除小數(shù)點(diǎn)后多余的零 int len,i,j 0; len strlen m ; if mlen-1 '0' i len-1; while mi '0' j+; i-; m.Delete len-j,j ; / 刪除小數(shù)點(diǎn)后無用的零 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:
20、Ondy /等于號(hào)的功能函數(shù) double X,Y;X strtod s1,NULL ; /把字符串轉(zhuǎn)化成浮點(diǎn)型Y strtod s2,NULL ; /把字符串轉(zhuǎn)化成浮點(diǎn)型switch str case '+': m_xs.Format "%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 f
21、alse ; break; case '*': m_xs.Format "%f",cheng X,Y ; m_xs scl m_xs ; /調(diào)用刪除零函數(shù) UpdateData false ; break; case '/': 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 ;
22、 /調(diào)用刪除零函數(shù) UpdateData false ; break; case 'k': m_xs.Format "%f",sqrt Y ; m_xs scl m_xs ; /調(diào)用刪除零函數(shù) UpdateData false ; 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 jz
23、f 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 ; /調(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 &
24、quot;%f",log10 Y ; m_xs scl m_xs ; /調(diào)用刪除零函數(shù) UpdateData false ; break; case 'e': m_xs.Format "%f",exp Y ; 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
25、 '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ù)功能說明整個(gè)計(jì)算器除了根本的加、減、乘、除運(yùn)算外,另外還有8個(gè)功能,實(shí)現(xiàn)八大運(yùn)算:三角函數(shù)運(yùn)算功能、對(duì)數(shù)函數(shù)運(yùn)算功能、指數(shù)函數(shù)運(yùn)算功能、乘方運(yùn)算功能、平方運(yùn)算功能、根式運(yùn)算功能、進(jìn)制轉(zhuǎn)換功能、歸零功能。各個(gè)運(yùn)算功能的詳細(xì)設(shè)計(jì)說明分別如下:a、根本運(yùn)算功能主要實(shí)現(xiàn)數(shù)據(jù)的加、減、乘、除運(yùn)算,提供簡單的科學(xué)計(jì)算!b、三角函數(shù)運(yùn)算功能用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)開發(fā)合作協(xié)議合同
- 三農(nóng)田改造方案設(shè)計(jì)指南
- 建筑木工分包合同
- 上海聲屏障施工方案
- 防水安全生產(chǎn)施工方案
- pvc地板膠施工方案
- 燜渣坑施工方案
- 余姚耐磨地坪施工方案
- 自建房水泥欄桿施工方案
- 青島市eps線條施工方案
- 《幼兒園課程》01 幼兒園課程概述
- 打井合同(范本8則)
- 風(fēng)電場(chǎng)道路和平臺(tái)工程施工設(shè)計(jì)方案
- GB/T 26695-2011家具用鋼化玻璃板
- GB/T 25052-2010連續(xù)熱浸鍍層鋼板和鋼帶尺寸、外形、重量及允許偏差
- GB/T 15057.1-1994化工用石灰石采樣與樣品制備方法
- GB/T 1094.2-2013電力變壓器第2部分:液浸式變壓器的溫升
- DB32/T 4402-2022 河湖和水利工程管理范圍劃定技術(shù)規(guī)程
- 高中課本劇 鴻門宴劇本
- 項(xiàng)目經(jīng)理崗位月度KPI績效考核表
- DBJ41T 070-2014 河南省住宅工程質(zhì)量常見問題防治技術(shù)規(guī)程(含條文說明)-(高清版)
評(píng)論
0/150
提交評(píng)論