计算器程序设计报告.docx

上传人:b****3 文档编号:4946185 上传时间:2023-05-07 格式:DOCX 页数:18 大小:156.49KB
下载 相关 举报
计算器程序设计报告.docx_第1页
第1页 / 共18页
计算器程序设计报告.docx_第2页
第2页 / 共18页
计算器程序设计报告.docx_第3页
第3页 / 共18页
计算器程序设计报告.docx_第4页
第4页 / 共18页
计算器程序设计报告.docx_第5页
第5页 / 共18页
计算器程序设计报告.docx_第6页
第6页 / 共18页
计算器程序设计报告.docx_第7页
第7页 / 共18页
计算器程序设计报告.docx_第8页
第8页 / 共18页
计算器程序设计报告.docx_第9页
第9页 / 共18页
计算器程序设计报告.docx_第10页
第10页 / 共18页
计算器程序设计报告.docx_第11页
第11页 / 共18页
计算器程序设计报告.docx_第12页
第12页 / 共18页
计算器程序设计报告.docx_第13页
第13页 / 共18页
计算器程序设计报告.docx_第14页
第14页 / 共18页
计算器程序设计报告.docx_第15页
第15页 / 共18页
计算器程序设计报告.docx_第16页
第16页 / 共18页
计算器程序设计报告.docx_第17页
第17页 / 共18页
计算器程序设计报告.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算器程序设计报告.docx

《计算器程序设计报告.docx》由会员分享,可在线阅读,更多相关《计算器程序设计报告.docx(18页珍藏版)》请在冰点文库上搜索。

计算器程序设计报告.docx

计算器程序设计报告

计算机科学与技术学部

面向对象程序课程设计

题目计算器

学部计算机科学与技术

班级

指导教师

姓名

2011年6月16日

课程设计任务分配表

姓名

工作安排

组长

程序设计

组员

实验报告书的制作

 

VisualC++的课程设计成绩表

姓名

学号

成绩

摘要

随着当今社会的发展,越来越多的人开始使用电子商品,新的高考制度也允许使用计算器,而作为一名计算机专业的学生,在使用工具的同时也应该学会制作这类工具。

该系统则是与Windows附件里的计算器相仿的一个计算器。

计算器的产生和发展是建立在电子计算机基础之上的。

硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。

软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。

在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁明了,使人员能快捷简单的操作。

能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。

此系统在WindowsXP环境下,使用VC++6.0进行编写。

简单计算器包括双目运算和单目运算功能。

双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数等运算。

可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。

并且包含清除,退格功能以及有与所有按钮相对应的菜单项。

通过C++课程设计,将学到的面相对象的程序设计思想用到具体的工作和学习中,加深对类与对象的理解,提高学生分析问题,解决问题从而运用所学知识解决实际问题的能力。

关键词:

计算器,运算,VC++等。

 

目录

第1章前言1

1.1简介说明1

1.1.1研究目的1

1.1.2可行性分析1

1.1.3关于VisualC++6.01

1.2题目要求2

1.3设计思路2

第2章系统功能分析4

2.1系统总体功能分析4

2.1.1控件定义5

2.1.2变量的定义6

2.1.3变量的初始化6

2.2程序核心代码6

2.2.1数字键和符号键的核心代码6

2.2.2调用科学型、标准计算器的核心代码7

2.2.3退格键的核心代码7

2.2.4进制和弧度的核心代码8

第3章系统测试11

3.1程序变量添加11

3.1.1显示变量的添加截图11

3.1.2相关按键的实现截图12

3.2程序运行测试12

3.2.1程序主界面截图12

3.2.2数字键和符号键截图13

3.2.3科学型计算器截图13

3.2.4退格键截图14

3.2.5进制和弧度截图14

第4章总结15

参考文献16

第1章前言

1.1简介说明

1.1.1研究目的

制作此工具主要有四个目的:

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

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

3、掌握控件摆放的基本方法,熟练掌握Dialog工具条的使用。

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

1.1.2可行性分析

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

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

1.1.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(按默认盘符和路径安装即可)。

1.2题目要求

所编写的计算器是基于对话框的程序,能够进行加减乘除的运算,开方,立方,三角函数,反三角函数等功能。

仿照Windows自带的计算器进行编写。

1.3设计思路

<1>首先考虑所有按键分为两类,即数字键和符号类,0、1、2、3、4、5、6、7、8、9为数字键,其余均为符号键,如’+’、’-’、’C’等等。

数字在计算的过程中最多需要保存两个,所以定义了两个double型变量m_first和m_second来进行存储。

符号用一个CString型变量m_operator来存储。

<2>其次,考虑在计算的过程中,m_first和m_second的存储状态有三种,一种是m_first==0&&m_second==0也就是程序刚开始运行还没有开始录入数字的状态;第二种是m_first!

=0&&m_second==0也就是第一个数字已经录入,符号也已经录入的时候,直接将其值赋给m_first,并通过UpdateDisplay()函数输出;第三种是m_first!

=0&&m_second!

=0,其表示可以通过m_operator的计算把两个数合并为一个数。

<3>考虑到所有的计算结果必须在按下’=’按钮后都会将其数据进行计算,并显示到编辑框,因此,将符号判断放在’=’按钮的函数体内,当其按下时逐一判

断此数据应当进行何种操作。

<4>考虑到数字全部使用的都是double型,键入的数字必须通过一定的处理达到其计算的效果,特别是当其数据有小数和整数处理时,其差异性大,所以分别用m_coff来判断小数和整数。

<5>考虑到科学型计算器的使用,和科学型计算器与标准型计算器之间的切换,在其菜单中通过菜单的调用间接调用其科学型计算器对话框,所以使用了非模式对话框的调用。

第2章系统功能分析

2.1系统总体功能分析

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

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

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

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

其具体的功能有:

(1)包含的功能有:

加、减、乘、除运算,开方、求倒数等功能。

(2)计算器上数字0-9为一个控件数组,加、减、乘、除为一个控件数组,其余的为单一控件。

(3)给对话框添加菜单。

(4)输入的原始数据、运算的中间数据和结果都显示在窗口顶部的同一个标签中。

(5)实现对话框的扩展功能。

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

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

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

2.1.1控件定义

如表2.1.1

ID

CAPTION

MessageHandler

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_ADD

+

OnAdd

IDC_SIGN

+/-

OnSign

IDC_POINT

.

OnPoint

IDC_3Equal

=

On3Equal

IDC_Daoshu

x/1

OnDaoshu

IDC_MINUS

-

OnMinus

IDC_QUYU

%

OnQuyu

IDC_MULTIPLY

*

OnMultiply

IDC_SQRT

sqrt

OnSqrt

IDC_DIVID

/

OnDivid

IDC_M

M

OnM

IDC_MS

MS

OnMs

IDC_MR

MR

OnMr

IDC_MC

MC

OnMc

IDC_CE

CE

OnCe

IDC_C

C

OnC

IDC_BACKSPACE

Backspace

OnBackspace

IDC_Ln

ln

OnLn

IDC_Log

Log

OnLog

IDC_Sin

sin

OnSin

IDC_Cos

cos

OnCos

IDC_Tan

tan

OnTan

IDC_Jiecheng

n!

OnJiecheng

IDC_Lifang

x^3

OnLifang

IDC_Pingfang

x^2

OnPingfang

IDC_MI

x^y

OnMi

IDC_Exp

exp

OnExp

IDC_Equal

=

OnEqual

2.1.2变量的定义

doublem_coff;//保存小数点的位置

doublem_first;//保存计算过程中的前一个数字

doublem_second;//保存计算过程中的第二个数字

CStringm_operator;//记录当前的计算符号

CStringm_display;//保存编辑框上需要显示的数字

voidUpdateDisplay(doublelval);//将需要输出的数据格式化处理

2.1.3变量的初始化

m_second=0.0;

m_coff=1.0;

mm_first=0.0;

_operator="+";

m_display=_T("");

2.2程序核心代码

2.2.1数字键和符号键的核心代码

voidCSecondDlg:

:

Num(intn)

{

if(m_coff==1.0)

m_second=m_second*10+n;

else

{

m_second=m_second+m_coff*n;

m_coff*=0.1;

}

UpdateDisplay(m_second);

}

voidCMyCalculatorDlg:

:

On1()//数字1的处理

{

Num

(1);

}

2.2.2调用科学型、标准计算器的核心代码

voidCMyCalculatorDlg:

:

OnScience()//调用科学型计算器

{

CSecondDlg*pDlg2=newCSecondDlg;

pDlg2->Create(IDD_DIALOG2);

pDlg2->ShowWindow(SW_SHOW);

}

voidCMyCalculatorDlg:

:

OnNormal()//调用标准型计算器

{

CMyCalculatorDlg*pDlg=newCMyCalculatorDlg;

pDlg->Create(IDD_DIALOG1);

pDlg->ShowWindow(SW_SHOW);

}

2.2.3退格键的核心代码

voidCMyCalculatorDlg:

:

OnBackspace()//退格键的实现

{

charbuffer[15];

if(m_second-(int)m_second==0)//如果是整数,则以除以10的方式退格

m_second=(int)m_second/10;

else//小数方式的退格

{

*gcvt(m_second,sizeof(m_second),buffer);//将输入的浮点数转换为字符串

for(inti=0;i<15;i++)

if(buffer[i]==0)

{

buffer[i-1]=0;

m_second=strtod(buffer,NULL);//将字符串转换回为浮点数

break;

}

}

UpdateDisplay(m_second);

m_coff=1.0;

}

2.2.4进制和弧度的核心代码

voidCSecondDlg:

:

OnBa()//八进制的实现

{

charstring[8]={'0','1','2','3','4','5','6','7'};

chardis[20]="",temp[20];

for(inti=0;;i++)

{

if((int)m_second!

=0)

{

dis[i]=string[(int)m_second%8];

m_second=m_second/8;

}

elsebreak;

}

dis[i]='\0';

for(intk=0,j=i-1;j>=0;j--)

temp[k++]=dis[j];

temp[k]='\0';

m_display.Format(_T("%s"),temp);

intm=m_display.GetLength();

while(m_display.GetAt(m-1)=='\0')

{

m_display.Delete(m-1);

m--;

}

UpdateData(false);

}

voidCSecondDlg:

:

OnJiaoDu()//角度制的实现

{

HUDU=0;

}

voidCSecondDlg:

:

OnHudu()//弧度制的实现

{

HUDU=1;

}

voidCSecondDlg:

:

OnPi()//∏

{

m_second=3.1415926535897932384626433832795;

UpdateDisplay(m_second);

}

voidCSecondDlg:

:

OnSin()//sin的实现

{

if(HUDU==1)

m_first=sin(m_second);

else

m_first=sin(m_second*(PI/180));

UpdateDisplay(m_first);

m_second=0.0;

}

第3章系统测试

3.1程序变量添加

3.1.1显示变量的添加截图

 

图3.1.1

 

3.1.2相关按键的实现截图

 

图3.1.2

3.2程序运行测试

3.2.1程序主界面截图

 

图3.2.1

3.2.2数字键和符号键截图

当用户按下数字键和符号键时显示如下界面:

图3.1.2

图3.2.2

3.2.3科学型计算器截图

当用户选择科学型计算器时显示如下界面:

 

图3.2.3

 

 

3.2.4退格键截图

当用户按下退格键前后显示界面:

 

图3.2.4.1图3.2.4.2

3.2.5进制和弧度截图

当用户选择相应的进制或者弧度之间的转换时显示如下界面:

 

图3.2.5.1图3.2.5.2

第4章总结

经过多番测试,得出结论为设计的计算器能够完成功能描述内容中的全部功能。

经过几个星期的VC++课程设计,我们顺利完成该课程设计,并收获良多。

我们大体总结了以下几点:

基本功要过硬,不能马虎经常犯的小错误。

提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了。

要善于查找资料,提高自己的资料查询能力,要善于利用网络来获得知识,获得帮助。

开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么,这些问题这要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。

有了明确的目的,就可以发挥自己的头脑来完成它了。

要善于思考,程序中有些实现难点和最初完成程序时免不了的许多不足就需要自己根据代码认真思考来解决。

只有这样才能纠正程序的不足,并使其更加人性化。

这次课程设计让我们学到了很多,不仅巩固了MFC程序设计知识,而且也培养了我们的动手能力,令我们的创造性思维得到拓展。

期待今后有更多类似的锻炼机会。

通过这次课程设计,可以明显的感觉到它弥补了课程教学的和实验中知识的深度和广度方面的不足,也让我们进一步掌握了面向对象程序设计的基本方法和编程技巧,同时也巩固所学理论知识,似然花费了不止一点点的时间和精力,不过那确实挺值得的,既让我们认识到自己知识方面的缺陷,又培养了我独立分析问题、解决问题的能力。

课程设计是需要大量时间去动手练习才能体验到它的内涵的,同时还需要用心地投入,时间和情感花下去之后,的确感受到有所收获,增加了对编程的兴趣。

通过这次课程设计,掌握了对话框的相关操作,也体会到书写代码一定要仔细,有时候一小点拼写错误会浪费很多调试程序的时间,再有一点就是要好好学习英语,对编程有很大帮助。

总之,这次课程设计学到了很多,通过实践真正的做到了学有所用。

参考文献

[1]VisualC++实用程序100例人民邮电出版社段兴主编

刘元刚、宋雷、张敬韶、张轩编著

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2