版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、專(zhuān)業(yè)技能培訓(xùn)課程實(shí)驗(yàn)報(bào)告 課程設(shè)計(jì)題目: 大整數(shù)計(jì)算器 學(xué)生姓名: 學(xué)生學(xué)號(hào): 學(xué)生院系: 學(xué)生班級(jí): 指導(dǎo)教師: 摘要:本課程設(shè)計(jì)將實(shí)現(xiàn)一個(gè)大整數(shù)計(jì)算器。其類(lèi)似于Windows附件中自帶的計(jì)算器。這個(gè)計(jì)算器可以實(shí)現(xiàn)大整數(shù)的四則運(yùn)算功能,并且具有簡(jiǎn)潔大方的圖文外觀。它的設(shè)計(jì)按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性使用人員能快捷簡(jiǎn)單地進(jìn)行操作。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。在課程設(shè)計(jì)中,系統(tǒng)開(kāi)發(fā)平臺(tái)為Windows 2000/XP及以上,程序設(shè)計(jì)設(shè)計(jì)語(yǔ)言采用Visual C+,在程序設(shè)計(jì)中,采用了結(jié)構(gòu)
2、化與面向?qū)ο髢煞N解決問(wèn)題的方法。 關(guān)鍵詞 : 程序設(shè)計(jì);計(jì)算器;MFC;按鈕控件目 錄一、問(wèn)題描述3二、功能描述 3三、需求分析3四、概要設(shè)計(jì)3五、詳細(xì)設(shè)計(jì)41、運(yùn)算流程圖42、詳細(xì)設(shè)計(jì)步驟53、菜單功能的實(shí)現(xiàn)84、相關(guān)程序代碼13六、 設(shè)計(jì)和調(diào)試分析17七、 用戶(hù)手冊(cè)18八、 測(cè)試結(jié)果20九、 設(shè)計(jì)心得23十、 參考文獻(xiàn)24附錄24一、問(wèn)題描述超大整數(shù)(超100位)的運(yùn)算和輸出、輸出 二、功能描述 (1)定義大整數(shù)類(lèi);(2)大整數(shù)的輸入/輸出 ;(3)計(jì)算功能:大整數(shù)的數(shù)的加、減、乘、除、模除運(yùn)算;(4)菜單功能:每種功能的操作都是在菜單中進(jìn)行相應(yīng)選擇;(5)計(jì)算器上數(shù)字09為一個(gè)控件數(shù)組,
3、加、減、乘、除為一個(gè)控件數(shù)組;(6)輸入的原始數(shù)據(jù)、運(yùn)算中間數(shù)據(jù)和結(jié)果都顯示在窗口頂部的同一個(gè)標(biāo)簽中;(7)計(jì)算功能基本上是用系統(tǒng)內(nèi)部函數(shù);(8)“0”不能做除數(shù);(9)“Backspace”按鈕可以清除上一次輸入的數(shù)據(jù),“Clear”按鈕可以清除所有已輸入的數(shù)據(jù)從頭計(jì)算。三、需求分析本設(shè)計(jì)是大整數(shù)計(jì)算器。日常計(jì)算機(jī)使用中,常常涉及到一些有關(guān)計(jì)算的問(wèn)題,一個(gè)小型的計(jì)算器軟件變得非常有用,該校型計(jì)算器需要空間資源較少,對(duì)電腦其他程序的應(yīng)用影響較小。它的設(shè)計(jì)按軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡(jiǎn)單地進(jìn)行操作。即時(shí)準(zhǔn)確地獲得需要的
4、計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助。本軟件主要用于計(jì)算機(jī)windows 2000/XP以上版本的用戶(hù)的使用,這次課程設(shè)計(jì)一般是實(shí)現(xiàn)大整數(shù)計(jì)算器的功能。要程序能實(shí)現(xiàn):加,減,乘,除,模運(yùn)算等運(yùn)算功能;還可以實(shí)現(xiàn)數(shù)據(jù)的輸入,輸出,計(jì)算,顯示及程序退出等功能。四、概要設(shè)計(jì)本軟件主要應(yīng)用的設(shè)計(jì)工具是Visual C+6.0以及Visual C+6.0中的MFC。MFC是Win API與C+的結(jié)合,MFC不只是一個(gè)功能單純的界面開(kāi)發(fā)系統(tǒng),它提供的類(lèi)絕大部分用來(lái)進(jìn)行界面開(kāi)發(fā),關(guān)聯(lián)一個(gè)窗口的動(dòng)作,但它提供的類(lèi)中有好多類(lèi)不與一個(gè)窗口關(guān)聯(lián),即類(lèi)的作用不是一個(gè)界面類(lèi),不實(shí)現(xiàn)
5、對(duì)一個(gè)窗口對(duì)象的控制(如創(chuàng)建,銷(xiāo)毀),而是一些在WinDOS(用MFC編寫(xiě)的程序絕大部分都在WinDOS中運(yùn)行)中實(shí)現(xiàn)內(nèi)部處理的類(lèi)。使用Visual C+6.0進(jìn)行設(shè)計(jì)編程非常方便實(shí)用。五、詳細(xì)設(shè)計(jì)1、運(yùn)算流程圖 N Y Y N Y 2、詳細(xì)設(shè)計(jì)步驟(1)打開(kāi)Visual C+6.0,選擇FileNewlProject命令,選擇MFC AppWizard(exe)創(chuàng)建Project名為“計(jì)算器”,按確定。在彈出界面選擇創(chuàng)建對(duì)話(huà)框,單擊“完成”按鈕。(2)這樣,MFC AppWizard就建立了一個(gè)基于對(duì)話(huà)窗口的程序框架,如圖1所示: 圖1(3)在生成的設(shè)計(jì)界面中加入控件,得到計(jì)算器應(yīng)用界面。如
6、圖2: 圖2(4)為控件編輯框編輯ID,如下表: 按鈕名稱(chēng)ID用途0IDC_BUTTON_0按鍵01IDC_ BUTTON_1按鍵12IDC_ BUTTON_2按鍵23IDC_ BUTTON_3按鍵34IDC_ BUTTON_4按鍵45IDC_ BUTTON_5按鍵56IDC_ BUTTON_6按鍵67IDC_ BUTTON_7按鍵78IDC_ BUTTON_8按鍵89IDC_ BUTTON_9按鍵9.IDC_ BUTTONpt按鍵 .+/-IDC_ BUTTONor正負(fù)+IDC_ BUTTONjia加-IDC_ BUTTONjian減*IDC_ BUTTONcheng乘/IDC_
7、BUTTONchu除ClearIDC_ BUTTONC清零BackspaceIDC_ BUTTONbk退格=IDC_ BUTTONdeng等于 編輯框IDC_EDIT1顯示數(shù)據(jù)輸入輸出 (5)進(jìn)入ClassWizard界面選擇Message Maps為控件插入消息映射,插入消息函數(shù),實(shí)現(xiàn)控件命令功能。如圖3: 圖3(6) 進(jìn)入ClassWizard界面Message Varibles為編輯框添加成員變量m_stredit用以顯示結(jié)果。如圖: 圖4(7)在“計(jì)算器Dlg.h”中加入在主要成員函數(shù)和成員變量的申明,在“計(jì)算器Dlg.cpp”中加入主要成員函數(shù)實(shí)現(xiàn)過(guò)程和成員變量的初始化。在頭文件中“
8、計(jì)算器Dlg.h”中public下添加: int sos; /操作附鑒別符int cal;CString m_str2; /存放按下操作符之前m_stredit的值CString m_str1; /中間變量,當(dāng)前m_stredit的值在“計(jì)算器Dlg.cpp”中要定義各種數(shù)學(xué)運(yùn)算添加:#include "math.h"3、菜單功能的實(shí)現(xiàn)(1)添加菜單欄如圖: (2)添加需要彈出的新對(duì)話(huà)框如圖:(3)在主對(duì)話(huà)框的類(lèi)(CMyDlg)頭文件中定義一個(gè)菜單類(lèi)對(duì)象m_Menu用于加載菜單:CMenu m_Menu; /定義一個(gè)菜單類(lèi)對(duì)象 (4)在CmyDlg類(lèi)的BOOL CMyDlg
9、:OnInitDialog()成員函數(shù)中添加如下代碼:m_Menu.LoadMenu(IDR_MENU1);SetMenu(&m_Menu);(5)給要彈出的對(duì)話(huà)框創(chuàng)建一個(gè)類(lèi)CPopDlg:(6) 給菜單項(xiàng)響應(yīng)一個(gè)點(diǎn)擊事件:ps:這里注意 類(lèi)名一定要選主對(duì)話(huà)框。(7)在菜單項(xiàng)的響應(yīng)函數(shù)中添加執(zhí)行函數(shù),彈出新對(duì)話(huà)框:CPopDlg dlg; /定義一個(gè)新對(duì)話(huà)框的對(duì)象dlg.DoModal(); /彈出對(duì)話(huà)框 (8) 然后就是記得在主對(duì)話(huà)框前面加上新對(duì)話(huà)框類(lèi)的頭文件: #include "PopDlg.h" 4、相關(guān)程序代碼(1)加、減、乘、除算法void CMyDlg
10、:OnBUTTONjia() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_stredit;m_stredit=""sos=1; UpdateData(FALSE); void CMyDlg:OnBUTTONjian() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_stredit;m_stredit=""sos=2;Upda
11、teData(FALSE); void CMyDlg:OnBUTTONcheng() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_str1=m_stredit;m_stredit=""sos=3;UpdateData(FALSE); void CMyDlg:OnBUTTONchu() / TODO: Add your control notification handler code hereUpdateData();m_str1=m_stredit;m_stredit=
12、""sos=4;UpdateData(FALSE); (2)“=”號(hào)void CMyDlg:OnBUTTONdeng() / TODO: Add your control notification handler code heredouble f1,f2,f3;int f4,f5,f6;/%運(yùn)算符操作數(shù)只能是整型switch(sos)case 1:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1+f2;m_stredit.Format("%f",f3);Upd
13、ateData(FALSE);break;case 2:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1-f2;m_stredit.Format("%f",f3);UpdateData(FALSE);break;case 3:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1*f2;m_stredit.Format("%f",f3);UpdateData(FALSE);b
14、reak;case 4:UpdateData(TRUE);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);if(f2=0)MessageBox("被除數(shù)不能為零!");elsef3=f1/f2; m_stredit.Format("%f",f3);UpdateData(FALSE);break;case 6:UpdateData(TRUE);m_str2=m_stredit;f4=atoi(m_str1);/將字符型轉(zhuǎn)化為整型,下面做相應(yīng)修改f5=atoi(m_str2);f6=int(f4)%int(f
15、5);m_stredit.Format("%d",f6);UpdateData(FALSE);break; (3)“Backspace”void CMyDlg:OnBUTTONbk() / TODO: Add your control notification handler code hereUpdateData(TRUE);m_stredit=m_stredit.Left(m_stredit.GetLength()-1);UpdateData(FALSE); (4)“Clear”void CMyDlg:OnButtonc() / TODO: Add your contr
16、ol notification handler code hereUpdateData(TRUE);m_stredit=""sos=0;UpdateData(FALSE); 6、 設(shè)計(jì)和調(diào)試分析通過(guò)測(cè)試時(shí)發(fā)現(xiàn),加法返回的結(jié)果與正確的結(jié)果不相符、在做乘法時(shí)遇到最多的問(wèn)題便是超出了字符的數(shù)值范圍,當(dāng)使用界面進(jìn)行加法操作時(shí)發(fā)現(xiàn)無(wú)法清空上一次加法的結(jié)果,不過(guò)通過(guò)排查,最后把問(wèn)題給解決了。7、 用戶(hù)手冊(cè)輸入的形式:鍵盤(pán)上的數(shù)字鍵輸入或者界面數(shù)字鍵輸入輸入、輸出值的范圍為:(0,),輸出的形式:編輯框輸出運(yùn)算結(jié)果。用戶(hù)可以使用計(jì)算器進(jìn)行大整數(shù)的運(yùn)算,只需打開(kāi)Visual C+6.0點(diǎn)擊
17、“文件”“打開(kāi)工作空間”“選擇后綴類(lèi)型為.dsw的程序”運(yùn)行即可進(jìn)行計(jì)算,如圖: 8、 測(cè)試結(jié)果數(shù)據(jù)A:10000000000000000000000000數(shù)據(jù)B:200000000000000000000“+”結(jié)果:10000200000000002000000000如圖: “-”結(jié)果:9999799999999999900000000如圖: “*”結(jié)果:2000000000000000200000000000000000000000000000如圖: “/”結(jié)果:50000如圖: 除數(shù)為零時(shí),顯示: 9、 設(shè)計(jì)心得課程設(shè)計(jì)到此已告一段落,經(jīng)過(guò)自己的努力,這幾周的技能培訓(xùn)課程設(shè)計(jì)基本完成了。
18、從中學(xué)到很多有用的知識(shí),也積累了不少寶貴的經(jīng)驗(yàn)。雖然在此次課程設(shè)計(jì)我們只是針對(duì)性的去學(xué)習(xí)對(duì)對(duì)話(huà)框應(yīng)用程序的編程模式,但也體會(huì)到了MFC這類(lèi)庫(kù)的博大精深。想全部了解這樣一個(gè)類(lèi)庫(kù),今后還需多下功夫。本次課程設(shè)計(jì)我完成了一個(gè)計(jì)算器應(yīng)用軟件,在此期間,遇上了不少的技術(shù)難題,但是經(jīng)過(guò)努力,通過(guò)查找資料,難題還是一個(gè)個(gè)被解決了,從中學(xué)到了許多課堂上沒(méi)學(xué)到的東西,這是很值得高興的。經(jīng)過(guò)設(shè)計(jì)的各個(gè)環(huán)節(jié),從中學(xué)到了很多,鍛煉了系統(tǒng)的設(shè)計(jì)的能力。這樣對(duì)我以后在工作中或?qū)W習(xí)中得到很好的鍛煉,為用VC+編輯軟件奠定基礎(chǔ)。在本次實(shí)踐期間對(duì)大整數(shù)計(jì)算器的設(shè)計(jì)雖然大體實(shí)現(xiàn)各個(gè)控件的功能,但仍存在許多的不足與漏洞,還待以后的
19、不斷學(xué)習(xí)進(jìn)一步完善。 10、 參考文獻(xiàn)參考文獻(xiàn):1Visual C+ 7.0 起步進(jìn)階,國(guó)防工業(yè)出版社 武裝 等編著2Visual C+ 基礎(chǔ)教程,西安電子科技大學(xué)出版社,2006.6 附錄各按鈕的響應(yīng)程序代碼:(1)“09”按鈕:void CMyDlg:OnButton0() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='0'Up
20、dateData(FALSE); void CMyDlg:OnButton1() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='1'UpdateData(FALSE); void CMyDlg:OnButton2() / TODO: Add your control notification handler code hereUpd
21、ateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='2'UpdateData(FALSE); void CMyDlg:OnButton3() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='3'
22、;UpdateData(FALSE);void CMyDlg:OnButton4() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='4'UpdateData(FALSE); void CMyDlg:OnButton5() / TODO: Add your control notification handler code hereU
23、pdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='5'UpdateData(FALSE); void CMyDlg:OnButton6() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='6
24、39;UpdateData(FALSE); void CMyDlg:OnButton7() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='7'UpdateData(FALSE); void CMyDlg:OnButton8() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stredit="0.")m_stredit=""m_stredit+='8'UpdateData(FALSE); void CMyDlg:OnButton9() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(cal=1)else if(m_stre
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物教學(xué)資源開(kāi)發(fā)計(jì)劃
- 亞硝酸鹽中毒解毒藥相關(guān)項(xiàng)目投資計(jì)劃書(shū)范本
- 《記錄儀操作要求》課件
- 《認(rèn)識(shí)過(guò)程與教學(xué)》課件
- 《供應(yīng)商選擇與評(píng)價(jià)》課件
- 《促銷(xiāo)人員手冊(cè)》課件
- 《保戶(hù)投保注意事項(xiàng)》課件
- 直接委托項(xiàng)目報(bào)告范文
- 護(hù)理糾紛與法律知識(shí)
- 文員社會(huì)實(shí)踐報(bào)告范文
- 學(xué)校最小單位應(yīng)急預(yù)案
- 子宮內(nèi)膜癌個(gè)案護(hù)理追蹤
- 幼兒園優(yōu)質(zhì)公開(kāi)課:小班科學(xué)《有趣的溶解》課件
- 2022-2023學(xué)年四川省巴中市巴州區(qū)川教版(三起)四年級(jí)上學(xué)期期末英語(yǔ)試卷
- 無(wú)人機(jī)風(fēng)險(xiǎn)評(píng)估和監(jiān)測(cè)
- 人教版(2023) 選擇性必修第一冊(cè) Unit 2 Looking into the Future Assessing Your Progress教案
- 正畸治療中患者牙釉質(zhì)脫礦的發(fā)病及損度觀察
- 社區(qū)居民大腸癌篩查(完整版)
- 腦血管意外的護(hù)理常規(guī)課件
- 迎新春送吉祥義務(wù)寫(xiě)春聯(lián)活動(dòng)方案
- 樓體亮化安全施工方案
評(píng)論
0/150
提交評(píng)論