windows编程大作业简单计算器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

(2013 / 2014 学年第一学期)

课程名称windows 编程

实验名称简单计算器

实验时间2023 年12 月20 日指导单位计算机、软件学院

指导教师王子元

学生姓名班级学号

学院(系) 计算机学院、

软件学院专业计算机软件与服

务外包

实验报告

实验名称简单计算器指导教师王子元

实验类型设计实验学时实验时间2013.2.20 一、实验目的和要求

要求:实现一个简单计算器,其类似于Windows附件中自带的计算器。要求界面简洁大方,具有一个菜单栏,一个编辑框及若干按键。按钮控件具有对鼠标敏感的功能,当鼠标位于不同的位置和状态时,控件会显示不同的颜色。

1.编程思路清晰,图像美观

2.代码书写规范,关键部分有注释

3.功能实现全面,计算结果正确

4.文档书写规范完整,有测试过程

5.实现按钮控件对鼠标的敏感处理功能

小组成员

背景

计算器的功能和界面我们都是十分熟悉的。虽然目前我们电脑上基本都配置得有windows附件自带的计算器,相较于系统自带的计算器,我们想要开发的计算器是要求能实现复杂表达式(如2*3+4-(3+2/2)之类的)运算的,并能准确快速的显示计算结果的软件。

本软件的应用目标是准确快速的计算表达式运算。本软件的作用范围是面向中小学生的简单的表达式计算类型。本软件全部内容自含。

该项目开发的周期为两周

二、实验环境(实验设备)

硬件:微型计算机

软件:Microsoft Visual Studio 2010

三、实验原理及内容

[实验内容]

1. 工程的创建。使用MFC 创建一个基于对话框的工程;

2. 界面设计。使用控件工具栏为对话框添加所需控件,并设置控件属性;使用界面布局工

具栏调整控件布局,完成应用程序界面设计。

3. 创建对话框成员变量和成员函数。使用ClassWizard为控件添加相关联的对话框成员变量和消息相应函数;在Workspace窗口的ClassView页中,根据需要为对话框添加其他成员变量和成员函数。4.编写代码。5.编译、调试程序;运行程序,并对程序功能进行测试

功能设计

(1)支持加减乘除运算(2+3=5)

(2)支持输入正确的乘方运算(如2^3=8)

(3)支持混合四则运算(如2+3*2=8)

(4)支持正确的表达式运算(如2+3*(2-4/2)=2)

(5)计算器的输入方式:支持鼠标点击输入和键盘输入

本计算器支持鼠标点击操作和键盘输入。(鼠标输入是点击按钮,编辑框即显示点击的结果和计算结果,键盘输入是点击编辑框锁定光标后从键盘输入的)。

(6)使用图形界面中的事件委托机制来处理事件响应

计算器计算结果的输出方式:在计算器窗口的显示。

(7)本计算器应该要支持退格和清零。点击C按钮将编辑框清零,点击backspace按钮,退格,清除编辑框中最后一个输入字符。

(8)算术运算的数据类型:整数和浮点数

本计算器支持的精度是6位小数,支持的运算是32位,超出即位溢出,同时显示的结果仅保留6位小数。本计算器默认诸如“(8)=”的表达式有效,不设置错误提示。

出现运算异常的情况为:①.被除数为0的情况,提示用户被除数不能为零!②.输入的表达式不正确时,提示出错。

(9)点击等号按钮,或者键盘输入等号时,计算器在编辑框显示计算结果。当用户通过计算或者输入得到一个含有等号的表达式之后,再次点击等号

或者键盘输入等号均不再经行计算。

(10) 以上所有的运算都是在10进制下进行。

(11) 用户不输入任何表达式,直接点击或者键盘输入等号时,默认在编辑框显示0。

实验结果:

注:关于鼠标敏感的实现无法截图,请看程序。

进入界面

计算界面

输入除数为0

输入:6/0=

运算结果溢出

输入:9666666666666666666666666666666666666666*999999999999999999999999999999999999=

表达式有误

输入:6*(*4=

实现视图内指定区域内对鼠标点击和移动的敏感处理功能

需要新加入函数:

BOOL CMFCDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)

{

BOOL bRes=CDialog::OnSetCursor(pWnd, nHitTest, message);

HCURSOR h;

if(nHitTest==HTCLIENT&&message==WM_RBUTTONDOWN)

{

h=AfxGetApp()->LoadCursor(IDC_CURSOR1);

bRes=TRUE;

}

if(message==WM_LBUTTONDOWN)

{

h=AfxGetApp()->LoadCursor(IDC_CURSOR5);

bRes=TRUE;

}

if(nHitTest==HTCAPTION&&message!=WM_RBUTTONDOWN&&mess age==WM_LBUTTONDOWN)

{

h=AfxGetApp()->LoadStandardCursor(IDC_SIZEALL);

bRes=TRUE;

}

if(nHitTest==HTMENU&&message!=WM_RBUTTONDOWN)

{

h=AfxGetApp()->LoadCursor(IDC_CURSOR4);

bRes=TRUE;

}

SetCursor(h);

return bRes;

}

关键代码如下:

void CMfcTESTDlg::OnBTdian()

{

相关文档
最新文档