




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《VC++課程設(shè)計》題目一:計算器學(xué)院:XXXXXXX班級:XXXXXXX學(xué)號:XXXXXXX姓名:XXXXXXX設(shè)計時間:XXXXXXX目錄:需求分析---------------------------------------------1課題設(shè)計內(nèi)容---------------------------------------1(1)課程設(shè)計基本流程------------------------------------------1(2)詳細設(shè)計說明------------------------------------------------2(3)設(shè)計流程圖---------------------------------------------------13(4)主要程序------------------------------------------------------14(5)運行結(jié)果截圖-----------------------------------------------3.得意之處---------------------------------------------144.設(shè)計實踐過程中的收獲與體會------------------145.設(shè)計目前存在的問題--------------------------156.主要參考文獻--------------------------------------需求分析本課程主要是完成一個簡單計算器的設(shè)計,要求用戶在使用時可以準(zhǔn)確顯示整數(shù)及小數(shù),并準(zhǔn)確進行加、減、乘、除、冪運算,最后實現(xiàn)清零和退出。課程設(shè)計內(nèi)容課程設(shè)計基本流程:首先是進行MFC基本對話框的創(chuàng)建,然后設(shè)計界面,界面上包括數(shù)字按鈕、等號按鈕、小數(shù)點按鈕、運算按鈕、退出按鈕、清零按鈕和編輯框。并對各個按鈕和編輯框的地址、標(biāo)題進行更改,綁定變量。最后,建立函數(shù),完成代碼的編寫,實現(xiàn)程序。詳細設(shè)計說明:完成MFC基本對話框的創(chuàng)建后,進行界面設(shè)計。在界面的左上方設(shè)置編輯框,在其屬性里將地址改為result,綁定變量名稱為m_result,類型為String型。界面左面為數(shù)字鍵盤,右面為運算符號。然后對兩部分分別進行組框。對各個按鈕地址進行名稱、地址更改。再建立類向?qū)?,在MessageMaps的Messages中選中BN_CLICKED,點擊確定,完成綁定變量。雙擊各個按鈕,建立函數(shù),添加代碼,實現(xiàn)數(shù)字按鈕的執(zhí)行與運算符按鈕的執(zhí)行。以下是對應(yīng)控件:ID對應(yīng)控件IDC_11IDC_22IDC_33IDC_44IDC_55IDC_66IDC_77IDC_88IDC_99IDC_00IDC_dengyudengyuIDC_diandianIDC_jiajiaIDC_jianjianIDC_chengchengIDC_chuchuIDC_mifangmifangIDC_qinglingqinglingIDC_tuichutuichuIDC_resultresult設(shè)計流程圖:變量變量編輯框按鈕編輯框按鈕運算數(shù)字運算數(shù)字綁定變量綁定變量主要程序://計算器Dlg.cpp:implementationfile//#include"stdafx.h"#include"計算器.h"#include"計算器Dlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endifdoublei;//代表不同于m_result的變量,主要用于運算intj;//定義整型變量j,并在輸入運算符時賦值///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public: CAboutDlg();//DialogData //{{AFX_DATA(CAboutDlg) enum{IDD=IDD_ABOUTBOX}; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport //}}AFX_VIRTUAL//Implementationprotected: //{{AFX_MSG(CAboutDlg) //}}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(CAboutDlg,CDialog) //{{AFX_MSG_MAP(CAboutDlg) //Nomessagehandlers //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMyDlgdialogCMyDlg::CMyDlg(CWnd*pParent/*=NULL*/) :CDialog(CMyDlg::IDD,pParent){ //{{AFX_DATA_INIT(CMyDlg) m_result=_T(""); //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCMyDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMyDlg) DDX_Text(pDX,IDC_result,m_result); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg,CDialog) //{{AFX_MSG_MAP(CMyDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_1,On1) ON_BN_CLICKED(IDC_2,On2) ON_BN_CLICKED(IDC_3,On3) ON_BN_CLICKED(IDC_4,On4) ON_BN_CLICKED(IDC_5,On5) ON_BN_CLICKED(IDC_6,On6) ON_BN_CLICKED(IDC_7,On7) ON_BN_CLICKED(IDC_8,On8) ON_BN_CLICKED(IDC_9,On9) ON_BN_CLICKED(IDC_0,On0) ON_BN_CLICKED(IDC_dengyu,Ondengyu) ON_BN_CLICKED(IDC_dian,Ondian) ON_BN_CLICKED(IDC_jia,Onjia) ON_BN_CLICKED(IDC_jian,Onjian) ON_BN_CLICKED(IDC_cheng,Oncheng) ON_BN_CLICKED(IDC_chu,Onchu) ON_BN_CLICKED(IDC_mifang,Onmifang) ON_BN_CLICKED(IDC_qingling,Onqingling) ON_BN_CLICKED(IDC_tuichu,Ontuichu) ON_EN_CHANGE(IDC_result,Onresult) //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMyDlgmessagehandlersBOOLCMyDlg::OnInitDialog(){ CDialog::OnInitDialog(); //Add"About..."menuitemtosystemmenu. //IDM_ABOUTBOXmustbeinthesystemcommandrange. 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); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); } } //Settheiconforthisdialog.Theframeworkdoesthisautomatically //whentheapplication'smainwindowisnotadialog SetIcon(m_hIcon,TRUE); //Setbigicon SetIcon(m_hIcon,FALSE); //Setsmallicon //TODO:Addextrainitializationhere returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCMyDlg::OnSysCommand(UINTnID,LPARAMlParam){ if((nID&0xFFF0)==IDM_ABOUTBOX) { CAboutDlgdlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID,lParam); }}//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework.voidCMyDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0); //Centericoninclientrectangle intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; //Drawtheicon dc.DrawIcon(x,y,m_hIcon); } else { CDialog::OnPaint(); }}//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow.HCURSORCMyDlg::OnQueryDragIcon(){ return(HCURSOR)m_hIcon;}voidCMyDlg::On1(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="1"; UpdateData(false);//數(shù)據(jù)的更新}voidCMyDlg::On2(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="2"; UpdateData(false);}voidCMyDlg::On3(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="3"; UpdateData(false);}voidCMyDlg::On4(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="4"; UpdateData(false);}voidCMyDlg::On5(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="5"; UpdateData(false);}voidCMyDlg::On6(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="6"; UpdateData(false);}voidCMyDlg::On7(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="7"; UpdateData(false);}voidCMyDlg::On8(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="8"; UpdateData(false);}voidCMyDlg::On9(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="9"; UpdateData(false);}voidCMyDlg::On0(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="0"; UpdateData(false);}voidCMyDlg::Ondengyu(){ //TODO:Addyourcontrolnotificationhandlercodehere doublek=0;switch(j) {case1:k=i+atof(m_result);break;case2:k=i-atof(m_result);break;case3:k=i*atof(m_result);break;case4:if(atof(m_result)!=0) {k=i/atof(m_result);break; }else {MessageBox("can'tusezero!"); } case7: { doublem=atof(m_result); k=1; for(m;m>=1;m--) { k=k*i; } break; } }charcRet[50];memset(cRet,0,50);sprintf(cRet,"%f",k);m_result=cRet;UpdateData(FALSE);//所有iQian與iType清0i=0;j=0;m_result="";return;}//等于號中定義了一個整形變量j,并在輸入運算符的時候賦值,用switch語句選擇運行的運算,編程序進行運算并在編輯框顯示出來運算結(jié)果。函數(shù)則不用點等于號直接顯示結(jié)果。voidCMyDlg::Ondian(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="."; UpdateData(false);}voidCMyDlg::Onjia(){ //TODO:Addyourcontrolnotificationhandlercodehere i=atof(m_result);//實現(xiàn)字符串到double的轉(zhuǎn)換 j=1; m_result+="+"; m_result=""; UpdateData(false);}voidCMyDlg::Onjian(){ //TODO:Addyourcontrolnotificationhandlercodehere i=atof(m_result); j=2; m_result+="-"; m_result=""; UpdateData(false);}voidCMyDlg::Oncheng(){ //TODO:Addyourcontrolnotificationhandlercodehere i=atof(m_result); j=3; m_result+="*"; m_result=""; UpdateData(false);}voidCMyDlg::Onchu(){ //TODO:Addyourcontrolnotificationhandlercodehere i=atof(m_result); j=4; m_result+="/"; m_result=""; UpdateData(false);}voidCMyDlg::Onmifang(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="^"; i=atof(m_result); m_result=""; j=7; UpdateData(false);}voidCMyDlg::Onqingling(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result=""; UpdateData(false);//編輯框的清空}voidCMyDlg::Ontuichu(){ //TODO:AddyourcontrolnotificationhandlercodehereCDialog::OnCancel();//程序的退出}voidCMyDlg::Onresult(){ //TODO:IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCDialog::OnInitDialog() //functionandcallCRichEditCtrl().SetEvent
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力行業(yè)員工薪酬福利合同
- 勞動合同 月度范文
- 大型商業(yè)綜合體裝修合同
- 建筑工地安全施工合同書
- 廢舊物資循環(huán)利用合同項目2025
- 生產(chǎn)制造合同合作書
- 商品房購回合同條款
- 房地產(chǎn)租賃管理合同范本
- 訂單班人才培養(yǎng)協(xié)議(范本)
- 無機鹽產(chǎn)品在農(nóng)業(yè)領(lǐng)域的應(yīng)用考核試卷
- GB 8537-2018食品安全國家標(biāo)準(zhǔn)飲用天然礦泉水
- GB 31247-2014電纜及光纜燃燒性能分級
- 主要農(nóng)作物(糧食作物)課件
- 部編人教版道德與法治五年級下冊全冊課時練習(xí)講解課件
- 廉政鑒定書(院內(nèi)廉政意見書)
- 《潘姓源于固始,是不爭的史實》的考辨
- 園林景觀工程細節(jié)
- 焊接技師培訓(xùn)教材(釬焊)課件
- 2022年中級注冊安全工程師(安全生產(chǎn)法及相關(guān)法律知識)考試題庫模考300題及答案下載(四川省專用)
- 《未成年人保護法》課件
- 原發(fā)性肝癌經(jīng)皮肝動脈化療栓塞術(shù)(TACE)臨床路徑
評論
0/150
提交評論