VC++课程设计实验报告_第1页
VC++课程设计实验报告_第2页
VC++课程设计实验报告_第3页
VC++课程设计实验报告_第4页
VC++课程设计实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《VC++课程设计》题目一:计算器学院:XXXXXXX班级:XXXXXXX学号:XXXXXXX姓名:XXXXXXX设计时间:XXXXXXX目录:需求分析---------------------------------------------1课题设计内容---------------------------------------1(1)课程设计基本流程------------------------------------------1(2)详细设计说明------------------------------------------------2(3)设计流程图---------------------------------------------------13(4)主要程序------------------------------------------------------14(5)运行结果截图-----------------------------------------------3.得意之处---------------------------------------------144.设计实践过程中的收获与体会------------------145.设计目前存在的问题--------------------------156.主要参考文献--------------------------------------需求分析本课程主要是完成一个简单计算器的设计,要求用户在使用时可以准确显示整数及小数,并准确进行加、减、乘、除、幂运算,最后实现清零和退出。课程设计内容课程设计基本流程:首先是进行MFC基本对话框的创建,然后设计界面,界面上包括数字按钮、等号按钮、小数点按钮、运算按钮、退出按钮、清零按钮和编辑框。并对各个按钮和编辑框的地址、标题进行更改,绑定变量。最后,建立函数,完成代码的编写,实现程序。详细设计说明:完成MFC基本对话框的创建后,进行界面设计。在界面的左上方设置编辑框,在其属性里将地址改为result,绑定变量名称为m_result,类型为String型。界面左面为数字键盘,右面为运算符号。然后对两部分分别进行组框。对各个按钮地址进行名称、地址更改。再建立类向导,在MessageMaps的Messages中选中BN_CLICKED,点击确定,完成绑定变量。双击各个按钮,建立函数,添加代码,实现数字按钮的执行与运算符按钮的执行。以下是对应控件:ID对应控件IDC_11IDC_22IDC_33IDC_44IDC_55IDC_66IDC_77IDC_88IDC_99IDC_00IDC_dengyudengyuIDC_diandianIDC_jiajiaIDC_jianjianIDC_chengchengIDC_chuchuIDC_mifangmifangIDC_qinglingqinglingIDC_tuichutuichuIDC_resultresult设计流程图:变量变量编辑框按钮编辑框按钮运算数字运算数字绑定变量绑定变量主要程序://计算器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);//数据的更新}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语句选择运行的运算,编程序进行运算并在编辑框显示出来运算结果。函数则不用点等于号直接显示结果。voidCMyDlg::Ondian(){ //TODO:Addyourcontrolnotificationhandlercodehere m_result+="."; UpdateData(false);}voidCMyDlg::Onjia(){ //TODO:Addyourcontrolnotificationhandlercodehere i=atof(m_result);//实现字符串到double的转换 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论