版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> BADA計(jì)算器</b></p><p><b> 目錄</b></p><p><b> 目錄2</b></p><p><b> 系統(tǒng)概述3</b></p><p><b> 1.1系統(tǒng)背景3<
2、/b></p><p><b> 1.2系統(tǒng)目標(biāo)3</b></p><p><b> 系統(tǒng)分析3</b></p><p><b> 2.1需求分析3</b></p><p><b> 2.2基本功能4</b></p>&
3、lt;p><b> 系統(tǒng)設(shè)計(jì)5</b></p><p> 1.1主控函數(shù)流程圖5</p><p> 1.2數(shù)據(jù)流程圖:5</p><p> 1.3 UML靜態(tài)結(jié)構(gòu)圖6</p><p><b> 系統(tǒng)實(shí)現(xiàn)6</b></p><p><b>
4、 1.1具體函數(shù)6</b></p><p><b> 1.2初始界面7</b></p><p> 1.3實(shí)現(xiàn)運(yùn)算123*1238</p><p> 設(shè)計(jì)小結(jié)與體會13</p><p><b> 源代碼14</b></p><p><b>
5、; 系統(tǒng)概述</b></p><p><b> 1.1系統(tǒng)背景</b></p><p> 在經(jīng)濟(jì)高速發(fā)展的今天,手機(jī)已經(jīng)成為人們?nèi)粘I町?dāng)中不可或缺的一部分,針對手機(jī)做出相應(yīng)的優(yōu)質(zhì)應(yīng)用也是當(dāng)今社會IT行業(yè)不變的主旋律。并且在我們的日常生活當(dāng)中,計(jì)算器是隨處可見的,從小商店到會計(jì)師的辦公桌,到處都離不開它,計(jì)算器的作用不可小覷,即使功能簡單的計(jì)算器也有
6、它的用武之地。計(jì)算器大大提高了我們的工作效率,降低了我們的出錯率。最重要的是,通過軟件的設(shè)計(jì)把計(jì)算器嵌入到手機(jī),應(yīng)用起來具有功能強(qiáng),靈活輕便的特點(diǎn)。</p><p><b> 1.2系統(tǒng)目標(biāo)</b></p><p> 通過簡單的軟件設(shè)計(jì)把簡單的計(jì)算器功能嵌入到手機(jī)上,使人們在日程生活當(dāng)中能普遍應(yīng)用,提高人們的生活效率。其次是通過對計(jì)算器的編寫,旨在鍛煉我們自身的編
7、程能力,熟悉軟件開發(fā)的一般流程,了解分?jǐn)?shù)計(jì)算器的實(shí)現(xiàn)過程,以C++為基本編程語言,Bada手機(jī)開發(fā)平臺,進(jìn)一步掌握面向?qū)ο筮^程當(dāng)中的基本設(shè)計(jì)和方法以及編程技巧,鞏固所學(xué)的理論知識,做到把理論和實(shí)際動手相結(jié)合。</p><p><b> 1.3系統(tǒng)開發(fā)方法</b></p><p> 本系統(tǒng)是以C++語言為基礎(chǔ),以bada手機(jī)平臺上實(shí)現(xiàn)計(jì)算器的應(yīng)用.</p>
8、;<p><b> 系統(tǒng)分析</b></p><p><b> 2.1需求分析</b></p><p> 日常生活中經(jīng)常要用到的計(jì)算器,比如科學(xué)計(jì)算器,數(shù)值計(jì)算,會計(jì)業(yè)務(wù)等,在Applet中實(shí)現(xiàn)一個(gè)精巧的實(shí)用計(jì)算器,可以讓用戶在使用手機(jī)的同時(shí)也能很方便的進(jìn)行數(shù)據(jù)運(yùn)算,不但增加了手機(jī)的用途,同時(shí)也讓用戶的操作也更方便和快捷。本項(xiàng)
9、目需要實(shí)現(xiàn)的是一個(gè)具有加、減、乘、除的四則運(yùn)算,并且具有清零,退格的功能。</p><p><b> 2.2基本功能</b></p><p> ?。?)基本的四則運(yùn)算</p><p> ?。?)退格和清零功能</p><p> ?。?)類設(shè)計(jì)。Calculator和Calulate,Calulate是內(nèi)部類,功能是進(jìn)行
10、進(jìn)制的轉(zhuǎn)換,Calcucate是初始界面,以及相應(yīng)用戶的操作。</p><p><b> ?。?)輸入要求:</b></p><p> (1).用戶進(jìn)入界面后,根據(jù)具體需求選擇要操作的類型;</p><p> (2).可以正確的輸入整數(shù)并與分?jǐn)?shù)進(jìn)行運(yùn)算。</p><p> ?。?)輸出要求:(1).以分?jǐn)?shù)的最簡格式輸
11、出數(shù)據(jù),如1/2;</p><p> .若操作出現(xiàn)錯誤時(shí),能提示相應(yīng)的信息供用戶更改</p><p> 下面用表說明該計(jì)算機(jī)的功能:</p><p><b> 系統(tǒng)設(shè)計(jì)</b></p><p> 1.1主控函數(shù)流程圖</p><p><b> 1.2數(shù)據(jù)流程圖:</b&g
12、t;</p><p> 1.3 UML靜態(tài)結(jié)構(gòu)圖</p><p><b> 系統(tǒng)實(shí)現(xiàn)</b></p><p><b> 1.1具體函數(shù)</b></p><p> case ID_BTN_PLUS:</p><p> strResult.Format(MAX_BUFF
13、_SIZE, L"%f", dOp1 + dOp2);</p><p><b> break;</b></p><p> case ID_BTN_MINUS:</p><p> strResult.Format(MAX_BUFF_SIZE, L"%f", dOp1 - dOp2);</p>
14、;<p><b> break;</b></p><p> case ID_BTN_MULTIPLY:</p><p> if(dOp1 == 0 || dOp2 == 0)</p><p><b> {</b></p><p> strResult = L"0&q
15、uot;;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> strResult.Format(MAX_BUFF_SIZE, L"%f", dOp1 * dOp2
16、);</p><p><b> }</b></p><p><b> break;</b></p><p> case ID_BTN_DIVIDE:</p><p> strResult.Format(MAX_BUFF_SIZE, L"%f", dOp1 / dOp2);
17、</p><p><b> break;</b></p><p> 加減乘除四則運(yùn)算由以上函數(shù)實(shí)現(xiàn),并調(diào)用Result函數(shù)輸出顯示。</p><p><b> 1.2初始界面</b></p><p> 1.3實(shí)現(xiàn)運(yùn)算123*123</p><p> 輸入690852
18、,并實(shí)現(xiàn)back、clear功能</p><p><b> 設(shè)計(jì)小結(jié)與體會</b></p><p> 通過本周的課程設(shè)計(jì),雖然最后完成了任務(wù)。但是只起來很費(fèi)力,實(shí)現(xiàn)的功能也很單一,有些地方還沒怎么弄懂,時(shí)間也不允許總在一個(gè)問題上糾結(jié)。所以只是很表面上學(xué)習(xí)了一些東西,通過這次課程設(shè)計(jì)使我們明白,要踏實(shí)學(xué)習(xí),快餐式的學(xué)習(xí)不可取。在編寫代碼的時(shí)候出現(xiàn)了很多錯誤,這些都是
19、我們平時(shí)不怎么關(guān)注的,所以在平時(shí)的學(xué)習(xí)當(dāng)中,要多實(shí)踐,不過最重要的是,要形成獨(dú)立思考的習(xí)慣。</p><p> 總之,通過此次課程設(shè)計(jì),我們學(xué)到了許多我們在書本上學(xué)不到的知識,受益匪淺。通過實(shí)踐,我們能更好地掌握C++語言,并運(yùn)用它編寫應(yīng)用程序,在不同的開發(fā)平臺上進(jìn)行運(yùn)行。我們對它的功能和實(shí)用性、嚴(yán)密性,和對程序的編寫都有了比較深刻的體會。毫無疑問,編程過程中我們遇到了許多問題,但通過我們不懈的努力,團(tuán)結(jié)奮斗的
20、精神,我們終究將問題一一解除,最終實(shí)現(xiàn)了程序的各項(xiàng)功能。雖然我們的程序還不夠完善,加以改進(jìn)以實(shí)現(xiàn)更多的功能。但通過這次的課程設(shè)計(jì)我們不僅學(xué)到了許多知識,學(xué)會如何設(shè)計(jì)一個(gè)應(yīng)用程序,包括程序設(shè)計(jì)方法,調(diào)試程序,還學(xué)會如何解決問題,學(xué)會將所學(xué)知識運(yùn)用到實(shí)際情況中。</p><p><b> 源代碼</b></p><p> Calculator.cpp</p>
21、;<p> #include "CalculatorForm.h"</p><p> #include "FUiLayout.h"</p><p> using namespace Osp::Base;</p><p> using namespace Osp::Graphics;</p>
22、<p> using namespace Osp::Ui;</p><p> using namespace Osp::Ui::Controls;</p><p> using namespace Osp::Base::Collection;</p><p> ////////////////////////////////////////////
23、//////////////////////////////</p><p> // CalculatorForm</p><p> CalculatorForm::CalculatorForm(void) :</p><p> __pGridPanel(null), __pLabelPrint(null) </p><p><b
24、> {</b></p><p><b> }</b></p><p> CalculatorForm::~CalculatorForm(void) </p><p><b> {</b></p><p><b> }</b></p>&
25、lt;p><b> result</b></p><p> CalculatorForm::Construct(void)</p><p><b> {</b></p><p> RelativeLayout relLayout;</p><p> relLayout.Constru
26、ct();</p><p> Form::Construct(relLayout, FORM_STYLE_INDICATOR | FORM_STYLE_HEADER);</p><p> Header * pHeader = GetHeader();</p><p> if (pHeader)</p><p><b> {&
27、lt;/b></p><p> pHeader->SetStyle(HEADER_STYLE_TITLE);</p><p> pHeader->SetTitleText("Calculator");</p><p><b> }</b></p><p> return E_
28、SUCCESS;</p><p><b> }</b></p><p><b> result</b></p><p> CalculatorForm::OnInitializing(void)</p><p><b> {</b></p><p&g
29、t; GridLayout gridLayout;</p><p> gridLayout.Construct(7, 3);</p><p> Panel* pGridPanel = new Panel;</p><p> pGridPanel->Construct(gridLayout, Rectangle(0, 0, 350, 630));<
30、/p><p> this->AddControl(*pGridPanel);</p><p> __pRelLayout = dynamic_cast<RelativeLayout*>(this->GetLayoutN());</p><p> __pRelLayout->SetCenterAligned(*pGridPanel, C
31、ENTER_ALIGN_HORIZONTAL);</p><p> __pRelLayout->SetCenterAligned(*pGridPanel, CENTER_ALIGN_VERTICAL);</p><p> __pGridPanel = pGridPanel;</p><p> /* Create Buttons */</p&
32、gt;<p> CreateButtons();</p><p> this->Draw();</p><p> return E_SUCCESS;</p><p><b> }</b></p><p><b> result</b></p><p&
33、gt; CalculatorForm::OnTerminating(void)</p><p><b> {</b></p><p> delete __pRelLayout;</p><p> delete __pGridLayout;</p><p> return E_SUCCESS;</p>
34、<p><b> }</b></p><p><b> result</b></p><p> CalculatorForm::OnDraw(void)</p><p><b> {</b></p><p> return E_SUCCESS;</
35、p><p><b> }</b></p><p><b> void</b></p><p> CalculatorForm::OnActionPerformed(const Osp::Ui::Control& source, int actionId)</p><p><b>
36、 {</b></p><p> switch(actionId)</p><p><b> {</b></p><p> // numbers</p><p><b> case 0:</b></p><p><b> case 1:<
37、/b></p><p><b> case 2:</b></p><p><b> case 3:</b></p><p><b> case 4:</b></p><p><b> case 5:</b></p><p&
38、gt;<b> case 6:</b></p><p><b> case 7:</b></p><p><b> case 8:</b></p><p><b> case 9:</b></p><p> __Calculator.isOpJu
39、stOn = false;</p><p> if(__Calculator.IsFinished() == true || __Calculator.IsOperator() == true)</p><p><b> {</b></p><p> __strBufferForPrint.Clear();</p><
40、p><b> }</b></p><p> if(__strBufferForPrint.GetLength() >= MAX_PRINTABLE_CHARS)// If the length exceeds MAX_PRINTABLE_CHARS, dot dot dot will be shown.</p><p><b> {<
41、;/b></p><p><b> return;</b></p><p><b> }</b></p><p> __strBufferForPrint.Append(actionId);</p><p> RefineNumber(__strBufferForPrint);&
42、lt;/p><p> SetOperandByContext(__strBufferForPrint);</p><p> __pLabelPrint->SetText(__strBufferForPrint);</p><p> __pLabelPrint->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);&l
43、t;/p><p> __pLabelPrint->Draw();</p><p><b> break;</b></p><p> case ID_BTN_PLUS:</p><p> case ID_BTN_MINUS:</p><p> case ID_BTN_MULTIPLY:&
44、lt;/p><p> case ID_BTN_DIVIDE: // operators</p><p><b> {</b></p><p> __Calculator.isOpJustOn = true;</p><p> if(__Calculator.IsReady() == true)</p>
45、<p><b> {</b></p><p> // do nothing</p><p><b> return;</b></p><p><b> }</b></p><p> else if( __Calculator.IsOperand1() ==
46、true || __Calculator.IsOperator() == true || __Calculator.IsFinished() == true)</p><p><b> {</b></p><p> __Calculator.SetOperator(actionId);</p><p><b> }<
47、;/b></p><p> else if(__Calculator.IsOperand2() == true)</p><p><b> {</b></p><p> RefineNumber(__strBufferForPrint);</p><p> __Calculator.SetOperand2(
48、__strBufferForPrint);</p><p> String strResult;</p><p> __Calculator.Calc(strResult);</p><p> __strBufferForPrint = strResult;</p><p> RefineNumber(__strBufferForPr
49、int);</p><p> __Calculator.SetOperand1(strResult);</p><p> __Calculator.SetOperator(actionId);</p><p> __pLabelPrint->SetText(__strBufferForPrint);</p><p> __pLa
50、belPrint->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);</p><p> __pLabelPrint->Draw();</p><p><b> }</b></p><p><b> else</b></p><p><b
51、> {</b></p><p> AppAssert(false);</p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p> ca
52、se ID_BTN_EQUAL:</p><p><b> {</b></p><p> __Calculator.isOpJustOn = false;</p><p> String strResult;</p><p> __Calculator.Calc(strResult);</p>
53、<p> __strBufferForPrint = strResult;</p><p> RefineNumber(__strBufferForPrint);</p><p> __pLabelPrint->SetText(__strBufferForPrint);</p><p> __pLabelPrint->SetTextH
54、orizontalAlignment(ALIGNMENT_RIGHT);</p><p> __pLabelPrint->Draw();</p><p><b> }</b></p><p><b> break;</b></p><p> case ID_BTN_BACK:</
55、p><p> __Calculator.isOpJustOn = false;</p><p> if(__Calculator.IsOperand1() == true || __Calculator.IsOperand2() == true)</p><p><b> {</b></p><p> if(__st
56、rBufferForPrint.GetLength() > 0)</p><p> __strBufferForPrint.Remove(__strBufferForPrint.GetLength()-1, 1);</p><p> RefineNumber(__strBufferForPrint);</p><p> SetOperandByConte
57、xt(__strBufferForPrint);</p><p> __pLabelPrint->SetText(__strBufferForPrint);</p><p> __pLabelPrint->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);</p><p> __pLabelPrint->
58、Draw();</p><p><b> }</b></p><p><b> break;</b></p><p> case ID_BTN_CLEAR:</p><p> __Calculator.isOpJustOn = false;</p><p> __s
59、trBufferForPrint.Clear();</p><p> __Calculator.Reset();</p><p> __pLabelPrint->SetText(L"0");</p><p> __pLabelPrint->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);&
60、lt;/p><p> __pLabelPrint->Draw();</p><p><b> break;</b></p><p> case ID_BTN_DOT:</p><p><b> {</b></p><p> if(__Calculator.IsFi
61、nished() == true || __Calculator.IsOperator() == true)</p><p><b> {</b></p><p> __strBufferForPrint.Clear();</p><p><b> }</b></p><p> int nI
62、ndexOfDot;</p><p> if(__strBufferForPrint == L"")</p><p><b> {</b></p><p> __strBufferForPrint = L"0.";</p><p><b> }</b>
63、</p><p> else if(__Calculator.isOpJustOn)</p><p> __strBufferForPrint = L"0.";</p><p> else if(IsFailed(__strBufferForPrint.IndexOf(L".", 0, nIndexOfDot)) &am
64、p;& __strBufferForPrint.GetLength() != 0)</p><p><b> {</b></p><p> __strBufferForPrint += L".";</p><p><b> }</b></p><p> SetO
65、perandByContext(__strBufferForPrint);</p><p> __pLabelPrint->SetText(__strBufferForPrint);</p><p> __pLabelPrint->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);</p><p> __pLa
66、belPrint->Draw();</p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> Show();</b></p><p
67、><b> }</b></p><p><b> void</b></p><p> CalculatorForm::RefineNumber(String & strNumber,bool isSwapSign /*= false*/)</p><p><b> {</b>&l
68、t;/p><p> mchar mch;</p><p> String strSign;</p><p> // for swapping a sign</p><p> if(isSwapSign == true && strNumber != L"0" && strNumber.G
69、etLength() > 0)</p><p><b> {</b></p><p> strNumber.GetCharAt(0, mch);</p><p> if(mch == L'-')</p><p><b> {</b></p><p&g
70、t; strNumber.Remove(0, 1);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> strSign = L"-";// will be
71、added</p><p><b> }</b></p><p><b> }</b></p><p> // Check empty</p><p> if(strNumber.IsEmpty())</p><p><b> {</b><
72、;/p><p> strNumber = L"0";</p><p><b> return;</b></p><p><b> }</b></p><p> // remove first zero</p><p> if(strNumber.Ge
73、tLength() > 1 )</p><p><b> {</b></p><p> strNumber.GetCharAt(0, mch);</p><p> if( mch == L'0' )</p><p><b> {</b></p><p
74、> int nIndex = 0;</p><p> if( IsFailed(strNumber.IndexOf(L".", 0, nIndex)) ) </p><p><b> {</b></p><p> strNumber.Remove(0, 1);</p><p><b
75、> }</b></p><p><b> }</b></p><p><b> }</b></p><p> // assign its sign</p><p> strNumber = strSign + strNumber;</p><p>
76、 if(strNumber == L"-" || strNumber == L"+" || strNumber == L"-0")</p><p><b> {</b></p><p> strNumber = L"0";</p><p><b>
77、 }</b></p><p><b> }</b></p><p><b> void</b></p><p> CalculatorForm::CreateButtons(void)</p><p><b> {</b></p><p&
78、gt; __pGridLayout = dynamic_cast<GridLayout*>(__pGridPanel->GetLayoutN());</p><p> GridLayout& layout = *__pGridLayout;</p><p> Panel& panel = *__pGridPanel;</p><
79、p> Button * pButton = null;</p><p> pButton = new Button();</p><p> pButton->Construct(Rectangle(0, 0, 90, 62), L"0");</p><p> pButton->SetName(L"ID_BTN_
80、0");</p><p> pButton->SetActionId(0);</p><p> pButton->AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pBu
81、tton, 5, 1, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Construct(Rectangle(0, 0, 90, 62), L"1");</p><p> pButton->SetName(L"ID_BTN_1");<
82、/p><p> pButton->SetActionId(1);</p><p> pButton->AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 2, 0, 1
83、, 1);</p><p> pButton = new Button();</p><p> pButton->Construct(Rectangle(0, 0, 90, 62), L"2");</p><p> pButton->SetName(L"ID_BTN_2");</p><p
84、> pButton->SetActionId(2);</p><p> pButton->AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 2, 1, 1, 1);</p&g
85、t;<p> pButton = new Button();</p><p> pButton->Construct(Rectangle(0, 0, 90, 62), L"3");</p><p> pButton->SetName(L"ID_BTN_3");</p><p> pButton
86、->SetActionId(3);</p><p> pButton->AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 2, 2, 1, 1);</p><p>
87、 pButton = new Button();</p><p> pButton->Construct(Rectangle(0, 0, 90, 62), L"4");</p><p> pButton->SetName(L"ID_BTN_4");</p><p> pButton->SetActio
88、nId(4);</p><p> pButton->AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 3, 0, 1, 1);</p><p> pButton = n
89、ew Button();</p><p> pButton->Construct(Rectangle(0, 0, 90, 62), L"5");</p><p> pButton->SetName(L"ID_BTN_5");</p><p> pButton->SetActionId(5);</p
90、><p> pButton->AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 3, 1, 1, 1);</p><p> pButton = new Button();&
91、lt;/p><p> pButton->Construct(Rectangle(0, 0, 90, 62), L"6");</p><p> pButton->SetName(L"ID_BTN_6");</p><p> pButton->SetActionId(6);</p><p&g
92、t; pButton->AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 3, 2, 1, 1);</p><p> pButton = new Button();</p>&l
93、t;p> pButton->Construct(Rectangle(0, 0, 90, 62), L"7");</p><p> pButton->SetName(L"ID_BTN_7");</p><p> pButton->SetActionId(7);</p><p> pButton-&
94、gt;AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 4, 0, 1, 1);</p><p> pButton = new Button();</p><p> pBut
95、ton->Construct(Rectangle(0, 0, 90, 62), L"8");</p><p> pButton->SetName(L"ID_BTN_8");</p><p> pButton->SetActionId(8);</p><p> pButton->AddActionE
96、ventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 4, 1, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Const
97、ruct(Rectangle(0, 0, 90, 62), L"9");</p><p> pButton->SetName(L"ID_BTN_9");</p><p> pButton->SetActionId(9);</p><p> pButton->AddActionEventListener(
98、*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 4, 2, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Construct(Rectangl
99、e(0, 0, 90, 62), L"Back");</p><p> pButton->SetName(L"ID_BTN_BACK");</p><p> pButton->SetActionId(ID_BTN_BACK);</p><p> pButton->AddActionEventListen
100、er(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 1, 1, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Construct(Recta
101、ngle(0, 0, 90, 62), L"Clear");</p><p> pButton->SetName(L"ID_BTN_CLEAR");</p><p> pButton->SetActionId(ID_BTN_CLEAR);</p><p> pButton->AddActionEvent
102、Listener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 1, 0, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Construct
103、(Rectangle(0, 0, 90, 62), L".");</p><p> pButton->SetName(L"ID_BTN_DOT");</p><p> pButton->SetActionId(ID_BTN_DOT);</p><p> pButton->AddActionEventLi
104、stener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 5, 2, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Construct(R
105、ectangle(0, 0, 90, 62), L"=");</p><p> pButton->SetName(L"ID_BTN_EQUAL");</p><p> pButton->SetActionId(ID_BTN_EQUAL);</p><p> pButton->AddActionEvent
106、Listener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 1, 2, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Construct
107、(Rectangle(0, 0, 90, 62), L"+");</p><p> pButton->SetName(L"ID_BTN_PLUS");</p><p> pButton->SetActionId(ID_BTN_PLUS);</p><p> pButton->AddActionEvent
108、Listener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 5, 0, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Construct
109、(Rectangle(0, 0, 90, 62), L"/");</p><p> pButton->SetName(L"ID_BTN_DIVIDE");</p><p> pButton->SetActionId(ID_BTN_DIVIDE);</p><p> pButton->AddActionE
110、ventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 6, 2, 1, 1);</p><p> pButton = new Button();</p><p> pButton->Const
111、ruct(Rectangle(0, 0, 90, 62), L"*");</p><p> pButton->SetName(L"ID_BTN_MULTIPLY");</p><p> pButton->SetActionId(ID_BTN_MULTIPLY);</p><p> pButton->Ad
112、dActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 6, 1, 1, 1);</p><p> pButton = new Button();</p><p> pButton-&
113、gt;Construct(Rectangle(0, 0, 90, 62), L"-");</p><p> pButton->SetName(L"ID_BTN_MINUS");</p><p> pButton->SetActionId(ID_BTN_MINUS);</p><p> pButton->
114、AddActionEventListener(*this);</p><p> panel.AddControl(*pButton);</p><p> layout.SetPosition(*pButton, 6, 0, 1, 1);</p><p> __pLabelPrint = new Label();</p><p> __
115、pLabelPrint->Construct(Rectangle(0, 0, 350, 81), L"");</p><p> __pLabelPrint->SetName(L"ID_LABEL_PRINT");</p><p> RefineNumber(__strBufferForPrint);</p><p&
116、gt; __pLabelPrint->SetText(__strBufferForPrint);</p><p> __pLabelPrint->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);</p><p> panel.AddControl(*__pLabelPrint);</p><p> layo
117、ut.SetPosition(*__pLabelPrint, 0, 0, 1, 3);</p><p> for (int i = 0; i<3; i++)</p><p> layout.SetColumnSpacing(i,40);</p><p> for (int i = 0; i<7; i++)</p><p>
118、 layout.SetRowSpacing(i,28);</p><p><b> }</b></p><p><b> void</b></p><p> CalculatorForm::SetOperandByContext(const String & strOperand)</p>&l
119、t;p><b> {</b></p><p> if(__Calculator.IsFinished() == true || __Calculator.IsReady() == true || __Calculator.IsOperand1() == true)</p><p><b> {</b></p><p
120、> __Calculator.SetOperand1(strOperand);</p><p><b> }</b></p><p> else if(__Calculator.IsOperator() == true || __Calculator.IsOperand2() == true)</p><p><b>
121、{</b></p><p> __Calculator.SetOperand2(strOperand);</p><p><b> }</b></p><p><b> }</b></p><p> ////////////////////////////////////////
122、//////////////////////////////////</p><p> // CalculatorModel</p><p><b> void</b></p><p> CalculatorForm::CalculatorModel::SetOperand1(const String & strOperand)&
123、lt;/p><p><b> {</b></p><p> __strOperand1 = strOperand;</p><p> __CalcMode = enMODE_OPERAND1;</p><p><b> }</b></p><p><b> v
124、oid</b></p><p> CalculatorForm::CalculatorModel::SetOperand2(const String & strOperand)</p><p><b> {</b></p><p> __strOperand2 = strOperand;</p><
125、p> __CalcMode = enMODE_OPERAND2;</p><p><b> }</b></p><p><b> void</b></p><p> CalculatorForm::CalculatorModel::SetOperator(int nType)</p><p
126、><b> {</b></p><p> switch(nType)</p><p><b> {</b></p><p> case ID_BTN_DIVIDE:</p><p> case ID_BTN_MINUS:</p><p> case ID_B
127、TN_PLUS:</p><p> case ID_BTN_MULTIPLY:</p><p> __nOperator = nType;</p><p> __CalcMode = enMODE_OPERATOR;</p><p><b> break;</b></p><p><
128、b> default:</b></p><p> AppAssert(false);</p><p> __CalcMode = enMODE_ERROR;</p><p><b> break;</b></p><p><b> }</b></p><
129、;p><b> }</b></p><p><b> result</b></p><p> CalculatorForm::CalculatorModel::Calc(String & strResult)</p><p><b> {</b></p><p
130、> if(IsReady() == true )</p><p><b> {</b></p><p> return E_SUCCESS;</p><p><b> }</b></p><p> else if(IsOperand1() == true)</p>&l
131、t;p><b> {</b></p><p> strResult = __strOperand1;</p><p> return E_SUCCESS;</p><p><b> }</b></p><p> else if(IsOperator() == true)</p&
132、gt;<p><b> {</b></p><p> __strOperand2 = __strOperand1;</p><p><b> }</b></p><p> double dOp1;</p><p> double dOp2;</p><p&
133、gt; result r = Double::Parse(__strOperand1, dOp1);</p><p> if(IsFailed(r))</p><p><b> {</b></p><p> strResult = GetErrorMessage(r);</p><p> __CalcMode
134、= enMODE_FINISHED;</p><p><b> return r;</b></p><p><b> }</b></p><p> r = Double::Parse(__strOperand2, dOp2);</p><p> if(IsFailed(r))</p&g
135、t;<p><b> {</b></p><p> strResult = GetErrorMessage(r);</p><p> __CalcMode = enMODE_FINISHED;</p><p><b> return r;</b></p><p><b&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件課程設(shè)計(jì)計(jì)算器
- 課程設(shè)計(jì)-計(jì)算器
- 計(jì)算器java課程設(shè)計(jì)--簡單計(jì)算器
- java課程設(shè)計(jì)報(bào)告----計(jì)算器軟件設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)
- 《軟件工程》課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)
- 軟件測試課程設(shè)計(jì)報(bào)告-計(jì)算器程序測試
- 計(jì)算器課程設(shè)計(jì)---計(jì)算器仿真程序設(shè)計(jì)
- java課程設(shè)計(jì)—計(jì)算器
- java課程設(shè)計(jì)計(jì)算器
- java計(jì)算器課程設(shè)計(jì)
- 計(jì)算器課程設(shè)計(jì)報(bào)告
- 簡易計(jì)算器課程設(shè)計(jì)
- java課程設(shè)計(jì)--計(jì)算器
- java課程設(shè)計(jì)計(jì)算器
- 簡易計(jì)算器課程設(shè)計(jì)
評論
0/150
提交評論