




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MFC 计算器课程设计 题题 目:目: MFCMFC 计算器设计 学学 院院 : 计算机学院 姓姓 名:名: 学学 号:号: 指导教师指导教师: : 20152015 年年 5 5 月月 2020 日日 目录目录 1 概述.3 1.1 课程设计目的 .3 1.2 课程设计内容 .3 2 系统需求分析.4 2.1 系统目标 .4 2.2 主体功能 .4 2.3 开发环境 .4 3 系统概要设计 .4 3.1 系统功能划 .4 4 系统详细设计.7 4.1 设计步骤.7 4.2 界面设计.9 5 测试 .11 5.1 测试方案.11 5.2 测试结果.12 6 小结 .14 参考文献.14 附 录.15 附录 1 源程序清单 .15 3 计算器的设计计算器的设计 1 1 概述概述 1.11.1 课程设计目的课程设计目的 1、巩固并加深学生对 C+语言程序设计知识的理解; 2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计 方法的区别; 3、进一步掌握和应用 VC+ 6.0 集成开发环境; 4、提高运用 C+语言解决实际问题的能力; 5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的 MIS 系统; 6、掌握书写程序设计开发文档的能力(书写课程设计实验报告) 。 1.21.2 课程设计内容课程设计内容 课题名称:课题名称:计算器的实现 说明:说明:实现一个计算器。 要求要求: 用用“计算器计算器”的标准视图执行简单的计算。的标准视图执行简单的计算。 4 2 系统需求分析系统需求分析 2.12.1 系统目标系统目标 我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到 科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。要 计算功能有以下几个方面:加法,减法,乘法,除法,乘方。 2.22.2 主体功能主体功能 十进制数的加、减、乘、除、乘方简单计算。 2.32.3 开发环境开发环境 Windows 操作系统,VC+ 6.0, OFFICE WORD 3 3 系统概要设计系统概要设计 3.13.1 系统功能划系统功能划 表 3-1 系统功能表 1) 假设执行操作“+” ,先输入一个数,再输入“+” ,再输入另一个数,最后 输入“+” 。整个功能“+”就执行完毕。 序号文件名主要功能备注 1+加法求和两个操作数 2-减法求差两个操作数 3*乘法求积两个操作数 4/除法求商两个操作数 5S求平方根一个操作数 6=等于 7C寄存器清零 5 四则代码如下 void CCALDlg:OnButtonequal() / TODO: Add your control notification handler code here UpdateData(TRUE); num2 =m_str; if(num2=0 m_str =0; num1 = 0; num2 = 0; UpdateData(FALSE); else / int f = 0; switch (ope) /加 case 0: m_str = num1 + num2; break; /减 case 1: m_str = num1 - num2; break; 6 case 2: m_str = num1 * num2; break; case 3: m_str = num1 / num2; break; case 4: m_str = num1 * num1; UpdateData(FALSE); 7 4 4 系统详细设计系统详细设计 4.14.1 设计步骤设计步骤 打开 Microsoft Visual C+ 6.0,在文件中点击新建,在弹出框内选择 MFC AppWizardexe工程,输入工程名 yeyahui 及其所在位置,点击确定,如图 4-1 所示。 图 4-1 新建 MFC AppWizardexe工程 将弹出 MFC AppWizard-step 1 对话框,选择基本对话框,点击完成,如图 4-2 所示。 8 图 4-2 基本对话框 这样,MFC AppWizard 就建立了一个基于对话窗口的程序框架,如图 4-3 所 示。 9 图 4-3 新建的对话框 4.24.2 界面设计界面设计 界面设计主要是创建控件,在图 4-3 所示的 Resoure View 选项卡中打开 Dialog 资源组,双击 IDD_ZHOUTONG_DIALOG,在右边的窗口中显示出待编辑的对 话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介 绍,其他按钮的创建可参照此进行操作。 1)在图 4-3 中 Controls 的“编辑框”按钮上单击鼠标左键,在对话框编辑 窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑 框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出 Edit 属性对话 框,如图 4-4 所示,在该对话框中输入 ID 属性。 10 图 4-4 Edit 属性对话框 2)在图 4-2 中 Controls 的“Button”按钮上单击鼠标左键,在对话框上的 合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮 上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出 Push Button 属性对话框,如图 4-5 所示,在该对话框中输入控件的 ID 值和标题属性。 图 4-5 Push Button 属性 按照上面的操作过程编辑其他按钮和编辑框等对象的属性。 表 4-1 各按钮和编辑框等对象的属性 对象ID标题或说明 编辑框IDC_EDIT2结果显示 按钮IDC_BUTTON00 按钮IDC_BUTTON11 按钮IDC_BUTTON22 按钮IDC_BUTTON33 按钮IDC_BUTTON44 按钮IDC_BUTTON55 按钮IDC_BUTTON66 按钮IDC_BUTTON77 按钮IDC_BUTTON88 11 按钮IDC_BUTTON99 按钮IDC_BUTTONJI A + 按钮IDC_BUTTONJI AN - 按钮IDC_BUTTON MUL * 按钮IDC_BUTTOND IV / 按钮IDC_BUTTON1 0 x2 按钮IDC_BUTTONC LA CLAER 按钮IDC_BUTTONE QUAL = 完成后界面如图 4-6 所示。 图 4-6 设计界面 5 5 测试测试 5.15.1 测试方案测试方案 先用标准型进行简单的四则运算:+ - * /,测试完成后,核对其计算结果的 正确性。 12 5.25.2 测试结果测试结果 经测试标准型计算器,进行简单的四则运算,结果均正确,如图 5-1 所示。 13 图 5-1 四则运算,乘法测试结果图 14 6 6 小结小结 经过一个月的努力,课程设计基本完成了。在课程设计的实践中,学到很多有 用的知识,也积累了不少宝贵的经验。课程设计是以一个计算器的实现为基础, 掌握一个基于对话框的应用程序的编程方法以及对话框常用控件的高级编程。在 课程设计中我了解到到对话框应用程序的编程模式、改变按钮的客户区形状、在 按钮客户区内作图及对话框的扩展等知识。在此期间,遇上了不少的技术难题, 但是经过老师知道,难题还是一个个被解决了。 经过设计的各个环节,从中学到了很多,锻炼了自己系统的设计的能力,从 系统的需求到系统的功能,到系统的测试,到系统的发布,可以掌握到一个完全 的过程,这样对我们以后在工作中或学习中得到很好的锻炼,为用 VC+编辑软件 奠定基础。 参考文献参考文献 1谭浩强. C 程序设计(第三版)(M).北京:清华大学出版社,2005. 2谭浩强. C 程序设计题解与上机指导(第三版) (M).北京:清华大学出版社, 2005. 3甄炜. C+语言和面向对象程序设计教程(M).北京:机械工业出版社,2005. 15 附附 录录 附录附录 1 源程序清单源程序清单 / 计算器 Dlg.cpp : implementation file / #include stdafx.h #include CAL.h #include CALDlg.h #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 16 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg) / No message handlers /AFX_MSG_MAP END_MESSAGE_MAP() / / CCALDlg dialog CCALDlg:CCALDlg(CWnd* pParent /*=NULL*/) : CDialog(CCALDlg:IDD, pParent) /AFX_DATA_INIT(CCALDlg) m_str = 0; m_str1 = _T(); /AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME); void CCALDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CCALDlg) DDX_Text(pDX, IDC_EDIT2, m_str); DDX_Text(pDX, IDC_EDIT3, m_str1); /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CCALDlg, CDialog) /AFX_MSG_MAP(CCALDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON0, OnButton0) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_BN_CLICKED(IDC_BUTTON6, OnButton6) ON_BN_CLICKED(IDC_BUTTON7, OnButton7) ON_BN_CLICKED(IDC_BUTTON8, OnButton8) ON_BN_CLICKED(IDC_BUTTON9, OnButton9) ON_BN_CLICKED(IDC_BUTTONJIA, OnButtonjia) ON_BN_CLICKED(IDC_BUTTONJIAN, OnButtonjian) ON_BN_CLICKED(IDC_BUTTONCLA, OnButtoncla) ON_BN_CLICKED(IDC_BUTTONEQUAL, OnButtonequal) ON_BN_CLICKED(IDC_BUTTONMUL, OnButtonmul) ON_BN_CLICKED(IDC_BUTTONDIV, OnButtondiv) ON_BN_CLICKED(IDC_BUTTON10, OnButton10) /AFX_MSG_MAP END_MESSAGE_MAP() / 17 / CCALDlg message handlers BOOL CCALDlg:OnInitDialog() CDialog:OnInitDialog(); / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE);/ Set big icon SetIcon(m_hIcon, FALSE);/ Set small icon SetWindowText(_T(计算器 V1.0 作者:13 级数学与计算机学院第 4 期 陈菁); /修改软件名称 / TODO: Add extra initialization here return TRUE; / return TRUE unless you set the focus to a control void CCALDlg:OnSysCommand(UINT nID, LPARAM lParam) if (nID 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 CCALDlg:OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting 18 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( 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 CCALDlg:OnQueryDragIcon() return (HCURSOR) m_hIcon; void CCALDlg:OnButton0() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+0; UpdateData(FALSE); void CCALDlg:OnButton1() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+1; UpdateData(FALSE); void CCALDlg:OnButton2() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+2; UpdateData(FALSE); 19 void CCALDlg:OnButton3() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+3; UpdateData(FALSE); void CCALDlg:OnButton4() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+4; UpdateData(FALSE); void CCALDlg:OnButton5() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+5; UpdateData(FALSE); void CCALDlg:OnButton6() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+6; UpdateData(FALSE); void CCALDlg:OnButton7() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+7; UpdateData(FALSE); void CCALDlg:OnButton8() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; 20 m_str=m_str+8; UpdateData(FALSE); void CCALDlg:OnButton9() / TODO: Add your control notification handler code here UpdateData(TRUE); m_str =0; m_str=m_str+9; UpdateData(FALSE); void CCALDlg:SaveValue1() UpdateData(TRUE); num1=m_str; / m_str =0; UpdateData(FALSE); void CCALDlg:OnButtonjia() / TODO: Add your control notification handler code here SaveValue1(); ope=0; void CCALDlg:OnBut
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度GRC建筑一体化施工合同模板
- 2025年智能环保型住宅建设技术转让合作合同
- 2025版煤炭居间代理合同样本
- 2025版能源公司股权无偿转让及节能减排合作合同
- 二零二五年度第十一十二章行政项目监理服务合同标准
- 二零二五年度离婚协议书定制及情感咨询合同
- 二零二五年度短途货运时效与违约赔偿合同
- 二零二五版39上公司兜底协议:海洋工程合作保障合同
- 二零二五年度集装箱板房租赁及社区活动服务合同
- 2025届“建”证梦想·成就非凡中建装饰集团西北公司校园招聘笔试参考题库附带答案详解
- 高效沟通提升医药代表拜访技巧的五大秘诀
- 《环甲膜穿刺术》课件
- 2013年天津公务员考试职位表
- 医院处方笺模板(可根据实际需要修改)
- 《森林与小鸟》教学设计(福建省县级优课)-三年级音乐教案
- 提高口服药准确服用率品管圈课件
- 患者用药指导全国知识技能竞赛必备考试题库(带答案)
- 化学(医药卫生类)中职PPT完整全套教学课件
- 下腔静脉滤器置入与取出术
- 耳内镜的临床应用谢和新课件
- 2023年河北省新华书店招聘笔试参考题库附带答案详解
评论
0/150
提交评论