科学计算器课程设计报告C++课程设计Word文件下载.docx

上传人:b****4 文档编号:17783197 上传时间:2022-12-10 格式:DOCX 页数:22 大小:108.73KB
下载 相关 举报
科学计算器课程设计报告C++课程设计Word文件下载.docx_第1页
第1页 / 共22页
科学计算器课程设计报告C++课程设计Word文件下载.docx_第2页
第2页 / 共22页
科学计算器课程设计报告C++课程设计Word文件下载.docx_第3页
第3页 / 共22页
科学计算器课程设计报告C++课程设计Word文件下载.docx_第4页
第4页 / 共22页
科学计算器课程设计报告C++课程设计Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

科学计算器课程设计报告C++课程设计Word文件下载.docx

《科学计算器课程设计报告C++课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《科学计算器课程设计报告C++课程设计Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

科学计算器课程设计报告C++课程设计Word文件下载.docx

{

public:

voidclean_aliter();

CStringOLD_ANSWER;

voidout_change(intsystem);

CCalculatorDlg(CWnd*pParent=NULL);

//standardconstructor

intSel,EndSel;

//定义输入或插入时光标的位置

intExpr_pos;

//词法分析表达式时,标记当前字符位置

intOS_pos;

//操作数栈顶位置

intold_pos;

//历史表达式的位置

intold_head;

//历史表达式数组中最最前位置

intold_back;

//历史表达式数组中最最后位置

interror_mark;

//标记表达式错误

intparentheses_count;

//记录表达式中括号的个数

doubleoperand_Stack[200];

//操作数栈

CStringold_expression[20];

//表达式历史记录

voidgetword(WordType&

w_type,Operator&

Fun_Ope,intsystem);

//词法分析函数

intgetword16();

intgetword10();

intgetword8();

intgetword2();

//将用字符表示的N(2,8,10,16)进制转为浮点型

voidE_AddSub();

//加减voidT_MulDiv();

//乘除

voidF_Power();

//乘方voidL_Function();

//函数

voidH_Digit();

//数字voidFactorial();

//阶乘

voidP_expression();

//括号voidcompute(OperatorOp);

//计算

voiderror(int);

//错误标记函数voidclean_all();

//清空表达式和计算结果

protected:

HICONm_hIcon;

DECLARE_MESSAGE_MAP()

};

程序中所用到相关专业知识:

类,对象数组,友元函数,继承与派生,指针,枚举,,数栈,算法

前言1

第一章系统需求2

1.1简介说明2

1.1.1系统要求2

1.1.2具体任务2

1.1.3研究目的2

1.2设计分析3

1.2.1可行性分析3

1.2.2需求分析3

1.2.3设计结构3

1.3开发环境3

1.3.1运行环境3

1.3.2开发工具3

1.3.3关于VisualC++6.04

第二章系统设计5

2.1功能说明5

2.1.1系统总体功能分析5

2.1.2系统功能5

2.1.3课程设计内容6

2.2设计大概6

2.2.1设计思路6

2.2.2控件定义7

2.2.3变量的定义以及初始化8

第三章系统实现9

3.1窗体设计9

3.1.1设计步骤9

3.1.2控件定义9

3.1.3一部分操作截图10

3.2程序核心代码11

3.2.1数字键和字母键核心代码11

3.2.2计算类型函数的核心代码11

3.2.3提示错误的核心代码13

3.2.4进制转换的核心代码14

3.2.5八进制单选按钮消息响应函数代码16

3.2.6二进制单选按钮消息响应函数17

第四章系统运行20

4.1测试以及运行界面20

4.1.1程序主界面测试20

4.1.2运行的计算结果20

4.1.3转换进制计算21

4.2测试22

4.2.1测试研究与选择22

4.2.2测试环境22

总结23

参考文献24

前言

VisualC++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。

为了方便计算,我们编写了计算器。

本报告在李军老师的指导下,并且形成了比较完善的体系,本设计报告具体包含以下内容:

第一章直接介绍了基于C++语言,熟悉Visual6.0的开发环境和C++控制台方式的调试和运行,使学生熟悉VisualC++6.0更自然。

以及我们编程的背景与意义及目的,主要介绍我们编写这个程序用来做什么。

第二章介绍了我们编程的怎么去做,设计时的一些想法。

第三章介绍了我们编程实用的一些技术与核心代码,设计时的具体做法。

第四章介绍我们运行时的一些具体操作,以及我们给出的总结与参考文献。

本程序编写一个程序来实现算术计算器。

通过数组和指针以及枚举来存放输入的每一数字或运算符号函数的记录(包括1、2、3等数字,+、--、*、等运算符号)中。

通过一些单击按钮实现一些标准与科学的操作混合运算,然后显示出结果。

本报告由刘明、凡力强、舒照月编写,由李军老师对全报告进行修改,以及很多同学以及网络朋友提供帮助,在此表示感谢。

由于水平有限,不当之处在所难免,恳请读者批评指正。

编者

2012.6

第一章系统需求

1.1简介说明

1.1.1系统要求

1、用C++语言实现程序设计;

2、利用MFC进行相关信息处理;

3、画出总模块的流程图;

4、系统的各个功能模块要求用函数的形式实现;

5、界面友好(良好的人机互交),程序要有注释;

1.1.2具体任务

1、定义以及初始化,输入0~9,A~F,运算符等信息;

2、输入简单的运算符计算式,并显示出计算结果;

3、画出总流程图;

4、编写代码;

5、程序分析与调试;

1.1.3研究目的

1、熟悉掌握基于对话框的程序编写;

2、熟练掌握放置控件及control工具条的使用;

3、掌握控件摆放的基本方法,熟练掌握Dialog的使用;

4、熟悉建立对话框步骤;

5、了解CBUTTON类的实用;

6、巩固并加深学生对C++语言程序设计知识的理解;

7、培养学生面向对象的程序设计思想,与其认识面向过程和对象的区别;

8、进一步掌握和应用VC++6.0集成开发环境;

9、提高运用C++语言解决实际问题的能力;

10、初步掌握开发小型实用软件的基本方法,能独立设计、实践操作;

11、掌握书写程序设计开发文档的能力(书写课程设计实验报告);

1.2设计分析

1.2.1可行性分析

伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的作用。

我们在学校生活中常会遇到一些繁杂的数值运算,我们必须要用到科学计算器,所以便着手开发了这个计算器程序,既紧随科技发展的前沿,又方便了我们的生活,具有一定的现实意义。

1.2.2需求分析

本软件主要用于计算机WindowsXP以上的用户使用,这次课程设计一般是实现简单计算器的功能。

需要程序实现:

加减乘除,开方,平方,倒数等运算功能;

还要实现数据的输入,输出,计算,显示及程序退出等功能。

另外还可以实现多种科学计算的功能,如:

三角函数的计算,弧度与角度间的转换,对数指数的计算,二、八、十、十六进制的转换等。

第一章主要介绍了我们做这个课程设计目地是做什么。

第二章主要介绍了我们怎么去设计这个课程报告以及编程。

第三章主要介绍了我们实现代码的关键性技术与源码段的介绍。

第四章主要介绍了我们做这个程序的运行结果与一些运算的截图。

1.3开发环境

1.3.1运行环境

(1)Windows764位/XP32位系统

(2)VisualC++6.0(中文版)编译环境

1.3.2开发工具

C++语言

1.3.3关于VisualC++6.0

VisualC++6.0是Microsoft公司在1998年推出的基于Windows9X和WindowsNT的优秀集成开发环境。

该环境为用户提供了良好的可视化编程环境,程序员可以利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。

VisualC++6.0不仅包括编辑器,还包括许多有用组件,通过这些组件的协同工作,可以在VisualC++6.0集成环境中轻松地完成创建源文件、编辑资源以及对程序的编译、连接和调试等各项工作。

VC++6.0是Windows95/98、XP或WindowsNT下的一个应用程序,本身对软件没有特殊要求。

就是说它对环境的要求与Windows95/98、WindowsNT的要求是一致的。

VC++6.0系统可以在一张CD盘上,也可以在“VisualStudio(VisualC++、VisualFoxpro)”等产品的第一张CD盘上。

一般都有一个VC的自动安装程序,也可以执行VC++6.0目录下的Setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。

在安装好VC6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行Setup.exe安装程序,安装程序会检测当前系统安装VC6.0的组件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要与一般的应用软件一样,有以下两种启动方式:

(1)通过“开始”按钮,选择“程序”菜单,然后打开“MicrosoftVisualC++6.0中文版”子菜单中的“MicrosoftVisualC++6.0中文版”程序。

(2)用户也可以使用命令行启动VC,单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入C:

\programFiles\MicrosoftVisualStudio\VC98\VC6.exe(按默认盘符和路径安装即可)。

第二章系统设计

2.1功能说明

2.1.1系统总体功能分析

此程序采用VC++编写,是一个基于对话框的应用程序,当用户在对话框点击相应按钮时,先执行输出按钮对应字符串,用户可以在对话框上选择相应地科学计算操作按钮,通过程序内相关代码完成相应地科学计算功能。

它的设计按软件工程的方法进行,系统具有良好的界面,必要的交互信息,简约的美观效果。

使用人员能快捷简单地进行操作,即可单机按钮进行操作,也可直接通过键盘输入。

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

其具体的功能有:

(1)运算更加简介。

(2)两个对话框,一个显示输入数据,另一个显示计算结果。

(3)实现计算求和,求平均的功能。

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

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

(6)“CE”按钮可以清除所有已输出的数据从头计算。

我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。

要计算功能有以下几个方面:

加法,减法,乘法,除法,求幂,求模,求和,求平均,求平方根,求三角函数,进制换算等。

2.1.2系统功能

1、十进制数的加、减、乘、除、乘方、取模等简单计算。

2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运算。

3、以角度、弧度两种方式实现上述部分函数,梯度没有提供。

4、不同进制有不同的运算方式。

5、判断输入输出的正确性。

课题名称:

计算器的实现

基本说明:

我们实现了一个标准计算器的运算以及科学计算器的运算的集成,使其较之:

方便、快捷、轻松,看上去美观大方,少了切换的繁琐操作,并且我们做的更加简约。

2.2设计大概

所编写的计算器是基于对话框的程序,能够进行加减乘除的运算,开方,立方,三角函数,反三角函数,阶乘,求和,求平均,进制转换运算等功能,仿照Windows自带的计算器进行编写,如图2.2.1;

ID

CAPTION

Member

IDC_0~IDC_9

0~9

m_0~m_9

IDC_A~IDC~F

A~F

m_A~m_F

IDC_ADD

+

m_ADD

IDC_POINT

.

m_POINT

IDC_POW

x^y

m_Pow

IDC_SQRT

Sqrt

m_SQRT

IDC_DIVID

/

m_DIVID

IDC_CE

CE

m_CE

IDC_C

C

m_C

IDC_BACKSPACE

Backspace

m_BACKSPACE

IDC_Ln

Ln

m_LN

IDC_Log

Log

m_LOG

IDC_Sin

Sin

m_SIN

IDC_Cos

Cos

m_COS

IDC_Tan

Tan

m_TAN

IDC_ACOS

acos

m_ACOS

IDC_ATAN

atan

m_ATAN

IDC_XOR

Xor

m_Xor

IDC_BUTTON43

MS

m_BUTTON43

IDC_MOD

Mod

m_MOD

IDC_BUTTON40

Dms

m_BUTTON40

IDC_BUTTON49

Ave

m_BUTTON49

IDC_BUTTON48

Sum

m_BUTTON48

IDC_BUTTON47

S

m_BUTTON47

IDC_NOT

Not

m_NOT

IDC_BUTTON46

Dat

m_BUTTON46

IDC_PI

pi

m_PI

IDC_BUTTON42

M+

m_BUTTON42

IDC_BUTTON45

MC

m_BUTTON45

IDC_Equal

=

m_EQUAL

2.2.3变量的定义以及初始化

intSel,EndSel;

intExpr_pos;

intOS_pos;

intold_pos;

intold_head;

intold_back;

interror_mark;

intparentheses_count;

doubleoperand_Stack[200];

CStringold_expression[20];

//以上为定义部分,以下为初始化部分

Sel=0;

//输入的光标位置

EndSel=0;

//插入光标的位置

Expr_pos=0;

//当前字符的位置

OS_pos=0;

//操作数栈顶位置

old_pos=old_head=old_back=0;

//历史表达式的位置

error_mark=0;

//表达式错误

parentheses_count=0;

//括号的个数

OLD_ANSWER=_T("

"

);

//初始化

第三章系统实现

3.1窗体设计

利用MFCAppWinzard生成计算器应用程序框架具体步骤如下:

(1)执行VC++6.0程序,选择文件——新建命令,转到工程选项卡,选择MFCAppWizard(exe)选项,然后在工程名称输入名字,一般以C开头,也可以自定义,位置路径自定义。

(2)单击确定,弹出MFC应用程序向导-步骤1对话框。

选中单选按钮基本对话框,单击完成即可,如图所示:

图3.1.1文件新建示意图

(1)为控件添加成员变量已经在系统设计里面列举出,这里就不再重复;

(2)为控件添加消息,查看-类向导命令,转到MessageMaps选项卡,为控件添加BN_CLICKED消息,单击确定即可,具体哪些控件这里就不再详细介绍了。

3.2程序核心代码

voidCCalculatorDlg:

:

OnNumberKey(UINTnID)//按键输入

m_Edit.GetSel(Sel,EndSel);

//得到输入框的光标位置

switch(nID)

{//在光标位置插入按钮表示的字符,在输入框插入相应的数值

caseIDC_0:

{m_expression.Insert(Sel,"

0"

break;

}

caseIDC_1:

1"

caseIDC_2:

2"

caseIDC_3:

3"

caseIDC_4:

4"

caseIDC_5:

5"

caseIDC_6:

6"

caseIDC_7:

7"

caseIDC_8:

8"

caseIDC_9:

9"

caseIDC_A:

A"

caseIDC_B:

B"

caseIDC_C:

C"

caseIDC_D:

D"

caseIDC_E:

E"

caseIDC_F:

F"

}

Sel++;

//光标后移

UpdateData(FALSE);

m_Edit.SetSel(Sel,Sel);

//更新输入框光标后移位置

void?

CCalculatorDlg:

compute(Operator?

Op)

{?

//根据操作计算类型,计算结果

switch(Op)

case 

OpAdd:

 

operand_Stack[OS_pos-2]+=operand_Stack[OS_pos-1];

OS_pos--;

OpSubtract:

operand_Stack[OS_pos-2]-=operand_Stack[OS_pos-1];

OpMultiply:

operand_Stack[OS_pos-2]*=operand_Stack[OS_pos-1];

OpDivide:

if(operand_Stack[OS_pos-1]==0) 

{error(5);

else

{operand_Stack[OS_pos-2]/=operand_Stack[OS_pos-1];

OS_pos--;

}}

OpMod:

{__int64 

temp=0;

temp 

(__int64)(operand_Stack[OS_pos-2]/operand_Stack[OS_pos-1]);

operand_Stack[OS_pos-1]*=temp;

 

}}

OpPower:

operand_Stack[OS_pos-2] 

pow(operand_Stack[OS_pos-2],operand_Stack[OS_pos-1]);

OpLog:

operand_Stack[OS_pos-1]=log10(operand_Stack[OS_pos-1]);

OpLn:

operand_Stack[OS_pos-1]=log(operand_Stack[OS_pos-1]);

OpSqrt:

operand_Stack[OS_pos-1]=sqrt(operand_Stack[OS_pos-1]);

OpExp:

operand_Stack[OS_pos-1] 

exp(operand_Stack[OS_pos-1]);

brea

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1