windows编程大作业简单计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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()
{