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

1、C++課程設計報告 (20--20年度第學期) 計算器的設計與實現(xiàn) 專業(yè)計算機科學與技術(shù) 學生姓名 班級 學號 指導教師 完成日期 目錄 1概述3 1.1課程設計目的3 1.2課程設計內(nèi)容3 2系統(tǒng)需求分析3 2.1系統(tǒng)目標3 2.2主體功能3 2.3開發(fā)環(huán)境3 3系統(tǒng)概要設計4 3.1系統(tǒng)功能劃分4 3.2系統(tǒng)流程圖5 4系統(tǒng)詳細設計5 4.1設計步驟5 4.2界面設計7 4.2實現(xiàn)高級按鈕控件類10 5測試11 5.1測試方案11 5.2測試結(jié)果11 6小結(jié)12 參考文獻14 附錄15 附錄1源程序清單15 C++課稈設計報告(

2、2011) 計算器的設計與實現(xiàn) 1概述 1.1 課程設計目的 1、鞏固并加深學生對C++語言程序設計知識的理解; 2、培養(yǎng)學生面向?qū)ο蟮某绦蛟O計思想,使學生認識面向過程和面向?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)用其科學型視

3、圖執(zhí)行高級的科學計算。 2系統(tǒng)需求分析 2.1 系統(tǒng)目標 我們在學習生活中,常會遇到一些繁雜的數(shù)值運算,這時候我們就必須用到科學計算器,所以便著手開發(fā)了這個計算器程序,以便用于自己的學習工作。要計算功能有以下幾個方面:加法,減法,乘法,除法,求冪,求模,求平方根,求Sin,求Cos。 2.2 主體功能 1、十進制數(shù)的加、減、乘、除、乘方、取模等簡單計算。 2、科學計算函數(shù),包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、指數(shù)等函數(shù)運算。 3、以角度、弧度兩種方式實現(xiàn)上述部分函數(shù)。 2.3 開發(fā)環(huán)境 VC++6.0 3系統(tǒng)概要設計 3.1 系統(tǒng)功能劃分 表3-1

4、系統(tǒng)功能表 序號 文件名 主要功能 備注 1 + 加法求和 兩個操作數(shù) 2 - 減法求差 兩個操作數(shù) 3 * 乘法求積 兩個操作數(shù) 4 / 除法求商 兩個操作數(shù) 5 % 求模 兩個操作數(shù) 6 A 求x的y次幕 兩個操作數(shù) 7 S 求平方根 一個操作數(shù) 8 Sin 求正弦 一個操作數(shù) 9 Cos 求余弦 一個操作數(shù) 10 In 求對數(shù) 一個操作數(shù) 11 n! 求階乘 一個操作數(shù) 12 = 等于 13 C 寄存器清零 1)假設執(zhí)行操作“+”,先輸入一個數(shù),再輸入“+”,再輸入另

5、一個數(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)選擇MFC AppWizard[exe]工程,輸入工程名cao及其所在位置,點擊確定,如圖4-1所示。 圖4-1新建MFCAppWizard[exe]工程 將彈出MFCAppWizard-step1對話框,

6、選擇基本對話框,點擊完成,如圖4-2所示。 圖4-2基本對話框 這樣,MFCAppWizard就建立了一個基于對話窗口的程序框架,如圖4-3所示。 衰骨的章音SSA工程揭M疥E工曇囲口聖吐 '-□國蓉習1- d? CCtioDIg ▼|(AllcIs^binieimtber貝T|^CCaDDIgi 二臥4齒 !-ia -口oiire&uurccB 由二JDiaDog由UIc4>n申口SBrinqTable由_□Version) 豈tao.n:-SDD.CAO.DIALOG(Dialog]|二回 AZ口函因.i味逛曰出匚血出四回耳嘔國¥比氏I-?ml

7、.--“L3団F dHI.... ?;?4-咅站直回 和11奎 ...n Rc?dy 圖4-3新建的對話框 4.2 界面設計 界面設計主要是創(chuàng)建控件,在圖4-3所示的ResoureView選項卡中打開Dialog資源組,雙擊IDD_ZH0UT0NG_DIAL0G,在右邊的窗口中顯示出待編輯的對話框。開始擺放控件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“1”為例進行介紹,其他按鈕的創(chuàng)建可參照此進行操作。 1)在圖4-3中Controls的“編輯框”按鈕上單擊鼠標左鍵,在對話框編輯窗口上合適的位置按下鼠標左鍵并拖動鼠標畫出一個大小合適的編輯框。在編輯框上單擊鼠標

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

9、 表4-1各按鈕和編輯框等對象的屬性 對象 ID 標題或說明 編輯框 IDCxianshi 結(jié)果顯示 按鈕 IDCBUTTONO 0 按鈕 IDCBUTTON1 1 按鈕 IDCBUTTON2 2 按鈕 IDCBUTTON3 3 按鈕 IDCBUTTON4 4 按鈕 IDCBUTTON5 5 按鈕 IDCBUTTON6 6 按鈕 IDCBUTTON7 7 按鈕 IDCBUTTON8 8 按鈕 IDCBUTTON9 9 按鈕 IDCchange +/- 按鈕 IDCpoint 按鈕 IDCadd + 按

10、鈕 IDCdifference - 按鈕 IDCchu / 按鈕 IDCtan tan 按鈕 IDCexp exp 按鈕 IDCmultiply * 按鈕 IDCsqrt sqrt 按鈕 IDCdaoshu 1/x 按鈕 IDCjiecheng n! 按鈕 IDCln In 按鈕 IDCsin sin 按鈕 IDCcos cos 按鈕 IDCpow xAy 按鈕 IDCOnequal = 完成后界面如圖4-6所示。 ° 1 Pl l |&| i 11 nn

11、 147 FI-OU上_1上丄 63:pI | || || C05I I sin 圖4-6設計界面 E3 加入標準型和科學型按鍵: S3cao Edit r科學型r標準型 E1M-JTI 丄丄上丄 1 E -y 4 圖4-7加入標準型和科學型按鍵界面 C++課程設計報告(2011) 運行界面效果如圖4-8: 13 L-.

12、 廣弧度 4 7 +/- 0 y 圖4-8科學型界面 4.3 實現(xiàn)高級按鈕控件類 因為本程序大多使用按鈕來完成我們所需的計算,所以在這里,我使用高級按鈕控件來實現(xiàn)操作,具體過程如下: 利用ClassWizard添加一個新類 (1) 添加成員變量和成員函數(shù) 添加成員變量: public: CRectm_ClientRect;//用來保存按鈕的客戶的矩形區(qū)域 CRgnm_ClientRgn;//用來保存按鈕的客戶區(qū)域,非矩形 UINTm_State;//按鈕所處狀態(tài) CPointm_Point

13、;//當前鼠標位置 BOOLm_IsTimerOn;//標識計時器是否已經(jīng)打開 利用ClassWizard添加消息映射和響應函數(shù):再利用ClassWizard覆蓋父類中的兩個關(guān)鍵的虛函數(shù): //{{AFX_VIRTUAL(CAdvButton) public: virtualvoidDrawItem(LPDRAWITEMSTRUCTlpDrawItemStruct); protected: virtualvoidPreSubclassWindow(); //}}AFX_VIRTUAL 其中對于所有的對于按鈕的繪制工作都是在Drawltem函數(shù)中完成的。 (2) 添加創(chuàng)建按鈕

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

15、算:+-*/,測試完成后。再用科學型進行稍復雜的運算: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 」_■」 ■-1 sin30'(如圖5-2所示)。 圖5-2求sin30測試結(jié)果圖(一) 圖5-3求sin30測試結(jié)果圖(二) 6小結(jié) 通過一個多星期的折騰,總算把課程

16、設計給完成了,這是一個堅苦而又漫長的過程??粗鴦趧映晒?,很欣慰! 剛開始,可以說是完全沒有頭緒,于是上網(wǎng)查,找到了些與我題目相似的源代碼,然后對之進行修改,測試,最后得到我這次課程設計所需要的代碼. 通過計算器的設計這一課題的設計和實現(xiàn),我對簡單的C語言編程有了進一步 C++課稈設計報告(2011) 的認識,對MicrosoftVisualC++6.0這個程序的操作更加熟練了一些。 回顧此次的課程設計,我學到了很多東西不僅鞏固了書本的知識并且與實踐相結(jié)合提高具體操作能力,在設計的過程中發(fā)現(xiàn)自己的不足,有些知識掌握的不夠牢靠,通過這次的課程設計之后我把前面所學的知識又重新溫故了一遍

17、。 同時,在老師和同學身上我學到了很多非常實用的知識,在此對給過我?guī)椭耐瑢W和老師表示由衷的感謝! 17 參考文獻 [1] 譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2005. [2] 譚浩強.C程序設計題解與上機指導(第三版)[M].北京:清華大學出版社,2005. [3] 甄煒.C++語言和面向?qū)ο蟪绦蛟O計教程[M].北京:機械工業(yè)出版社,2005. 附錄 附錄1源程序清單 //CalculatorDlg.cpp:implementationfile #include"stdafx.h" #include"Calculator.h" #i

18、nclude"CalculatorDlg.h" #include"math.h" #ifdef_DEBUG #definenewDEBUG_NEW #undefTHIS_FILE staticcharTHIS_FILE[]=__FILE__; #endif ///////////////////////////////////////////////////////////////////////////// //CAboutDlgdialogusedforAppAbout classCAboutDlg:publicCDialog { public: CAboutDlg

19、(); //DialogData //{{AFX_DATA(CAboutDlg) enum{IDD=IDD_ABOUTBOX}; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CAboutDlg) //DDX/DDVsupport protected: virtualvoidDoDataExchange(CDataExchange*pDX); //}}AFX_VIRTUAL //Implementation protected: //{{AFX_MSG(CAbou

20、tDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } voidCAboutDlg::DoDataExchange(CDataExchange*pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(

21、CAboutDlg,CDialog) //{{AFX_MSG_MAP(CAboutDlg) //Nomessagehandlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// //CCalculatorDlgdialog CCalculatorDlg::CCalculatorDlg(CWnd*pParent/*=NULL*/) :CDialog(CCalculatorDlg::IDD,pParent)

22、 { //{{AFX_DATA_INIT(CCalculatorDlg)m_result=_T(""); m_isDegree=-1; m_sentific=-1; //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_hAccel=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDD));DtoR=1; m_c

23、off=0.1; m_bCoff=0;m_errorState=ErrNone; m_bOperandAvail=FALSE;m_operator=OpNone; } voidCCalculatorDlg::DoDataExchange(CDataExchange*pDX) {CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCalculatorDlg)DDX_Text(pDX,IDC_DISPLAY,m_result);DDX_Radio(pDX,IDC_DEGREE,m_isDegree);DDX_Radio(pDX,IDC_SENTI

24、FIC,m_sentific);//}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCalculatorDlg,CDialog)//{{AFX_MSG_MAP(CCalculatorDlg)ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_COMMAND_RANGE(IDC_0,IDC_9,OnOperandInput) ON_BN_CLICKED(IDC_ADD,OnAdd)ON_BN_CLICKED(IDC_MINUS,OnMinus)ON_BN_CLICKED(IDC_DIVID,OnD

25、ivid)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_POINT,OnPoint)ON_BN_CLICKED(IDC_CLEAR,OnClear)ON_BN_CLICKED(IDC_LOG,OnLog)ON_BN_CLICKED(IDC_LN,OnLn) ON_

26、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_CLICKED(IDC_STANDARD,OnStandard)ON_BN_CLICKED(IDC_DEGREE,OnDegree)ON_BN_CLICKED(IDC_RAD,OnRad)ON_BN_C

27、LICKED(IDC_COS,OnCos)//}}AFX_MSG_MAP END_MESSAGE_MAP() C++課稈設計報告(2011) ///////////////////////////////////////////////////////////////////////////// //CCalculatorDlgmessagehandlers BOOLCCalculatorDlg::OnInitDialog() { CDialog::OnInitDialog(); //Add"About..."menuitemtosystemmenu. //IDM_ABO

28、UTBOXmustbeinthesystemcommandrange. ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000); CMenu*pSysMenu=GetSystemMenu(FALSE); if(pSysMenu!=NULL) { CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX); if(!strAboutMenu.IsEmpty()) {pSysMenu->AppendMenu(MF_SEPARATOR);pSy

29、sMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); } } //Settheiconforthisdialog.Theframeworkdoesthisautomatically //whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//Setbigicon SetIcon(m_hIcon,FALSE);//Setsmallicon //TODO:AddextrainitializationhereGetWindowRect(rcSentific

30、); 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; UpdateData(FALSE); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

31、 } voidCCalculatorDlg::OnSysCommand(UINTnID,LPARAMlParam) { if((nID&0xFFF0)==IDM_ABOUTBOX) { CAboutDlgdlgAbout;dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID,lParam); } } //Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow //todrawtheicon.ForMFCapplicationsusingthedoc

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

33、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); } else { CDialog::OnPaint(); } } //Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags //themi

34、nimizedwindow. HCURSORCCalculatorDlg::OnQueryDragIcon() { return(HCURSOR)m_hIcon; } voidCCalculatorDlg::OnOperandInput(UINTnID) { ASSERT(nID>=IDC_0&&nID<=IDC_9); if(m_errorState!=ErrNone)return; if(m_func!=FuncNone){ m_func=FuncNone;Calculate(); }if(!m_bOperandAvail)m_operand=0; if(!m_bC

35、off) m_operand=m_operand*10+(nID-IDC_0); else{ m_operand=m_operand+(nID-IDC_0)*m_coff;m_coff*=0.1; }m_bOperandAvail=TRUE; UpdateDisplay(); } voidCCalculatorDlg::Calculate() { if(m_errorState!=ErrNone) return; if(m_bOperandAvail) { # C++課稈設計報告(2011) if(m_operator==OpNone)m_accum=m_

36、operand; elseif(m_operator==OpMultiply)m_accum*=m_operand; elseif(m_operator==OpDivide) { if(m_operand==0) m_errorState=ErrDivideByZero; else m_accum/=m_operand; } elseif(m_operator==OpAdd)m_accum+=m_operand; elseif(m_operator==OpSubtract)m_accum-=m_operand; }m_bOperandAvail=FALSE; m_bCo

37、ff=0; m_coff=0.1; UpdateDisplay(); } voidCCalculatorDlg::UpdateDisplay() { if(GetSafeHwnd()==NULL) return; if(m_errorState!=ErrNone) m_result="除數(shù)不能為零";else { floatlVal=(m_bOperandAvail)?m_operand:m_accum;m_result.Format(_T("%f"),lVal);inti=m_result.GetLength();while(m_result.GetAt(i-1)=='

38、0') { m_result.Delete(i-1,1); i-=1; } } UpdateData(FALSE); } BOOLCCalculatorDlg::Keyboard(LPCTSTRszButton){ switch(szButton[0]) { case'c': case'C': OnClear(); break; case'/': OnDivid(); break; case'+': OnAdd(); break; case'-': OnMinus(); break; case'*': OnMultiply(); break;

39、 case'=': OnEqual(); break; default: if(szButton[0]>='0'&&szButton[0]<='9') { if(m_errorState!=ErrNone) returnFALSE; if(!m_bOperandAvail) m_operand=0; m_operand=m_operand*10+szButton[0]-'0'; m_bOperandAvail=TRUE; UpdateDisplay(); } else returnFALSE; break; } returnTRUE; } voidCC

40、alculatorDlg::OnAdd() { //TODO:Addyourcontrolnotificationhandlercodehere Calculate(); m_operator=OpAdd; } voidCCalculatorDlg::OnMinus() { //TODO:Addyourcontrolnotificationhandlercodehere Calculate(); m_operator=OpSubtract; } voidCCalculatorDlg::OnDivid() { //TODO:Addyourcontrolnotifica

41、tionhandlercodehere Calculate(); m_operator=OpDivide; } voidCCalculatorDlg::OnMultiply() { //TODO:Addyourcontrolnotificationhandlercodehere Calculate(); m_operator=OpMultiply; } voidCCalculatorDlg::OnEqual() { //TODO:Addyourcontrolnotificationhandlercodehere Calculate(); m_operator=OpN

42、one; } voidCCalculatorDlg::OnSign() { //TODO:Addyourcontrolnotificationhandlercodeherem_operand*=-1; UpdateDisplay(); } voidCCalculatorDlg::OnSqrt() { //TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncSqrt; Run_Func(); } voidCCalculatorDlg::OnReciprocal() { //TODO:Addyourcontr

43、olnotificationhandlercodeherem_func=FuncRec; Run_Func(); } voidCCalculatorDlg::OnPoint() { //TODO:Addyourcontrolnotificationhandlercodeherem_bCoff=1; UpdateDisplay(); } voidCCalculatorDlg::OnClear() { //TODO:Addyourcontrolnotificationhandlercodeherem_operator=OpNone; m_operand=0;m_accum=0

44、; m_bOperandAvail=FALSE;m_errorState=ErrNone; m_coff=0.1;UpdateDisplay(); } BOOLCCalculatorDlg::PreTranslateMessage(MSG*pMsg) { if(m_hAccel!=NULL&&TranslateAccelerator(m_hWnd,m_hAccel,pMsg))returnTRUE; returnCDialog::PreTranslateMessage(pMsg); } voidCCalculatorDlg::OnLog() { //TODO:Addyou

45、rcontrolnotificationhandlercodeherem_func=FuncLog; Run_Func(); } voidCCalculatorDlg::OnLn() { //TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncLn; Run_Func(); } voidCCalculatorDlg::OnFactorial() { //TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncN; Run_Func(); } void

46、CCalculatorDlg::OnExp() { //TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncExp; Run_Func(); } voidCCalculatorDlg::OnSentific() { //TODO:Addyourcontrolnotificationhandlercodeherem_bIsExpand=1; m_sentific=0; ExpandToSentific(); } voidCCalculatorDlg::OnSin() { //TODO:Addyourcontr

47、olnotificationhandlercodeherem_func=FuncSin; Run_Func(); } voidCCalculatorDlg::OnSquar() { //TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncSqre; Run_Func(); } voidCCalculatorDlg::OnTan() { //TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncTan; Run_Func(); } voidCCalc

48、ulatorDlg::OnStandard() { //TODO:Addyourcontrolnotificationhandlercodeherem_bIsExpand=0; m_sentific=1; ExpandToSentific(); } voidCCalculatorDlg::Run_Func() { if(m_errorState!=ErrNone)return; if(m_bOperandAvail) { if(m_func==FuncExp)m_operand=exp(m_operand); if(m_func==FuncLn)m_operand=lo

49、g(m_operand); if(m_func==FuncLog)m_operand=log10(m_operand); if(m_func==FuncSqrt)m_operand=sqrt(m_operand); if(m_func==FuncSqre)m_operand=pow(10,m_operand); if(m_func==FuncSin)m_operand=sin(m_operand*DtoR); 23 C++課稈設計報告(2011) if(m_func==FuncCos)m_operand=cos(m_operand*DtoR); if(m_func==F

50、uncTan)m_operand=tan(m_operand*DtoR); if(m_func==FuncRec)m_operand=1/m_operand; if(m_func=FuncN) { inti; for(i=m_operand-1;i>=1;i--)m_operand*=i; } } UpdateDisplay(); //m_func=FuncNone; } voidCCalculatorDlg::OnDegree() { //TODO:Addyourcontrolnotificationhandlercodeherem_isDegree=0; Dto

51、R=(2*PI)/360; UpdateData(FALSE); } voidCCalculatorDlg::OnRad() { //TODO:Addyourcontrolnotificationhandlercodeherem_isDegree=1; DtoR=1; UpdateData(TRUE); } voidCCalculatorDlg::OnCos() { //TODO:Addyourcontrolnotificationhandlercodeherem_func=FuncCos; Run_Func(); } voidCCalculatorDlg::Exp

52、andToSentific() { if(m_bIsExpand) { SetWindowPos(NULL,0,0,rcSentific.Width(),rcSentific.Height(),SWP_NOMOVE|SWP_NOZORDER); SetVisibleCtrl(); } else { SetWindowPos(NULL,0,0,rcStandard.Width(),rcSentific.Height(),SWP_NOMOVE|SWP_NOZORDER); SetVisibleCtrl(); } UpdateData(FALSE); } voidCCal

53、culatorDlg::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); else pCtrl->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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(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),我們立即給予刪除!