C++課程設計報告 計算器的設計與實現(xiàn)

上傳人:ya****h 文檔編號:117408276 上傳時間:2022-07-08 格式:DOCX 頁數(shù):25 大?。?72.98KB
收藏 版權(quán)申訴 舉報 下載
C++課程設計報告 計算器的設計與實現(xiàn)_第1頁
第1頁 / 共25頁
C++課程設計報告 計算器的設計與實現(xiàn)_第2頁
第2頁 / 共25頁
C++課程設計報告 計算器的設計與實現(xiàn)_第3頁
第3頁 / 共25頁

本資源只提供3頁預覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

20 積分

下載資源

資源描述:

《C++課程設計報告 計算器的設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關《C++課程設計報告 計算器的設計與實現(xiàn)(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、C+課程設計報告(20-20年度第學期)計算器的設計與實現(xiàn)專業(yè)計算機科學與技術(shù)學生姓名班級學號指導教師完成日期目錄1概述31.1課程設計目的31.2課程設計內(nèi)容32系統(tǒng)需求分析32.1系統(tǒng)目標32.2主體功能32.3開發(fā)環(huán)境33系統(tǒng)概要設計43.1系統(tǒng)功能劃分43.2系統(tǒng)流程圖54系統(tǒng)詳細設計54.1設計步驟54.2界面設計74.2實現(xiàn)高級按鈕控件類105測試115.1測試方案115.2測試結(jié)果116小結(jié)12參考文獻14附錄15附錄1源程序清單15C+課稈設計報告(2011)計算器的設計與實現(xiàn)1概述1.1 課程設計目的1、鞏固并加深學生對C+語言程序設計知識的理解;2、培養(yǎng)學生面向?qū)ο蟮某绦蛟O

2、計思想,使學生認識面向過程和面向?qū)ο髢煞N設計方法的區(qū)別;3、進一步掌握和應用VC+6.0集成開發(fā)環(huán)境;4、提高運用C+語言解決實際問題的能力;5、初步掌握開發(fā)小型實用軟件的基本方法,能獨立設計、實現(xiàn)基本的MIS系統(tǒng);6、掌握書寫程序設計開發(fā)文檔的能力(書寫課程設計實驗報告)。1.2 課程設計內(nèi)容課題名稱:計算器的實現(xiàn)說明:實現(xiàn)一個計算器。要求:1)用“計算器”的標準視圖執(zhí)行簡單的計算。2)用其科學型視圖執(zhí)行高級的科學計算。2系統(tǒng)需求分析2.1 系統(tǒng)目標我們在學習生活中,常會遇到一些繁雜的數(shù)值運算,這時候我們就必須用到科學計算器,所以便著手開發(fā)了這個計算器程序,以便用于自己的學習工作。要計算功能

3、有以下幾個方面:加法,減法,乘法,除法,求冪,求模,求平方根,求Sin,求Cos。2.2 主體功能1、十進制數(shù)的加、減、乘、除、乘方、取模等簡單計算。2、科學計算函數(shù),包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、指數(shù)等函數(shù)運算。3、以角度、弧度兩種方式實現(xiàn)上述部分函數(shù)。2.3 開發(fā)環(huán)境VC+6.03系統(tǒng)概要設計3.1 系統(tǒng)功能劃分表3-1系統(tǒng)功能表序號文件名主要功能備注1+加法求和兩個操作數(shù)2-減法求差兩個操作數(shù)3*乘法求積兩個操作數(shù)4/除法求商兩個操作數(shù)5%求模兩個操作數(shù)6A求x的y次幕兩個操作數(shù)7S求平方根一個操作數(shù)8Sin求正弦一個操作數(shù)9Cos求余弦一個操作數(shù)10In求對

4、數(shù)一個操作數(shù)11n!求階乘一個操作數(shù)12=等于13C寄存器清零1)假設執(zhí)行操作“+”,先輸入一個數(shù),再輸入“+”,再輸入另一個數(shù),最后輸入“+”。整個功能“+”就執(zhí)行完畢。2)執(zhí)行操作“Sin”,先輸入一個數(shù),在輸入“Sin”,整個功能“Sin”就執(zhí)行完畢。3)執(zhí)行操作“n!”,先輸入一個數(shù),再輸入“n!,整個功能“n!”執(zhí)行3.2 系統(tǒng)流程圖圖3-1系統(tǒng)流程圖4系統(tǒng)詳細設計4.1設計步驟打開MicrosoftVisualC+6.0,在文件中點擊新建,在彈出框內(nèi)選擇MFCAppWizardexe工程,輸入工程名cao及其所在位置,點擊確定,如圖4-1所示。圖4-1新建MFCAppWizarde

5、xe工程將彈出MFCAppWizard-step1對話框,選擇基本對話框,點擊完成,如圖4-2所示。圖4-2基本對話框這樣,MFCAppWizard就建立了一個基于對話窗口的程序框架,如圖4-3所示。衰骨的章音SSA工程揭M疥E工曇囲口聖吐-國蓉習1-dCCtioDIg|(AllcIsbinieimtber貝T|CCaDDIgi二臥4齒!-ia-口oiire&uurccB由二JDiaDog由UIc4n申口SBrinqTable由_Version)豈tao.n:-SDD.CAO.DIALOG(Dialog|二回AZ口函因.i味逛曰出匚血出四回耳嘔國比氏I-?ml.-“L3団FdHI.?;4-咅站

6、直回和11奎.nRcdy圖4-3新建的對話框4.2 界面設計界面設計主要是創(chuàng)建控件,在圖4-3所示的ResoureView選項卡中打開Dialog資源組,雙擊IDD_ZH0UT0NG_DIAL0G,在右邊的窗口中顯示出待編輯的對話框。開始擺放控件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“1”為例進行介紹,其他按鈕的創(chuàng)建可參照此進行操作。1)在圖4-3中Controls的“編輯框”按鈕上單擊鼠標左鍵,在對話框編輯窗口上合適的位置按下鼠標左鍵并拖動鼠標畫出一個大小合適的編輯框。在編輯框上單擊鼠標右鍵,在彈出的快捷菜單中選擇屬性選項,此時彈出Edit屬性對話框,如圖4-4所示,在該對話框中輸入ID屬性

7、。11圖4-4Edit屬性對話框2)在圖4-2中Controls的“Butto按鈕上單擊鼠標左鍵,在對話框上的合適的位置上按下鼠標左鍵并拖動鼠標畫出一個大小合適的下壓式按鈕。在按鈕上單擊鼠標右鍵,在彈出的快捷菜單中選擇屬性選項,此時也彈出PushButton屬性對話框,如圖4-5所示,在該對話框中輸入控件的ID值和標題屬性。圖4-5PushButton屬性按照上面的操作過程編輯其他按鈕和編輯框等對象的屬性表4-1各按鈕和編輯框等對象的屬性對象ID標題或說明編輯框IDCxianshi結(jié)果顯示按鈕IDCBUTTONO0按鈕IDCBUTTON11按鈕IDCBUTTON22按鈕IDCBUTTON33按

8、鈕IDCBUTTON44按鈕IDCBUTTON55按鈕IDCBUTTON66按鈕IDCBUTTON77按鈕IDCBUTTON88按鈕IDCBUTTON99按鈕IDCchange+/-按鈕IDCpoint按鈕IDCadd+按鈕IDCdifference-按鈕IDCchu/按鈕IDCtantan按鈕IDCexpexp按鈕IDCmultiply*按鈕IDCsqrtsqrt按鈕IDCdaoshu1/x按鈕IDCjiechengn!按鈕IDClnIn按鈕IDCsinsin按鈕IDCcoscos按鈕IDCpowxAy按鈕IDCOnequal=完成后界面如圖4-6所示。1Pll|&|i11nn147FI-O

9、U上_1上丄63:pI|C05IIsin圖4-6設計界面E3加入標準型和科學型按鍵:S3caoEditr科學型r標準型E1M-JTI丄丄上丄1E-y4圖4-7加入標準型和科學型按鍵界面C+課程設計報告(2011)運行界面效果如圖4-8:13L-.廣弧度47+/-0y圖4-8科學型界面4.3 實現(xiàn)高級按鈕控件類因為本程序大多使用按鈕來完成我們所需的計算,所以在這里,我使用高級按鈕控件來實現(xiàn)操作,具體過程如下:利用ClassWizard添加一個新類(1) 添加成員變量和成員函數(shù)添加成員變量:public:CRectm_ClientRect;/用來保存按鈕的客戶的矩形區(qū)域CRgnm_ClientRg

10、n;/用來保存按鈕的客戶區(qū)域,非矩形UINTm_State;/按鈕所處狀態(tài)CPointm_Point;/當前鼠標位置BOOLm_IsTimerOn;/標識計時器是否已經(jīng)打開利用ClassWizard添加消息映射和響應函數(shù):再利用ClassWizard覆蓋父類中的兩個關鍵的虛函數(shù):/AFX_VIRTUAL(CAdvButton)public:virtualvoidDrawItem(LPDRAWITEMSTRUCTlpDrawItemStruct);protected:virtualvoidPreSubclassWindow();/AFX_VIRTUAL其中對于所有的對于按鈕的繪制工作都是在Dra

11、wltem函數(shù)中完成的。(2) 添加創(chuàng)建按鈕控件代碼按鈕的創(chuàng)建分兩步完成。首先,調(diào)用構(gòu)造函數(shù)對按鈕對象進行初始化;其次,調(diào)用Create函數(shù)創(chuàng)建按鈕。(3) 屏蔽Enter鍵直到現(xiàn)在為止,雖然計算器的界面已經(jīng)完成。但是,它還有一個缺陷:當Enter鍵按下時,對話框應付突然關掉。這是因為對話框默認具有焦點的控件是OK鍵,當Enter鍵按下時,框架會自動執(zhí)行當前擁有焦點的控件的響應函數(shù),所以對話框自然就關閉了。要屏蔽這一功能,只要執(zhí)行下面的代碼就可以。voidCCalculatorDlg:OnOK()/CDialog:OnOK();/屏蔽掉此句代碼5測試5.1測試方案先用標準型進行簡單的四則運算:

12、+-*/,測試完成后。再用科學型進行稍復雜的運算:sin,cos,tan,log,ln,n!等,核對其計算結(jié)果的正確性。5.2 測試結(jié)果經(jīng)測試標準型計算器,進行簡單的四則運算,結(jié)果均正確,如圖5-1所示。圖5-1四則運算測試結(jié)果圖測試科學型計算器,進行sin,cos,tan,log,ln,n!等運算,結(jié)果均正確,求丄丄9-in=I_J-J_-1sin30(如圖5-2所示)。圖5-2求sin30測試結(jié)果圖(一)圖5-3求sin30測試結(jié)果圖(二)6小結(jié)通過一個多星期的折騰,總算把課程設計給完成了,這是一個堅苦而又漫長的過程??粗鴦趧映晒苄牢?!剛開始,可以說是完全沒有頭緒,于是上網(wǎng)查,找到了些

13、與我題目相似的源代碼,然后對之進行修改,測試,最后得到我這次課程設計所需要的代碼.通過計算器的設計這一課題的設計和實現(xiàn),我對簡單的C語言編程有了進一步C+課稈設計報告(2011)的認識,對MicrosoftVisualC+6.0這個程序的操作更加熟練了一些。回顧此次的課程設計,我學到了很多東西不僅鞏固了書本的知識并且與實踐相結(jié)合提高具體操作能力,在設計的過程中發(fā)現(xiàn)自己的不足,有些知識掌握的不夠牢靠,通過這次的課程設計之后我把前面所學的知識又重新溫故了一遍。同時,在老師和同學身上我學到了很多非常實用的知識,在此對給過我?guī)椭耐瑢W和老師表示由衷的感謝!17參考文獻1 譚浩強.C程序設計(第三版)M

14、.北京:清華大學出版社,2005.2 譚浩強.C程序設計題解與上機指導(第三版)M.北京:清華大學出版社,2005.3 甄煒.C+語言和面向?qū)ο蟪绦蛟O計教程M.北京:機械工業(yè)出版社,2005.附錄附錄1源程序清單/CalculatorDlg.cpp:implementationfile#includestdafx.h#includeCalculator.h#includeCalculatorDlg.h#includemath.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE=_FILE_;#endif/CAbo

15、utDlgdialogusedforAppAboutclassCAboutDlg:publicCDialogpublic:CAboutDlg();/DialogData/AFX_DATA(CAboutDlg)enumIDD=IDD_ABOUTBOX;/AFX_DATA/ClassWizardgeneratedvirtualfunctionoverrides/AFX_VIRTUAL(CAboutDlg)/DDX/DDVsupportprotected:virtualvoidDoDataExchange(CDataExchange*pDX);/AFX_VIRTUAL/Implementationp

16、rotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg():CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoidCAboutDlg:DoDataExchange(CDataExchange*pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg,CDialog)/AFX_MSG_MA

17、P(CAboutDlg)/Nomessagehandlers/AFX_MSG_MAPEND_MESSAGE_MAP()/CCalculatorDlgdialogCCalculatorDlg:CCalculatorDlg(CWnd*pParent/*=NULL*/):CDialog(CCalculatorDlg:IDD,pParent)/AFX_DATA_INIT(CCalculatorDlg)m_result=_T();m_isDegree=-1;m_sentific=-1;/AFX_DATA_INIT/NotethatLoadIcondoesnotrequireasubsequentDest

18、royIconinWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);m_hAccel=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDD);DtoR=1;m_coff=0.1;m_bCoff=0;m_errorState=ErrNone;m_bOperandAvail=FALSE;m_operator=OpNone;voidCCalculatorDlg:DoDataExchange(CDataExchange*pDX)CDialog:DoDataExchange(pDX);/AF

19、X_DATA_MAP(CCalculatorDlg)DDX_Text(pDX,IDC_DISPLAY,m_result);DDX_Radio(pDX,IDC_DEGREE,m_isDegree);DDX_Radio(pDX,IDC_SENTIFIC,m_sentific);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCalculatorDlg,CDialog)/AFX_MSG_MAP(CCalculatorDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_COMMAND_RANGE(IDC_0,IDC_9,

20、OnOperandInput)ON_BN_CLICKED(IDC_ADD,OnAdd)ON_BN_CLICKED(IDC_MINUS,OnMinus)ON_BN_CLICKED(IDC_DIVID,OnDivid)ON_BN_CLICKED(IDC_MULTIPLY,OnMultiply)ON_BN_CLICKED(IDC_EQUAL,OnEqual)ON_BN_CLICKED(IDC_SQRT,OnSqrt)ON_BN_CLICKED(IDC_SIGN,OnSign)ON_BN_CLICKED(IDC_RECIPROCAL,OnReciprocal)ON_BN_CLICKED(IDC_POI

21、NT,OnPoint)ON_BN_CLICKED(IDC_CLEAR,OnClear)ON_BN_CLICKED(IDC_LOG,OnLog)ON_BN_CLICKED(IDC_LN,OnLn)ON_BN_CLICKED(IDC_FACTORIAL,OnFactorial)ON_BN_CLICKED(IDC_EXP,OnExp)ON_BN_CLICKED(IDC_SENTIFIC,OnSentific)ON_BN_CLICKED(IDC_SIN,OnSin)ON_BN_CLICKED(IDC_SQUAR,OnSquar)ON_BN_CLICKED(IDC_TAN,OnTan)ON_BN_CLI

22、CKED(IDC_STANDARD,OnStandard)ON_BN_CLICKED(IDC_DEGREE,OnDegree)ON_BN_CLICKED(IDC_RAD,OnRad)ON_BN_CLICKED(IDC_COS,OnCos)/AFX_MSG_MAPEND_MESSAGE_MAP()C+課稈設計報告(2011)/CCalculatorDlgmessagehandlersBOOLCCalculatorDlg:OnInitDialog()CDialog:OnInitDialog();/AddAbout.menuitemtosystemmenu./IDM_ABOUTBOXmustbein

23、thesystemcommandrange.ASSERT(IDM_ABOUTBOX&0xFFF0)=IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOXAppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);/Settheiconforthisdialog.Theframeworkdoesthisautomatically/whentheapplicationsmainwindowisnotadialogSetIcon(m_hIcon,TRUE);/SetbigiconSe

24、tIcon(m_hIcon,FALSE);/Setsmallicon/TODO:AddextrainitializationhereGetWindowRect(rcSentific);CWnd*m_pMark=GetDlgItem(IDC_DISPLAY);ASSERT(m_pMark);CRectrect;m_pMark-GetWindowRect(rect);rcStandard=rcSentific;rcStandard.right=rect.right+5;m_bIsExpand=0;m_sentific=1;OnStandard();m_result=0.;m_isDegree=1;

25、UpdateData(FALSE);returnTRUE;/returnTRUEunlessyousetthefocustoacontrolvoidCCalculatorDlg:OnSysCommand(UINTnID,LPARAMlParam)if(nID&0xFFF0)=IDM_ABOUTBOX)CAboutDlgdlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID,lParam);/Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow/todrawtheicon.

26、ForMFCapplicationsusingthedocument/viewmodel,/thisisautomaticallydoneforyoubytheframework.19計算器的設計與實現(xiàn)voidCCalculatorDlg:OnPaint()if(IsIconic()CPaintDCdc(this);/devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);/CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_C

27、XICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;/Drawtheicondc.DrawIcon(x,y,m_hIcon);elseCDialog:OnPaint();/Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags/theminimizedwindow.HCURSORCCalculatorDl

28、g:OnQueryDragIcon()return(HCURSOR)m_hIcon;voidCCalculatorDlg:OnOperandInput(UINTnID)ASSERT(nID=IDC_0&nID=0&szButton0=1;i-)m_operand*=i;UpdateDisplay();/m_func=FuncNone;voidCCalculatorDlg:OnDegree()/TODO:Addyourcontrolnotificationhandlercodeherem_isDegree=0;DtoR=(2*PI)/360;UpdateData(FALSE);voidCCalc

29、ulatorDlg:OnRad()/TODO:Addyourcontrolnotificationhandlercodeherem_isDegree=1;DtoR=1;UpdateData(TRUE);voidCCalculatorDlg:OnCos()/TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncCos;Run_Func();voidCCalculatorDlg:ExpandToSentific()if(m_bIsExpand)SetWindowPos(NULL,0,0,rcSentific.Width(),rcSenti

30、fic.Height(),SWP_NOMOVE|SWP_NOZORDER);SetVisibleCtrl();elseSetWindowPos(NULL,0,0,rcStandard.Width(),rcSentific.Height(),SWP_NOMOVE|SWP_NOZORDER);SetVisibleCtrl();UpdateData(FALSE);voidCCalculatorDlg:SetVisibleCtrl()CWnd*pCtrl=GetWindow(GW_CHILD);CRectrcTest;CRectrcControl;CRectrcShow;GetWindowRect(rcShow);while(pCtrl!=NULL)pCtrl-GetWindowRect(rcControl);if(rcTest.IntersectRect(rcShow,rcControl)pCtrl-EnableWindow(TRUE);elsepCtrl-EnableWindow(FALSE);pCtrl=pCtrl-GetWindow(GW_HWNDNEXT);25

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!