软件基础课程设计报告C语言MFC计算器设计.doc
《软件基础课程设计报告C语言MFC计算器设计.doc》由会员分享,可在线阅读,更多相关《软件基础课程设计报告C语言MFC计算器设计.doc(21页珍藏版)》请在咨信网上搜索。
软件基础课程设计报告 一、需求分析 系统目标:设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。 主体功能:程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等。 开发环境:操作系统:Windows XP 编程环境:Microsoft Visual C++ 6.0 二、功能说明 (1)包含的功能有:加、减、乘、除运算,开方、求倒数、三角函数、弧度与角度间的转换、对数指数的计算等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)给对话框添加菜单。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算,“Back”按钮可以实现退位功能。 (7)能够显示时间、日期。 三、详细设计 (1)流程图 创建工程(创建一个对话框应用程序) 设计对话框界面 设置各控件属性 为编辑框连接成员变量 为类添加数据成员,初始化构造函数。 为所有按钮添加事件 对类添加成员函数(更新编辑框)并进行实现 实现对各按钮事件的实现 (2)编辑资源 (3)效果图 四、程序附录 计算器Dlg.cpp : #include "stdafx.h" #include "计算器.h" #include "计算器Dlg.h" #include "math.h" #include"FirstDlg.h" #include <windows.h> #define PI 3.14; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMyDlg dialog CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg::IDD, pParent) { //{{AFX_DATA_INIT(CMyDlg) m_result = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMyDlg) DDX_Control(pDX, IDC_EDIT1, m_EDIT); DDX_Text(pDX, IDC_EDIT1, 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_NUM0, OnNum0) ON_BN_CLICKED(IDC_NUM1, OnNum1) ON_BN_CLICKED(IDC_NUM2, OnNum2) ON_BN_CLICKED(IDC_NUM3, OnNum3) ON_BN_CLICKED(IDC_NUM4, OnNum4) ON_BN_CLICKED(IDC_NUM5, OnNum5) ON_BN_CLICKED(IDC_NUM6, OnNum6) ON_BN_CLICKED(IDC_NUM7, OnNum7) ON_BN_CLICKED(IDC_NUM8, OnNum8) ON_BN_CLICKED(IDC_NUM9, OnNum9) ON_BN_CLICKED(IDC_DOT, OnDot) ON_BN_CLICKED(IDC_CE, OnCe) 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_dengyu, Ondengyu) ON_BN_CLICKED(IDC_daoshu, Ondaoshu) ON_BN_CLICKED(IDC_zhengfu, Onzhengfu) ON_BN_CLICKED(IDC_BACKSPACE, OnBackspace) ON_BN_CLICKED(IDC_Ln, OnLn) ON_BN_CLICKED(IDC_log, Onlog) ON_BN_CLICKED(IDC_RADIO2, OnRadio2) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_sqrt, Onsqrt) ON_BN_CLICKED(IDC_sin, Onsin) ON_BN_CLICKED(IDC_cos, Oncos) ON_BN_CLICKED(IDC_tan, Ontan) ON_BN_CLICKED(IDC_pingfang, Onpingfang) ON_BN_CLICKED(IDC_lifang, Onlifang) ON_BN_CLICKED(IDC_mi, Onmi) ON_BN_CLICKED(IDC_Exp, OnExp) ON_BN_CLICKED(IDC_10demi, On10demi) ON_BN_CLICKED(IDC_jiecheng, Onjiecheng) ON_COMMAND(ID_TIME, OnTime) ON_COMMAND(ID_DATE, OnDate) ON_COMMAND(ID_EXIT, OnExit) ON_COMMAND(ID_HELP, OnHelp) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMyDlg message handlers BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); UpdateData(FALSE); quan2=1; dotflag=0; numflag=0; return TRUE; // return TRUE unless you set the focus to a control } void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CMyDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CMyDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CMyDlg::OnNum0() { UpdateData(); if(dotflag) { quan2*=10; m_result+=0/(double)quan2; } else { if(numflag) { m_result=m_result*10+0; } else m_result=0; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum1() { UpdateData(); if(dotflag) { quan2*=10; m_result+=1/(double)quan2; } else { if(numflag) { m_result=m_result*10+1; } else m_result=1; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum2() { UpdateData(); if(dotflag) { quan2*=10; m_result+=2/(double)quan2; } else { if(numflag) { m_result=m_result*10+2; } else m_result=2; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum3() { UpdateData(); if(dotflag) { quan2*=10; m_result+=3/(double)quan2; } else { if(numflag) { m_result=m_result*10+3; } else m_result=3; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum4() { UpdateData(); if(dotflag) { quan2*=10; m_result+=4/(double)quan2; } else { if(numflag) { m_result=m_result*10+4; } else m_result=4; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum5() { UpdateData(); if(dotflag) { quan2*=10; m_result+=5/(double)quan2; } else { if(numflag) { m_result=m_result*10+5; } else m_result=5; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum6() { UpdateData(); if(dotflag) { quan2*=10; m_result+=6/(double)quan2; } else { if(numflag) { m_result=m_result*10+6; } else m_result=6; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum7() { UpdateData(); if(dotflag) { quan2*=10; m_result+=7/(double)quan2; } else { if(numflag) { m_result=m_result*10+7; } else m_result=7; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum8() { UpdateData(); if(dotflag) { quan2*=10; m_result+=8/(double)quan2; } else { if(numflag) { m_result=m_result*10+8; } else m_result=8; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnNum9() { UpdateData(); if(dotflag) { quan2*=10; m_result+=9/(double)quan2; } else { if(numflag) { m_result=m_result*10+9; } else m_result=9; } numflag=1; UpdateData(FALSE); } void CMyDlg::OnDot() { UpdateData(); dotflag=1; m_result+=0.0; UpdateData(FALSE); } void CMyDlg::OnCe() { UpdateData(); m_EDIT.SetSel(0,-1); m_EDIT.ReplaceSel(""); m_result=0; num1=0; num2=0; numflag=0; dotflag=0; quan2=1; UpdateData(FALSE); } void CMyDlg::Onjia() { UpdateData(); num1=m_result; cal='+'; numflag=0; dotflag=0; quan2=1; } void CMyDlg::Onjian() { UpdateData(); num1=m_result; cal='-'; numflag=0; dotflag=0; quan2=1; } void CMyDlg::Oncheng() { UpdateData(); num1=m_result; cal='*'; numflag=0; dotflag=0; quan2=1; } void CMyDlg::Onchu() { UpdateData(); num1=m_result; cal='/'; numflag=0; dotflag=0; quan2=1; } void CMyDlg::Ondengyu() { UpdateData(); num2=m_result; switch(cal) { case'+':m_result=num1+num2;break; case'-':m_result=num1-num2;break; case'*':m_result=num1*num2;break; case'/':m_result=num1/num2;break; case'x':m_result=pow(num1,num2);break; } numflag=0; dotflag=0; quan2=1; UpdateData(FALSE); } void CMyDlg::Ondaoshu() { UpdateData(); m_result=1/m_result; numflag=0; dotflag=0; quan2=1; UpdateData(FALSE); } void CMyDlg::Onzhengfu() { UpdateData(); m_result=0-m_result; UpdateData(FALSE); } void CMyDlg::OnBackspace() { UpdateData(); static int dotquan=quan2; long temp; if(dotflag&&numflag) { if(dotquan>=10) { temp=(long)(m_result*dotquan); m_result=(double)(temp/10); dotquan/=10; m_result=m_result/dotquan; } } else { //UpdateData(); if(numflag&&m_result) { m_result=(long)m_result/10; } } UpdateData(FALSE); } void CMyDlg::OnLn() { UpdateData(); m_result=log(m_result); numflag=0; dotflag=0; quan2=1; UpdateData(FALSE); } void CMyDlg::Onlog() { UpdateData(); m_result=log(m_result)/log(10); numflag=0; dotflag=0; quan2=1; UpdateData(FALSE); } void CMyDlg::OnRadio2() { m_IsDegree=1; i=1; UpdateData(TRUE); } void CMyDlg::OnRadio1() { m_IsDegree=0; i=(2*3.1415926)/360; UpdateData(FALSE); } void CMyDlg::Onsqrt() { UpdateData(); if(m_result<0) { MessageBox("输入无效!"); return; } m_result = sqrt(m_result); UpdateData(FALSE); } void CMyDlg::Onsin() { m_result=sin(m_result*i); UpdateData(FALSE); } void CMyDlg::Oncos() { m_result=cos(m_result*i); UpdateData(FALSE); } void CMyDlg::Ontan() { m_result=tan(m_result*i); UpdateData(FALSE); } void CMyDlg::Onpingfang() { UpdateData(); m_result=m_result*m_result; UpdateData(FALSE); } void CMyDlg::Onlifang() { UpdateData(); m_result=m_result*m_result*m_result; UpdateData(FALSE); } void CMyDlg::Onmi() { UpdateData(); num1=m_result; cal='x'; numflag=0; dotflag=0; quan2=1; } void CMyDlg::OnExp() { m_result=exp(m_result); UpdateData(FALSE); } void CMyDlg::On10demi() { UpdateData(); m_result=pow(10,m_result); UpdateData(FALSE); } void CMyDlg::Onjiecheng() { if(m_result<0) { MessageBox("输入数据无效!"); return; } int q; for(q=(int)m_result-1;q>=1;q--) m_result*=q; UpdateData(FALSE); } void CMyDlg::OnDate() { CFirstDlg dlg; dlg.DoModal(); } void CMyDlg::OnTime() { UpdateData(); TIME=1; CTime tNow; tNow=CTime::GetCurrentTime(); if(TIME) { m_EDIT.SetSel(0,-1); m_EDIT.ReplaceSel(""); CString sNow=tNow.Format("%I:%M:%S"); m_EDIT.SetSel(0,-1); m_EDIT.ReplaceSel(sNow); } else { CString sNow=tNow.Format("%I:%M:%S"); m_EDIT.SetSel(0,-1); m_EDIT.ReplaceSel(sNow); } } void CMyDlg::OnExit() { OnOK(); } void CMyDlg::OnHelp() { MessageBox("班级:09通信一班 组员:陈熙竹 叶文晖 周方"); }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 基础 课程设计 报告 语言 MFC 计算器 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文