科学计算器设计报告

  • 格式:doc
  • 大小:69.00 KB
  • 文档页数:9

下载文档原格式

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

LSN科学计算器

摘要

MFC是微软基于Windows平台下的C++类库集合,包含了所有与系统相关的类,提供了应用程序框架和开发应用程序的工具,如应用程序向导,类向导,可视化资源设计等高效工具,用消息映射处理消息响应,大大简化了程序编写工作。对话框则是一种特殊类型的窗口,用其可以实现与用户交互的功能。

本科学计算器应用程序基于文档较少而交互较多的应用场合,就可以利用MFC的强大功能创建程序的基本框架——即通过App Wizard,Class Wizard,App Studio创建基于对话框的方式制作程序。本文则详细介绍了开发人员利用MFC开发此计算器程序的设计思路,该程序的功能和设计介绍,以及过程中遇到的困难与体会。

关键词:MFC 对话框控件变量消息处理函数

1 科学计算器开发设计思想

根据设计中的需求,该科学计算器主要实现用户交互功能。LSN科学计算器的功能主要包括列出式子进行四则运算,加减乘除运算(其中包括含括号的运算),还有函数的运算,包括三角函数运算,指数函数运算中的求平方,正数求开方,立方,以及进制转化等功能。采用MFC作为具体开发工具,设计出如下界面

操作具体过程应为先通过资源管理器绘出计算器窗口;再放置控件并设置控件属性;然后为控件连接变量;最后使用类向导创建消息处理函数。

在消息处理函数的确定过程中,首先考虑了各种数据的输入情况,字符串中只有数字时,有数字和运算符时,带括号时的三种情况,经过从网络和书本上查阅资料,了解了实现计算器功能的代码和方法,并分别设计出相应的函数解决问题,同时设计出计算结果的算法。另外函数的运算则通过包含Cmath文件,实现相应的功能。

2 科学计算器功能及系统设计介绍

(1)功能介绍

运行程序后,系统会弹出一个基于对话框的计算器界面;

在计算器程序中,主要通过一个编辑框来获取表达式和显示计算

结果,表达式可以通过键盘和单击按钮2种方式输入:可输入四则运算的(),+,—,*,/,和相应的数字。

在输入完表达式后,单击“=”后,开始对表达式进行运算,计算完成后,在编辑框中显示计算的结果;

计算器可以实现十进制转化为十六进制,八进制,二进制,其实现的操作为先输入一个十进制数,再单击按钮“转化为十六进制”,“转化为八进制”,“转化为二进制”。

此外,计算器还可以实现一些函数运算,实现操作与转化进制的方法相同,是先输入一个数字,在单击想要函数按钮,之后会在编辑框中显示计算的结果。

(2)系统设计介绍

建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION 消息处理函数或连接变量

IDD_EDIT1 编辑框m_strnum

IDC_0 0 On0

IDC_1 1 On1

IDC_2 2 On2

IDC_3 3 On3

IDC_4 4 On4

IDC_5 5 On5

IDC_6 6 On6

IDC_7 7 On7

IDC_8 8 On8

IDC_9 9 On9

IDC_PI πOnPI

IDC_DOT .OnDot

IDC_DIV / OnDiv

IDC_MUL * OnMul

IDC_MIN - OnMin

IDC_ADD + OnAdd

IDC_back 后退OnBac

IDC_AC Ac OnAc

IDC_LBR ( OnLbr

IDC_RBR ) OnRbr

IDC_EQUAL = OnEqual

IDC_POW2 平方OnPow2

IDC_POW3 立方OnPow3

IDC_NUM2 转化为二进制OnNum2

IDC_NUM8 转化为八进制OnNum8

IDC_NUM16 转化为十六进制OnNum16

IDC_SIN sin OnSin

IDC_COS cos OnCos

IDC_TAN tan OnTan

IDC_LOG ln OnLog

IDC_SQRT sqrt OnSqrt

变量说明:

bool function,clear; //在按下=.sin.cos.tan.sqrt.

开方等按钮时,两者会变成

true,用于判断输入的字符是第一个还是中间值

char b[10]; //用于存储四则运算中的运算符

double a[20]; //用于存储四则运算中的数字

CString str2,str7,str3; //过程中用到的对象

重要函数说明:

double GetaStr(CString str); //如果编辑框中只含数字,

负责识别小数与整数的函数,

主要用于三角函数,平方,立方,开方,

对数,以及进制的参数获得问题

int GetStr(CString str); //把编辑框中的字串分为数字

和运算符分别存储到b[10];a[20]中

double GetResult(); //四则运算中得出结果的函数

void Bracket(CString str0); //解决括号问题中str2,(即

括号里的字符串),str3(即括

号里的字符串)都存在时的情况void Bracket1(CString str0); //解决括号问题中str2(即

括号里的字符串)存在,而str3

(即括号里的字符串)不存在时的情况CString f(int n); //因为十六进制和二进制,八进制都不

同,需要把10.11.12.13.14.15这

些余数转化为 A.B.C.D.E.F,而此函数即

起这个作用

3 科学计算器开发体会

(1)实践出真知:

最先开始看书上关于MFC的综述介绍时,新概念很多,怎么看都

看不懂,非常生涩,觉得既然看都看不懂的东西怎么可能还做得出来,产生了畏难情绪,甚至前几节课都不太想做,后来发现室友轻松做出

简易计算器,问她原因时说:“先照着书上一步一步来,不懂的你别管,照着做,慢慢的就会懂些了的。”我猛然想到去年计算机基础课

程设计时,一开始对Frontpage也是一窍不通,甚至连PPt都不会做,最后还不是自己去图书馆查书找步骤,照着书上的例子做,最后才懂的,况且C++程序设计还系统学过课理论知识,肯定可以搞明白的。

于是我找到程序设计实践书上的对话框实例,一步一步的跟着做,尽

管当时只是很死板地照着做——进行步骤的原因不清楚,里面用到的