項(xiàng)目開發(fā)實(shí)訓(xùn)心得
物流信息管理開發(fā)項(xiàng)目實(shí)訓(xùn)報(bào)告
實(shí)習(xí)時(shí)間:201*.5.7--201*.5.18實(shí)習(xí)地點(diǎn):教學(xué)樓九樓/電子閱覽室專業(yè):工商企業(yè)管理(郵政物流)
姓名:易佳樂學(xué)號(hào):11號(hào)實(shí)訓(xùn)指導(dǎo)老師:鄧雪寧
(1)實(shí)訓(xùn)基本概況
實(shí)訓(xùn)項(xiàng)目名稱:物流管理信息系統(tǒng)開發(fā)項(xiàng)目
實(shí)訓(xùn)目的:通過項(xiàng)目管理和物流管理信息系統(tǒng)的實(shí)訓(xùn),使能將所學(xué)的項(xiàng)目管理和物流管理信息系統(tǒng)專業(yè)知識(shí)和理論能夠和實(shí)踐結(jié)合起來,從而使所掌握的項(xiàng)目與管理信息系統(tǒng)專業(yè)知識(shí)更加扎實(shí),使之了解項(xiàng)目管理和管理信系統(tǒng)的現(xiàn)狀和需求,明確此課程學(xué)習(xí)的重點(diǎn),提高綜合運(yùn)用項(xiàng)目管理和管理信息系統(tǒng)專業(yè)知識(shí)的能力和水平。
要訓(xùn)要求:充分認(rèn)識(shí)到項(xiàng)目管理和管理信息系統(tǒng)的重要性,在實(shí)訓(xùn)過程中遵循老師的安排,主動(dòng)、獨(dú)立完成任務(wù),注重與團(tuán)隊(duì)的協(xié)作。
實(shí)訓(xùn)分為兩個(gè)階段:第一階段為項(xiàng)目方案的制定;第二階段為項(xiàng)目實(shí)施.
(2)實(shí)訓(xùn)感受:
在這次實(shí)訓(xùn)里面我們學(xué)到了很多也知道了了解了很少,明白了一個(gè)項(xiàng)目要開發(fā)出來的不容易!那么一個(gè)項(xiàng)目最重要的幾件事是什么呢?就讓我來說說吧:1)、需要建立需求調(diào)研
在項(xiàng)目確立后,就到了需求調(diào)研分析階段。
1.項(xiàng)目組對(duì)客戶的整體組織結(jié)構(gòu)、公司有關(guān)人員的關(guān)系、職責(zé)等如果沒有一個(gè)很好、足夠的了解掌握,這樣項(xiàng)目組就無法很好的完整的整理到客戶的需求、或者說客戶真實(shí)的功能需求,如此以來我們就為自己埋下了地雷,影響項(xiàng)目的開發(fā)周期,這就要求我們要與客戶搞好無論是工作上的還是生活上的朋友關(guān)系,要深入的去了解客戶需求。
2.我們要盡量的讓客戶也參與到項(xiàng)目的開發(fā)團(tuán)隊(duì)中來,也就是說我們要使客戶把自己也納入到項(xiàng)目的開發(fā)團(tuán)隊(duì)中來,如此一來,我們掌握客戶需求的真實(shí)性、可靠性就會(huì)大大的提高,也就不會(huì)為項(xiàng)目的后期功能開發(fā)埋下陷阱3.在需求調(diào)研過程中,如果缺乏足夠用戶參與,這樣的需求調(diào)研也是失敗的。很多程序員不愿參與到客戶的需求調(diào)研中去,為什么呢?很簡單,與客戶溝通不如與代碼溝通容易有意思。盡管這樣,我們還是必須用足夠多的時(shí)間去和客戶進(jìn)行溝通,了解他們真實(shí)的需求。很多用戶也是如此,他們自己也不愿意參與到項(xiàng)目的需求調(diào)研中來,為什么呢?需求調(diào)研有出去和朋友一塊爛漫對(duì)嗎。。。雖然現(xiàn)狀如此,我們還是要努力的使客戶參與到需求的調(diào)研中來。4.模糊需求,也就是模棱兩可是需求規(guī)格說明中最為可怕的問題。一是指諸多客戶對(duì)需求說明產(chǎn)生了不同的理解;一是指單個(gè)讀者能用不止一個(gè)方式來解釋某個(gè)需求說明。針對(duì)對(duì)這種情況,就要求我們的調(diào)研人員要能夠從多個(gè)角度來分析客戶的不同需求,整理出最終的需求與客戶確認(rèn),定出最終真實(shí)可靠的需求,我們絕不能憑借我們自己的單面理解來定立客戶的最終需求。5.在一個(gè)項(xiàng)目的開發(fā)中,文檔的書寫是極為中要的一項(xiàng)工作。因?yàn),某些文檔就是我們?cè)陂_發(fā)后期與客戶溝通的可尋依據(jù)、也是我們程序員在編碼過程中要用到的重要文檔。我們絕對(duì)不能認(rèn)為,憑借我們的大腦來記錄所有的開發(fā)需求。。。;即使,你說你是天才,你要用你那顆愛因斯坦的大腦來記錄所有的開發(fā)需求,那也是不可能的,人的精力總是有限的。這就要求我們?cè)谛枨笳{(diào)研中做好需求文檔的記錄和整理。
6.需求調(diào)研工具選擇,客戶一般對(duì)圖形還是比較感興趣的,所以我們?cè)谡{(diào)研過程中,我要盡量的采用圖形化界面來和客戶溝通需求。比如可以采用Rose工具,把客戶的意思轉(zhuǎn)換為用例圖、時(shí)序圖、協(xié)作圖、狀態(tài)圖、類圖等,使表達(dá)的意思更加直觀。這樣客戶會(huì)更快的進(jìn)行問題的實(shí)質(zhì)。
2)、要有一個(gè)很好的溝通,在其他行業(yè)中,人與人的之間的溝通只很重要的。項(xiàng)目開發(fā)也不例外,很好的溝通能夠加快項(xiàng)目的進(jìn)度,這就要求我們每一個(gè)開發(fā)人員要學(xué)會(huì)和善于溝通于客戶和同事之間。在一個(gè)項(xiàng)目的開發(fā)過程中,我們與客戶的溝通是一個(gè)不斷交流和溝通的過程。在開發(fā)到一定的階段,我們就需要和客戶溝通已有功能,盡量的去避免一些隱藏的問題,及時(shí)的發(fā)現(xiàn)問題,解決問題,從而按時(shí)或者提前完成項(xiàng)目的開發(fā)。
3)、再有就是做好工作的總結(jié),在項(xiàng)目進(jìn)行的過程中,我們要不斷去整理自己的工作情況和做好總結(jié)這樣以來,無論是在自己的技術(shù)還是其它方面,都會(huì)對(duì)我們有很大的提高,在長期的積累后,無論是我們個(gè)人能力,,還是我們的團(tuán)隊(duì)能力都會(huì)有很大的提高。
在這次實(shí)訓(xùn)中我學(xué)到了不少的東西,實(shí)訓(xùn)開始的第一天老師就給我們講解了我們之前沒有學(xué)的《項(xiàng)目管理》,然我們學(xué)習(xí)了項(xiàng)目管理的項(xiàng)目管理的定義、它的基本方法以及項(xiàng)目團(tuán)隊(duì)與溝通,有了這些基礎(chǔ)知識(shí)做了鋪墊,接下來我們就順利開始了物流信息管理項(xiàng)目開發(fā)的實(shí)訓(xùn)了。
剛開始我們進(jìn)行了分組,接著進(jìn)行項(xiàng)目選擇、立項(xiàng)、開發(fā)方案的制定,然后制定項(xiàng)目計(jì)劃書,緊接著進(jìn)行系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、然后系統(tǒng)的實(shí)施,在9在實(shí)訓(xùn)的過程中我學(xué)會(huì)了做里程碑計(jì)劃、組織管理機(jī)構(gòu)圖、wbs、責(zé)任分配表、人力資源計(jì)劃表以及費(fèi)用分解表等。我相信這些東西都是非常有用的,通過實(shí)訓(xùn)的具體操作我覺得不僅增長了我們的知識(shí)面,也加強(qiáng)了我們的動(dòng)手能力。
第二周在電子閱覽室進(jìn)行實(shí)訓(xùn),對(duì)上一周開發(fā)的項(xiàng)目進(jìn)行上機(jī)操作,并且開發(fā)出本組選擇的項(xiàng)目軟件,在軟件開發(fā)的過程中我學(xué)會(huì)了操作MicrosoftAccess這個(gè)工具,雖然在進(jìn)行開發(fā)的過程中遇到了很多困難和阻礙,但是我們這個(gè)團(tuán)隊(duì)的成員都始終團(tuán)結(jié),決不放棄,最后,我們把軟件開發(fā)出來了,大家都是興奮不已。
當(dāng)然不得不承認(rèn)在實(shí)訓(xùn)的過程中我們存在許多問題和不足,我們的問題是在沒有及時(shí)的去了解實(shí)訓(xùn)重要用到的知識(shí)和項(xiàng)目開發(fā)時(shí)用到的一些計(jì)算機(jī)上的工具,使我們?cè)陧?xiàng)目開發(fā)的過程中耽誤了相當(dāng)多的時(shí)間,還有各方面的問題都要去請(qǐng)教老師。當(dāng)然我們主要的是以前沒有接觸到相關(guān)的課程,也沒有做相關(guān)的實(shí)訓(xùn),只是這一學(xué)期對(duì)物流信息管理在進(jìn)行簡單的學(xué)習(xí),所以對(duì)于與物流信息管理的項(xiàng)目開發(fā)我們剛開始時(shí)是根本就是“丈二和尚--摸不著頭腦”,但是慢慢地經(jīng)過一兩天的實(shí)訓(xùn)我么開始找到了感覺,并且產(chǎn)生了很大的興趣,我們就開始走上正軌,開始跟著老師的思路一步一步的走下來,整個(gè)流程還是相當(dāng)?shù)那逦亍?/p>
這次實(shí)訓(xùn)給我的最大的感受是一個(gè)好的、成功的團(tuán)隊(duì)必須團(tuán)結(jié),每個(gè)人都要有責(zé)任感,有協(xié)作精神,始終想著共同的目標(biāo)去努力。我自己也是我覺得自己有的時(shí)候好夠努力,通過實(shí)訓(xùn)我也培養(yǎng)了自己的責(zé)任感,加強(qiáng)了與同學(xué)們之間的交流,從而增進(jìn)了與同學(xué)們之間的友誼,我也學(xué)會(huì)了很多專業(yè)的知識(shí),比如,利用visio制作組織管理機(jī)構(gòu)圖,利用Access開發(fā)我們物流倉儲(chǔ)管理信息系統(tǒng),我相信這次實(shí)訓(xùn)讓我學(xué)到的東西將是以后我工作中相當(dāng)重要的知識(shí)。
(3)實(shí)訓(xùn)教訓(xùn):
1).在進(jìn)行分配之前先要學(xué)習(xí)相關(guān)的知識(shí),明白自己在干什么,會(huì)干什么,
能否完成相應(yīng)的功能。
2).每個(gè)人都必須按照規(guī)劃的要求,提供完全合乎要求的接口,以提高系統(tǒng)整個(gè)工程的進(jìn)度。
3).在整個(gè)過程中,大家要多多溝通,以保證信息的高度共享性,這樣可以極高的加快開發(fā)的進(jìn)展速度。
擴(kuò)展閱讀:《Android項(xiàng)目開發(fā)實(shí)訓(xùn)》項(xiàng)目總結(jié)報(bào)告
實(shí)訓(xùn)報(bào)告
姓名:祝新學(xué)號(hào):1144131專業(yè):軟件技術(shù)課程名稱:android實(shí)訓(xùn)項(xiàng)目名稱:鬧鈴指導(dǎo)教師:王皓實(shí)訓(xùn)日期:201*年10月28日至201*年1月2日
201*年1月2日
Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
目錄
第一章概述..................................................................................................................1第二章需求分析..........................................................................................................2
2.1項(xiàng)目背景.........................................................................................................22.2項(xiàng)目需求.........................................................................................................2第三章相關(guān)技術(shù)..........................................................................................................3
3.1Adnroid平臺(tái)介紹..........................................................................................33.2關(guān)鍵技術(shù)研究.................................................................................................3第四章概要設(shè)計(jì)..........................................................................................................4
4.1系統(tǒng)體系結(jié)構(gòu)...............................................................................................44.2用戶界面設(shè)計(jì)..................................................................................................4第五章詳細(xì)設(shè)計(jì)..........................................................................................................6
5.1添加鬧鈴功能模塊.........................................................................................6第六章結(jié)論................................................................................................................16
Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
第一章概述
本課題要求:設(shè)計(jì)一個(gè)基于Android的位置鬧鐘的軟件。實(shí)現(xiàn)的功能有:a)能在Android上利用其提供地相關(guān)API獲取位置信息。b)能通過界面設(shè)置鬧鐘的啟動(dòng)條件,包括入場(chǎng)與出場(chǎng)條件的設(shè)
c)建立后臺(tái)服務(wù)進(jìn)程,監(jiān)查位置信息,當(dāng)滿足觸發(fā)條件時(shí),鬧鐘響應(yīng)相應(yīng)事件。
需重點(diǎn)研究的關(guān)鍵問題:通過AndroidApi獲取位置信息,并在指定地點(diǎn)設(shè)置鬧鐘提醒。
解決思路:在界面里顯示當(dāng)前位置信息(經(jīng)緯度值),并輸入指定地點(diǎn)的經(jīng)緯度值,編程實(shí)現(xiàn)對(duì)位置信息實(shí)時(shí)更新,將兩者的經(jīng)緯度轉(zhuǎn)換為距離,如在誤差范圍內(nèi)則啟動(dòng)鬧鈴功能。
1Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
第二章需求分析
2.1項(xiàng)目背景
移動(dòng)互聯(lián)網(wǎng)時(shí)代的來臨,直接促進(jìn)了搭載智能操作系統(tǒng)、具有強(qiáng)大擴(kuò)展性的智能手機(jī)、平板電腦等移動(dòng)終端產(chǎn)業(yè)的蓬勃發(fā)展。搭載安卓操作系統(tǒng)的智能手機(jī)目前已經(jīng)成為市場(chǎng)上最炙手可熱的智能產(chǎn)品。開放的源代碼和零成本已經(jīng)讓安卓在全世界范圍內(nèi)受到青睞并迅速獲得了主要手機(jī)廠商和數(shù)百萬軟件開發(fā)者的支持,201*年安卓系統(tǒng)的市場(chǎng)份額已經(jīng)超過Symbian,成為全球第一大智能手機(jī)操作系統(tǒng)。
GPS產(chǎn)業(yè)從軍用轉(zhuǎn)入民用后,正在逐漸向普通消費(fèi)群體發(fā)展,作為使用終端的GPS產(chǎn)品正逐漸的深入人們生活得各個(gè)領(lǐng)域。GPS使用終端最主要的應(yīng)用方面主要體現(xiàn)在各種接收器,比如航空、航海用途的接收器,汽車導(dǎo)航設(shè)備,或用于登上、遠(yuǎn)足的手持接收器等終端產(chǎn)品。GPS接收終端的結(jié)構(gòu)包括,接收天線、芯片組、電池等,以及外部按鍵和液晶面板等相關(guān)零部件。
該課題實(shí)現(xiàn)在手機(jī)操作系統(tǒng)Android上將GPS導(dǎo)航和鬧鐘提醒兩個(gè)功能結(jié)合起來,攜帶方便,并能超越傳統(tǒng)的時(shí)間鬧鐘提醒功能,使用起來靈活、快捷、省心,是一款實(shí)用而且高端的手機(jī)軟件。
2.2項(xiàng)目需求
“位置鬧鐘”是一款提醒你地點(diǎn)的軟件,它通過地圖指定提醒的目的地,同時(shí)要求定位精確、使用過程可用Wifi(節(jié)省手機(jī)流量)和普通無網(wǎng)絡(luò)。
“位置鬧鐘”可以通過GPS定位和手機(jī)蜂窩基站定位兩種定位方式來監(jiān)測(cè)用戶所在位置。當(dāng)你靠近目的地的時(shí)候,“位置鬧鐘”會(huì)進(jìn)行鬧鐘提醒。而在封閉的空間中,如擁擠的公交車上,接收不到衛(wèi)星的GPS信號(hào),此時(shí),手機(jī)基站定位就可派上用場(chǎng)。雖然基站的定位精度比起GPS來說稍低,但完全可以滿足位置提醒的要求。此外,“位置鬧鐘”還可以后臺(tái)運(yùn)行,且能和普通鬧鐘一樣設(shè)置多個(gè)位置鬧鈴,有良好的人機(jī)交互界面,可對(duì)其編輯、啟用或禁用。
Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
第三章相關(guān)技術(shù)
3.1Adnroid平臺(tái)介紹
Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī)。201*年8月由Google收購注資。201*年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于201*年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。201*年第一季度,Android在全球的市場(chǎng)份額首次超過塞班系統(tǒng),躍居全球第一。201*年11月數(shù)據(jù)顯示,Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)76%的份額,中國市場(chǎng)占有率為90%。201*年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺(tái)。
3.2關(guān)鍵技術(shù)研究
應(yīng)用SQLLite數(shù)據(jù)庫:SQLite提供結(jié)構(gòu)化的數(shù)據(jù)存取。SQLite是一款輕型的
數(shù)據(jù)庫,它的設(shè)計(jì)目標(biāo)是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品使用了它,它占用的資源非常低。它能夠支持Windows/Linux/Unix等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如php,Java等,還有ODBC接口,同樣比起Mysql,PostgreSQL來講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個(gè)儲(chǔ)存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小,雖只有250KB但支持?jǐn)?shù)據(jù)庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數(shù)據(jù)庫。同時(shí)它還支持事務(wù)功能和并發(fā)處理等等。SQLite也是一套開放性的關(guān)聯(lián)式資料庫,其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。
Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
第四章概要設(shè)計(jì)
4.1系統(tǒng)體系結(jié)構(gòu)
系統(tǒng)旨在建立Android系統(tǒng)的鬧鐘,主要有如下幾個(gè)核心功能模塊如圖5所示。
節(jié)能功能添加鬧鈴、設(shè)置時(shí)間、重復(fù)等音樂、鬧鈴提醒方式圖片選取返回首頁主程序
圖5系統(tǒng)功能模塊圖
4.2用戶界面設(shè)計(jì)
通過小組討論用戶的界面如下:
4.2.1主頁面
4Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
4.2.2添加鬧鈴功能
4.2.3音樂清單
Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
第五章詳細(xì)設(shè)計(jì)
5.1添加鬧鈴功能模塊
具體實(shí)現(xiàn)代碼如下:/*
*Copyright(C)201*TheAndroidOpenSourceProject*
*LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat*
*-2.0*
*Unlessrequiredbyapplicablelaworagreedtoinwriting,software*distributedundertheLicenseisdistributedonan"ASIS"BASIS,*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
*SeetheLicenseforthespecificlanguagegoverningpermissionsand*limitationsundertheLicense.*/
packagecom.android.superdeskclock;
importjava.text.DateFormatSymbols;importjava.util.Calendar;
importandroid.content.Context;importandroid.database.Cursor;
importandroid.media.RingtoneManager;importandroid.net.Uri;
6Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
importandroid.os.Parcel;importandroid.os.Parcelable;
importandroid.provider.BaseColumns;
publicfinalclassAlarmimplementsParcelable{
////////////////////////////////Parcelableapis
//////////////////////////////
publicstaticfinalParcelable.CreatorCREATOR=newParcelable.Creator(){
publicAlarmcreateFromParcel(Parcelp){returnnewAlarm(p);}
publicAlarm[]newArray(intsize){returnnewAlarm[size];}};
publicintdescribeContents(){return0;}
publicvoidwriteToParcel(Parcelp,intflags){p.writeInt(id);
p.writeInt(enabled?1:0);p.writeInt(hour);p.writeInt(minutes);
p.writeInt(daysOfWeek.getCoded());p.writeLong(time);
p.writeInt(vibrate?1:0);p.writeString(label);
p.writeParcelable(alert,flags);p.writeInt(silent?1:0);
//新增
p.writeInt(times);p.writeInt(interval);}
////////////////////////////////endParcelableapis
//////////////////////////////
7Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
////////////////////////////////Columndefinitions
//////////////////////////////
publicstaticclassColumnsimplementsBaseColumns{/**
*Thecontent://styleURLforthistable*/
publicstaticfinalUriCONTENT_URI=
Uri.parse("content://com.android.superdeskclock/alarm");
/**
*Hourin24-hourlocaltime0-23.*Type:INTEGER*/
publicstaticfinalStringHOUR="hour";
/**
*Minutesinlocaltime0-59*Type:INTEGER*/
publicstaticfinalStringMINUTES="minutes";
/**
*Daysofweekcodedasinteger*Type:INTEGER*/
publicstaticfinalStringDAYS_OF_WEEK="daysofweek";
/**
*AlarmtimeinUTCmillisecondsfromtheepoch.*Type:INTEGER*/
publicstaticfinalStringALARM_TIME="alarmtime";
/**
*Trueifalarmisactive*Type:BOOLEAN*/
publicstaticfinalStringENABLED="enabled";
/**
*Trueifalarmshouldvibrate*Type:BOOLEAN
8Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
*/publicstaticfinalStringVIBRATE="vibrate";
/**
*Messagetoshowwhenalarmtriggers*Note:notcurrentlyused*Type:STRING*/
publicstaticfinalStringMESSAGE="message";
/**
*Audioalerttoplaywhenalarmtriggers*Type:STRING*/
publicstaticfinalStringALERT="alert";
//新增
publicstaticfinalStringTIMES="times";
publicstaticfinalStringINTERVAL="interval";
/**
*Thedefaultsortorderforthistable*/
publicstaticfinalStringDEFAULT_SORT_ORDER=HOUR+","+MINUTES+"ASC";
//Usedwhenfilteringenabledalarms.
publicstaticfinalStringWHERE_ENABLED=ENABLED+"=1";
staticfinalString[]ALARM_QUERY_COLUMNS={_ID,HOUR,MINUTES,DAYS_OF_WEEK,ALARM_TIME,ENABLED,VIBRATE,MESSAGE,ALERT//新增
,TIMES,INTERVAL};
/**
*Thesesavecallstocursor.getColumnIndexOrThrow()*THEYMUSTBEKEPTINSYNCWITHABOVEQUERYCOLUMNS*/
publicstaticfinalintALARM_ID_INDEX=0;publicstaticfinalintALARM_HOUR_INDEX=1;publicstaticfinalintALARM_MINUTES_INDEX=2;
publicstaticfinalintALARM_DAYS_OF_WEEK_INDEX=3;publicstaticfinalintALARM_TIME_INDEX=4;
9Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
publicstaticfinalintALARM_ENABLED_INDEX=5;publicstaticfinalintALARM_VIBRATE_INDEX=6;publicstaticfinalintALARM_MESSAGE_INDEX=7;publicstaticfinalintALARM_ALERT_INDEX=8;
//新增
publicstaticfinalintALARM_TIMES_INDEX=9;publicstaticfinalintALARM_INTERVAL_INDEX=10;}
////////////////////////////////Endcolumndefinitions
//////////////////////////////
//Publicfields
publicintid;
publicbooleanenabled;publicinthour;publicintminutes;publicDaysOfWeekdaysOfWeek;publiclongtime;publicbooleanvibrate;publicStringlabel;publicUrialert;publicbooleansilent;
//新增
publicinttimes;publicintinterval;
publicAlarm(Cursorc){
id=c.getInt(Columns.ALARM_ID_INDEX);
enabled=c.getInt(Columns.ALARM_ENABLED_INDEX)==1;hour=c.getInt(Columns.ALARM_HOUR_INDEX);
minutes=c.getInt(Columns.ALARM_MINUTES_INDEX);daysOfWeek=
DaysOfWeek(c.getInt(Columns.ALARM_DAYS_OF_WEEK_INDEX));time=c.getLong(Columns.ALARM_TIME_INDEX);
vibrate=c.getInt(Columns.ALARM_VIBRATE_INDEX)==1;label=c.getString(Columns.ALARM_MESSAGE_INDEX);
//新增
times=c.getInt(Columns.ALARM_TIMES_INDEX);
interval=c.getInt(Columns.ALARM_INTERVAL_INDEX);
-10-
10newAndroid項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
StringalertString=c.getString(Columns.ALARM_ALERT_INDEX);if(Alarms.ALARM_ALERT_SILENT.equals(alertString)){if(Log.LOGV){
Log.v("Alarmismarkedassilent");}
silent=true;}else{
if(alertString!=null&&alertString.length()!=0){alert=Uri.parse(alertString);}
//Ifthedatabasealertisnulloritfailedtoparse,usethe
//defaultalert.if(alert==null){
alert=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);}}}
publicAlarm(Parcelp){id=p.readInt();
enabled=p.readInt()==1;hour=p.readInt();minutes=p.readInt();
daysOfWeek=newDaysOfWeek(p.readInt());time=p.readLong();
vibrate=p.readInt()==1;label=p.readString();
alert=(Uri)p.readParcelable(null);silent=p.readInt()==1;
//新增
times=p.readInt();interval=p.readInt();}
//Createsadefaultalarmatthecurrenttime.publicAlarm(){id=-1;
Calendarc=Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
11Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
hour=c.get(Calendar.HOUR_OF_DAY);minutes=c.get(Calendar.MINUTE);vibrate=true;
daysOfWeek=newDaysOfWeek(0);alert
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
//新增times=10;interval=0;}
publicStringgetLabelOrDefault(Contextcontext){if(label==null||label.length()==0){
returncontext.getString(R.string.default_label);}
returnlabel;}
/**Daysofweekcodeasasingleint.*0x00:noday*0x01:Monday*0x02:Tuesday*0x04:Wednesday*0x08:Thursday*0x10:Friday*0x20:Saturday*0x40:Sunday*/
staticfinalclassDaysOfWeek{
privatestaticint[]DAY_MAP=newint[]{Calendar.MONDAY,Calendar.TUESDAY,Calendar.WEDNESDAY,Calendar.THURSDAY,Calendar.FRIDAY,Calendar.SATURDAY,Calendar.SUNDAY,};
//BitmaskofallrepeatingdaysprivateintmDays;
12-12-
=Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
DaysOfWeek(intdays){mDays=days;}
publicStringtoString(Contextcontext,booleanshowNever){StringBuilderret=newStringBuilder();
//nodays
if(mDays==0){
returnshowNever?
context.getText(R.string.never).toString()"";
}//everyday
if(mDays==0x7f){return
context.getText(R.string.every_day).toString();}
//countselecteddays
intdayCount=0,days=mDays;while(days>0){
if((days&1)==1)dayCount++;days>>=1;}
//shortorlongform?
DateFormatSymbolsdfs=newDateFormatSymbols();String[]dayList=(dayCount>1)?dfs.getShortWeekdays():dfs.getWeekdays();
//selecteddays
for(inti=0;i<7;i++){
if((mDays&(10)ret.append(
context.getText(R.string.day_concat));}}
returnret.toString();
-13-
13:Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
}privatebooleanisSet(intday){
return((mDays&(10);}
publicvoidset(intday,booleanset){if(set){
mDays|=(1Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
inttoday=(c.get(Calendar.DAY_OF_WEEK)+5)%7;
intday=0;
intdayCount=0;
for(;dayCount<7;dayCount++){day=(today+dayCount)%7;if(isSet(day)){break;}}
returndayCount;}}}
-15-
Android項(xiàng)目開發(fā)實(shí)訓(xùn)總結(jié)報(bào)告
第六章結(jié)論
經(jīng)過累計(jì)一個(gè)多月的努力,基于Android平臺(tái)的位置鬧鐘軟件終于完成了。由于對(duì)Android濃厚的興趣引發(fā)了我對(duì)JAVA的好奇心,畢竟Android是基于JAVA的,雖然這個(gè)軟件的開發(fā)沒有達(dá)到老師的期望值,但是在老師和同學(xué)的幫助下,我還是慢慢摸索完成了這個(gè)軟件。
在這個(gè)過程中,我學(xué)會(huì)了很多知識(shí),比如Android環(huán)境的搭建和配置問題、GPS技術(shù)和Android的構(gòu)架和基本組建等等,同時(shí)我學(xué)會(huì)的最重要的一點(diǎn)是,要利用現(xiàn)有的資源去解決問題,在圖書館、在網(wǎng)絡(luò)上尋找答案,也可以請(qǐng)教老師或與同學(xué)相互討論。
雖然,這個(gè)軟件目前運(yùn)行良好,但是我認(rèn)為代碼的健壯還很差,在整個(gè)工程的構(gòu)思方面也不足,用戶操作界面還不夠靈活,這些問題還需要今后逐一解決。與此同時(shí),這個(gè)軟件還可以進(jìn)一步擴(kuò)展,例如“同時(shí)設(shè)置多個(gè)鬧鐘”、“信息分享”、“應(yīng)用推薦”等,使功能更加強(qiáng)大,帶給用戶更好的體驗(yàn)與便捷的生活服務(wù)。
16
友情提示:本文中關(guān)于《項(xiàng)目開發(fā)實(shí)訓(xùn)心得》給出的范例僅供您參考拓展思維使用,項(xiàng)目開發(fā)實(shí)訓(xùn)心得:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。