制作一个计算器应用程序课程设计.docx
《制作一个计算器应用程序课程设计.docx》由会员分享,可在线阅读,更多相关《制作一个计算器应用程序课程设计.docx(8页珍藏版)》请在冰豆网上搜索。
制作一个计算器应用程序课程设计
制作一个计算器应用程序课程设计
..C++面向对象编程课程设计题目:
制作一个计算器应用程序学生姓名:
学号:
学生姓名:
学号:
学生姓名:
学号:
二级学院名称:
新媒体学院专业:
数字媒体技术指导教师:
成绩:
题目..题目内容
(1)完成整数+、-、、/、的功能。
(2)完成浮点数的+、-、、/、的功能。
(3)完成任意大小数字的+、-、、/、的功能。
功能分析通过按钮控件(对应为数字的输出)往编辑框内输入数据,再通过按钮控件(对应为算法的输出)进行对变量num1赋值的处理,最后通过按钮控件(对应为等于号)进行变量num2的赋值处理和num1、num2的算法处理并输出到编辑框内。
程序流程图所涉及类类的设计编译器所给的四个类(包含两个基类)类的相互关系所有的类都服务于myDlg.cpp..分步骤实现过程步骤1:
新建工程:
新建一个基于对话框的工程,取名为my。
步骤2:
界面设计(控件+背景图):
界面:
步骤3:
添加成员函数,成员变量:
1、成员函数:
双击每个控件在CmyDlg.cpp内添加所对应的函数。
2、成员变量:
如图:
编辑框对应的变量:
3、背景图片的导入:
引入bmp格式图片作为背景,在OnPaint()..函数里实现。
步骤4:
代码实现给每个控件对应的函数添加代码,用来实现计算器的功能。
效果分析与总结效果分析:
这次课程设计我们都十分用心的去做,最终的效果还是非常不错的,界面美观,运行准确无误。
在设计的过程中,我们不但做出题目要求的效果,而且还做出另外好几种效果,比如求倒数,平方开方等效果,但最终为了整体的和谐,简洁,美观等因素的考虑,我们删去了其中几个功能。
另外这是我们第一次使用MFC进行开发,很多事情都是从零开始,困难是必不可少的,但是我们互相帮助,鼓励,逐渐熟悉了MFC的使用方法。
最终出色地完成了这次课程设计。
总结:
整体上来讲,我们的程序可以执行题目要求的几个功能,界面也用心设计,是比较成功的一次课程设计。
体会:
这次课程设计最大的体会就是团队的力量是远大于个人的力量的,在遇到困难时才会感到个人力量的渺小,这时团队的优势就体现出来了,通过团队配合很多问题迎刃而解。
还有一点就是通过这次课程设计我们对软件开发有一个初步的了解,软件开发是一个富有挑战性的工作,需要团队的配合,个人的好想法,足够的耐心,严密的逻辑,出色的执行力,当然还要一个好体力,才能完成这项工作。
代码附录(另附压缩包)myDlg.h:
classCMyDlg:
publicCDialog{//Constructionpublic:
CMyDlg(CWnd*pParent=NULL);//standardconstructordoublenum1,num2;//添加变量charcal;BYTEdotflag;BYTEnumflag;intdotnum;//DialogData//{{AFX_DATA(CMyDlg)enum{IDD=IDD_MY_DIALOG};doublem_Num;//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides..//{{AFX_VIRTUAL(CMyDlg)protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:
HICONm_hIcon;//Generatedmessagemapfunctions//{{AFX_MSG(CMyDlg)virtualBOOLOnInitDialog();afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();afx_msgvoidOnChangeEdit1();afx_msgvoidOnButton1C();afx_msgvoidOnBUTTON2DIv();afx_msgvoidOnBUTTON3Mul();afx_msgvoidOnBUTTON4Backspace();afx_msgvoidOnButton5Num7();afx_msgvoidOnButton6Num8();afx_msgvoidOnButton7Num9();afx_msgvoidOnBUTTON8Sub();afx_msgvoidOnButton9Num4();afx_msgvoidOnButton10Num5();afx_msgvoidOnButton11Num6();afx_msgvoidOnBUTTON12Add();afx_msgvoidOnBUTTON16Sqrt();afx_msgvoidOnButton13Num1();afx_msgvoidOnButton14Num2();afx_msgvoidOnButton15Num3();afx_msgvoidOnBUTTON17fh();afx_msgvoidOnButton19Num0();afx_msgvoidOnBUTTON18Dot();afx_msgvoidOnBUTTON20Equal();//}}AFX_MSGDECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.#endif..//!
defined(AFX_MYDLG_H__5AD95B9B_1743_4BF8_B0FB_ED2935396407__INCLUDED_)myDlg.cpp:
#includestdafx.h#includemy.h#includemyDlg.h#includemath.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////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_MSGDECLARE_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_Num=0.0;//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);}voidCMyDlg:
:
DoDataExchange(CDataExchange*pDX){CDialog:
:
DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Text(pDX,IDC_EDIT1,m_Num);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg,CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_EN_CHANGE(IDC_EDIT1,OnChangeEdit1)ON_BN_CLICKED(IDC_BUTTON1_C,OnButton1C)ON_BN_CLICKED(IDC_BUTTON2_DIv,OnBUTTON2DIv)..ON_BN_CLICKED(IDC_BUTTON3_Mul,OnBUTTON3Mul)ON_BN_CLICKED(IDC_BUTTON4_Backspace,OnBUTTON4Backspace)ON_BN_CLICKED(IDC_BUTTON5_NUM7,OnButton5Num7)ON_BN_CLICKED(IDC_BUTTON6_NUM8,OnButton6Num8)ON_BN_CLICKED(IDC_BUTTON7_NUM9,OnButton7Num9)ON_BN_CLICKED(IDC_BUTTON8_Sub,OnBUTTON8Sub)ON_BN_CLICKED(IDC_BUTTON9_NUM4,OnButton9Num4)ON_BN_CLICKED(IDC_BUTTON10_NUM5,OnButton10Num5)ON_BN_CLICKED(IDC_BUTTON11_NUM6,OnButton11Num6)ON_BN_CLICKED(IDC_BUTTON12_Add,OnBUTTON12Add)ON_BN_CLICKED(IDC_BUTTON16_Sqrt,OnBUTTON16Sqrt)ON_BN_CLICKED(IDC_BUTTON13_NUM1,OnButton13Num1)ON_BN_CLICKED(IDC_BUTTON14_NUM2,OnButton14Num2)ON_BN_CLICKED(IDC_BUTTON15_NUM3,OnButton15Num3)ON_BN_CLICKED(IDC_BUTTON17_fh,OnBUTTON17fh)ON_BN_CLICKED(IDC_BUTTON19_NUM0,OnButton19Num0)ON_BN_CLICKED(IDC_BUTTON18_Dot,OnBUTTON18Dot)ON_BN_CLICKED(IDC_BUTTON20_Equal,OnBUTTON20Equal)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMyDlgmessagehandlersBOOLCMyDlg:
:
OnInitDialog()//初始化函数{CDialog:
:
OnInitDialog();//AddAbout...menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX0xF000);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’smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//Setsmallicon//TODO:
Addextrainitializationheredotnum=1;dotflag=0;numflag=0;returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCMyDlg:
:
OnSysCommand(UINTnID,LPARAMlParam){if((nID0xFFF0)==IDM_ABOUTBOX){CAboutDlgdlgAbout;dlgAbout.DoModal();}else{CDialog:
:
OnSysCommand(nID,lParam);}}//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework.voidCMyDlg:
:
OnPaint()//界面控制函数{if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);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{CPaintDCdc(this);//设置背景图片CRectrect;GetClientRect(rect);CDCdcMem;dcMem.CreateCompatibleDC(dc);CBitmapbmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP1);BITMAPbitmap;bmpBackground.GetBitmap(bitmap);CBitmap*pbmpOld=dcMem.SelectObject(bmpBackground);dc.StretchBlt(0,0,rect.Width(),rect.Height(),dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);}//CDialog:
:
OnPaint();}//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow.HCURSORCMyDlg:
:
OnQueryDragIcon(){return(HCURSOR)m_hIcon;}voidCMyDlg:
:
OnChangeEdit1(){//TODO:
IfthisisaRICHEDITcontrol,thecontrolwillnot//sendthisnotificationunlessyouoverridetheCDialog:
:
OnInitDialog()//functionandcallCRichEditCtrl().SetEventMask()//withtheENM_CHANGEflagORedintothemask.//TODO:
Addyourcontrolnotificationhandlercodehere}..voidCMyDlg:
:
OnButton1C()//清零函数{//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData();m_Num=0;num1=0;num2=0;numflag=0;dotflag=0;dotnum=1;UpdateData(FALSE);}voidCMyDlg:
:
OnBUTTON2DIv()//除法运算{//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData();num1=m_Num;cal=‘/’;numflag=0;dotflag=0;dotnum=1;}voidCMyDlg:
:
OnBUTTON3Mul()//乘法运算(以下类推){//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData();num1=m_Num;cal=‘*’;numflag=0;dotflag=0;dotnum=1;}voidCMyDlg:
:
OnBUTTON4Backspace()//退格函数{UpdateData();staticintdotnumstatic=dotnum;//一次初始化longtemp;if(dotflagnumflag)//撤销小数部分{if(dotnumstatic=10)..{temp=(long)(m_Num*dotnumstatic);m_Num=(double)(temp/10);dotnumstatic/=10;m_Num=m_Num/dotnumstatic;}}else//撤销整数部分{if(numflagm_Num){m_Num=(long)m_Num/10;}}UpdateData(FALSE);//TODO:
Addyourcontrolnotificationhandlercodehere}voidCMyDlg:
:
OnButton5Num7()//输入数字7(以下类推){//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData();if(dotflag){dotnum*=10;m_Num+=7/(double)dotnum;}else{if(numflag){m_Num=m_Num*10+7;}elsem_Num=7;}numflag=1;UpdateData(FALSE);}voidCMyDlg:
:
OnButton6Num8(){//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData();if(dotflag)..{dotnum*=10;m_Num+=8/(double)dotnum;}else{if(numflag){m_Num=m_Num*10+8;}elsem_Num=8;}numflag=1;UpdateData(FALSE);}voidCMyDlg:
:
OnButton7Num9(){//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData();if(dotflag){dotnum*=10;m_Num+=9/(double)dotnum;}else{if(numflag){m_Num=m_Num*10+9;}elsem_Num=9;}numflag=1;UpdateData(FALSE);}voidCMyDlg:
:
OnBUTTO