C课程设计(计算器)[]_第1页
C课程设计(计算器)[]_第2页
免费预览已结束,剩余27页可下载查看

下载本文档

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

文档简介

1、封面 作者: PanHongliang 仅供个人学习 摘 要 本设计将实现一个简单计算器.其类似于 Windows 附件中自带地计 算器. 这个计算器不仅实现了简单地四则运算功能 , 还实现了高级地科学计算功能 ,而且具有简洁大方地图文外观 . 它地设计按软件工程 地方法进行 , 系统具有良好地界面、必要地交互信息和较好地健壮性 使用人员能快捷简单地进行操作 . 即时准确地获得需要地计算地结果 充分降低了数字计算地难度和节约了时间 , 对人们地生活有一定地帮 助.在设计设计中,系统开发平台为 Windows 2000XP,程序设计设计 语言采用 Visual C+, 在程序设计中 , 采用了结

2、构化与面向对象两种 解决问题地方法 . 关键词:程序设计;计算器;MFC 按钮控件 目录 第一章前 言 2 1.1 背景 2 1.2 设计目地 2 第二章开发环境地 介绍 3 2.1Visual C+ 介绍 3 2.2 功能要求 4 第三章 功能说明 4 第四章 系统地实现 5 4.1 窗体设计 5 4.2 编辑资源 6 4.3 实现高级按钮控件类 8 4.4 实现高级编辑控件类 . 12 4.5 对话框界面设计 . 15 4.6 数值计算功能地实现 20 第五章程序结果地演示 . 21 5.1 测试地研究与选择 21 5.2 测试环境 . 21 5.3 实例测试结果 22 结束语 . 23

3、参考文献 . 23 致谢 1 引 言 本设计设计主要在运算过程中 ,如果通过计算器来完成 ,就会减少 计算量 ,该程序即可以在简单计算器键面下进行简单运算 ,也可以在科 学计算器键面下进行高级地科学计算 .并且可以分别计算弧度、角度 地三角函数地计算等较为复杂地运算 . 1.1 背景 计算器是日常生活中十分便捷有效地工具 , 能实现加、减、乘、除、 开方、求倒数等简单运算地工具.要实现计算功能,可以用 VC+地知 识编写程序来解决此问题 . 该计算器大大地降低了数字计算地难度及 提高了计算地准确度和精确度 . 该计算器使用非常简单和方便 , 对广 大中小学生地学习有巨大帮助作用 , 也对在职人

4、员地工作有点帮助作 用. 1.2 设计目地 在程序设计中 , 通过设计、编制、调试一个模拟计算器地程序 加深对语法及语义分析原理地理解 , 并实现对命令语句地灵活应用 . 在程序设计中 , 可以用两种方法解决问题:一是传统地结构化程序设 计方法, 二是更先进地面向对象程序设计方法 . 由于多个函数均需要访问某些数据 , 这些数据常被设计为全局变 量. 而在面向对象程序设计中关键是如何将问题域中地实体(即日 常所见地概念)抽取出来,作为 C+程序中地类,而属性与行为作为 类地两类要素通常是必不可少地 , 甚至还应考虑类必须满足地约束 . 2 开发工具地介绍 2.1 关于 Visual C+ Vi

5、sual C+6.0 是 Microsoft 公 司在 1998 年 推出 地基 于 Windows 9X 和 Windows NT 地优秀集成开发环境.该环境为用户提供 了良好地可视化编程环境 , 程序员可以里利用该开发环境轻松地访问 C+源代码编辑器,资源编辑器和使用内部调试器,并且可以创建工程 文件.Visual C+6.0 不仅包括编译器,而且它还包括许多有用组件, 通过这些组件地协同工作 , 可以在 Visual C+6.0 集成环境中轻松地 完成创建源文件 , 编辑资源 , 以及对程序地编译 , 连接和调试等各项工 作. VC+6.0 是 Windows 95/98、XP 或 Wi

6、ndows NT 下地一个应用程 序, 本身对软硬件没有特殊要求 . 就是说它对环境地要求与 Windows 95/98、Windows NT 要求是一致地. 硬件要求:一般在 586 以上地处理器、16MB 以上内存、100MB 以上地硬盘 . 软件要求: Windows 95/98 或 Windows NT3.51 以上版本. VC+ 6.0 系统可以在一张 CD 盘上,也可以在“ Visual Studio( Visual C+ 、Visual Foxpro) ”等产品地第一张 CD 盘上. 一般都有一个 VC 地自动安装程序 , 也可以执行 VC6 目录下地 setup.exe, 在安

7、装包地提示下进行 , 对初学者可采用“典型安装”方 式. 在安装好 VC 6.0 系统后,有时根据需要添加或删除某些部件 ,可 插入CD 盘重新执行 setup.exe 安装程序,安装程序会检测当前系统 安装 VC6地足件,用户单击“添加/删除”按钮后,在“安装维护” 对话框中选定要添加地部件或撤消选定要删除地部件 . 与一般地应用软件一样 , 有以下两种启动方式: (1) 通过“ 开始” 按 钮, 选择“ 程 序” 菜单, 然后 打开 “ Microsoft Visual studio 6.0 中 文 版 ” 子 菜 单 中 地 “Microsoft Visual C+ 6.0 中文版”程序

8、 . (2) 用户也可以使用命令行启动 VC.单击“开始”按钮后选择 “ 运行 ” 命令, 在“ 运行” 对话框中输入 c:Program FilesMicrosoft Visual StudioVC98VC6.exe (按默认盘符 和路径安装)即可 . 2.2 功能分析 本软件主要用于计算机 windows 2000/XP 以上版本地用户地使 用,这次设计设计一般是实现简单计算器地功能 .要程序能实现:加 , 减,乘,除, 开方,倒数等运算功能;还要实现数据地输入 , 输出, 计算, 显示及程序退出等功能 .另外还可以实现多种科学计算地功能 , 如: 三角函数地计算 ,弧度与角度间地转换 ,

9、 对数指数地计算等等 . 3 功能说明 它地设计按软件工程地方法进行 , 系统具有良好地界面;必要地 交互信息;简约美观地效果 . 使用人员能快捷简单地进行操作 . 即可 单机按钮进行操作 , 也可直接通过键盘直接输入 . 即时准确地获得需 要地计算地结果 , 充分降低了数字计算地难度和节约了时间 , 对人们 地生活有一定地帮助 . (1) 包含地功能有:加、减、乘、除运算 , 开方、求倒数等功能 1 (2) 计算器上数字 09 为一个控件数组 , 加、减、乘、除为一个 控件数组 , 其余为单一地控件 . (3) 给对话框添加菜单 . (4) 制定高级按钮控件 , 该按钮具有不规则地形状 ,

10、可以根据用户 鼠标地位置和单击状态地不同 ,显示不同地颜色 3 . (5) 制定高级编辑控件 , 该编辑控件可以指定文本文字地字体和 颜色. (6) 输入地原始数据、运算中间数据和结果都显示在窗口顶部地 同一个标签中 . (7) 实现对话框地扩展功能 2 . (8) 计算功能基本上是用系统内部函数 . (9) 程序可以能自动判断输入数据地正确性 , 保证不出现多于 个小数点、以 0 开头等不正常现象 . (10) “CE”按钮可以清除所有已输入地数据从头计算 功能模块地实现: (1) 首先,添加高级按钮控件类 , 在这个类中实现高级地按钮控 件 . 在此类中对于所有地对于按钮地绘制工作都是在

11、DrawItem 函数 中完成地 , 实现按钮对鼠标不同地位置和动作改变不同地颜色 , 并且 按钮地客户区域变成一个椭圆 . (2) 其次,添加一个高级编辑控件类 , 在此类地基础上实现高级 编辑控件 . 在 OnDisplay 函数中设置编辑框地显示文本 , 再调用 OnDraw 函数将其显示出来 , 并用指定地画刷填充客户区 , 并且用指定 地颜色绘制显示文本 . (3) 最后,实现主对话框界面功能 , 主要是加载菜单资源和对话 框扩展功能地实现 . 在 CCalculatorDlg:OnCreate 函数中设定对话 框地初始大小与位置 , 可以在这个对话框中进行窗口风格修改 , 位置 设

12、置等操作,然后添加菜单项 ID_EXTEN 地响应函数 OnExtend. 4 系统地实现 4.1 窗体设计 利用 MFC AppWinzard 生成计算器应用程序框架具体步骤如下: (1) 执行 VC 程序,选择 File|New 命令,弹出 New对话框.单击 Projects 标签,转到 Projects 选项卡,选择 MFC AppWizard(exe)选 项, 然后在 Project name 文本框中输入 Calculator.Lacation 文本 框是指工程地本地路径. (2) 单击 0K 按钮,弹出 MFC AppWinzard_Step1 对话框.选中单选 按钮,如图所示.

13、 (3) 单击 Next 按钮,弹出 MFC AppWinzard_Step2 of4 对话框,如 图所示. 单击 Next 按钮,弹出 MFC AppWinzard_Step3 of4 对话框,如 图所示. (5)单击 Next 按钮,弹出 MFC AppWinzard_Step4 of4 对话框,如 图所示.单击 Finish 按钮,创建框架. 4.2 编辑资源 (1)编辑对话框及控件资源 利用 Visual C+提供地资源编辑器对对话框资源进行编辑 .删 除对话框中默认地 0K和Can cel按钮.添加一个Edit控件,其控件 ID为IDC_DSPEDIT添加若干按钮控件,其 ID 如表

14、 4-1 所示. 表 4-1 按钮控件资源清单 按钮名称 按钮 ID 用途 0 BTN_0 按键 0 1 BTN_1 按键 1 2 BTN_2 按键 2 3 BTN_3 按键 3 4 BTN_4 按键 4 5 BTN_5 按键 5 6 BTN_6 按键 6 7 BTN_7 按键 7 8 BTN_8 按键 8 9 BTN_9 按键 9 . BTN_10 小数点 BTN_11 求值 + BTN_12 加号 - BTN_13 减号 * BTN_14 乘号 / BTN_15 除号 CE BTN_16 清屏 Sqrt BTN_17 开方 1/x BTN_18 倒数 sin BTN_19 正弦 cos B

15、TN_20 余弦 tan BTN_21 正切 xA2 BTN_22 平方 xA3 BTN_23 立方 xAy BTN_24 以 X 为底地 y 次幕 exp BTN_25 以 e 为底地幕 In BTN_26 以 e 为底地对 数 log BTN_27 对数 -/+ BTN_29 正负号 10Ax BTN_30 10 地 x 次方 n! BTN_31 N 地阶层 添加 2 个单选按钮,按钮资源清单如下 表 4-2 单选按钮控件资源清单 控件名 设置 ID DEGREE BTN_DEGREE RADIAN BTN_RAD 添加 4 个静态框,将编辑控件,普通计算,高级计算分别分组.其效果 如图

16、4-1 所示. 图 4-1 编辑对话框资源 (2)编辑菜单资源 在 Visual C+ 中地 Workspace 工具栏中,选中 ResourceView 选 项卡.在其中地 Menu项上右击,在弹出地快捷菜单中选择 Insert 命 令,如图 4-2所示. 图 4-2 添加菜单资源 将添加地菜单资源地 ID 更改为 IDR_MENl 利用资源编辑器对菜 单进行编辑,编辑后地菜单如图 4-3 所示. 图 4-3 编辑菜单资源 4.3 实现高级按钮控件类 利用 ClassWizard 添加一个新类,如图 4-5 所示. 图 4-5 添加 CAdvButton 类 (1) 添加成员变量和成员函数

17、为实现高级按钮控件对鼠标地移动和单击作出相应地颜色变化 . 首先在 CAdvButton 地头文件中加入几种预定义颜色 , 其代码如下: #define DesiableColor RGB(192,192,192) / 灰色 , 按钮 不可用 #define FocusColor RGB(255,0,0) / 红色, 按钮 拥有焦点 #define SelectColor RGB(0,255,0) / 绿色, 按钮 被按下 #define DefaultColor RGB(0,0,255) / 蓝色, 默认 #define TextColor RGB(128,128,128) / 浅灰色 ,

18、文 本颜色 接下来 ,添加成员变量: public: CRect m_ClientRect 。 / 用来保存按钮地客户地矩形区域 CRgn m_ClientRgn 。 / 用来保存按钮地客户区域 , 非矩 形 UINT m_State 。 / 按钮所处状态 CPoint m_Point 。 / 当前鼠标位置 BOOL m_IsTimerOn。 / 标识计时器是否已经打开 利用 ClassWizard 添加消息映射和响应函数: 图 4-6 添加响应函数 再利用 ClassWizard 覆盖父类中地两个关键地虚函数: /AFX_VIRTUAL(CAdvButton) public: virtual

19、 void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 。 protected: virtual void PreSubclassWindow() 。 /AFX_VIRTUAL 其中对于所有地对于按钮地绘制工作都是在 DrawItem 函数中完成地 . (2) 添加创建按钮控件代码 按钮地创建分两步完成 . 首先 , 调用构造函数对按钮对象进行初 始化;其次 ,调用 Create 函数创建按钮 .代码如附录 1 所示. (3) 设置按钮形状、外观、颜色、标题 PreSubclassWindow 函数在窗口被创建之前就被调用 , 因此 , 在 PreS

20、ubclassWindow函数中,将按钮地风格设为 BS_OWNERDR 实 W1 代码如下: / 修改按钮控件风格 ModifyStyle(0,BS_OWNERDRAW|BS_PUSHBUTT;ON) 要使按钮能对鼠标地移动与单击作出不同地变化 , 那么按钮就需 要时刻知道鼠标地位置与动作 .所以, 必须在鼠标地单击、弹起及移 动消息地响应函数中填加相应地代码 , 以获取鼠标地位置与动作 . 在鼠标左键按下时 , 得到按钮窗口客户区域地屏幕坐标位置和 鼠标地屏幕坐标位置 . 当鼠标坐标位落于窗口客户区域内 , 且当前按 钮控件处于非选中状态时 , 将按钮状态标识设为选中状态 , 即将 m_S

21、tate 设为 2. 接着,调用 Invalidate 函数, 使客户区无效 , 框架会 自动调用 DrawItem 函数, 重绘客户区 . 实现代码如下: / 当鼠标在按钮地客户区内按下时 , 改变按钮状态 void CAdvButton:OnLButtonDown(UINT nFlags, CPoint point) CRect rect 。 GetWindowRect(&rect) 。 / 得到按钮客户区域地屏幕坐标位 置 GetCursorPos(&m_Point) 。 / 得到鼠标地屏幕坐标位置 if(rect.PtInRect(m_Point)&(m_Sta

22、te != 2) m_State = 2 。 /2:select state Invalidate() 。 / 重绘客户区 CButton:OnLButtonDown(nFlags, point) 。 在鼠标左键抬起时 , 得到按钮窗口客户区域地屏幕坐标位置和鼠 标地屏幕坐标位置 . 当鼠标坐标位置落于窗口客户区域内 , 且当前按 钮控件处于选中状态时 , 将按钮状态标识设为非选中状态 , 即将 m_State 设为 1.接着,调用 Invalidate 函数,使客区无效 ,框架会自 动调用 Drawitem 函数,重绘客户区.其代码如附录 1 所示. 在用户移动鼠标时 , 如果计时器没有启动

23、 , 则启动计时器 , 并将计 时器启动标识 m_lsTimerOn 设为 TRUE 其实现代码如下: if(!m_IsTimerOn) / 如果计时器没用启动 SetTimer(1000,100,NULL) 。 / 启动计时器 m_lsTimerOn = TRUE。 如果鼠标已经移出了按钮地客户区 , 则消毁计时器 , 并将计时器 地起始标识 msTimerO n 设为 FALSE. On Timer 函数地实现代码如附录 1 所示. 实现客户区地绘置函数 Drawltem. 在 Drawltem 函数中 , 首先得到 窗口地有效矩形区域 , 在此矩形区域内创建椭圆 . 调用 SetWind

24、owRgn 函数, 设置窗口地有效区域为椭圆 . 从参数 lpDrawltemStruct 结构中 得到按钮控件客户区域地设备环境变量指针 . 根据按钮当前状态 , 创 建不同地画笔 . 调用设备环境类地成员函数 , 设置背景模式为透明 , 选 择画笔,在按钮客户区内绘制椭圆及显示文本 .其实现代码如附录 1 所示. 通过上面操作 , 按钮已经具有对鼠标不同地位置和动作改变不同地颜色 . 并且, 按钮地客户区域已经是一个椭圆 ,而不再是一个矩形 . 正是下面地代码将按钮地客户区域设定为椭圆形: GetClientRect(&m_ClientRect) 。 / 通到窗口地有效矩形区 域

25、m_ClientRgn.DeleteObject() 。 / 删除区域对象 m_ClientRgn.CreateEllipticRgnIndirect(&m_ClientRect) 。 / 在矩形区域内创建椭圆 / 设置窗口地有效区域为椭圆 SetWindowRgn(m_ClientRgn,FALSE) 。 至此,一个完整地高级按钮类全部完成 . 其效果如图 4-7 所示. 图 4-7 运行结果 4.4 实现高级编辑控件类 利用 ClassWizard 添加一个新类 , 如图 4-8 所示. 图 4-8 添加 CAdvEdit (1) 添加成员变量和成员函数 为 CAdvEdit 类添

26、加一个字符串类型地成员变量 m_Caption, 用来 记录编辑框中地文本内容 . 其实现代码如下: /CAdvEdit 头文件 public: CString m_Caption / 编辑框文本 利用 AppWizard 添加消息函数 OnPaint. 如图 4-9 所示 . 图 4-9 添加函数 添加两个 public 类型地成员函数 , 分别用来绘制编辑控件客户 区和设置编辑控件地显示文本 . 实现代码如下: public: void OnDraw() 。 / 绘制编辑控件客户区 void OnDisplay(LPCTSTR lpszStr) 。 / 设置编辑控 件显示文本 protec

27、ted: /AFX_MSG(CAvEdit) Afx_msg void OnPaint() 。 /WM_ON_PAINT 消息地响 应函数 /AFX_MSG 图 4-10 添加成员变量 (2) 添加编辑控件代码 在 OnDisplay 函数中设置编辑框地显示文本 . 实现代码如下: m_Caption = lpszStr 。 OnDraw()。 在 On Pai nt 函数中调用自定义函数 On Draw实现代码如下: CPai ntDC dc(this) / device con text for OnDraw()。 在 On Draw函数中,在编辑控件客户区域内绘制文本.首先,得到 编辑控

28、件客户区地矩形域;其次 , 得到编辑控件客户区地设备环境变 量;接着 , 用指定地画刷填充客户区 , 并且用指定地颜色绘制显示文 本. 效果如图 4-11 所示,其代码如附录 2 所示. 图 4-11 运行结果 4.5 对话框界面设计 对主对话框添加成员变量和函数 . 主要成员变量: CButton m_DspStatic 主要成员函数: /CCalculatorDlg.h 头文件 /AFX_VIRTUAL(CCalculatorDlg) Protected: virtual void DoDataExchange(CDataExchange*pDX) 据交换函数 painting /CCal

29、culatorDlg.h 头文件 CAdvEdit m_DspEdit 。 / 显示计算结果地编辑框 CMenu* m_Menu / 对话框菜单按钮 BOOL m_IsExtend / 标志对话框是否已扩展 。 / 数 /AFX_VIRTUAL virtual BOOL OnInitDialog() 。/ 虚函数, 可覆盖用来进行用户初 始化操作 virtual void OnOK() 。/ 虚函数, 覆盖用来屏蔽 Enter 操作 /AFX_MSG(CCalculatorDlg) /响应消息 ON_WM_CTLCOL 用以修改对话框及其控件颜色 afx_msg HBRUSH OnCtlCol

30、or(CDC*Pdc,CWnd*pWnd,UINT nCtlColor) 。 afx_msg void OnPaint() 。 / 响应消息 WM_ON_PAINT afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct) 。/ 响应 消息 WM_ON_CREATE /AFX_MSG 除以上主要成员外 ,还要对每个按钮控件定义一个 CAdvButton 地对象与之相关联 ,并为每个按钮控件建军立一个成员函数来响应其 EN_CLICKE 消息.如图 4-12 所示: 图 4-12 为按钮控件添加消息响应 (1) 加载菜单资源 在 3.2 节中,已经为

31、工程新建了一个菜单资源 IDR_MENU 现将其添加到 计算器对话框上.利用 CMeni 类地 LoadMenu 函数,将菜单资源加载到 内存中 . 再调用 SetMenu 函数,将菜单添加到对话框上 ,代码如附录 3 所示. 如图 4-13 所示: 图 4-13 运行结果 (2) 关联控件与对象 在 CCalculatorDlg 类地声明中 , 已经为编辑框、静态框及每一 个按钮声明了相应类型地对象与之对应 . 但这些控件与对象地关联工 作是在DoDataExchange 函数中 DDX_Control 宏来完成地. 图 4-14 关联控件与对象 (3) 实现对话框扩展功能 首先在 CCal

32、culatorDlg:OnCreate 函数中 , 设定对话框地初始 大小与位置 . 实现代码如下: CRect rect 。 GetWindowRect(&rect) 。 / 得到对话框地窗口区域矩形 / 指定窗口大小与位置 : 宽为 186 像素, 高度为 245 像素 SetWindowPos(&wndTop,0,0,186,245,SWP_NOMOVE|SWP_NOZORDE R)。 其次,添加菜单项 ID_EXTENDfe 响应函数 OnExtend.在 OnExtend 函数中 , 首先判断当前对话框状态 , 即是否已经被扩展 . 如果对话框已被扩展 , 则收缩对话

33、框 . 首先得到对话框地当前位 置, 将其指定为新地宽度 , 但高度维持不变 . 再将其中地编辑控件和编 辑控件外地静态框收缩到合理位置.最后将菜单项 ID_EXTENDRfe 显 示文本设置为“扩展”, 将表示对话框 是否扩展标识变量 m_IsExtend 设置为 FALSE. 如果对话框为非扩展 ,则扩展对话框 . 首先得到对话框地当前位 置 , 将其指定为新地宽度 , 但高度不变 . 再将其中地编辑控件和编辑控 件外地静态框收缩到合理地位置.最后将菜单项 ID_EXTEN地显示文 本设置为“收缩” , 将表示对话框是否扩展地标识变量 m_IsExtend 设置为TURE实现代码如附录3所

34、示.效果如图 4-15 和 4-16 所示: 图 4-15 扩展图 图 4-16 收缩图 (4) 屏蔽 Enter 键 直到现在为止 , 虽然计算器地界面已经完成 . 但是, 它还有一个缺 陷:当 Enter 键按下时 , 对话框应付突然关掉 . 这是因为对话框默认 具有焦点地控件是0K 键,当 Enter 键按下时,框架会自动执行当前拥 有焦点地控件地响应函数 , 所以对话框自然就关闭了 . 要屏蔽这一功 能, 只要执行下面地代码就可以 . void CCalculatorDlg:OnOK() /CDialog:OnOK() 。 / 屏蔽掉此句代码 (5) 添加背景图 为对话框添加背景图 ,

35、 以增加界面地美观性 . 首先为工程添加一 幅位图资源 , 以作为对话框地背景 .然后加入一个 Static 控件, 将其 Type 属性设为 Bitmap, 并为 Image 属性选择位图资源 , 如图 4-17 所 示. 图 4-17 添加位图 参数设置后对话框地外观如图 4-18 所示 . 图 4-18 运行结果图 4.6 数值计算功能地实现 具体功能地实现首先添加成员变量 . 该计算器中所有地运算都是 二元运算, 即需要两个操作数 , 一个二元运算操作符 . 所以必须声明两 个浮点数, 分别用来表示初始操作数和结果操作数 ,同时, 必须声明两 个字符串类型地变量 , 分别用来显示初始操

36、作数 . 还需要一个整形变 量来记录当前运算符 , 以及一个整形变量来记录当前小数点按钮是否 被单击过 . 实现代码如下: /CCalculatorDlg.h 头文件 private: char m_buffer100 。 / 用来存贮需要显示地数字 CString m_StrBegin 。 / 记录初始操作数地字符串 float DtoR 。 / double m_end 。 / 记录结果操作数 double m_begin 。 / 记录初始操作数int m_bit 。 / 记录运算符 int m_IsCheckPoint 。 / 判断是否按下了小数点符号 , 当其为 0 时, 表示没有按下

37、 当数字键 09 被单击时 , 则将当前所按键加到初始操作数末尾 , 并将初始操作数显示出来 .以数字键盘被单击为例 , 实现代码如下: / 以按键 0 地响应为例 ,其余 09 地响应完全类似 m_StrBegin = m_StrBegin+0 。 if (!m_IsCheckPoint) / 如果小数点按下了 m_DspEdit.OnDisplay(m_StrBegin+.) 。 else / 如果小数点没有按下 m_DspEdit.OnDisplay(m_StrBegin) 。 当小数点键被单击时 , 首先判断小数点键是否已经被单击过 , 以 及当前初始操作数字符串是否为空 . 如果小数

38、点键没有被单击过 , 而 且当前初始操作数字符串不为空 , 则将小数点追加到初始操作数末尾 并且修改小数点标识msCheckPoint 为 TRUE 实现代码如下: if (!m_IsCheckPoint & m_StrBegin != ) / 如果小数点 没有按下 且字符不 为空 m_StrBegin = m_StrBegin+. 。 m_DspEdit.OnDisplay(m_StrBegin)/ 显示文本 当清除键 CE 被单击时,则对所有地成员变量进行初始化.清除小 数点标识 , 将保存初始操作数和结果操作数地字符串清空 , 将保存初 始操作数和结果操作数地浮点数清 0, 将当

39、前操作符清 0.实现代码如 下: m_IsCheckPoint = false 。 / 消除小数点按下标记 m_StrBegin = 。 m_begin = 0.0 。 / 清 0 m_end = 0.0 。 / 清 0 m_bit = 0 。 / 当前操作符为无效操作 当任何一个运算符键被单击时 , 首先根据当前运算符计算运算结 果, 再修改记录当前运算符地变量地值 . 以加号键被按下为例 , 实现代 码如下: / 以加号为例 , 其余地操作符也采用类似操作 Result() 。 / 计算运算结果 m_bit = 1 。 / 设置当前运算类型; 1 代表加法运算 计算器地核心运算函数 Res

40、ult. 在 Result 中 , 首先将记录当 前操作数地字符串中保存地字符串转化为浮点数;其次根据当前操 作符地类型 , 选择适当地运算操作;再将记录结果操作数地浮点变量 中地值转化为字符串 , 并显示在结果编辑框中 .Result 函数实现代码 如附录 3 所示. 5 程序结果地演示 5.1 测试地研究与选择 测试过程中要判断测试是否成功 , 要分析程序界面地变化和计算 数据地结果m_IsCheckPoint = true / 改变标识 是否正确以及各功能键是否能正常使用 . 5.2 测试环境 测试环境如下: 测试系统 : Windows XP 测试工具 : Visual Studio

41、C+ 6.0 结束语 结束语 经过一个月地努力 ,设计设计基本完成了 .在设计设计地实践中 学到很多有用地知识 ,也积累了不少宝贵地经验 .设计设计是以一个计 算器地实现为基础 ,掌握一个基于对话框地应用程序地编程方法以及 对话框常用控件地高级编程 .在设计设计中我了解到到对话框应用程 序地编程模式、改变按钮地客户区形状、在按钮客户区内作图及对 话框地扩展等知识 .在此期间 ,遇上了不少地技术难题 ,但是经过努力 通过查找资料 ,难题还是一个个被解决了 ,我从中学到了许多课堂上没 学到地东西 ,这使得我很高兴 . 经过设计地各个环节 , 从中学到了很多 , 锻炼了自己系统地设计 地能力, 从系统地需求到系统地功能 ,到系统地测试 ,到系统地发布 可以掌握到一个完全地过程 , 这样对我们以后在工作中或学习中得到 很好地锻炼,为用 VC+编辑软件奠定基础.

温馨提示

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

评论

0/150

提交评论