
密級:保密期限:
碩士研究生學位論文
題目:基于Android平臺的CRM系統客戶端軟件的
研究與實現
學號:xxxxxx
姓名:xxxxxx
專業:計算機科學與技術
導師:xxxxxx
學院:軟件學院
2013年1月
獨創性(或創新性)聲明
本人聲明所呈交的論文是本人在導師指導下進行的研究工作及取得的研究
成果。盡我所知,除了文中特別加以標注和致謝中所羅列的內容以外,論文中不
包含其他人已經發表或撰寫過的研究成果,也不包含為獲得北京郵電大學或其他
教育機構的學位或證書而使用過的材料。與我一同工作的對本研究所做的任
何貢獻均已在論文中作了明確的說明并表示了謝意。
申請學位論文與資料若有不實之處,本人承擔一切相關責任。
本人簽名:日期:
關于論文使用授權的說明
本人完全了解北京郵電大學有關保留和使用學位論文的規定,即:研究生在
校攻讀學位期間論文工作的知識產權單位屬北京郵電大學。學校有權保留并向國
家有關部門或機構送交論文的復印件和磁盤,允許學位論文被查閱和借閱;學校
可以公布學位論文的全部或部分內容,可以允許采用影印、縮印或其它復制手段
保存、匯編學位論文。
本學位論文不屬于保密范圍,適用本授權書。
本人簽名:日期:
導師簽名:日期:
基于Android平臺的CRM系統客戶端軟件的研究與實現
摘要
隨著社會信息化進程的推進,信息在社會中的更新傳播速度也越
來越快,客戶的需求也在時刻的變化。這也就使得傳統的客戶關系管
理方式對信息的處理能力、響應速度相對滯后,影響企業的發展。針
對當前客戶關系管理的不足,并結合移動互聯網技術,本文設計并實
現了一款基于Android平臺的CRM(CustomerRelationship
Management,客戶關系管理)系統客戶端軟件,以滿足快速高效為
企業客戶提供服務的需求。
本文首先針對某企業CRM系統進行了需求分析,提出系統所支
持的九項業務:客戶管理、聯系人管理、銷售機會管理、訂單管理、
產品管理、線索管理、行動管理、知識庫管理和日程管理等,并進行
了需求功能的分解。其次,本文采用了C/S模式和MVC相結合的模
式,對CRM系統進行了結構設計,將系統劃分為表示層、業務邏輯
層、基礎服務層和數據層四層體系結構;并進行了功能模塊的劃分,
研究了功能模塊的業務處理流程,并對其進行了詳細設計與實現。最
后,對CRM客戶端軟件進行了功能和性能測試,測試結果表明客戶
端各個功能模塊運行良好并且業務處理高效。
本文通過對當前諸多企業移動應用的分析,對共有界面元素以及
底層功能進行開發設計,為其他功能提供了規范性的開發模式,使應
用開發周期大大減少,減輕了開發工作量,同時也使軟件質量得以保
證,方便后期維護。
綜上所述,本文研究、設計并實現的CRM系統客戶端軟件,具
有高效性、移動性、便捷性等特點,在有效解決當前客戶關系管理缺
陷的同時,幫助用戶開展各項業務活動,提高業務處理效率,保證企
業經營管理的正常進行。
關鍵詞:CRMAndroidMVC對象序列化
RESEARCHANDIMPLEMENTATIONOFANDROID
CLIENTSOFTWAREOFCRMSYSTEM
ABSTRACT
Withtheadvancementofsocialinformatization,thespeedofupdating
informationandinformationdisminationinsocietyisgettingfaster,sothedemand
sreasontraditionalcustomerrelationship
managementislaggingbehindrelativelyfortheinformationprocessingcapacityand
thespeedofrespon,ofthe
currentlackofcustomerrelationshipmanagement,andconnectingwiththemobile
Internettechnology,wedesignedandrealizedaCRM(CustomerRelationship
Management)ftwarecan
providetimelyrvicefortheenterpriscustomerrapidlyandefficiently.
Firstly,inviewofthedemandanalysisoftheCRMsystemofacertainenterpri,
weproposninervicesthatthesystemsupportingfor,theyarecustomers
management,contactsmanagement,salesopportunitymanagement,orders
management,productsmanagement,cluesmanagement,actionsmanagement,the
knowledgebamanagement,schedulemanagementandsoon,andatthesametime
ly,wedesignthestructurefortheCRM
system,usingthemodelthatcombiningC/temisdivided
intofour-layerstructure:theprentationlayer,businesslogiclayer,basicrvices
layeranddatalayer;andwealsodividesfunctionmodule,analyzeachmodule
businessprocessingprocedureofitsfivefunctionmodules,anddesignsand
y,badonthefunctionand
performancetestontheCRMsystemandtheclient,itverifiesthegoodoperationof
eachfunctionalmoduleandtheefficiencyofbusinessprocessing.
Badontheanalysisofthecurrententerprimobileapplication,wedesigned
UIinterfaceelementandbottomfunctionsdevelopment,whichprovidesthe
developmentmodeshortenstheapplicationdevelopmentcyclegreatly,andreduces
thedevelopmentworkload;meanwhilethequalityofthesoftwarecanbeensured
givingconveniencetothelatermaintenance.
Tosumup,theCRMsystemclientsoftwarethatwediscusd,designedand
implementedisofhighefficiency,otonlysolvethe
currentdefectsofthecustomerrelationshipmanagementeffectively,butalsohelpthe
urtocarryoutvariousbusinessactivities,improvetheprocessingefficiency,and
ensuretheenterprimanagementworkingregularly.
KEYWORDS:CRM,Android,MVC,ObjectSerialization
i
目錄
第一章緒論..............................................................................................................1
1.1課題研究背景.....................................................................................................1
1.2課題研究目的和意義.........................................................................................2
1.3課題研究現狀.....................................................................................................3
1.4課題研究內容及主要工作.................................................................................3
1.5論文結構.............................................................................................................4
第二章相關技術介紹..............................................................................................6
2.1客戶關系管理相關概念.....................................................................................6
2.1.1客戶關系管理...............................................................................................6
2.1.2客戶關系管理移動應用系統解決的問題及思路.......................................6
2.2Android操作系統介紹........................................................................................7
2.2.1Android系統的特點.....................................................................................7
2.2.2Android的系統架構.....................................................................................8
2.2.3Android四大組件.......................................................................................10
2.3DES加解密技術................................................................................................11
2.4Java對象序列化技術........................................................................................12
2.5本章小結...........................................................................................................12
第三章系統需求分析............................................................................................13
3.1功能需求分析...................................................................................................13
3.1.1客戶管理功能.............................................................................................13
3.1.2聯系人管理功能.........................................................................................14
3.1.3線索管理功能.............................................................................................15
3.1.4銷售訂單管理功能.....................................................................................16
3.1.5行動管理功能.............................................................................................17
3.1.6其他功能.....................................................................................................19
3.2非功能性需求分析...........................................................................................19
3.2.1端到端業務處理響應時間.........................................................................19
3.2.2安全性.........................................................................................................20
3.2.3易用性需求.................................................................................................20
3.3本章小結...........................................................................................................20
ii
第四章系統設計....................................................................................................21
4.1系統架構設計...................................................................................................21
4.1.1物理結構.....................................................................................................21
4.1.2邏輯結構.....................................................................................................21
4.2系統主要模塊設計...........................................................................................24
4.2.1客戶模塊.....................................................................................................24
4.2.2聯系人模塊.................................................................................................25
4.2.3線索模塊.....................................................................................................26
4.2.4銷售訂單模塊.............................................................................................27
4.2.5行動模塊.....................................................................................................29
4.3客戶端結構設計...............................................................................................30
4.5本章小結...........................................................................................................33
第五章CRM系統客戶端的實現..........................................................................34
5.1客戶端界面元素以及底層功能的實現............................................................34
5.1.1共用組件的實現.........................................................................................34
5.1.2通用父類——BaActivity的實現...........................................................37
5.1.3模塊創建和初始化.....................................................................................40
5.1.4數據封裝的實現.........................................................................................42
5.1.5通信模塊的實現.........................................................................................49
5.2客戶端主要模塊的實現...................................................................................51
5.2.1客戶功能模塊的實現.................................................................................51
5.2.2聯系人模塊的實現.....................................................................................54
5.2.3線索模塊的實現.........................................................................................56
5.2.4銷售訂單模塊的實現.................................................................................58
5.2.5行動模塊的實現.........................................................................................63
5.3本章小結...........................................................................................................65
第六章系統測試....................................................................................................66
6.1測試環境...........................................................................................................66
6.2系統功能測試...................................................................................................66
6.3系統非功能測試...............................................................................................68
6.4結果分析...........................................................................................................70
6.5本章小結...........................................................................................................70
第七章結束語........................................................................................................71
iii
7.1論文工作總結...................................................................................................71
7.2問題與展望.......................................................................................................71
參考文獻......................................................................................................................73
致謝..........................................................................................................................74
攻讀學位期間發表的學術論文..................................................................................75
北京郵電大學碩士研究生學位論文
1
第一章緒論
隨著信息技術的飛速發展,企業之間的競爭越來越激烈,同時,企業客戶的
需求每時每刻也都發生著變化,而傳統的企業管理系統越來越難以適應信息和需
求的瞬息萬變。如何及時準確地獲取及處理客戶信息已成為當今企業急需解決的
重要問題。
近幾年,移動智能終端的出現,使得傳統互聯網產生了重大的變革,移動互
聯網的流行已成為一大趨勢。而隨著智能終端的不斷發展,人們也不再僅僅滿足
于人與人之間簡單的溝通交流,如打電話、發短信,而開始關注強大的移動終端
帶來的豐富多彩的個性化服務。當前,智能終端已成為這個時代每個人不可或缺
的生活物件。
與傳統手機相比,智能終端具有便攜性、智能性、應用豐富等優勢,這些優
勢使得智能終端在社交、娛樂、商務等應用上能夠為用戶帶來更加個性化、多樣
化的體驗。因此,將移動互聯網與客戶關系管理相結合,即在移動智能終端上開
發一款企業客戶關系管理系統的客戶端,能夠將移動終端的優勢最大化的發揮,
為企業帶來更大的效益和價值。
1.1課題研究背景
CRM(CustomerRelationshipManagement)即客戶關系管理,CRM是以“客
戶”為中心,以信息技術為手段,以企業業務活動為對象,以客戶信息為指導,
與客戶進行高效地溝通,及時更新并反饋客戶信息,從而幫助企業實現對客戶信
息的管理,在維系并穩定企業客戶的同時又擴大客戶群,最終實現企業經濟效益
的提升[1]。CRM強調企業應該與客戶保持持久不間斷的溝通,企業能夠基于此來
了解客戶不斷變化的需求,并在此基礎上指導企業的各項業務活動,改善管理方
式,提高產品或服務的質量,提高客戶的滿意度,從而實現客戶的穩定化和持續
增長。
對于企業信息化飛速發展的今天,客戶以及客戶的需求也在時刻的變化當中,
如何更有效地維系老客戶的關系、挖掘新客戶,這些問題依然成為眾多企業關注
的目標。而傳統的CRM系統卻也存在一定的缺陷:
1)實時性差。當今社會上,消費者或客戶的消費行為會因為一些因素(如
媒體)的影響而瞬息萬變,傳統的CRM其基于的是所收集的歷史數據以
及一些傳統的通信方式,無法適應這種信息的快速變更。
北京郵電大學碩士研究生學位論文
2
2)獲取信息的不及時。雖然隨著企業信息化的發展,CRM也與計算機、互
聯網進行了一定程度上的融合,但是,由于企業中業務人員必須坐在辦
公桌電腦前才能進行相應的業務處理和操作,缺少機動性,客戶信息的
獲取及處理無法隨著業務人員的工作隨時隨地地進行,這就大大限制了
信息的獲取速度和范圍,降低客戶管理的效率。
3)耗時長。對于基于數據倉庫和分析的CRM方式,所花費的時間較長,這
種方式也無法適應當今社會信息飛速增長變化的需求,也大大影響了企
業客戶管理的效率。
目前越來越多的中國網民選擇使用移動終端接入互聯網,而“移動化”帶來
的便捷性也逐漸融入到人們的生活、工作當中。在移動終端的推動下,移動互聯
網產業得以飛速發展,移動化也已然成為當今全球互聯網的發展趨勢[2]。而智能
終端其移動性、便捷性的特點能有效地彌補傳統CRM方式的不足。
1.2課題研究目的和意義
在移動互聯網飛速發展與企業經營方式向“客戶”轉型的背景下,為了解決
傳統CRM系統實時性差、獲取信息不及時以及耗時長等缺陷,本課題以某企業
項目為依托,設計并實現一款基于Android平臺的CRM系統的客戶端軟件。
將CRM與移動智能終端相結合,使終端移動性、便捷性的特點得以最大限
度的發揮,企業的業務人員將不再受時間地點的限制,能夠隨時隨地地對客戶需
求進行處理和反饋,提高客戶關系管理的實時性。
另外移動智能終端擁有一些PC機上所沒有的功能,包括通話、短信、通訊
錄、位置服務等等,將這些功能與CRM相結合,能為CRM的功能擴展提供一
個良好的平臺,使得業務人員可以通過更加快捷便利的方式與客戶溝通,提高與
客戶交互的頻率和深度。
相比于PC機,智能終端的存儲容量要小得多,處理能力也相對弱,移動CRM
客戶端應提供最核心的功能、精簡的界面。另外,移動CRM客戶端將不關注對
大批量客戶數據的挖掘和處理,取而代之的是依靠企業業務人員自行管理客戶、
挖掘客戶、維系客戶關系。將每一個客戶作為一個單獨的個體,以一對一的方式
實施客戶關系維護和管理。這種方式能夠有效地發現和保存客戶的行為方式和偏
好,從而依據每個客戶的個別狀況提出相應的應對策略或方案,增加客戶關系管
理的靈活性。
本系統客戶端軟件結合了移動智能終端的優點,在提供客戶關系管理基本
功能的基礎上,使管理的各項操作不受時間地點的限制,并且將客戶關系管理的
主動權交由企業業務人員,使得管理具有針對性、靈活性,能大大提高客戶關系
北京郵電大學碩士研究生學位論文
3
管理的效率,使得企業能夠更有效地維系老客戶、挖掘新客戶,對企業的整體發
展具有重要的現實意義,對移動互聯網產業的發展、企業信息化進程的推動提供
巨大動力。
1.3課題研究現狀
當前,移動技術被廣泛應用,CRM也緊隨移動辦公進入移動領域,并且成
為了不少業務人員必備的辦公用品。在以前,地域、時差、人員等諸多客觀因素
會使得企業原本優質的服務能力下降,或者由于辦公條件、通信傳輸、數據分析
等的局限性而導致無法及時響應客戶的需求。隨著企業之間競爭的激烈化和客戶
個性化需求的與日俱增,企業必須能夠提供具有實時性、不受限制的辦公環境和
辦公能力,讓業務人員在任何時間任何地點都能與客戶進行溝通,了解客戶需求,
及時反饋市場信息等。因此,將CRM與移動互聯網相結合,使CRM具備移動
性、便捷性等特點,這將是客戶關系管理將來的主要發展方向。而隨著CRM系
統的不斷完善,在技術實現上也有了一定程度的發展,當前CRM系統在技術實
現上主要體現在以下幾個方面:
1)信息分析技術。
CRM系統作為企業核心資源的管理系統,需要處理大量的客戶信息,如何
分析和利用這些信息成為了CRM系統的關鍵。利用數據倉庫、數據挖掘等關鍵
技術可以建立量化的、有效的評估體系,幫助企業更合理的指定經營策略。
2)集成多種客戶信息交換渠道。
隨著網絡的發展,新的信息交流技術不斷涌現,作為企業的常用企業管理軟
件,CRM系統應該集成電話、電子郵件、手機短信、VoIP和網絡會議等多種新
的通信方式,從而能夠更加及時高效的為企業客戶提供服務。
3)網絡應用技術
企業業務信息處理,網絡功能越來越發揮著重要的作用。CRM為企業帶來
了實現電子商務的平臺,企業也因此由傳統企業模式轉化為電子商務為基礎的現
代化企業模式。
隨著CRM管理理念以及實現技術的進一步發展,CRM系統也將不斷實現
技術和應用的最新結合,進一步成為企業不可或缺的前端業務支撐系統。
1.4課題研究內容及主要工作
本課題的主要研究內容及工作可以劃分為以下幾點:
1)對基于Android平臺的CRM系統的客戶端進行需求分析。
北京郵電大學碩士研究生學位論文
4
本課題將首先對系統客戶端軟件進行需求分析,深入描述其功能和性能,確
定相關約束條件,以及服務器與客戶端通信等方面的接口細節。
2)對設計開發本系統客戶端進行技術調研、積累與分析。
將依據需求階段所提出的相關需求,確定開發本客戶端所涉及的相關技術,
對其進行調研、分析與對比,進行技術積累與儲備。
3)設計并實現客戶端共用界面元素以及底層功能。
本課題將設計并實現客戶端共用界面元素以及底層功能,其中底層功能主要
包括數據封裝/解析、加密/解密、壓縮/解壓縮、與服務器的交互等。
在設計過程中,將盡可能地涵蓋開發同類或類似應用所具有的共有的特征及
功能;針對不同應用功能上的區別性,設計易修改、易擴展的接口,滿足各個應
用、功能的特性要求,從而減少開發工作量,節省開發時間[3]。
4)設計并實現客戶端各個功能模塊。
本課題將基于需求分析及設計階段的成果進行客戶端功能的開發。各個功能
模塊的設計與開發將基于之前完成的共用界面元素以及底層功能進行,保證風格
的統一性,同時減少開發工作量。本課題所要實現的功能模塊包括:客戶、聯系
人、線索、銷售訂單、日常安排(行動)。
5)對客戶端進行測試及部署。
本客戶端的測試工作將分為以下幾個階段進行:單元測試,將針對軟件內部
各個方法、功能點等“單元”進行測試。該測試工作將隨著各個功能模塊的開發
而進行;集成測試,針對子系統內部以及子系統之間的交互進行測試;系統測試,
將客戶端與系統其他部分結合起來,在實際環境下運行,進行測試,同時包括性
能測試;驗收測試,讓用戶也參與的測試,使用真實的數據進行測試。
在完成上述工作后,確定客戶端版本以及相應版本管理工作,交付客戶端,
發布在相關網站上。
1.5論文結構
本論文的結構和主要內容安排如下:
第一章介紹本論文的課題背景,闡述當前CRM系統的研究現狀,說明本課
題的研究目的和意義,并介紹本文的組織結構。
第二章介紹客戶關系管理方面的理論知識,介紹CRM系統中所使用到的核
心技術。
第三章介紹CRM系統的需求分析,包括客戶管理、聯系人管理、線索管理、
銷售訂單管理以及行動等功能需求,同時論述業務處理響應時間、安全性、易用
性等非功能需求。
北京郵電大學碩士研究生學位論文
5
第四章在需求分析的基礎上對系統進行概要和詳細設計。說明本系統的各
個功能模塊的劃分;分析CRM系統的體系架構、層次結構、業務流程以及數據
庫表的設計。
第五章論述了客戶端各個功能模塊的實現。主要針對客戶端共有界面元素
以及底層功能模塊、客戶模塊、聯系人模塊、線索模塊、銷售訂單模塊、日常安
排(行動)模塊,并給出上述各模塊的流程圖、類圖以及時序圖。
第六章論述系統測試工作,介紹測試用例,說明各個測試階段的具體工作,
根據測試結果分析客戶端完成情況。
第七章論文工作總結。對本論文工作進行總結,提出下一步改進和完善的
建議。
北京郵電大學碩士研究生學位論文
6
第二章相關技術介紹
2.1客戶關系管理相關概念
2.1.1客戶關系管理
當前關于客戶關系管理,不同的研究機構或企業、公司有著不同的定義,但
是這些不同的定義對客戶關系概念的理解具有共同之處,即客戶關系包含了企業
與客戶之間的所有關系,如買賣、咨詢、售后等,是一種長期、緊密、互利互惠
的關系[4]。CRM系統將企業內部各個業務人員和各個部門的關于客戶的所有信
息進行整合、分析,統一保存和管理,并以此為基礎,向企業各部門提供良好的
訪問接口,使得企業對于客戶信息的管理具有高度的統一性、規范性。同時CRM
系統結合了先進的管理思想,采用信息產業的最新成果,為客戶關系管理構筑信
息平臺。該平臺整合了數據挖掘、數據倉庫等信息技術,能夠為企業提供多方面
多領域的自動化解決方案,大大減輕了業務人員的工作強度和難度。
2.1.2客戶關系管理移動應用系統解決的問題及思路
CRM整合了企業內部各個業務人員、各部門資源,并對這些資源進行有效、
規范地組織、整理和分析,從而提高了企業中整個客戶關系生命周期的管理效果。
移動終端下的CRM系統為企業辦公提供了一個新的平臺,帶來了信息時代
全新的運營理念,業務人員能夠在客戶關系生命周期中更加及時有效地了解相關
的資源,同時也簡化、優化了業務人員的相關業務工作流程,從而提高企業的業
務活動效率。移動終端客戶關系管理系統為企業解決四個方面的問題,如圖2-1
所示。
客戶關系管理
客戶獲取客戶維系客戶選擇客戶價值
怎樣用最有效率的
方法獲取客戶
如何判斷誰是我們最
有價值的客戶
如何盡可能久的維
系老客戶
如何獲取最大客戶
效益
圖2-1移動終端客戶關系管理所解決的問題[5]
從圖2-1中可以看出,移動終端客戶關系管理所重點關注四個問題的解決。
北京郵電大學碩士研究生學位論文
7
企業絕不希望自己的客戶群時時刻刻都在發生巨大的變化,一個相對穩定的客戶
群能夠為企業創造一個平穩良好的盈利和發展空間。因此,企業必須及時獲取并
快速響應客戶的需求(這些需求有可能時刻都在變化),并提升產品服務質量,
提供良好便捷的產品購買渠道或服務獲取渠道,同時提供良好的售后服務等。
CRM移動應用系統應該為企業提供與客戶進行溝通交流的快速方便的渠道和方
式,增加企業業務人員與客戶溝通的頻率和效率。同時,企業也需要對其所有客
戶進行評估和衡量,分析客戶的潛在效益,使得客戶關系管理具有針對性和側重
性。CRM移動應用系統能幫助企業在營銷活動中轉被動為主動,主動地去找尋
客戶、主動地獲取需求、主動為客戶提供產品和服務。
本課題將依照移動終端客戶關系管理理念及其所關注的四個問題,進行CRM
系統客戶端的設計和開發。
2.2Android操作系統介紹
隨著移動互聯網概念的普及和推廣,移動終端正朝著智能化的方向飛速前
進,智能手機也逐漸的融入人們的日常生活工作當中,成為人們工作生活娛樂不
可或缺的設備或工具。自2008年Google公司發布了Android操作系統至今,
Android的版本已由當初的1.1上升至如今的4.2,而Google公司也將于明年5
月份正式發布Android5.0版本。隨著版本的更新,Android操作系統也逐步趨于
完善,運行效率大幅提升,所提供的功能也更加豐富,用戶體驗也好。
在我國,Android終端的銷量逐年攀升,已占領大部分終端市場,并且每年
每季度均能保持至少一成的增長幅度[6]。由此可見,Android已成為當前市場上
主流的移動終端操作系統,對其的研究具有重大的現實意義。因此,本課題選用
Android作為CRM系統客戶端的開發平臺。
2.2.1Android系統的特點
Android操作系統之所以受到用戶和開發者的青睞,因為其具有以下幾大優
勢[7][8]:
1)開放性。
開放性是Android操作系統相比于其他終端操作系統所具有的最大的優勢。
開發者可以隨意地對Android系統進行個性化的修改,有利于開發出更具差異性
的應用;另一方面,廠商能夠根據自己的硬件設備的性能來自行修改Android操
作系統底層的源代碼,使得系統與硬件設備更加適配,從而發揮硬件的最佳性能,
提高用戶體驗。
2)應用程序平等性。
北京郵電大學碩士研究生學位論文
8
Android平臺不需要區分核心應用和第三方應用。開發者可以隨意的開發或
擴展任意的應用程序,大大拓寬了開發者的開發范圍。另一方面,對用戶而言,
用戶可以隨意替換移動設備上的應用程序,即便是撥號程序或者主屏幕這樣的核
心應用,也在很大程度上滿足了用戶的個性化需求[9]。
3)易于開發。
Android應用程序基于Java語言進行開發,開發人員只要掌握基本的Java編
程技能就能夠輕易的學習和上手Android應用的開發[10]。
4)無縫結合的Google應用。
Google應用平臺為用戶提供諸多優秀穩定的物聯網產品,如Google地圖、
Gmail、Google搜索等,而Android平臺能夠非常好的與這些應用無縫結合,為
用戶提供更好的服務[11]。
2.2.2Android的系統架構
Android操作系統的系統結構圖如圖2-2所示。
Application(應用層)
HomeContactsPhoneBrowr
ApplicationFramework(應用框架層)
Activity
Manager
Window
Manager
Content
Provider
ViewSystem
……
Notification
Manger
Package
Manager
Telephony
Manager
Resource
Manager
Location
Manager
XMPPService
Libraries(系統運行庫層)
Surface
Manager
Media
Framework
SQLite
OpenGL/ESFreeTypeWebkit
SGLSSLLibc
AndroidRuntime
(Android運行時)
CoreLibraries
DalvikVM
LinuxKernel(Linux內核)
DisplayDriver
Camera
Driver
Bluetooth
Driver
FlashMemory
Driver
Binder(IPC)
Driver
USBDriverKeypadDriverWi-FiDriverAudioDrivers
Power
Management
圖2-2Android系統結構圖[12]
從圖2-2中可以看出,Android系統總共分為四層,從上至下分別是應用層
(Application)、應用框架層(ApplicationFramework)、系統運行庫層(Libraries)
北京郵電大學碩士研究生學位論文
9
和Linux內核層。
1)應用層
Android平臺上,一切可操作行為的載體即為應用程序,換句話說,Android
操作系統的基本單位為應用程序(Application)。應用層一方面包括Android系統
中自帶的應用程序,如主屏幕、聯系人、短信、設置等核心應用程序;另一方面,
還包括開發人員所開發的第三方應用。
2)應用框架層
應用框架是一個應用程序的核心和基礎,它為開發人員的開發行為提供了詳
盡的規范和約定。一方面,開發人員必須基于應用開發框架進行應用程序的開發,
以保持主體結構的一致性;另一方面,應用框架允許開發人員在遵守框架相關規
范的基礎上,對其開發的應用程序進行必要的擴展,以滿足各個應用程序的差異
性、個性化需求。
Android應用框架提供了訪問所有核心API的方法。該框架提高了組件的重
用性,減少項目開發的工作量;同時,在遵循這個框架的相關原則的前提下,開
發人員可以在這個框架上盡情地擴展應用。Android應用框架層所提供的相關組
件如表2-1所示。
表2-1Android應用程序框架所提供的組件[13]
組件功能
視圖(View)提供構建應用程序界面的各種控件。
內容提供器
(ContentProviders)
允許應用程序開放接口,讓其他程序訪問其數據。
資源管理器
(ResourceManager)
對資源的管理,包括本地字符串(String)、圖片
(drawable)和布局文件(Layoutfile)等等。
通知管理器
(NotificationManager)
對狀態欄的管理,可以設置并顯示狀態欄信息。
活動管理器
(ActivityManager)
對應用程序基本元素Activity的管理。
窗口管理器
(WindowManager)
對所有窗口的管理,如對話框(Dialog)等等。
包管理器
(PackageManager)
對Android應用程序(apk包)的管理,包括系統
本地自帶的應用以及第三方應用。
3)系統運行庫層
Android應用框架層為上層的開發提供了良好的平臺和接口,為支持Android
對硬件設備的調用,系統運行庫為上層提供了各種組件調用使用的支持。系統運
行庫層包括系統庫和Android運行時環境。
系統庫各個部分的功能如表2-2所示。
北京郵電大學碩士研究生學位論文
10
表2-2Android系統庫各部分功能說明
庫功能
Bionic系統C庫最底層的C語言標準庫。
多媒體庫
(MediaFramework)
Android系統多媒體庫,為Android系統提供了多種音視
頻及圖片格式的支持。
SGL2D引擎庫。
SSL
該庫為Android系統提供數據通信方面的支持,位于各
層協議之間。
OpenGLES1.0提供3D效果的支持。
SQLite提供輕量級關系型數據庫的支持。
Webkit瀏覽器引擎。
FreeType位圖(bitmap)及矢量圖(vector)。
第二部分Android運行時環境(AndroidRuntime)提供了Java核心庫(Core
Libraries)和Dalvik虛擬機(DalvikVirtualMachine)。該Java核心庫提供了Java
的核心API。
Dalvik虛擬機是通過Java實現的。Dalvik虛擬機通過將.class和.jar文件轉換
為.dex文件來獲取指令和數據。.dex文件使用上更加高效,這使得Dalvik虛擬
機能夠在有限的存儲空間和計算速度下,正常順暢的運行。因此,Dalvik虛擬機
非常適合運行在移動終端中。
4)Linux內核層
Android系統基于Linux2.6內核,內核層提供了一些關于終端核心硬件設備
的支持,如USB、藍牙等。內核層將設備相關的服務以接口形式提供給上層。
2.2.3Android四大組件
Android平臺是為組件化而搭建的平臺,在Android平臺上進行應用軟件的
開發,通過基于組件的重用和架構,就可以輕易的搭建和完成各式應用,主要包
括以下四種類型的組件。
1)Activity
Android中,Activity是最為常用的組件,它可以表示為一個可視化的用戶界
面或一個單獨的屏幕。例如一個聯系人列表的Activity為用戶展現的就是一個按
照列表的方式列出所有聯系人基本信息的界面。每一個Activity都包含一些控件
用以實現相關的界面效果和相應的功能,如按鈕(Button)、文本框(TextView)、
列表(ListView)等等。
每一個具體的Activity都是Activity(ty)的子類。各個
Activity之間可以進行數據的通信。因此,通過使用不同的控件以及設置控件的
相關事件,開發人員就能設計開發出不同界面效果、不同功能的Activity。
北京郵電大學碩士研究生學位論文
11
2)Service
Service也是Android開發較為頻繁使用的組件。Service與Activity的區別在
于,首先,Service沒有用戶界面,它不像Activity那樣能夠通過各種控件、界面
元素的組合來給用戶直觀的展現;其次,Service運行于系統后臺,而且它不能
自己運行,需要通過調用需要通過調用ervice()或
rvice()方法啟動服務。
3)BroadcastReceiver
BroadcastReceiver主要用于對系統發送的廣播進行接收、過濾和響應[14]。
Android系統會產生并發出一些廣播用于通知相應的應用來處理一些事件,如電
池電量過低、更改語言等。
BroadcastReceiver不像Activity和Service能夠去執行某些操作或業務,它處
于一種被動的狀態。只有符合條件的廣播發送過來時,BroadcastReceiver才會被
激活去執行一些指定的操作。
4)ContentProvider
ContentProvider提供一種應用間的數據共享訪問機制。ContentProvider幫助
應用向外部提供數據訪問的接口,使得應用間具有關聯性,方便用戶使用。
2.3DES加解密技術
對于一些企業級別的系統,如CRM系統,它們需要在互聯網上傳輸關于公
司、客戶等一些企業內部信息,這些信息如果以明文的形式傳輸,勢必會有泄露、
被竊取的危險性[15]。因此,CRM系統需要對客戶端與服務器之間交互的數據進
行加密,保障數據的安全性。
本課題的CRM系統將采用一種安全、操作簡便的加解密方法。
DES(DataEncryptionStandard,數據加密算法)是一種世界標準的加密形式,
同時也是發明最早的最廣泛使用的分組對稱加密算法[16][17]。
DES加密算法屬于分組加密算法,通過對密鑰的保護提高加密算法的安全性。
DES采用混亂和擴展(即先替換后置換)的技術對數據進行加密。
針對CRM系統,由于客戶端與服務器之間傳遞的數據屬于公司內部資料,
具有私密性;同時,這些數據由于涉及到某些訂單、報表的具體內容,數據量可
能會很大;再者,CRM系統客戶端為移動終端,其處理能力、存儲能力相對于
PC機要弱。因此,對于加解密算法,應該選擇一種形式簡單,易實現、計算資
源少、速度快的算法。而DES加解密算法具有上述特點,因此本課題采用DES算
法來實現系統內數據的加解密功能。
北京郵電大學碩士研究生學位論文
12
2.4Java對象序列化技術
對于網絡中的通信,無論傳遞的是何種類型的數據,一般都會以二進制的
方式呈現。在實現CRM系統的時候,應該為客戶端與服務器提供一種能夠方便
進行數據封裝和解析的方法,一方面,供客戶端或服務器將對方發來的數據進行
解析,提取出相關重要的參數,進行相應的業務處理;另一方面,客戶端與服務
器自身能將所需請求或響應的參數以一定形式封裝起來,進行網絡間數據的傳遞。
Java為網絡間的數據傳輸的封裝提供了很好的支持,即對象序列化。序列化
指的是將對象寫入字節流的過程;接收到字節流,將其恢復為對象的過程,則是
反序列化。
相比于其他數據封裝方法,如XML、JSON、Java對象序列化的優勢在于它
的簡單易用性。Java提供了進行對象序列化和反序列化的接口,只需要進行簡單
的方法調用,即可實現相關操作。而Java中的對象也只需要實現Serializable接
口就可以被序列化。
2.5本章小結
本章主要闡述了CRM系統所涉及相關的技術。介紹了客戶關系管理的相關概
念和理論。對Android操作系統做了簡要說明,闡述了Android平臺的特點,及其
體系架構、組件等相關內容。然后對CRM系統所使用到的DES加密技術做了簡
要介紹。最后對CRM系統客戶端與服務器之間交互數據的封裝方法——Java對象
序列化進行了說明。
北京郵電大學碩士研究生學位論文
13
第三章系統需求分析
本課題主要研究與實現的是基于Android平臺的CRM系統的客戶端軟件。該
系統主要面向長期在移動狀態下工作的人群,包括企業銷售人員、現場服務人員,
以及企業中高層管理人員等。系統將圍繞客戶關系管理理念,主要分為九個功能:
客戶管理功能、聯系人管理功能、銷售機會管理功能、訂單管理功能、產品管理
功能、線索管理功能、行動管理功能、知識庫管理功能以及日程管理功能。系統
用例圖如圖3-1所示。
用戶
客戶管理
聯系人管理
線索管理
銷售機會管理
銷售訂單管理
產品管理
知識庫管理
日常工作管理
行動管理
日程管理
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
CRM系統
圖3-1CRM系統用例圖
以下將針對客戶管理功能、聯系人管理功能、線索管理功能、銷售訂單管理
功能和行動管理功能進行具體詳細的分析說明。
3.1功能需求分析
3.1.1客戶管理功能
在本系統中,客戶管理功能是最基本的功能,其余各個功能都將圍繞著“客
戶”這一概念展開。客戶關系管理概念中所提及的“客戶”并不僅僅指代消費者
或者用戶,它指的是購買企業產品或服務的顧客,同時也可以泛指企業的內部員
工、合作伙伴等等。而且,“客戶”這一概念也并非僅指代一個自然人,它可以
指代一個公司,一個團體等等。
北京郵電大學碩士研究生學位論文
14
客戶管理功能的用例圖如圖3-2所示。
用戶
客戶管理
新增客戶
編輯客戶
搜索客戶
查看客戶
查看客戶相關對象
<
快速聯系
<
創建交易
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
CRM系統
圖3-2客戶管理功能用例圖
由用例圖可知,本功能提供與業務人員相關聯的所有客戶的信息。
為用戶提供新增、查看、搜索、修改客戶的基本功能操作,各功能都需進行
操作權限的控制。于此同時,為用戶提供快速聯系客戶的功能,支持打電話、發
短信、發郵件等方式與客戶進行及時溝通交流。
用戶通過當前客戶創建相應業務信息的功能,包括創建訂單、創建商機、創
建行動等。通過客戶功能中的某客戶創建操作時,將自動帶入該客戶的相關信息。
客戶管理功能提供與其他功能的關聯接口。支持用戶查看與該客戶相關的所
有對象的信息,包括該客戶所擁有的所有聯系人、銷售訂單、行動信息等等。
通過客戶端錄入的信息均需交由服務器端保存處理,如若保存失敗客戶端會
給用戶相應的狀態提示。
由于“客戶”對于CRM系統是非常重要的元素,因此,本系統在客戶端中
將不提供客戶的刪除功能,將該功能授權于系統管理人員。
3.1.2聯系人管理功能
CRM系統中,客戶關懷是一個非常重要的環節,它強調企業應該與客戶時
刻保持溝通,一方面,為客戶在購買企業產品或服務后,提供有效及時的產品售
后服務;另一方面,企業也可以通過與客戶進行主動溝通,在充分了解客戶需求
的基礎上,更好地挖掘潛在客戶,提高銷售機會。
CRM系統中的聯系人為與用戶直接進行溝通交流的對象。他可以屬于一個
“客戶”,也可以獨立存在。在CRM系統中,聯系人與用戶手機中的通訊錄聯
系人不一樣,CRM系統中的聯系人存儲于系統服務器,他們是與企業業務活動
相關的人員;而用戶手機本地聯系人是用戶的個人數據,可能與企業客戶沒有任
何關系。本系統聯系人管理功能的用例圖如圖3-3所示。
北京郵電大學碩士研究生學位論文
15
用戶
聯系人管理
添加聯系人
編輯聯系人
查詢聯系人
查看聯系人
查看聯系人相關對象
<
快速聯系
<
刪除聯系人
創建行動
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
CRM系統
圖3-3聯系人管理功能用例圖
如圖所示,系統提供聯系人的相關功能。用戶可以添加聯系人。在添加過程
中,用戶需要錄入與該聯系人相關的信息,同時需要確定該聯系人是否屬于某個
“客戶”,以及該聯系人是否為該客戶的主聯系人。
對于已添加入CRM系統的聯系人,系統允許擁有特定權限的用戶對聯系人
信息進行修改,同時,系統也允許用戶刪除某個聯系人。
用戶在查看聯系人詳細信息的同時也可以查看與聯系人相關聯的所有對象
的信息。相關對象信息主要包括該聯系人相關的行動、線索和客戶信息。同時,
系統為用戶提供了該聯系人在CRM系統中的關系信息,通過關系樹(圖片)的
方式呈現給用戶。
在查看聯系人詳情過程中,用戶也可以直接和聯系人進行溝通。客戶端為用
戶提供了撥打手機、撥打座機、發送郵件等聯系方式。
聯系人管理功能允許用戶通過當前查看的聯系人來創建行動,在創建過程中,
自動帶入當前聯系人的相關信息。
用戶在查看聯系人的時候,可以通過輸入關鍵字對聯系人進行搜索。
3.1.3線索管理功能
線索即是業務員在工作中獲取的信息片段,其來源包括招標文件、廣告等;
它并沒有經過驗證,是需要進一步核實的銷售消息。通過所獲取的線索,可能會
觸發商機以及相關的后續操作。線索是企業業務活動過程中的一個過渡點,在本
CRM系統中,線索的最終形態是客戶或者聯系人。線索管理功能的用例圖如圖
3-4所示。
北京郵電大學碩士研究生學位論文
16
用戶
線索管理
新增線索
編輯線索
查詢線索
查看線索相關對象
查看線索
<
刪除線索<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<<
in
cl
ud
e>
>
<
<
i
n
c
l
u
d
e
>
><
<
i
n
c
l
u
d
e
>
>
CRM系統
線索轉化
<
轉化為客戶
轉化為聯系人
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
圖3-4線索管理功能用例圖
如上圖所示,線索為用戶提供了線索新增功能,用戶需要錄入線索的相關信
息。在添加線索操作過程中,用戶需要確定并輸入該線索的名稱以及所涉及的公
司名稱,以便往后進行線索的轉換操作。同時,用戶還需要確定并選擇該線索的
來源,來源包括:朋友介紹、網站新聞、招投標公告等等。
用戶可以查看線索詳情,在查看詳情過程中,CRM系統允許擁有權限的用
戶對線索信息進行修改,同時也允許對線索進行刪除。
單獨的線索對于企業而言并沒有直接的價值,只有將線索進行轉化后,線索
的潛在價值才能得以體現。因此,線索轉化功能對于線索管理功能而言非常重要。
CRM系統為用戶提供了將線索進行轉化的功能,用戶可以將線索轉化為客戶或
者聯系人。該轉化操作只能執行一次,即線索只能轉化為客戶和聯系人中的一項。
在轉化過程中,系統自動將線索相關內容帶入相應轉化對象的新增功能中。當轉
化操作完成時,該線索不會被刪除,仍然保存在系統中。用戶可以隨時查看該線
索的信息。但與之前查看線索詳情不同的時,轉化后的線索不允許用戶進行修改
操作;而且在線索詳情界面中,系統將顯示與該線索相關聯的客戶信息和聯系人
信息,用戶可以通過該線索查看與之相關的客戶和聯系人的詳細信息。
3.1.4銷售訂單管理功能
在本系統中,銷售訂單是企業與客戶之間關系的最直接最具有價值的體現。
它與企業的利潤直接相關,同時它也直接反映了客戶的需求。系統銷售訂單管理
功能用例圖如圖3-5所示。
北京郵電大學碩士研究生學位論文
17
用戶
銷售訂單管理
新增銷售訂單
編輯銷售訂單
查看銷售訂單
查詢銷售訂單
關注銷售訂單
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<<
in
cl
ud
e>
>
<
<
i
n
c
l
u
d
e
>
>
添加訂單行
<
<
查看客戶
查看業務員
查看訂單行
查看銷售機會
查看附件
<
<
<
<
<
查看產品
<<
in
cl
ud
e>
>
CRM系統
圖3-5銷售訂單管理功能用例圖
銷售訂單管理功能為用戶提供了與銷售訂單相關的一系列操作。
用戶可以添加銷售訂單,添加過程中,用戶需要錄入訂單相關信息。同時,
在添加過程中,用戶需要選擇與該訂單相關的客戶以及業務類型、銷售部門等信
息。添加訂單時,當用戶為該訂單選擇了客戶后,CRM系統就允許用戶為該訂
單添加訂單行。訂單行為訂單中用戶所訂購的產品或服務。
用戶可以查看銷售訂單詳情。在訂單詳情中,用戶可以對其感興趣或者重要
的訂單進行關注操作。而在訂單列表中,不僅將顯示與用戶相關的所有訂單,同
時也將顯示被用戶關注的訂單,方便用戶對特定訂單的跟蹤。
在訂單詳情功能中,用戶可以查看訂單相關對象的信息。用戶可以查看客戶
信息,訂單在創建時選擇了客戶,因此,用戶可以通過銷售訂單查閱相關的客戶
檔案。用戶可以查看業務員(聯系人)信息,同時客戶端也為用戶提供了撥打手
機、撥打座機、發郵件等方式與業務員進行溝通。用戶也可以查看與訂單相關的
銷售機會的詳細信息。用戶還可以查看該訂單所包含的所有訂單行(產品)信息。
同時,用戶可以查看每一個產品的明細。若訂單包含了某些附件,用戶亦可查看
附件的詳細信息。
對于已添加入CRM系統的訂單,系統為擁有特定權限的用戶提供了訂單編
輯功能,同時也允許用戶對訂單進行刪除操作。
用戶可以通過輸入一至多個關鍵字進行銷售訂單的查詢操作。
3.1.5行動管理功能
CRM系統的主要用戶群為企業的業務人員,當業務人員將客戶、線索等相
北京郵電大學碩士研究生學位論文
18
關信息錄入CRM系統后,并不意味著業務人員的工作告一段落。相反,業務人
員的工作因這些信息的錄入而剛剛開始。業務員需要根據這些信息,及時與客戶
溝通,迅速并充分了解客戶不斷變更的需求,因此,業務員需要對他的行動進行
周密的計劃,并進行記錄;而且,當某些意外狀況發生是,業務員也需要對自己
的行動進行相應的變更、調整。
總的說來,CRM系統應該為用戶提供對其行動的記錄功能,使用戶能夠隨
時隨地地查看自己的行程,并根據實際情況予以調整,從而保證業務人員的工作
質量與效率,維系企業與客戶之間連續、和諧的關系。
CRM系統的行動管理的用例圖如圖3-6所示。
用戶
行動管理
新增行動
上傳照片
<
查詢行動
查看行動
查看行動相關對象
定位
<
<
<
編輯行動
刪除行動
<
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
clud
e>>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
編輯照片
<
系統
<
圖3-6行動管理功能用例圖
CRM系統為用戶提供了新增行動功能。用戶通過錄入行程相關信息則可添
加行程。在錄入信息過程中,用戶需要確定該行動的起始、結束時間,以便用戶
及時的跟蹤該行動。同時,系統允許用戶上傳當前位置信息,及時記錄和更新行
動的實施地點。
CRM系統針對行動管理功能,還為用戶提供了照片上傳的功能,用戶能夠
通過手機照相機拍照或者根據手機本地的照片圖片,將與行動相關的照片上傳至
服務器,與行動關聯,幫助用戶記錄并完善行動信息。
用戶可以查看與其相關的所有行動信息。在查看過程中,用戶可以查看與行
動相關的對象信息,包括:線索信息、客戶信息、銷售機會信息。
同時,在行動明細界面中,用戶還可以看到該行動最近一次更新的地理位置
信息,最近一次上傳的照片信息。
CRM系統還為用戶提供了行動的編輯功能。用戶可以對行動信息進行相應
調整修改。用戶可以在此更新自己的地理位置信息,可以修改和刪除所上傳的照
北京郵電大學碩士研究生學位論文
19
片或者上傳新的照片。
系統允許擁有特定權限的用戶刪除某條行動信息。
用戶可以通過輸入一個或多個關鍵字對行動進行查詢。
3.1.6其他功能
CRM系統處理為用戶提供上述功能外,還為用戶提供了銷售機會管理、產
品管理、知識庫管理、日程管理功能。關于這些功能的用例圖如圖3-7所示。
用戶
銷售機會管理
產品管理
知識庫管理
日常工作管理
新增銷售機會編輯銷售機會
查看銷售機會
查看銷售機會相關對象
查詢銷售機會
查詢產品
產品查看歷史
查看產品詳情
<
<
產品相關對象
<
查看產品基本信息
查看產品其他信息
刪除銷售機會
<
創建交易
關注產品
<
下訂單
<
查詢知識庫
查看知識點
行動管理
日程管理
新增日程
查看日程
編輯日程
刪除日程
<
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
clud
e>>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
in
c
lu
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
in
c
lu
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
<
<
i
n
c
l
u
d
e
>
>
客戶管理
聯系人管理
線索管理
銷售訂單管理
系統
圖3-7其他功能用例圖
3.2非功能性需求分析
CRM系統將從端到端業務處理響應時間、安全性以及易用性三個方面分別
對系統的非功能性需求進行考慮和分析。
3.2.1端到端業務處理響應時間
從用戶的角度來看,操作的響應時間是衡量軟件性能的指標之一,軟件的性
北京郵電大學碩士研究生學位論文
20
能指的是用戶操作的響應時間,此運行時間指的是從客戶端發起請求到從服務器
得到響應的時間,將相關數據處理展示的過程。按其過程來劃分主要分成三個部
分:呈現時間,即對接收的數據進行處理并展示給用戶的過程;數據傳輸時間,
即發送一個請求,系統處理過后返回所需要的時間;系統處理時間,即系統得到
請求后對請求進行處理并將結果返回所消耗的時間。本系統中由于客戶端與服務
器需要大量數據交換,為了用戶可以順暢的使用,并獲得良好的用戶體驗,對于
向服務器請求的操作,運行時間限制在5秒內。
3.2.2安全性
對于CRM系統,其數據都均為企業內部數據,包括企業信息、相關客戶信
息、訂單信息等。因此,如果對這些數據不加處理而允許其在網絡上傳輸,則會
導致數據被竊取的可能性增大,對企業造成不必要的損失[18]。
所以,在本系統中,對于所有在客戶端與服務器之間傳遞的數據,都必須進
行加密處理,以提高系統的安全性。
3.2.3易用性需求
易用性一般指用戶對于軟件產品的理解、學習和使用的簡易程度,它涉及到
用戶對軟件產品的易理解性、易學習性和易操作性。針對本系統易用性主要包含
以下三個方面:
1)用戶對本CRM客戶端軟件的功能、邏輯等方面的認識的難易程度。CRM
移動客戶端對于用戶的提示、說明語言應該直白,邏輯清晰,同時應該盡量避免
使用專業術語。
2)用戶學習使用本CRM客戶端軟件的難易程度。用戶在使用時能夠輕易地
找到所要使用的功能入口;界面應簡單明了地將功能呈現出來,軟件的使用手冊
也應該對每一步操作進行詳細清晰的說明,以方便用戶使用。
3)用戶對于本CRM客戶端軟件操作、控制的難易程度。用戶在使用時應操
作簡單方便,各項功能的設計應該做到直接、流暢。
CRM系統客戶端應該滿足以上關于易用性的相關要求,提高用戶體驗。
3.3本章小結
本章主要闡述了基于Android手機平臺下的CRM系統的需求分析,主要包
括功能性需求和非功能需求。對CRM系統的各個功能進行了相應的說明并給出
了用例圖,重點分析了筆者參與實現的功能。同時,針對CRM在性能、安全等
方面進行了非功能需求分析和說明。
北京郵電大學碩士研究生學位論文
21
第四章系統設計
本章根據需求分析對本系統及客戶端進行整體結構設計、功能模塊劃分等設
計工作,形成軟件的具體設計方案。
4.1系統架構設計
4.1.1物理結構
CRM系統建立在Internet等Web技術的基礎上,具有動態性、分散性等特
點,因此,對于CRM系統的物理結構,可采用客戶機/服務器(C/S)模式或者
瀏覽器/服務器(B/S)模式。
對于基于Android平臺的CRM系統,用戶希望能夠及時快速的進行業務處
理,希望系統能夠快速地對操作進行響應和反饋。在移動終端上,瀏覽器相對于
終端應用,用戶體驗較差,事件響應速度較低。因此CRM系統采用C/S模式進
行設計開發。如圖4-1所示。
Internet
WLAN/2G/3G移動應用服務器
移動終端
企業CRM系統
圖4-1某企業CRM系統組成示例
由圖4-1所示,用戶使用移動智能終端,可以通過無線網絡從指定的網站下
載CRM系統客戶端軟件并安裝,然后通過互聯網與移動應用服務器數據交換,
進而進行業務處理。
4.1.2邏輯結構
本體系結構采用MVC模式進行設計和開發,上層不會知道底層的具體實現
細節,因此,改變上層的結構細節不會對下層造成任何影響。CRM系統客戶端
結構層次結構圖如圖4-2所示。
1)表示層
表示層主要用于向用戶展現客戶端的界面信息,負責將后臺傳來的數據以友
好的方式顯示出來;同時負責為用戶提供良好的操作接口,接收用戶的交互事件。
表示層為用戶和系統的業務服務之間提供了一種通信機制。
在本CRM系統中,除了用Android自帶的控件構建用戶界面外,還需使用
特定的控件用以實現特殊數據的顯示。
北京郵電大學碩士研究生學位論文
22
表示層
列表圖表
業務邏輯層
用戶管理客戶管理線索管理聯系人管理
……
銷售訂單管理銷售機會管理產品管理行動管理
日程管理下載升級知識庫管理
基礎服務層
網絡連接電話通信服務短信服務定位服務
照相機接口電子郵件服務
控件
……
……
數據封裝數據加解密
數據壓縮
數據層
SQLite數
據庫
非結構化數據
圖4-2客戶端軟件層次結構圖
2)業務邏輯層
在本客戶端中,業務邏輯層提供了對CRM系統業務的處理,是整個系統架
構中的核心部分,包括:客戶管理、線索管理、聯系人管理、銷售訂單管理、銷
售機會管理、產品管理、行動管理、日程管理、知識庫管理。這九大模塊組成了
系統的主要業務邏輯。同時,該層還提供用戶管理、客戶端的下載更新等邏輯功
能。
業務邏輯層處于整個體系架構中的中間部分,位于表示層和基礎服務層之間。
它對于基礎服務層而言是調用者;對于表示層而言,是被調用者。在本客戶端系
統中,業務邏輯主要通過Activity來實現。在Activity中,它一方面展現XML
定義的界面;同時它也通過調用接口來選擇適當的業務處理方法進行邏輯處理,
完成業務操作;之后將結果再返回給表示層加以呈現。
3)基礎服務層
與其他體系結構不同的是,本客戶端在業務邏輯層和數據層之間添加了一層
——基礎服務層。該層主要負責為各項業務邏輯的實現提供接口。
北京郵電大學碩士研究生學位論文
23
由于CRM系統客戶端基于Android平臺進行設計開發,在客戶端中需要使
用到Android設備所帶有的諸多功能,譬如撥號程序、短信、照相機等等。基礎
服務層為上層業務邏輯層提供了調用智能終端設備的接口。業務層可以方便的調
用這些接口從而完成自己內部邏輯實現。
雖然AndroidSDK提供了已定義好的使用Android相關設備的接口,開發者
可以直接使用,但更好的方式是,在此基礎上,根據CRM系統業務具體邏輯實
現,在相關接口外再封裝一層,定義適合于CRM系統的接口。使開發時,接口
調用更加方便,代碼的可讀性也更高,維護也更方便。
4)數據層
數據層提供對數據的訪問的相關操作的接口。在本系統客戶端中,包括結構
化數據(SQLite數據庫)和非結構化數據(文件、圖片等等)。該層提供了針對
這兩種類型數據的訪問方式。
Android開發平臺提供了一種輕量級的數據庫——SQLite數據庫,同時也提
供了對該數據庫的相關操作的接口。另一方面,也提供了對非結構化數據的存儲
訪問方式,如智能手機的SD卡等等。
CRM系統的技術架構圖如圖4-3所示。
Android客戶端軟件
客戶管理聯系人管理線索管理
……
Java對象序列化
移動應用服務器
異步處理數據轉換處理
WebService+XML
CRM應用服務器
注冊登錄客戶線索銷售機會銷售訂單
……
CRM數據引擎、
CRM數據服務器CRM數據倉庫
銷售訂單管理...
圖4-3CRM系統層次結構圖
1)Anroid客戶端軟件。系統最上層通過Android開發技術為用戶提供友好、
北京郵電大學碩士研究生學位論文
24
易操作的界面,通過捕獲用戶的操作事件,進行相應的業務請求。該層通過對象
序列化的方式進行數據的封轉與解析,從而與下層在約定的數據格式下進行通信。
2)移動應用服務器。在業務處理前對請求數據進行預處理;負責對客戶端
與服務器之間交互通信的數據進行相應的格式轉換,一方面以供下層進行相應的
邏輯處理;另一方面,為上層提供服務器所返回的相關處理結果。
3)CRM應用服務器。該層主要負責提供各個功能模塊的業務處理邏輯。
4)持久化層。提供對數據的存儲和訪問方法。
4.2系統主要模塊設計
用戶成功登陸客戶端后,客戶端主界面上為用戶提供了客戶、聯系人、線索、
銷售機會、銷售訂單、產品、知識庫、行動、日程九項功能模塊的入口。用戶可
以選擇其一進入,進行具體流程的操作。以下將針對筆者所參與設計和開發的模
塊進行具體流程的說明。
4.2.1客戶模塊
客戶模塊的主要流程如圖4-4所示。
顯示客戶
列表
添加客戶
查看客戶
詳情
搜索客戶
進入客戶模塊
錄入客戶
相關信息
顯示搜索
結果
創建交易編輯客戶
查看客戶
相關對象
與客戶主聯
系人通信
輸入關鍵
字
是否有權限
是
否
保存客戶
是否有權限
是
否
圖4-4客戶模塊流程圖
如上圖所示,當用戶進入客戶模塊后,客戶端為用戶顯示與其相關的客戶列
表。用戶可以選擇添加、查看詳情和搜索客戶。
用戶進入添加客戶前,客戶端需要對用戶的權限進行驗證,擁有相應權限的
北京郵電大學碩士研究生學位論文
25
用戶方可進行添加操作。添加操作需要用戶錄入客戶相關信息,在用戶選擇保存
所添加的客戶后,客戶端進行客戶列表的更新,顯示最新的客戶列表。
用戶進行搜索客戶的操作后,需要用戶輸入一個或多個關鍵字進行搜索,客
戶端會將搜索結果以列表方式顯示出來。
當處于客戶列表或者搜索結果列表時,用戶可以選擇查看客戶詳情,客戶端
會將用戶所選擇的客戶的詳細信息展現出來,如客戶名稱、編號、主聯系人信息
等等。當用戶擁有相關權限時,用戶則可以通過當前查看的客戶進行交易的創建,
交易包括:銷售訂單、銷售機會和行動;或者用戶可以對客戶進行編輯操作,修
改客戶的詳細信息;或者用戶也可以查看與該客戶相關的對象信息,相關對象包
括:信用狀況、銷售訂單、銷售機會、行動、聯系人。以上操作均需要進行相關
權限的驗證。在客戶詳情界面中,用戶還可以與客戶的主聯系人進行通信。
在客戶列表界面中,若用戶進行返回操作,結束客戶業務流程。
4.2.2聯系人模塊
聯系人模塊的主要流程如圖4-5所示。
進入聯系人模塊
顯示聯系
人列表
查看聯系
人詳情
添加聯系
人
搜索聯系
人
輸入關鍵
字
顯示搜索
結果
輸入聯系
人信息
編輯聯系人創建行動
與聯系人
通信
查看相關
對象
是否有權限
否
是
刪除聯系人
保存聯系
人
是否有權限
是
否
圖4-5聯系人模塊流程圖
由圖4-5可知,當用戶進入聯系人模塊后,客戶端將向用戶展現與其相關的
聯系人列表。在進行添加聯系人的操作時,用戶需要輸入聯系人相關信息并確定
是否為主聯系人。在用戶保存該聯系人后,聯系人列表主動更新界面。
北京郵電大學碩士研究生學位論文
26
用戶進行搜索聯系人的操作時,需要輸入一個或多個關鍵字,客戶端將搜索
后的結果以列表的方式顯示出來。
在聯系人列表處(主界面列表、或者搜索結果列表),用戶可以進行聯系人
詳細信息的查看操作,客戶端將聯系人的所有信息展現出來,包括姓名、職位、
聯系方式等等。用戶可以編輯當前查看的聯系人信息;用戶可以根據當前的聯系
人創建行動信息,創建行動時將自動帶入聯系人信息;用戶還可以查看當前聯系
人的相關對象,包括:行動、線索、關系樹、客戶。以上操作均需要對用戶的權
限進行驗證。
在聯系人詳情處,用戶可以采用多種交流方式與當前聯系人進行通信,主要
包括:手機、座機和郵件等。
當用戶在聯系人主界面中進行返回操作時,聯系人業務流程結束。
4.2.3線索模塊
線索模塊的主要流程如圖4-6所示。
進入線索模塊
查看線索
列表
添加線索
查看線索
詳情
錄入線索
信息
查詢線索
輸入關鍵
字
顯示查詢
結果
是否有權限否
編輯線索刪除線索
是否已轉化
顯示客戶或聯
系人信息
轉化為聯
系人
轉化為客
戶
是
否
是否有權限
是
保存線索
否
是否有權限
是
否
圖4-6線索模塊流程圖
如圖4-6所示,當用戶進入線索模塊后,客戶端以列表的方式將所有線索展
現出來。在線索主界面下,用戶可以添加、查詢和查看線索。
當用戶進入添加線索操作后,用戶需要輸入線索信息。錄入完信息后,若用
北京郵電大學碩士研究生學位論文
27
戶選擇保存,則客戶端會顯示最新的線索列表。
用戶進行線索查詢操作時,需要輸入一個或者多個關鍵字,客戶端會將查詢
結果以列表的方式顯示出來。
在線索列表(線索主界面、查詢結果)處,用戶可以查看所選定的線索的詳
細信息。若用戶擁有相關權限,則用戶可以對該線索進行編輯和刪除操作。當用
戶進行查看線索詳情操作時,除了判斷用戶的權限外,系統還將檢測當前線索是
否已經被轉化。若沒有轉化,客戶端將為用戶提供線索轉化的接口,用戶可以將
該線索轉化為客戶或者聯系人;若線索已被轉化,則用戶可以查看線索轉化后的
相關內容,客戶和聯系人。
當用戶在聯系人主界面返回時,線索業務流程結束。
4.2.4銷售訂單模塊
銷售訂單流程圖如圖4-7所示。
進入銷售訂單模塊
查看銷售
訂單列表
查看被關注的
銷售訂單列表
編輯關注
訂單列表
刪除被關
注訂單
關注訂單
列表更新
添加銷售
訂單
查看銷售
訂單詳情
查詢銷售
訂單
輸入關鍵
字
分類查詢
顯示查詢
結果
錄入訂單
信息
是否添加
訂單行
添加訂單
行
保存訂單
行
是
關注/取消關
注銷售訂單
查看業務
員
編輯訂單
查看訂單
行
查看銷售
機會
是否有權限
與業務員
通信
查看客戶
是
否
查看附件
保存銷售
訂單
否
是否有權限
是
否
圖4-7銷售訂單模塊流程圖
如圖所示,用戶進入銷售訂單模塊后,客戶端將通過兩種方式將訂單列表呈
現給用戶,一種是顯示所有與用戶相關的銷售訂單;另一種則是顯示當前用戶所
關注了的銷售訂單。用戶可以在這兩種方式之間切換查看。
在訂單關注列表界面下,用戶可以編輯當前的關注列表,用戶可以將訂單從
北京郵電大學碩士研究生學位論文
28
關注列表中刪除,但不會刪除該訂單本身。刪除后,客戶端會更新訂單關注列表。
用戶在銷售訂單主界面中,可以添加銷售訂單、查詢銷售訂單、查看訂單詳
情。
用戶進行添加訂單操作時,需要輸入訂單的信息,若用戶需要輸入關于訂單
的相關產品(訂單行),則用戶可以添加訂單行并保存。在用戶保存了所添加的
訂單信息后,客戶端更新訂單列表。
用戶進行查詢訂單操作時,CRM系統為用戶提供了兩種方式進行查詢。一
種方式是分類查詢,客戶端提供了三種類別進行分類查詢:日期、客戶和業務員。
用戶可以選擇其中之一進行查詢。另一種方式則是關鍵字查詢,用戶可以輸入一
個或者多個關鍵字進行查詢。用戶在選擇了查詢方式并進行查詢操作后,客戶端
更新銷售訂單列表,將查詢結果顯示出來。
在訂單列表界面(銷售訂單主界面、訂單查詢結果、訂單關注列表)中,用
戶可以選取一個銷售訂單查看其詳細信息。在訂單詳情中,用戶可以進行以下業
務操作:
?用戶可以設置是否關注或取消關注當前的訂單,具體的操作結果會反映
到訂單關注列表中。
?用戶可以查看與當前訂單相關聯的業務員的信息。同時,用戶可以與該
業務員進行通信,通信方式包括:手機、座機和電子郵件。
?用戶可以查看與當前訂單相關聯的客戶信息。
?若該訂單有訂單行,則用戶可以查看訂單行的信息以及具體的產品明細。
?用戶可以查看與該訂單相關的銷售機會的信息。
?若訂單設有附件,用戶可以查看該附件的相關信息。
在進入訂單詳情時,客戶端會對用戶的權限進行驗證。擁有相關權限的用戶
可以對當前訂單進行編輯操作。
本客戶端銷售訂單功能中,需要顯示用戶所關注的訂單列表。該列表保存于
手機本地,因此,需要為訂單關注列表設計方便存取的數據保存方式。
Android提供了輕量級的關系型數據庫SQLite用以保存結構化數據。該數據
庫高效、可靠、易使用,同時它占用的資源非常少,以此非常適合應用與移動終
端中。
在關注訂單功能中,所需要保存的訂單信息包括:訂單id、訂單編碼、訂單
金額、客戶簡稱、訂單日期。所建立的數據庫表如表4-1所示。
表4-1關注訂單數據庫表
表名稱crm_tb_order
北京郵電大學碩士研究生學位論文
29
字段名類型長度是否主鍵說明
_idint8是主鍵,自增
idvarchar20
訂單id號,唯一標示訂單,作
為向服務器請求訂單詳情時
的關鍵參數。
codevarchar50訂單編號
amountvarchar20訂單金額
customervarchar255訂單客戶簡稱
datevarchar16訂單日期
4.2.5行動模塊
行動模塊流程圖如圖4-8所示。
如圖所示,用戶進入行動模塊后,客戶端將與用戶相關的所有行動通過列表
的方式展現出來。在行動主界面下,用戶可以添加行動、查詢行動、查看行動詳
細信息的操作。
用戶執行添加行動操作前,客戶端會對用戶的權限進行驗證,只有擁有添加
權限的用戶才能進行添加行動的操作。在添加行動時,用戶需要輸入行動的相關
信息,同時用戶還可以上傳有關于行動的照片。
用戶執行查詢操作時,需要輸入關鍵字,執行查詢操作后,客戶端會顯示查
詢結果。
在行動列表界面(行動主界面、查詢結果界面)時,用戶可以查看選中的行
動的詳細信息。在行動詳情界面中,用戶可以編輯行動信息、可以刪除或上傳照
片;可以刪除行動;可以查看照片;可以定位,更新地理位置信息;可以查看相
關對象,包括:線索、銷售機會和客戶。
北京郵電大學碩士研究生學位論文
30
進入行動模塊
查看行動
列表
是否有相應權限
查看行動
詳情
查詢行動
輸入關鍵
字
顯示查詢
結果
添加行動
是
錄入行動
信息
否
編輯行動刪除行動
定位
查看照片上傳照片
編輯照片
查看相關
對象
保存行動
圖4-8行動模塊流程圖
4.3客戶端結構設計
本課題在對客戶端設計過程中,將針對面向企業的Android應用軟件設計具
有一定復用性的共用界面以及底層功能。
當前,針對企業移動應用軟件的開發,開發人員通常都要重頭開始進行,針
對應用軟件的各個功能模塊逐個開發,這種開發方式,既需要開發使用Android
基本API所能實現的功能,也需要開發涉及企業業務方面的功能。這樣就使得
應用開發的成本過高、時間耗費大、開發效率和代碼復用率低。
另一方面,對于諸多企業移動應用軟件,其相似的地方比較多。這些相似之
處,不光體現在某些功能上,也體現在一些界面設計上。因此,設計并開發具有
一定復用性的共用界面以及底層功能,能夠有效地減少開發成本、提高開發效率
和代碼復用率,同時,也便于應用軟件后期的維護。
針對各個企業移動應用軟件,其具有的共同之處有:
1)數據封裝。
對于企業應用,客戶端與服務器交互的數據需要一種統一的數據格式,方便
服務器提取參數進行業務邏輯處理。因此,底層功能中應該包含一種針對交互數
據的封裝和解封裝方法。同時,由于移動終端處理能力相對于PC機要低,因此
這種數據封裝和解封裝方法應該要盡可能的高效、資源消耗低,能夠方便開發人
北京郵電大學碩士研究生學位論文
31
員調用同時也能較好地適應移動終端設備的硬件環境。
2)保密性
目前絕大多數的企業移動應用軟件其內部所涉及的數據都是與企業或客戶
相關的數據,這些數據具有私密性,如果數據丟失或被竊取,則會給企業或客戶
造成不小的損失。因此,對于企業應用軟件,應該提供一種對數據的保護手段,
盡可能地降低數據被竊取的可能性,或者降低因數據丟失或被竊取所造成的損失。
3)減少用戶流量消耗
對于移動終端,用戶的流量是較為寶貴的資源。因此,移動應用應盡可能地
減少用戶流量的消耗,也就是應該盡可能地減少客戶端與服務器之間交互的數據
量。但是對于面向企業的移動應用軟件來說,其客戶端與服務器之間交互的數據
往往涉及企業一些、財務、管理、報表之類的數據,其數據量通常較大,因此導
致從數據內容上實現數據量的限制是不現實的。所以,對于企業移動應用,應該
提供一種方法對客戶端與服務器之間交互的數據進行壓縮,從而一定程度上減少
網絡流量。
4)與服務器的數據通信
當前的企業管理系統,其大部分的數據以及相應的業務邏輯處理都集中在企
業內部的服務器中,而客戶端基本上只起到發起請求,接收響應,顯示處理結果
等功能。因此,絕大多數企業移動應用軟件都需要與服務器進行通信交互。所以,
客戶端應該提供一種針對與服務器進行交互的方式。
基于以上共性,本文所提出的企業移動應用軟件結構圖如圖4-9所示,客戶
端結構分為四層,表示層、業務邏輯層、數據封裝層和通信層。
1)表示層
在表示層中,為開發人員提供了諸多可復用的組件;同時,這些組件也隨著
項目不斷增多和改善。這些組件,可以通過xml的方式進行描述和設計,而更好
的方式則是在xml描述的基礎上,將xml文件轉換為Java對象,提供針對該控
件的相關操作和方法,方便開發人員調用。
2)業務邏輯層
在業務邏輯層,每一個功能模塊視為一個Module。將為客戶端結構中的
Module提供一個具有通用性的父類——BaActivity。該類繼承Android中的
Activity,為Module的實現提供了相關對象和方法,包括監聽器Listener、Handler
等。各個Module將基于該父類進行各自業務邏輯的實現。
在業務邏輯層接收到表示層的數據后,將提取出相關參數,交由相關模塊進
行業務數據處理,將得到的數據封裝、加密等以完成對數據格式的轉換,最后調
用通信接口實現向服務器發出請求。另一方面,當業務邏輯層獲取到服務器所返
北京郵電大學碩士研究生學位論文
32
回的且經過數據解封裝等處理后的請求結果時,會通過一定方式(如Handler、
Listener等)通知UI進行更新,將結果展現給客戶。
可復用UI組件1可復用UI組件2
……
表
示
層
業
務
邏
輯
層
ListenerHandler
BaActivity
……
數
據
封
裝
層
Java對象序列化Java對象反序列化
DES加密DES解密
GZip壓縮GZip解壓縮
通信模塊
通
信
層
圖4-9企業移動應用客戶端結構圖
3)數據封裝層
數據封裝層提供了對數據的相關加工操作,從各個業務模塊獲得的數據在發
送給服務器之間,要先經過序列化的過程,來將對象轉換為字節序列,然后將其
進行DES加密以及Gzip壓縮操作,另一方面,從服務器獲取數據要經過解壓縮、
DES解密以及反序列的過程將字節轉換為相應業務模塊的JAVA對象,進而解析
后的數據才可以成為各個業務模塊處理的源數據。
4)通信層
通信層主要負責客戶端與服務器的數據通信,為數據封裝層提供了統一的接
口以供調用。根據CRM系統傳輸數據的特性,將經過數據封裝后得到的字節流
封裝成http數據包使用httppost的方式進行數據的傳輸,將傳輸方法封裝成接口
的形式,供上層開發人員使用。
針對本系統客戶端進行具體的結構設計,客戶端結構圖如圖4-10所示。
北京郵電大學碩士研究生學位論文
33
……
Modules
客戶端
Camera
SMS/
MMS
Wi-fi
/GRPS
Telephony
DAO
SQLite數
據庫
通信模
塊
服務器
主界面
UI框架
Layout
Views
……
監聽器
OnVOR
equeste
dListen
er
客戶
BaActivity
線索
BaActivity
銷售機會
BaActivity
銷售訂單
BaActivity
OnNetw
orkStat
usChec
kedList
ener
……
數據封
裝/解
析模塊
圖4-10CRM系統客戶端結構圖
本系統客戶端結構架構中UI層主要基于系統中可復用UI組件以及Android
自帶控件,各個功能模塊在BaActivity的基礎上負責各自業務邏輯處理,同時
根據業務需要,調用移動終端通話應用(Telephony)、短/彩信(SMS/MMS)、無
線網絡(WI-FI/GPRS)等相應設備接口,實現相關功能。將各個功能模塊的數
據交由數據封裝解析以及通信模塊進行處理,完成與服務的數據交互。
4.5本章小結
本章主要說明了CRM系統客戶端的設計,闡述了系統的物理結構和邏輯結
構,并通過流程圖說明了客戶端主要功能模塊的具體流程,并且對客戶端結構設
計做了詳細說明。
北京郵電大學碩士研究生學位論文
34
第五章CRM系統客戶端的實現
本章針對CRM系統客戶端,基于軟件設計工作與成果,闡述了客戶端界面
元素、底層功能以及客戶端中主要功能模塊的具體實現方式。
5.1客戶端界面元素以及底層功能的實現
5.1.1共用組件的實現
共用組件的實現基于Android上界面的設計開發。本節以客戶端中列表樣式
的控件為例來說明共用組件的實現方式。
在CRM系統中,較多模塊都使用到了列表樣式的布局。因此,客戶端將該
樣式實現為共用組件,以方便調用。共用組件創建流程圖如圖5-1所示。
首先需要對自定義控件所存放的界面進行相應設置并初始化。然后創建自定
義控件并初始化,為其添加文字、圖片等具體內容,并設置控件點擊事件處理(可
選)。完成對自定義控件的設置后,將其添加到指定控件中。可以添加多個自定
義控件。在完成對所有自定義控件的添加后,將整個控件添加到界面中加以顯示。
開始
聲明并初始化
相關對象
GroupLayout
groupLayout;
List
創建一個自定
義控件item
ListItemSingleLine;
CommonExpandable
ListItemView;……
設置item中的
內容
將item添加到
views中
是否添加完
item
將views添加進
GroupLayout中并
為其設置標題
是
為item設置點
擊事件
否
將
GroupLayout
添加進界面中
結束
圖5-1共用組件創建流程圖
本節以列表樣式的控件為例對共用組件的實現進行說明,該列表樣式控件需
要設置列表界面及其標題,同時需要設置列表項的界面。列表控件效果圖如圖
北京郵電大學碩士研究生學位論文
35
5-2所示。
圖5-2列表樣式共用組件示意圖
1)定義兩個布局文件:
a)列表內部每個item:layout_list_item_single_。該布局應盡可
能全面地囊括item中的內容;示意圖如圖5-3所示。
左側圖片左側文字
中間文字
(主)
中間圖片右側文字右側圖片
圖5-3列表item結構圖
b)整個列表界面layout:layout_,容納item的容器。
針對以上兩個布局文件,在工程中建立兩個控件類,用以與上述兩個控件相
關聯。而開發人員在需要使用控件時,直接使用這兩個類創建的對象即可。
2)創建并設置列表項:ListItemSingleLine
layout_list_item_single_的實現類,繼承Layout。
在ListItemSingleLine中,申明item中所定義的控件,包括:
a)ImageViewleftImageView,rightImageView,middleImageView;item中
左側、右側和中間的圖片;
b)TextViewleftTextView,rightMainTextView,right2TextView;item中左
側、中間和右側的文字。
定義ListItemSingleLine類中的構造函數,通過調用findViewById方法將以
上申明的對象與xml中定義的控件相關聯。
ListItemSingleLine類提供對點擊事件的支持。由于item繼承于LinearLayout,
則其可以直接調用tOnClickListener方法實現點擊事件的處理。
3)設置列表項點擊時界面的變化
當用戶點擊某item時,該item的背景會發生變化。這種依據用戶點擊事件
而更改背景的方式是Android開發過程中較為常用的界面處理方法。針對列表控
件中item的不同樣式,需要根據所點擊的item位于列表中的位置來決定item的
北京郵電大學碩士研究生學位論文
36
背景變化方式。
item的不同樣式如圖5-4所示。
圖5-4item不同顯示方式
item依據它在GroupLayout中的位置決定使用何種布局,四種布局及其位置
關系如表5-1所示。
表5-1四種布局及其所處位置
樣式所處位置對應的布局文件
頂部圓角矩形
GroupLayout具有多個item,該
item位于第一個。
corner_list_first_
尖角矩形
GroupLayout具有多個item,該
item既非第一個也非最后一
個,位于中間位置。
corner_list_normal_
底部圓角矩形
GroupLayout具有多個item,該
item位于最后一個。
corner_list_last_
圓角矩形
GroupLayout只有該item一個
元素。
corner_list_single_
對于上述四種item背景布局,需要定義該控件未被點擊和被點擊時兩種狀
態下的背景。如對于樣式1,其兩種背景為:list_item_bg_(未點擊時)、
list_item_bg_first_(點擊時);在corner_list_first_中對這兩種
的背景采用Android提供的背景選擇器(lector)加以實現。Selector通過對事
件的判斷(未點擊、點擊、獲取焦點等)定義各個事件下的背景。當狀態為“點
擊”(state_enabled)時,將背景更換為list_item_bg_first_,非點擊狀
態則為list_item_bg_。
4)創建并設置列表界面GroupLayout
GroupLayout是layout_的實現類,繼承Layout。
在GroupLayout中申明列表layout中定義的控件,包括:
1
2
3
4
北京郵電大學碩士研究生學位論文
37
?TextViewgroupTitleTextView:列表標題;
?LinearLayoutgroupContentLayout:用于存放列表項item。
同樣通過調用findViewById方法將以上申明的對象與xml中定義的控件相關
聯。GroupLayout還提供以下相關設置方法,如表5-2所示。
表5-2列表樣式控件提供的方法
方法說明
tGroupContent(List
設置列表內容,將列表項item添加進
列表中。
tGroupTitle(Stringtitle)
設置列表標題,若不輸入值,則隱藏
標題。
5.1.2通用父類——BaActivity的實現
BaActivity為Module的具體實現提供相關通用方法,包括向服務器的請求
方法、相關監聽器、以及通過Handler實現對狀態監聽結果的相關操作。
BaActivity類圖如圖5-5所示。
圖5-5BaActivity類圖
1)向服務器的請求
BaActivity將提供一個方法來實現發起請求的操作,該方法封裝了向服務
器發起請求的具體實現細節,其子類可以直接調用該方法實現發送請求。方法名
為:requestVO,所需要傳入的參數為:
?Stringurl:服務器地址
?WAComponentInstancesVOmWAComponentInstancesVO:請求參數封
裝對象,將在下一節詳細說明
?OnVORequestedListenerlistener:監聽器,用以監聽請求狀態
在requestVO方法中,將啟動一個線程(Thread)。該線程主要負責請求發
送和接收響應的工作,并在獲得服務器響應后,通知相應模塊進行處理。請求方
法為:requestVOFromServer(url,mWAComponentInstancesVO,headerList);
客戶端與服務器進行一次通信的流程圖如圖5-6所示。
在調用requestVO方法后,客戶端將等待服務器的響應。在獲取到服務器返
回的voHttpRespon后,建立一個消息對象(Messagemsg)并將voHttpRespon
北京郵電大學碩士研究生學位論文
38
添加進該消息對象中;若服務器因某些原因處理失敗,則將失敗狀態及其相關提
示說明添加到消息對象中。該消息對象通過Handler機制傳遞給相應的監聽器,
監聽器根據消息以及voHttpRespon的響應狀態進行相應的處理。
開始
生成并封裝請
求參數
服務器地
址,請求
參數對象
調用requestVO
發送請求
監聽服務器響
應
獲取服務器響
應
VOHttpR
espon
將服務器返回的相
應數據封裝進消息
對象中
Message
Handler根據消息及
服務器響應狀態,
進行相應的處理
結束
處理是否成
功
是
將處理失敗的狀態及
其相應的提示說明封
裝進Message對象中
否
圖5-6客戶請求服務器參數流程圖
2)監聽事件的通知
客戶端啟動了一個子線程進行服務器請求的操作。但由于Android平臺中只
允許主線程對UI進行操作和更新,所以當服務器返回處理結果時,子線程獲取
到結果但卻無法更新UI。因此,需要一種消息機制來實現界面的更新操作。
Android提供了一個非常方便且強大的消息處理機制——Handler。該消息機
制由消息循環、消息發送和消息處理三個部分組成。
a)消息循環
消息處理機制中,消息存放與消息隊列中,應用程序在運行過程中,將針對
該消息隊列建立一個循環。如果隊列中有消息,主線程會將消息去除并通知相應
的Handler處理;若隊列中沒有消息,則主線程會進入等待狀態,直到下一條消
息的到來。
b)消息發送
Android中主要通過Handler來實現消息的發送。在發送消息之前,需要定
義消息。消息類為Message。申明Message對象(msg)后,可以為其設置標志
和參數,主要包括消息類型()和消息內容()。
BaActivity中所定義的消息類型如表5-3所示。
北京郵電大學碩士研究生學位論文
39
對于服務器返回的VOHttpRespon對象,可以通過進行封裝。
在設置完消息內容后,直接調用Handler中的ndMessage(Messagemsg)將
消息發送至消息列表中。
表5-3Handler消息類型
消息類型說明
REQUEST_SUC請求成功。
REQUEST_FAIL請求失敗。
REQUEST_FAIL_NOTWASERVER服務器地址錯誤。
REQUEST_FAIL_SESSIONTIMEOUT處理超時。
BASE_ACTION_TOAST進行Toast消息提示。
c)消息處理
在申明Handler對象時,需要實現對消息的處理方法。實現方式為重寫
Handler中的handleMessage(Messagemsg)方法。在該方法中,通過屬
性實現不同消息區分,并針對各個消息實現其具體處理方式。
3)監聽器接口
BaActivity中,申明了針對請求狀態和網絡狀態的監聽器接口,以供其子
類實現。監聽器接口類圖如圖5-7所示。
+onNetworkStatusAvilable()
<
OnNetworkStatusCheckedListener
+onVORequested(invo:VOHttpRespon)
+onVORequestFailed(invo:VOHttpRespon)
<
OnVORequestedListener
圖5-7監聽器接口類圖
請求狀態監聽器接口(OnVORequestedListener)中主要包含兩個方法:請
求成功和請求失敗。網絡狀態監聽器接口(OnNetWorkStatusCheckedListener)包
含一個方法:網絡可用狀態。
在Module中,要實現對請求狀態和網絡狀態的監聽,可讓Module類直接
實現上述兩個接口并實現接口中各個方法的內部邏輯。
BaActivity使用Java多態的概念,在BaActivity中為監聽器接口創建對
象,并在Handler進行事件處理時,通過對象調用相應的方法進行處理。該方法
寫在BaActivity中,其子類在觸發Handler事件后,會自動調用子類中所定義
的監聽器中的具體方法進行相應的處理。
4)其他工具方法
BaActivity中還提供了一些工具方法以供調用,方法及其相關說明如表5-4
所示。
北京郵電大學碩士研究生學位論文
40
表5-4BaActivity其他方法說明
方法說明
readPreference(Stringkey)
SharedPreferences工具方法,用來讀取默認
Preferences文件中所指定key的對應值。
readPreference(String
xmlname,Stringkey)
SharedPreferences工具方法,用來讀取指定
Preferences文件中所指定key的對應值。
writePreference(Stringkey,String
value)
SharedPreferences工具方法,用來向默認
Preferences文件中寫入一個鍵值對。
writePreference(Stringxmlname,
Stringkey,Stringvalue)
SharedPreferences工具方法,用來向指定的
Preferences文件中寫入一個鍵值對。
toastMsg(StringmsgText)
Toast信息工具方法,用于通過Toast方式顯
示所指定的信息。通過使用Handler消息機
制,將信息傳給Handler進行顯示。
5.1.3模塊創建和初始化
本系統客戶端以模塊為單位進行功能的設計和開發,應該為各個模塊提供方
便的開發模式。
Module相關類圖如圖5-8所示。
+onBoard(inv:GridItemView,invo:WAComponentInstancesVO)
-mainClazz:Class
-moduleName:String
-title:String
-iconId:int
Module
+loadModules(inmoduleList:List
Modules
+onCreate()
+onTerminate()
+moduleList:List
+IS_DEBUG:bool
App
Application
-gridView:GridView
MainBoardActivityGridAdapter
圖5-8Module相關類圖
1)App:繼承自Application類,主要用于保存整個應用程序的全局變量及
進行應用程序的初始化相關工作。
2)Module:CRM系統中每一個特定業務為一個Module。
3)Modules:Module的集合。
4)MainBoardActivity:應用程序可復用的主界面Activity。
5)GridAdapter:Adapter類,實現主界面數據與界面的連接。
Module類的相關屬性及其說明如表5-5所示。
北京郵電大學碩士研究生學位論文
41
表5-5Module主要屬性
屬性名屬性類型說明
mainClazzClass模塊主Activity的類,該類為該模塊的首頁。
moduleNameString模塊名,用以唯一識別模塊
titleString模塊標題,主要用于在九宮格主界面上的顯示
iconIdint
模塊圖片素材id。模塊圖片素材存儲于項目工程
/res/drawable/目錄下,在項目中各個素材對應一
個id號。模塊素材id用于九宮格主界面中模塊
圖標的顯示。
模塊創建及加載流程如圖5-9所示。
開始
創建特定業務
的Module類
xxModule
在Modules類中
創建該Module
的對象
設置Module對
象的屬性值
mainClazz、
moduleName、
Title、iconId
將Module對象
添加到Module
列表中
List
moduleList
App調用
loadModules方
法加載Module
主界面獲取
moduleList并
加載
以九宮格方式
顯示功能模塊
入口
結束
圖5-9模塊創建加載流程圖
在創建一個模塊的時候,需要創建其特有的Module類。該模塊的Module
類繼承Module基類。
底層功能提供Modules類,用于加載所要實現的模塊。Modules類創建一個
List
moduleList)。
各個Module的創建和添加必須在程序啟動開始時進行,即在應用入口處執
行模塊的設置操作。Android應用程序的入口并非MainActivity,而是Application。
Application類是Android開發平臺提供給開發者用于保存全局變量的基本類,
它隨著package創建而創建,因此Application中相關操作的執行先于應用的Main
Activity。
本系統設計并實現了繼承自Application類的App類。App類所負責的任務
就是對應用中所有模塊的加載以及相關全局變量的設置。
北京郵電大學碩士研究生學位論文
42
在App類的onCreate方法中,執行模塊的加載工作,調用Modules提供的
接口即可:dules(moduleList)。
本客戶端提供企業移動應用的通用主界面。該主界面以九宮格的方式將客戶
端各個功能模塊的入口呈現出來。主界面類為MainBoardActivity。該類使用
Android提供的GridView控件實現九宮格界面。通過將App類的moduleList中
所有的模塊添加進GridView中,使客戶端主界面顯示所有模塊的入口。
5.1.4數據封裝的實現
1)對象序列化與反序列化
a)序列化對象
在CRM系統中,將客戶端與服務器之間通信的數據封裝為對象,以序列化
的形式實現對象的傳輸。所支持的序列化對象類為WAComponentInstanceVO。
WAComponentInstanceVO對象用戶描述一個對服務器的請求,它封裝了該
請求的模塊、具體請求的動作、以及請求的相關參數。WAComponentInstanceVO
的主要屬性如表5-6所示。
表5-6WAComponentInstanceVO主要屬性
屬性名類型說明
m_actionsActions
請求的行動,它與組件(模塊)編號一同區
分每一個請求。請求行為描述了該請求所要
完成的任務。
m_componentidString
組件id號,與行為共同區分每一個請求。
組件id號指代該請求數據哪一個功能模塊,
或者哪一個單獨的組件。
m_componentNameString組件名稱
m_componentVersionString
組件版本,該版本需要與服務器方的相應組
件的版本一致。
在WAComponentInstanceVO確定參數之前,需要首先確定此次請求所要執
行的操作,因此,需要對請求行動進行描述。本系統客戶端提供了Actions類用
以描述請求的行動。
Actions中最為重要的方法就是iontype(Stringm_actiontype)。該
方法定義了一個行動的具體類型。每一個功能請求都具有其請求行動的類型。服
務器在獲取客戶端發送來的請求后,會解析出該行動類型并進行查詢。在找到匹
配的行動后,服務器會進行該行動對應的業務操作。行動有可能包含多個,因此,
需要使用一個列表用以保存多個行動。當確定請求行動后,
WAComponentInstanceVO調用tActions(Actionsactions)方法將行動添加到VO
對象中。
北京郵電大學碩士研究生學位論文
43
確定行動后,VO對象需要確定相應的組件,確定該請求行為屬于哪一個組
件。WAComponentInstanceVO對象通過調用tComponentid(String
m_componentid)方法將組件id添加進VO中作為請求的其中一個參數。
請求中另一個重要的元素即為請求的參數。本系統提供了對參數的描述類。
ParamTagVO類通過鍵值對的方式描述一個參數。ParamTagVO類調用其構造函
數,將參數名和參數值作為鍵值對傳入并保存。由于ParamTagVO對象只用于描
述單個參數。而對于一次請求,可能需要傳入多個參數。以此,就需要使用
ParamTagVO數列進行多個參數的定義(ArrayList
定義好所有的請求參數后,ReqParamsVO類的實例添加該參數數列,然后
Action對象會將該ReqParamsVO對象添加進來。
一次請求的生成的參數流示意圖如圖5-10所示。
WAComp
onentInst
anceVO
Compo
nentId
ParamT
agVo
ParamT
agVo
ArrayList
ramTagVo>
ReqPar
amsVO
Action
……
Action
type
ArrayList
Actions
ArrayList
AComponent
InstanceVO>
WAComp
onentInst
anceVO
……
WAComponen
tInstancesVO
WAComponentInstanceVO
圖5-10請求生成參數流程圖
由上圖可以看出,最后在完成了多個VO的創建后,生成
WAComponentInstancesVO對象。該對象則是用于請求的參數。
b)序列化與反序列化流程
序列化流程圖如圖5-11所示。
在將實現序列化接口的對象傳入序列化方法中后,將針對該對象封裝兩層輸
出流,依次為:ByteArrayOutputStream和ObjectOutputStream。之后調用
writeObject方法將對象寫入指定的輸出流中,在將其轉換為字節數組,完成序列
化。反序列化流程圖如圖5-12所示。
北京郵電大學碩士研究生學位論文
44
開始
對象實現序列
化接口
Serializable
Object
傳入對象
創建
ByteArrayOutput
Stream輸出流
將baos封裝到
ObjectOutputS
tream輸出流
將指定的對象寫入
ObjectOutputStre
am中
關閉輸出流
將輸出內容轉
化為字節數組
格式
byte[]
結束
ByteArrayO
utputStream
baos
ObjectOut
putStream
oos
圖5-11對象序列化流程圖
開始
傳入數據byte[]
將數據封裝到
ByteArrayInputStre
am輸入流中
將bais封轉到
ObjectInputStrea
m輸入流中
ByteArrayIn
putStream
bais
ObjectInp
utStream
ois
從流中讀取對
象
Object
result
關閉輸入流
結束
圖5-12反序列化流程圖
對于傳入反序列化方法的字節流數據,使用輸入流ByteArrayInputStream和
ObjectInputStream對其進行封裝,然后通過調用readObject方法,從輸入流中讀
取對象并保存,完成反序列化操作。
2)DES加解密
本系統中涉及有關企業客戶,線索以及訂單等敏感信息,因此有必要對數據
的傳輸進行加密。本系統采用DES加密算法。對于DES加解密,Java提供了良
好封裝的接口以供調用。在執行加解密操作之前,需要進行相應的準備工作,如
設置工作模式、填充模式、初始化向量,獲取密鑰等等。DES一共有電子密碼
本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋
模式(OFB)四種模式,不同平臺下,有關DES加密的默認初始化工作模式是
北京郵電大學碩士研究生學位論文
45
不同的,因此,實現時為了和服務器端加解密保持對應一致,應逐個進行設置,
出于對加解密的效率以及抗攻擊等因素考慮,本系統采用加密塊鏈模式CBC模
式。CBC模式示意圖如圖5-13所示。
明文區塊1明文區塊i-1……明文區塊i……明文區塊n
+IV
加密
+
密文區塊i-1密文區塊1……
加密……
密文區塊i密文區塊n……
密文區塊i=明文區塊i⊕加密(明文區塊i-1)
圖5-13CBC工作模式圖
CRM系統客戶端對數據的加密流程如圖5-14所示。
開始
創建一個用于生
成密鑰的
DESKeySpec對象
獲取初始向
量
DESKeySp
eckeySpec
Algorithm
Parameter
Speciv
創建一個密
鑰工廠
SecretKeyF
actory
keyFactory
通過密鑰工廠,
使用keySpec對
象生成密鑰
Keykey
創建Cipher
對象,設置
其工作模式
使用密鑰和初
始向量對cipher
進行初始化
Cipher
cipher
執行加密操
作
是否需要
ba64編碼
對密文進行
ba64編碼
是
生成密文
結束
否
byte[]
加
解
密
準
備
工
作
輸入明文byte[]
圖5-14數據加密流程圖
在執行加密操作之前,需要進行相應的準備工作。
DES加密中,密鑰是加解密的關鍵所在,它作為一個輸入參數,在加解密
過程中充當操作執行的“鑰匙”。通過DESKeySpec(DES_es("UTF-8"))
北京郵電大學碩士研究生學位論文
46
方法對密鑰參數進行設置。然后創建一個密鑰工廠對象(SecretKeyFactory)。通
過調用generateSecret(keySpec)方法獲取密鑰。然后通過調用
(T_MODE,key,iv)方法進行初始化工作,最后通過
l(data)進行加密操作。再完成加密操作后需要確定是否進行ba64
編碼。如需要,則對數據再進行ba64編碼最終生成密文。
對數據的解密操作流程如圖5-15所示。
開始
輸入密文
加解密準備
工作
使用密鑰和初
始向量對cipher
進行初始化
對密文進行
ba64編碼
是否需要
ba64編碼
是
執行解密操
作
生成明文
否
結束
byte[]
byte[]
圖5-15數據解密流程圖
解密操作前同樣需要進行準備工作,然后確認是否需要進行ba64編碼,
若需要則對數據進行ba64編碼。之后同樣調用doFinal方法執行解密操作。最
終將解密后的明文以字節數組方式保存。
本客戶端的底層功能提供DES加密的工具類,DESEncrypt。該類提供兩個
工具方法,即加密方法encode和解密方法decode。
3)GZip壓縮解壓縮
由于手機端帶寬有限,未經壓縮的數據在傳輸過程中耗費時間,而且還將占
用有限的網絡帶寬,帶來較差的用戶體驗。本系統采用Gzip壓縮技術解決上述
問題。對傳輸的數據進一步進行壓縮處理,不但可以提高數據的安全性,同時也
減少占用網絡帶寬,從而提高數據的機密性和數據的傳輸效率。
Java提供了良好定義的接口支持GZip壓縮和解壓縮。為方便開發人員使用,
將向上層直接提供壓縮和解壓縮的工具類及其相應方法,不需要進行對象的創建,
直接使用壓縮或解壓縮方法即可完成相關功能。
壓縮使用Java提供的GZIPOutputStream類及其write方法實現。解壓縮使
用Java提供的GZIPInputStream類及其read方法實現。
本客戶端提供的壓縮和解壓縮方法相關說明如表5-7所示。
北京郵電大學碩士研究生學位論文
47
表5-7壓縮解壓縮方法說明
方法名參數返回值說明
gZipbyte[]databyte[]
壓縮方法,傳入壓縮前源數據(字節數
組),返回壓縮后數據(字節數組)。調
用方式:
(data);
unGZipbyte[]databyte[]
解壓縮方法,傳入壓縮后的數據(字節
數組),返回解壓縮后的源數據(字節數
組)。調用方式:
(data);
4)數據封裝、解析
本客戶端底層功能將數據封裝和解析的具體實現對外隱藏,為上層提供封裝
好的方法。同時,為方便調用,封裝解析方法將直接通過工具類提供,而不需要
通過創建對象的方式進行方法調用。相關模塊只需要直接通過類名調用方法即可
實現數據封裝、解析功能。
數據封裝方法包含對象序列化、數據加密和數據壓縮方法,向用戶提供一個
調用接口,具有高度的封裝性。同樣,數據解析方法包含對象反序列化、數據解
密和數據解壓縮方法,對外提供統一的接口。
數據封裝流程圖如圖5-16所示。
將對象輸入數據封裝方法后,對其進行序列化操作,生成字節流。通過相關
參數,確定對數據進行加密和壓縮的順序。同時,數據封裝方法提供加密操作和
壓縮操作的開關,并將開關以參數的形式提供給調用者。在完成對數據的加密和
壓縮操作(或者不執行)后,數據以字節流形式被用于向服務器發送請求。
數據解析流程圖如圖5-17所示。
將字節流數據輸入解析方法后,根據相關參數,確認解密和解壓縮的順序。
同時,根據所設置參數,確定是否進行解密操作和解壓縮操作。在完成對數據的
解密和解壓縮操作(或者不執行)后,對字節流數據進行對象反序列化操作,將
數據還原為對象并保存,完成對數據的解析。
北京郵電大學碩士研究生學位論文
48
開始
輸入原始數
據
Object
進行對象序
列化操作
byte[]
是否先加
密后壓縮
是否進行
加密
是
執行加密操
作
是
執行壓縮操
作
是否進行
壓縮
是
生成封裝后
數據
byte[]
是否進行
壓縮
執行壓縮操
作
是
執行加密操
作
是否進行
加密
是
結束
否
否否
否
開始
輸入原始數
據
byte[]
是否先解密
后解壓縮
執行解密操
作
是否進行
解密
是
是
是否進行
解壓縮
執行解壓縮
操作
是
否
是否進行
解壓縮
否
執行解壓縮
操作
是否進行
解密
執行解密操
作
是
否
執行反序列
化操作
否
Object
結束
圖5-16數據封裝流程圖圖5-17數據解析流程圖
數據封裝和解析方法的說明如表5-8所示。
表5-8數據封裝解析方法說明
方法名輸入參數返回值說明
encode
obj:所封裝的對象;
nisEncrypt:是否需要
加密;
ryptiontype:加解密
類型;
nisCompress:是否需
要壓縮;
ocessOrderorder:對
象源byte數組的加密壓縮
順序。
byte[]
1.將所需要封裝的對象轉
換為字節數組;
2.提供加密、壓縮的開關,
方便操作;
3.調用方式:
(obj,true,
1,true,
RYPT_FIRST);
decode
[]src:封裝好的數據;
nisEncrypt:是否需要
解密;
ryptiontype:加解密
類型;
nisCompress:是否需
Object
1.將封裝好的數據解析為
原始對象;
2.提供解密、解壓縮的開
關,方便操作;
3.調用方式:
(src,true,1
北京郵電大學碩士研究生學位論文
49
要解壓縮;
ocessOrderorder:對
象源byte數組的解密解壓
順序。
,true,
YPT_FIRST);
對于方法提供的加解密類型,可選項為:
?需要ba64編碼的加解密類型;
?不需要ba64編碼的加解密類型;
對于方法提供的加解密、壓縮解壓縮的順序,可選項為:
?T_FIRST:該順序對于數據封裝和雞西是
相反的,即先加密后壓縮、先解壓縮后解密;
?SS_FIRST:先壓縮后加密、先解密后解
壓縮。
5.1.5通信模塊的實現
本系統客戶端采用HTTP方式與服務器通信。通信模塊類圖如圖5-18所示。
-waComponentInstancesVO:WAComponentInstancesVO
-requestHeaders:Header[]
-responHeaders:Header[]
-statusCode:int
VOHttpRespon
VOHttpHandler
-cache:VOHttpRespon
+requestVOFromServer(inurl:String,in
mWAComponentInstancesVO:WAComponentInstancesVO,
inheaderList:List
圖5-18通信模塊類圖
?VOHttpHandler:工具類,提供了向服務器發送請求的方法
(requestVOFromServer)。
?VOHttpRespon:服務器應答數據類,表示服務器返回的數據。
通信模塊首先創建一個默認的HTTP客戶端(DefaultHttpClient)對象,該
對象用于執行向服務器發起請求的操作。創建同時,需要為該對象設置相關參數,
如連接超時的時間等等。
本系統使用POST方式實現HTTP連接,因此,需要創建HttpPost請求對
象。該對象將負責確定服務器地址并攜帶相關頭信息以及請求參數,實現向服務
器的請求。
1)設置服務器地址
在創建Post請求時,創建一個HttpPost對象并將服務器地址作為參數傳入。
北京郵電大學碩士研究生學位論文
50
2)設置請求頭信息
底層功能所提供的通信操作對外的接口將接收調用方傳入的參數,其中就包
括Post請求的頭信息。頭信息通過Header類實現,Post請求直接調用tHeader
方法實現頭信息的設置。
3)設置請求參數
請求參數在Http中以Entity(實體)的方式封裝。
本系統的請求所需要的參數如表5-9所示。
表5-9請求參數
參數類型說明
mWAComponentI
nstancesVO
WAComponentInsta
ncesVO
包含請求具體業務參數的對象
isEncryptboolean請求數據是否已加密
encryptiontypeint加密方式
isCompressint請求數據是否已壓縮
dpOrderDataProcessOrder
數據處理順序,及數據加密、壓縮的
順序
在對上述參數進行設置后,通過調用數據封裝方法(encode)將其序列化、
加密、壓縮并轉換為字節數組。通過創建ByteArrayEntity類實例將所有參數封
裝起來。request對象通過調用tEntity方法將請求參數添加到請求對象中。
4)執行請求操作
在將上述參數等數據準備并設置好后,client執行execute方法向服務器發送
請求,并接受服務器的返回值。返回值通過HttpRespon類的實例接受。
5)返回參數的解析
在接收到服務器返回參數后,首先需要對返回狀態進行判斷。非200狀態則
可以進行參數解析。
通過調用數據解析方法(decode)并結合相關參數對服務器返回的數據進行
解析。解析方法返回解析數據對象。
底層功能提供服務器響應類用以封裝服務器返回來的數據以及相關頭信息
和狀態碼。該類及其參數如表5-10所示。
表5-10服務器返回數據封裝類
類名屬性名屬性類型說明
VOHttpR
espon
waComponentInst
ancesVO
WAComponentIn
stancesVO
反序列化的到的
WAComponentInstancesVO
requestHeadersHeader[]本次請求的頭信息
responHeadersHeader[]本次請求返回結果的頭信息
statusCodeint本次請求返回的Http狀態碼
北京郵電大學碩士研究生學位論文
51
綜上所屬,本客戶端底層功能為上層提供良好封裝的通信方法,該方法可直
接通過類名進行調用,不需要進行類實例的創建,方便使用。調用方法如下。
VOHttpResponvoHttpRespon=tVOFromServer(
url,mWAComponentInstancesVO,headerList);
5.2客戶端主要模塊的實現
本系統主要是為了提高銷售業務員的工作效率,管理好客戶資源,監控銷售
過程。下面分別對客戶、聯系人、線索、銷售訂單以及行動等各模塊的實現進行
闡述。
出于對企業知識產權保護的目的,本文中所有關于客戶端界面的效果圖均
隱去。
5.2.1客戶功能模塊的實現
客戶模塊類圖如圖5-19所示。
CustomerModule
+onBoard(inv:GridItemView,invo:WAComponentInstancesVO)
-mainClazz:Class
-moduleName:String
-title:String
-iconId:int
Module
CustomerMainActivity
BaActivity
CustomerDetailActivityCustomerCreditStatusActivity
-customergroup:List
-cstlistchild:List>
-cstexpListView:CommonExpandableListItemView
CommonListAdapter
CommonExpandableListItemView
BaExpandableListAdapter
-id:String
-name:String
-type:String
-data:String
-creater:String
CommonExpandableListItem
WAEXLoadListView
ExpandableListView
WADetailView
圖5-19客戶模塊類圖
a)CustomerModule:客戶業務模塊Module,繼承Module類。
b)CustomerMainActivity:客戶模塊主類,繼承BaActivity,用以顯示
客戶列表。
c)WAEXLoadListView:自定義控件,繼承ExpandableListView,具有
上下滑動刷新功能的可擴展列表。
d)CommonListAdapter:Adapter類,繼承BaExpandableListAdapter,
用以實現客戶列表數據在界面上的顯示。
e)CommonExpandableListItem:用以表示可擴展列表中的一個Item的
北京郵電大學碩士研究生學位論文
52
數據。
f)CommonExpandableListItemView:可擴展列表中Item的界面。
g)CustomerDetailActivity:繼承BaActivity,用以實現客戶詳情界面。
h)CustomerCreditStatusActivity:繼承BaActivity,用以實現客戶信用
狀況界面。
i)WADetailView:自定義控件,用以實現列表樣式的界面布局。
1)客戶列表
客戶列表為客戶主界面中的主要元素,客戶主界面為CustomerMainActivity,
該Activity繼承BaActivity基類。客戶列表功能模塊時序圖如圖5-20。
用戶
UI
獲取客戶列表
CustomerMainActivity
getCustomerList()
VOHttpHandler
requestVOFromServer()
client:DefaultHttpClient
服務器
HttpRespon
voHttpRespon
voHttpRespon
顯示客戶列表
decode()
requestVO()
execute()
encode()
獲取客戶列表請求
圖5-20客戶列表功能模塊時序圖
用戶列表使用getCustomerList()函數獲取列表參數,通過VOHttpHandler類
中requestVOFromServer()方法向服務請求數據,voHttpRespon用于接收服務器
數據,在獲取到服務器傳回的數據后,對客戶列表界面進行更新,完成刷新操作。
2)列表數據加載
客戶列表控件實現數據的加載,使用Android提供的Adaptet機制。Adapter
是Android中控件與數據之間交互的“橋梁”。Adapter幫助控件定義了控件內部
子控件的界面,同時控件通過加載Adapter,使其能夠將添加并加以顯示。
WAEXLoadListView繼承自ExpandableListView,定義繼承自
BaExpandableListAdapter的類CommonListAdapter來實現WAEXLoadListView
北京郵電大學碩士研究生學位論文
53
控件的數據加載。
WAEXLoadListView中的一個重要的概念就是分組概念,即數據按照一定規
則進行分組,界面以Group指代一個組,而組內的元素則用Child表示。因此,
CommonListAdapter類中實現了針對Group和Child的界面實現和數據加載的功
能。CommonListAdapter類中重要的方法如表5-11所示。
表5-11CommonListAdapter類方法說明
方法名參數返回值說明
getGroupintgroupPositionObject
Group數據以List的方式存
儲。該方法從GroupList中獲
取指定位置的Group數據。
getGroupCount無int
根據GroupList內容確定
Group數量
getGroupIdintgroupPositionlong獲取指定位置的Group的id
getGroupView
intgroupPosition;
booleanisExpanded;
ViewconvertView;
ViewGroupparent;
View
構建Group界面和數據的方
法。通過convertView為該
Group設置界面。通過
groupPosition獲取相應的
Group數據并添加到Group內
相應的控件中。
getChild
intgroupPosition;
intchildPosition
Object
Child以List>的
方式存儲數據。該方法從
ChildList中獲取指定位置的
數據。
getChildrenCountintgroupPositionint
獲取指定Group中的Child數
量
getChildId
intgroupPosition;
intchildPosition
long獲取指定位置的Child的id
getChildView
intgroupPosition;
intchildPosition;
booleanisLastChild;
ViewconvertView;
ViewGroupparent
View
構建Child界面和數據的方
法。通過convertView為該
Child設置界面。通過
groupPosition和childPosition
從ChildList中提取相應的數
據添加到Child界面內的各個
控件中。
完成對CommonListAdapter的定義后,在Activity中創建該Adapter對象的
實例,對WAEXLoadListView中數據進行獲取及構建成符合Adapter規定的格式。
WAEXLoadListView通過調用tAdapter方法完成與Adapter的連接,從而實現
北京郵電大學碩士研究生學位論文
54
列表界面的數據顯示功能。
3)客戶詳情
在客戶列表處,用戶點擊某一客戶,界面將跳轉至客戶詳情。Activity之間
的跳轉使用Intent實現。因此,需要為客戶列表中的每一個item設置其點擊事
件。
各個item的點擊事件在CommonListAdapter中通過getChildView方法進行
設置。getChildView方法中的convertView參數即為Child的界面。因此,通過
該參數,調用tOnClickListener方法為其設置點擊事件監聽器,并實現監聽器
回調函數的具體內容。
在onClick方法中,創建Intent實例并確定所要跳轉到的Activity,此處為客
戶詳情Activity:CustomerDetailActivity,并通過intent實例調用putExtra方法為
此次跳轉添加相關參數。在完成跳轉的準備工作后,調用startActivity(intent)方
法即實現了向某客戶詳情界面的跳轉功能。
跳轉至CustomerDetailActivity后,需要向服務器獲取該聯系人的相關詳細
信息。Activity根據所傳來的參數,生成并封裝向服務器的請求,調用與服務器
通信的requestVO方法發起請求。在接收并解析了服務器的響應后,提取出客戶
的相關信息,顯示在客戶詳情界面中。
客戶詳情界面中,同樣通過使用Intent,為客戶提供相關對象的查看功能。
為詳情界面下方相關對象按鈕設置點擊事件,通過設置所要跳轉到的Activity,
實現相關對象界面的跳轉。
客戶詳情中包含了相關聯系人的聯系人方式,用戶可以直接向聯系人發起通
信操作。通信方式包括:撥打座機、撥打手機、發送短信以及發送電子郵件。
客戶詳情提供了與當前客戶相關的其他信息的查看功能,包括:信用情況、
行動、銷售訂單、銷售機會和聯系人。
5.2.2聯系人模塊的實現
聯系人模塊的類圖如圖5-21所示。
a)ContactModule:聯系人模塊Module,繼承Module類。
b)ContactMainActivity:聯系人列表Activity,繼承BaActivity,實現
聯系人列表界面。
c)WAEXLoadListView:具有上下滑動刷新功能的可擴展列表控件。
d)CommonListAdapter:Adapter類,用以實現聯系人列表數據在界面
上的顯示。
e)ContactDetailActivity:聯系人詳情類,繼承BaActivity,實現聯系
人詳情界面。
北京郵電大學碩士研究生學位論文
55
f)WADetailView:自定義控件,實現列表樣式的界面布局。
ContactModule
+onBoard(inv:GridItemView,invo:WAComponentInstancesVO)
-mainClazz:Class
-moduleName:String
-title:String
-iconId:int
Module
-cstgroup:List
-cstchild:List>
-adapter:CommonListAdapter
ContactMainActivity
-detailView:WADetailView
ContactDetailActivity
WAEXLoadListView
WADetailView
-customergroup:List
-cstlistchild:List>
-cstexpListView:CommonExpandableListItemView
CommonListAdapter
BaActivity
圖5-21聯系人模塊類圖
聯系人模塊主要為用戶提供聯系人列表的查看,聯系人詳情的查看以及聯系
人通信的功能。
1)聯系人列表
聯系人主界面為ContactMainActivity,該類繼承了BaActivity。聯系人列
表以時間因素對聯系人進行分組,包括:本周、上周、更早。在主界面聯系人列
表處同樣使用WAEXLoadListView實現分組效果。聯系人Activity調用:
createContactGroupVOWtihRequestOfMainActivityAppend方法生成聯系人列表請
求,設置請求相關參數,并返回WAComponentInstancesVO類型的請求數據。
聯系人調用基類提供的requestVO方法向服務器發起請求。當客戶端獲取到
聯系人列表數據后,通過Adapter機制,將列表數據添加到WAEXLoadListView
控件中。
2)主聯系人標記
在聯系人列表中,針對聯系人列表item,設計并實現了具有復用性的item
界面控件。該控件名為CommonExpandableListItemView,該控件主要用于可擴
展列表(ExpandableListView)中的列表項界面。該控件結構示意圖如圖5-22所
示。
listIcon
upText
downText
rightDescri
ption
rightDown
Description
rightar
row
圖5-22列表項控件結構圖
如圖所示,該控件主要包括以下幾個部分:
北京郵電大學碩士研究生學位論文
56
?listIcon:ImageView類型,主要用于顯示該item的相關圖標。
?upText:TextView類型,item中的主要文字顯示部分,位于上層。
?downText:TextView類型,item中的主要文字顯示部分,位于下層。
?rightDescription:TextView類型,輔助文字說明,位于上層,一般不
顯示。
?rightDownDescription:TextView類型,輔助文字說明,位于下層,
一般不顯示。
?rightarrow:ImageView類型,主要用于顯示指向右側的“箭頭”圖
片,說明該item可點擊。
在使用上述控件進行聯系人列表項界面設置時,listIcon表示聯系人圖標、
upText顯示聯系人姓名、downText顯示聯系人所屬公司、rightarrow顯示右向箭
頭,對于主聯系人標識,采用rightDescription進行表示。將其背景設置為主聯系
人標識圖片,并將該控件設為可見。
3)聯系人詳情
用戶點擊聯系人列表中的某一聯系人后,客戶端向服務器發起獲取聯系人詳
情的請求,并跳轉至該聯系人的詳細信息界面。
聯系人詳細信息會將聯系人的姓名、是否為主聯系人、各種聯系方式、所屬
公司以及創建時間顯示出來。
用戶點擊聯系人的聯系方式即可進行快速的通信,通信方式包括:撥打座機、
撥打手機、發送短信、發送郵件等。快速通信使用Intent類,通過指定Intent的
行為,并設置相關參數,調用Android提供的電話、短信等功能模塊的接口加以
實現。
聯系人詳情界面也提供了聯系人相關對象的查看功能,包括:行動、線索、
客戶。
5.2.3線索模塊的實現
線索模塊類圖如圖5-23所示。
a)ClueModule:線索模塊Module,繼承Module類。
b)ClueMainActivity:線索主Activity,繼承BaActivity,用以實現線
索列表界面。
c)CommonListAdapter:Adapter類,用于實現線索列表數據的顯示。
d)ClueDetailActivity:線索詳情Activity,繼承BaActivity,實現線索
詳情界面。
e)WADetailView:自定義控件,用以實現列表樣式的界面布局。
北京郵電大學碩士研究生學位論文
57
ClueModule
+onBoard(inv:GridItemView,invo:WAComponentInstancesVO)
-mainClazz:Class
-moduleName:String
-title:String
-iconId:int
Module
-clueListView:ExpandableListView
-cstchild:List>
-adapter:CommonListAdapter
ClueMainActivity
-detailView:WADetailView
ClueDetailActivity
WADetailView
BaActivity
-customergroup:List
-cstlistchild:List>
-cstexpListView:CommonExpandableListItemView
CommonListAdapter
圖5-23線索模塊類圖
線索模塊主界面通過列表形式顯示用戶的所有線索信息。
1)線索列表
線索主界面為ClueActivity,通過可擴展列表的方式將線索分組進行顯示,
其依據時間因素,將線索劃分為本周、上周、更早三類線索。
線索主界面通過ExpandableListView控件加以呈現。主界面中,通過
createClueListVOWtihRequestOfMainActivityAppend方法設置相關參數,生成線
索信息請求。
客戶端調用requestVO方法發送請求。通過所設定的監聽器,在獲取服務器
返回的線索列表信息后,進行相應的數據解析;提取出列表信息,通過繼承自
Ba的CommonListAdapter生成列表界面并填入數據,生成線索列表。
2)線索搜索
用戶在線索列表處進行線索的搜索操作。用戶點擊搜索輸入框,界面顯示以
往搜索關鍵字,用戶可以選擇其中某個關鍵字進行搜索,或者用戶可以輸入關鍵
字進行搜索。若用戶輸入,則輸入后的關鍵字添加入搜索關鍵字歷史記錄,在下
次搜索時顯示在搜索歷史記錄列表中。關鍵字中包含“全部”關鍵字,即顯示全
部線索。
搜索界面使用ListView控件顯示線索查詢歷史記錄。記錄通過
SharedPreference保存在應用中,通過基類BaActivity提供的readPreference、
writePreference方法實現對歷史記錄的讀取和添加。
獲取保存的查詢歷史記錄后,通過Adapter將數據添加到ListView中。當用
戶點擊某個歷史記錄后,客戶端將依據所點擊的關鍵字進行查詢。
3)線索詳情
用戶點擊了線索列表中的某一條線索后,界面將跳轉至線索詳情界面,并向
北京郵電大學碩士研究生學位論文
58
服務器發送請求獲取線索詳細信息,加以顯示。
線索詳情界面顯示線索名稱、線索來源,并提供相關聯系人的通信信息以及
地址、郵編等。點擊通信方式,客戶端將相關參數傳入并通過Intent啟動Android
提供的通信功能。可以進行的快速通信包括:撥打座機、撥打手機、發送短信和
發送郵件。
線索詳情下方提供了查看線索相關對象的入口,可以查看聯系人、客戶和行
動。
5.2.4銷售訂單模塊的實現
銷售訂單模塊類圖如圖5-24所示。
圖5-24銷售訂單類圖
a)OrderModule:訂單模塊Module類,繼承Module類。
b)OrderListActivity:訂單主界面Activity,繼承BaActivity類,用于
實現訂單列表界面。
c)WAEXLoadListView:自定義控件,具有上下滑動刷新功能的可擴展
列表控件。
d)OrderListViewAdapter:Adapter類,用于實現訂單列表數據的顯示。
e)OrderAttentionListViewAdapter:Adapter類,用于實現關注訂單列表
數據的顯示。
北京郵電大學碩士研究生學位論文
59
f)OPListItemViewData:表示列表項的數據。
g)OrderDetailActivity:訂單詳情Activity,繼承BaActivity,用于顯
示訂單詳細信息。
h)WADetailView:自定義控件,用于實現列表樣式的界面布局。
i)OrderCustomerDetailActivity:訂單客戶信息Activity,繼承
BaActivity,用于顯示訂單相關客戶的詳細信息。
j)EmployeeDetailActivity:訂單業務員Activity,繼承BaActivity,用
于顯示與訂單相關的業務員信息。
k)AttachmentListActivity:附件列表Activity,繼承BaActivity,用于
顯示訂單相關的附件列表。
l)AttachmentActivity:附件Activity,繼承BaActivity,用于顯示附
件信息。
m)OrderRowActivity:訂單行Activity,繼承BaActivity,用于顯示訂
單行信息。
n)OrderRowAdapter:Adapter類,用于實現訂單行數據的顯示。
o)ProductDetailActivity:產品Activity,繼承BaActivity,用于顯示訂
單行明細。
p)OrderExecuteActivity:訂單執行Activity,繼承BaActivity,用于顯
示訂單執行相關信息。
1)訂單列表
訂單主界面為:OrdersListActivity。該類繼承自父類BaActivity。在訂單列
表中,各個訂單默認依時間進行分組,即擁有相同創建時間的訂單為一組。同時,
客戶端提供訂單分類查看的功能,提供的類別包括:本周、上周、本月和全部。
在每一類中,同樣采用時間分組方式進行訂單列表的顯示。
訂單列表使用可擴展列表控件WAEXLoadListView實現。以各訂單的時間作
為Group,訂單基本內容作為Group下的Child。
OrdersListActivity通過調用createGetOrderListRequestVO生成訂單列表請求,
需要為其設置組件id、行為、請求param等相關參數。
客戶端通過調用requestVO方法將請求發送給服務器,同時建立監聽器以獲
取服務器的響應。通過監聽器的回調函數,對服務器返回的數據進行解析。在提
取出訂單列表數據后,通過OrdersListViewAdapter建立列表各項的界面并添加數
據,加以顯示。
訂單列表項采用CommonExpandableListItemView控件實現界面布局。該控
件內部各個子控件與訂單信息的對應關系如表5-12所示。
北京郵電大學碩士研究生學位論文
60
表5-12界面元素與訂單信息的對應關系
界面元素界面元素說明訂單信息
listIcon圖標imageView訂單圖標
upText上方說明文字訂單編號
downText下方說明文字客戶簡稱
rightarrow向右箭頭imageView右向箭頭
rightDescription上方輔助文字說明訂單金額
rightDownDescription下方輔助文字說明訂單日期
OrdersListViewAdapter中,通過getGroupView方法設置Group界面及其數
據。Group界面使用已定義好的界面布局文件_list_item_title,并
將Group數據添加進對應的控件中。對于Child,OrdersListViewAdapter調用
getChildView方法,根據表5-12所指出的界面控件與訂單信息的對應關系,將
訂單信息添加到界面中。
2)訂單分類顯示
訂單界面中客戶端提供按時間進行分類的顯示方式,包括:本周、上周、本
月和全部。用戶在選擇了相關顯示方式后,客戶端將該方式作為參數向服務器發
送請求,更新訂單列表。
同時,在某種時間分類方式下,客戶端還提供了二級分類方式,包括:日期、
客戶和業務員。界面提供三種分類方式的按鈕。客戶端使用groupCode參數表示
這三種分類方式,其對應的參數值分別為:日期:date;客戶:customer;業務
員:salesman。
用戶在點擊選擇了某種分類方式后,客戶端會將groupCode作為參數向服務
器發送請求。在對服務器的響應數據進行解析后,訂單列表將顯示相應分類的訂
單內容。同時,各個分類下,WAEXLoadListView控件將Group顯示為當前分類
的類別。如選擇了“日期”類別,列表會根據訂單的日期進行分組,各組的Group
將顯示該組訂單的日期以及組內訂單數;如選擇了“客戶”類別,列表會根據訂
單的客戶進行分組,各組的Group將顯示該組訂單的客戶名稱以及關于該客戶的
訂單數;“業務員”以此類推。
3)關注訂單
用戶可以將所查看的訂單添加至訂單關注列表中,方便用戶查看重點關注的
訂單。為實現關注訂單列表,保證用戶在退出應用下一次登錄后人就能查看到所
關注的訂單,客戶端需要維護一張保存關注訂單信息的數據庫表。
本系統客戶端使用Android提供的SQLite數據庫。建立的數據庫名稱為:
DATABASE_NAME="crm_order_databa";
訂單關注表名稱為:
北京郵電大學碩士研究生學位論文
61
DATABASE_TABLE="crm_tb_order";
在訂單模塊中,創建工具類OrderDatabaUtil用以處理針對訂單數據庫的相
關操作。在該類中,創建了SQLite數據庫的類及其實例:SQLiteDatabamDb。
該類提供了針對數據庫的增刪改查等操作。同時,創建DatabaHelper類及其實
例:DatabaHelpermDbHelper。該類繼承自Android提供的數據庫訪問幫助類
SQLiteOpenHelper。DatabaHelper類重寫了SQLiteOpenHelper中的onCreate方
法,用于根據傳入的SQL語句創建數據庫。
DatabaHelper提供了獲取數據庫對象的方法。通過調用getWritableDataba
方法,獲取數據庫對象并賦予SQLiteDatabamDb,用以實現其他操作。
OrderDatabaUtil類提供了針對數據庫的增刪改查操作。
?添加操作
構造一個ContentValues對象,通過調用它提供的put方法以鍵值對的方式
為表中每一列添加數據。最后通過數據庫對象mDb調用inrt方法將數據加入
數據庫表中呢。
?刪除操作
刪除操作較為簡單,只需要根據表中唯一標識各行數據的主鍵,通過調用
delete方法即可刪除對應的數據。
?更新操作
更新操作與添加操作類似,需要使用ContentValues封裝新數據。根據指定
的主鍵,調用update方法更新相應的數據。
?查詢操作
根據用戶輸入的查詢條件,調用數據庫提供的query方法即可獲取所查詢數
據在表中的位置,以Cursor數據類型返回,即指向該數據的指針,方便后續的
操作。
訂單關注相關功能順序圖如圖5-25所示:
用戶在進入銷售訂單主界面時,客戶端會向數據庫進行關注訂單數據的查詢
和提取,將所有關注的訂單顯示在關注訂單列表中。同時為用戶提供關注訂單和
所有訂單切換的接口。
在關注訂單列表中,用戶可以點擊查看某訂單的詳細信息,同時也可以刪除
某關注的訂單(不會刪除該訂單本身)。
在用戶進入訂單詳情界面時,用戶可以對該訂單進行關注或取消關注的操作。
訂單詳情中,客戶端在界面右上方以“五角星”圖片作為訂單是否被關注的標記。
用戶可以點擊該圖片關注訂單或取消關注。
北京郵電大學碩士研究生學位論文
62
UI
查看所關注的訂單
OrdersListActivity
updateOrderAttentionView()
頂層包::用戶
orderdb:OrderDatabaUtil
關注訂單列表
顯示關注訂單列表
mDbHelper:DatabaHelper
mDb:SQLiteDataba
getWritableDataba()
query()
Cursor
clo()
clo()
orderdb
open()
fetchOrder(dbId)
圖5-25(a)查看關注訂單功能順序圖
UI
頂層包::用戶
OrderDetailActivity
關注訂單
關注訂單操作
orderdb:OrderDatabaUtil
orderdb
mDbHelper:DatabaHelper
mDb:SQLiteDataba
getWritableDataba()
inrt()
操作成功
操作成功
clo()
clo()
open()
addOrderData(orderId)
操作成功
圖5-25(b)關注訂單功能順序圖
UI
頂層包::用戶
OrderDetailActivity
取消關注
取消關注訂單操作
orderdb:OrderDatabaUtil
open()
mDbHelper:DatabaHelper
mDb:SQLiteDataba
getWritableDataba()
orderdb
deleteOrder(orderId)
delete(orderId)
操作成功
操作成功
操作成功
clo()
clo()
圖5-25(c)取消訂單關注功能順序圖
北京郵電大學碩士研究生學位論文
63
在訂單詳情類OrderDetailActivity中,通過boolean變量isFocus來表示該訂
單是否被關注。在獲取訂單詳情時,根據服務器傳回的數據,確定isFocus變量
的值。用戶在點擊關注按鈕后,向數據庫執行添加或刪除操作。
4)訂單詳情
用戶點擊訂單列表中的某條訂單后,客戶端將跳轉至該訂單的訂單詳情界面,
同時,客戶端根據該訂單的訂單id等數據向服務器發送請求獲取其詳細信息,
加以顯示。
訂單詳情界面中,主要顯示訂單的編號、客戶簡稱、訂單日期、金額、業務
員等訂單基本信息。同時,還將該訂單所涉及的相關訂單行列出,并提供該訂單
的銷售機會的查看接口。
用戶點擊客戶簡稱可以查看該客戶的詳細信息。點擊業務員可以查看該業務
員的詳細信息,在業務員詳情界面中可以向該業務員發起通信,如撥打手機、發
送短信等。
點擊訂單行,界面將該訂單的具體單據信息列出。信息內容包括存貨編碼、
存貨名稱、存貨數量。
用戶也可以點擊查看某一條訂單行的具體信息,包括存貨編碼、存貨名稱、
存貨數量、金額等;同時提供該訂單行的執行情況接口。訂單執行情況主要顯示
該訂單行的已發貨數量、未發貨數量、已發貨金額、未發貨金額等數據。
5.2.5行動模塊的實現
行動模塊類圖如圖5-26所示。
ActionModule
+onBoard(inv:GridItemView,invo:WAComponentInstancesVO)
-mainClazz:Class
-moduleName:String
-title:String
-iconId:int
Module
-actionListView:WAEXLoadListView
-archAdapter:TaskSimpleAdpater
-actionSearchListData:WASearchListData
-adapter:CommonListAdapter
-actiongroup:List
-actionchild:List>
ActionMainActivity
BaActivity
-detailView:WADetailView
ActionDetailActivity
WAEXLoadListView
TaskSimpleAdpater
-maxSize:int=5
-data:String[]
WASearchListData
-customergroup:List
-cstlistchild:List>
-cstexpListView:CommonExpandableListItemView
CommonListAdapter
-id:String
-name:String
-type:String
-data:String
-creater:String
CommonExpandableListItem
CommonExpandableListItemView
WADetailView
圖5-26行動模塊類圖
a)ActionModule:行動模塊Module類,繼承Module類。
b)ActionMainActivity:行動主Activity,繼承BaActivity,用于實現
行動主界面行動列表界面。
北京郵電大學碩士研究生學位論文
64
c)WAEXLoadListView:自定義控件,實現上下滑動刷新功能的可擴展
列表。
d)CommonListAdapter:Adapter類,用于實現行動列表數據的顯示。
e)CommonExpandableListItem:用于表示列表項數據。
f)CommonExpandableListItemView:列表項界面布局。
g)TaskSimpleAdapter:用于顯示查詢歷史記錄信息。
h)WASearchListData:用于表示查詢歷史記錄數據。
i)ActionDetailActivity:行動詳情Activity,繼承BaActivity,用于顯
示行動詳細信息。
j)WADetailView:自定義控件,用于實現列表樣式的界面布局。
1)行動列表
行動主界面為:ActionMainActivity。該類繼承了BaActivity。行動依據時
間,分為三個類別,分別是:本周、上周、更早。因此,行動列表采用
WAEXLoadListView控件實現分組效果。
客戶端通過調用createActionListVOWtihRequestOfMainActivityAppend方法
生成行動列表請求。
調用requestVO方法將請求參數傳入,并向服務器發起請求。通過其設置的
監聽器,獲取到服務器的響應后,回調函數對數據進行處理,提取出行動列表。
WAEXLoadListView控件通過其Adapter:CommonListAdapter生成列表各項
的界面及其數據,并加以顯示。
WAEXLoadListView列表中各個item采用CommonExpandableListItemView
控件設置界面。其界面元素與行動信息的對應關系圖表5-13所示。
表5-13item界面元素與行動信息對應關系
界面元素界面元素說明行動信息
listIcon圖標imageView行動item圖標
upText上方說明文字行動主題
downText下方說明文字行動計劃開始時間
rightarrow向右箭頭imageView右側箭頭
rightDescription上方輔助文字說明行動狀態
rightDownDescription下方輔助文字說明行動指派人
CommonListAdapter通過getChildView方法為行動列表項設置界面。
行動信息中,行動狀態體現了行動的生命周期,行動狀態主要包括:
?未開始:即指派人未采取實際的行動;
?進行中:行動正在進行當中,已開始而未結束;
?完成:指派人完成了行動所指定的任務,該行動生命周期結束。
北京郵電大學碩士研究生學位論文
65
在獲取服務器傳來的行動信息中,ActionInfoVO用于標示某條行動的相關信
息。將從該類實例中獲取信息并生成CommonExpandableListItem對象。通過調
用getActionstatus()方法獲取行動的狀態。
2)行動詳情
用戶點擊行動列表中某條行動后,界面將跳轉至該行動的詳情界面,并向服
務器請求行動詳細信息,加以顯示。
行動詳情界面中,將界面分為三個部分:
a)行動基本信息部分。
將顯示行動主題、指派人、開始時間以及行動狀態信息。
b)行動具體實施信息。
包括行動的計劃開始時間、計劃結束時間、指派人、(實際)開始時間、(實
際結束時間)、備注等信息。
c)行動相關對象入口。
提供查看線索、客戶和銷售機會的入口。
5.3本章小結
本章基于設計階段的成果,對CRM系統客戶端軟件進行了實現。主要實現
的功能模塊有客戶、聯系人、線索、銷售訂單和行動,結合相關代碼對模塊中的
具體功能做了詳細的說明。同時,也結合各個功能的時序圖、類圖,說明了功能
的具體實現情況。
北京郵電大學碩士研究生學位論文
66
第六章系統測試
6.1測試環境
本系統客戶端基于Android平臺進行開發設計,由于Android系統自身版本
分化等原因,Android系統的開發也面臨著在各種手機上的兼容問題,因此在選
擇測試終端時,要充分考慮到Android系統的版本、手機的性能以及手機屏幕的
分辨率等因素。
關于系統的版本問題,由于Android程序是向上兼容,高版本中底層的變化,
低版本是支持不了的,因此本系統的開發版本為市場上最常用且最穩定的版本
Android2.2,且系統需支持分辨率:480*800、320*480、480*854、1280*800。
本客戶端的測試設備如下表所示:
表6-1測試設備
手機型號操作系統版本分辨率
摩托羅拉MB525Android2.2.1480*854
HTCT528wAndroid4.0.4480*800
HTCG6Android2.3.3320*480
三星I9220Android2.3.51280*800
三星GT-S5830Android2.3.4320*480
索尼愛立信MT15iAndroid2.3.3480*852
6.2系統功能測試
功能測試就是根據功能測試用例檢查產品的各項功能,來判斷是否達到用
戶要求。下面以用戶登錄及首頁、客戶兩個模塊為例,說明本客戶端的功能單元
測試結果:
1)用戶登錄及首頁功能模塊測試結果,如下表6-2:
北京郵電大學碩士研究生學位論文
67
表6-2用戶登錄及首頁測試結果
功能模塊用戶登錄和首頁
用例描述用戶輸入正確服務器地址及端口號,成功登錄客戶端,正確
顯示應用首頁頁面
功能描述前提條件操作步驟預期結果
是否
通過
登錄設置
服務器有
域名、服務
器端口為
可訪問
1.啟動app
2.進入設置界面,IP設
置為域名,設置正確端
口號
保存成功
是
登錄主頁
正確保存
服務器域
名、端口號
1.啟動app
2.正確輸入用戶名、密
碼項
3.點擊登錄
app登陸成功是
主界面顯
示對象
登陸成功
1.登陸成功后進入主頁
面
2.點擊各應用
1.頁面應用包
括線索、客戶、
聯系人、銷售
機會、訂單、
產品、知識庫、
日程等2.進入
各應用界面
是
2)客戶功能模塊,如表6-3:
表6-3客戶功能模塊測試結果
功能模塊客戶
用例描述進入客戶模塊應用,對客戶模塊進行列表、新增、編輯等功
能操作
功能描述前提條件操作步驟預期結果
是否
通過
增加客戶
進入到客戶
列表界面
1.點擊界面中新增
按鈕
2.輸入指定信息
3.點擊保存
新增的客戶出現
在客戶列表中
是
編輯客戶
進入到客戶
列表界面
1.點擊界面選擇一
客戶2.點擊編輯,
修改客戶信息
客戶內容已改為
編輯的內容
是
客戶列表
顯示
客戶列表有
客戶數據
進入客戶列表
列表界面顯示名
稱、客戶類型、
地址、郵箱等
是
北京郵電大學碩士研究生學位論文
68
查看客戶
相關對象
進入到客戶
列表界面
點擊一客戶
客戶相關對象顯
示順序信用狀
況、行動、訂單、
銷售機會、聯系
人
是
增加客戶
相關對象
記錄
后臺設置聯
系人、訂單、
銷售機會等
可增加
1.分別點擊客戶查
看頁面相關對象
中:訂單、銷售機
會、行動。2.點擊各
頁面新增按鈕
1.進入相應對象
的新增數據界面
2.帶入相關客戶
是
相關對象-
增加按鈕
顯示
相關對象不
允許新建操
作
進入相關對象界面
新增按鈕在界面
中不顯示
是
自動關聯
客戶
后臺設置聯
系人、訂單、
銷售機會、
可增加
1.分別點擊客戶查
看頁面相關對象:
聯系人、訂單、銷
售機會。2.點擊頁面
新增按鈕。3.填入保
存信息保存。4.查看
客戶或信息
添加的信息與相
關客戶關聯
是
查詢客戶
(模糊查
詢)返回記
錄超過30
條
進入查詢頁
面
1.在搜索欄中輸入
一存在的客戶名稱
的漢字2.點擊搜索
圖標
1.返回相應的搜
索結果2.每次加
載20條線索數據
3.列表中數據按
照創建時間倒序
顯示4.刷新完后
加載下一頁線索
數據一共可滾動
瀏覽30條數據
5.移動端和CRM
端顯示查詢結果
一致
是
本系統分別從登錄和首頁、線索、客戶、聯系人、銷售機會、銷售訂單、行
動、知識庫等功能模塊分別進行測試,測試的結果表明,各模塊功能與期望一致,
滿足測試預期。
6.3系統非功能測試
非功能性測試包括:安全性、兼容性、并發性等。其中并發測試是指不同數
目的用戶執行檢查點的操作,其主要的目的是預測系統投入使用后在一定用戶的
壓力情況下系統的響應時間,確保系統能夠在高負荷下運行正常且用戶體驗良好。
北京郵電大學碩士研究生學位論文
69
本系統并發測試結果如表6-4所示:
表6-4(a)并發測試結果
測試登錄(秒)
對象新增編
輯(客戶)
(秒)
查看對象
列表(客
戶)(秒)
相關對象列表(20
條客戶相關對象
聯系人)(秒)
對象查詢20
條記錄(客
戶)(秒)
平均
值1
2.66377.56632.73052.98282.8206
平均
值2
2.42117.55353.66224.40252.7608
平均
值3
5.54137.71302.40504.24293.0823
平均
值4
2.36587.50222.80223.32813.3648
平均
值5
2.72497.62012.88752.98243.7024
總平
均值
3.14337.59102.89753.58773.1462
表6-4(b)并發測試結果
測試
對象查詢返回20
條記錄(訂單)
(秒)
對象刪除單條
記錄(客戶)
(秒)
上傳照片(秒)
日程位置定
位(秒)
平均
值1
2.94996.25244.07413.0840
平均
值2
3.59044.37845.87442.8986
平均
值3
3.14944.11615.80392.9098
平均
值4
3.01443.55046.96534.6405
平均
值5
2.46824.18505.25764.5775
總平
均值
3.03454.49655.59513.6221
本系統客戶端選定10人操作10部符合表6-1測試設備要求的Android智能
手機,且每臺測試機均安裝客戶端系統apk文件,10人以不同用戶身份信息登
錄,同時執行并發測試點功能操作,記下每次操作的用戶響應時間。測試中一共
有9并發測試點,它們分別是登陸、查看對象列表、查看相關對象列表、對象查
詢等。通過對每個測試點進行5次相同操作,根據記錄的每次每臺設備的用戶響
應時間計算出該測試點的平均耗時。
對于測試用例的結果分析過程為將其與需求中規定的時間進行對比。超出規
北京郵電大學碩士研究生學位論文
70
定耗時的時間必須小于5s,如果大于5s則并發性能不符合要求。
表6-5并發效率測試結果
功能點
快
慢
平均耗時-標準值
(秒)
標準值
(秒)
平均耗時(秒)
登錄慢0.0433.14
對象新增編輯(客戶)慢2.5957.59
查看對象列表(客戶)快-0.1032.90
相關對象列表(20條客戶
相關對象聯系人)
快-1.4153.59
對象查詢20條記錄(客戶)快-1.8553.15
對象查詢返回20條記錄
(訂單)
慢0.0333.03
對象刪除單條記錄(客戶)慢1.5034.50
上傳照片慢2.6035.60
日程位置定位慢0.6233.62
從測試用例結果表6-5分析說明中可得知,有3個測試點達到需求提供的標
準相應時間,另外登錄、對象新增編輯、對象查詢、對象刪除單條記錄、照片上
傳、日程定位超出標準時間5s,但超出部分小于5s,屬于可接受范圍。因此,
并發效率基本滿足測試預期。
6.4結果分析
主要針對本系統客戶端功能及并發效率測試進行測試,結果表明,該系統相
對穩定,選擇的測試用例能夠滿足測試用例設計上的需求,測試結果相對客觀完
善,基本上完全實現了各模塊功能需求,并且各模塊之間運行流暢,系統滿足在
一定用戶的壓力情況下系統的響應時間,以及數據安全性的要求,且用戶體驗良
好,與預期效果相符。滿足了用戶的相應需求。
6.5本章小結
本章主要對本系統的測試工作進行闡述,詳細說明了系統的功能測試與非功
能測試中的并發測試。系統運行良好,功能完善并且在并發運行時間上也滿足需
求,具備良好的用戶體驗,滿足用戶的需求。
北京郵電大學碩士研究生學位論文
71
第七章結束語
7.1論文工作總結
該系統需求主要圍繞客戶信息隨身處理、移動銷售過程跟蹤、員工行為管理
等方面展開。在設計和研發過程中,本人主要的工作有:
1)客戶關系管理以及Android平臺操作系統進行調研,對其現狀進行簡要
分析和說明。提出當前CRM系統的不足,提出本系統需要解決的問題
以及優勢所在。
2)對系統進行相關的需求分析,圍繞客戶管理、聯系人管理、線索管理、
銷售訂單管理、行動管理等功能模塊,進行詳盡的分析設計。
3)根據系統的詳細需求分析,實現基于客戶關系管理系統的客戶端軟件,
實現各業務流程。
4)對系統做相應的改進工作,對共有界面元素以及底層功能進行開發設計,
使程序更加合理,可復用性增強,采用對象序列化,數據加密,數據壓
縮等技術,提高通訊效率以及安全性。
5)對系統功能和并發效率進行測試,結果表明軟件的實現與需求一致,并
且通過測試對系統有了一定程度的優化。
7.2問題與展望
1)實現新增編輯功能
本客戶端當前為1.0版本。由于開發時間的限制,本客戶端在有些功能上沒
有實現新增和編輯功能,因此在2.0版本的開發中,將重點為客戶端各個功能模
塊添加新增和編輯功能,完善CRM系統客戶端。
2)設計實現客戶端開發框架
本系統設計并開發了針對企業移動CRM應用的客戶端共有界面元素以及底
層功能,減少了開發工作量,也一定程度上提高了軟件質量,但仍舊有局限性。
因此,今后還需要在界面、用戶體驗、功能上進行進一步的研究,分析對比當前
多種企業應用,設計并開發針對企業CRM移動應用開發框架。
3)超大屏終端設備的支持
本客戶端當前版本針對主流移動智能手機進行了測試,測試結果良好,能很
好的支持用戶的使用。但當前,智能終端朝著大屏幕的趨勢發展,目前市場上也
北京郵電大學碩士研究生學位論文
72
逐漸出現了諸多以大屏幕為特點的終端設備,如三星的Note系列、平板電腦等
等。因此,本系統客戶端需要針對大屏幕設備對界面進行相應的改善,提高大屏
幕下的用戶體驗。
北京郵電大學碩士研究生學位論文
73
參考文獻
[1].:///view/.
[2].淺談IT運維在移動終端的應用發展趨勢./art/1032/
20120428/3816397_.
[3].劉瑜,王立福,張世琨.軟件框架開發過程研究[J].計算機工程與應用,2004:
26-28.
[4].黃春英.客戶關系管理系統的設計與實現[J].重慶理工大學學報(自然科學).
2011.11,25(11):86-91.
[5].李志剛.客戶關系管理原理與應用[M].北京:電子工業出版社,2011.11.
[6].Android市場份額超七成./12/0607/05/83CG3EA3000
.
[7].楊豐盛.Android應用開發揭秘[M].北京:機械工業出版社,2010.1.
[8].Android的優勢及光明前景./news/?.
[9].徐敏.Android平臺多媒體通信客戶端研究與實現[D].西安:西安電子科技
大學,2011.
[10].Android開發經驗分享./Tech/265/.
[11].Android開發手機軟件的優勢與劣勢./project/Android/
[12].GoogleAndroid介紹./hudon/article/details/3993211.
[13].:///view/#7.
[14].Android開發四大組件分別是什么./article
-.
[15].百度百科:加密./view/#4.
[16].張曉新,孫國嶺,楊平,等.完全掌握加密解密實戰超級手冊[M].北京:
機械工業出版社,2010.5.
[17].沈昌祥.信息安全導論[M].北京:電子工業出版社,2009.12.
[18].安全性./view/.
北京郵電大學碩士研究生學位論文
74
致謝
時光如逝歲月飛梭,經過兩年半的研究生忙碌而充實的工作和生活,我提
煉出了本次畢業設計論文主題。經過本課題設計開發項目的錘煉,本人在開發
研究和專業知識等各方面都有很大的提高。當然由于個人經驗的匱乏以及知識
面的限制,難免有考慮不周全的地方,如果沒有導師的督促指導和項目組同學
的支持,想要完成此次畢業設計難上加難。
在這里值此論文完稿之際,我要衷心感謝我的研究生導師xxx教授,xx老師
在本人科研工作和畢設過程中,從選題研究、設計實現以及最后的論文撰寫都
給予我悉心的指導。xx老師嚴謹的科學研究作風和耐心教導深深的影響了我,
是我永遠學習的榜樣,相信在我今后的工作生活中也將發揮巨大的積極作用。
在他耐心指導下,我不僅動手能力大幅提升,還順利完成了幾個項目課題,再
次向xx老師的辛勤幫忙表示衷心感謝!
這里也要特別感謝xxx老師,在這近兩年的時間里對我進行了悉心的教導和
教育,使我能夠不斷的學習提高。同時,感謝老師在生活、思想上給予我的幫助。
然后,我還要感謝研究生期間的所有老師,以及實驗室的同門。她們為我
打下計算機科學與技術專業基礎知識的同時,在項目開發過程中也給我很多支
持和鼓勵。因此才會順利完成此次畢業設計。
最后,感謝軟件學院和我的母校-北京郵電大學;同時向參與審閱論文以及
畢設答辯的專家們表示感謝!
北京郵電大學碩士研究生學位論文
75
攻讀學位期間發表的學術論文
[1]xxxxxxx分析與設計xxx刊物20xx年
本文發布于:2023-03-11 02:32:46,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/16784731667830.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:論文范例.doc
本文 PDF 下載地址:論文范例.pdf
| 留言與評論(共有 0 條評論) |