版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實 訓(xùn) 報 告實訓(xùn)項目名稱 基于Android計算器的開發(fā)與測試 二 級 學(xué) 院 信息工程學(xué)院 專 業(yè) 班 級 11級 姓 名 學(xué) 號 日 期 2014-11-19 I / 30項目名稱基于安卓計算器的開發(fā)與測試地點教13 603報 告 內(nèi) 容在本報告中,我們主要介紹了國內(nèi)目前手機系統(tǒng)和軟件的現(xiàn)狀和發(fā)展,針對這方面我們設(shè)計了基于Android計算器。報告內(nèi)容大致分為三個部分。第一部分首先介紹了需求分析,其中介紹了計算器最基本的功能。之后還有一些按鍵的設(shè)置以及計算器的基本功能。第二部分我們介紹了關(guān)于計算器的總體設(shè)計和詳細(xì)設(shè)計其中我們用了兩個流程圖來表示,分別是程序設(shè)計流程圖和軟件設(shè)計流程圖。然后
2、還包含了計算器模塊的設(shè)計。第三部分為計算器的測試部分,其中我們對計算器進(jìn)行了多方的測試。此外還有測試用例圖。教師評語成績: 教師簽名: 摘 要Android是當(dāng)今最重要的手機開發(fā)平臺之一,它是建立在Java基礎(chǔ)之上的,能夠迅速建立手機軟件的解決方案。Android的功能十分強大,成為當(dāng)今軟件行業(yè)的一股新興力量。Android基于Linux平臺,由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,具有以下5個特點:開放性、應(yīng)用程序無界限、應(yīng)用程序是在平等條件下創(chuàng)建的,應(yīng)用程序可以輕松的嵌入網(wǎng)絡(luò)、應(yīng)用程序可以并行運行。而簡單計算器又是手機上必備的小程序,所以此次創(chuàng)新實踐很有意義。并且具有很強的使用性。關(guān)鍵
3、字:計算器,Android,移動設(shè)備目錄1 緒論51.1研究背景52 游戲系統(tǒng)開發(fā)平臺63 系統(tǒng)分析與設(shè)計73.1可行性研究73.2系統(tǒng)的需求分析73.3系統(tǒng)的優(yōu)勢83.4系統(tǒng)的流程84.模板設(shè)計與實現(xiàn)95 測試用列和結(jié)果125.1測試用列125.2測試用列展示圖126 小結(jié)15參考文獻(xiàn)16附錄:171 緒論1.1 研究背景(1) 計算器背景目前手機可以說是普及率非常高的電子設(shè)備了,由于其便于攜帶,使用方便,資費適中等等原因,現(xiàn)在手機已經(jīng)在一定程度開始代替固定電話的通話功能,以及一些原來電腦軟件上的功能了。手機上的軟件也隨著手機的發(fā)展變得豐富起來了,時至今日已經(jīng)出現(xiàn)了很多專門制作手機軟件的公司
4、,雖然制作的多是游戲軟件,但是一些輔助性的工具軟件也有了很多.我們在此次系統(tǒng)中所做的工作主要是設(shè)計整個系統(tǒng)以及利用編程語言實現(xiàn)整個系統(tǒng),使系統(tǒng)能夠正確的運行計算功能。(2) Android系統(tǒng)簡介Android 系統(tǒng)構(gòu)架簡介:Android是一個基于LinuxV2.6內(nèi)核的交互性操作環(huán)境,同時它也是一個分層系統(tǒng),Android系統(tǒng)架構(gòu)顯示如下圖1.1。圖1.1系統(tǒng)架構(gòu)圖 應(yīng)用層由所有的Android應(yīng)用程序組成。其中包括電子郵件客戶端,SMS程序,地圖,瀏覽器,聯(lián)系人及其他。所有的應(yīng)用程序都是用Java編程語言編寫的。 1.Activity 顧名思義,Activity就是活動。應(yīng)用程序必須至少
5、包含一個Activity。Activity提供了一個虛擬的用戶接口,每一個Activity都有一個默認(rèn)的窗口可以用來顯示用戶界面,一般情況下,它是全屏的窗口。例如,影音播放軟件的每個用戶界面就是Activity。 2.Service Service與Activity的主要區(qū)別在于,Service是在后臺活動的,它沒有用戶界面。典型的應(yīng)用場景是,用戶選擇了一個播放列表開始播放后,離開了該用戶界面(Activity),如果仍然希望歌曲不會暫停,就可以用Service去調(diào)用播放器,而不是在Activity中調(diào)用播放器。 3.Intent 在Android中,每一個行為都可以抽象為一個Intent。可
6、以簡單地把Intent理解為一個包含了數(shù)據(jù)的消息。Intent可以用于啟動一個Act-ivity或者Service,可以用于進(jìn)程間的通信。事實上,應(yīng)用程序的啟動也是通過Intent實現(xiàn)的。 4.Content providers Android平臺內(nèi)置了一套SQLite數(shù)據(jù)儲存機制,并包含一系列管理SQLite Database的相關(guān)方法。在應(yīng)用程序中,可以通過Content prov-iders訪問數(shù)據(jù)庫。每個Content provider都定義了一系列的方法用于訪問它對應(yīng)的數(shù)據(jù)庫。應(yīng)用程序在新建數(shù)據(jù)庫時也可以定義相應(yīng)的Con-tent provider用于向其他應(yīng)用程序共享數(shù)據(jù)。一般情況
7、下,應(yīng)用程序不直接調(diào)用Content provider定義的函數(shù),而是通過ContentResolver間接調(diào)用。2 游戲系統(tǒng)開發(fā)平臺采用Eclipse開發(fā)工具,在Windows 7下進(jìn)行,基于Android 4.2.2操作系統(tǒng),使用的語言是Java語言。環(huán)境搭建:1) JDK安裝2) Eclipse安裝3) Android SDK安裝4) ADT安裝創(chuàng)建AVDJDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。自從Java誕生以來,JDK已經(jīng)成為最廣泛的Java SDK。JDK是整個Java的核心內(nèi)容,包括了Java運行環(huán)境、Java
8、工具和Java基礎(chǔ)類庫三部分。從Sun的JDK1.5開始,提供了一些非常使用的功能,其版本也不斷更新,運行效率得到了非常大的提高。Eclipse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組建構(gòu)建開發(fā)環(huán)境。Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。Android SDK即軟件開發(fā)工具包(software development kit)。被軟件開發(fā)工程師用于為特定的軟件包、軟件架構(gòu)、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件工具的集合。因此Android SDK是Android
9、專屬的開發(fā)工具包。其授權(quán)協(xié)議為Apache,開發(fā)語言為Java、需要Android操作系統(tǒng)的支持。23 系統(tǒng)分析與設(shè)計3.1 可行性研究可行性研究是為了弄清楚系統(tǒng)開發(fā)的項目是不是可以實現(xiàn)和值得進(jìn)行研究的過程,實際上是一次大大簡化系統(tǒng)分析和系統(tǒng)設(shè)計的過程,所以,進(jìn)行可執(zhí)行性的分析是非常必要的,也是很重要的,經(jīng)過最初的設(shè)計目標(biāo)和進(jìn)行的實時調(diào)查得出以下四點的可行性分析:(1)技術(shù)可行性:Eclipse + Android ADT的技術(shù)已經(jīng)較為成熟,通過SUN公司(現(xiàn)被ORCEL公司收購)推出的跨平臺、動態(tài)的JAVA語言進(jìn)行開發(fā)。(2)運行可行性:該系統(tǒng)需要Android虛擬機環(huán)境,Eclipse中安
10、裝ADT,DDMS等Google Android相關(guān)插件。其運行環(huán)境已經(jīng)相當(dāng)穩(wěn)定,它功能豐富,包括了完備的Android程序的編碼、調(diào)試、測試和發(fā)布功能,其中支持所有Android應(yīng)用開發(fā)相關(guān)技術(shù),包括SQLite,Skia,3D制作,Android XML,能夠很好的發(fā)布Android的應(yīng)用程序APK包。(3)法律可行性:因為是自主開發(fā)設(shè)計,所以不會構(gòu)成侵權(quán),在法律上是可行的。通過以上的可行性分析,將采用Eclipse+Android ADT + DDMS技術(shù),運用JAVA語言進(jìn)行系統(tǒng)的開發(fā)。3.2 系統(tǒng)的需求分析根據(jù)分析需求,這個系統(tǒng)必須實現(xiàn)以下的功能:(1) 實現(xiàn)簡單的數(shù)字計算功能。作為
11、計算器,其核心就是加減乘除。(2) 能夠在手機里面以良好的界面。簡單計算器能夠給予用戶良好的人機互動界面。3.3 系統(tǒng)的優(yōu)勢Android是以Linux為核心的手機操作平臺,作為一款開放式的操作系統(tǒng),隨著Android的快速發(fā)展,如今已允許開發(fā)者使用多種編程語言來開發(fā)Android應(yīng)用程序,而不再是以前只能使用Java開發(fā)Android應(yīng)用程序的單一局面,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng)。3.4系統(tǒng)的流程 本程序的流程是一個開機畫面,開機畫面之后就是計算機的主頁面了所有這個簡單程序的流程圖如圖3.1所示。開始顯示計算機界面輸入數(shù)值選擇功能鍵判斷選項加減乘除clear結(jié)束
12、圖 3.1 流程圖4.模板設(shè)計與實現(xiàn) 4.1計算模塊詳細(xì)設(shè)計系統(tǒng)要完成整個的計算器的計算功能,那么計算模塊就是整個系統(tǒng)的重點模塊。沒有計算模塊系統(tǒng)就不能順利的完成計算,就無法達(dá)到用戶的要求。所以計算模塊的設(shè)計也是本次系統(tǒng)設(shè)計中的重點。 系統(tǒng)想要能在屏幕上顯示出計算器的樣子要有整體的布局,在本模塊中要完成布局的具體設(shè)計,使用戶能夠看到整個計算器的畫面。同時系統(tǒng)想完成計算功能必須要處理用戶的輸入,當(dāng)輸入模塊的監(jiān)聽傳到計算模塊中時,計算模塊就要根據(jù)相應(yīng)的方法進(jìn)行進(jìn)一步的處理。這部分主要是對輸入進(jìn)行的邏輯判斷,基本會通過if else來實現(xiàn)邏輯判斷。4.2用戶界面設(shè)計界面設(shè)計應(yīng)該盡量簡潔而美觀,應(yīng)該具
13、有良好的交互性。當(dāng)然,我們每個人可以根據(jù)自己的喜好來進(jìn)行設(shè)計,根據(jù)我個人的喜好,我最終設(shè)計出來的計算器界面如圖4.1所示。 圖4.1 界面圖部分代碼: 4.3計算模塊設(shè)計的實現(xiàn)計算模塊則主要描述了計算器的整體,實現(xiàn)了計算器的界面,定義了用戶單擊的處理辦法,通過定義的處理辦法來完成用戶的操作命令,實現(xiàn)用戶的計算要求,這些計算要求包括了數(shù)值的輸入,小數(shù)點的輸入,正負(fù)號的輸入,記憶相關(guān)功能的完成,加、減、乘、除等各種計算功能的完成,運算符的替換,初始化系統(tǒng)等等。部分代碼:private class CommandAction implements OnClickListener Override p
14、ublic void onClick(View view) Button btn = (Button) view; String inputCommand = (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)用方法計算 jsp(Double.parseDouble(ed
15、itText.getText().toString();/ 保存顯示區(qū)域的值,并計算 / 保存你點擊的運算符 lastCommand = inputCommand; clearFlag = true;/ 因為我這里已經(jīng)輸入過運算符, 加、減、乘、除等各種計算功能的實現(xiàn): private void jsp(double x) if (lastCommand.equals(+) result += x; else if (lastCommand.equals(-) result -= x; else if (lastCommand.equals(*) result *= x; else if (l
16、astCommand.equals(/) result /= x; else if (lastCommand.equals(=) result = x; editText.setText( + result); 5 測試用列和結(jié)果5.1測試用列通過以下的測試用例進(jìn)行對游戲各功能模塊的測試并加以修改,如表5.1所示。測試編號測試輸入期望結(jié)果實際結(jié)果11+23.03.021*22.02.031/20.50.541/0無結(jié)果錯誤51-(-3)4.0-2.06-2程序錯誤程序錯誤表5.1 測試用例表5.2測試用列展示圖1. 測試1+2時的狀態(tài)如圖5.2所示:圖5.2測試結(jié)果圖2.測試1*2時如圖5.3
17、所示:圖5.3測試結(jié)果圖3. 測試1/2時如圖5.4所示:圖5.4測試結(jié)果圖4. 測試1/0時如圖5.5所示:圖5.5測試結(jié)果圖5.測試1-(-3)如圖5.6所示: 圖5.6測試結(jié)果圖6.測試輸入-2時如圖5.7所示: 圖5.7測試結(jié)果圖6 小結(jié) 這次項目android計算器項目設(shè)計是在eclipse平臺下設(shè)計,到現(xiàn)在為止,該系統(tǒng)的功能基本符合了普通計算器的要求,整個系統(tǒng)界面簡單明了,使用起來十分方便,具有普通計算器的基本功能,同時拓展了一些普通計算器上沒有的部分科學(xué)計算功能。在整個開發(fā)過程中,從需求分析到總體架構(gòu)的構(gòu)思,到最后代碼的編寫我投入了大量的時間和精力,對系統(tǒng)中的每個功能都進(jìn)行了反復(fù)
18、的調(diào)試,修改。因為這是我是第一次系統(tǒng)性的進(jìn)行軟件的開發(fā),不論是在知識層面、開發(fā)平臺的使用層面還是經(jīng)驗方面都有著很大的欠缺和不足,因此本軟件難免會有一些功能不完善、界面不美觀等一些不盡如人意的地方,但是再短短一個星期的時間內(nèi),我已經(jīng)進(jìn)行了很大的努力。通過這個android計算器項目設(shè)計,我不經(jīng)鞏固了我們在書本上學(xué)到和平時老師傳授的知識,而且還學(xué)到了許多書本上學(xué)不到的知識,并運用了網(wǎng)絡(luò)這個平臺查詢一些不明白的知識點。指導(dǎo)老師在我軟件代碼編寫和后期軟件調(diào)試期間,給我很大的幫助。要謝謝各位幫過我的老師和同學(xué)。這次的實驗讓我對我的學(xué)過的知識有了深一步的了解。 參考文獻(xiàn)1 劉敏.移動終端的Android移
19、植與應(yīng)用程序設(shè)計D. 西安電子科技大學(xué) 2011 2 王蕾.哈爾濱招行Android手機銀行匯率換算模塊的設(shè)計與實現(xiàn)D. 吉林大學(xué) 2011 3 施金蘭.基于Android平臺的網(wǎng)絡(luò)共享研究與實現(xiàn)D. 華東師范大學(xué) 2011 4 趙建勛.基于Android平臺的移動位置服務(wù)的開發(fā)與實現(xiàn)J. 現(xiàn)代商貿(mào)工業(yè). 2010(20) 5 李林濤,朱珊虹. 基于Android系統(tǒng)的手機游戲黑白棋的設(shè)計與實現(xiàn)J. 新鄉(xiāng)學(xué)院學(xué)報(自然科學(xué)版). 2011(03) 6 叢秋波. 用于Android手機操作系統(tǒng)的視頻引擎J. 電子設(shè)計技術(shù). 2010(07) 7 王豐,付明棟,馮海亮,施玉海. 智能終端圖形用戶界
20、面設(shè)計與實現(xiàn)J. 廣播電視信息. 2011(08)8 溫敏,艾麗蓉,王志國. Android智能手機系統(tǒng)中文件實時監(jiān)控的研究與實現(xiàn)J. 科學(xué)技術(shù)與工程. 2009(07) 9 劉牛.基于Android平臺的數(shù)字電視機頂盒模擬器的研究與開發(fā)D. 蘭州大學(xué) 2012 10 王康.Android RIL研究及其在無線通訊模塊上的實現(xiàn)D. 太原科技大學(xué) 2012 附錄: package com.example;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.v
21、iew.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity private Button btnNum = new Button11;/ 數(shù)值按鈕 private Button btnCommand = new Button5;/ 符號按鈕 private EditText editText = null;/ 顯示區(qū)域 private Button btnClear = null; / clea
22、r按鈕 private String lastCommand; / 用于保存運算符 private boolean clearFlag; / 用于判斷是否清空顯示區(qū)域的值,true需要,false不需要 private boolean firstFlag; / 用于判斷是否是首次輸入,true首次,false不是首次 private double result; / 計算結(jié)果 public MainActivity() / 初始化各項值 result = 0; / x的值 firstFlag = true; / 是首次運算 clearFlag = false; / 不需要清空 lastComm
23、and = =; / 運算符 Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); / 獲取運算符 btnCommand0 = (Button) findViewById(R.id.add); btnCommand1 = (Button) findViewById(R.id.subtract); btnCommand2 = (Button) findViewById(R.id.mult
24、iply); btnCommand3 = (Button) findViewById(R.id.divide); btnCommand4 = (Button) findViewById(R.id.equal); / 獲取數(shù)字 btnNum0 = (Button) findViewById(R.id.num0); btnNum1 = (Button) findViewById(R.id.num1); btnNum2 = (Button) findViewById(R.id.num2); btnNum3 = (Button) findViewById(R.id.num3); btnNum4 = (
25、Button) findViewById(R.id.num4); btnNum5 = (Button) findViewById(R.id.num5); btnNum6 = (Button) findViewById(R.id.num6); btnNum7 = (Button) findViewById(R.id.num7); btnNum8 = (Button) findViewById(R.id.num8); btnNum9 = (Button) findViewById(R.id.num9); btnNum10 = (Button) findViewById(R.id.point); /
26、 初始化顯示結(jié)果區(qū)域 editText = (EditText) findViewById(R.id.result); editText.setText(0.0); / 實例化監(jiān)聽器對象 NumberAction na = new NumberAction(); CommandAction ca = new CommandAction(); for (Button bc : btnCommand) bc.setOnClickListener(ca); for (Button bc : btnNum) bc.setOnClickListener(na); / clear按鈕的動作 btnClea
27、r = (Button) findViewById(R.id.clear); btnClear.setOnClickListener(new OnClickListener() Override public void onClick(View view) editText.setText(0.0); / 初始化各項值 result = 0; / x的值 firstFlag = true; / 是首次運算 clearFlag = false; / 不需要清空 lastCommand = =; / 運算符 ); / 數(shù)字按鈕監(jiān)聽器 private class NumberAction imple
28、ments OnClickListener Override public void onClick(View view) Button btn = (Button) view; String input = btn.getText().toString(); if (firstFlag) / 首次輸入 / 一上就.,就什么也不做 if (input.equals(.) return; / 如果是0.0的話,就清空 if (editText.getText().toString().equals(0.0) editText.setText(); firstFlag = false;/ 改變是否首次輸入的標(biāo)記值 else String editTextStr = editText.getText().toString(); / 判斷顯示區(qū)域的值里面是否已經(jīng)有.,如果有,輸入的又是.,就什么都不做 if (editTextStr.indexOf(.) != -1 & input.equals(.) return; / 判斷顯示區(qū)域的值里面只有-,輸入的又是.,就什么都不做 if (editTextStr.equals(-) & input.equals(.) return; / 判斷顯示區(qū)域的值如果是0,輸入的不是.,就什么也不
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 犬皮膚病診治
- 膽囊切除手術(shù)后的飲食與生活注意
- 麥子課件教案教學(xué)課件
- 匆匆的 課件教學(xué)課件
- 采購小組長述職報告
- 高三化學(xué)一輪復(fù)習(xí) 第一章 第1講 考點三 分散系 膠體 課件
- 4.1.1原電池的工作原理上學(xué)期人教版(2019)選擇性必修1
- 腕手關(guān)節(jié)僵硬的康復(fù)治療
- 不玩危險物品教案反思
- 甲狀腺核磁共振成像結(jié)果
- 2024-2025一年級上冊科學(xué)教科版2.5《通過感官來發(fā)現(xiàn)》課件
- 中醫(yī)護(hù)理進(jìn)修匯報
- 2024年國開電大 高級財務(wù)會計 形考任務(wù)4答案
- 【良品鋪子成本控制中存在的問題及優(yōu)化建議探析(定量論文)11000字】
- 2024年1月1378國開電大本科管理英語3期末考試試題及答案
- 最終版家具招標(biāo)文件
- 5國家機構(gòu)有哪些 第二課時(教學(xué)設(shè)計)部編版道德與法治六年級上冊
- 銀行科技業(yè)務(wù)需求管理辦法-2023
- 公路工程臨時用電施工方案
- 北師大版二年級數(shù)學(xué)上冊《數(shù)學(xué)好玩》(大單元教學(xué)設(shè)計)
- 當(dāng)代社會政策分析 課件 第13、14章 反貧困社會政策、公益慈善政策
評論
0/150
提交評論