计算器的实验报告.docx
- 文档编号:27321838
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:11
- 大小:184.54KB
计算器的实验报告.docx
《计算器的实验报告.docx》由会员分享,可在线阅读,更多相关《计算器的实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
计算器的实验报告
计算器的实验报告
邮电与信息工程学院
课程设计说明书
课题名称:
mfc制作简单计算器系统软件综合设计
学生学号:
1002030218
专业班级:
计算机科学与技术02班
学生姓名:
孙志宏
指导教师:
杨玉蓓
一.题目:
利用MFC框架编写简易计算器
要求使用MFC框架在VisualStudio6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpaceCEC功能。
二.设计过程
1.Windows消息处理机制的理解
首先编写程序需要对Windows程序的消息处理机制(MessageHandle)有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
还有用户消息,比如鼠标的单击,双击,键盘的键入等。
界面的设计
仿照Windows附件里面的计算器,在资源视图中画好界面,如图:
主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
2.建立的变量,控件的命名,对应的消息处理函数对应表
3变量定义,以及初始化
longintiFirst,a;定义两个长整型变量ifirst,a
intiType;定义整形变量iType
longintiRet=0;定义一个长整型变量iRet并初始化
4设计思路
1我制作的是简单的计算器,可以加减乘除,以及清零。
所以我们先应把计算器的界面设计出来。
。
分数字键和功能键
2数字键0,1,2,3,4,5,6,7,8,9这10个命令按钮控制的数字键,在编写数字键代码时,我考虑了比如111的输出,我们可以用m_edit=m_edit*10+n(n代表你下一步所需按的键),这样你当前的文本框会显示出你想得到的数,还有我们输入的都是数字,所以我采用的是长整型输入数据
3功能键+-*/以及清零键CE,其中这里我们这些功能键并不是直接来运行的而是把他们当作一种标志分别标志为1234,真正执行运算功能的是等于键=
4等于键=这里我们采用swichcash语句来执行运算的功能的,当读到标志为1时,即为加法,执行加法功能。
。
。
以此类推
5程序代码
在这里我就把整个程序代码写下来,,就写我们的数字和功能键部分的代码把
下面是数字键代码
voidCJisuan1Dlg:
:
On0()
{m_edit=m_edit*10+0;这里我们采用这个表达式是想把数字连起来显示在文本框中
UpdateData(false);你在程序里面改了变量的值.把这个变化反应到界面上..更新显示..
}
voidCJisuan1Dlg:
:
On1()
{m_edit=m_edit*10+1;
UpdateData(false);
}
handlercodehere
}
voidCJisuan1Dlg:
:
On8()
{m_edit=m_edit*10+8;
UpdateData(false);
//TODO:
Addyourcontrolnotificationhandlercodehere
}
voidCJisuan1Dlg:
:
On9()
{
m_edit=m_edit*10+9;
UpdateData(false);
}
下面是功能键的代码:
voidCJisuan1Dlg:
:
OnCheng()
{
iFirst=m_edit;ifirst是我们定义的长整型变量,第一个值显示在文本框上
iType=3;3是乘的标志
m_edit=0;这里文本框重新显示为0
UpdateData(false);刷新并使文本框中显示为0
}
voidCJisuan1Dlg:
:
OnChu()
{
iFirst=m_edit;
iType=4;
m_edit=0;
UpdateData(false);
}
下面是执行运算的代码即=键的代码
voidCJisuan1Dlg:
:
OnDengyu()
{
longintiRet=0;定义一个长整型变量iRet并初始化
switch(iType)采用switch。
。
cash语句
{
case1:
当iType为1即为加法时
iRet=iFirst+m_edit;等于第一个数加上当前文本框中显示的数,结果并赋予iRet
break;
case2:
iRet=iFirst-m_edit;
break;
case3:
iRet=iFirst*m_edit;
break;
case4:
if(m_edit!
=0)如果除一个不为0的数的
{
iRet=iFirst/m_edit;
break;
}
else否则
{
MessageBox("can'tusezero!
");
}
return;
}
m_edit=iRet;
UpdateData(false);
iFirst=0;
iType=0;
}
voidCJisuan1Dlg:
:
OnJia()
{
iFirst=m_edit;
iType=1;
m_edit=0;
UpdateData(false);
}
voidCJisuan1Dlg:
:
OnJian()
{
iFirst=m_edit;
iType=2;
m_edit=0;
UpdateData(false);
}
下面是清零键代码
voidCJisuan1Dlg:
:
OnQingling()
{
iFirst=0;第一个数重新为0
iType=0;标志为0
m_edit=0;当前文本框中显示为0
UpdateData(false);刷新
}
voidCJisuan1Dlg:
:
OnChangeEdit1()
{
}
6运行界面
比如我们想算158+232=?
先输入158,界面如下
然后按命令按钮“+”界面如下
输入232得到下面界面
最后单击“=”按钮得到390
参考的文献:
C++面向对象程序设计谭浩强编著清华大学出版社
MFC,微软基础类(MicrosoftFoundationClasses)
总结:
本次MFC计算器的制作,学习到了MFC基本的编程方法,增加了小组开发的团结协作能力。
对OOP编程的理解进一步加深。
但是程序仍然没存在一定的问题,比如除数不能为0的Exceptionhandle,由于时间仓促,这个计算器只能计算简单的运算,+-*/,没有复杂的运算,还有老师希望我们用科学记数法来表示,,这个计算器的不足之处是在位数太对了就会溢出。
。
。
。
如果有更多的时间,必定这些问题会迎刃而解。
通过这次课程设计,以后C++应用程序势必会轻车熟路。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算器 实验 报告