迷你计算器设计

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

迷你计算器设计
************************
实践教学
************************
兰州理工大学
计算机与通信学院
2010年秋季学期
面向对象课程设计
题目:
专业班级:
姓名:
学号:
指导教师:
成绩:
前言 (3)
摘要 (4)
正文 (5)
1.问题描述 (5)
1.1基本需求 (5)
1.2功能分析 (5)
1.3课程设计的实验环境 (5)
2. 系统总体设计 (5)
3.详细设计 (7)
3.1面板设计 (7)
3.2设置各个按钮行为 (7)
3.2.1 数字按钮功能的实现 (8)
3.2.2 操作符(+—*/=)按钮功能实现 (8)
3.2.3 撤销清除按钮的实现 (10)
4.系统测试 (11)
4.1测试的研究与选择 (11)
4.2测试环境 (11)
4.3实例测试结果 (11)
总结 (16)
参考文献 (17)
致谢 (18)
附录Ⅰ: (19)
附录Ⅱ: (23)
前言
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。

要实现计算功能,可以用C++的知识编写程序来解决此问题。

该计算器为基本模型,只实现了简单的加、减、乘、除运算。

可大大的降低了数字计算的难度及提高了计算的准确度和精确度。

该计算器使用非常简单和方便,对人们的生活有一定的帮助。

在程序设计中,通过设计、编制、调试一个迷你计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。

在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。

由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。

摘要
本课程设计将实现一个简单计算器。

其类似于Windows附件中自带的计算器。

这个计算器为简单模型,仅实现了简单的四则运算功能,其他高级的科学计算功能可通过增加按键及动作添加。

它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。

即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用Visual C++6.0,在程序设计中,采用了结构化与面向对
象两种解决问题的方法。

关键字:程序设计计算器 MFC 按钮控件
正文
1.问题描述
1.1基本需求
主要支持的数字:0、1、2、3、4、5、6、7、8、9,主要支持的算子:+、-、*、/。

要求提供图形化操作界面。

1.2功能分析
(1)包含的功能有:加、减、乘、除运算功能。

(2)计算功能基本上是用系统内部函数。

(3)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。

(4)“C E”按钮可以清除所有已输入的数据从头计算。

1.3课程设计的实验环境
硬件要求能运行Windows 9.X操作系统的微机系统。

C++程序设计语言及相应的集成开发环境,Visual C++6.0开发工具。

2. 系统总体设计
该程序实现对用户输入数据,显示数据,在选择运算符号,并且进行计算,显示中间值,最后显示计算结果。

本计算器只提供给用户一个界面,可实现普通+ - * /运算功能。

同WINDOWS 自带计算器运算相同。

系统模块划分如下图2.1:
图2.1
提供的可视化界面清晰明了,界面如图2.2:
图2.2
此界面风格简洁,只用于简易计算。

提供一般四则运算按键以及消除键CE,以为用户基本运算所用。

3.详细设计
3.1面板设计
利用MFC AppWinzard生成计算器应用程序框架具体步骤如下:
(1)执行VC程序,生成MFC AppWizard(exe)。

(2)在对话框资源中放入EDIT控件及各功能按键。

界面如图3.1:
图3.1
3.2设置各个按钮行为按钮控件对应如下图3.2
图3.2
在MFC ClassWizard中为各按键设置BN_CLICKED。

3.2.1 数字按钮功能的实现
主要支持的数字:0、1、2、3、4、5、6、7、8、9
3.2.2 操作符(+—*/=)按钮功能实现
主要支持的算子:+、-、*、/。

具体功能的实现首先添加成员变量。

该计算器中所有的运算都是二元运算,即需要两个操作数,两个二元运算操作符,即当前操作符和之前未运算操作符。

所以必须声明两个浮点数,分别用来表示初始操作数和结果操作数,同时,必须声明两个字符串类型的变量,分别用来显示初始操作数和中间操作数。

还需要两个整形变量来记录当前运算符,以及一个整形变量来记录当前小数点按钮是否被单击过。

实现代码如下:CString m_StrBegin="",m_mid="";//记录初始操作数的字符串
double m_end=0;//记录结果操作数
double m_begin=0;//记录初始操作数
int m_bit1=0,m_bit2=0;//符号
int m_IsCheckPoint=0;//判断是否按下了小数点符号,当其为0时,表示没//有按下当数字键0-9被单击时,则将当前所按键加到初始操作数末尾,并将初//始操作数显示出来。

//下为算法核心
void Result(int m_bit)//用来处理按下符号键时的函数,是计算的核心函数{
m_begin=atof(m_StrBegin); //当输入数据转为浮点数
m_bit1=m_bit2;
m_bit2=m_bit;
m_IsCheckPoint=0; //清除小数点标记
switch(m_bit1)
{
case 0: m_end=m_begin;
break;
case 1: //处理+号
m_end+=m_begin;
break;
case 2: //处理-号
m_end-=m_begin;
break;
case 3: //处理*号,即乘法
m_end*=m_begin;
break;
case 4: //处理/号,即除法
m_end/=m_begin;
break;
default: break;
}
m_StrBegin="";
m_mid.Format("%f",m_end);
}
3.2.3 撤销清除按钮的实现
按下'CE'按钮,将当前数据全部清除;//数据清零函数
void ling()
{
m_StrBegin="";
m_mid="";
m_end=0;
m_begin=0;
m_bit2=0;
m_bit1=0;
m_IsCheckPoint=0;
}
//单击调用
void CJisuanqiDlg::OnBUTTONCE() {
ling();
GetDlgItem(EDIT)->SetWindowText("0");
}
4.系统测试
4.1测试的研究与选择
测试过程中要判断测试是否成功,要分析程序界面的变化和计算数据的结果是否正确以及各功能键是否能正常使用。

4.2 测试环境
测试环境如下:
测试系统: Windows XP
测试工具: Visual Studio C++ 6.0
4.3 实例测试结果
不考虑乘法、除法优先级。

同WINDOWS自带计算器。

3+4*3-2=
结果正确,并可看出中间结果。

总结
设计一个迷你计算器,在刚开始做这个程序的时候,我感觉这个任务很简单,因为只有四种运算,于是就开始按照自己的思路写程序。

结果在编程的过程中,在许多地方都遇到了困难,这时候才发现,原来有很多地方是我以前不曾注意的地方,现在用起来总是没办法运用自如,经常是改了一处之后反而出现了更多的问题。

但是通过请教老师和同学,再加上看书和上网主动查资料,通过认真的思考,最终还是慢慢的把这些问题解决了。

这些问题是我在从低级的程序员向高级程序设计师过度的过程必须要解决的。

而我个人认为我越早接触,越多接触,越快解决对我本人缩短此过程有重要的意义。

这次程序设计中,在提示信息的对应要求和数据的输入上,我认为做的还是不够完善。

有几条提示信息只是告诉用户你输入的表达式有问题,并不能很明确的告诉用户他的出错的地方。

这是我这个小程序员的不足。

以后通过更深一步的学习,我相信我可以做得更好的。

我完成了这次课程设计,不过这只是我学习路上的驿站。

我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习工作中去。

参考文献
[1]陈维兴,林小茶.c++面向对象程序设计教程. 北京: 清华大学出版社,1996.2004.
[2]张国峰. C++程序设计实用教程. 北京: 清华大学出版社,1996.
[3]张松梅. C++语言教程. 电子科技大学出版社,1993.
[4]阎龙. C程序员的C++指南. 北京航空航天大学出版社,1992.
[5]王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990.
[6]汪成为. 面向对象分析、设计及应用. 国防工业出版社,1992.
[7]江明德. 面向对象程序设计. 电子工业出版社,1993.
[8]吕凤翥.C++语言程序设计.电子工业出版社,2001.
致谢
首先,我们要感谢学校给我们提供了此次课程设计的机会,能让同学们在一起学习与研究,让我们有机会对所学的理论知识进行实践。

其次,我们还要特别感谢我们的辅导老师张其文老师,在他的精心辅导和帮助下,我们的设计才得以顺利完成。

对他为我们的设计所提出的宝贵意见表示忠心的感谢!
最后,我的同学在设计完成后对程序的测试,没有他们,也许就难以发现一些潜在的错误,在此一并表示感谢。

附录Ⅰ:
//全局变量定义、主要算法以及按键动作。

CString m_StrBegin="",m_mid="";//记录初始操作数的字符串
double m_end=0;//记录结果操作数
double m_begin=0;//记录初始操作数
int m_bit1=0,m_bit2=0;//符号
int m_IsCheckPoint=0;//判断是否按下了小数点符号,当其为0时,表示没有按下
//当数字键0-9被单击时,则将当前所按键加到初始操作数末尾,并将初始操作数显示出来。

void ling()
{
m_StrBegin="";
m_mid="";//记录初始操作数的字符串
m_end=0;//记录结果操作数
m_begin=0;//记录初始操作数
m_bit2=0;
m_bit1=0;//符号
m_IsCheckPoint=0;
}
void CJisuanqiDlg::OnBUTTON1()
{
m_StrBegin=m_StrBegin+"1";
GetDlgItem(EDIT)->SetWindowText(m_StrBegin); }
void CJisuanqiDlg::OnBUTTON2()
{
m_StrBegin=m_StrBegin+"2";
GetDlgItem(EDIT)->SetWindowText(m_StrBegin); }
void CJisuanqiDlg::OnBUTTON3()
{
m_StrBegin=m_StrBegin+"3";
GetDlgItem(EDIT)->SetWindowText(m_StrBegin); }
void CJisuanqiDlg::OnBUTTON4()
{
m_StrBegin=m_StrBegin+"4";。

相关文档
最新文档