软件工程课程设计bada计算器Word下载.docx
- 文档编号:16240217
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:30
- 大小:297.68KB
软件工程课程设计bada计算器Word下载.docx
《软件工程课程设计bada计算器Word下载.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计bada计算器Word下载.docx(30页珍藏版)》请在冰豆网上搜索。
计算器响应
结果状态
清零
键入数字键,如1
显示键入的数字,操作数=键入的数字
一个操作数
键入减号键
相当于键入了-0,但负号不显示,只显示0
键入除减号键和数字键以外的键
忽略键入的键,仍保留清零状态
键入数字键
显示新操作数,新操作数=当前操作数*10+键入的数字
键入回退键
显示新操作数,新操作数=当前操作出除以10取整
清屏键
显示0,但操作数不变
键入清零(任何状态下,键入清零键都会到清零状态下,以下的状态不在重复)
一个操作数和一个两元符号
键入=键
显示操作数,如果操作数为负数,显示操作数,如-56
错误
清零以外的任何键
忽略,计算器不做任何相应
清零键
系统设计
1.1主控函数流程图
1.2数据流程图:
1.3UML静态结构图
系统实现
1.1具体函数
caseID_BTN_PLUS:
strResult.Format(MAX_BUFF_SIZE,L"
%f"
dOp1+dOp2);
break;
caseID_BTN_MINUS:
dOp1-dOp2);
caseID_BTN_MULTIPLY:
if(dOp1==0||dOp2==0)
{
strResult=L"
0"
;
}
else
strResult.Format(MAX_BUFF_SIZE,L"
dOp1*dOp2);
caseID_BTN_DIVIDE:
dOp1/dOp2);
加减乘除四则运算由以上函数实现,并调用Result函数输出显示。
1.2初始界面
1.3实现运算123*123
输入690852,并实现back、clear功能
设计小结与体会
通过本周的课程设计,虽然最后完成了任务。
但是只起来很费力,实现的功能也很单一,有些地方还没怎么弄懂,时间也不允许总在一个问题上纠结。
所以只是很表面上学习了一些东西,通过这次课程设计使我们明白,要踏实学习,快餐式的学习不可取。
在编写代码的时候出现了很多错误,这些都是我们平时不怎么关注的,所以在平时的学习当中,要多实践,不过最重要的是,要形成独立思考的习惯。
总之,通过此次课程设计,我们学到了许多我们在书本上学不到的知识,受益匪浅。
通过实践,我们能更好地掌握C++语言,并运用它编写应用程序,在不同的开发平台上进行运行。
我们对它的功能和实用性、严密性,和对程序的编写都有了比较深刻的体会。
毫无疑问,编程过程中我们遇到了许多问题,但通过我们不懈的努力,团结奋斗的精神,我们终究将问题一一解除,最终实现了程序的各项功能。
虽然我们的程序还不够完善,加以改进以实现更多的功能。
但通过这次的课程设计我们不仅学到了许多知识,学会如何设计一个应用程序,包括程序设计方法,调试程序,还学会如何解决问题,学会将所学知识运用到实际情况中。
源代码
Calculator.cpp
#include"
CalculatorForm.h"
FUiLayout.h"
usingnamespaceOsp:
:
Base;
Graphics;
Ui;
Ui:
Controls;
Base:
Collection;
//////////////////////////////////////////////////////////////////////////
//CalculatorForm
CalculatorForm:
CalculatorForm(void):
__pGridPanel(null),__pLabelPrint(null)
{
}
~CalculatorForm(void)
result
Construct(void)
RelativeLayoutrelLayout;
relLayout.Construct();
Form:
Construct(relLayout,FORM_STYLE_INDICATOR|FORM_STYLE_HEADER);
Header*pHeader=GetHeader();
if(pHeader)
{
pHeader->
SetStyle(HEADER_STYLE_TITLE);
SetTitleText("
Calculator"
);
}
returnE_SUCCESS;
OnInitializing(void)
GridLayoutgridLayout;
gridLayout.Construct(7,3);
Panel*pGridPanel=newPanel;
pGridPanel->
Construct(gridLayout,Rectangle(0,0,350,630));
this->
AddControl(*pGridPanel);
__pRelLayout=dynamic_cast<
RelativeLayout*>
(this->
GetLayoutN());
__pRelLayout->
SetCenterAligned(*pGridPanel,CENTER_ALIGN_HORIZONTAL);
SetCenterAligned(*pGridPanel,CENTER_ALIGN_VERTICAL);
__pGridPanel=pGridPanel;
/*CreateButtons*/
CreateButtons();
Draw();
OnTerminating(void)
delete__pRelLayout;
delete__pGridLayout;
OnDraw(void)
void
OnActionPerformed(constOsp:
Control&
source,intactionId)
switch(actionId)
//numbers
case0:
case1:
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
__Calculator.isOpJustOn=false;
if(__Calculator.IsFinished()==true||__Calculator.IsOperator()==true)
__strBufferForPrint.Clear();
if(__strBufferForPrint.GetLength()>
=MAX_PRINTABLE_CHARS)//IfthelengthexceedsMAX_PRINTABLE_CHARS,dotdotdotwillbeshown.
return;
}
__strBufferForPrint.Append(actionId);
RefineNumber(__strBufferForPrint);
SetOperandByContext(__strBufferForPrint);
__pLabelPrint->
SetText(__strBufferForPrint);
SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
caseID_BTN_PLUS:
//operators
__Calculator.isOpJustOn=true;
if(__Calculator.IsReady()==true)
{
//donothing
return;
}
elseif(__Calculator.IsOperand1()==true||__Calculator.IsOperator()==true||__Calculator.IsFinished()==true)
__Calculator.SetOperator(actionId);
}
elseif(__Calculator.IsOperand2()==true)
RefineNumber(__strBufferForPrint);
__Calculator.SetOperand2(__strBufferForPrint);
StringstrResult;
__Calculator.Calc(strResult);
__strBufferForPrint=strResult;
__Calculator.SetOperand1(strResult);
__pLabelPrint->
else
AppAssert(false);
caseID_BTN_EQUAL:
{
__Calculator.isOpJustOn=false;
StringstrResult;
__Calculator.Calc(strResult);
__strBufferForPrint=strResult;
RefineNumber(__strBufferForPrint);
__pLabelPrint->
caseID_BTN_BACK:
if(__Calculator.IsOperand1()==true||__Calculator.IsOperand2()==true)
if(__strBufferForPrint.GetLength()>
0)
__strBufferForPrint.Remove(__strBufferForPrint.GetLength()-1,1);
SetOperandByContext(__strBufferForPrint);
caseID_BTN_CLEAR:
__strBufferForPrint.Clear();
__Calculator.Reset();
SetText(L"
caseID_BTN_DOT:
if(__Calculator.IsFinished()==true||__Calculator.IsOperator()==true)
__strBufferForPrint.Clear();
intnIndexOfDot;
if(__strBufferForPrint==L"
"
)
__strBufferForPrint=L"
0."
elseif(__Calculator.isOpJustOn)
elseif(IsFailed(__strBufferForPrint.IndexOf(L"
."
0,nIndexOfDot))&
&
__strBufferForPrint.GetLength()!
=0)
__strBufferForPrint+=L"
}
Show();
RefineNumber(String&
strNumber,boolisSwapSign/*=false*/)
mcharmch;
StringstrSign;
//forswappingasign
if(isSwapSign==true&
strNumber!
=L"
&
strNumber.GetLength()>
strNumber.GetCharAt(0,mch);
if(mch==L'
-'
{
strNumber.Remove(0,1);
}
else
strSign=L"
-"
//willbeadded
//Checkempty
if(strNumber.IsEmpty())
strNumber=L"
return;
//removefirstzero
if(strNumber.GetLength()>
1)
if(mch==L'
0'
)
intnIndex=0;
if(IsFailed(strNumber.IndexOf(L"
0,nIndex)))
strNumber.Remove(0,1);
//assignitssign
strNumber=strSign+strNumber;
if(strNumber==L"
||strNumber==L"
+"
-0"
CreateButtons(void)
__pGridLayout=dynamic_cast<
GridLayout*>
(__pGridPanel->
GridLayout&
layout=*__pGridLayout;
Panel&
panel=*__pGridPanel;
Button*pButton=null;
pButton=newButton();
pButton->
Construct(Rectangle(0,0,90,62),L"
SetName(L"
ID_BTN_0"
SetActionId(0);
AddActionEventListener(*this);
panel.AddControl(*pButton);
layout.SetPosition(*pButton,5,1,1,1);
1"
ID_BTN_1"
SetActionId
(1);
layout.SetPosition(*pButton,2,0,1,1);
2"
ID_BTN_2"
SetActionId
(2);
layout.SetPosition(*pButton,2,1,1,1);
3"
ID_BTN_3"
SetActionId(3);
layout.SetPosition(*pButton,2,2,1,1);
4"
ID_BTN_4"
SetActionId(4);
layout.SetPosition(*pButton,3,0,1,1);
pButton=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 bada 计算器
![提示](https://static.bdocx.com/images/bang_tan.gif)