当前位置:文档之家› VC++可视化课程设计(计算器)

VC++可视化课程设计(计算器)

VC++可视化课程设计(计算器)
VC++可视化课程设计(计算器)

1.2 课程设计目的

在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。

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

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

3功能说明

计算器的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作。即可单机按钮进行操作,也可直接通过键盘直接输入。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

(1)包含的功能有:加、减、乘、除运算,开方、求倒数等功能[1].

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

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

(4)制定高级按钮控件,该按钮具有不规则的形状,可以根据用户鼠标的位置和单击状态的不同,显示不同的颜色[3]。

(5)制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。

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

(7)实现对话框的扩展功能[2]。

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

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

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

功能模块的实现:

(1)首先,添加高级按钮控件类,在这个类中实现高级的按钮控件。在此类中对于所

和动作改变不同的颜色,并且按钮的客户区域变成一个椭圆。

(2)其次,添加一个高级编辑控件类,在此类的基础上实现高级编辑控件。在OnDisplay函数中设置编辑框的显示文本,再调用OnDraw函数将其显示出来,并用指定的画刷填充客户区,并且用指定的颜色绘制显示文本。

(3)最后,实现主对话框界面功能,主要是加载菜单资源和对话框扩展功能的实现。在CCalculatorDlg::OnCreate函数中设定对话框的初始大小与位置,可以在这个对话框中进行窗口风格修改,位置设置等操作,然后添加菜单项ID_EXTEND的响应函数OnExtend。

4系统的实现

4.1 窗体设计

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

(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name文本框中输入Calculator 。Lacation文本框是指项目的本地路径。

(2)单击OK按钮,弹出MFC AppWinzard_Step1对话框。选中单选按钮,如图所示。

(3)单击Next按钮,弹出MFC AppWinzard_Step2 of4对话框,如图所示。

(4)单击Next按钮,弹出MFC AppWinzard_Step3 of4对话框,如图所示。

(5)单击Next按钮,弹出MFC AppWinzard_Step4 of4对话框,如图所示。单击Finish 按钮,创建框架。

4.2 编辑资源

(1)编辑对话框及控件资源

利用Visual C++提供的资源编辑器对对话框资源进行编辑。删除对话框中默认的OK和Cancel按钮。添加一个Edit控件,其控件ID为IDC_DSPEDIT。添加若干按钮控件,其ID如表4-1所示。

表4-1 按钮控件资源清单

按钮名称按钮ID 用途

0 BTN_0 按键0

1 BTN_1 按键1

2 BTN_2 按键2

3 BTN_3 按键3

4 BTN_4 按键4

5 BTN_5 按键5

6 BTN_6 按键6

7 BTN_7 按键7

8 BTN_8 按键8

9 BTN_9 按键9

。BTN_10 小数点

= BTN_11 求值

+ BTN_12 加号

- BTN_13 减号

* BTN_14 乘号

/ BTN_15 除号

CE BTN_16 清屏

Sqrt BTN_17 开方

1/x BTN_18 倒数

sin BTN_19 正弦

cos BTN_20 余弦

tan BTN_21 正切

x^2 BTN_22 平方

x^3 BTN_23 立方

x^y BTN_24 以X为底的y次幂exp BTN_25 以e为底的幂

ln BTN_26 以e为底的对数log BTN_27 对数

-/+ BTN_29 正负号

10^x BTN_30 10的x次方

n! BTN_31 N的阶层

表4-2 单选按钮控件资源清单

控件名设置ID

DEGREE BTN_DEGREE

RADIAN BTN_RAD

添加4个静态框,将编辑控件,普通计算,高级计算分别分组。其效果如图4.1所示。

图4.1编辑对话框资源

(2)编辑菜单资源

在Visual C++中的Workspace工具栏中,选中ResourceView选项卡。在其中的Menu项上右击,在弹出的快捷菜单中选择Insert命令,如图4.2所示。

图4.2添加菜单资源

将添加的菜单资源的ID更改为IDR_MENU。利用资源编辑器对菜单进行编辑,编辑后的菜单如图4.3所示。

图4.3 编辑菜单资源

4.3 实现高级按钮控件类

利用ClassWizard添加一个新类,如图4.4所示。

图4.4添加CAdvButton类

为实现高级按钮控件对鼠标的移动和单击作出相应的颜色变化。首先在CAdvButton 的头文件中加入几种预定义颜色,其代码如下:

#define DesiableColor RGB(192,192,192) //灰色, 按钮不可用

#define FocusColor RGB(255,0,0) //红色, 按钮拥有焦点

#define SelectColor RGB(0,255,0) //绿色, 按钮被按下

#define DefaultColor RGB(0,0,255) //蓝色, 默认

#define TextColor RGB(128,128,128) //浅灰色, 文本颜色

接下来,添加成员变量:

public:

CRect m_ClientRect; //用来保存按钮的客户的矩形区域

CRgn m_ClientRgn ; //用来保存按钮的客户区域,非矩形

UINT m_State; //按钮所处状态

CPoint m_Point; //当前鼠标位置

BOOL m_IsTimerOn; //标识计时器是否已经打开

利用ClassWizard添加消息映射和响应函数,如图4.5所示:

图4.5添加响应函数

再利用ClassWizard覆盖父类中的两个关键的虚函数:

//{{AFX_VIRTUAL(CAdvButton)

public:

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

protected:

virtual void PreSubclassWindow();

//}}AFX_VIRTUAL

其中对于所有的对于按钮的绘制工作都是在DrawItem函数中完成的。

(2)添加创建按钮控件代码

按钮的创建分两步完成。首先,调用构造函数对按钮对象进行初始化;其次,调用Create函数创建按钮。代码如附录1所示。

(3)设置按钮形状、外观、颜色、标题

PreSubclassWindow函数在窗口被创建之前就被调用,因此,在PreSubclassWindow 函数中,将按钮的风格设为BS_OWNERDRAW。实现代码如下:

//修改按钮控件风格

ModifyStyle(0,BS_OWNERDRAW|BS_PUSHBUTTON);

要使按钮能对鼠标的移动与单击作出不同的变化,那么按钮就需要时刻知道鼠标的位置与动作。所以,必须在鼠标的单击、弹起及移动消息的响应函数中填加相应的代码,以获取鼠标的位置与动作。

在鼠标左键按下时,得到按钮窗口客户区域的屏幕坐标位置和鼠标的屏幕坐标位置。当鼠标坐标位落于窗口客户区域内,且当前按钮控件处于非选中状态时,将按钮状态标识设为选中状态,即将m_State设为2。接着,调用Invalidate函数,使客户区无效,框架会自动调用DrawItem函数,重绘客户区。实现代码如下:

//当鼠标在按钮的客户区内按下时,改变按钮状态

void CAdvButton::OnLButtonDown(UINT nFlags, CPoint point)

{

CRect rect;

GetWindowRect(&rect); //得到按钮客户区域的屏幕坐标位置

GetCursorPos(&m_Point); //得到鼠标的屏幕坐标位置

if((rect.PtInRect(m_Point))&&(m_State != 2))

{

m_State = 2; //2:select state

Invalidate(); //重绘客户区

CButton::OnLButtonDown(nFlags, point);

}

在鼠标左键抬起时,得到按钮窗口客户区域的屏幕坐标位置和鼠标的屏幕坐标位置。当鼠标坐标位置落于窗口客户区域内,且当前按钮控件处于选中状态时,将按钮状态标识设为非选中状态,即将m_State设为1。接着,调用Invalidate函数,使客区无效,框架会自动调用DrawItem函数,重绘客户区。其代码如附录1所示。

在用户移动鼠标时,如果计时器没有启动,则启动计时器,并将计时器启动标识m_IsTimerOn设为TRUE。其实现代码如下:

if(!m_IsTimerOn) //如果计时器没用启动

{

SetTimer(1000,100,NULL); //启动计时器

m_IsTimerOn = TRUE;

}

如果鼠标已经移出了按钮的客户区,则消毁计时器,并将计时器的起始标识

m_IsTimerOn设为FALSE。OnTimer函数的实现代码如附录1所示。

实现客户区的绘置函数DrawItem。在DrawItem函数中,首先得到窗口的有效矩形区域,在此矩形区域内创建椭圆。调用SetWindowRgn函数,设置窗口的有效区域为椭圆。从参数lpDrawItemStruct结构中得到按钮控件客户区域的设备环境变量指针。根据按钮当前状态,创建不同的画笔。调用设备环境类的成员函数,设置背景模式为透明,选择画笔,在按钮客户区内绘制椭圆及显示文本。其实现代码如附录1所示。

通过上面操作,按钮已经具有对鼠标不同的位置和动作改变不同的颜色。并且,按钮的客户区域已经是一个椭圆,而不再是一个矩形。正是下面的代码将按钮的客户区域设定为椭圆形:

GetClientRect(&m_ClientRect); //通到窗口的有效矩形区域

m_ClientRgn.DeleteObject(); //删除区域对象

m_ClientRgn.CreateEllipticRgnIndirect(&m_ClientRect); //在矩形区域内创建椭圆

//设置窗口的有效区域为椭圆

SetWindowRgn(m_ClientRgn,FALSE);

至此,一个完整的高级按钮类全部完成。其效果如图4.6所示。

图4.6运行结果

4.4 实现高级编辑控件类

利用ClassWizard添加一个新类,如图4.7所示.

图4.7添加CAdvEdit

(1)添加成员变量和成员函数

为CAdvEdit类添加一个字符串类型的成员变量m_Caption,用来记录编辑框中的文本内容。其实现代码如下:

//CAdvEdit头文件

public:

CString m_Caption; //编辑框文本

利用AppWizard添加消息函数OnPaint。如图4.8所示。

图4.8添加函数

添加两个public类型的成员函数,分别用来绘制编辑控件客户区和设置编辑控件的显示文本。实现代码如下:

public:

void OnDraw(); //绘制编辑控件客户区

void OnDisplay(LPCTSTR lpszStr); //设置编辑控件显示文本

protected:

//{{AFX_MSG(CAvEdit)

Afx_msg void OnPaint(); //WM_ON_PAINT消息的响应函数

//}}AFX_MSG

(2)添加编辑控件代码

在OnDisplay函数中设置编辑框的显示文本。实现代码如下:

m_Caption = lpszStr;

OnDraw();

在OnPaint函数中调用自定义函数OnDraw。实现代码如下:

CPaintDC dc(this); // device context for painting

OnDraw();

在OnDraw函数中,在编辑控件客户区域内绘制文本。首先,得到编辑控件客户区的矩形域;其次,得到编辑控件客户区的设备环境变量;接着,用指定的画刷填充客户区,并且用指定的颜色绘制显示文本。效果如图4.9所示,其代码如附录2所示。

图4.9运行结果

4.5 对话框界面设计

对主对话框添加成员变量和函数。

主要成员变量:

//CCalculatorDlg.h头文件

CButton m_DspStatic;

CAdvEdit m_DspEdit; //显示计算结果的编辑框

CMenu* m_Menu;//对话框菜单按钮

BOOL m_IsExtend; //标志对话框是否已扩展

主要成员函数:

//CCalculatorDlg.h头文件

//{{AFX_VIRTUAL(CCalculatorDlg)

Protected:

virtual void DoDataExchange(CDataExchange*pDX);//数据交换函数//}}AFX_VIRTUAL

virtual BOOL OnInitDialog();//虚函数,可覆盖用来进行用户初始化操作virtual void OnOK();//虚函数,覆盖用来屏蔽Enter操作

//{{AFX_MSG(CCalculatorDlg)

//响应消息ON_WM_CTLCOLOR,用以修改对话框及其控件颜色

afx_msg HBRUSH OnCtlColor(CDC*Pdc,CWnd*pWnd,UINT nCtlColor);

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);//响应消息WM_ON_CREATE //}}AFX_MSG

除以上主要成员外,还要对每个按钮控件定义一个CAdvButton的对象与之相关联,并为每个按钮控件建军立一个成员函数来响应其EN_CLICKED消息。如图4.10所示:

图4.10为按钮控件添加消息响应

(1)加载菜单资源

在3.2节中,已经为工程新建了一个菜单资源IDR_MENU,现将其添加到计算器对话框上。利用CMenu类的LoadMenu函数,将菜单资源加载到内存中。再调用SetMenu 函数,将菜单添加到对话框上,代码如附录3所示。如图4.11所示:

图4.11运行结果

(2)关联控件与对象

在CCalculatorDlg类的声明中,已经为编辑框、静态框及每一个按钮声明了相应类型的对象与之对应。但这些控件与对象的关联工作是在DoDataExchange函数中

图4.12关联控件与对象

(3)实现对话框扩展功能

首先在CCalculatorDlg::OnCreate函数中,设定对话框的初始大小与位置。实现代码如下:

CRect rect;

GetWindowRect(&rect); //得到对话框的窗口区域矩形

//指定窗口大小与位置:宽为186像素,高度为245像素

SetWindowPos(&wndTop,0,0,186,245,SWP_NOMOVE|SWP_NOZORDER);

其次,添加菜单项ID_EXTEND的响应函数OnExtend。在OnExtend函数中,首先判断当前对话框状态,即是否已经被扩展。

如果对话框已被扩展,则收缩对话框。首先得到对话框的当前位置,将其指定为新的宽度,但高度维持不变。再将其中的编辑控件和编辑控件外的静态框收缩到合理位置。最后将菜单项ID_EXTENDR的显示文本设置为“扩展”,将表示对话框是否扩展标识变量m_IsExtend设置为FALSE。如果对话框为非扩展,则扩展对话框。首先得到对话框的当前位置,将其指定为新的宽度,但高度不变。再将其中的编辑控件和编辑控件外的静态框收缩到合理的位置。最后将菜单项ID_EXTEND的显示文本设置为“收缩”,将表示对话框是否扩展的标识变量m_IsExtend设置为TURE,实现代码如附录3所示。

效果如图4.13和4.14所示:

图4.14收缩图

(4)屏蔽Enter键

直到现在为止,虽然计算器的界面已经完成。但是,它还有一个缺陷:当Enter键按下时,对话框应付突然关掉。这是因为对话框默认具有焦点的控件是OK键,当Enter 键按下时,框架会自动执行当前拥有焦点的控件的响应函数,所以对话框自然就关闭了。要屏蔽这一功能,只要执行下面的代码就可以。

void CCalculatorDlg::OnOK()

{

//CDialog::OnOK(); //屏蔽掉此句代码

}

(5)添加背景图

为对话框添加背景图,以增加界面的美观性。首先为工程添加一幅位图资源,以作为对话框的背景。然后加入一个Static控件,将其Type属性设为Bitmap,并为Image 属性选择位图资源,如图所示。

图4.15添加位图

参数设置后对话框的外观如图4.16所示。

图4.16运行结果图

4.6 数值计算功能的实现

具体功能的实现首先添加成员变量。该计算器中所有的运算都是二元运算,即需要两个操作数,一个二元运算操作符。所以必须声明两个浮点数,分别用来表示初始操作数和结果操作数,同时,必须声明两个字符串类型的变量,分别用来显示初始操作数。还需要一个整形变量来记录当前运算符,以及一个整形变量来记录当前小数点按钮是否被单击过。实现代码如下:

//CCalculatorDlg.h头文件

private:

char m_buffer[100];//用来存贮需要显示的数字

CString m_StrBegin;//记录初始操作数的字符串

float DtoR; //

double m_end;//记录结果操作数

double m_begin;//记录初始操作数

int m_bit;//记录运算符

int m_IsCheckPoint;//判断是否按下了小数点符号,当其为0时,表示没有按下当数字键0—9被单击时,则将当前所按键加到初始操作数末尾,并将初始操作数显示出来。以数字键盘被单击为例,实现代码如下:

//以按键0的响应为例,其余0—9的响应完全类似

m_StrBegin = m_StrBegin+"0";

if (!m_IsCheckPoint) //如果小数点按下了

m_DspEdit.OnDisplay(m_StrBegin+".");

else //如果小数点没有按下

m_DspEdit.OnDisplay(m_StrBegin);

当小数点键被单击时,首先判断小数点键是否已经被单击过,以及当前初始操作数字符串是否为空。如果小数点键没有被单击过,而且当前初始操作数字符串不为空,则将小数点追加到初始操作数末尾,并且修改小数点标识m_IsCheckPoint为TRUE。实现代码如下:

if (!m_IsCheckPoint && m_StrBegin != "") //如果小数点没有按下,且字符不为空{

m_StrBegin = m_StrBegin+".";

m_DspEdit.OnDisplay(m_StrBegin); //显示文本

m_IsCheckPoint = true; //改变标识

}

当清除键CE被单击时,则对所有的成员变量进行初始化。清除小数点标识,将保存初始操作数和结果操作数的字符串清空,将保存初始操作数和结果操作数的浮点数清0,将当前操作符清0。实现代码如下:

m_IsCheckPoint = false; //消除小数点按下标记

m_StrBegin = "";

m_begin = 0.0; //清0

m_end = 0.0; //清0

m_bit = 0; //当前操作符为无效操作

当任何一个运算符键被单击时,首先根据当前运算符计算运算结果,再修改记录当前运算符的变量的值。以加号键被按下为例,实现代码如下:

//以加号为例,其余的操作符也采用类似操作

Result(); //计算运算结果

m_bit = 1; //设置当前运算类型;1代表加法运算

计算器的核心运算函数——Result。在Result中,首先将记录当前操作数的字符串中保存的字符串转化为浮点数;其次根据当前操作符的类型,选择适当的运算操作;再将记录结果操作数的浮点变量中的值转化为字符串,并显示在结果编辑框中。Result函数实现代码如附录3所示。

程序结果的演示

1测试的研究与选择

测试过程中要判断测试是否成功,要分析程序界面的变化和计算数据的结果是否正确以及各功能键是否能正常使用。

2 测试环境

测试环境如下:

测试系统: Windows XP

测试工具: Visual Studio C++ 6.0

3 实例测试结果

首先,在运行界面测试简单运算是否能正常运算,输入“34+87=”见结果图5.1所示,观察计算结果是否正确属实

图5.1“34+78=”的运行结果

其次,展开计算器,选中“度数”输入“30”单击“sin”观察结果,见图5.2所示图5.2“sin30°”的运行结果

最后,选中“弧度”输入“15”单击“sin”观察结果,见图5.3所示

图5.3“sin15”的运行结果

6结束语

经过努力,课程设计基本完成了。在课程设计的实践中,学到很多有用的知识,也积累了不少宝贵的经验。课程设计是以一个计算器的实现为基础,掌握一个基于对话框的应用程序的编程方法以及对话框常用控件的高级编程。在课程设计中我了解到到对话框应用程序的编程模式、改变按钮的客户区形状、在按钮客户区内作图及对话框的扩展等知识。在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个个被解决了,我从中学到了许多课堂上没学到的东西,这使得我很高兴。

经过设计的各个环节,从中学到了很多,锻炼了自己系统的设计的能力,从系统的需求到系统的功能,到系统的测试,到系统的发布,可以掌握到一个完全的过程,这样对我们以后在工作中或学习中得到很好的锻炼,为用VC++编辑软件奠定基础。

本系统适合于运行在Microsoft Windows 的各个版本下,包括Windows98、Windows Me、Windows2000、Windows XP等系统平台下。

当然,本论文所采取的解决问题的方法并不是非常完善的,在今后的学习、工作中,将继续研究并改进。

7参考文献

[1] 严华峰. Visual C++课程设计案例精编. 北京:中国水利水电出版社,2002

[2] 张宏军,党留群,赵天巨.Visual C++ 6.0编程案例精解.北京:电子工业出版社,2005

[3] 郑阿奇,丁有和.Visual C++教程.北京:机械工业出版社,2006

附录1:结构化设计源程序清单

//程序名称:AdvButton.cpp

//程序功能:实现高级按钮控件类。

// 程序作者:

// 最后修改日期:

//构造函数

CAdvButton::CAdvButton()

{

//初始化m_ClientRect

m_ClientRect.left = 0;

m_ClientRect.top = 0;

m_ClientRect.right = 0;

m_ClientRect.bottom= 0;

m_ClientRgn.DeleteObject(); //删除区域对象

m_ClientRgn.CreateEllipticRgnIndirect(&m_ClientRect); //创建椭圆区域

m_State = 0;

m_Point.x = m_Point.y = 0;

m_IsTimerOn = FALSE;

}

//重载父类Create函数

BOOL CAdvButton::Create(LPCTSTR lpszCaption,DWORD dwStyle,const RECT& rect,CWnd *pParentWnd,UINT nID)

{

return CButton::Create(lpszCaption, dwStyle, rect, pParentWnd, nID);

}

//当鼠标在按钮的客户区内弹起时,改变按钮状态

void CAdvButton::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CRect rect;

GetWindowRect(&rect); //得到按钮客户区域的屏幕坐标位置

if((rect.PtInRect(m_Point))&&(m_State != 1))

{

m_State = 1; //1:focus state

Invalidate(); //重绘客户区

}

CButton::OnLButtonUp(nFlags, point);

}

//计时器消息的响应函数

void CAdvButton::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default CRect rect;

GetWindowRect(&rect); //得到按钮客户区域的屏幕坐标位置GetCursorPos(&m_Point); //得到鼠标的屏幕坐标位置

if(rect.PtInRect(m_Point)) //如果鼠标在按钮的客户区内

{

if((m_State != 1)&&(m_State != 2))

{

m_State = 1;

Invalidate();

}

}

else //如果鼠标已经不在按钮的客户区内了

{

if(m_State != 0)

{

m_State = 0;

Invalidate(); //重绘客户区

}

KillTimer(nIDEvent); //关闭计时器

简单计算器c++课程设计

简单计算器 1 基本功能描述 简单计算器包括双目运算符和单目运算符。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦、阶乘、对数、开方、倒数等运算。可对输入任意操作数包含小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出提示,同时包含清除、退格、退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图1,是输入数据子函数的流程图。打开计算器程序,输入数据,判断此次输入之前是否有数字输入,如果有,则在之前输入的数字字符后加上现有的数字字符;如果没有,则直接使编辑框显示所输入的数字字符。判断是否继续键入数字,如果是,则继续进行前面的判断,如果否,则用UpdateData(FALSE)刷新显示。 如图2,是整个计算器的流程图。对于输入的算式,判断运算符是双目运算符还是单目运算符。如果是双目运算符,则把操作数存入数组a[z+2]中,把运算符存入b[z+1]中;如果是单目运算符,则把字符串转化为可计算的数字,再进行计算。下面判断运算符是否合法,如果合法,则将结果存入a[0],不合法,则弹出对话框,提示错误。结束程序。

输入一个数字 在之前输入的数字字符后面加上现在的数字字符。 Eg :m_str+=”9”。 直接使编辑框显示所输入的数字字符。 Eg :m_str=”9”。 pass3=1表示已有数字输入 开始 之前是否有数字输入? pass3==1? 继续键入数字? 用UpdateData(FALSE)刷新显示 图1 输入数据子函数流程图 Y N Y N

输入开始 双目运算符 是否每一个操作数都存入a[]数组? 把操作数存入a[z+2],把运算符存入b[z+1]。 单目运算符 将字符串转换 为可计算的数进行运算 运算是否合法? 将结果存入a[0] 弹出对话框提示错误 结束Y Y N N 图2 简单计算器总流程图

计算器java课程设计(完整版)

《面向对象程序设计》课程设计报告 课程设计题目:计算器 学生姓名:李婉如 专业:信息管理与信息系统 班级:1424603 指导教师:司红伟 2016年 5 月 25 日

一、课设任务及要求 1)课设任务: ⑴设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运 算(可以进行浮点数和负数的运算)。 ⑵有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、设计思路 ⑴本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout 边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p加入到”Center”区域。包含各种按钮的面板JPanel p 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。如: Button b=new Button(); b.addActionListener(事件监听器); ⑵事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”求倒”)、退格按钮事件(”退格”)、清除按钮事件(“C”) 、正切(tan)、余弦(cos),以及求平方根(sqrt)、指数(pow)、对e的指数(exp)、对数运算(log)。 ⑶在事件处理,触发按钮事件时,先判断是或是数字是或是“-/+”是或是“.”,是的话就将负号“-”、数字、小数点“.”分别写入文本框并存放在sum中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到doOperation()执行运算同时将运算符存放在preOperater中。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。 ⑷计算器完成的是一个数学表达式,如:3+2,所以可以采用一个数组来存储数字或字符,如3,+,2分别存储在数组中,最后运算时,可以一一取出来进行运算。 ⑸利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。 ⑹利用文本框显示操作数和运算结果。

JAVA实现计算器课程设计

JAVA实现计算器课程设计 计算机科学系 计应0701班 指导老师:刘其昌 设计人员:陈秀桃 设计日期:2009年11月10日——2009年12月20日 计算器的设计 目录 第一章绪 论 ..................................................................... .. (2)

1.1 开发环 境 ..................................................................... . (2) 1.2 基本功能介 绍 ..................................................................... ......... 2 第二章系统设 计 ..................................................................... (3) 2.1 系统流程 图 ..................................................................... . (3) 2.2 系统功能框 图 ..................................................................... (3) 2.3 需求分 析 ..................................................................... ................ 4 第三章软件设 计 ..................................................................... (5) 3.1 界面设 计 ..................................................................... . (5) 3.2 代码设 计 .....................................................................

单片机课程设计计算器

课程设计说明书 课程设计名称:单片机课程设计 课程设计题目:四位数加法计算器的设计学院名称:电气信息学院 专业班级: 学生学号:

学生姓名: 学生成绩: 指导教师: 课程设计时间:至

格式说明(打印版格式,手写版不做要求) (1)任务书三项的内容用小四号宋体,倍行距。 (2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。 (3)章的标题用四号黑体加粗(居中排)。 (4)章以下的标题用小四号宋体加粗(顶格排)。 (5)正文用小四号宋体,倍行距;段落两端对齐,每个段落首行缩进两个字。 (6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。 (8)页码:封面、扉页不占页码;目录采用希腊字母Ⅰ、Ⅱ、Ⅲ…排列,正文采用阿拉伯数字1、2、3…排列;页码位于页脚,居中位置。 (9)标题编号应统一,如:第一章,1,,……;论文中的表、图和公式按章编号,如:表、表……;图、图……;公式()、公式()。

课程设计任务书 一、课程设计的任务和基本要求 (一)设计任务(从“单片机课程设计题目”汇总文档中任选1题,根 据所选课题的具体设计要求来填写此栏) 1. 系统通过4x4的矩阵键盘输入数字及运算符。 2. 可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E。 3. 可以进行加法以外的计算(乘、除、减)。 4. 创新部分:使用LCD1602液晶显示屏进行显示,有开机欢迎界面,计算数据与结果分两行显示,支持小数运算。 (二)基本要求 1.有硬件结构图、电路图及文字说明; 2.有程序设计的分析、思路说明; 3.有程序流程框图、程序代码及注释说明; 4.完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus 软件中仿真模拟); 5.有程序运行结果的截屏图片。

android简单计算器课程设计.

摘要 Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的,应用程序可以轻松的嵌入网络、应用程序可以并行运行。而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。并且具有很强的使用性。 关键字:Android Java基础计算器

目录 第1章开发工具与环境 (1) 1.1 Android平台 (1) 1.2 Java开发环境 (1) 1.3 Eclipse (1) 1.4 Android程序基础—Android应用程序的构成 (2) 第2章系统分析与设计 (4) 2.1系统的可行性分析 (4) 2.2 系统的需求分析 (4) 2.3 系统的优势 (4) 2.4 系统的流程图 (5) 第3章系统详细设计 (6) 3.1 动作Activity (6) 3.2 布局文件XML (6) 3.3 Activity的详细设计 (7) 3.2 布局文件XML的详细设计 (21) 3.2 系统的运行结果 (24) 结论 (25) 参考文献 (26)

第1章开发工具与环境 1.1 Android平台 1.谷歌与开放手机联盟合作开发了Android, 这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。 2.Android是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 3.所有的Android应用之间是完全平等的。 4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是“应用”。 5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。 1.2 Java开发环境 Java技术包含了一个编程语言及一个平台。Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。Java编程语言起源于Sun公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。1996年1月发布了JDK1.1版本,一门新语言自此走向世界。之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。Java1.2版本是一个重要的版本,基于该版本,Sun将Java技术分为J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE 建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。 1.3 Eclipse

简易计算器课程设计

评阅教师评语:课程设计成绩 考勤成绩 实做成绩 报告成绩 总评成绩指导教师签名: 课程设计报告 论文题目基于ARM的简易计算器设计 学院(系):电子信息与自动化学院 班级:测控技术与仪器 学生姓名:同组同学: 学号:学号: 指导教师:杨泽林王先全杨继森鲁进时间:从2013年 6 月10 日到2013年 6 月28 日 1

目录 1、封面—————————————————————P1 2、目录—————————————————————P2 3、前言—————————————————————P3 4、关键字————————————————————P3 5、原理与总体方案————————————————P3 6、硬件设计———————————————————P6 7、调试—————————————————————P10 8、测试与分析——————————————————P11 9、总结—————————————————————P13

10、附件—————————————————————P14 前言 近几年,随着大规模集成电路的发展,各种便携式嵌入式设备,具有十分广阔的市场前景。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上。 本文通过周立功的LPC2106芯片完成的简易计算器,正是对嵌入式应用的学习和探索。 一、摘要: 计算器一般是指“电子计算器”,是能进行数学运算的手持机器,拥有集成电路芯片。对于嵌入式系统,以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。本设计就是先通过C语言进行相应程序的编写然后在ADS中进行运行最后导入PROTUES进行仿真。最后利用ARM中的LPC2106芯片来控制液晶显示器和4X4矩阵式键盘,从而实现简单的加、减、乘、除等四则运算功能。 关键字:中断,扫描,仿真,计算 二、原理与总体方案: 主程序在初始化后调用键盘程序,再判断返回的值。若为数字0—9,则根据按键的次数进行保存和显示处理。若为功能键,则先判断上次的功能键,根据代号执行不同功能,并将按键次数清零。程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。最后将计算结果拆分成个、十、百位,再返回主程序继续检测键盘并显示;若为清零键,则返回主程序的最开始。 电路设计与原理:通过LPC2106芯片进行相应的设置来控制LCD显示器。 而通过对键盘上的值进行扫描,把相应的键值通过MM74C922芯片进行运算从而

数据结构课程设计计算器

数据结构课程设计报告 实验一:计算器 设计要求 1、问题描述:设计一个计算器,可以实现计算器的简单运算,输出并检验结果的正确性,以及检验运算表达式的正确性。 2、输入:不含变量的数学表达式的中缀形式,可以接受的操作符包括+、-、*、/、%、(、)。 具体事例如下: 3、输出:如果表达式正确,则输出表达式的正确结果;如果表达式非法,则输出错误信息。 具体事例如下: 知识点:堆栈、队列 实际输入输出情况: 正确的表达式

对负数的处理 表达式括号不匹配 表达式出现非法字符 表达式中操作符位置错误 求余操作符左右出现非整数 其他输入错误 数据结构与算法描述 解决问题的整体思路: 将用户输入的中缀表达式转换成后缀表达式,再利用转换后的后缀表达式进行计算得出结果。 解决本问题所需要的数据结构与算法: 用到的数据结构是堆栈。主要算法描述如下: A.将中缀表达式转换为后缀表达式: 1. 将中缀表达式从头逐个字符扫描,在此过程中,遇到的字符有以下几种情况: 1)数字 2)小数点 3)合法操作符+ - * / %

4)左括号 5)右括号 6)非法字符 2. 首先为操作符初始化一个map priority,用于保存各个操作符的优先级,其中+ -为0,* / %为1 3. 对于输入的字符串from和输出的字符串to,采用以下过程: 初始化遍历器std::string::iterator it=infix.begin() 在当it!=from.end(),执行如下操作 4. 遇到数字或小数点时将其加入到后缀表达式: case'1':case'2':case'3':case'4':case'5':case'6':case'7':case '8':case'9':case'0':case'.': { to=to+*it; break; } 5. 遇到操作符(+,-,*,/,%)时,如果此时栈顶操作符的优先级比此时的操作符优先级低,则将其入栈,否则将栈中的操作符从栈顶逐个加入到后缀表达式,直到栈空或者遇到左括号,并将此时的操作符加入到栈中,在此过程中需判断表达式中是否出现输入错误: case'+':case'-':case'*':case'/':case'%': { if((it+1)==from.end()) { cout<<"输入错误:运算符号右边缺少运算数"<

labview计算器课程设计报告

武汉工程大学 —虚拟仪器课程设计报告 院系:电气院 题目:labview计算器 班级:测控02 学号:0904010217 姓名:吕禹 指导老师:李国平 小组成员:黎巧珍、王悦、张松、卢崇俊、洪俊初、於旭、徐洁、吕禹设计时间:2011年11月5号

一、设计思想: .创建3个字符串显示控件num1,num2,num3,其中: 1、第一个输入数据存储在num1中 2、第二个输入数据存入num2中 3、将其赋给 num3,并使num2为空,以便输入的数据存入num2 4、所有的运算是在num1和 num3间进行 5、运算结果都赋给result,同时赋给num1,用于下一次的运算 .创建4个布尔开关按钮change,change1,change2,change3,其中: 1、Change的真假用来判断是第一个数据还是第二个数据 2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算 3、change2用来去掉数据小数末尾的0 4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效 .创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中: 1、type1用来存储运算符号 2、type2用来保证连续“+、-、*、/”的正确性 3、所有的运算结果都赋给result 4、result经过去零处理后得到result1,将数据显示在前面板上。 二、实现过程 1、面板按键的设计及感应 首先,在前面板上建立一个簇 然后在簇中再建立布尔量,复制20个以满足键的需求(0--9十个数字键,一个小数点键,一个等号键,四则运算键,一个开方键,一个倒数键,一个反号键,一个清零键及一个退出键并注意按键的顺序)。 将按键给值并作适当的美化处理

最新单片机简易计算器课程设计

单片机简易计算器课 程设计

引言 说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本任务是个简易的两位数的四则运算,程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。本任务重在设计构思与团队合作,使得我们用专业知识、专业技能分析和解决问题全面系统的锻炼。 随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。80C51单片机已成为单片机发展的主流。专家认为,虽然世界上的MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形成事实上的标准MCU芯片。 事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台

简易计算器课程设计

基于单片机的计算器的设计 摘要:本设计是一个实现加减乘除的计算器,它的硬件主要由四部分构成,一个8051单片机芯片,两个八段共阴极数码管,一个4*4键盘,它可以实现一位数的加减乘除运算。 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 关键词:LED接口;键盘接口;8255A;汇编语言 一、概述 1.1设计要求及任务: (1)设计4*4的键盘,其中10个数字键0~9,其余六个键“+”、“—”、“*”、“/”、“=”、和“C”键; (2)设计两位LED接口电路; (3)实现1位数的简单运算 1.2设计原理 (1)LED显示器接口技术 LED动态显示接口技术 (2)键盘显示技术 逐行(逐列扫描法) 二、系统总体方案和硬件设计 2.1计算器总体思想 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 执行过程:开机显示零,等待键入数值,当键入数字,经通过数码管显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。 图1 系统设计框图

2.2硬件的选择与连接 图二硬件连接总图 2.2.1硬件选择 (1)由于本设计比较简单,因此选用内部含有4KBE2PROM的89C51单片机作为系统的核心。 (2)扩展输入/输出端口 在扩展输入/输出端口时,要求输入口能够缓冲,,输出口能够锁存。常用小规模集成电路芯片74LS244或74LS245等扩展输入端口,用74LS273、74LS373、 74LS377扩展输出端口。这种扩展方法的特点是电路简单,但功能单一、灵活性差。因而常采用中规模的可编程并行接口芯片8255A扩展输入/输出端口。 (3)锁存电路采用74LS373 2.2.2接口设计 (1)单片机与8255A的接口设计 8255A中的数据总线缓冲器为三态双向数据缓冲存储器,用于将8255A的数据线 D0~D7和单片机的数据总线(P0口)连接,实现单片机和接口间的数据传送。 读写控制部件的接口设计 1、/CS为片选信号,接成低电平表示8255A 被选中。/CS与P2.7相连,用P2口的最高位控制8255A是否工作。即将P2.7控制为低电平。 2、RESET-复位信号,高电平有效,接在单片机的RST端。 3、/RD和/WR为读写控制信号,低电平有效。分别将两个端口接单片机的/RD和/WR 4、A1和A0-端口选择信号,分别与单片机的低两位地址线P1.1和P1.0相连。用于选择不同端口。采用74LS373三态锁存器,用于分离P0口第八位地址线,将它的Q0和Q1口接至8255A的地址输入端A0和A1。

C++课程设计——计算器.

面向对象程序设计语言 --课程设计题目计算器设计 院系航空宇航学院 专业飞行器设计与工程 学生姓名张权 学号011110320 指导教师张德平 二零一二年六月九日

计算器设计 (一)、目的与要求: 1、目的: 通过开发计算器程序,进一步熟悉C++中类和对象的定义与使用,掌握程序控制的方法,掌握C++程序设计的基本知识。 2、基本要求: (1)设计计算器程序,可对实数操作; (2)可对多个基数操作的四则运算; (3)增加函数如:正弦、余弦、正切、对数、平方和平方根、完成四则混合运算,注意考虑优先级,对应增加主菜单选项; (4)根据程序的提示,可以进行正弦运算进行余弦运算、正切运算、对数运算、求平方运算、混合运算、华氏温度转化为摄氏温度的运算、摄氏温度转化为华氏温度的运算、求平方根运算。使四则运算能够具有测试功能,即计算机能够自动出题,并要求用户计算,同时计算机判断用户的对错并打分,要求十题为一个单元,加减运算时最高为两位数的运算,乘法为两位数乘以一位数,除法是两位数或者三位数除以一位数,要求没有余数。 (二)、设计方法和基本原理: 1、问题描述(功能要求): 实数间的计算很复杂,它包括:相加、相减、相乘、相除、求三角函数、求对数、四则混合运算等。试设计计算器,使之能提供以下功能: 1).可以连续输入运算,对于输入的表达式能够按算符优先级进行处理。 如: 输入4+5*3时,应该输出60,而不是27。 2).可以处理包含括号的表达式。 如: 输入2*(3+2)时,应该输出10,而不是8。 3).可以计算三角函数、对数函数、平方根以及平方。 4).能够实现华氏温度与摄氏温度之间的转换。 5).四则运算能够具有测试功能,即计算机能够自动出题,并要求用户计算,

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

简易计算器课程设计

科研训练论文 题目:基于单片机的计算器的设计 目录 一、概述 (3) 1.1设计要求及任务: (3) 1.2设计原理: (3) 二、系统总体方案及硬件设计 (3) 2.1计算器总体思想 (3) 2.2硬件的选择与连接 (4) 2.2.1硬件选择 (4) 2.2.2接口设计 (5) 三、软件设计 (7)

3.2系统流程总图 (8) 3.3显示程序设计 (8) 3.4键盘识别程序设计 (9) 3.4.1原理与分析 (9) 3.4.2流程图 (10) 四、设计体会与总结 (11) 五、参考文献 (11) 附录 基于单片机的计算器的设计 摘要:本设计是一个实现加减乘除的计算器,它的硬件主要由四部分构成,一个8051单片机芯片,两个八段共阴极数码管,一个4*4键盘,它可以实现一位数的加减乘除运算。 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 关键词:LED接口;键盘接口;8255A;汇编语言

一、概述 1.1设计要求及任务: (1)设计4*4的键盘,其中10个数字键0~9,其余六个键“+”、“—”、“*”、“/”、“=”、和“C”键; (2)设计两位LED接口电路; (3)实现1位数的简单运算 1.2设计原理: (1)LED显示器接口技术 LED动态显示接口技术 (2)键盘显示技术 逐行(逐列扫描法) 二、系统总体方案及硬件设计 2.1计算器总体思想 显示部分:采用LED动态显示。 按键部分:采用4*4键盘。采用软件识别键值,并执行相应的操作。 执行过程:开机显示零,等待键入数值,当键入数字,经通过数码管显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。

计算器java课程设计(完整版)

目录 一、课设任务及要求 (1) 二、需求分析 (2) 三、设计思路 (3) 四、详细设计 (4) 五、运行调试与分析讨论 (14) 六、设计体会与小结 (18) 七、参考文献 (19)

一、课设任务及要求 1)课设任务: ⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); ⑵、有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析 ⑴、开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 ⑵设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 ⑶设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed 事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图1 计算器运行界面

单片机简易计算器课程设计

单片机简易计算器课程设计 课程设计 题目名称________________ 简易计算器设计____________ 课程名称_____________ 单片机原理及应用____________ 学生姓名________________

班级学号________________ 2018年6月20日

目录 一设计目的 (2) 二总体设计及功能介绍 (2) 三硬件仿真图 (3) 四主程序流程图 (4) 五程序源代码 (5) 六课程设计体会 (28)

设计目的 本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。软件方面使用C语言编程,并用PROTUE仿真。 二总体设计及功能介绍 根据功能和指标要求,本系统选用MCS-51 系列单片机为主控机,实现对计算器的设计。具体设计及功能如下: 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED显示数据和结果; 另外键盘包括数字键(0?9)、符号键(+、-、x、十)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘;

执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 三硬件仿真图 硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。

计算器课程设计报告

高级语言程序(JAVA)课程设计报告 系部名称:商学系专业班级:营销*** 学生姓名:墨璇 墨兰学号: ********** ********** 指导教师:王芬教师职称:讲师 2014年06月26日

目录 一、课程设计目的及意义 .................................... 错误!未定义书签。 二、课程设计任务 .......................................... 错误!未定义书签。 2.1程序设计要求....................................... 错误!未定义书签。 三、课程设计时间 .......................................... 错误!未定义书签。 四、课程设计地点 .......................................... 错误!未定义书签。 五、课程设计内容 .......................................... 错误!未定义书签。 5.1开发工具与平台..................................... 错误!未定义书签。 (1).开发工具 ...................................... 错误!未定义书签。 (2).开发平台 ...................................... 错误!未定义书签。 5.2设计思路........................................... 错误!未定义书签。 5.3 程序测试 .......................................... 错误!未定义书签。 5.4实验总结........................................... 错误!未定义书签。 六、课程设计感想 .......................................... 错误!未定义书签。 七、附录(程序代码) ...................................... 错误!未定义书签。

matlab课程设计简单计算器的设计

matlab课程设计报告 题目简易计算器的设计 学院电子信息工程学院 专业电子信息 学生姓名和学号 指导教师

一、选题目的及意义 GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作,而在matlab有很简单的gui设计工具,我们可以通过这个工具轻松地构建我们想要的程序,从而实现与用户的信息交互。本次课程设计是使用了matlab中的guide生成了简单的计算器程序。 二、源代码 function varargout = Calculator(varargin) %Simple Calculator %@Anhui University % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Calculator_OpeningFcn, ... 'gui_OutputFcn', @Calculator_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []);

if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before Calculator is made visible. function Calculator_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Calculator (see VARARGIN) % Choose default command line output for Calculator handles.output = hObject; % Update handles structure guidata(hObject, handles);

编写一个计算器程序课程设计报告范例

编写一个计算器程序课程设计报告范例 公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

《金融IT 入门-程序设计》 课程设计报告 中国地质大学长城学 院XX 系 2017年 月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 五.设计 体会: 题目: 用Python 编写简易计算器程序 学号: 专业: 班级: 姓 名 : 指导教师: 2016-2017学年 第二学期

一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务:??

1)设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); 2)有求倒数、退格和清零功能。 3.创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。图形界面采用继承windowadapter类,采取调用类方法来注册监听! 4.设计要求: 1)设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 2)课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 3)认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。 二、原理与分析 1.开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数

编写一个计算器程序课程设计报告-范例

《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX系2017年月 3 日目录 一.总体概述:二.设计目标:三.程序流程图:四.程序代码:五.* 六.设计体会: 题目:用Python编写简易计算器程序学号:$ 专业: 班级: 姓名: 指导教师:、

一、设计内容--------------------------------------------- - 2 - 1. 课程设计目的:------------------------------------- - 2 - 2.课程设计任务:-------------------------------------- - 2 - 3.创新要求:------------------------------------------ - 2 - 4.设计要求: ------------------------------------------- - 2 - 二、原理与分析------------------------------------------- - 2 - 1.开发的技术及功能------------------------------------ - 3 - 2.设计思路-------------------------------------------- - 3 - 3.设计效果图------------------------------------------ - 3 - 三、设计过程--------------------------------------------- - 3 - 1. 程序思路:----------------------------------------- - 3 - 2.功能实现:------------------------------------------ - 4 - 1)加减乘除求余以及指数运算------------------------ - 4 - 2)其他运算---------------------------------------- - 4 - 3)主要方法说明------------------------------------ - 6 - 4)程序流程图-------------------------------------- - 6 - 3.算法思路:------------------------------------------ - 7 - 4.数据分析:------------------------------------------ - 8 - 四、设计结果与分析---------------------------------------- - 8 - ⒈运行调试-------------------------------------------- - 8 - 1)进行加减乘除求余以及指数运算-------------------- - 8 - 2)求倒-------------------------------------------- - 9 -

相关主题
文本预览
相关文档 最新文档