項目是人們通過努力,運用各種方法,將人力、材料和財務等資源組織起來,根據商業模式的相關策劃安排,進行一項獨立一次性或長期無限期的工作任務,以期達到由數量和質量指標所限定的目標。葉圣陶 《倪煥之》二五:“教育這個項目當然是不容輕易忽略的。” 洪, 以下是為大家整理的關于項目開發總結報告6篇 , 供大家參考選擇。
項目開發總結報告6篇
【篇1】項目開發總結報告
Android項目開發
實訓報告
?
??
2016年?? 12月? 25日
Android項目開發實訓記錄單
???
第一章 概述隨著社會的發展,經濟水平的提高,手機越來越普及。同時伴隨著已送慧聯網技術的發展,手機的功能也變得越來越豐富。從原來只具有簡單通信功能的非智能手機到現在具有手機操作系統,除通話功能以外,還集上網、聊天、炒股、收發郵件等功能于一身的智能手機系統。
由Google公式牽頭眾多實力雄厚的軟硬件廠商加盟商成立了OMS聯盟,病退出的Android平臺手機系統,作為時代的新生兒,Android手機操作平臺有著得天獨厚的優勢廣闊的發展前景。
而計算器作為現在人們日常生活中常用的一種工具也已經可以說是人們日常生活中必不可少的工具了。計算器的發展同樣經歷了漫長的過程,凝聚無數仙人的智慧,甚至連計算機的發展都可以說是源于計算器的發展。本程序正式基于Android平臺開發的計算器。
本課題要求:設計一個基于Android的計算器的軟件。實現的功能有:
具有基本的加、減、乘、除功能,能夠判斷用戶輸入運算數是否正確,支持小數運算,具有退格功能,能夠刪除最后一個輸入,具有清除功能,即“C”。因為打開(ON)、關閉(OFF)屏幕按鍵的功能
需重點研究的關鍵問題:計算器的運算和顯示問題。
第二章 需求分析2.1 項目背景隨著社會的發展,經濟水平的提高,手機越來越普及。同時伴隨著移動互聯網技術的發展,手機的功能也變得越來越豐富。從原來只具有簡單通信功能的非智能手機到現在具有手機操作系統,除通話功能以外,還集上網、聊天、炒股、收發郵件等功能于一身的智能手機系統。
Java語言是當今流行的網絡編程語言,它具有面向對象、跨平臺、分布應用等特點。面向對象的開發方法是當今世界最流行的開發方法,它不僅具有更貼近自然的語義,而且有利于軟件的維護和繼承。
為了進一步鞏固課堂上所學到的知識,深刻把握嵌入式系統以及Java語言的重要概念及其面向對象的特性,使我們能夠熟練的應用面向對象的思想和設計方法解決實際問題的能力。
通過此次課程設計,鞏固所學Java語言基本知識,增進Java語言編輯基本功,掌握JDK、Editplus、Eclipse、JCreator等開發工具的運用,拓寬常用類庫的應用。使學生通過該教學環節與手段,把所學課程及相關知識加以融會貫通,全面掌握Java語言的編程思想及面向對象程序設計的方法,為今后從事實際工作打下堅實的基礎。
2.2 項目需求根據需求,符合用戶的實際要求,系統應實現以下功能:計算器界面友好,方便使 用,顯示到少6位結果,具有基本的加、減、乘、除功能,能夠判斷用戶輸入運算數是否正確,支持小數運算,具有退格功能,能夠刪除最后一個輸入,具有清除功能,即“C”。因為打開(ON)、關閉(OFF)屏幕按鍵的功能等。如圖2-1所示。
整個程序基于Android技術開發,除總體模塊外主要分為輸入模塊、顯示模塊以及 計算模塊這三大部分。在整個系統中總體模塊控制系統的生命周期,輸入模塊部分負責讀取用戶輸入的數據,顯示模塊部分負責顯示用戶之前輸入的數據以及顯示最終的計算結果,計算機模塊部分負責進行數據的運算以及一些其他的功能。下面較為詳細的做了說明。 具體的說,總體模塊的作用主要是生成應用程序的主類,控制應用程序的生命周期。 輸入模塊主要描述了計算器鍵盤以及鍵盤的監聽即主要負責讀取用戶的鍵盤輸入以及響應觸屏的按鍵,需要監聽手機動作以及用指針事件處理方法處理觸屏的單擊動作。同時提供了較為直觀的鍵盤圖形用戶界面。 顯示模塊描述了計算器的顯示區,即該區域用于顯示用戶輸入的數據以及最終的計算結果,同時負責顯示一些其他的信息。
計算模塊則主要描述了計算器的整體,實現了計算器的界面,負責計算用戶輸入數 據,包括加、減、乘、除等各種功能,記憶數據的相關功能,退格以及清零的功能。 系統除了總體模塊以外主要由三大模塊來組成,即輸入模塊、顯示模塊和計算模塊, 如圖2-2所示:
輸入模塊主要描述了計算器鍵盤以及鍵盤的監聽即主要負責讀取用戶的鍵盤輸入以 及響應觸屏的按鍵,需要監聽手機按鍵動作以及用指針事件處理方法處理觸屏的單擊動作(以松開按鍵為準)。同時提供了較為直觀的鍵盤圖形用戶界面。 顯示模塊描述了計算器的顯示區,即該區域用于顯示用戶輸入的數據以及最終的計 算結果,同時還負責顯示一些其他的信息。 計算模塊則主要描述了計算器的整體,實現了計算器的界面,負責計算用戶輸入數 據,包括加、減、乘、除、等各種計算功能,記憶數據的相關功能,退格以及清零的功能。
第三章 相關技術3.1 Adnroid平臺介紹Android是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統的名稱,該平臺由操作系統、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。可以把它簡單理解成 Linux上套了一個 JAVA 的殼。 Android 的平臺基本上是免費的,雖然有部份原生鏈接庫會要求費用,但大部份是免權利金。 Android 的程序可以采用 JAVA 開發, 因為它的虛擬機(Virtual Machine) Dalvik,只是它將 JAVA 的 bytecode 轉成自己的格式,回避掉需要付給 SUN 有關 JAVA 的授權費用。因此,Android 開發環境是需要 JDK 的。 1. 新建項目:打開 Eclipse,選擇 File > New > Project > Android Project,具體輸入如圖3-1所示:
在Project name:中輸入工程的名字,build target中選擇所用的平臺,Application name為應用程序的名稱,create activity為活動類的名稱,配制運行方式:
點擊Run Configurations會出現圖3-2的界面,然后點擊androidandroid application新建一個動行方式,在右邊project中輸入要運行的工程名稱。至此運行方式配制完成。
運擊會行,便會出下如圖3-3界面:
3.2 關鍵技術研究每一個應用程序,我們都要設計一個圖標,可以說圖標是應用程序的名片,好的圖標能夠很快地吸引用戶。在此不對圖標問題做過多的介紹。
由于不同的android手機有著不同的分辨率,將不同分辨率的圖標圖片放置在相應位置,如圖3-4所示。
drawable-hdpi中放置分辨率最高的圖標,drawable-mdpi中放置分辨率中等的圖標,drawable-ldpi中放置分辨率最低的圖標。 圖標圖片大小的要求如圖3-5所示:
在AndroidManifest.xml文件中進行修改,修改情況如下: 其他設置保持不變。 在value中的String.xml中加入app_name,代碼為:計算器
界面設計應該盡量簡潔而美觀,應該具有良好的交互性。當然,我們每個人可以根據自己的喜好來進行設計,根據我個人的喜好,我最終設計出來的計算器界面如圖3-6所示:
從上圖中,我們可以很直觀的看到,從上到下分別是:顯示模塊、輸入模塊、計算模塊。
輸入模塊,主要描述了計算器鍵盤以及鍵盤的監聽即主要負責讀取用戶的鍵盤輸入以及響應觸屏的按鍵,當用戶點擊按鍵或者屏幕的時候監聽器會去調用相應的處理辦法,具體的處理辦法會在相關的地方進行說明。在本項目中,在觸屏上提供了各種功能的按鍵,分別是C,0,1,2,3,4,5,6,7,8,9,+,-,×,÷,=,ON, OFF。 在整體界面的設置中,我還為各個按鍵的設置中我還設置了字體的大小,字體的顏色,分別用下列語句實現: 字體大小:android:textSize="25dip" 字體顏色:android:textColor = "#7f0000" 界面背景:android:background="#888FFF"
顯示模塊,主要描述了計算器的顯示區,即該區域用于顯示用戶輸入的數據以及最終的計算結果和一些其他信息。顯示模塊還設置了顯示的字體,大小,顏色,同時還設置了顯示字體的顏色。具體設置如下代碼:
顯示區中使用的是基于增強型的圖形用戶界面EditText,利用此類的功能,在顯示模塊中完成了以上設置。顯示模塊聲明了這些設置,在用戶使用系統的時候,會在協同布局設置一同完成以上設置,使用戶在使用的時候可以直觀的看到顯示區的樣子。 一般情況下都會選擇差不多的字體,所以此處選擇的字體和鍵盤上顯示的字體其實是一樣的,但是事實上系統中進行了兩次聲明,即邏輯上這是兩種不同的字體,以及設置字符串text為空。顯示區和輸入模塊中的表格一樣,同樣分別設置了最小顯示以及完美顯示這兩種狀態。然后聲明了顯示區的畫法,畫法中包括了顯示區的兩個矩形組成的顯示框,顯示框的顏色和大小以及顯示框中顯示的文字所使用的字體,還有文字在顯示框中的位置。最后設置了計算模塊中的變量得到以及改變顯示中所顯示的內容的方法,當顯示中的內容發生變化時,系統會運行repaint命令來重畫顯示區,由于使用的是比較低級的方法,所以只能通過整個顯示區來實現顯示更新這個命令。這樣雖然和使用高級的方法相比速度上可能有點慢,但是由于時間相差的不是很多,在用戶的正常使用中是不會有所感覺的。
以上就是顯示模塊的具體實現流程。
第四章 概要設計4.1 系統體系結構計算模塊則主要描述了計算器的整體,實現了計算器的界面,定義了用戶單擊的處理辦法,通過定義的處理辦法來完成用戶的操作命令,實現用戶的計算要求,這些計算要求包括了數值的輸入,小數點的輸入,正負號的輸入,記憶相關功能的完成,加、減、乘、除等各種計算功能的完成,運算符的替換,初始化系統等等。
按鍵監聽同時監聽了觸屏上的按鍵和鍵盤上的按鍵,其中按鍵的監聽使用了的松開為判斷的標準,即用戶松開按鍵的時候程序才會讀取數據。計算模塊是整個系統的主體部分,整個計算器功能是通過Jisuanq2Activity.java來實現的。
首先,我使用一個數組btn來分別監控十個數字鍵,用et_led來監控輸入內容,用btn_div、btn_mul、btn_sub、btn_plus、btn_equal、btn_dot,分別來表示除法、乘法、減法、加法、等號、點號,具體實現如下代碼:
private Button[] btn = new Button[10];
private EditText et_led;
private Button btn_div, btn_mul, btn_sub, btn_plus, btn_equal, btn_dot;
其次,對內容的操作。當有內容輸入時,首先接收內容,接受的內容分為兩部分:當輸入為數據時,則是通過傳遞給數組str,根據數據的傳遞判斷數據內容的長度,如果沒有內容輸入則,則通過et_led.setText()為0,如果有數據輸入的時候,則通過et_led.setText()顯示數據,并且將第一次輸入的數據保存predata;當輸入為符號時,像“+、-、*、/、C、ON、OFF”時,然后對符號進行判斷,具體實現代碼如下:
private OnClickListener actionPerformed = new OnClickListener() {
public void onClick(View v) {
String command = ((Button)v).getText().toString();
str=et_led.getText().toString();
if(command.compareTo("Bksp") == 0) {
if(str.length() > 1)
et_led.setText(str.substring(0, str.length() - 1));
else if(str.length() == 1) {
et_led.setText("0");
vbegin=true;
}
if(et_led.getText().toString().compareTo("-")==0){
et_led.setText("0");
vbegin = true;
}
}
else if ????????????? ;
}
}
最后,當第二次輸入數據的時候,將會數據存到temp,再根據上次輸入的符號進行運算,然后將結果保存在temp,如果按鍵“=”,則會將將結果輸出,如果是其他的符號,則會進行相應的運算。
程序結構圖如下:
參照程序的流程圖,設計十個Activity。分別為進入頁面的Activity,選擇運算的Activity,剩下八個分別為輸入數據的Activity和顯示運算結果的Activity,如圖2。在這里應該注意的是每當創建一個新的class,就要繼承Activity。需要用到public class jisuanqi extends Activity這句代碼因此整理好程序的流程是關鍵,設計好Activity之間的Intent鏈接是關鍵。
程序所需的Activity 相應的,需要在res/layout文件夾中建立3個XML文件來對上述的十個Activity進行布局,如圖4-4:
總體上所需要的Activity和XML布局文件已經建立完畢,下面開始對進入計算器的Activity進行編寫,首先在布局文件main.xml中創建兩個Button按鈕,并且對兩個按鈕聲明ID和布局。兩個Button按鈕顯示為“開始計算”和“退出”如圖4-5:
然后在jisuanqi.java中,首先要聲明Button按鈕用到如下代碼: private Button button1 private Button button2 在安卓里面,用ID找控件是個非常方便的方法,使用findViewById方法來找到在XML文件中創建的對象。因此在jisuanqi.java中,同樣需要使用findViewById方法來找到兩個Button控件,代碼如下:
button1 = (Button)findViewById(R.id.button1);
button2 = (Button)findViewById(R.id.button2);
接下來開始編輯第二個Activity,也就是選擇運算法則的界面,本界面需要創建4個Button按鈕,分別為加、減、乘、除。Id分別為button3、button4、button5、button6。
再下來以加法頁面為例,在本頁面當中需要創件兩個EditText,一個TextView,還有一個Button按鈕,TextView顯示為“加上”,Button按鈕顯示為“計算” 三個Activity創建完成后,我們需要實現以下動作:在用戶打開軟件之后,點擊“開始計算”,然后跳轉到選擇運算法則的界面,當用戶點擊“加”則程序進入加法界面。
由此可見,在整個動作中,需要使用偵聽代碼來識別用戶的操作,然后使用Intent來實現Activity的切換。我們以開始界面跳轉到選擇運算法則界面為例:首先在“開始計算”按鈕上設置偵聽代碼如下:
button1.setOnClickListener(new button1Listener());
然后開始偵聽,當用戶點擊“開始計算”時,啟動Intent來將本界面切換到選擇運算法則的界面,在這里需要JAVA中偵聽的方法和Intent方法,代碼如下:
class button1Listener implements OnClickListener{
@Override
public void onClick(View v) {
//生成一個Intent對象
Intent intent = new Intent();
intent.setClass(jisuanqi.this, Activityone.class);
jisuanqi.this.startActivity(intent);
}
}
在這句代碼當中intent.setClass(jisuanqi.this, Activityone.class);是規定了本次跳轉是從哪個Activity跳轉到Activity,在這里是從jisuanqi.java跳轉到Activity.java。
完成了Activity之間的切換,下面我們開始進行運算的編輯,在加法界面,我們編寫如下代碼來實現將用戶輸入的兩個數傳送到Intent中:
//生成一個Intent對象
//取得兩個值
String FactorOnestr=FactorOne.getText().toString();
String FactorTwostr=FactorTwo.getText().toString();
//取得兩個值放在Intent中
Intent intent = new Intent();
intent.putExtra("one",jiashuoneStr);
intent.putExtra("two",jiashutwoStr);
//使用這個Intent來激活答案頁
intent.setClass(plus.this, resultplus.class);
plus.this.startActivity(intent);
接下來要進行的是顯示答案的Activity的編寫,在這里我們要注意的是Intent傳過來的是兩個字符串,字符串是不能相加的,因此我們要將兩個字符串強制轉換為整形,然后才可以相加,代碼如下:
plusresult = (TextView)findViewById(R.id.plusresult);
//得到Intent對象當中的值
Intent intent = getIntent();
String FactorOnestr=FactorOne.getText().toString();
String FactorTwostr=FactorTwo.getText().toString();
//將字符串轉為整形
Log.i("FactorOnestr",FactorOnestr);
Log.i("FactorTwostr",FactorTwostr);
//計算兩數之和
int result = jiashuone + jiashutwo;
plusresult.setText(result + "");
減法,乘法,除法的界面類似于加法的界面,這里不再過多介紹了。 最后需要注意的是要在AndroidMainfest.xml文件中將所有的Activity進行注冊,然后才可以運行。
4.2 用戶界面設計4.2.1計算器界面
圖4.2.1
4.2.2小數點運算界面
圖4.2.2
4.2.3負數運算界面
圖4.2.3
4.2.4開方運算界面
圖4
第5章 詳細設計5.1數據輸入模塊系統如果想完成計算器中的各種功能,首先用戶要能進行數據輸入,由于是在觸屏手機上開發計算器程序,所以要求輸入可以直接使用觸屏進行,所以在設計的時候就要充分的考慮要這一點。正是由于考慮到這個特殊的地方,所以在進行模塊設計中,選擇編寫輸入模塊類的時候會特意選取使用了可以支持觸屏輸入的特殊增強型圖形用戶界面類。
輸入模塊主要的任務是描述計算器鍵盤以及實現鍵盤的監聽,即當用戶點擊按鍵或者屏幕的時候監聽器會去調用相應的處理辦法,本模塊還需要為系統提供了一個較為直觀的鍵盤圖形用戶界面。
5.2數據顯示模塊作為手機計算器系統,顯示部分也是必不可少的一部分。沒有顯示部分就沒有辦法顯示用戶輸入的數字是否正確,甚至不能顯示計算出的結果,由此可見顯示模塊即包括輸入的部分也包括輸出的部分。
顯示模塊主要要完成的任務是描述計算器的顯示區,該區域用于顯示用戶輸入的數據以及最終的計算結果和一些其他信息。同時本模塊還將提供調用和設置顯示的具體方法。
5.3 數據計算功能模塊系統要完成整個的計算器的計算功能,那么計算模塊就是整個系統的重點模塊。沒有計算模塊系統就不能順利的完成計算,就無法達到用戶的要求。所以計算模塊的設計也是本次系統設計中的重點。
系統想要能在屏幕上顯示出計算器的樣子要有整體的布局,在本模塊中要完成布局的具體設計,使用戶能夠看到整個計算器的畫面。同時系統想完成計算功能必須要處理用戶的輸入,當輸入模塊的監聽傳到計算模塊中時,計算模塊就要根據相應的方法進行進一步的處理。這部分主要是對輸入進行的邏輯判斷,基本會通if else來實現邏輯判斷。
package com.android.calculator;
import java.math.BigDecimal;
import java.math.RoundingMode;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.Selection;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
class Flag {
private int a0;
private int a1;
private int a2;
private int a3;
public int a0() {
return a0;
}
public int a1() {
return a1;
}
public int a2() {
return a2;
}
public int a3() {
return a3;
}
public Flag(int a,int b,int c,int d) {
a0=a; a1=b; a2=c; a3=d;
}
public Flag next;
}
class FlagList {
private Flag first;
public FlagList(int a,int b,int c,int d){
first=null;
}
public boolean isEmpty() {
return (first==null);
}
public void insertFirst(int a,int b,int c,int d){
Flag newFlag = new Flag(a,b,c,d);
newFlag.next = first;
first = newFlag;
}
public Flag deleteFirst() {
Flag temp = first;
first = first.next;
return temp;
}
}
class FlagStack {
private FlagList theFlagList;
private int count;
public FlagStack() {
theFlagList = new FlagList(0,0,0,0);
count=0;
}
public void push(int a,int b,int c,int d){
theFlagList.insertFirst(a,b,c,d);
count++;
}
public Flag pop() {
count=count-1;
return theFlagList.deleteFirst();
}
public boolean isEmpty() {
return ( theFlagList.isEmpty() );
}
public int count() {
return count;
}
}
class Num {
private String s=new String();
public Num(String s1) {
s=s1;
}
public String getNum() {
return s;
}
public Num next;
}
class NumList {
private Num firstNum;
public NumList() {
firstNum=null;
}
public boolean isEmpty() {
return (firstNum==null);
}
public void insertFirst(String s1) {
Num newNum = new Num(s1);
newNum.next = firstNum;
firstNum = newNum;
}
public Num deleteFirst() {
Num temp = firstNum;
firstNum = firstNum.next;
return temp;
}
}
class NumStack {
private NumList theNumList;
private int countNum;
public NumStack() {
theNumList = new NumList();
countNum=0;
}
public void push(String s1) {
theNumList.insertFirst(s1);
countNum++;
}
public Num pop() {
countNum=countNum-1;
return theNumList.deleteFirst();
}
public boolean isEmpty() {
return ( theNumList.isEmpty() );
}
public int countNum() {
return countNum;
}
}
class Symbol {
private char c;
private int degree1;
public Symbol(char c1) {
c=c1;
if(c=="×"||c=="÷")
degree1=2;
else
degree1=1;
}
public int getDegree(){
return degree1;
}
public char getSymbol() {
return c;
}
public Symbol next;
}
class SymbolList {
private Symbol firstSymbol;
public SymbolList() {
firstSymbol=null;
}
public boolean isEmpty() {
return (firstSymbol==null);
}
public void insertFirst(char c1) {
Symbol newSymbol = new Symbol(c1);
newSymbol.next = firstSymbol;
firstSymbol = newSymbol;
}
public Symbol deleteFirst() {
Symbol temp = firstSymbol;
firstSymbol = firstSymbol.next;
return temp;
}
}
class SymbolStack {
private SymbolList theSymbolList;
private int countSymbol;
public SymbolStack() {
theSymbolList = new SymbolList();
countSymbol=0;
}
public void push(char c1) {
theSymbolList.insertFirst(c1);
countSymbol++;
}
public Symbol pop() {
countSymbol=countSymbol-1;
return theSymbolList.deleteFirst();
}
public boolean isEmpty() {
return ( theSymbolList.isEmpty() );
}
public int countSymbol() {
return countSymbol;
}
}
public class CalculatorActivity extends Activity {
/** Called when the activity is first created. */
if(Character.isDigit(mass [j])||mass [j]==46)
n=n+mass[j];
else {
if(n.length()!=0) {
numStack.push(n);
n=new String("");
}
symbolStack.push(mass[j]);
}
if(j==mass.length-1&&n.length()!=0) {
numStack.push(n);
n=new String("");
}
}
//在這使用了棧,需要使用這兩個循環改變計算 順序
while(numStack.countNum()>0)
numStack1.push(numStack.pop().getNum());
while(symbolStack.countSymbol()>0)
symbolStack1.push(symbolStack.pop().getSymbol();
BigDecimal result=calculator(numStack1,symbolStack1);
String resultString=result.toString();
String s=outprocess(resultString);
text1.setText(s);
flag5=1;
}
}
if((Button)v==button[18]) {
str="0";
text.setText(str);
flag0=1; flag1=0; flag2=0; flag3=0; FlagStack flagstack1=new FlagStack(); flagstack=flagstack1;
text1.setText("");
}
if((Button)v==button[19]) {
String str1="";
if(flagstack.count()>1) {
flagstack.pop();
Flag flagnow=flagstack.pop();
flag0=flagnow.a0();
flag1=flagnow.a1();
flag2=flagnow.a2();
flag3=flagnow.a3();
char[] b=str.toChar();
for(int i=0;i
【篇2】項目開發總結報告
項目開發總結報告(GB8567——88)
1引言(模板)1.1編寫目的說明編寫這份項目開發總結報告的目的,指出預期的閱讀范圍。
1.2背景說明:
a. 本項目的名稱和所開發出來的軟件系統的名稱;
b. 此軟件的任務提出者、開發者、用戶及安裝此軟件的計算中心。
1.3定義列出本文件中用到的專門術語的定義和外文首字母組詞的原詞組。
1.4參考資料列出要用到的參考資料,如:
a. 本項目的已核準的計劃任務書或合同、上級機關的批文;
b. 屬于本項目的其他已發表的文件;
c. 本文件中各處所引用的文件、資料,包括所要用到的軟件開發標準。列出這些文件的標題、文件編號、發表日期和出版單位,說明能夠得到這些文件資料的來源。
2實際開發結果(模板)2.1產品說明最終制成的產品,包括:
a. 程序系統中各個程序的名字,它們之間的層次關系,以千字節為單位的各個程序的程序量、存儲媒體的形式和數量;
b. 程序系統共有哪幾個版本,各自的版本號及它們之間的區別;
c. 每個文件的名稱;
d. 所建立的每個數據庫。 如果開發中制訂過配置管理計劃,要同這個計劃相比較。
2.2主要功能和性能逐項列出本軟件產品所實際具有的主要功能和性能,對照可行性研究報告、項目開發計劃、功能需求說明書的有關內容,說明原定的開發目標是達到了、未完全達到、或超過了。
2.3基本流程用圖給出本程序系統的實際的基本的處理流程。
2.4進度列出原定計劃進度與實際進度的對比,明確說明,實際進度是提前了、還是延遲了,分析主要原因。
2.5費用列出原定計劃費用與實際支出費用的對比,包括:
a. 工時,以人月為單位,并按不同級別統計;
b. 計算機的使用時間,區別CPU時間及其他設備時間;
c. 物料消耗、出差費等其他支出。
明確說明,經費是超出了、還是節余了,分析其主要原因。
3開發工作評價(模板)3.1對生產效率的評價給出實際生產效率,包括:
a. 程序的平均生產效率,即每人月生產的行數;
b. 文件的平均生產效率,即每人月生產的千字數;
并列出原訂計劃數作為對比。
3.2對產品質量的評價說明在測試中檢查出來的程序編制中的錯誤發生率,即每干條指令(或語句)中的錯誤指令數(或語句數)。如果開發中制訂過質量保證計劃或配置管理計劃,要同這些計劃相比較。
3.3對技術方法的評價給出對在開發中所使用的技術、方法、工具、手段的評價。
3.4出錯原因的分析給出對于開發中出現的錯誤的原因分析。
4經驗與教訓列出從這項開發工作中所得到的最主要的經驗與教訓及對今后的項目開發工作的建議。
【篇3】項目開發總結報告
實訓報告
2014年1月2 日
第一章 概述本課題要求:設計一個基于Android的位置鬧鐘的軟件。實現的功能有:
a) 能在Android上利用其提供地相關API獲取位置信息。
b) 能通過界面設置鬧鐘的啟動條件,包括入場與出場條件的設
c) 建立后臺服務進程,監查位置信息,當滿足觸發條件時,鬧鐘響應相應事件。
需重點研究的關鍵問題:通過Android Api獲取位置信息,并在指定地點設置鬧鐘提醒。
解決思路:在界面里顯示當前位置信息(經緯度值),并輸入指定地點的經緯度值,編程實現對位置信息實時更新,將兩者的經緯度轉換為距離,如在誤差范圍內則啟動鬧鈴功能。
第二章 需求分析 項目背景移動互聯網時代的來臨,直接促進了搭載智能操作系統、具有強大擴展性的智能手機、平板電腦等移動終端產業的蓬勃發展。搭載安卓操作系統的智能手機目前已經成為市場上最炙手可熱的智能產品。開放的源代碼和零成本已經讓安卓在全世界范圍內受到青睞并迅速獲得了主要手機廠商和數百萬軟件開發者的支持,2011年安卓系統的市場份額已經超過Symbian,成為全球第一大智能手機操作系統。
產業從軍用轉入民用后,正在逐漸向普通消費群體發展,作為使用終端的產品正逐漸的深入人們生活得各個領域。GPS使用終端最主要的應用方面主要體現在各種接收器,比如航空、航海用途的接收器,汽車導航設備,或用于登上、遠足的手持接收器等終端產品。GPS接收終端的結構包括,接收天線、芯片組、電池等,以及外部按鍵和液晶面板等相關零部件。
該課題實現在手機操作系統Android上將GPS導航和鬧鐘提醒兩個功能結合起來,攜帶方便,并能超越傳統的時間鬧鐘提醒功能,使用起來靈活、快捷、省心,是一款實用而且高端的手機軟件。
項目需求“位置鬧鐘”是一款提醒你地點的軟件,它通過地圖指定提醒的目的地,同時要求定位精確、使用過程可用Wifi(節省手機流量)和普通無網絡。
“位置鬧鐘”可以通過GPS定位和手機蜂窩基站定位兩種定位方式來監測用戶所在位置。當你靠近目的地的時候,“位置鬧鐘”會進行鬧鐘提醒。而在封閉的空間中,如擁擠的公交車上,接收不到衛星的GPS信號,此時,手機基站定位就可派上用場。雖然基站的定位精度比起GPS來說稍低,但完全可以滿足位置提醒的要求。此外,“位置鬧鐘”還可以后臺運行,且能和普通鬧鐘一樣設置多個位置鬧鈴,有良好的人機交互界面,可對其編輯、啟用或禁用。
第三章 相關技術 Adnroid平臺介紹Android是一種基于的自由及開放源代碼的,主要使用于,如和,由公司和領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用“”或“”。Android操作系統最初由開發,主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨后Google以Apache開源許可證的授權方式,發布了Android的源代碼。第一部Android智能手機發布于2008年10月。Android逐漸擴展到及其他領域上,如、、等。2011年第一季度,Android在全球的市場份額首次超過,躍居全球第一。 2012年11月數據顯示,Android占據全球智能市場76%的份額,中國市場占有率為90%。2013年09月24日谷歌開發的操作系統Android在迎來了5歲生日,全世界采用這款系統的設備數量已經達到10億臺。
關鍵技術研究應用SQLLite數據庫:SQLite提供結構化的數據存取。SQLite是一款輕型的數據庫,它的設計目標是嵌入式的,目前已經在很多嵌入式產品使用了它,它占用的資源非常低。它能夠支持Windows/Linux/Unix等主流的操作系統,同時能夠跟很多程序語言相結合,比如php,Java等,還有ODBC接口,同樣比起Mysql,PostgreSQL來講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數據庫,體積小,雖只有250KB但支持數據庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數據庫。同時它還支持事務功能和并發處理等等。SQLite也是一套開放性的關聯式資料庫,其特點在于輕量性方面的設計結構,更適合在手機上使用。
第四章 概要設計 系統體系結構系統旨在建立Android系統的鬧鐘,主要有如下幾個核心功能模塊如圖5所示。
圖5 系統功能模塊圖
用戶界面設計通過小組討論用戶的界面如下:
主頁面
添加鬧鈴功能
音樂清單
第五章 詳細設計 添加鬧鈴功能模塊具體實現代碼如下:
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public final class Alarm implements Parcelable {
*
Type: INTEGER
*/
public static final String HOUR = "hour";
/**
* Minutes in localtime 0 - 59
*
Type: INTEGER
*/
public static final String MINUTES = "minutes";
/**
* Days of week coded as integer
*
Type: INTEGER
*/
public static final String DAYS_OF_WEEK = "daysofweek";
/**
* Alarm time in UTC milliseconds from the epoch.
*
Type: INTEGER
*/
public static final String ALARM_TIME = "alarmtime";
/**
* True if alarm is active
*
Type: BOOLEAN
*/
public static final String ENABLED = "enabled";
/**
* True if alarm should vibrate
*
Type: BOOLEAN
*/
public static final String VIBRATE = "vibrate";
/**
* Message to show when alarm triggers
* Note: not currently used
*
Type: STRING
*/
public static final String MESSAGE = "message";
/**
* Audio alert to play when alarm triggers
*
Type: STRING
*/
public static final String ALERT = "alert";
public static final String WHERE_ENABLED = ENABLED + "=1";
static final String[] ALARM_QUERY_COLUMNS = {
_ID, HOUR, MINUTES, DAYS_OF_WEEK, ALARM_TIME,
ENABLED, VIBRATE, MESSAGE, ALERT
if (alert == null) {
alert = (
;
}
}
}
public Alarm(Parcel p) {
id = ();
enabled = () == 1;
hour = ();
minutes = ();
daysOfWeek = new DaysOfWeek());
time = ();
vibrate = () == 1;
label = ();
alert = (Uri) (null);
silent = () == 1;
public Alarm() {
id = -1;
Calendar c = ();
());
hour = ;
minutes = ;
vibrate = true;
daysOfWeek = new DaysOfWeek(0);
alert = ;
* 0x00: no day
* 0x01: Monday
* 0x02: Tuesday
* 0x04: Wednesday
* 0x08: Thursday
* 0x10: Friday
* 0x20: Saturday
* 0x40: Sunday
*/
static final class DaysOfWeek {
private static int[] DAY_MAP = new int[] {
,
,
,
,
,
,
,
};
public boolean[] getBoolean() {
boolean[] ret = new boolean[7];
for (int i = 0; i < 7; i++) {
ret[i] = isSet(i);
}
return ret;
}
public boolean isRepeatSet() {
return mDays != 0;
}
/**
* returns number of days from today until next alarm
* @param c must be set to today
*/
public int getNextAlarm(Calendar c) {
if (mDays == 0) {
return -1;
}
int today = + 5) % 7;
int day = 0;
int dayCount = 0;
for (; dayCount < 7; dayCount++) {
day = (today + dayCount) % 7;
if (isSet(day)) {
break;
}
}
return dayCount;
}
}
}
第六章 結論經過累計一個多月的努力,基于Android平臺的位置鬧鐘軟件終于完成了。由于對Android濃厚的興趣引發了我對JAVA的好奇心,畢竟Android是基于JAVA的,雖然這個軟件的開發沒有達到老師的期望值,但是在老師和同學的幫助下,我還是慢慢摸索完成了這個軟件。
在這個過程中,我學會了很多知識,比如Android環境的搭建和配置問題、GPS技術和Android的構架和基本組建等等,同時我學會的最重要的一點是,要利用現有的資源去解決問題,在圖書館、在網絡上尋找答案,也可以請教老師或與同學相互討論。
雖然,這個軟件目前運行良好,但是我認為代碼的健壯還很差,在整個工程的構思方面也不足,用戶操作界面還不夠靈活,這些問題還需要今后逐一解決。與此同時,這個軟件還可以進一步擴展,例如“同時設置多個鬧鐘”、“信息分享”、“應用推薦”等,使功能更加強大,帶給用戶更好的體驗與便捷的生活服務。
【篇4】項目開發總結報告
項目總結報告
項目題目:
課程階段:
學生姓名
指導教師
班級編號
提交日期
【篇5】項目開發總結報告
項目開發總結報告(GB8567——88)
1引言(模板)1.1編寫目的說明編寫這份項目開發總結報告的目的,指出預期的閱讀范圍。
1.2背景說明:
a. 本項目的名稱和所開發出來的軟件系統的名稱;
b. 此軟件的任務提出者、開發者、用戶及安裝此軟件的計算中心。
1.3定義列出本文件中用到的專門術語的定義和外文首字母組詞的原詞組。
1.4參考資料列出要用到的參考資料,如:
a. 本項目的已核準的計劃任務書或合同、上級機關的批文;
b. 屬于本項目的其他已發表的文件;
c. 本文件中各處所引用的文件、資料,包括所要用到的軟件開發標準。列出這些文件的標題、文件編號、發表日期和出版單位,說明能夠得到這些文件資料的來源。
2實際開發結果(模板)2.1產品說明最終制成的產品,包括:
a. 程序系統中各個程序的名字,它們之間的層次關系,以千字節為單位的各個程序的程序量、存儲媒體的形式和數量;
b. 程序系統共有哪幾個版本,各自的版本號及它們之間的區別;
c. 每個文件的名稱;
d. 所建立的每個數據庫。 如果開發中制訂過配置管理計劃,要同這個計劃相比較。
2.2主要功能和性能逐項列出本軟件產品所實際具有的主要功能和性能,對照可行性研究報告、項目開發計劃、功能需求說明書的有關內容,說明原定的開發目標是達到了、未完全達到、或超過了。
2.3基本流程用圖給出本程序系統的實際的基本的處理流程。
2.4進度列出原定計劃進度與實際進度的對比,明確說明,實際進度是提前了、還是延遲了,分析主要原因。
2.5費用列出原定計劃費用與實際支出費用的對比,包括:
a. 工時,以人月為單位,并按不同級別統計;
b. 計算機的使用時間,區別CPU時間及其他設備時間;
c. 物料消耗、出差費等其他支出。
明確說明,經費是超出了、還是節余了,分析其主要原因。
3開發工作評價(模板)3.1對生產效率的評價給出實際生產效率,包括:
a. 程序的平均生產效率,即每人月生產的行數;
b. 文件的平均生產效率,即每人月生產的千字數;
并列出原訂計劃數作為對比。
3.2對產品質量的評價說明在測試中檢查出來的程序編制中的錯誤發生率,即每干條指令(或語句)中的錯誤指令數(或語句數)。如果開發中制訂過質量保證計劃或配置管理計劃,要同這些計劃相比較。
3.3對技術方法的評價給出對在開發中所使用的技術、方法、工具、手段的評價。
3.4出錯原因的分析給出對于開發中出現的錯誤的原因分析。
4經驗與教訓列出從這項開發工作中所得到的最主要的經驗與教訓及對今后的項目開發工作的建議。
歡迎您的下載,
資料僅供參考!
致力為企業和個人提供合同協議,策劃案計劃書,學習資料等等
打造全網一站式需求
【篇6】項目開發總結報告
十、項目開發總結報告十、項目開發總結報告
1.引言.............................................................................................................................................1
1.1編寫目的............................................................................................................................11.2項目背景............................................................................................................................11.3定義....................................................................................................................................11.4參考資料............................................................................................................................22.開發結果.....................................................................................................................................2
2.1產品....................................................................................................................................22.2主要功能及性能................................................................................................................22.3所用工時............................................................................................................................22.4所用機時............................................................................................................................22.5進度....................................................................................................................................22.6費用....................................................................................................................................33.評價.............................................................................................................................................3
3.1生產率評價........................................................................................................................33.2技術方案評價....................................................................................................................33.3產品質量評價....................................................................................................................34.經驗與教訓.................................................................................................................................3
1.引言
1.1編寫目的
【闡明編寫總結報告的目的,指明讀者對象。】
1.2項目背景
【說明項目來源、委托單位、開發單位及主管部門。】
1.3定義
【列出報告用到的專門術語的定義和縮寫詞的原文。】
1
十、項目開發總結報告
1.4參考資料
【列出有關資料的作者、標題、編號、發表日期、出版單位或資料來源,可包括:a.項目經核準的計劃任務書、合同或上級機關的批文;b.項目開發計劃;c.需求規格說明書;d.概要設計說明書;e.詳細設計說明書;f.用戶操作手冊;g.測試計劃;h.測試分析報告;
i.本報告引用的其他資料、采用的開發標準或開發規范。】
2.開發結果
2.1產品
【可包括:
a.列出各部分的程序名稱、源程序行數(包括注釋行)或目標程序字節數及程序總計數量、
存儲形式;
b.產品文檔名稱等。】
2.2主要功能及性能2.3所用工時
【按人員的不同層次分別計時。】
2.4所用機時
【按所用計算機機型分別計時。】
2.5進度
【給出計劃進度與實際進度的對比。】
2
十、項目開發總結報告
2.6費用
3.評價
3.1生產率評價
【如平均每人每月生產的源程序行數、文檔的字數等。】
3.2技術方案評價3.3產品質量評價
4.經驗與教訓
3




