版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)論文(設(shè)計)</b></p><p> 題 目(中文): 手機待辦事項系統(tǒng)的設(shè)計和實現(xiàn) </p><p> ?。ㄓ⑽模?The Design and Implementation of To Do </p><p> List Sy
2、stem in Mobile Phone </p><p><b> 目 錄</b></p><p><b> 概述1</b></p><p> 1 設(shè)計方法和編程語言3</p><p> 1.1 面向?qū)ο?</p><p> 1.2 C++語言
3、3</p><p> 1.3 Symbian OS與PC操作系統(tǒng)的區(qū)別3</p><p> 1.4 開發(fā)工具及環(huán)境4</p><p><b> 2 需求分析5</b></p><p><b> 2.1基本需求5</b></p><p><b>
4、2.2功能需求5</b></p><p> 2. 3非功能需求6</p><p> 3系統(tǒng)設(shè)計與實現(xiàn)7</p><p> 3.1系統(tǒng)的總體設(shè)計7</p><p> 3.1.1 類簡介7</p><p> 3.2 系統(tǒng)的用戶界面設(shè)計7</p><p> 3.2
5、系統(tǒng)開發(fā)環(huán)境10</p><p> 3.3 代碼實現(xiàn)11</p><p> 3.3.1 主界面類CTodoEngine11</p><p> 3.3.2 提供用戶輸入界面類 NumericEditorForm13</p><p> 4 系統(tǒng)的測試與維護18</p><p> 4.1 登入和退出系統(tǒng)
6、18</p><p> 4.2新增功能18</p><p> 4.3 刪除功能18</p><p> 4.4修改功能19</p><p> 4.5查找功能19</p><p> 4.6下載功能19</p><p> 4.7上傳功能20</p><p&g
7、t; 5 系統(tǒng)設(shè)計與實現(xiàn)的體會21</p><p><b> 6 總結(jié)22</b></p><p><b> 參考文獻23</b></p><p><b> 致 謝24</b></p><p> 手機待辦事項系統(tǒng)的設(shè)計和實現(xiàn)</p><p&
8、gt;<b> 摘 要</b></p><p> 本設(shè)計開發(fā)了一個手機軟件系統(tǒng),采用Symbian OS的手機應(yīng)用軟件開發(fā)平臺。該系統(tǒng)針對手機容易失竊和損壞的問題,增加服務(wù)器端備份的機制,以確保信息的可恢復(fù)性和安全性。整個系統(tǒng)的設(shè)計與實現(xiàn)運用了Symbian的各種主要技術(shù),包括描述符、二階段構(gòu)造、異常處理(清理棧)、文件存儲技術(shù)、數(shù)據(jù)讀寫流、Socket編程等。本設(shè)計的底層開發(fā)語言是C+
9、+,在整個設(shè)計和開發(fā)的過程中都貫穿了面向?qū)ο蟪绦蛟O(shè)計的思想,本系統(tǒng)很好的應(yīng)用封裝性和類與類之間的組合關(guān)系,從而增強了整個系統(tǒng)的可維護性和可擴展性,使得系統(tǒng)功能擴展和代碼維護更加方便。</p><p> 【關(guān)鍵詞】 手機 待辦事項 系統(tǒng) 設(shè)計 Symbian</p><p> The Design and Implementation of To Do list System
10、in Mobile Phone </p><p><b> Abstract</b></p><p> This paper develops a mobile phone system used Symbian OS mobile applications software to development. Due to mobile phone be stole
11、n and damaged to the problem,this system increases server backup mechanism to ensure that the information could resume and safety. The whole system related to technology: descriptors, two-stage structure, exception handl
12、ing (cleanupstack), file store, read/write streams, Socket programming. The bottom language of system is C++, the entire design and development proce</p><p> 【Key Words】 Mobile Phone To Do List System
13、 Design Symbian</p><p><b> 概述</b></p><p> 手機在未來的信息時代的作用將會是顯巨的,它在人們未來的生活中會扮演著越來越重要的角色;同樣,它也會帶來許多行業(yè)的興起和發(fā)展,如手機軟件、手機服務(wù)、手機硬件等。</p><p> 從1876年貝爾發(fā)明電話以來,經(jīng)歷了長達一個多世紀(jì)的發(fā)展,電話通訊服務(wù)
14、已走進了千家萬戶,成為國家經(jīng)濟建設(shè)、社會生活和人們交流信息所不可缺少的重要工具。在最近二十年來,電話技術(shù)和業(yè)務(wù)發(fā)生了巨大變化,通信的地點由固定方式轉(zhuǎn)向移動方式。</p><p> 移動通訊的迅猛發(fā)展,使現(xiàn)代生活節(jié)奏越來越快,移動通訊產(chǎn)品的更新?lián)Q代和市場爭奪戰(zhàn)也愈演愈烈。</p><p> 下面我們將會以介紹移動電話產(chǎn)品的方式對中國手機發(fā)展的歷史做出詳細(xì)的闡述。中國手機發(fā)展歷程大致可以分
15、為模擬手機時代、GSM時代、2.5G時代和3G時代,其中2.5G和3G代表著中國手機的發(fā)展趨勢,因為目前尚未完全定型,在此暫不詳述。</p><p> 中國的模擬手機時代,大概可以從1987年中國移動通信集團公司開始運營900MHz模擬移動電話業(yè)務(wù)算起,到2001年6月30日,中國移動通信集團公司完全停止模擬移動電話網(wǎng)客戶的國際、國內(nèi)漫游業(yè)務(wù)截止。模擬移動電話系統(tǒng)主要采用模擬和頻分多址(FDMA)技術(shù),屬于第一
16、代移動通信技術(shù)。凡號碼以“9”字開頭的手機都屬模擬網(wǎng)。模擬蜂窩移動電話通過電波所傳輸?shù)男盘柲M人講話聲音的高低起伏,因此這種通信方式被稱為“模擬方式”。模擬移動電話系統(tǒng)的質(zhì)量完全可以與固定電話媲美,使通話雙方能夠清晰地聽出對方的聲音。但模擬移動通信與數(shù)字移動通信相比保密性較差,極易被并機盜打;只能實現(xiàn)話音業(yè)務(wù),無法提供豐富多彩的增值業(yè)務(wù);網(wǎng)絡(luò)覆蓋范圍小且漫游功能差;模擬手機體積大、重量沉、樣式陳舊,加之手機供應(yīng)商早已停止生產(chǎn)模擬手機,使
17、模擬手機的維修與更新受到嚴(yán)重制約。中國移動通信集團公司將于2001年12月31日后關(guān)閉模擬移動電話網(wǎng),停止經(jīng)營模擬移動電話業(yè)務(wù)。20世紀(jì)80年代,全球移動電話業(yè)務(wù)發(fā)展非常迅猛。80年代后期,全球使用無線電話終端的用戶數(shù)年增長率為40%,遠遠超過同期有線電話用戶的年增長率。在90年代前幾年中,無線尋</p><p> 雖然如此,相對于電腦而言,手機的軟件以及服務(wù)提供商則相對匱乏很多,這既是一個缺陷,也是一個機會。
18、對軟件而言,裝載在手機上的最底層的同樣也是操作系統(tǒng),然后在操作系統(tǒng)的基礎(chǔ)上安裝應(yīng)用軟件。目前市場上主流的手機操作系統(tǒng)有3種:Symbian OS , Windows Mobile以及LINUX智能操作系統(tǒng),其中Symbian OS占有了近70%的市場,而Windows Mobile和LINUX智能操作系統(tǒng)平分了剩下的近30%的市場。但這并不能說明手機操作系統(tǒng)的市場被Symbian OS所主宰,恰恰相反,這三者之間的競爭異常激烈,并且各自
19、具有特色,各成一家,這是使得手機操作系統(tǒng)豐富多彩。然而,也正因為操作系統(tǒng)的不統(tǒng)一,使得應(yīng)用軟件在手機上的開發(fā)阻力遠大于PC。雖說阻力大,但是缺乏應(yīng)用軟件的支持,3G手機的優(yōu)勢就無法發(fā)揮。所以,3G手機和3G網(wǎng)絡(luò)推出后,手機應(yīng)用軟件會有著很好的發(fā)展。同樣,手機的服務(wù)提供商也是很稀缺的。PC的應(yīng)用是不乏服務(wù)提供者的,我們用QQ,騰訊公司為我們提供服務(wù);我們用網(wǎng)絡(luò)電視,網(wǎng)絡(luò)電視公司為我們提供資源;我們看視頻,優(yōu)酷公司為我們提供大量的流媒體,如
20、此等等。手機呢,除了移動</p><p> 1 設(shè)計方法和編程語言</p><p><b> 1.1 面向?qū)ο?lt;/b></p><p> 面向?qū)ο笫且环N新興的程序設(shè)計方法,或者說它是一種新的程序設(shè)計范型,其基本思想是使用對象、類、繼承、封裝和消息等基本概念來進行程序設(shè)計。 </p><p> 它是從現(xiàn)實世界中客觀
21、存在的事物(即對象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運用人類的自然思維方式,強調(diào)直接以問題域(現(xiàn)實世界)中的事物為中心來思考問題,認(rèn)識問題,并根據(jù)這些事物的本質(zhì)特點,把它們抽象地表示為系統(tǒng)中的對象,作為系統(tǒng)的基本構(gòu)成單位(而不是用一些與現(xiàn)實世界中的事物相關(guān)比較遠,并且沒有對應(yīng)關(guān)系的其它概念來構(gòu)造系統(tǒng))。這可以使系統(tǒng)直接地映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌。 </p><p> 從程序設(shè)計
22、的角度來看,面向?qū)ο蟮某绦蛟O(shè)計語言必須有描述對象及其相互之間關(guān)系的語言成分。這些程序設(shè)計語言可以歸納為以下幾類:系統(tǒng)中一切皆為對象;對象是屬性及其操作的封裝體;對象可按其性質(zhì)劃分為類,對象成為類的實例;實例關(guān)系和繼承關(guān)系是對象之間的靜態(tài)關(guān)系;消息傳遞是對象之間動態(tài)聯(lián)系的唯一形式,也是計算的唯一形式;方法是消息的序列。</p><p><b> 1.2 C++語言</b></p>
23、<p> C++是美國貝爾實驗室的Bjarne Stroustrup博士在C語言基礎(chǔ)上,彌補了C語言存在的一些缺陷,擴充了面向?qū)ο髾C制而形成的一種面向?qū)ο蟮某绦蛟O(shè)計語言,它除了繼承C語言的全部優(yōu)點和功能外,還支持面向?qū)ο蟪绦蛟O(shè)計.C++保持與C的兼容,可以使用C編寫的眾多的庫函數(shù);而且C++編寫的程序可讀性好,質(zhì)量高,運行效率快;使用C++所開發(fā)的軟件在可重用性,可擴充性,可維護性和可靠性等方面有了很大的提高,使得大型的
24、程序開發(fā)變得更加容易。</p><p> 1.3 Symbian OS與PC操作系統(tǒng)的區(qū)別</p><p> 手機的內(nèi)存較小,并且很少關(guān)機和啟動,所以首先Symbian OS必須非常注意內(nèi)存的泄漏,哪怕只有一個組件泄漏內(nèi)存,沒有多久之后用戶就會受到內(nèi)存耗盡的通知了,然后只能通過重啟來回收內(nèi)存。其次是對錯誤的包容性,手機用戶比pc用戶更不能容忍需要重啟的錯誤。因為普通手機用戶是把手機當(dāng)作
25、一個普通的電器, 而不是一臺電腦。所以我們要盡可能的在程序中捕捉錯誤, 通過重試, 自動關(guān)閉某個程序等手段來解決問題。還有一點就是要注意電量的消耗,比如用戶n秒內(nèi)沒有操作的話就該自動關(guān)閉背光。</p><p> 支持Symbian的手機cpu一般在100Mhz-160Mhz。相比今天的pc,這是一個非常低的速度。 所以當(dāng)我們開發(fā)一個對cpu要求較高的程序時就無法保證它在手機上和在pc模擬器上運行一樣好。pc軟件
26、開發(fā)在近些年來有種不好的趨勢:用更快的硬件代替更快的算法。當(dāng)然買更快的cpu比設(shè)計更快的算法容易多了,然而在手機這樣的設(shè)備上我們一定要追求算法的效率。</p><p> Symiban 手機中內(nèi)存的概念不同于pc。所有的程序,包括系統(tǒng)組件都在他們的儲存地址運行, 而不是像PC那樣從硬盤提取到內(nèi)存然后運行。Symbian OS本身在一個不可寫的20Mb ROM中,被映射為Z盤。還有一個RAM,是用來儲存臨時數(shù)據(jù)的
27、,被映射為C盤。一般Symbian 手機的RAM為16Mb。但是存在C盤中的數(shù)據(jù)在電池耗盡或者被拿出時就會丟失。</p><p> 手機的顯示屏幕普遍較小,而且不同的手機往往大小也不同, 所以我們熟悉的“所見即所得”模式設(shè)計界面就不適用了。 我們需要借助很多系統(tǒng)提供的框架來設(shè)計,比如Tab Pane等。</p><p> 手機的輸入設(shè)備大大區(qū)別于PC,在PC上我們很大一部分輸入都是通過
28、鼠標(biāo)來完成的, 而手機則沒有鼠標(biāo)的概念。 只有少數(shù)的高端產(chǎn)品提供觸摸屏。 所以我們設(shè)計界面的時候就要考慮用戶需要按鍵少次才能完成這個操作?</p><p> 對于上述問題,Symbian OS都經(jīng)過嚴(yán)格的考慮,能做到內(nèi)存幾乎不泄漏,這也是它的特點所在[1]。</p><p> 1.4 開發(fā)工具及環(huán)境</p><p><b> 硬件:pc機</b
29、></p><p> 操作系統(tǒng):Window XP Professional</p><p> 軟件工具:Series 60 Developer Tools 2nd、 Microsoft Visual C++ 6.0 </p><p><b> 2 需求分析</b></p><p> 在軟件開發(fā)過程中,許多
30、問題都是由于收集、編寫、修改軟件需求過程中的失誤而產(chǎn)生的,諸如信息收集不全、功能不明確、交流不充分、文檔不完善、需求不斷變更等??梢赃@樣說,軟件項目中40%~60%的問題都是在需求分析階段埋下的“禍根”。</p><p> 軟件需求是決定軟件開發(fā)是否成功的一個關(guān)鍵因素,一旦發(fā)生錯誤,將會給整個軟件開發(fā)工作帶來極大的損害,并給以后的軟件維護帶來極大的困難。本系統(tǒng)很好的采集了用戶的需求,爭取最大限度的降低軟件需求的
31、風(fēng)險。具體的需求包括:基本需求,功能需求和非功能需求等。</p><p><b> 2.1基本需求</b></p><p><b> 表2-1 總體需求</b></p><p><b> 2.2功能需求</b></p><p><b> 表2-2 功能需求&l
32、t;/b></p><p><b> 2. 3非功能需求</b></p><p><b> 表2-3非功能需求</b></p><p><b> 3系統(tǒng)設(shè)計與實現(xiàn)</b></p><p> 3.1系統(tǒng)的總體設(shè)計</p><p> 本系統(tǒng)的
33、總體設(shè)計采用UML語言描述[2],具體的類圖如圖3-1</p><p><b> 圖3-1 總體設(shè)計</b></p><p><b> 3.1.1 類簡介</b></p><p> 主要包括:后臺數(shù)據(jù)處理類CToDo,用于存儲來自手機輸入的數(shù)據(jù)。類CToDoList,用于管理ToDo對象。類CSynchToDoDb,
34、用于把ToDo對象輸入文件。類CHttpCommunication,用于連接網(wǎng)絡(luò),從而實現(xiàn)上傳和下載。類CTodoEngine是一個綜合的界面類,主要實現(xiàn)界面的繪制和管理。</p><p> 3.2 系統(tǒng)的用戶界面設(shè)計</p><p> 系統(tǒng)的界面從美觀,簡潔,人性化等因素考慮,用戶很容易操作。比如說,主界面采用一個List形式,用戶對將要做的事情一目了然。而新增功能的界面則提供了很多
35、待辦事項的要素,像主題、地點、人物、鬧鈴提示、辦的事情的緊急情況、注釋等,可以很方便很全面的記錄將要辦的事情。當(dāng)做完某一項事情要刪除這項待辦事項,系統(tǒng)會很人性化地問你,“確定要刪除嗎?”</p><p> 界面包括主界面、查找界面、新增界面等,具體的形式如圖3-2.1、圖3-2.2和圖3-2.3</p><p><b> 圖3-2 主界面</b></p>
36、;<p> 上圖中左邊圖標(biāo)代表待辦事項的緊急情況,紅色表示非常急,藍色表示一般,綠色表示不急,可以等時間空下來再做。文字部分表示待辦事項的主題,用戶可以根據(jù)主題來知道要辦什么事情。用戶打開系統(tǒng),通過主界面就知道待辦事項的緊急程度,要辦什么事情。最下面的是手機的左右軟件,選擇左軟鍵就會彈出功能菜單,選擇右軟鍵直接退出系統(tǒng)。</p><p><b> 圖3-3 查找界面</b>
37、</p><p> 當(dāng)在主界面中選中了左軟鍵時,選擇查找功能菜單,就會彈出上述對話框,這是一個組合對話框,它由兩個提供用戶輸入的文本編輯框和提供“是否”的選擇對話框組成,用戶輸入要查找的主題,按OK鍵開始查找,如沒找到,就彈出通知對話框“沒有找到??!”,返回主菜單。找到的話手機事件焦點移動到找到的主題上面。查找支持模糊查詢,即只輸入極少的信息,系統(tǒng)會判斷輸入信息與主題的匹配程度高低,找到匹配程度高的。</
38、p><p><b> 圖3-4 新增界面</b></p><p> 圖3-2.3是在用戶選擇了功能菜單“新增”的情況下彈出的,這也是一個組合的對話框,依次是主題、時間、地點、人物、鬧鐘、緊急情況、注釋,主題描述待辦事項的名字。</p><p> 3.2 系統(tǒng)開發(fā)環(huán)境</p><p> 系統(tǒng)在開發(fā)時使用的主要工具是Mi
39、crosoft Visual C++ 6.0,其中許多的庫函數(shù)源自于Series 60 Developer Tools的8.0a版本。在開發(fā)中其實是新建的Symbian工程,然后用命令將其轉(zhuǎn)換成IDE(VC6)的工程。由于在將Symbian工程轉(zhuǎn)換成VC6的工程時所用的命令需要用到Active state ActivePerl 5.0,所以此軟件也是必裝的軟件。除了上述軟件,還需安裝JRE(Java)。 </p><
40、p><b> 3.3 代碼實現(xiàn)</b></p><p> 由于代碼過多且信息量不是太大,主要摘取界面部分代碼的重要部分加以說明。</p><p> 3.3.1 主界面類CTodoEngine</p><p> class CTodoEngine : public CCoeControl</p><p>&l
41、t;b> {</b></p><p><b> ……</b></p><p> public: // members</p><p> void NewTodoL();</p><p> void OpenTodoL();</p><p> void DeleteTo
42、doL();</p><p><b> ……</b></p><p> void Find();</p><p> void Sort(TBool aBool);</p><p><b> ……</b></p><p><b> };</b>&
43、lt;/p><p> 其中關(guān)鍵的方法如下所列:</p><p> 1. 新增功能函數(shù)NewToDoL()[3]</p><p> void NewToDoL()</p><p><b> {</b></p><p> TDateTime t1(1996,EJanuary,5,00,00,00
44、,000000);</p><p> TDateTime t2(2008,EJanuary,5,12,12,54,000000);</p><p> iTodo=CToDo::NewL(_L("default"),t1,t2,_L("default"),_L("default"),1,3,_L("default&qu
45、ot;));</p><p> TBool saveState = EFalse;</p><p> CNumericEditorForm* form = CNumericEditorForm::NewL(iTodo, saveState);</p><p> form->ExecuteLD(R_NUMERICEDITOR_FORM_DIALOG);&l
46、t;/p><p> if (saveState)</p><p><b> {</b></p><p> AddToDoToListL(iTodo);</p><p><b> }</b></p><p><b> else</b></p&g
47、t;<p><b> {</b></p><p> iEmployeesList->DrawNow();</p><p> delete iTodo;</p><p> iTodo=NULL;</p><p><b> }</b></p><p>
48、;<b> }</b></p><p> 2. 打開功能函數(shù)OpenTodoL()</p><p> void OpenTodoL()</p><p><b> {</b></p><p> CToDo* aTodo = iTodoDb->At(iEmployeesList->
49、CurrentItemIndex());</p><p> TBool saveState = EFalse;</p><p> CNumericEditorForm* form = CNumericEditorForm::NewL(aTodo, saveState);</p><p> form->ExecuteLD(R_NUMERICEDITOR_F
50、ORM_DIALOG);</p><p> if (saveState)</p><p><b> {</b></p><p> UpdateEmployeeInListL (aTodo);</p><p><b> }</b></p><p><b>
51、else</b></p><p><b> {</b></p><p> iEmployeesList->DrawNow();</p><p><b> }</b></p><p><b> }</b></p><p> 其中
52、UpdateEmployeeInListL(aTodo)是一個更新列表函數(shù),具體代碼如下:</p><p> void UpdateEmployeeInListL (CToDo* aTodo)</p><p><b> {</b></p><p> CTextListBoxModel* model = iEmployeesList->
53、;Model(); </p><p> model->SetOwnershipType (ELbmOwnsItemArray);</p><p> CDesCArray* itemArray = STATIC_CAST(CDesCArray*, model->ItemTextArray());</p><p> TInt index = iEmpl
54、oyeesList->CurrentItemIndex();</p><p> TPtrC item = (*itemArray)[index];</p><p> item.Set (ListStringFromEmployeeL(aTodo));</p><p> itemArray->Delete(index);</p><
55、;p> itemArray->InsertL(index, item);</p><p> iTodoDb->SaveL();</p><p> iEmployeesList->DrawNow();</p><p><b> }</b></p><p> 3. 刪除功能函數(shù)DeleteT
56、odoL()</p><p> void DeleteTodoL ()</p><p><b> {</b></p><p> CTextListBoxModel* model = iEmployeesList->Model(); // not taking ownership</p><p> mode
57、l->SetOwnershipType (ELbmOwnsItemArray);</p><p> CDesCArray* itemArray = STATIC_CAST(CDesCArray*, model->ItemTextArray());</p><p> TInt index = iEmployeesList->CurrentItemIndex();<
58、/p><p> CAknQueryDialog* saveGameQuery = CAknQueryDialog::NewL();</p><p> if (saveGameQuery->ExecuteLD(R_DATAQUERY_CONFIRMATION_QUERY))</p><p><b> {</b></p>&l
59、t;p> iTodoDb->RemoveToDo(index);</p><p> iTodoDb->SaveL();</p><p> itemArray->Delete(index);</p><p> iEmployeesList->SetCurrentItemIndex(iEmployeesList->TopIte
60、mIndex());</p><p> iEmployeesList->DrawNow();</p><p><b> }</b></p><p><b> }</b></p><p> 4. 查找功能函數(shù)Find()</p><p> void Find()
61、</p><p><b> {</b></p><p> TBuf<20> aTitle;</p><p> CAknTextQueryDialog* gameNameQuery = CAknTextQueryDialog::NewL(aTitle);</p><p> CleanupStack::P
62、ushL(gameNameQuery);</p><p> HBufC* prompt;</p><p> prompt = StringLoader::LoadLC(R_DATA_QUERY_PROMPT);</p><p> gameNameQuery->SetPromptL(*prompt);</p><p> Clean
63、upStack::PopAndDestroy(prompt);</p><p> CleanupStack::Pop(gameNameQuery);</p><p> if (gameNameQuery->ExecuteLD(R_DATAQUERY_DATA_QUERY))</p><p><b> {</b></p>
64、<p> TInt i=iTodoDb->Find(aTitle);</p><p><b> if (i>=0)</b></p><p><b> {</b></p><p> iEmployeesList->SetCurrentItemIndex(i);</p>&l
65、t;p> iEmployeesList->DrawNow();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> CAknInformationNote* note =
66、 new(ELeave) CAknInformationNote();</p><p> note->ExecuteLD(_L("not found!"));</p><p><b> }</b></p><p><b> }</b></p><p><b>
67、; }</b></p><p> 4. 排序功能函數(shù) Sort()[4]</p><p> void Sort(TBool aBool)</p><p><b> {</b></p><p> iTodoDb->Sort(aBool);</p><p> iTodoD
68、b->SaveL();</p><p><b> }</b></p><p> 3.3.2 提供用戶輸入界面類 NumericEditorForm</p><p> class CNumericEditorForm : public CAknForm</p><p><b> {</b>
69、;</p><p><b> ……</b></p><p> private: // from CAknForm</p><p> TBool SaveFormDataL();</p><p> void DoNotSaveFormDataL();</p><p> void PreLa
70、youtDynInitL();</p><p> private: // members</p><p> void LoadFormValuesFromDataL();</p><p><b> ……</b></p><p><b> };</b></p><p>
71、 關(guān)鍵的方法如下所列:</p><p> 1. 保存來自用戶輸入的字符函數(shù)SaveFormDataL()[5]</p><p> TBool SaveFormDataL()</p><p><b> {</b></p><p> iSaveState = EFalse;</p><p>
72、 CEikEdwin* nameEditor = static_cast<CEikEdwin*>(ControlOrNull(ENumericEditorDlgCIdEdwin));</p><p> if (nameEditor)</p><p><b> {</b></p><p> HBufC* buf=nameEdi
73、tor->GetTextInHBufL();</p><p> iTodo->SetSubject(*buf);</p><p> delete buf;</p><p><b> }</b></p><p> CEikDateEditor* dateEditor=static_cast<CEi
74、kDateEditor*>(ControlOrNull(ETodoFormDlgCIdDateEdwin));</p><p> if (dateEditor)</p><p><b> {</b></p><p> TTime time=dateEditor->Date();</p><p> iT
75、odo->SetDate1(time.DateTime());</p><p><b> }</b></p><p> CEikTimeEditor* TimeEditor=static_cast<CEikTimeEditor*>(ControlOrNull(ETodoFormDlgCIdTimeEdwin));</p><p
76、> if (TimeEditor)</p><p><b> {</b></p><p> TTime time1=TimeEditor->Time();</p><p> iTodo->SetDate2(time1.DateTime());</p><p><b> }</b
77、></p><p> CEikEdwin* PersonEditor = static_cast<CEikEdwin*>(ControlOrNull(ENumericEditorDlgCId1Edwin));</p><p> if (PersonEditor)</p><p><b> {</b></p>
78、<p> HBufC* buf=PersonEditor->GetTextInHBufL();</p><p> iTodo->SetPerson(*buf);</p><p> delete buf;</p><p><b> }</b></p><p> CEikEdwin* Loc
79、ationEditor = static_cast<CEikEdwin*>(ControlOrNull(ENumericEditorDlgCId2Edwin));</p><p> if (LocationEditor)</p><p><b> {</b></p><p> HBufC* buf=LocationEditor
80、->GetTextInHBufL();</p><p> iTodo->SetLocation(*buf);</p><p> delete buf;</p><p><b> }</b></p><p> CAknPopupFieldText* popupFieldText = static_cas
81、t <CAknPopupFieldText*> (ControlOrNull(EOpponentFormDlgCIdPopup));</p><p> if (popupFieldText)</p><p><b> {</b></p><p> iTodo->SetAlarm(popupFieldText->Cu
82、rrentValueIndex());</p><p><b> }</b></p><p> CAknPopupFieldText* popupFieldText1 = static_cast <CAknPopupFieldText*> (ControlOrNull(EOpponentFormDlgCIdPopup1));</p>
83、<p> if (popupFieldText1)</p><p><b> {</b></p><p> iTodo->SetPriority(popupFieldText1->CurrentValueIndex()+1);</p><p><b> }</b></p>&
84、lt;p> CEikEdwin* CommentEditor = static_cast<CEikEdwin*>(ControlOrNull(ENumericEditorDlgCId3Edwin));</p><p> if (CommentEditor)</p><p><b> {</b></p><p> HBu
85、fC* buf=CommentEditor->GetTextInHBufL();</p><p> iTodo->SetComments(*buf);</p><p> delete buf;</p><p><b> }</b></p><p> iSaveState = ETrue;</p&
86、gt;<p> return ETrue;</p><p><b> }</b></p><p> 2. 把數(shù)據(jù)載入系統(tǒng)的函數(shù)LoadFormValuesFromDataL()</p><p> void LoadFormValuesFromDataL()</p><p><b> {&
87、lt;/b></p><p> CEikEdwin* nameEditor = static_cast<CEikEdwin*>(ControlOrNull(ENumericEditorDlgCIdEdwin));</p><p> if (nameEditor)</p><p><b> {</b></p>
88、<p> nameEditor->SetTextL(iTodo->Subject());</p><p><b> }</b></p><p> CEikDateEditor* dateEditor=static_cast<CEikDateEditor*>(ControlOrNull(ETodoFormDlgCIdDateEd
89、win));</p><p> if (dateEditor)</p><p><b> {</b></p><p> dateEditor->SetDate(iTodo->Date1());</p><p><b> }</b></p><p> CE
90、ikTimeEditor* TimeEditor=static_cast<CEikTimeEditor*>(ControlOrNull(ETodoFormDlgCIdTimeEdwin));</p><p> if (TimeEditor)</p><p><b> {</b></p><p> TimeEditor->
91、SetTime(iTodo->Date2());</p><p><b> }</b></p><p> CEikEdwin* PersonEditor = static_cast<CEikEdwin*>(ControlOrNull(ENumericEditorDlgCId1Edwin));</p><p> if (P
92、ersonEditor)</p><p><b> {</b></p><p> PersonEditor->SetTextL(&(iTodo->Person()));</p><p><b> }</b></p><p> CEikEdwin* LocationEdit
93、or = static_cast<CEikEdwin*>(ControlOrNull(ENumericEditorDlgCId2Edwin));</p><p> if (LocationEditor)</p><p><b> {</b></p><p> LocationEditor->SetTextL(iTodo-
94、>Location());</p><p><b> }</b></p><p> CAknPopupFieldText* popupFieldText = static_cast <CAknPopupFieldText*> (ControlOrNull(EOpponentFormDlgCIdPopup));</p><p&g
95、t; if (popupFieldText)</p><p><b> {</b></p><p> popupFieldText->SetCurrentValueIndex (iTodo->Alarm());</p><p><b> }</b></p><p> CAknP
96、opupFieldText* popupFieldText1 = static_cast <CAknPopupFieldText*> (ControlOrNull(EOpponentFormDlgCIdPopup1));</p><p> if (popupFieldText1)</p><p><b> {</b></p><p&
97、gt; popupFieldText1->SetCurrentValueIndex (iTodo->Priority()-1);</p><p><b> }</b></p><p> CEikEdwin* CommentEditor = static_cast<CEikEdwin*>(ControlOrNull(ENumericEdit
98、orDlgCId3Edwin));</p><p> if (CommentEditor)</p><p><b> {</b></p><p> CommentEditor->SetTextL(iTodo->Comments());</p><p><b> }</b><
99、/p><p><b> }</b></p><p> 3. 不保存來自用戶輸入的函數(shù)DoNotSaveFormDataL()</p><p> void DoNotSaveFormDataL()</p><p><b> {</b></p><p> LoadFormV
100、aluesFromDataL(); //載入以前的數(shù)據(jù)</p><p><b> }</b></p><p> 4 系統(tǒng)的測試與維護 </p><p> 本系統(tǒng)將采用黑盒測試法,其原理是:在測試時,將程序看成是一個不能打開的盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規(guī)格說明書的
101、規(guī)定正常使用,程序能否適當(dāng)?shù)慕邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并保持外部信息的完整性[6]。下面對測試用例進行介紹</p><p> 4.1 登入和退出系統(tǒng)</p><p> 表4.1登入和退出系統(tǒng)測試用例 </p><p><b> 4.2新增功能</b></p><p> 表4.2 新增功能測試用例<
102、;/p><p><b> 4.3 刪除功能</b></p><p> 表4.3 刪除功能測試用例</p><p><b> 4.4修改功能</b></p><p> 表4.4 修改功能測試用例</p><p><b> 4.5查找功能</b><
103、;/p><p> 表4.5 查找功能測試用例</p><p><b> 4.6下載功能</b></p><p> 表4.6 下載功能測試用例</p><p><b> 4.7上傳功能</b></p><p> 表4.7 上傳功能測試用例</p><p
104、> 系統(tǒng)測試時軟件開發(fā)中十分重要的一步,它是程序可靠性和健壯性的保證,軟件只有通過了可靠的測試,才能真正交付給用戶使用。本系統(tǒng)在測試時編寫了較完整的測試用例,以確保程序的可靠性。但由于個人能力問題,系統(tǒng)中可能存在的錯誤無法完全發(fā)現(xiàn)和排除,敬請原諒。</p><p> 5 系統(tǒng)設(shè)計與實現(xiàn)的體會</p><p> 在畢業(yè)設(shè)計的結(jié)尾,我最深刻的體會是面向?qū)ο笏枷氲膹姶?,一個用戶,一種
105、銷售策略,一條消息,或是某種算法,面向?qū)ο笏枷刖鶎⑵淇醋鳛橐环N對象。而每一種對象,都有其單獨的生命周期,誰來創(chuàng)建它,誰來銷毀它,它的內(nèi)在屬性,表現(xiàn)行為,以及它與外界之間的關(guān)系和集合,無不說明它的強大。我們在定義對象 時,就好比是在描述一個活生生的事物,需要定義該對象的自然屬性和社會屬性,限定它的內(nèi)涵與外延,勾勒出該對象的社會關(guān)系[7]。</p><p> 其次我體會最深的是Symbian中各種命名約定,它很好的
106、規(guī)范了我的程序代碼,增強了程序的可讀性,也慢慢改變我的編程習(xí)慣。</p><p><b> 6 總結(jié) </b></p><p> 本系統(tǒng)是在Symbian S60第二版與第三版上編寫的應(yīng)用程序,主要是運行在手機客戶端。系統(tǒng)很實用,操作簡單,運用客戶端-服務(wù)器的思想架構(gòu)。本系統(tǒng)的核心功能主要分為兩個部分:其一是待辦事項的基本管理,包括待辦事項的增加、修改、刪除、查找
107、、分組等功能;另一個功能是待辦事項的同步管理,主要包括待辦事項的上傳備份和從服務(wù)器端備份的下載。系統(tǒng)可以幫助人們更好的管理自己的出行行程,保護用戶的隱私。而當(dāng)手機丟失時,用戶也不必為忘記行程而煩惱了,本系統(tǒng)提供上傳功能,只要把行程上傳到網(wǎng)上,隨時隨地都可以下載。值得一提的是,用戶使用本系統(tǒng)時只要簡單的輸入就可以保存待辦事項的各項基本要點,而且要點很全面,很大的方便了生活。</p><p><b> 參
108、考文獻</b></p><p> [1] Leigh Edwards. Developing Series 60 Applications [M] . New York: Addison-Wesley Professional, 2004: 263-316.</p><p> [2] 王強.UML系統(tǒng)分析設(shè)計[M].北京:高等教育出版社, 2005年:P13-P1
109、36</p><p> [3] (美) Richard Harrison. Symbian OS C++手機應(yīng)用開發(fā) (第2卷)[M] . 北京: 人民郵電出版社, 2005: 36-235.</p><p> [4] 唐策善. 數(shù)據(jù)結(jié)構(gòu)-用C語言描述[M] . 北京: 高等教育出版社, 2004: 24-218.</p><p> [5] 馬健. 智能手機操
110、作系統(tǒng)編程 : Symbian及60系列[M] . 北京: 科學(xué)出版社, 2005: 114-178.</p><p> [6] 宋家廣. 軟件工程[M]. 北京:高等教育出版設(shè),2005:71-220.</p><p> [7] 譚浩強. C++程序設(shè)計(第二版)[M]. 北京: 清華大學(xué)出版社, 2003: 143-296.</p><p><b>
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 月度待辦事項登記表
- 畢業(yè)設(shè)計-基于jsp的手機營銷系統(tǒng)的設(shè)計與實現(xiàn)
- 采購中心綜合管理處待辦事項
- 手機電子商城系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--手機遙控器的設(shè)計與實現(xiàn)(手機端)
- 教師評價系統(tǒng)的設(shè)計和實現(xiàn)畢業(yè)設(shè)計
- 基于安卓的待辦事項管理系統(tǒng)作品(陳武輝)(20140122)
- 手機造型的設(shè)計畢業(yè)設(shè)計
- 基于智能手機通用教學(xué)互動系統(tǒng)設(shè)計實現(xiàn)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-----vb書店管理系統(tǒng)設(shè)計和實現(xiàn)
- 畢業(yè)設(shè)計---手機外殼設(shè)計
- 智能家居手機app的設(shè)計與實現(xiàn)【畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計---手機外殼設(shè)計
- 畢業(yè)設(shè)計----vb書店管理系統(tǒng)設(shè)計和實現(xiàn)
- 畢業(yè)設(shè)計---gsm手機控制系統(tǒng)
- 畢業(yè)設(shè)計選題系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---手機銷售管理系統(tǒng)的設(shè)計與開發(fā)
- 銀行設(shè)備管理系統(tǒng)的設(shè)計和實現(xiàn)畢業(yè)設(shè)計
- 網(wǎng)絡(luò)圖書銷售系統(tǒng)的設(shè)計和實現(xiàn)【畢業(yè)設(shè)計】
- 手機殼畢業(yè)設(shè)計
評論
0/150
提交評論