计算器程序设计_第1页
计算器程序设计_第2页
计算器程序设计_第3页
计算器程序设计_第4页
计算器程序设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

简易计算器简易计算器 C C 程序设计程序设计 MFC 课程设计报告课程设计报告 设计题目 设计题目 简易计算器简易计算器 班班 级 级 姓姓 名 名 学学 号 号 指导教师 指导教师 时时 间 间 2010 年年 6 月月 30 日日 目目 录录 1 1 设计目标设计目标 2 2 设计内容设计内容 3 3 设计思想设计思想 4 4 设计说明设计说明 5 5 设计步骤设计步骤 6 6 主要成员函数关系图主要成员函数关系图 7 7 程序主要代码程序主要代码 8 8 难点分析难点分析 9 9 总结总结 简易计算器简易计算器 MFC 1 1 设计目标 设计目标 了解 Windows 应用程序的结构与 DOS 程序的不同 掌握应用 MFC 类库编 写 Windows 应用程序的基本模式 2 2 设计内容 设计内容 以简易计算器为例 通过对简单应用软件计算器的设计 编制 调试 实 现简单的加 减 乘 除等运算 以学习应用 MFC 库类编写对话框的原理 加 深对 C 类的学习及应用 3 3 设计思想设计思想 基于 MFC 库类对对话框界面的设计 通过创建类成员函数成员变量 编辑 控件创建消息映射 调用消息函数完成数据的输入输出 实现计算功能 生成 简单的应用软件 4 设计说明设计说明 1 包含的功能有 加 减 乘 除运算 开方 平方等功能 2 计算器上数字 0 9 为一个控件数组 加 减 乘 除为一个控件数组 其余为单一的控件 3 输入的原始数据 运算中间数据和结果都显示在窗口顶部的同一个标签 中 4 计算功能基本上是用系统内部函数 5 程序可以能自动判断输入数据的正确性 保证不出现多于一个小数点 以 0 开头等不正常现象 6 CE 按钮可以清除所有已输入的数据从头计算 5 5 设计步骤设计步骤 1 选择 FileNewlProject 命令 选择 MFC AppWizard exe 创建 Project 名 为 Caa 按确定 在弹出界面选择创建对话框 单击 Finish 按钮 2 在生成的设计界面中加入控件 得到计算器应用界面 如图 3 为控件编辑框编辑 ID 如图 按钮名称ID用途 0IDC 0按键 0 1IDC 1按键 1 2IDC 2按键 2 3IDC 3按键 3 4IDC 4按键 4 5IDC 5按键 5 6IDC 6按键 6 7IDC 7按键 7 8IDC 8按键 8 9IDC 9按键 9 IDC dian按键 IDC zhengfu正负 IDC jia加 IDC jian减 IDC cheng乘 IDC chu除 CEIDC qinglin清零 sqrtIDC sqrt开方 x xIDC pingfang平方 IDC dengyu等于 编辑框IDC E1显示数据输入输出 4 进入 ClassWizard 界面选择 Message Maps 为控件插入消息映射 插入 消息函数 实现控件命令功能 如图 5 进入 ClassWizard 界面 Message Varibles 为编辑框添加成员变量 m result 用以显示结果 如图 6 在 CaaDlg h 中加入在主要成员函数和成员变量的申明在 CaaDlg cpp 中加入主要成员函数实现过程和成员变量的初始化 代码片段将于后面介绍 6 6 主要成员函数关系图主要成员函数关系图 按钮 0 9 函数如 On0 On1 On2 处理数字输入 OnOperandInput 计算 Calculate 显示输出 UpdateDisplay 按 钮 CE 函数如 Onjia Onjian Oncheng 按 钮 sqrt x x 函数 Onsqrt Onpingfang 7 7 程序主要代码程序主要代码 在头文件中手动添加成员函数与变量声明在头文件中手动添加成员函数与变量声明 caaDlg hcaaDlg h headerheader filefile 定义两个 euum 型结构 enum Operator OpNone OpAdd OpSubtract OpMultiply OpDivide enum CalcError ErrNone ErrDivideByZero float m operand 存储当前输入的操作数 float m accum 存储当前的计算处理结束 BOOL m bCoff 标识当前输入是否是小数 float m coff 小数输入时的系数 Operator m operator enum 型变量用以标识当前运算符 CalcError m errorState enum 型变量用以标识当前运算状态 BOOL m bOperandAvail 标识当前输入是否是新输入数字 void UpdateDisplay 处理显示 void Calculate 处理计算 void OnOperandInput int a 处理数字输 入 在执行文件中添加成员函数实现部分与变量初始在执行文件中添加成员函数实现部分与变量初始 caaDlg cppcaaDlg cpp implementationimplementation filefile 以下是对声明变量进行初始 CCaaDlg CCaaDlg CWnd pParent NULL CDialog CCaaDlg IDD pParent AFX DATA INIT CCaaDlg m result T 默认为 m result 变量初始 AFX DATA INIT Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m hIcon AfxGetApp LoadIcon IDR MAINFRAME m coff 0 1 为变量进行初始 m bCoff 0 为变量进行初始 m errorState ErrNone 为变量进行初始 m bOperandAvail FALSE 为变量进行初始 m operator OpNone 为变量进行初始 以下是消息处理函数 用以响应消息映射以下是消息处理函数 用以响应消息映射 void CCaaDlg On0 处理 0 按钮 TODO Add your control notification handler code here OnOperandInput 0 void CCaaDlg On1 处理 1 按钮 TODO Add your control notification handler code here OnOperandInput 1 void CCaaDlg On2 处理 2 按钮 TODO Add your control notification handler code here OnOperandInput 2 void CCaaDlg On3 处理 3 按钮 TODO Add your control notification handler code here OnOperandInput 3 void CCaaDlg On4 处理 4 按钮 TODO Add your control notification handler code here OnOperandInput 4 void CCaaDlg On5 处理 5 按钮 TODO Add your control notification handler code here OnOperandInput 5 void CCaaDlg On6 处理 6 按钮 TODO Add your control notification handler code here OnOperandInput 6 void CCaaDlg On7 处理 7 按钮 TODO Add your control notification handler code here OnOperandInput 7 void CCaaDlg On8 处理 8 按钮 TODO Add your control notification handler code here OnOperandInput 8 void CCaaDlg On9 处理 9 按钮 TODO Add your control notification handler code here OnOperandInput 9 void CCaaDlg Oncheng 处理 按钮 TODO Add your control notification handler code here Calculate m operator OpMultiply void CCaaDlg Onchu 处理 按钮 TODO Add your control notification handler code here Calculate m operator OpDivide void CCaaDlg Ondengyu 处理 按钮 TODO Add your control notification handler code here Calculate m operator OpNone void CCaaDlg Ondian 处理 按钮 TODO Add your control notification handler code here m bCoff 1 UpdateDisplay void CCaaDlg Onjia 处理 按钮 TODO Add your control notification handler code here Calculate m operator OpAdd void CCaaDlg Onjian 处理 按钮 TODO Add your control notification handler code here Calculate m operator OpSubtract void CCaaDlg Onpingfang 处理 x x 按钮 TODO Add your control notification handler code here m operand m operand UpdateDisplay void CCaaDlg Onqinglin 处理 CE 按钮 TODO Add your control notification handler code here m operator OpNone m operand 0 m accum 0 m bOperandAvail FALSE m errorState ErrNone m coff 0 1 m bCoff 0 UpdateDisplay void CCaaDlg Onsqrt 处理 sqrt 按钮 TODO Add your control notification handler code here m operand sqrt m operand UpdateDisplay void CCaaDlg Onzhengfu 处理 按钮 TODO Add your control notification handler code here m operand 1 UpdateDisplay 以下是自定义函数 用于实现计算功能以下是自定义函数 用于实现计算功能 void CCaaDlg OnOperandInput int a 处理 0 9 数字的输入函 数 if m errorState ErrNone 判断当前运算是否有误 若有则返 回 return if m bOperandAvail 判断是否输入新的数字 1 是 0 否 m operand 0 if m bCoff 判断是否是小数输入 1 是 0 否 m operand m operand 10 a else m operand m operand a m coff m coff 0 1 m bOperandAvail TRUE UpdateDisplay 更新显示 void CCaaDlg Calculate 处理计算函数 if m errorState ErrNone return if m bOperandAvail 如果没有计算符就将 m operand 值赋予 m accum if m operator OpNone m accum m operand else if m operator OpMultiply 否则按计算符进行计算 m accum m operand else if m operator OpDivide if m operand 0 m errorState ErrDivideByZero else m accum m operand else if m operator OpAdd m accum m operand else if m operator OpSubtract m accum m operand m bOperandAvail FALSE m bCoff 0 m coff 0 1 UpdateDisplay void CCaaDlg UpdateDisplay 处理显示函数 if GetSafeHwnd NULL return if m errorState ErrNone m result 除数不能为零 else 如果当前计算无错误那么进行显示 如果是输入计算数 那么显示输入情况 如果按下计算符 则显示结果 float lVal m bOperandAvail m operand m accum m result Format T f lVal 将 float 型转化为 CString 型 int i m result GetLength while m result GetAt i 1 0 m result Delete i 1 1 i 1 用编辑控件变量 m result 改变编辑控件的值 更新显 示 UpdateData FALSE 8 8 难点分析难点分析 在利用 MFC 编写计算器过程中 遇到的技术上的问题 及解决方法 例如 计算数输入的处理 计算数输入的处理 在程序中使用 m operand 来存储当前的输入 而程序只使用一个函数来处 理所有数字输入 也就是说每次单击数字按钮就会调用该函数 由于计算数不 仅仅是个位数 因此用户可能需要单击几个数字按钮来完成一个计算数的输入 这样在每次输入时都必须将输入的数字累加入 m operand 中 而且对于小数输 入和整数输入也必须采取不同的累加方式 如对整数的输入 累加方式为 m operand m operand 10 n 其中 n 为输入的数字 而对于小数输入 累加方式 为 m operand m operand n 10i 其中 n 为数字 i 为小数位数 因此在程序中 还需设立布尔型变量 m coff 的值来标识当按下按钮小数点的时候来确定调用 哪个累加方式 自定义消息处理函数 成员函数 变量 自定义消息处理函数 成员函数 变量 在添加自定义函数 变量时需注意函数及变量的声明在头文件中如 CaaDlg h 而函数的实现部分及变量的初始在执行文件中如 CaaDlg cpp 值得提醒的是手动添加消息处理函数时 需声明在头文件 AFX MSG CCaaDlg AFX MSG 中的部分 而添加消息映射在执行文件 AFX MSG MAP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论