基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試【實(shí)用文檔】doc_第1頁(yè)
基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試【實(shí)用文檔】doc_第2頁(yè)
基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試【實(shí)用文檔】doc_第3頁(yè)
基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試【實(shí)用文檔】doc_第4頁(yè)
基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試【實(shí)用文檔】doc_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載

基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載實(shí)訓(xùn)報(bào)告實(shí)訓(xùn)項(xiàng)目名稱(chēng)基于Android計(jì)算器的開(kāi)發(fā)與測(cè)試二級(jí)學(xué)院信息工程學(xué)院專(zhuān)業(yè)班級(jí)11級(jí)姓名學(xué)號(hào)日期2014—11-19項(xiàng)目名稱(chēng)基于安卓計(jì)算器的開(kāi)發(fā)與測(cè)試地點(diǎn)教13603報(bào)告內(nèi)容在本報(bào)告中,我們主要介紹了國(guó)內(nèi)目前手機(jī)系統(tǒng)和軟件的現(xiàn)狀和發(fā)展,針對(duì)這方面我們?cè)O(shè)計(jì)了基于Android計(jì)算器。報(bào)告內(nèi)容大致分為三個(gè)部分。第一部分首先介紹了需求分析,其中介紹了計(jì)算器最基本的功能.之后還有一些按鍵的設(shè)置以及計(jì)算器的基本功能。第二部分我們介紹了關(guān)于計(jì)算器的總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)其中我們用了兩個(gè)流程圖來(lái)表示,分別是程序設(shè)計(jì)流程圖和軟件設(shè)計(jì)流程圖。然后還包含了計(jì)算器模塊的設(shè)計(jì)。第三部分為計(jì)算器的測(cè)試部分,其中我們對(duì)計(jì)算器進(jìn)行了多方的測(cè)試。此外還有測(cè)試用例圖。教師評(píng)語(yǔ)成績(jī):教師簽名:摘要Android是當(dāng)今最重要的手機(jī)開(kāi)發(fā)平臺(tái)之一,它是建立在Java基礎(chǔ)之上的,能夠迅速建立手機(jī)軟件的解決方案。Android的功能十分強(qiáng)大,成為當(dāng)今軟件行業(yè)的一股新興力量。Android基于Linux平臺(tái),由操作系統(tǒng)、中間件、用戶(hù)界面和應(yīng)用軟件組成,具有以下5個(gè)特點(diǎn):開(kāi)放性、應(yīng)用程序無(wú)界限、應(yīng)用程序是在平等條件下創(chuàng)建的,應(yīng)用程序可以輕松的嵌入網(wǎng)絡(luò)、應(yīng)用程序可以并行運(yùn)行.而簡(jiǎn)單計(jì)算器又是手機(jī)上必備的小程序,所以此次創(chuàng)新實(shí)踐很有意義。并且具有很強(qiáng)的使用性。關(guān)鍵字:計(jì)算器,Android,移動(dòng)設(shè)備目錄TOC\o”1-3"\h\uHYPERLINKfirstFlag=false;//改變首次輸入的標(biāo)記}}else{if(!clearFlag){//如果flag=false不需要清空顯示區(qū)的值,就調(diào)用方法計(jì)算jsp(Double.parseDouble(editText.getText()。toString()));//保存顯示區(qū)域的值,并計(jì)算}//保存你點(diǎn)擊的運(yùn)算符lastCommand=inputCommand;clearFlag=true;//因?yàn)槲疫@里已經(jīng)輸入過(guò)運(yùn)算符,}}}加、減、乘、除等各種計(jì)算功能的實(shí)現(xiàn):privat(yī)evoidjsp(doublex){if(lastCommand。equals("+”)){result+=x;}elseif(lastCommand。equals(”-”)){result—=x;}elseif(lastCommand.equals("*")){result*=x;}elseif(lastCommand.equals(”/")){result/=x;}elseif(lastCommand。equals("=")){result=x;}editText.setText(””+result);}}5測(cè)試用列和結(jié)果5。1測(cè)試用列通過(guò)以下的測(cè)試用例進(jìn)行對(duì)游戲各功能模塊的測(cè)試并加以修改,如表5.1所示。測(cè)試編號(hào)測(cè)試輸入期望結(jié)果實(shí)際結(jié)果11+23。03.021*22.02.031/20。50.541/0無(wú)結(jié)果錯(cuò)誤51—(-3)4.0-2。06--2程序錯(cuò)誤程序錯(cuò)誤表5.1測(cè)試用例表5。2測(cè)試用列展示圖1.測(cè)試1+2時(shí)的狀態(tài)如圖5.2所示:圖5。2測(cè)試結(jié)果圖2.測(cè)試1*2時(shí)如圖5.3所示:圖5.3測(cè)試結(jié)果圖3.測(cè)試1/2時(shí)如圖5.4所示:圖5.4測(cè)試結(jié)果圖測(cè)試1/0時(shí)如圖5.5所示:圖5.5測(cè)試結(jié)果圖5。測(cè)試1-(—3)如圖5。6所示:圖5.6測(cè)試結(jié)果圖6.測(cè)試輸入--2時(shí)如圖5。7所示:圖5。7測(cè)試結(jié)果圖6小結(jié)這次項(xiàng)目android計(jì)算器項(xiàng)目設(shè)計(jì)是在eclipse平臺(tái)下設(shè)計(jì),到現(xiàn)在為止,該系統(tǒng)的功能基本符合了普通計(jì)算器的要求,整個(gè)系統(tǒng)界面簡(jiǎn)單明了,使用起來(lái)十分方便,具有普通計(jì)算器的基本功能,同時(shí)拓展了一些普通計(jì)算器上沒(méi)有的部分科學(xué)計(jì)算功能。在整個(gè)開(kāi)發(fā)過(guò)程中,從需求分析到總體架構(gòu)的構(gòu)思,到最后代碼的編寫(xiě)我投入了大量的時(shí)間和精力,對(duì)系統(tǒng)中的每個(gè)功能都進(jìn)行了反復(fù)的調(diào)試,修改。因?yàn)檫@是我是第一次系統(tǒng)性的進(jìn)行軟件的開(kāi)發(fā),不論是在知識(shí)層面、開(kāi)發(fā)平臺(tái)的使用層面還是經(jīng)驗(yàn)方面都有著很大的欠缺和不足,因此本軟件難免會(huì)有一些功能不完善、界面不美觀等一些不盡如人意的地方,但是再短短一個(gè)星期的時(shí)間內(nèi),我已經(jīng)進(jìn)行了很大的努力。通過(guò)這個(gè)android計(jì)算器項(xiàng)目設(shè)計(jì),我不經(jīng)鞏固了我們?cè)跁?shū)本上學(xué)到和平時(shí)老師傳授的知識(shí),而且還學(xué)到了許多書(shū)本上學(xué)不到的知識(shí),并運(yùn)用了網(wǎng)絡(luò)這個(gè)平臺(tái)查詢(xún)一些不明白的知識(shí)點(diǎn)。指導(dǎo)老師在我軟件代碼編寫(xiě)和后期軟件調(diào)試期間,給我很大的幫助。要謝謝各位幫過(guò)我的老師和同學(xué)。這次的實(shí)驗(yàn)讓我對(duì)我的學(xué)過(guò)的知識(shí)有了深一步的了解。參考文獻(xiàn)[1]劉敏.

移動(dòng)終端的Android移植與應(yīng)用程序設(shè)計(jì)[D].西安電子科技大學(xué)2011[2]王蕾.

哈爾濱招行Android手機(jī)銀行匯率換算模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].吉林大學(xué)2011[3]施金蘭.

基于Android平臺(tái)的網(wǎng)絡(luò)共享研究與實(shí)現(xiàn)[D]。華東師范大學(xué)2011[4]趙建勛.

基于Android平臺(tái)的移動(dòng)位置服務(wù)的開(kāi)發(fā)與實(shí)現(xiàn)[J]。現(xiàn)代商貿(mào)工業(yè)。2010(20)[5]李林濤,朱珊虹。基于Android系統(tǒng)的手機(jī)游戲黑白棋的設(shè)計(jì)與實(shí)現(xiàn)[J]。新鄉(xiāng)學(xué)院學(xué)報(bào)(自然科學(xué)版).2011(03)[6]叢秋波。用于Android手機(jī)操作系統(tǒng)的視頻引擎[J].電子設(shè)計(jì)技術(shù)。2010(07)[7]王豐,付明棟,馮海亮,施玉海.智能終端圖形用戶(hù)界面設(shè)計(jì)與實(shí)現(xiàn)[J].廣播電視信息。2011(08)[8]溫敏,艾麗蓉,王志國(guó)。Android智能手機(jī)系統(tǒng)中文件實(shí)時(shí)監(jiān)控的研究與實(shí)現(xiàn)[J]??茖W(xué)技術(shù)與工程。2009(07)[9]劉牛.

基于Android平臺(tái)的數(shù)字電視機(jī)頂盒模擬器的研究與開(kāi)發(fā)[D]。蘭州大學(xué)2012[10]王康.

AndroidRIL研究及其在無(wú)線(xiàn)通訊模塊上的實(shí)現(xiàn)[D].太原科技大學(xué)2012附錄:<?xmlversion=”1。0”encoding="utf-8"?><TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height=”wrap_content"android:textSize=”42sp”android:stretchColumns="1"〉<TableRow>〈EditTextandroid:id="@+id/result”android:layout_width="fill_parent"android:layout_height=”wrap_content”android:background="@android:drawable/editbox_background"android:layout_span="4"android:textSize="48sp"android:gravity="right|center_vertical"android:cursorVisible="false”android:editable=”false"android:lines="1"/>〈/TableRow><TableRowandroid:orientation="horizontal"android:layout_width="fill_parent”android:layout_height=”wrap_content”android:textSize=”42sp"android:layout_weight=”1”〉<Buttonandroid:id=”@+id/num7"android:layout_width="fill_parent"android:layout_h(yuǎn)eight="wrap_content"android:textSize="42sp”android:text=”@string/setText"android:layout_weight="1"/>〈Buttonandroid:id=”@+id/num8”android:layout_width="fill_parent”android:layout_h(yuǎn)eight=”wrap_content"android:textSize="42sp"android:text=”@string/a"android:layout_weight="1"/>〈Buttonandroid:id="@+id/num9"android:layout_width=”fill_parent"android:layout_h(yuǎn)eight="wrap_content"android:textSize=”42sp”android:text=”@string/b”android:layout_weight="1”/><Buttonandroid:id="@+id/divide”android:layout_width=”fill_parent"android:layout_height=”wrap_content"android:textSize=”42sp"android:text="@string/n"android:layout_weight="1"/〉</TableRow〉<TableRowandroid:orientation=”horizontal”android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize=”42sp"android:layout_weight=”1”>〈Buttonandroid:id=”@+id/num4"android:layout_width=”fill_parent"android:layout_height="wrap_content”android:textSize="42sp"android:text=”@string/c"android:layout_weight="1"/〉〈Buttonandroid:id=”@+id/num5”android:layout_width=”fill_parent”android:layout_height=”wrap_content"android:textSize="42sp”android:text="@string/d"android:layout_weight=”1”/〉〈Buttonandroid:id="@+id/num6"android:layout_width=”fill_parent”android:layout_height="wrap_content"android:textSize="42sp"android:text="@string/e"android:layout_weight="1"/〉〈Buttonandroid:id=”@+id/multiply"android:layout_width=”fill_parent"android:layout_height="wrap_content"android:textSize="42sp”android:text="@string/m"android:layout_weight="1"/〉〈/TableRow>〈TableRowandroid:orientation="horizontal"android:layout_width=”fill_parent”android:layout_h(yuǎn)eight=”wrap_content"android:textSize=”42sp”android:layout_weight="1"〉<Buttonandroid:id="@+id/num1”android:layout_width="fill_parent"android:layout_height=”wrap_content"android:textSize=”42sp"android:text=”@string/f”android:layout_weight="1”/>〈Buttonandroid:id="@+id/num2”android:layout_width="fill_parent”android:layout_height="wrap_content”android:textSize="42sp"android:text=”@string/g"android:layout_weight=”1"/〉<Buttonandroid:id=”@+id/num3"android:layout_width="fill_parent"android:layout_height="wrap_content”android:textSize="42sp”android:text="@string/h"android:layout_weight="1"/>〈Buttonandroid:id="@+id/subtract"android:layout_width=”fill_parent"android:layout_height=”wrap_content”android:textSize=”42sp"android:text="@string/k”android:layout_weight="1"/></TableRow〉<TableRowandroid:orientat(yī)ion="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="42sp"android:layout_weight=”1”〉<Buttonandroid:id="@+id/num0”android:layout_width=”fill_parent"android:layout_height="wrap_content"android:textSize=”42sp”android:text=”@string/i"android:layout_weight=”1"/〉<Buttonandroid:id="@+id/point”android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight=”1"android:minHeight="48dip"android:text="@string/q"android:textSize="42sp"/>〈Buttonandroid:id=”@+id/add"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="42sp"android:text="@string/j”android:layout_weight="1”/〉<Buttonandroid:id="@+id/equal"android:layout_width="fill_parent"android:layout_h(yuǎn)eight="wrap_content"android:textSize="42sp"android:text="@string/w"android:layout_weight=”1"/></TableRow><TableRow><Buttonandroid:id=”@+id/clear”android:layout_width=”fill_parent"android:layout_height=”wrap_content”android:textSize=”30sp”android:text=”@string/s"android:layout_span="4”android:gravity="center_vertical|center_horizontal"/></TableRow〉〈/TableLayout〉packagecom.example;importandroid.app.Activity;importandroid。os.Bundle;importandroid。view。View;importandroid.view。View.OnClickListener;importandroid.widget。Button;importandroid.widget。EditText;publicclassMainActivityextendsActivity{privateButton[]btnNum=newButton[11];//數(shù)值按鈕privateButton[]btnCommand=newButton[5];//符號(hào)按鈕privateEditTexteditText=null;//顯示區(qū)域privat(yī)eButtonbtnClear=null;//clear按鈕privateStringlastCommand;//用于保存運(yùn)算符privatebooleanclearFlag;//用于判斷是否清空顯示區(qū)域的值,true需要,false不需要privatebooleanfirstFlag;//用于判斷是否是首次輸入,true首次,false不是首次privatedoubleresult;//計(jì)算結(jié)果publicMainActivity(){//初始化各項(xiàng)值result=0;//x的值firstFlag=true;//是首次運(yùn)算clearFlag=false;//不需要清空lastCommand=”=”;//運(yùn)算符}@OverridepublicvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);setContentView(R.layout.activity_main);//獲取運(yùn)算符btnCommand[0]=(Button)findViewById(R。id.add);btnCommand[1]=(Button)findViewById(R。id。subtract);btnCommand[2]=(Button)findViewById(R。id。multiply);btnCommand[3]=(Button)findViewById(R。id.divide);btnCommand[4]=(Button)findViewById(R.id。equal);//獲取數(shù)字btnNum[0]=(Button)findViewById(R。id。num0);btnNum[1]=(Button)findViewById(R。id.num1);btnNum[2]=(Button)findViewById(R.id。num2);btnNum[3]=(Button)findViewById(R.id.num3);btnNum[4]=(Button)findViewById(R.id.num4);btnNum[5]=(Button)findViewById(R.id。num5);btnNum[6]=(Button)findViewById(R.id。num6);btnNum[7]=(Button)findViewById(R.id.num7);btnNum[8]=(Button)findViewById(R。id.num8);btnNum[9]=(Button)findViewById(R。id。num9);btnNum[10]=(Button)findViewById(R.id。point);//初始化顯示結(jié)果區(qū)域editText=(EditText)findViewById(R。id。result);editText。setText(”0。0");//實(shí)例化監(jiān)聽(tīng)器對(duì)象NumberActionna=newNumberAction();CommandActionca=newCommandAction();for(Buttonbc:btnCommand){bc。setOnClickListener(ca);}for(Buttonbc:btnNum){bc.setOnClickListener(na);}//clear按鈕的動(dòng)作btnClear=(Button)findViewById(R.id.clear);btnClear。setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewview){editText.setText(”0.0”);//初始化各項(xiàng)值result=0;//x的值firstFlag=true;//是首次運(yùn)算clearFlag=false;//不需要清空l(shuí)astCommand="=”;//運(yùn)算符}});}//數(shù)字按鈕監(jiān)聽(tīng)器privateclassNumberActionimplementsOnClickListener{@OverridepublicvoidonClick(Viewview){Buttonbtn=(Button)view;Stringinput=btn。getText().toString();if(firstFlag){//首次輸入//一上就”.",就什么也不做if(input.equals("。”)){return;}//如果是"0.0"的話(huà),就清空if(editText.getText().toString()。equals("0。0”)){editText.setText(””);}firstFlag=false;//改變是否首次輸入的標(biāo)記值}else{StringeditTextStr=editText。getText()。toString();//判斷顯示區(qū)域的值里面是否已經(jīng)有”.",如果有,輸入的又是”。”,就什么都不做if(editTextStr.indexOf(”.")!=-1&&input。equals("。")){return;}//判斷顯示區(qū)域的值里面只有"—",輸入的又是"。",就什么都不做if(editTextStr.equals(”-")&&input。equals(".”)){return;}//判斷顯示區(qū)域的值如果是”0",輸入的不是".”,就什么也不做if(editTextStr.equals(”0”)&&!input.equals(".”)){return;}}//如果我點(diǎn)擊了運(yùn)算符以后,再輸入數(shù)字的話(huà),就要清空顯示區(qū)域的值if(clearFlag){editText.setText("");clearFlag=false;//還原初始值,不需要清空}editText.setText(editText。getText().toString()+input);//設(shè)置顯示區(qū)域的值}}//符號(hào)按鈕監(jiān)聽(tīng)器privat(yī)eclassCommandActionimplementsOnClickListener{@OverridepublicvoidonClick(Viewview){Buttonbtn=(Button)view;StringinputCommand=(String)btn。getText();if(firstFlag){//首次輸入"-"的情況if(inputCommand.equals("-")){editText.setText(”—");//顯示區(qū)域的內(nèi)容設(shè)置為"-”firstFlag=false;//改變首次輸入的標(biāo)記}}else{if(!clearFlag){//如果flag=false不需要清空顯示區(qū)的值,就調(diào)用方法計(jì)算jsp(Double。parseDouble(editText.getText().toString()));//保存顯示區(qū)域的值,并計(jì)算}//保存你點(diǎn)擊的運(yùn)算符lastCommand=inputCommand;clearFlag=true;//因?yàn)槲疫@里已經(jīng)輸入過(guò)運(yùn)算符,}}}//計(jì)算用的方法privat(yī)evoidjsp(doublex){if(lastCommand.equals(”+")){result+=x;}elseif(lastCommand.equals("-")){result-=x;}elseif(lastCommand。equals(”*”)){result*=x;}elseif(lastCommand。equals("/”)){result/=x;}elseif(lastCommand.equals("=")){result=x;}editText。setText(""+result);}}基于Docker的云計(jì)算快速開(kāi)發(fā)測(cè)試架構(gòu)中國(guó)郵政集團(tuán)公司山東省信息技術(shù)局馬巖概述隨著山東郵政業(yè)務(wù)轉(zhuǎn)型的深入和業(yè)務(wù)種類(lèi)的多樣化發(fā)展,迫切需要郵政IT部門(mén)的支撐和引領(lǐng)作用,特別是在當(dāng)前業(yè)務(wù)發(fā)展迅速,各業(yè)務(wù)功能開(kāi)發(fā)和上線(xiàn)頻繁的情況下,對(duì)我們的系統(tǒng)開(kāi)發(fā)能力提出了更高的要求,而現(xiàn)有的開(kāi)發(fā)測(cè)試環(huán)境存在資源利用效率低,測(cè)試版本管理復(fù)雜,遷移成本高等諸多缺點(diǎn).以Docker?yàn)榇淼娜萜髟朴?jì)算技術(shù)自去年起逐步成長(zhǎng)起來(lái),容器技術(shù)以它輕量,快速,隔離的優(yōu)勢(shì),迅速在IT學(xué)術(shù)界和企業(yè)界引起了廣泛的關(guān)注。本文在概述Docker容器核心技術(shù)理念基礎(chǔ)上,著重介紹了我們利用Docker容器云計(jì)算技術(shù)優(yōu)化系統(tǒng)開(kāi)發(fā)過(guò)程的思路,并搭建了一個(gè)以docker技術(shù)為基礎(chǔ)的開(kāi)發(fā)測(cè)試框架。該框架有效整合了開(kāi)發(fā)和測(cè)試環(huán)境,顯著提高了我們開(kāi)發(fā)測(cè)試的速度和質(zhì)量,使我們能更好的服務(wù)于業(yè)務(wù)的發(fā)展。Docker容器云計(jì)算技術(shù)2。1Docker核心技術(shù)Docker是以L(fǎng)inux的cgroup、namespace等容器技術(shù)為基礎(chǔ)的開(kāi)源容器引擎,目前已經(jīng)獲得包括微軟,Google,紅旗等主流IT廠(chǎng)商的支持.Docker利用輕量級(jí)的虛擬化技術(shù),有效的封裝了操作系統(tǒng)底層的隔離,進(jìn)程獨(dú)立等功能,實(shí)現(xiàn)了各種依賴(lài)環(huán)境和應(yīng)用的打包,方便了項(xiàng)目的開(kāi)發(fā)測(cè)試和部署過(guò)程。Docker與傳統(tǒng)虛擬機(jī)技術(shù)的對(duì)比:傳統(tǒng)的虛擬化技術(shù)例如vmware公司的vsphere目標(biāo)是建立一個(gè)從硬件到軟件模擬化的虛擬機(jī),具有整套的操作系統(tǒng)環(huán)境,而Docker技術(shù)則是基于操作系統(tǒng)的底層容器API,他沒(méi)有模擬完整的操作系統(tǒng)環(huán)境,從進(jìn)程上看,docker虛擬機(jī)里只有應(yīng)用的進(jìn)程而沒(méi)有其他的操作系統(tǒng)進(jìn)程,它將項(xiàng)目的源碼,依賴(lài)和環(huán)境配置打包成一個(gè)隔離獨(dú)立的運(yùn)行環(huán)境,所以它具有快速輕量的特點(diǎn)。2.2Docker解決的主要問(wèn)題2.2.1減輕虛擬化的成本傳統(tǒng)的虛擬機(jī)技術(shù)要安裝操作系統(tǒng)后才能使用,而操作系統(tǒng)本身會(huì)占用大量的系統(tǒng)資源,是一種極大的浪費(fèi)。而Docker容器不需要操作系統(tǒng)安裝也能運(yùn)行,在提供了進(jìn)程隔離的同時(shí),為應(yīng)用的運(yùn)行提供了有效的運(yùn)行環(huán)境。2。2.2應(yīng)用的快速運(yùn)行和部署Docker獨(dú)有的鏡像技術(shù),使各種環(huán)境依賴(lài)和應(yīng)用打包后形成鏡像存儲(chǔ)在Docker倉(cāng)庫(kù)中,當(dāng)需要部署運(yùn)行的時(shí)候,只要從倉(cāng)庫(kù)獲取運(yùn)行鏡像即可得到相應(yīng)的功能,docker將復(fù)雜的部署過(guò)程,簡(jiǎn)化為復(fù)制加運(yùn)行,不需要中間多余的工作.2.2.3資源的有效度量Docker利用操作系統(tǒng)的容器API可以對(duì)cpu,網(wǎng)絡(luò),內(nèi)存等各種資源進(jìn)行有效的定制和度量,減少了單個(gè)應(yīng)用死循環(huán)對(duì)其他應(yīng)用的影響.2。2.4復(fù)雜環(huán)境依賴(lài)的有效隔離應(yīng)用的運(yùn)行環(huán)境需要多種第三方插件和運(yùn)行中間件的支持,這給應(yīng)用的開(kāi)發(fā)測(cè)試帶來(lái)了很大的復(fù)雜性,往往新環(huán)境的搭建要耗費(fèi)大量的時(shí)間和精力。Docker通過(guò)將多種依賴(lài)庫(kù)和中間件打包成鏡像的方法,有效減輕了環(huán)境搭建和移植的復(fù)雜性,同時(shí)Docker支持鏡像的疊加,容器的網(wǎng)絡(luò)等功能,從而進(jìn)一步簡(jiǎn)化了環(huán)境構(gòu)建的工作。2.3Docker的主要部件Docker主要部件包括Docker客戶(hù)端,docker后臺(tái)進(jìn)程,docker鏡像倉(cāng)庫(kù)和docker容器進(jìn)程四個(gè)部分。2。3.1Docker客戶(hù)端用戶(hù)通過(guò)Docker客戶(hù)端與docker后臺(tái)守護(hù)進(jìn)程進(jìn)行通訊,通過(guò)Docker客戶(hù)端命令行工具,發(fā)起對(duì)Docker各種功能的操作指令.Docker通訊支持tcp,unixsocket等多種通訊方式。2.3.2Docker后臺(tái)守護(hù)進(jìn)程Docker后臺(tái)守護(hù)進(jìn)程包含兩個(gè)模塊,Docker服務(wù)和Docker引擎。Docker服務(wù)接受來(lái)自Docker客戶(hù)端發(fā)送的命令,并交由Docker引擎中相應(yīng)的處理程序進(jìn)行處理。Docker引擎是實(shí)際完成工作的核心進(jìn)程。2。3.3Docker倉(cāng)庫(kù)Docker倉(cāng)庫(kù)用于存放Docker鏡像。鏡像類(lèi)似虛擬機(jī)的快照概念,是Docker容器運(yùn)行的代碼基礎(chǔ)。Docker倉(cāng)庫(kù)可以使用公有倉(cāng)庫(kù)DockerHub,也可以搭建企業(yè)內(nèi)部的私有倉(cāng)庫(kù)。2。3.4DockerFile構(gòu)建文件DockerFile描述了一個(gè)完整的鏡像的構(gòu)建過(guò)程,包括依賴(lài)軟件和中間件的安裝,目錄,環(huán)境變量,暴露端口,端口映射等?;贒ocker容器的云計(jì)算快速開(kāi)發(fā)測(cè)試框架3。1現(xiàn)有開(kāi)發(fā)測(cè)試環(huán)境及存在的問(wèn)題下圖是一個(gè)開(kāi)發(fā)測(cè)試和部署的過(guò)程,傳統(tǒng)的開(kāi)發(fā)測(cè)試過(guò)程存在如下幾個(gè)問(wèn)題:1、資源利用效率低2、單物理機(jī)多應(yīng)用無(wú)法有效隔離(進(jìn)程空間,cpu資源,磁盤(pán))3、運(yùn)維部署不便4、測(cè)試、版本管理復(fù)雜5、遷移成本高6、傳統(tǒng)虛擬機(jī),空間占用大,啟動(dòng)慢,管理復(fù)雜一個(gè)IT系統(tǒng)應(yīng)該包含如下幾個(gè)層次:應(yīng)用程序運(yùn)行時(shí)平臺(tái)(bin/framework/lib)操作系統(tǒng)硬件(基礎(chǔ)設(shè)施)開(kāi)發(fā)人員的主要工作是應(yīng)用程序的編碼、構(gòu)建、測(cè)試和發(fā)布,涉及應(yīng)用程序和運(yùn)行時(shí)平臺(tái)這兩層.而運(yùn)維人員的工作則涉及從硬件、操作系統(tǒng)到運(yùn)行時(shí)平臺(tái)的安裝、配置、運(yùn)行監(jiān)控、升級(jí)和優(yōu)化等工作。docker提供了一種運(yùn)行時(shí)環(huán)境,隔離了上層應(yīng)用于下層操作系統(tǒng)和硬件的關(guān)聯(lián),使得術(shù)業(yè)有專(zhuān)攻。3。2Docker容器的云計(jì)算快速開(kāi)發(fā)測(cè)試框架框架流程圖如下:如上圖所示,通過(guò)創(chuàng)建鏡像倉(cāng)庫(kù)群,開(kāi)發(fā)用戶(hù)從倉(cāng)庫(kù)獲取標(biāo)準(zhǔn)鏡像,進(jìn)行開(kāi)發(fā)測(cè)試,完成后將結(jié)果鏡像保存在Docker鏡像倉(cāng)庫(kù)中,測(cè)試機(jī)從倉(cāng)庫(kù)中獲取開(kāi)發(fā)完成的鏡像,并進(jìn)行驗(yàn)證測(cè)試,測(cè)試通過(guò)后,生產(chǎn)環(huán)境可以獲取最新的鏡像進(jìn)行部署,同時(shí)對(duì)原有鏡像進(jìn)行備份處理。3.2.1框架部署結(jié)構(gòu)圖框架部署圖如下所示:我們通過(guò)vmware公司的vsphere軟件建立虛擬化集群,在虛擬化集群服務(wù)中建立云端Docker倉(cāng)庫(kù)服務(wù)器,測(cè)試機(jī)和生產(chǎn)服務(wù)器,開(kāi)發(fā)人員通過(guò)網(wǎng)絡(luò)連接Docker鏡像倉(cāng)庫(kù),下載需要開(kāi)發(fā)的環(huán)境鏡像文件,同時(shí)可以根據(jù)生產(chǎn)備份和測(cè)試備份,直接獲取生產(chǎn)版本或者測(cè)試版本,開(kāi)發(fā)后在生產(chǎn)環(huán)境進(jìn)行部署.3.3關(guān)鍵技術(shù)及過(guò)程1、容器創(chuàng)建容器的創(chuàng)建過(guò)程類(lèi)似于快照中創(chuàng)建虛擬機(jī),可以把容器看做是一個(gè)簡(jiǎn)易版的Linux環(huán)境(包括root用戶(hù)權(quán)限、進(jìn)程空間、用戶(hù)空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序.容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開(kāi)始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái).如上圖所示,我們從#0號(hào)鏡像創(chuàng)建了tomcat(yī)容器2、端口映射端口映射功能提供了一種容器之間通訊的一種手段,如下圖所示:容器myapp1將內(nèi)部的80端口映射成8080端口對(duì)外提供服務(wù)3、數(shù)據(jù)卷共享數(shù)據(jù)卷是一個(gè)可供一個(gè)或多個(gè)容器使用的特殊目錄,完成進(jìn)程和數(shù)據(jù)的分離,實(shí)際保存在容器之外,從而允許你在不影響數(shù)據(jù)的情況下銷(xiāo)毀、重建、修改、丟棄容器,可用于數(shù)據(jù)持久化。數(shù)據(jù)卷的使用,類(lèi)似于Linux下對(duì)目錄或文件進(jìn)行mount.數(shù)據(jù)卷的共享,可以在多個(gè)容器之間共享數(shù)據(jù)卷上圖中深綠色表示數(shù)據(jù)卷以及數(shù)據(jù)卷在各容器之間的共享4、鏈接容器容器的連接(linking)系統(tǒng)是除了端口映射外,另一種跟容器中應(yīng)用交互的方式.在源和接收容器之間創(chuàng)建一個(gè)隧道,接收容器可以看到源容器指定的信息,Docker在兩個(gè)互聯(lián)的容器之間創(chuàng)建了一個(gè)安全隧道,而且不用映射它們的端口到宿主主機(jī)上。從而避免了暴露關(guān)鍵系統(tǒng)(如數(shù)據(jù)庫(kù))端口到外部網(wǎng)絡(luò)上。如上圖所示,web容器與myapp_db容器之間通過(guò)鏈接方式將數(shù)據(jù)庫(kù)的端口開(kāi)放給web應(yīng)用。5、倉(cāng)庫(kù)創(chuàng)建及注冊(cè)倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所,倉(cāng)庫(kù)注冊(cè)服務(wù)器上往往存放著多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽,倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式,可以push鏡像到倉(cāng)庫(kù)或者從倉(cāng)庫(kù)pull下鏡像??偨Y(jié)創(chuàng)新點(diǎn)與成效比較傳統(tǒng)的開(kāi)發(fā)測(cè)試流程和以docker為基礎(chǔ)的開(kāi)發(fā)測(cè)試框架,提出了三處創(chuàng)新:簡(jiǎn)化了環(huán)境搭建的步驟以往開(kāi)發(fā)環(huán)境的搭建,需要自己安裝操作系統(tǒng),安裝各種中間件軟件和依賴(lài)庫(kù),采用docker容器后,我們需要的僅僅是復(fù)制運(yùn)行,中間環(huán)節(jié)全部去除,并且保證了各個(gè)開(kāi)發(fā)人員環(huán)境的一致性。提高了資源利用效率為了減少各個(gè)應(yīng)用之間互相影響,業(yè)務(wù)測(cè)試都需要一臺(tái)獨(dú)立的物理主機(jī)或者虛擬機(jī)進(jìn)行測(cè)試,,采用docker技術(shù)后,各個(gè)應(yīng)用可以共用一臺(tái)主機(jī),由于進(jìn)程,內(nèi)存,cpu,網(wǎng)絡(luò)等資源的隔離,應(yīng)用之間的影響降為最低。降低了遷移成本舊開(kāi)發(fā)模式下,完成的代碼要上線(xiàn)到生產(chǎn)環(huán)境,需要在生產(chǎn)環(huán)境安裝需要的依賴(lài)軟件和庫(kù)文件,采用docker技術(shù)后,我們只需要將開(kāi)發(fā)完成的鏡像文件放到生產(chǎn)環(huán)境中運(yùn)行即可,因?yàn)殓R像本身就帶有自己的依賴(lài)文件和環(huán)境參數(shù),不需要運(yùn)維人員進(jìn)行修改和調(diào)整?;贒ocker云計(jì)算的開(kāi)發(fā)測(cè)試環(huán)境的應(yīng)用成效:采用該框架后,我們的開(kāi)發(fā)測(cè)試工作中的環(huán)境搭建任務(wù)大為減輕,開(kāi)發(fā)質(zhì)量和交付速度顯著提高,有效支撐了業(yè)務(wù)的發(fā)展石家莊經(jīng)濟(jì)學(xué)院專(zhuān)業(yè)實(shí)習(xí)報(bào)告班級(jí):姓名:題目:基于LABVIEW的簡(jiǎn)易計(jì)算器設(shè)計(jì)2013年1月15日摘要虛擬儀器技術(shù)把現(xiàn)成即用的商業(yè)技術(shù)與創(chuàng)新的軟、硬件平臺(tái)相集成,從而為嵌入式設(shè)計(jì)、工業(yè)控制以及測(cè)試和測(cè)量提供了一種獨(dú)特的解決方案。使用虛擬儀器技術(shù),工程師可以利用圖形化開(kāi)發(fā)軟件方便、高效的創(chuàng)建完全自定義的解決方案,以滿(mǎn)足靈活多變的需求趨勢(shì).本次課程設(shè)計(jì)是基于LABVIEW所設(shè)計(jì)的計(jì)算器,目的是為了實(shí)現(xiàn)兩個(gè)數(shù)之間的加、減、乘、除四則運(yùn)算及開(kāi)方、求倒、取負(fù)運(yùn)算,達(dá)到簡(jiǎn)易計(jì)數(shù)器的功能.編程的思想是完成一種運(yùn)算的過(guò)程,這個(gè)過(guò)程是:輸入第一個(gè)數(shù),存儲(chǔ)并顯示;輸入要進(jìn)行運(yùn)算的類(lèi)型并存儲(chǔ);輸入第二個(gè)數(shù),存儲(chǔ)并顯示;按“=”運(yùn)算或者按其它運(yùn)算符號(hào)進(jìn)行連續(xù)的運(yùn)算時(shí)顯示運(yùn)算結(jié)果.關(guān)鍵詞:LABVIEW;計(jì)算器;四則運(yùn)算;函數(shù)功能ABSTRACTThisexperimentistorealizethesumoftwoNumbers,subtract,multiply,divideandroot,thenpour,simpleoperation,tobearthecalculator.Programmingisacompletethoughtsoftheoperationprocessiscomplet,thenumber,storageandinputtotheinputoperationsandstorageinputnumberofthesecondtype,storageandpress”=”orbyotheroperationssymbolcontinuousoperationresultshows.KEYWORDS:LABVIEW;Calculator;Arithmetic;Function目錄TOC\o”1-3"\h\z\uHYPERLINK\l”_Toc346206228"1引言5HYPERLINK\l”_Toc346206229"2總體設(shè)計(jì)方案6HYPERLINK\l”_Toc346206230”2.1程序流程圖72.2簇中的各元素在條件結(jié)構(gòu)中代表的序號(hào)72.3具體實(shí)現(xiàn)過(guò)程8HYPERLINK\l”_Toc346206233”2。3。1前面板設(shè)計(jì)及鍵入感應(yīng)8_Toc346206235"2.3。3數(shù)字1——9的輸入92。3。4數(shù)字0的輸入10_Toc346206239”2。3。7“+/-”鍵的設(shè)計(jì)13HYPERLINK\l”_Toc346206240”2.3。8“+、—、*、/”四則運(yùn)算132。3.12取倒數(shù)運(yùn)算15退格鍵的設(shè)計(jì)152。3.14清零鍵的設(shè)計(jì)16致謝18參考文獻(xiàn)18HYPERLINK\l”_Toc346206252"附錄19基于LABVIEW的簡(jiǎn)易計(jì)算器設(shè)計(jì)1引言本次課程設(shè)計(jì)是基于LabVIEW虛擬儀器系統(tǒng)開(kāi)發(fā)與實(shí)踐等原理與技術(shù)而設(shè)計(jì)的計(jì)算器,可以用來(lái)模擬真實(shí)計(jì)算器而進(jìn)行一些簡(jiǎn)單的基本運(yùn)算。虛擬儀器的起源可以追溯到20世紀(jì)70年代,“虛擬”的含義主要是強(qiáng)調(diào)軟件在儀器中的作用,體現(xiàn)了虛擬儀器與主要通過(guò)硬件實(shí)現(xiàn)各種功能的傳統(tǒng)儀器的不同。由于虛擬儀器結(jié)構(gòu)形式的多樣性和適用領(lǐng)域的廣泛性,目前對(duì)于虛擬儀器的概念還沒(méi)有統(tǒng)一的定義。美國(guó)國(guó)家儀器公司(NationalInstrunentsCorpotion,NI)認(rèn)為,虛擬儀器是由計(jì)算機(jī)硬件資源、模塊化儀器硬件和用于數(shù)據(jù)分析、過(guò)程通信及圖形用戶(hù)界面的軟件組成的測(cè)控系統(tǒng),是一種計(jì)算機(jī)操縱的模塊化儀器系統(tǒng)。使用虛擬儀器技術(shù),工程師可以利用圖形化開(kāi)發(fā)軟件方便、高效的創(chuàng)建完全自定義的解決方案,以滿(mǎn)足靈活多變的需求趨勢(shì).本次設(shè)計(jì)的計(jì)算器是利用虛擬儀器技術(shù)而完成的,可以完成利用計(jì)算器可以進(jìn)行簡(jiǎn)單的四則運(yùn)算、可以進(jìn)行平方、開(kāi)根號(hào)和倒數(shù)運(yùn)算、計(jì)算器可以進(jìn)行清零和關(guān)閉計(jì)算器操作、在輸入數(shù)據(jù)時(shí)不慎將某個(gè)數(shù)字輸錯(cuò)可以運(yùn)用BackSpace清除該值等一些基本簡(jiǎn)單的運(yùn)算。2總體設(shè)計(jì)方案完成標(biāo)準(zhǔn)型計(jì)算器的一般功能。設(shè)計(jì)框圖如圖2-1所示:圖2—1程序框圖2。1程序流程圖圖2-2程序流程圖2。2簇中的各元素在條件結(jié)構(gòu)中代表的序號(hào)表2-1簇中元素默認(rèn)12345條件結(jié)構(gòu)中序號(hào)012345簇中元素67890。條件結(jié)構(gòu)中序號(hào)67891011簇中元素+/—+—*/=條件結(jié)構(gòu)中序號(hào)121314151617簇中元素sqrt%1/xBackspaceCEXIT條件結(jié)構(gòu)中序號(hào)1819202122232.3具體實(shí)現(xiàn)過(guò)程2。3。1前面板設(shè)計(jì)及鍵入感應(yīng)首先建立一個(gè)簇,然后在簇中建立23個(gè)布爾量,其中包括0—-9十個(gè)數(shù)字鍵,1個(gè)小數(shù)點(diǎn)鍵,4個(gè)“+、—、*、/"運(yùn)算鍵,1個(gè)等號(hào)鍵,1個(gè)開(kāi)方鍵,1個(gè)符號(hào)轉(zhuǎn)換鍵,1個(gè)倒數(shù)鍵,1個(gè)求百分?jǐn)?shù)鍵,1個(gè)清零鍵,1個(gè)退格鍵,1個(gè)退出鍵.如圖2—3所示:圖2-3前面板然后通過(guò)簇至數(shù)組轉(zhuǎn)換函數(shù)將簇中元素按產(chǎn)生的順序組成一個(gè)一維數(shù)組,如圖2—4所示:圖2-4鍵入感應(yīng)過(guò)程這樣就實(shí)現(xiàn)了每個(gè)鍵與數(shù)字(1—-23)之間的對(duì)應(yīng)。每次按下一個(gè)鍵時(shí),通過(guò)搜索一維數(shù)組函數(shù)查找出對(duì)應(yīng)的鍵并把其加1后對(duì)應(yīng)的數(shù)字連接到一個(gè)case結(jié)構(gòu),然后執(zhí)行對(duì)應(yīng)case結(jié)構(gòu)中的程序,至此就完成了對(duì)一個(gè)鍵的感應(yīng)過(guò)程。2。3.2運(yùn)算變量的初始化在運(yùn)行程序之前,首先對(duì)需要用到的變量進(jìn)行初始化,如圖2—5所示:圖2—5運(yùn)算變量的初始化在沒(méi)有鍵按下的情況下,數(shù)值顯示控件顯示的是0.從上到下的寄存器功能依次為:最上面的用來(lái)存儲(chǔ)display中的數(shù)據(jù),第二個(gè)用來(lái)存放四則運(yùn)算的符號(hào),第三個(gè)用來(lái)前一次運(yùn)算后輸出的數(shù)值,最底下的用來(lái)給出控制變量.2。3.3數(shù)字1—-9的輸入以數(shù)字“1”為例,當(dāng)?shù)谝淮屋斎霐?shù)字“1"后,波爾量為真,進(jìn)入case結(jié)構(gòu),將1輸出到display中,波爾量變?yōu)榧?如圖2-6所示。圖2—6輸入數(shù)字1時(shí)若再次輸入1,為避免出現(xiàn)01這樣的字符串,先判斷之前顯示的數(shù)據(jù)是否為0,若為0,則直接輸出1,如圖2-7所示.圖2-7輸入第一個(gè)數(shù)字為0時(shí)若不為0,則將這兩次輸入的數(shù)據(jù)通過(guò)連接字符串函數(shù)連接到一起,在display中輸出。數(shù)字2到9也是同樣的道理,如圖2—8所示。圖2—8輸入第一個(gè)數(shù)字不為0時(shí)2。3.4數(shù)字0的輸入當(dāng)?shù)谝淮屋斎?時(shí),與輸入數(shù)字1-9的情況相同,現(xiàn)在就零輸入時(shí)的多零問(wèn)題進(jìn)行設(shè)計(jì)。雖然以多個(gè)零開(kāi)頭不影響輸出的結(jié)果,但考慮到顯示形式的正確性,只在小數(shù)點(diǎn)前顯示一個(gè)零。當(dāng)數(shù)據(jù)輸入后,通過(guò)連接字符與00比較,若不等,則將數(shù)據(jù)直接輸出如圖2—9所示。圖2—9輸入不是00時(shí)當(dāng)數(shù)據(jù)輸入后,通過(guò)連接字符與00比較,若相等,則直接輸出0,如圖2-10所示。圖2-10輸入是00時(shí)2。3.5小數(shù)點(diǎn)的輸入在小數(shù)點(diǎn)的輸入時(shí),最多只能顯示出一個(gè)。若直接點(diǎn)擊小數(shù)點(diǎn),則以“0?!陛敵?。若之前已輸入數(shù)據(jù),此時(shí)再輸入小數(shù)點(diǎn)首先利用如圖2—11所示程序圖2—11判斷小數(shù)點(diǎn)的有無(wú)判斷已輸入的數(shù)據(jù)中是否含有小數(shù)點(diǎn),若不含有,則執(zhí)行程序“真”,如圖2—12所示;圖2—12輸入不含小數(shù)點(diǎn)時(shí)若已輸入的數(shù)據(jù)中含有小數(shù)點(diǎn),則執(zhí)行程序“假”,如圖2—13所示。圖2-13輸入含有小數(shù)點(diǎn)結(jié)果去零操作在進(jìn)行“+、-、*、/”運(yùn)算及取負(fù),取百分?jǐn)?shù),去倒數(shù),開(kāi)放運(yùn)算之后程序默認(rèn)為以保留6位小數(shù)的形式輸出。而為了顯示結(jié)果的簡(jiǎn)便,將末位不影響結(jié)果的零及小數(shù)點(diǎn)進(jìn)行省略。利用層疊式順序結(jié)構(gòu),首先將得出的結(jié)果經(jīng)過(guò)N-1位的偏移后與零進(jìn)行比較,若相等,則進(jìn)行去零操作,運(yùn)用while循環(huán)結(jié)構(gòu),直至末位數(shù)字不為零,循環(huán)結(jié)束(如圖2-14-——上圖表示末位為零,下圖表示末位不為零)。圖2—14去0操作在進(jìn)行去零操作之后,進(jìn)行層疊式順序結(jié)構(gòu)的第二層,對(duì)無(wú)關(guān)的小數(shù)點(diǎn)進(jìn)行清除(如圖2—15-—————上圖表示末位為小數(shù)點(diǎn),下圖表示末位不是小數(shù)點(diǎn)).圖2—15去多余小數(shù)點(diǎn)操作2。3。7“+/—”鍵的設(shè)計(jì)首先進(jìn)行掃描字符串,將字符串?dāng)?shù)據(jù)轉(zhuǎn)換為數(shù)值數(shù)據(jù),經(jīng)過(guò)取負(fù)數(shù)后再轉(zhuǎn)換為字符串形式輸出.如圖2—16所示,其中的順序結(jié)構(gòu)為去末尾零和去無(wú)關(guān)小數(shù)點(diǎn)的操作.圖2—16去0和小數(shù)點(diǎn)操作2.3。8“+、—、*、/”四則運(yùn)算以加法為例,當(dāng)簇中輸出的數(shù)據(jù)表示進(jìn)行加法運(yùn)算時(shí),程序進(jìn)入五層的層疊式順序結(jié)構(gòu),首先將字符串進(jìn)行掃描,轉(zhuǎn)換為數(shù)值變量,如圖2-17所示。圖2—17掃描字符串并轉(zhuǎn)換為數(shù)值變量之后,對(duì)之前的數(shù)據(jù)進(jìn)行運(yùn)算,以保證連續(xù)運(yùn)算時(shí)得到正確的結(jié)果:當(dāng)?shù)谝淮屋斎霑r(shí),默認(rèn)進(jìn)行firstrun條件下的程序,如圖2—18所示。圖2—18默認(rèn)條件下的程序若以前已有運(yùn)算,以減法為例,先將之前的兩個(gè)數(shù)進(jìn)行相減運(yùn)算,并進(jìn)行去零操作,之后再將本次的運(yùn)算符號(hào)送入“運(yùn)算符號(hào)"的局部變量,以便于進(jìn)行下次運(yùn)算,如圖2—19所示。圖2—19運(yùn)算過(guò)程操作2.3。9等號(hào)鍵實(shí)現(xiàn)最終的運(yùn)算結(jié)果,將結(jié)果進(jìn)行去零操作后輸出到display中,同時(shí)將代表運(yùn)算符號(hào)的移位寄存器置為空字符串。以加法為例。如圖2—20所示:圖2—20輸出運(yùn)算結(jié)果百分?jǐn)?shù)運(yùn)算將字符串轉(zhuǎn)換為數(shù)值輸出后除以100即可得到百分?jǐn)?shù)輸出,并對(duì)其進(jìn)行去零(順序結(jié)構(gòu)的后兩層為去零操作),如圖2—21所示:圖2-21輸出百分?jǐn)?shù)運(yùn)算結(jié)果2。3.11開(kāi)方運(yùn)算將字符串轉(zhuǎn)換為數(shù)值后進(jìn)行開(kāi)放運(yùn)算,再轉(zhuǎn)換為字符串輸出,并進(jìn)行去零操作(順序結(jié)構(gòu)的后兩層為去零操作),如圖2-22所示:圖2-22輸出開(kāi)方運(yùn)算結(jié)果2.3。12取倒數(shù)運(yùn)算將字符串轉(zhuǎn)換為數(shù)值后進(jìn)行取倒數(shù)運(yùn)算,再轉(zhuǎn)換為字符串輸出,并進(jìn)行去零操作(順序結(jié)構(gòu)的后兩層為去零操作),如圖2—23所示:圖2—23取倒去0操作2。3。13退格鍵的設(shè)計(jì)在點(diǎn)擊退格鍵時(shí),要實(shí)現(xiàn)從末位開(kāi)始的依次推格,直至輸出為0.首先,將整數(shù)部分與小數(shù)部分進(jìn)行分離,運(yùn)用拆分字符串函數(shù)實(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論