基于visualc的数字键盘式简单计算器课程设计.docx

上传人:b****5 文档编号:6191835 上传时间:2023-01-04 格式:DOCX 页数:35 大小:2.19MB
下载 相关 举报
基于visualc的数字键盘式简单计算器课程设计.docx_第1页
第1页 / 共35页
基于visualc的数字键盘式简单计算器课程设计.docx_第2页
第2页 / 共35页
基于visualc的数字键盘式简单计算器课程设计.docx_第3页
第3页 / 共35页
基于visualc的数字键盘式简单计算器课程设计.docx_第4页
第4页 / 共35页
基于visualc的数字键盘式简单计算器课程设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

基于visualc的数字键盘式简单计算器课程设计.docx

《基于visualc的数字键盘式简单计算器课程设计.docx》由会员分享,可在线阅读,更多相关《基于visualc的数字键盘式简单计算器课程设计.docx(35页珍藏版)》请在冰豆网上搜索。

基于visualc的数字键盘式简单计算器课程设计.docx

基于visualc的数字键盘式简单计算器课程设计

 

课程名称:

题目:

简单计算器

院(系):

专业班级:

姓名:

学号:

指导教师:

2011年7月6日

 

西安建筑科技大学大作业设计(论文)任务书

专业班级:

学生姓名:

指导教师(签名):

一、大作业题目

简单计算器

二、本次大作业应达到的目的

具有简单计算功能的计算器,输入被计算的数据及运算操作,输出正确计算结果。

三、本次大作业任务的主要内容和要求(包括原始数据、技术参数、设计要求等)

系统的主要功能有:

①窗口界面的计算器;

②通过按钮键输入数据;

③能够完成加、减、乘、除、求倒数、开方等一般运算;

④输出结果具有一定精度

四、应收集的资料及主要参考文献:

[1]宋金珂编著,VC++程序设计基础教程,清华大学出版社

[2]谭浩强.《c语言程序设计》.清华大学出版社

[3]辛长安编著.VC++编程技术与难点剖析.清华大学出版社

[4]陈恭和编著.数据库Access2002应用教程.清华大学出版社

[5]王瑞编著.VisualC++数据库系统开发完全手册.人民邮电出版社

[6]王春才编著.VisualBasic数据库系统开发完全手册.人民邮电出版社

[7]高春艳.VisualBasic数据库系统开发案例精选.人民邮电出版社

[8]李晓黎编著.VisualBasic+SQLServer数据库应用系统开发与实例.人民邮电出版社

[9]启明工作室编著.VisualBasic+Access数据库应用系统开发与实例.人民邮电出版社

[10]启明工作室编著.VisualC+++SQLServer数据库应用系统开发与实例.人民邮电出版社

五、审核批准意见

 

教研室主任(签字)

一、需求分析

1.1开发背景……………………………………………………4

1.2项目目标……………………………………………………4

1.3运行环境……………………………………………………4

1.4项目任务书…………………………………………………5

二、技术路线

2.1制作界面……………………………………………………5

2.2总体方案……………………………………………………5

2.3详细设计……………………………………………………8

三、编程实现

3.1核心代码……………………………………………………19

3.2运行结果……………………………………………………29

四、测试分析……………………………………………………30

五、个人总结……………………………………………………34

六、参考文献……………………………………………………35

简单计算器

1需求分析

1.1开发背景

软件不同于硬件的最主要特点就在于它的不确定性,软件产品很难满足用户的需要,所以就需要不断的进行更新.

随着科技的发展,人们在很多地方都要用到计算器来进行工程和商业上的运算,计算器在日常生活中的重要地位已经举足轻重.

计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。

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

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

该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。

1.2项目目标

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

在程序设计中,可以用两种方法解决问题:

一是传统的结构化程序设计方法,二是面向对象程序设计方法。

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

而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。

1.3运行环境

硬件:

:

计算机(CPU主频1.81GHz、512MB内存)

软件:

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

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

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

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

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

硬件要求:

一般在586以上的处理器、16MB以上内存、100MB以上的硬盘。

软件要求:

Windows95/98或WindowsNT3.51以上版本。

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

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

在安装好VC6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。

与一般的应用软件一样,有以下两种启动方式:

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

(2)用户也可以使用命令行启动VC。

单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入c:

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

1.4项目任务书

(1).软件功能描述:

系统的主要功能有:

①窗口界面的计算器;

②通过按钮键输入数据;

③能够完成加、减、乘、除、求倒数、开方等一般运算;

④输出结果具有一定精度。

(2)工程进度安排如下:

第一周:

系统框架设计;

编码和单元测试;

第二周:

集成系统将个子系统组合起来;

测试阶段;

2技术路线

2.1制作界面

我们采用了当前最流行的VC++6.0作为开发工具,运行平台是WINDOW

2000/XP。

通过C++提供的MFC类库,各成员按照分工和进度完成各自任务。

最后再将各功能模块集成起来。

2.2总体方案

2.2.1窗体设计

2.2.2编辑对话框及控件资源

按钮控件资源清单

按钮名称

按钮ID

用途

0

IDC_0_BUTTON

按键0

1

IDC_1_BUTTON

按键1

2

IDC_2_BUTTON

按键2

3

IDC_3_BUTTON

按键3

4

IDC_4_BUTTON

按键4

5

IDC_5_BUTTON

按键5

6

IDC_6_BUTTON

按键6

7

IDC_7_BUTTON

按键7

8

IDC_8_BUTTON

按键8

9

IDC_9_BUTTON

按键9

.

IDC_DECIMAL_BUTTON

小数点

=

IDC_EQUAL_BUTTON

求值

2.2.3功能模块图

2.3详细设计

2.3.1利用appwizard建立对话框工程

建立新工程,选中MFCAPPWizard[exe],输入工程名字并保存路径。

选中工程类型为对话框工程

单击OK键完成新工程建立

2.3.2设计计算器窗口

新建编辑框和数字键

编辑列选框“操作类型”

2.3.3设置数字键盘上按钮的名称和属性

2.3.4添加变量

给编辑框添加的变量名字为“m_result”,类型为“Cstring”;给列表框添加的变量名字为“m_Operatorbox”类型为“ClistBox”;

除此之外定义全局变量如下:

intmath_i;

doublecount=10;

charbuffer[10];

doubleinput_int=0,input_dec=0;

doubleinput1=0,input2=0;

doublevalue=0;

booldecimal=FALSE;

2.3.5给数字键按钮添加处理函数

各个处理函数列表如下:

按钮名称

函数

0

On0Button

1

On1Button

2

On2Button

3

On3Button

4

On4Button

5

On5Button

6

On6Button

7

On7Button

8

On8Button

9

On9Button

.

OnDecimalButton

=

OnEqualButton

2.3.6为按钮添加代码

为数字键0添加代码如下:

voidCMyDlg:

:

On0Button()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(decimal)

{

input_dec=input_dec+0/count;

count=count*10;

}

elseinput_int=input_int*10+0;

value=input_int+input_dec;

_gcvt(value,10,buffer);

m_ResultEdit=(LPCTSTR)buffer;

UpdateData(FALSE);

}

为数字键1填加代码如下:

voidCMyDlg:

:

On1Button()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(decimal)

{input_dec=input_dec+1/count;

count=count*10;

}

elseinput_int=input_int*10+1;

value=input_int+input_dec;

_gcvt(value,10,buffer);

m_ResultEdit=(LPCTSTR)buffer;

UpdateData(FALSE);

}

其余数字键代码基本相同,本文省略。

为小数点代码添加代码

在OnInitDialog中添加代码如下:

m_Operatorbox.AddString("乘");

m_Operatorbox.AddString("除");

m_Operatorbox.AddString("加");

m_Operatorbox.AddString("减");

m_Operatorbox.AddString("求倒数");

m_Operatorbox.AddString("开方");

在函数OnSelchangeOperatorList()代码如下:

voidCMyDlg:

:

OnSelchangeOperatorList()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

input1=input_int+input_dec;

decimal=FALSE;

input_int=0;

input_dec=0;

count=10;

math_i=m_Operatorbox.GetCurSel();

}

填加等于键的运算代码如下:

voidCMyDlg:

:

OnEqualButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

input2=input_int+input_dec;

decimal=FALSE;

input_int=0;

input_dec=0;

count=10;

switch(math_i){

case2:

value=input1+input2;

break;

case3:

value=input1-input2;

break;

case0:

value=input1*input2;

break;

case1:

value=input1/input2;

break;

case5:

value=1/input1;

break;

case4:

value=sqrt(input1);

break;}

_gcvt(value,10,buffer);

m_ResultEdit=(LPCTSTR)buffer;

UpdateData(FALSE);

}

2.3.7保存完成的工程

2.3.8编译与运行

编译界面

运行界面

3编程实现

3.1核心代码

本设计的简单计算器的全部如下:

//数字键盘式计算器Dlg.cpp:

implementationfile

//

#include"stdafx.h"

#include"数字键盘式计算器.h"

#include"数字键盘式计算器Dlg.h"

#include

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

intmath_i;

doublecount=10;

charbuffer[10];

doubleinput_int=0,input_dec=0;

doubleinput1=0,input2=0;

doublevalue=0;

booldecimal=FALSE;

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CMyDlgdialog

CMyDlg:

:

CMyDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CMyDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CMyDlg)

m_ResultEdit=_T("");

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCMyDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMyDlg)

DDX_Control(pDX,IDC_OPERATOR_LIST,m_Operatorbox);

DDX_Text(pDX,IDC_RESULT_EDIT,m_ResultEdit);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CMyDlg,CDialog)

//{{AFX_MSG_MAP(CMyDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_0_BUTTON,On0Button)

ON_BN_CLICKED(IDC_1_BUTTON,On1Button)

ON_BN_CLICKED(IDC_2_BUTTON,On2Button)

ON_BN_CLICKED(IDC_3_BUTTON,On3Button)

ON_BN_CLICKED(IDC_4_BUTTON,On4Button)

ON_BN_CLICKED(IDC_5_BUTTON,On5Button)

ON_BN_CLICKED(IDC_6_BUTTON,On6Button)

ON_BN_CLICKED(IDC_7_BUTTON,On7Button)

ON_BN_CLICKED(IDC_8_BUTTON,On8Button)

ON_BN_CLICKED(IDC_9_BUTTON,On9Button)

ON_BN_CLICKED(IDC_DECIMAL_BUTTON,OnDecimalButton)

ON_LBN_SELCHANGE(IDC_OPERATOR_LIST,OnSelchangeOperatorList)

ON_BN_CLICKED(IDC_EQUAL_BUTTON,OnEqualButton)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CMyDlgmessagehandlers

BOOLCMyDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//Add"About..."menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);//Setbigicon

SetIcon(m_hIcon,FALSE);//Setsmallicon

//TODO:

Addextrainitializationhere

m_Operatorbox.AddString("乘");

m_Operatorbox.AddString("除");

m_Operatorbox.AddString("加");

m_Operatorbox.AddString("减");

m_Operatorbox.AddString("求倒数");

m_Operatorbox.AddString("开方");

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

voidCMyDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

OnSysCommand(nID,lParam);

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//this

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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