版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1.基本功能描述12.設(shè)計(jì)思路12.1相關(guān)說(shuō)明12.2各塊流程圖23.軟件設(shè)計(jì)73.1 設(shè)計(jì)步驟73.2 界面設(shè)計(jì)93.2.1添加圖標(biāo)92.2.2添加控件103.2.3添加菜單123.3 關(guān)鍵功能的實(shí)現(xiàn)144.結(jié)論與心得體會(huì)165.參考文獻(xiàn)176.思考題187.附錄207.1調(diào)試報(bào)告207.2測(cè)試結(jié)果217.3關(guān)鍵源代碼23簡(jiǎn)單計(jì)算器1.基本功能描述該簡(jiǎn)單計(jì)算器主要實(shí)現(xiàn)了雙目運(yùn)算和單目運(yùn)算功能。雙目運(yùn)算符包含基本的四則運(yùn)算及乘冪功能,單目運(yùn)算符主要包含正余弦,階乘,對(duì)數(shù),開(kāi)方,倒數(shù)等運(yùn)算,同時(shí)也包含角度制的轉(zhuǎn)換、科學(xué)型與標(biāo)準(zhǔn)型的轉(zhuǎn)換、輸出設(shè)計(jì)者信息、清除、退格、退出功能。簡(jiǎn)單計(jì)算器可對(duì)輸入
2、的任意操作數(shù),包括小數(shù)和整數(shù)及正數(shù)和負(fù)數(shù)進(jìn)行上述各種運(yùn)算并能實(shí)現(xiàn)連續(xù)運(yùn)算,并且能在出現(xiàn)錯(cuò)誤時(shí)給出相應(yīng)提示。同時(shí)也可以操作與運(yùn)算按鈕相對(duì)應(yīng)的菜單項(xiàng)。2.設(shè)計(jì)思路2.1相關(guān)說(shuō)明1)相關(guān)的變量標(biāo)志位:m_num:與編輯框相關(guān)聯(lián)的變量num1:作為臨時(shí)變量?jī)?chǔ)存當(dāng)時(shí)按下的按鈕值num2:作為臨時(shí)變量?jī)?chǔ)存編輯框的值m_hudu:角度制的標(biāo)志位,為0時(shí)為弧度m_jiao:角度轉(zhuǎn)換的臨時(shí)變量point:bool值,小數(shù)點(diǎn)有無(wú)標(biāo)志位,當(dāng)值為ture時(shí)為有小數(shù)點(diǎn)dianhou:小數(shù)點(diǎn)后位數(shù)記錄位danshuang:單雙目運(yùn)算符標(biāo)志位zhengfu:bool值,作為正負(fù)數(shù)標(biāo)志位,當(dāng)為ture時(shí)為正數(shù)2)主要功能設(shè)計(jì)
3、簡(jiǎn)述:該簡(jiǎn)單計(jì)算器的重難點(diǎn)主要在一個(gè)編輯框要實(shí)現(xiàn)輸入和輸出的顯示,小數(shù)的實(shí)現(xiàn),正負(fù)數(shù)的交替輸入,退格時(shí)數(shù)的實(shí)現(xiàn),單雙目運(yùn)算符的不同如何實(shí)現(xiàn)等方面。其中單目運(yùn)算符sin、cos、tan等要考慮角度轉(zhuǎn)換,之后的運(yùn)算和其他單目運(yùn)算符沒(méi)有差別,基于以上的考慮,想到必須對(duì)相關(guān)的操作進(jìn)行相應(yīng)的標(biāo)志位,具體的如上列舉。簡(jiǎn)單計(jì)算器,在輸入數(shù)據(jù)時(shí),調(diào)用輸入數(shù)據(jù)子程序。子程序開(kāi)始時(shí)m_num為零。按下數(shù)字按鈕后,判斷m_num的值是否為小數(shù),對(duì)其進(jìn)行相關(guān)處理,然后再判斷是否為正數(shù),處理后輸出結(jié)果。在sin、cos、tan運(yùn)算中首先利用角度轉(zhuǎn)換的標(biāo)志位m_hudu判斷當(dāng)時(shí)是度還是弧度,若是弧度可以直接調(diào)用函數(shù)進(jìn)行相
4、關(guān)計(jì)算,若是度則要進(jìn)行角度的轉(zhuǎn)換,在轉(zhuǎn)換時(shí)要記得Pi首先記性宏定義,然后調(diào)用數(shù)學(xué)函數(shù)進(jìn)行計(jì)算,最后對(duì)相關(guān)的各種標(biāo)志位進(jìn)行復(fù)位、并輸出結(jié)果到編輯框。流程圖以sin運(yùn)算為例。雙目運(yùn)算符運(yùn)算首先要進(jìn)行單雙目運(yùn)算符標(biāo)志位danshuang判斷,若不為0,則直接調(diào)用等號(hào)的函數(shù),可以完成上次的運(yùn)算,并且同時(shí)用num2記錄下與編輯框關(guān)聯(lián)的變量m_num的值,同時(shí)也記錄下此時(shí)danshuang標(biāo)志位的值便于在等號(hào)函數(shù)中進(jìn)行調(diào)用,在輸入第二個(gè)操作數(shù)后,按等號(hào)進(jìn)行對(duì)雙目運(yùn)算符的處理運(yùn)算,各項(xiàng)復(fù)位,并輸出結(jié)果到編輯框。流程圖以log運(yùn)算為例。整個(gè)計(jì)算器系統(tǒng)中,總的流程是:輸完第一個(gè)操作數(shù)后,若按下的運(yùn)算符是雙目運(yùn)算
5、符,則把m_num存入num2,按下輸入第二個(gè)操作數(shù)并按下“=”按鈕后算出結(jié)果。若按下的是單目運(yùn)算符,則直接對(duì)其輸入數(shù)據(jù)進(jìn)行處理得出結(jié)果。在運(yùn)算中還要判斷運(yùn)算是否合法(如log、ln等),以及結(jié)果是否超出顯示范圍,做出相關(guān)提示,按下清零,對(duì)各個(gè)標(biāo)志位、編輯框的值等進(jìn)行清零。算出后把結(jié)果保存并輸出顯示。若需要用算出的結(jié)果繼續(xù)運(yùn)算則回到輸入完第一個(gè)操作數(shù)后繼續(xù)進(jìn)相應(yīng)的流程,若不需要?jiǎng)t判斷試否需要開(kāi)始新一輪的運(yùn)算,不需要?jiǎng)t結(jié)束。2.2各塊流程圖Y繼續(xù)鍵入數(shù)字?N根據(jù)小數(shù)點(diǎn)后位數(shù)將鍵入的數(shù)除以n次10累加到m_numNNNYi=0point=turem_num =m_num+num1m_num =m_
6、num-num1i<dianhouUpdateData(FALSE)num1=num1/10i+YNzhengfu=tureY輸入的數(shù)據(jù)放入num1小數(shù)點(diǎn)后位數(shù)dianhou+開(kāi)始Ym_num =10*m_num+數(shù) 結(jié)束m_num =10*m_num-數(shù) zhengfu=ture圖1 輸入子函數(shù)流程圖輸入子函數(shù)m_jiao=1角m_hude=0m_num=sin(m_num*m_jiao)Updatedata(false)復(fù)位:point=false;zhengfu=ture;dianhou=0;Y結(jié)束jiem_jiao=(2*Pi)/360N開(kāi)始圖2 sin運(yùn)算程
7、序流程圖開(kāi)始輸入子函數(shù)num2=m_numDanshuang!=0m_num=0;danshuang=5輸入子函數(shù)復(fù)位:point=false;zhengfu=ture;dianhou=0;Y結(jié)束jieOnEqual();Nnum2=0 YNUpdatedata(false) 圖3 log運(yùn)算流程圖Y開(kāi)始輸入子函數(shù)m_num值保存到num2輸入子函數(shù)進(jìn)行運(yùn)算結(jié)果是否合適數(shù)據(jù)保存到m_num各項(xiàng)復(fù)位編輯框顯示錯(cuò)誤NY是否用結(jié)果繼續(xù)進(jìn)行運(yùn)算N結(jié)束jie是否重新開(kāi)始YN雙目運(yùn)算符 YN數(shù)據(jù)是否合法 YUpdatedata(false)編輯框顯示錯(cuò)誤N圖4 總的
8、流程圖3.軟件設(shè)計(jì)3.1 設(shè)計(jì)步驟打開(kāi)Microsoft Visual C+ 6.0應(yīng)用程序,在文件菜單中點(diǎn)擊新建,在彈出的對(duì)話框內(nèi)選擇MFC AppWizardexe工程,輸入工程名liuyunlong,并找到你要保存的位置,點(diǎn)擊確定。如下圖所示:圖5 建立MFC AppWizardexe工程圖在彈出MFC應(yīng)用程序向?qū)?步驟1對(duì)話框中,選擇基本對(duì)話框(D),若不用修改依次點(diǎn)擊“完成”、“確定”按鈕。如下圖所示:圖6 創(chuàng)建應(yīng)用程序類型圖此時(shí)就建立了一個(gè)基于對(duì)話窗口的應(yīng)用程序的大致框架,包括界面、主要的頭文件、實(shí)現(xiàn)文件等。如下圖所示:圖7 對(duì)話框基本框架創(chuàng)建完成圖3.2 界面設(shè)計(jì)3.2.1添加圖
9、標(biāo)1)在圖7所示的Resoure View選項(xiàng)卡中打開(kāi)Icon資源組,在Icon上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇引入選項(xiàng),此時(shí)彈出“引入資源”對(duì)話框,選擇要添加的圖標(biāo),之后單擊“引入”按鈕,如下圖所示:圖8 引入圖標(biāo)資源對(duì)話框圖2)在Icon資源組中此時(shí)會(huì)出現(xiàn)一個(gè)新的圖標(biāo)項(xiàng),ID:IDI_ICON1,將原來(lái)的圖標(biāo)項(xiàng)IDR_MAINFRAME用“delete”鍵刪除,鼠標(biāo)右鍵單擊IDI_ICON1在快捷菜單中選擇屬性項(xiàng),在圖標(biāo)屬性對(duì)話框中將新的圖標(biāo)ID改為IDR_MAINFRAME。如下圖所示:圖9 圖標(biāo)屬性對(duì)話框圖2.2.2添加控件在圖7所示的Resoure View選項(xiàng)卡中打開(kāi)Dial
10、og資源組,雙擊IDD_LIUYUNLONG_DIALOG,在右邊的工作區(qū)中顯示出要編輯的對(duì)話框。將對(duì)話框中原有的按鈕、靜態(tài)文本框按“delete”鍵刪除,之后開(kāi)始擺放所需要的控件,包括編輯框和按鈕。按鈕的添加以“0”為例,其他按鈕類似。1)在圖7中控件的“按鈕”按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框編輯窗口上合適的位置按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)大小合適的按鈕。在按鈕上單擊鼠標(biāo)右鍵,在彈出的快捷萊單中選擇屬性選項(xiàng),此時(shí)彈出Push Button屬性對(duì)話框,在該對(duì)話框中輸入ID號(hào)和標(biāo)題。如下圖所示: 圖10 Push Button屬性對(duì)話框圖2)在圖7中控件的“編輯框”按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框上的
11、合適的位置上按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)大小合適的編輯框。在編輯框上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)彈出Edit屬性對(duì)話框,在該對(duì)話框中輸入控件的ID值。如下圖所示:圖11 Edit屬性圖對(duì)應(yīng)的按鈕、編輯框?qū)傩匀缦卤恚罕? 按鈕和編輯框等對(duì)象屬性表控件ID標(biāo)題或說(shuō)明編輯框IDC_SHUCHU結(jié)果顯示按鈕IDC_NUMBER00按鈕IDC_NUMBER11按鈕IDC_NUMBER22按鈕IDC_NUMBER33按鈕IDC_NUMBER44按鈕IDC_NUMBER55按鈕IDC_NUMBER66按鈕IDC_NUMBER77按鈕IDC_NUMBER88按鈕IDC_NUMBER99
12、按鈕IDC_CHANGE+/-按鈕IDC_POINT.按鈕IDC_ADD+按鈕IDC_DIFFERENCE-按鈕IDC_MULTIPLY*按鈕IDC_DIVIDE/按鈕IDC_SGRTsqrt按鈕IDC_DAOSHU1/x按鈕IDC_JIECHENGn!按鈕IDC_LNln按鈕IDC_SINsin按鈕IDC_COScos按鈕IDC_MI101Ox按鈕IDC_LOGLog按鈕IDC_arcsinasin按鈕IDC_arccosacos按鈕IDC_EXPexp按鈕IDC_EQUAL=按鈕IDC_BACKSPACE按鈕IDC_CLERAC單選框IDC_RADIO_hudu弧度單選框IDC_RADIO
13、_jiaodu度3.2.3添加菜單1)在圖7所示的Resoure View選項(xiàng)卡中打開(kāi)Icon資源組,鼠標(biāo)右鍵單擊liuyunlong resource,在快捷菜單中單擊“插入”,彈出“插入資源”對(duì)話框,單擊Menu選項(xiàng),之后單擊“新建”。如下圖所示:圖12 插入資源對(duì)話框圖2)右鍵單擊菜單項(xiàng),修改菜單資源的ID為IDR_MENU,在工作區(qū)右鍵單擊矩形框,選擇屬性,在標(biāo)明里寫(xiě)要添加的菜單項(xiàng)名稱,同時(shí)修改ID。如下圖所示:圖13 添加的查看菜單項(xiàng)圖對(duì)應(yīng)的菜單屬性如下表:表2 菜單屬性表菜單選項(xiàng)ID=IDC_EQUAL.IDC_POINT+IDC_ADD-IDC_DIFFERENCE*IDC_MU
14、LTIPLY/IDC_DIVIDEsinIDC_SINcosIDC_COSasinIDC_arcsinacosIDC_arccosLogIDC_LOGlnIDC_LNsqrtIDC_SGRTexpIDC_EXP1OxIDC_MI10科學(xué)型ID_MENU_kexue標(biāo)準(zhǔn)型ID_MENU_biaozhunexitID_exit關(guān)于計(jì)算器ID_MENU_guanyu3)幫助菜單彈出對(duì)話框:右鍵單擊Dialog,在快捷菜單中單擊插入Dialog,確定,在新生成的對(duì)話框中加入靜態(tài)文本框,并編輯相應(yīng)的文字。如下圖所示:圖14 幫助菜單項(xiàng)彈出的對(duì)話框圖根據(jù)以上操作最終的界面圖:圖15 最終界面的顯示圖3.3
15、 關(guān)鍵功能的實(shí)現(xiàn)1)界面顏色的改變:首先重載對(duì)話框的CLiuyunlongDlg類的OnPaint()成員函數(shù),即WM_PAINT消息。利用GetClientRect()函數(shù)獲取窗口客戶區(qū)的坐標(biāo)。然后利用FillSolidRect成員函數(shù)用指定的固體色填充矩形,其中顏色由RGB函數(shù)進(jìn)行設(shè)定。2)窗口的伸縮的實(shí)現(xiàn):首先要在對(duì)話框中要伸縮的位置插入一個(gè)圖像控件,將其拉成一條直線,并取消可見(jiàn)。其次在實(shí)現(xiàn)文件里邊定義兩個(gè)靜態(tài)變量,用來(lái)存儲(chǔ)對(duì)話框尺寸信息。為了實(shí)現(xiàn)第一次顯示為標(biāo)準(zhǔn)型,所以獲取顯示尺寸和位置信息以及執(zhí)行SetWindowPos函數(shù)的最佳時(shí)機(jī)應(yīng)放在對(duì)話框創(chuàng)建之后,第一次顯示之前。為此利用WM
16、_INITDIALOG消息的響應(yīng)函數(shù)OnInitDialog來(lái)對(duì)對(duì)話框及控件進(jìn)行相關(guān)的設(shè)置和修改。該函數(shù)中利用GetDlgItem函數(shù)獲得圖像控件的窗口句柄,結(jié)合GetWindowRect函數(shù)得到圖像控件的矩形框。進(jìn)而進(jìn)行標(biāo)準(zhǔn)型參數(shù)的獲取,利用SetWindowPos()函數(shù)完成對(duì)對(duì)話框的寬度、高度等參數(shù)的初始化設(shè)置。最后添加相應(yīng)的菜單響應(yīng)函數(shù),在響應(yīng)函數(shù)里邊利用SetWindowPos()函數(shù)完成對(duì)對(duì)話框的寬度、高度等參數(shù)的設(shè)置。3)標(biāo)準(zhǔn)型和科學(xué)型選擇標(biāo)記的實(shí)現(xiàn):首先在對(duì)話框類的實(shí)現(xiàn)文件中添加ON_WM_INITMENUPOPUP入口到消息映射里面。其次在對(duì)話框類的頭文件中添加消息函數(shù)聲明a
17、fx_msg void OnInitMenuPopup(CMenu *pPopupMenu, UINT nIndex,BOOL bSysMenu);再次在對(duì)話框類的實(shí)現(xiàn)文件中添加相應(yīng)的void CLiuyunlongDlg OnInitMenuPopup函數(shù)代碼,該段代碼大部分取自WinFrm.cpp文件的函數(shù)CFrameWnd:OnInitMenuPopup()。最后在實(shí)現(xiàn)文件中定義兩個(gè)全局的布爾型變量kexue、biaozhun,通過(guò)這兩個(gè)變量的值判斷執(zhí)行的是標(biāo)準(zhǔn)型、科學(xué)型的哪一個(gè),并給標(biāo)準(zhǔn)型和科學(xué)型菜單項(xiàng)添加相應(yīng)的UPDATE_COMMAND_UI響應(yīng)函數(shù),在響應(yīng)函數(shù)里調(diào)用SetRadi
18、o函數(shù)來(lái)進(jìn)行標(biāo)記。4)幫助菜單中關(guān)于計(jì)算器菜單的實(shí)現(xiàn):首先創(chuàng)建新的對(duì)話框資源,在創(chuàng)建完對(duì)話框資源之后,生成一個(gè)相關(guān)的對(duì)話框類。其次創(chuàng)建相應(yīng)的菜單項(xiàng)資源,即添加幫助菜單,并添加相應(yīng)的CAMMAND消息響應(yīng)函數(shù),在響應(yīng)函數(shù)里邊定義對(duì)話框類對(duì)象,調(diào)用DoModal函數(shù)。5)操作數(shù)的實(shí)現(xiàn):首先通過(guò)小數(shù)標(biāo)志位point判斷當(dāng)前是否有小數(shù)點(diǎn),如果有用num1記錄當(dāng)前鍵入的數(shù)值,并將小數(shù)點(diǎn)后的位數(shù)標(biāo)志位加一,利用for循環(huán),實(shí)現(xiàn)該數(shù)在小數(shù)點(diǎn)哪一位,然后通過(guò)正負(fù)標(biāo)志位zhengfu判斷當(dāng)前數(shù)值是正數(shù)還是負(fù)數(shù),如果是正數(shù)直接將m_num和小數(shù)num1相加,如果是負(fù)號(hào)則m_num減去num1;如果沒(méi)有小數(shù)點(diǎn)則直接
19、判斷該數(shù)的正負(fù),若為正數(shù)則m_num乘10之后加上鍵入的數(shù),若為負(fù)號(hào)則m_num乘10之后減去鍵入的數(shù)。并把結(jié)果保存到m_num中,利用UpdateData(FALSE),刷新輸出到編輯框。6)退格鍵的實(shí)現(xiàn):首先判斷當(dāng)前數(shù)值是否是小數(shù),如果不是小數(shù)則對(duì)編輯框里邊的數(shù)進(jìn)行除10操作,然后利用fmod進(jìn)行取余操作,減去該十分位小數(shù);當(dāng)該數(shù)為小數(shù)時(shí),利用小數(shù)點(diǎn)后的位數(shù)標(biāo)志位dianhou 進(jìn)行for循環(huán),移動(dòng)小數(shù)點(diǎn)的位置,當(dāng)只有十分位時(shí)停止,減去該位,再次利用for循環(huán)將小數(shù)點(diǎn)移至原來(lái)的數(shù)后面,用UpdateData(FALSE),刷新輸出到編輯框。7)清除鍵的實(shí)現(xiàn):將編輯框連接的變量m_num,所
20、有的臨時(shí)變量num1、num2,標(biāo)志位dianhou、danshuang、point、zhengfu,進(jìn)行清零復(fù)位操作即可。8)角度值轉(zhuǎn)換的實(shí)現(xiàn):利用單選按鈕框,連接相應(yīng)的變量m_hudu,標(biāo)志當(dāng)前是弧度值,還是一般的度,如果是一般的度,令m_jiao=1,如果是弧度,令m_jiao=(2*Pi)/360,用m_jiao作為角度值轉(zhuǎn)換的臨時(shí)變量,當(dāng)前的編輯框值乘以m_jiao,進(jìn)行轉(zhuǎn)換,而在單選按鈕響應(yīng)函數(shù)中用UpdateData(true)更新數(shù)據(jù)到文檔中。9)單目運(yùn)算符的運(yùn)算實(shí)現(xiàn):首先對(duì)輸入的數(shù)值判斷是否合法,如開(kāi)平方、取對(duì)數(shù)、取倒數(shù)等操作,不合法時(shí)輸出響應(yīng)的提示,合法時(shí)利用數(shù)學(xué)函數(shù)進(jìn)行運(yùn)
21、算,并用m_num記錄結(jié)果,判斷結(jié)果是否超過(guò)double型的范圍,若超過(guò)則輸出提示,若沒(méi)有超過(guò)就更新到編輯框,最后對(duì)標(biāo)志位dianhou、point、zhengfu復(fù)位和臨時(shí)變量num1清零。10)雙目運(yùn)算符的運(yùn)算實(shí)現(xiàn):首先判斷單雙運(yùn)算符標(biāo)志位是否為0,如果不為0,便調(diào)用等號(hào)的消息響應(yīng)函數(shù),實(shí)現(xiàn)上次的雙目運(yùn)算。其次判斷num2是否為0,若為0,便將此時(shí)編輯框的值賦給num2,再將m_num值置0,設(shè)置當(dāng)前的雙目運(yùn)算符的標(biāo)志,并將point、zhengfu、dianhou復(fù)位。最后輸入數(shù)據(jù)后,按等號(hào)鍵調(diào)用相應(yīng)的消息響應(yīng)函數(shù),根據(jù)danshuang值來(lái)選擇相應(yīng)的算法,進(jìn)行運(yùn)算。4.結(jié)論與心得體會(huì)很
22、快兩周的時(shí)間就過(guò)去了,在這段時(shí)間里我真的是感觸頗多,隨著自己這兩周的時(shí)間一步一步的推進(jìn),自己對(duì)基于對(duì)話框的編程也越來(lái)越系統(tǒng)化,真的可以說(shuō)是獲益良多。這次課程設(shè)計(jì)是我們做的第三個(gè)課程設(shè)計(jì),每一個(gè)課程設(shè)計(jì)之后真的是感覺(jué)自己取得了平時(shí)學(xué)習(xí)所不能達(dá)到的效果。像以前的我做的帶通濾波器的設(shè)計(jì)、叮咚門鈴都使自己在電路理論、模電等方面的知識(shí)有一個(gè)很好的運(yùn)用與實(shí)踐,而這次的簡(jiǎn)單計(jì)算器的設(shè)計(jì)讓自己對(duì)面向?qū)ο缶幊逃幸粋€(gè)更好的認(rèn)識(shí),對(duì)mfc編程的有了進(jìn)一步的了解,并掌握了一些基本的功能的實(shí)現(xiàn)。我做的簡(jiǎn)單計(jì)算器的設(shè)計(jì)是基于對(duì)話框的,這個(gè)計(jì)算器除了簡(jiǎn)單的加減乘除等運(yùn)算,還要實(shí)現(xiàn)開(kāi)方、指數(shù)、取對(duì)數(shù)、冪、正余弦等運(yùn)算。而實(shí)現(xiàn)
23、這些功能尤其要注意的是單目運(yùn)算符和雙目運(yùn)算符的區(qū)別以及小數(shù)、正負(fù)號(hào)實(shí)現(xiàn)方法。當(dāng)時(shí)想了好久,最后通過(guò)和同學(xué)的探討,決定用相應(yīng)的標(biāo)志位對(duì)這些情況進(jìn)行判定,如小數(shù)點(diǎn)用布爾值point進(jìn)行標(biāo)記,而dianhou標(biāo)記小數(shù)點(diǎn)后的位數(shù)。在這些最基本的功能完成之后,我想增加一些其他功能,為此我打開(kāi)了電腦自帶的計(jì)算器,看了一下界面,看到電腦自帶的計(jì)算器能夠進(jìn)行窗口的伸縮,單擊幫助信息,能夠?qū)崿F(xiàn)彈出一個(gè)對(duì)話框,顯示該計(jì)算器的基本信息。對(duì)于這個(gè)彈出的對(duì)話框我參考了課件里最后一章節(jié)在單文檔中的實(shí)現(xiàn)方法,添加新的對(duì)話框資源,建立新的對(duì)話框類實(shí)現(xiàn)對(duì)話框的彈出。而窗口的伸縮我在網(wǎng)上搜了一些資料,利用在對(duì)話框中添加一個(gè)圖像控
24、件將其拉成直線,獲取該圖像控件的位置,實(shí)現(xiàn)對(duì)話框的大小變化。為了辨明此時(shí)選中的是標(biāo)準(zhǔn)型,還是科學(xué)型,我又想到在類型前加上點(diǎn),也參考了課件里的單文檔中的做法,添加UPDATE_COMMAND_UI響應(yīng)函數(shù),在響應(yīng)函數(shù)里調(diào)用SetRadio函數(shù)來(lái)進(jìn)行標(biāo)記。可是結(jié)果是當(dāng)點(diǎn)擊標(biāo)準(zhǔn)型或是科學(xué)型時(shí)沒(méi)有絲毫的反應(yīng),當(dāng)時(shí)根據(jù)課件看了好長(zhǎng)的時(shí)間,進(jìn)行修改仍是不行,后來(lái)無(wú)奈之下,求助于網(wǎng)上,看了資料后,我明白了,在單文檔和多文檔中的實(shí)現(xiàn)是一樣的,可是對(duì)于對(duì)話框則有些不一樣,原因就在于在一個(gè)基于對(duì)話框的程序中,因?yàn)闆](méi)有OnInitMenuPopup函數(shù),所以不會(huì)調(diào)用UPDATE_COMMAND_UI響應(yīng)函數(shù),而是使
25、用了CWnd類的默認(rèn)處理,為此就要將OnInitMenuPopup函數(shù)添加到實(shí)現(xiàn)文件里邊。之后再按課件里邊的進(jìn)行就可以了。這次課設(shè)進(jìn)行的真的是挺開(kāi)心的,本來(lái)自己對(duì)編程就感覺(jué)挺有興趣,對(duì)于這些東西老想做的更好一點(diǎn),每次在添加完一個(gè)新功能之后自己就感覺(jué)很高興,尤其是那些經(jīng)過(guò)很長(zhǎng)時(shí)間才解決的問(wèn)題,給自己的印象更加的深刻。在今后的學(xué)習(xí)中自己一定要把基礎(chǔ)給打好,基本功扎實(shí),同時(shí)也要善于思考,知道不同之間的聯(lián)系,相同之間的差異,并進(jìn)行總結(jié),在以后再隨后根據(jù)情況查詢寫(xiě)相關(guān)的資料,來(lái)完成所要求的功能。總的來(lái)說(shuō)這次的課程設(shè)計(jì)既鞏固了自己以前的MFC程序設(shè)計(jì)知識(shí),也拓展了自己的思維,增加了自己的動(dòng)手能力,最后也很
26、感謝老師給我們的支持以及嚴(yán)格要求!5.參考文獻(xiàn)1 揣錦華.面向?qū)ο蟪绦蛟O(shè)計(jì)與VC+實(shí)踐M.西安電子科技大學(xué)出版社,20052 張建宏,湯練兵,馬德駿.計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)-C語(yǔ)言程序設(shè)計(jì)M.北京:科學(xué)出版社,20093 姚領(lǐng)田精通MFC程序設(shè)計(jì)M北京:人民郵電出版社,20066.思考題1、程序中如何實(shí)現(xiàn)小數(shù)的顯示與運(yùn)算?答:首先在liuyunlongDlg.cpp實(shí)現(xiàn)文件中定義一個(gè)布爾型變量point來(lái)判斷是否為小數(shù),定義一個(gè)整型變量dianhou記錄小數(shù)點(diǎn)后的位數(shù)。當(dāng)輸入數(shù)時(shí)首先判斷point是否為true,若為true表示該數(shù)是小數(shù),用num1記錄當(dāng)前的鍵入值,同時(shí)對(duì)dianhou進(jìn)行加一,
27、根據(jù)dianhou進(jìn)行for循環(huán),進(jìn)行除以10操作,再根據(jù)該數(shù)的正負(fù),來(lái)決定是m_num加num1,還是減num1,用UpdateData(FALSE)刷新輸出到編輯框。在實(shí)現(xiàn)退格功能是,若point為true,則根據(jù)dianhou的值循環(huán)對(duì)m_num乘以10,將小數(shù)點(diǎn)移到只有十分位,利用fmod取余,將編輯框的變量值減去該余數(shù),最后再進(jìn)行循環(huán)將小數(shù)點(diǎn)移到原來(lái)數(shù)字的后邊。2、描述等號(hào)對(duì)應(yīng)的消息處理函數(shù)中需要處理的問(wèn)題及相應(yīng)的實(shí)現(xiàn)代碼?答:等號(hào)對(duì)應(yīng)的消息處理函數(shù)主要處理雙目運(yùn)算符的運(yùn)算。利用單雙目運(yùn)算符的標(biāo)志位danshuang,判斷其值選擇相應(yīng)的雙目運(yùn)算符的算法表達(dá)式進(jìn)行運(yùn)算,這些雙目運(yùn)算按順
28、序依次為:加法、減法、乘法、除法及取對(duì)數(shù)。其中在除法和取對(duì)數(shù)運(yùn)算中還要判斷操作數(shù)是否合法,如果不合法輸出提示內(nèi)容,如果合法進(jìn)行運(yùn)算。然后對(duì)結(jié)果判斷是否超過(guò)double型數(shù)據(jù)的顯示范圍,若超過(guò)也輸出提示信息。最后對(duì)相應(yīng)的標(biāo)志位進(jìn)行復(fù)位。實(shí)現(xiàn)代碼如下:switch (danshuang) /數(shù)據(jù)判斷case 1:m_num=num2+m_num; /兩數(shù)相加UpdateData(FALSE); /數(shù)據(jù)刷新break;case 2:m_num=num2-m_num; /兩數(shù)相減UpdateData(FALSE); /數(shù)據(jù)刷新break;case 3:m_num=num2*m_num; /兩數(shù)相乘Up
29、dateData(FALSE); /數(shù)據(jù)刷新break;case 4:if (m_num=0) /在除法中,判斷除數(shù)是否為0GetDlgItem(IDC_SHUCHU)->SetWindowText("輸入錯(cuò)誤,0不能作除數(shù)!");else m_num=num2/m_num;UpdateData(FALSE);break;case 5:if (m_num<=0|num2<=0) /判斷操作數(shù)是否合法GetDlgItem(IDC_SHUCHU)->SetWindowText("輸入錯(cuò)誤,取對(duì)數(shù)要為正數(shù)!");else m_num=l
30、og(m_num)/log(num2);UpdateData(FALSE); /取對(duì)數(shù)break;if(m_num>=1.7E308|m_num<-1.7E308)GetDlgItem(IDC_SHUCHU)->SetWindowText("結(jié)果過(guò)大,無(wú)法顯示");num2=m_num;num1=0;dianhou=0;point=FALSE;danshuang=0;zhengfu=TRUE;3、(選做)若實(shí)現(xiàn)了科學(xué)型和標(biāo)準(zhǔn)型,說(shuō)明科學(xué)型和標(biāo)準(zhǔn)型實(shí)現(xiàn)的關(guān)鍵算法?答:我做的科學(xué)型和標(biāo)準(zhǔn)型的實(shí)現(xiàn)方法和指導(dǎo)書(shū)上的推薦方法不同,指導(dǎo)書(shū)推薦的方法是通過(guò)單選按鈕,當(dāng)選
31、擇科學(xué)型時(shí)進(jìn)行科學(xué)型的按鈕被激活,可以運(yùn)算,當(dāng)選擇標(biāo)準(zhǔn)型的時(shí)候進(jìn)行科學(xué)型的按鈕不能進(jìn)行運(yùn)算。而我的實(shí)現(xiàn)方法是選擇伸縮框,初始時(shí)是標(biāo)準(zhǔn)型,界面上只有數(shù)值和簡(jiǎn)單的加減乘除等運(yùn)算按鈕,當(dāng)單擊科學(xué)型時(shí),對(duì)話框進(jìn)行了擴(kuò)展,出現(xiàn)了可以科學(xué)型運(yùn)算的部分。主要的實(shí)現(xiàn)方法:首先要在對(duì)話框中要伸縮的位置插入一個(gè)圖像控件,將其拉成一條直線,并取消可見(jiàn)。其次在實(shí)現(xiàn)文件里邊定義兩個(gè)靜態(tài)變量,用來(lái)存儲(chǔ)對(duì)話框尺寸信息。為了實(shí)現(xiàn)第一次顯示為標(biāo)準(zhǔn)型,所以獲取顯示尺寸和位置信息以及執(zhí)行SetWindowPos函數(shù)的最佳時(shí)機(jī)應(yīng)放在對(duì)話框創(chuàng)建之后,第一次顯示之前。為此利用WM_INITDIALOG消息的響應(yīng)函數(shù)OnInitDialo
32、g來(lái)對(duì)對(duì)話框及控件進(jìn)行相關(guān)的設(shè)置和修改。該函數(shù)中利用GetDlgItem()函數(shù)獲得圖像控件的窗口句柄,結(jié)合GetWindowRect()函數(shù)得到圖像控件的矩形框。進(jìn)而進(jìn)行標(biāo)準(zhǔn)型參數(shù)的獲取,利用SetWindowPos()函數(shù)完成對(duì)對(duì)話框的寬度、高度等參數(shù)的初始化設(shè)置。最后添加相應(yīng)的菜單響應(yīng)函數(shù),在響應(yīng)函數(shù)里邊利用SetWindowPos()函數(shù)完成對(duì)對(duì)話框的寬度、高度等參數(shù)的設(shè)置。7.附錄7.1調(diào)試報(bào)告1、error C2296: '%' : illegal, left operand has type 'double'解決辦法:因?yàn)槿∮鄶?shù)的運(yùn)算符%只能用于整
33、數(shù),不能用于浮點(diǎn)數(shù),經(jīng)過(guò)查詢資料知道用fmod可進(jìn)行取余運(yùn)算。2、在階乘運(yùn)算代碼中用“else GetDlgItem(IDC_SHUCHU)->SetWindowText("不是整數(shù)無(wú)法進(jìn)行階乘運(yùn)算");UpdateData(FALSE); /數(shù)據(jù)刷新”不能輸出相應(yīng)的提示語(yǔ)句。解決辦法:主要是因?yàn)樵谔崾菊Z(yǔ)句輸出后,立即進(jìn)行了編輯框的刷新,將其覆蓋,所以將updateData(FALSE)提前即可3、在進(jìn)行角度制轉(zhuǎn)換的時(shí),相應(yīng)的資源和代碼完成之后,運(yùn)行發(fā)現(xiàn)剛開(kāi)始沒(méi)有選中標(biāo)準(zhǔn)型和科學(xué)型的任何一個(gè)。解決辦法:經(jīng)分析應(yīng)該是沒(méi)有對(duì)單選按鈕相關(guān)聯(lián)的變量沒(méi)有進(jìn)行初始化,在CLiuy
34、unlongDlg:CLiuyunlongDlg(CWnd* pParent /*=NULL*/): CDialog(CLiuyunlongDlg:IDD, pParent) 中加入m_hudu=0,進(jìn)行初始化后得以解決。4、運(yùn)行時(shí)出現(xiàn)以下提示“l(fā)iuyunlong Microsoft 基礎(chǔ)類應(yīng)用程序已停止工作(出現(xiàn)了一個(gè)問(wèn)題,導(dǎo)致程序停止正常工作。請(qǐng)關(guān)閉改程序”。解決辦法:應(yīng)該是新加的擴(kuò)展與收縮對(duì)話框的變量CRect rectLarge;CRect rectSmall;所放的位置不對(duì),經(jīng)過(guò)嘗試放在了liuyunlongDlg.cpp文件中作為全局變量得以實(shí)現(xiàn)。7.2測(cè)試結(jié)果1)運(yùn)行后依次輸入
35、“12”,“/”,“2.4”,“*”,“0.5”,“-”,“6”,“+”,“2”,“=”得出結(jié)果為-1.5,之后結(jié)合相應(yīng)的菜單項(xiàng)中同樣輸入這組操作也得到這個(gè)結(jié)果。如下圖所示:圖16 標(biāo)準(zhǔn)型時(shí)運(yùn)算結(jié)果圖在運(yùn)行程序后剛開(kāi)始的界面如圖16所示,此時(shí)的界面為標(biāo)準(zhǔn)型,主要包括數(shù)字、清零、退格、負(fù)號(hào)、等號(hào)以及簡(jiǎn)單的加減乘除運(yùn)算按鈕,顯示編輯框和菜單項(xiàng)。并且根據(jù)計(jì)算知道該結(jié)果正確,且該計(jì)算器能實(shí)現(xiàn)運(yùn)算符的連續(xù)運(yùn)算。2)點(diǎn)擊查看菜單項(xiàng)中的科學(xué)型,輸入“2”,“asin”得到相應(yīng)的錯(cuò)誤提示如17圖所示;然后點(diǎn)擊“C”和單選按鈕“度”依次并輸入“90”,“sin”,“*”,“2”,“exp”,“l(fā)n” “sqrt
36、”得到相應(yīng)的結(jié)果,之后結(jié)合菜單項(xiàng)實(shí)現(xiàn)結(jié)果一直,如18圖所示:圖17 反正弦輸入錯(cuò)誤提示圖圖18 點(diǎn)擊科學(xué)型菜單后運(yùn)算結(jié)果圖在點(diǎn)擊查看菜單中的科學(xué)型選項(xiàng)后,如圖17、圖18所示,界面進(jìn)行了科學(xué)型的擴(kuò)展,添加了三角函數(shù)、冪、取對(duì)數(shù)、階乘等運(yùn)算按鈕及角度制轉(zhuǎn)換的單選按鈕。經(jīng)檢驗(yàn)和2相當(dāng)?shù)慕咏?,運(yùn)算結(jié)果無(wú)誤,且能實(shí)現(xiàn)對(duì)輸入的錯(cuò)誤操作數(shù)的錯(cuò)誤提示功能。該界面中還包含了編輯、查看、幫助菜單項(xiàng),其中編輯中主要是運(yùn)算符菜單,進(jìn)行數(shù)值計(jì)算,查看中包含了標(biāo)準(zhǔn)型、科學(xué)型、exit選項(xiàng),實(shí)現(xiàn)計(jì)算器界面的伸縮和退出,而在幫助菜單中是關(guān)于計(jì)算器菜單項(xiàng),點(diǎn)擊后顯示計(jì)算器的制作者信息。如下圖所示:圖19 關(guān)于計(jì)算器信息顯示圖
37、7.3關(guān)鍵源代碼/定義的相關(guān)變量BOOL zhengfu=true; / zhengfu定義為布爾值,判斷當(dāng)前值是否是正數(shù)還是負(fù)數(shù)int danshuang;/單雙目運(yùn)算符轉(zhuǎn)換int i;int dianhou;/diann判斷小數(shù)后的位數(shù)BOOL point=false; /point定義為布爾值,判斷是否有小數(shù)點(diǎn)bool kexue=false;bool biaozhun=TRUE;double num2;double num1;double m_jiao;/角度與弧度轉(zhuǎn)換臨時(shí)變量CRect rectLarge;CRect rectSmall;/新加的擴(kuò)展與收縮對(duì)話框的變量/編輯框和單選按
38、鈕的變量初始化CLiuyunlongDlg:CLiuyunlongDlg(CWnd* pParent /*=NULL*/): CDialog(CLiuyunlongDlg:IDD, pParent)/AFX_DATA_INIT(CLiuyunlongDlg)m_num = 0.0;m_hudu = 0;/弧度相關(guān)聯(lián)的變量初始化/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);/
39、圖標(biāo)顯示/界面伸縮式擴(kuò)展代碼BOOL CLiuyunlongDlg:OnInitDialog()/ TODO: Add extra initialization hereCRect rectSeparator;GetWindowRect(&rectLarge);GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);rectSmall.left=rectLarge.left;/對(duì)話框的左邊位置rectSmall.top=rectLarge.top;rectSmall.right=rectSeparator.righ
40、t;/圖像控件的位置rectSmall.bottom=rectLarge.bottom;SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(), SWP_NOMOVE|SWP_NOZORDER);/設(shè)置初始化時(shí)標(biāo)準(zhǔn)型界面return TRUE; / return TRUE unless you set the focus to a control/設(shè)置背景顏色所加代碼void CLiuyunlongDlg:OnPaint() if (IsIconic() elseCRect rect;CPaintDC dc(this);GetCli
41、entRect(rect);/獲取該對(duì)話框的位置坐標(biāo)dc.FillSolidRect(rect,RGB(11,125,111); /設(shè)置為綠色背景CDialog:OnPaint();/在標(biāo)準(zhǔn)和科學(xué)型菜單前面加點(diǎn)標(biāo)志為了使響應(yīng)函數(shù)調(diào)用所加的代碼void CLiuyunlongDlg:OnInitMenuPopup(CMenu *pPopupMenu, UINT nIndex,BOOL bSysMenu)ASSERT(pPopupMenu != NULL);/ Check the enabled state of various menu items.CCmdUI state;state.m_pM
42、enu = pPopupMenu;ASSERT(state.m_pOther = NULL);ASSERT(state.m_pParentMenu = NULL);/ Determine if menu is popup in top-level menu and set m_pOther to/ it if so (m_pParentMenu = NULL indicates that it is secondary popup).HMENU hParentMenu;if (AfxGetThreadState()->m_hTrackingMenu = pPopupMenu->m_
43、hMenu)state.m_pParentMenu = pPopupMenu; / Parent = child for tracking popup.else if (hParentMenu = :GetMenu(m_hWnd) != NULL)CWnd* pParent = this;/ Child windows don't have menus-need to go to the top!if (pParent != NULL &&(hParentMenu = :GetMenu(pParent->m_hWnd) != NULL)int nIndexMax
44、= :GetMenuItemCount(hParentMenu);for (int nIndex = 0; nIndex < nIndexMax; nIndex+)if (:GetSubMenu(hParentMenu, nIndex) = pPopupMenu->m_hMenu)/ When popup is found, m_pParentMenu is containing menu.state.m_pParentMenu = CMenu:FromHandle(hParentMenu);break;state.m_nIndexMax = pPopupMenu->GetM
45、enuItemCount();for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax;state.m_nIndex+)state.m_nID = pPopupMenu->GetMenuItemID(state.m_nIndex);if (state.m_nID = 0)continue; / Menu separator or invalid cmd - ignore it.ASSERT(state.m_pOther = NULL);ASSERT(state.m_pMenu != NULL);if (state.m_n
46、ID = (UINT)-1)/ Possibly a popup menu, route to first item of that popup.state.m_pSubMenu = pPopupMenu->GetSubMenu(state.m_nIndex);if (state.m_pSubMenu = NULL |(state.m_nID = state.m_pSubMenu->GetMenuItemID(0) = 0 |state.m_nID = (UINT)-1)continue; / First item of popup can't be routed to.s
47、tate.DoUpdate(this, TRUE); / Popups are never auto disabled.else/ Normal menu item./ Auto enable/disable if frame window has m_bAutoMenuEnable/ set and command is _not_ a system command.state.m_pSubMenu = NULL;state.DoUpdate(this, FALSE);/ Adjust for menu deletions and additions.UINT nCount = pPopup
48、Menu->GetMenuItemCount();if (nCount < state.m_nIndexMax)state.m_nIndex -= (state.m_nIndexMax - nCount);while (state.m_nIndex < nCount &&pPopupMenu->GetMenuItemID(state.m_nIndex) = state.m_nID)state.m_nIndex+;state.m_nIndexMax = nCount;/0到9數(shù)值的實(shí)現(xiàn)代碼,此處以0代替:void CLiuyunlongDlg:OnNumb
49、er0() / TODO: Add your control notification handler code hereif(danshuang=0)num2=0;if (point=TRUE) /當(dāng)前是否有小數(shù)點(diǎn),如果有num1=0; dianhou=dianhou+;for (i=0;i<dianhou;i+)num1=num1/10; /1/10,得到的小數(shù)放入輸出框中if (zhengfu=TRUE) /當(dāng)前值是否是正數(shù)還是負(fù)數(shù),如果是正數(shù)m_num=m_num+num1; /前面不加負(fù)號(hào)elsem_num=m_num-num1; /否則前面加負(fù)號(hào)else if(zhengfu
50、=TRUE)m_num=m_num*10; /單擊數(shù)字鍵0后把數(shù)據(jù)傳送到輸出框中else m_num=m_num*10;UpdateData(FALSE); /數(shù)據(jù)刷新/小數(shù)點(diǎn)的按鈕的響應(yīng)函數(shù)void CLiuyunlongDlg:OnPoint() / TODO: Add your control notification handler code herepoint=true;/小數(shù)點(diǎn)標(biāo)志位賦值/負(fù)號(hào)按鈕的響應(yīng)函數(shù)void CLiuyunlongDlg:OnChange() / TODO: Add your control notification handler code hereif(
51、m_num=0)zhengfu=false;/負(fù)號(hào)標(biāo)志位賦值/清零實(shí)現(xiàn)void CLiuyunlongDlg:OnClera() / TODO: Add your control notification handler code herem_num=0; /輸出框清0num1=0; /變量1為0num2=0; /變量2為0dianhou=0; /小數(shù)無(wú)位數(shù)danshuang=0; point=FALSE; /當(dāng)前無(wú)小數(shù)zhengfu=TRUE; UpdateData(FALSE); /數(shù)據(jù)刷新/退格鍵實(shí)現(xiàn)void CLiuyunlongDlg:OnBackspace() / TODO: Ad
52、d your control notification handler code hereUpdateData(true);if (point=FALSE ) /判斷當(dāng)前是否有小數(shù)點(diǎn),如果沒(méi)有m_num=m_num/10-fmod(m_num/10,1); /去掉末位即此時(shí)的小數(shù)位elseif ( dianhou>0) /如果是小數(shù)for (i=0;i<dianhou-1;i+) /移動(dòng)小數(shù)點(diǎn)m_num=m_num*10; /移動(dòng)至只有一個(gè)小數(shù)位m_num=m_num-fmod(m_num,1); /去掉小數(shù)位for (i=0;i<dianhou-1;i+) /小數(shù)點(diǎn)移至原來(lái)位置m_num=m_num/10; dianhou=dianhou-;if (dianhou=0)point=FALSE;if(m_num=0)zhengfu=TRUE;UpdateData(FALSE); /數(shù)據(jù)刷新/加減乘除、取對(duì)數(shù)實(shí)現(xiàn)代碼,以減法為例void CLiuyu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第5單元 走向近代(高頻選擇題50題)(原卷版)
- 八年級(jí)下冊(cè)期末考試模擬卷01(答案及解析)
- 2024年婚姻年度總結(jié)
- 《家庭裝修銷售》課件
- 班級(jí)動(dòng)態(tài)管理與調(diào)整策略計(jì)劃
- 話務(wù)員旅游服務(wù)行業(yè)客服
- 深度探索莎翁人性
- 大學(xué)生產(chǎn)實(shí)習(xí)報(bào)告四篇
- 安全防范工程師的職責(zé)和任務(wù)描述
- 銷售提成方案范文集錦7篇
- 鐵路工程-軌道工程施工工藝及方案
- 福建省福州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 《高中語(yǔ)文文言斷句》一等獎(jiǎng)優(yōu)秀課件
- 上海市中小學(xué)生學(xué)籍信息管理系統(tǒng)
- (完整版)自動(dòng)感應(yīng)門施工方案
- [QC成果]提高剪力墻施工質(zhì)量一次合格率
- 8站小車呼叫的plc控制
- _ 基本粒子與宏觀物體內(nèi)在聯(lián)系
- 象棋比賽積分編排表
- 小學(xué)贛美版六年級(jí)美術(shù)上冊(cè)第二十課向往和平課件(16張)ppt課件
- DPP4抑制劑比較篇PPT課件
評(píng)論
0/150
提交評(píng)論