版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)論文(設(shè)計(jì))</b></p><p> 題 目(中文): 手機(jī)待辦事項(xiàng)系統(tǒng)的設(shè)計(jì)和實(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è)計(jì)方法和編程語(yǔ)言3</p><p> 1.1 面向?qū)ο?</p><p> 1.2 C++語(yǔ)言
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è)計(jì)與實(shí)現(xiàn)7</p><p> 3.1系統(tǒng)的總體設(shè)計(jì)7</p><p> 3.1.1 類簡(jiǎn)介7</p><p> 3.2 系統(tǒng)的用戶界面設(shè)計(jì)7</p><p> 3.2
5、系統(tǒng)開發(fā)環(huán)境10</p><p> 3.3 代碼實(shí)現(xiàn)11</p><p> 3.3.1 主界面類CTodoEngine11</p><p> 3.3.2 提供用戶輸入界面類 NumericEditorForm13</p><p> 4 系統(tǒng)的測(cè)試與維護(hù)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è)計(jì)與實(shí)現(xiàn)的體會(huì)21</p><p><b> 6 總結(jié)22</b></p><p><b> 參考文獻(xiàn)23</b></p><p><b> 致 謝24</b></p><p> 手機(jī)待辦事項(xiàng)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)</p><p&
8、gt;<b> 摘 要</b></p><p> 本設(shè)計(jì)開發(fā)了一個(gè)手機(jī)軟件系統(tǒng),采用Symbian OS的手機(jī)應(yīng)用軟件開發(fā)平臺(tái)。該系統(tǒng)針對(duì)手機(jī)容易失竊和損壞的問(wèn)題,增加服務(wù)器端備份的機(jī)制,以確保信息的可恢復(fù)性和安全性。整個(gè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)運(yùn)用了Symbian的各種主要技術(shù),包括描述符、二階段構(gòu)造、異常處理(清理?xiàng)#⑽募鎯?chǔ)技術(shù)、數(shù)據(jù)讀寫流、Socket編程等。本設(shè)計(jì)的底層開發(fā)語(yǔ)言是C+
9、+,在整個(gè)設(shè)計(jì)和開發(fā)的過(guò)程中都貫穿了面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,本系統(tǒng)很好的應(yīng)用封裝性和類與類之間的組合關(guān)系,從而增強(qiáng)了整個(gè)系統(tǒng)的可維護(hù)性和可擴(kuò)展性,使得系統(tǒng)功能擴(kuò)展和代碼維護(hù)更加方便。</p><p> 【關(guān)鍵詞】 手機(jī) 待辦事項(xiàng) 系統(tǒng) 設(shè)計(jì) 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> 手機(jī)在未來(lái)的信息時(shí)代的作用將會(huì)是顯巨的,它在人們未來(lái)的生活中會(huì)扮演著越來(lái)越重要的角色;同樣,它也會(huì)帶來(lái)許多行業(yè)的興起和發(fā)展,如手機(jī)軟件、手機(jī)服務(wù)、手機(jī)硬件等。</p><p> 從1876年貝爾發(fā)明電話以來(lái),經(jīng)歷了長(zhǎng)達(dá)一個(gè)多世紀(jì)的發(fā)展,電話通訊服務(wù)
14、已走進(jìn)了千家萬(wàn)戶,成為國(guó)家經(jīng)濟(jì)建設(shè)、社會(huì)生活和人們交流信息所不可缺少的重要工具。在最近二十年來(lái),電話技術(shù)和業(yè)務(wù)發(fā)生了巨大變化,通信的地點(diǎn)由固定方式轉(zhuǎn)向移動(dòng)方式。</p><p> 移動(dòng)通訊的迅猛發(fā)展,使現(xiàn)代生活節(jié)奏越來(lái)越快,移動(dòng)通訊產(chǎn)品的更新?lián)Q代和市場(chǎng)爭(zhēng)奪戰(zhàn)也愈演愈烈。</p><p> 下面我們將會(huì)以介紹移動(dòng)電話產(chǎn)品的方式對(duì)中國(guó)手機(jī)發(fā)展的歷史做出詳細(xì)的闡述。中國(guó)手機(jī)發(fā)展歷程大致可以分
15、為模擬手機(jī)時(shí)代、GSM時(shí)代、2.5G時(shí)代和3G時(shí)代,其中2.5G和3G代表著中國(guó)手機(jī)的發(fā)展趨勢(shì),因?yàn)槟壳吧形赐耆ㄐ?,在此暫不詳述?lt;/p><p> 中國(guó)的模擬手機(jī)時(shí)代,大概可以從1987年中國(guó)移動(dòng)通信集團(tuán)公司開始運(yùn)營(yíng)900MHz模擬移動(dòng)電話業(yè)務(wù)算起,到2001年6月30日,中國(guó)移動(dòng)通信集團(tuán)公司完全停止模擬移動(dòng)電話網(wǎng)客戶的國(guó)際、國(guó)內(nèi)漫游業(yè)務(wù)截止。模擬移動(dòng)電話系統(tǒng)主要采用模擬和頻分多址(FDMA)技術(shù),屬于第一
16、代移動(dòng)通信技術(shù)。凡號(hào)碼以“9”字開頭的手機(jī)都屬模擬網(wǎng)。模擬蜂窩移動(dòng)電話通過(guò)電波所傳輸?shù)男盘?hào)模擬人講話聲音的高低起伏,因此這種通信方式被稱為“模擬方式”。模擬移動(dòng)電話系統(tǒng)的質(zhì)量完全可以與固定電話媲美,使通話雙方能夠清晰地聽出對(duì)方的聲音。但模擬移動(dòng)通信與數(shù)字移動(dòng)通信相比保密性較差,極易被并機(jī)盜打;只能實(shí)現(xiàn)話音業(yè)務(wù),無(wú)法提供豐富多彩的增值業(yè)務(wù);網(wǎng)絡(luò)覆蓋范圍小且漫游功能差;模擬手機(jī)體積大、重量沉、樣式陳舊,加之手機(jī)供應(yīng)商早已停止生產(chǎn)模擬手機(jī),使
17、模擬手機(jī)的維修與更新受到嚴(yán)重制約。中國(guó)移動(dòng)通信集團(tuán)公司將于2001年12月31日后關(guān)閉模擬移動(dòng)電話網(wǎng),停止經(jīng)營(yíng)模擬移動(dòng)電話業(yè)務(wù)。20世紀(jì)80年代,全球移動(dòng)電話業(yè)務(wù)發(fā)展非常迅猛。80年代后期,全球使用無(wú)線電話終端的用戶數(shù)年增長(zhǎng)率為40%,遠(yuǎn)遠(yuǎn)超過(guò)同期有線電話用戶的年增長(zhǎng)率。在90年代前幾年中,無(wú)線尋</p><p> 雖然如此,相對(duì)于電腦而言,手機(jī)的軟件以及服務(wù)提供商則相對(duì)匱乏很多,這既是一個(gè)缺陷,也是一個(gè)機(jī)會(huì)。
18、對(duì)軟件而言,裝載在手機(jī)上的最底層的同樣也是操作系統(tǒng),然后在操作系統(tǒng)的基礎(chǔ)上安裝應(yīng)用軟件。目前市場(chǎng)上主流的手機(jī)操作系統(tǒng)有3種:Symbian OS , Windows Mobile以及LINUX智能操作系統(tǒng),其中Symbian OS占有了近70%的市場(chǎng),而Windows Mobile和LINUX智能操作系統(tǒng)平分了剩下的近30%的市場(chǎng)。但這并不能說(shuō)明手機(jī)操作系統(tǒng)的市場(chǎng)被Symbian OS所主宰,恰恰相反,這三者之間的競(jìng)爭(zhēng)異常激烈,并且各自
19、具有特色,各成一家,這是使得手機(jī)操作系統(tǒng)豐富多彩。然而,也正因?yàn)椴僮飨到y(tǒng)的不統(tǒng)一,使得應(yīng)用軟件在手機(jī)上的開發(fā)阻力遠(yuǎn)大于PC。雖說(shuō)阻力大,但是缺乏應(yīng)用軟件的支持,3G手機(jī)的優(yōu)勢(shì)就無(wú)法發(fā)揮。所以,3G手機(jī)和3G網(wǎng)絡(luò)推出后,手機(jī)應(yīng)用軟件會(huì)有著很好的發(fā)展。同樣,手機(jī)的服務(wù)提供商也是很稀缺的。PC的應(yīng)用是不乏服務(wù)提供者的,我們用QQ,騰訊公司為我們提供服務(wù);我們用網(wǎng)絡(luò)電視,網(wǎng)絡(luò)電視公司為我們提供資源;我們看視頻,優(yōu)酷公司為我們提供大量的流媒體,如
20、此等等。手機(jī)呢,除了移動(dòng)</p><p> 1 設(shè)計(jì)方法和編程語(yǔ)言</p><p><b> 1.1 面向?qū)ο?lt;/b></p><p> 面向?qū)ο笫且环N新興的程序設(shè)計(jì)方法,或者說(shuō)它是一種新的程序設(shè)計(jì)范型,其基本思想是使用對(duì)象、類、繼承、封裝和消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。 </p><p> 它是從現(xiàn)實(shí)世界中客觀
21、存在的事物(即對(duì)象)出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式,強(qiáng)調(diào)直接以問(wèn)題域(現(xiàn)實(shí)世界)中的事物為中心來(lái)思考問(wèn)題,認(rèn)識(shí)問(wèn)題,并根據(jù)這些事物的本質(zhì)特點(diǎn),把它們抽象地表示為系統(tǒng)中的對(duì)象,作為系統(tǒng)的基本構(gòu)成單位(而不是用一些與現(xiàn)實(shí)世界中的事物相關(guān)比較遠(yuǎn),并且沒(méi)有對(duì)應(yīng)關(guān)系的其它概念來(lái)構(gòu)造系統(tǒng))。這可以使系統(tǒng)直接地映射問(wèn)題域,保持問(wèn)題域中事物及其相互關(guān)系的本來(lái)面貌。 </p><p> 從程序設(shè)計(jì)
22、的角度來(lái)看,面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言必須有描述對(duì)象及其相互之間關(guān)系的語(yǔ)言成分。這些程序設(shè)計(jì)語(yǔ)言可以歸納為以下幾類:系統(tǒng)中一切皆為對(duì)象;對(duì)象是屬性及其操作的封裝體;對(duì)象可按其性質(zhì)劃分為類,對(duì)象成為類的實(shí)例;實(shí)例關(guān)系和繼承關(guān)系是對(duì)象之間的靜態(tài)關(guān)系;消息傳遞是對(duì)象之間動(dòng)態(tài)聯(lián)系的唯一形式,也是計(jì)算的唯一形式;方法是消息的序列。</p><p><b> 1.2 C++語(yǔ)言</b></p>
23、<p> C++是美國(guó)貝爾實(shí)驗(yàn)室的Bjarne Stroustrup博士在C語(yǔ)言基礎(chǔ)上,彌補(bǔ)了C語(yǔ)言存在的一些缺陷,擴(kuò)充了面向?qū)ο髾C(jī)制而形成的一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它除了繼承C語(yǔ)言的全部?jī)?yōu)點(diǎn)和功能外,還支持面向?qū)ο蟪绦蛟O(shè)計(jì).C++保持與C的兼容,可以使用C編寫的眾多的庫(kù)函數(shù);而且C++編寫的程序可讀性好,質(zhì)量高,運(yùn)行效率快;使用C++所開發(fā)的軟件在可重用性,可擴(kuò)充性,可維護(hù)性和可靠性等方面有了很大的提高,使得大型的
24、程序開發(fā)變得更加容易。</p><p> 1.3 Symbian OS與PC操作系統(tǒng)的區(qū)別</p><p> 手機(jī)的內(nèi)存較小,并且很少關(guān)機(jī)和啟動(dòng),所以首先Symbian OS必須非常注意內(nèi)存的泄漏,哪怕只有一個(gè)組件泄漏內(nèi)存,沒(méi)有多久之后用戶就會(huì)受到內(nèi)存耗盡的通知了,然后只能通過(guò)重啟來(lái)回收內(nèi)存。其次是對(duì)錯(cuò)誤的包容性,手機(jī)用戶比pc用戶更不能容忍需要重啟的錯(cuò)誤。因?yàn)槠胀ㄊ謾C(jī)用戶是把手機(jī)當(dāng)作
25、一個(gè)普通的電器, 而不是一臺(tái)電腦。所以我們要盡可能的在程序中捕捉錯(cuò)誤, 通過(guò)重試, 自動(dòng)關(guān)閉某個(gè)程序等手段來(lái)解決問(wèn)題。還有一點(diǎn)就是要注意電量的消耗,比如用戶n秒內(nèi)沒(méi)有操作的話就該自動(dòng)關(guān)閉背光。</p><p> 支持Symbian的手機(jī)cpu一般在100Mhz-160Mhz。相比今天的pc,這是一個(gè)非常低的速度。 所以當(dāng)我們開發(fā)一個(gè)對(duì)cpu要求較高的程序時(shí)就無(wú)法保證它在手機(jī)上和在pc模擬器上運(yùn)行一樣好。pc軟件
26、開發(fā)在近些年來(lái)有種不好的趨勢(shì):用更快的硬件代替更快的算法。當(dāng)然買更快的cpu比設(shè)計(jì)更快的算法容易多了,然而在手機(jī)這樣的設(shè)備上我們一定要追求算法的效率。</p><p> Symiban 手機(jī)中內(nèi)存的概念不同于pc。所有的程序,包括系統(tǒng)組件都在他們的儲(chǔ)存地址運(yùn)行, 而不是像PC那樣從硬盤提取到內(nèi)存然后運(yùn)行。Symbian OS本身在一個(gè)不可寫的20Mb ROM中,被映射為Z盤。還有一個(gè)RAM,是用來(lái)儲(chǔ)存臨時(shí)數(shù)據(jù)的
27、,被映射為C盤。一般Symbian 手機(jī)的RAM為16Mb。但是存在C盤中的數(shù)據(jù)在電池耗盡或者被拿出時(shí)就會(huì)丟失。</p><p> 手機(jī)的顯示屏幕普遍較小,而且不同的手機(jī)往往大小也不同, 所以我們熟悉的“所見(jiàn)即所得”模式設(shè)計(jì)界面就不適用了。 我們需要借助很多系統(tǒng)提供的框架來(lái)設(shè)計(jì),比如Tab Pane等。</p><p> 手機(jī)的輸入設(shè)備大大區(qū)別于PC,在PC上我們很大一部分輸入都是通過(guò)
28、鼠標(biāo)來(lái)完成的, 而手機(jī)則沒(méi)有鼠標(biāo)的概念。 只有少數(shù)的高端產(chǎn)品提供觸摸屏。 所以我們?cè)O(shè)計(jì)界面的時(shí)候就要考慮用戶需要按鍵少次才能完成這個(gè)操作?</p><p> 對(duì)于上述問(wèn)題,Symbian OS都經(jīng)過(guò)嚴(yán)格的考慮,能做到內(nèi)存幾乎不泄漏,這也是它的特點(diǎn)所在[1]。</p><p> 1.4 開發(fā)工具及環(huán)境</p><p><b> 硬件:pc機(jī)</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ā)過(guò)程中,許多
30、問(wèn)題都是由于收集、編寫、修改軟件需求過(guò)程中的失誤而產(chǎn)生的,諸如信息收集不全、功能不明確、交流不充分、文檔不完善、需求不斷變更等??梢赃@樣說(shuō),軟件項(xiàng)目中40%~60%的問(wèn)題都是在需求分析階段埋下的“禍根”。</p><p> 軟件需求是決定軟件開發(fā)是否成功的一個(gè)關(guān)鍵因素,一旦發(fā)生錯(cuò)誤,將會(huì)給整個(gè)軟件開發(fā)工作帶來(lái)極大的損害,并給以后的軟件維護(hù)帶來(lái)極大的困難。本系統(tǒng)很好的采集了用戶的需求,爭(zhēng)取最大限度的降低軟件需求的
31、風(fēng)險(xiǎn)。具體的需求包括:基本需求,功能需求和非功能需求等。</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è)計(jì)與實(shí)現(xiàn)</b></p><p> 3.1系統(tǒng)的總體設(shè)計(jì)</p><p> 本系統(tǒng)的
33、總體設(shè)計(jì)采用UML語(yǔ)言描述[2],具體的類圖如圖3-1</p><p><b> 圖3-1 總體設(shè)計(jì)</b></p><p><b> 3.1.1 類簡(jiǎn)介</b></p><p> 主要包括:后臺(tái)數(shù)據(jù)處理類CToDo,用于存儲(chǔ)來(lái)自手機(jī)輸入的數(shù)據(jù)。類CToDoList,用于管理ToDo對(duì)象。類CSynchToDoDb,
34、用于把ToDo對(duì)象輸入文件。類CHttpCommunication,用于連接網(wǎng)絡(luò),從而實(shí)現(xiàn)上傳和下載。類CTodoEngine是一個(gè)綜合的界面類,主要實(shí)現(xiàn)界面的繪制和管理。</p><p> 3.2 系統(tǒng)的用戶界面設(shè)計(jì)</p><p> 系統(tǒng)的界面從美觀,簡(jiǎn)潔,人性化等因素考慮,用戶很容易操作。比如說(shuō),主界面采用一個(gè)List形式,用戶對(duì)將要做的事情一目了然。而新增功能的界面則提供了很多
35、待辦事項(xiàng)的要素,像主題、地點(diǎn)、人物、鬧鈴提示、辦的事情的緊急情況、注釋等,可以很方便很全面的記錄將要辦的事情。當(dāng)做完某一項(xiàng)事情要?jiǎng)h除這項(xiàng)待辦事項(xiàng),系統(tǒng)會(huì)很人性化地問(wèn)你,“確定要?jiǎng)h除嗎?”</p><p> 界面包括主界面、查找界面、新增界面等,具體的形式如圖3-2.1、圖3-2.2和圖3-2.3</p><p><b> 圖3-2 主界面</b></p>
36、;<p> 上圖中左邊圖標(biāo)代表待辦事項(xiàng)的緊急情況,紅色表示非常急,藍(lán)色表示一般,綠色表示不急,可以等時(shí)間空下來(lái)再做。文字部分表示待辦事項(xiàng)的主題,用戶可以根據(jù)主題來(lái)知道要辦什么事情。用戶打開系統(tǒng),通過(guò)主界面就知道待辦事項(xiàng)的緊急程度,要辦什么事情。最下面的是手機(jī)的左右軟件,選擇左軟鍵就會(huì)彈出功能菜單,選擇右軟鍵直接退出系統(tǒng)。</p><p><b> 圖3-3 查找界面</b>
37、</p><p> 當(dāng)在主界面中選中了左軟鍵時(shí),選擇查找功能菜單,就會(huì)彈出上述對(duì)話框,這是一個(gè)組合對(duì)話框,它由兩個(gè)提供用戶輸入的文本編輯框和提供“是否”的選擇對(duì)話框組成,用戶輸入要查找的主題,按OK鍵開始查找,如沒(méi)找到,就彈出通知對(duì)話框“沒(méi)有找到?。 保祷刂鞑藛?。找到的話手機(jī)事件焦點(diǎn)移動(dòng)到找到的主題上面。查找支持模糊查詢,即只輸入極少的信息,系統(tǒng)會(huì)判斷輸入信息與主題的匹配程度高低,找到匹配程度高的。</
38、p><p><b> 圖3-4 新增界面</b></p><p> 圖3-2.3是在用戶選擇了功能菜單“新增”的情況下彈出的,這也是一個(gè)組合的對(duì)話框,依次是主題、時(shí)間、地點(diǎn)、人物、鬧鐘、緊急情況、注釋,主題描述待辦事項(xiàng)的名字。</p><p> 3.2 系統(tǒng)開發(fā)環(huán)境</p><p> 系統(tǒng)在開發(fā)時(shí)使用的主要工具是Mi
39、crosoft Visual C++ 6.0,其中許多的庫(kù)函數(shù)源自于Series 60 Developer Tools的8.0a版本。在開發(fā)中其實(shí)是新建的Symbian工程,然后用命令將其轉(zhuǎn)換成IDE(VC6)的工程。由于在將Symbian工程轉(zhuǎn)換成VC6的工程時(shí)所用的命令需要用到Active state ActivePerl 5.0,所以此軟件也是必裝的軟件。除了上述軟件,還需安裝JRE(Java)。 </p><
40、p><b> 3.3 代碼實(shí)現(xiàn)</b></p><p> 由于代碼過(guò)多且信息量不是太大,主要摘取界面部分代碼的重要部分加以說(shuō)明。</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)是一個(gè)更新列表函數(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. 保存來(lái)自用戶輸入的字符函數(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. 不保存來(lái)自用戶輸入的函數(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)的測(cè)試與維護(hù) </p><p> 本系統(tǒng)將采用黑盒測(cè)試法,其原理是:在測(cè)試時(shí),將程序看成是一個(gè)不能打開的盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測(cè)試者在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說(shuō)明書的
101、規(guī)定正常使用,程序能否適當(dāng)?shù)慕邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并保持外部信息的完整性[6]。下面對(duì)測(cè)試用例進(jìn)行介紹</p><p> 4.1 登入和退出系統(tǒng)</p><p> 表4.1登入和退出系統(tǒng)測(cè)試用例 </p><p><b> 4.2新增功能</b></p><p> 表4.2 新增功能測(cè)試用例<
102、;/p><p><b> 4.3 刪除功能</b></p><p> 表4.3 刪除功能測(cè)試用例</p><p><b> 4.4修改功能</b></p><p> 表4.4 修改功能測(cè)試用例</p><p><b> 4.5查找功能</b><
103、;/p><p> 表4.5 查找功能測(cè)試用例</p><p><b> 4.6下載功能</b></p><p> 表4.6 下載功能測(cè)試用例</p><p><b> 4.7上傳功能</b></p><p> 表4.7 上傳功能測(cè)試用例</p><p
104、> 系統(tǒng)測(cè)試時(shí)軟件開發(fā)中十分重要的一步,它是程序可靠性和健壯性的保證,軟件只有通過(guò)了可靠的測(cè)試,才能真正交付給用戶使用。本系統(tǒng)在測(cè)試時(shí)編寫了較完整的測(cè)試用例,以確保程序的可靠性。但由于個(gè)人能力問(wèn)題,系統(tǒng)中可能存在的錯(cuò)誤無(wú)法完全發(fā)現(xiàn)和排除,敬請(qǐng)?jiān)彙?lt;/p><p> 5 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的體會(huì)</p><p> 在畢業(yè)設(shè)計(jì)的結(jié)尾,我最深刻的體會(huì)是面向?qū)ο笏枷氲膹?qiáng)大,一個(gè)用戶,一種
105、銷售策略,一條消息,或是某種算法,面向?qū)ο笏枷刖鶎⑵淇醋鳛橐环N對(duì)象。而每一種對(duì)象,都有其單獨(dú)的生命周期,誰(shuí)來(lái)創(chuàng)建它,誰(shuí)來(lái)銷毀它,它的內(nèi)在屬性,表現(xiàn)行為,以及它與外界之間的關(guān)系和集合,無(wú)不說(shuō)明它的強(qiáng)大。我們?cè)诙x對(duì)象 時(shí),就好比是在描述一個(gè)活生生的事物,需要定義該對(duì)象的自然屬性和社會(huì)屬性,限定它的內(nèi)涵與外延,勾勒出該對(duì)象的社會(huì)關(guān)系[7]。</p><p> 其次我體會(huì)最深的是Symbian中各種命名約定,它很好的
106、規(guī)范了我的程序代碼,增強(qiáng)了程序的可讀性,也慢慢改變我的編程習(xí)慣。</p><p><b> 6 總結(jié) </b></p><p> 本系統(tǒng)是在Symbian S60第二版與第三版上編寫的應(yīng)用程序,主要是運(yùn)行在手機(jī)客戶端。系統(tǒng)很實(shí)用,操作簡(jiǎn)單,運(yùn)用客戶端-服務(wù)器的思想架構(gòu)。本系統(tǒng)的核心功能主要分為兩個(gè)部分:其一是待辦事項(xiàng)的基本管理,包括待辦事項(xiàng)的增加、修改、刪除、查找
107、、分組等功能;另一個(gè)功能是待辦事項(xiàng)的同步管理,主要包括待辦事項(xiàng)的上傳備份和從服務(wù)器端備份的下載。系統(tǒng)可以幫助人們更好的管理自己的出行行程,保護(hù)用戶的隱私。而當(dāng)手機(jī)丟失時(shí),用戶也不必為忘記行程而煩惱了,本系統(tǒng)提供上傳功能,只要把行程上傳到網(wǎng)上,隨時(shí)隨地都可以下載。值得一提的是,用戶使用本系統(tǒng)時(shí)只要簡(jiǎn)單的輸入就可以保存待辦事項(xiàng)的各項(xiàng)基本要點(diǎn),而且要點(diǎn)很全面,很大的方便了生活。</p><p><b> 參
108、考文獻(xiàn)</b></p><p> [1] Leigh Edwards. Developing Series 60 Applications [M] . New York: Addison-Wesley Professional, 2004: 263-316.</p><p> [2] 王強(qiáng).UML系統(tǒng)分析設(shè)計(jì)[M].北京:高等教育出版社, 2005年:P13-P1
109、36</p><p> [3] (美) Richard Harrison. Symbian OS C++手機(jī)應(yīng)用開發(fā) (第2卷)[M] . 北京: 人民郵電出版社, 2005: 36-235.</p><p> [4] 唐策善. 數(shù)據(jù)結(jié)構(gòu)-用C語(yǔ)言描述[M] . 北京: 高等教育出版社, 2004: 24-218.</p><p> [5] 馬健. 智能手機(jī)操
110、作系統(tǒng)編程 : Symbian及60系列[M] . 北京: 科學(xué)出版社, 2005: 114-178.</p><p> [6] 宋家廣. 軟件工程[M]. 北京:高等教育出版設(shè),2005:71-220.</p><p> [7] 譚浩強(qiáng). C++程序設(shè)計(jì)(第二版)[M]. 北京: 清華大學(xué)出版社, 2003: 143-296.</p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 月度待辦事項(xiàng)登記表
- 畢業(yè)設(shè)計(jì)-基于jsp的手機(jī)營(yíng)銷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 采購(gòu)中心綜合管理處待辦事項(xiàng)
- 手機(jī)電子商城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--手機(jī)遙控器的設(shè)計(jì)與實(shí)現(xiàn)(手機(jī)端)
- 教師評(píng)價(jià)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 基于安卓的待辦事項(xiàng)管理系統(tǒng)作品(陳武輝)(20140122)
- 手機(jī)造型的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于智能手機(jī)通用教學(xué)互動(dòng)系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----vb書店管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---手機(jī)外殼設(shè)計(jì)
- 智能家居手機(jī)app的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)---手機(jī)外殼設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----vb書店管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---gsm手機(jī)控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)選題系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---手機(jī)銷售管理系統(tǒng)的設(shè)計(jì)與開發(fā)
- 銀行設(shè)備管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 網(wǎng)絡(luò)圖書銷售系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 手機(jī)殼畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論