freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android平臺(tái)的crm系統(tǒng)客戶端軟件的研究與實(shí)現(xiàn)畢業(yè)論文(參考版)

2025-07-01 00:29本頁(yè)面
  

【正文】 在執(zhí)行加解密操作之前,需要進(jìn)行相應(yīng)的準(zhǔn)備工作,如設(shè)置工作模式、填充模式、初始化向量,獲取密鑰等等。本系統(tǒng)采用DES加密算法。圖511 對(duì)象序列化流程圖圖512 反序列化流程圖對(duì)于傳入反序列化方法的字節(jié)流數(shù)據(jù),使用輸入流ByteArrayInputStream和ObjectInputStream對(duì)其進(jìn)行封裝,然后通過(guò)調(diào)用readObject方法,從輸入流中讀取對(duì)象并保存,完成反序列化操作。之后調(diào)用writeObject方法將對(duì)象寫(xiě)入指定的輸出流中,在將其轉(zhuǎn)換為字節(jié)數(shù)組,完成序列化。b) 序列化與反序列化流程序列化流程圖如圖511所示。圖510 請(qǐng)求生成參數(shù)流程圖由上圖可以看出,最后在完成了多個(gè)VO的創(chuàng)建后,生成WAComponentInstancesVO對(duì)象。定義好所有的請(qǐng)求參數(shù)后,ReqParamsVO類的實(shí)例添加該參數(shù)數(shù)列,然后Action對(duì)象會(huì)將該ReqParamsVO對(duì)象添加進(jìn)來(lái)。而對(duì)于一次請(qǐng)求,可能需要傳入多個(gè)參數(shù)。ParamTagVO類調(diào)用其構(gòu)造函數(shù),將參數(shù)名和參數(shù)值作為鍵值對(duì)傳入并保存。本系統(tǒng)提供了對(duì)參數(shù)的描述類。WAComponentInstanceVO對(duì)象通過(guò)調(diào)用setComponentid(String m_ponentid)方法將組件id添加進(jìn)VO中作為請(qǐng)求的其中一個(gè)參數(shù)。當(dāng)確定請(qǐng)求行動(dòng)后,WAComponentInstanceVO調(diào)用setActions(Actions actions)方法將行動(dòng)添加到VO對(duì)象中。在找到匹配的行動(dòng)后,服務(wù)器會(huì)進(jìn)行該行動(dòng)對(duì)應(yīng)的業(yè)務(wù)操作。每一個(gè)功能請(qǐng)求都具有其請(qǐng)求行動(dòng)的類型。(String m_actiontype)。在WAComponentInstanceVO確定參數(shù)之前,需要首先確定此次請(qǐng)求所要執(zhí)行的操作,因此,需要對(duì)請(qǐng)求行動(dòng)進(jìn)行描述。組件id號(hào)指代該請(qǐng)求數(shù)據(jù)哪一個(gè)功能模塊,或者哪一個(gè)單獨(dú)的組件。請(qǐng)求行為描述了該請(qǐng)求所要完成的任務(wù)。WAComponentInstanceVO的主要屬性如表56所示。所支持的序列化對(duì)象類為WAComponentInstanceVO。通過(guò)將App類的moduleList中所有的模塊添加進(jìn)GridView中,使客戶端主界面顯示所有模塊的入口。主界面類為MainBoardActivity。本客戶端提供企業(yè)移動(dòng)應(yīng)用的通用主界面。App類所負(fù)責(zé)的任務(wù)就是對(duì)應(yīng)用中所有模塊的加載以及相關(guān)全局變量的設(shè)置。Application類是Android開(kāi)發(fā)平臺(tái)提供給開(kāi)發(fā)者用于保存全局變量的基本類,它隨著package創(chuàng)建而創(chuàng)建,因此Application中相關(guān)操作的執(zhí)行先于應(yīng)用的Main Activity。各個(gè)Module的創(chuàng)建和添加必須在程序啟動(dòng)開(kāi)始時(shí)進(jìn)行,即在應(yīng)用入口處執(zhí)行模塊的設(shè)置操作。Modules類創(chuàng)建一個(gè)ListModule列表,用于保存所有的模塊。該模塊的Module類繼承Module基類。模塊創(chuàng)建及加載流程如圖59所示。模塊圖片素材存儲(chǔ)于項(xiàng)目工程/res/drawable/目錄下,在項(xiàng)目中各個(gè)素材對(duì)應(yīng)一個(gè)id號(hào)。表55Module主要屬性屬性名屬性類型說(shuō)明mainClazzClass模塊主Activity的類,該類為該模塊的首頁(yè)。5) GridAdapter:Adapter類,實(shí)現(xiàn)主界面數(shù)據(jù)與界面的連接。3) Modules:Module的集合。圖58Module相關(guān)類圖1) App:繼承自Application類,主要用于保存整個(gè)應(yīng)用程序的全局變量及進(jìn)行應(yīng)用程序的初始化相關(guān)工作。本系統(tǒng)客戶端以模塊為單位進(jìn)行功能的設(shè)計(jì)和開(kāi)發(fā),應(yīng)該為各個(gè)模塊提供方便的開(kāi)發(fā)模式。toastMsg(String msgText)Toast信息工具方法,用于通過(guò)Toast方式顯示所指定的信息。writePreference(String key, String value)SharedPreferences工具方法,用來(lái)向默認(rèn)Preferences文件中寫(xiě)入一個(gè)鍵值對(duì)。表54 BaseActivity其他方法說(shuō)明方法說(shuō)明readPreference(String key)SharedPreferences工具方法,用來(lái)讀取默認(rèn)Preferences文件中所指定key的對(duì)應(yīng)值。該方法寫(xiě)在BaseActivity中,其子類在觸發(fā)Handler事件后,會(huì)自動(dòng)調(diào)用子類中所定義的監(jiān)聽(tīng)器中的具體方法進(jìn)行相應(yīng)的處理。在Module中,要實(shí)現(xiàn)對(duì)請(qǐng)求狀態(tài)和網(wǎng)絡(luò)狀態(tài)的監(jiān)聽(tīng),可讓Module類直接實(shí)現(xiàn)上述兩個(gè)接口并實(shí)現(xiàn)接口中各個(gè)方法的內(nèi)部邏輯。圖57監(jiān)聽(tīng)器接口類圖請(qǐng)求狀態(tài)監(jiān)聽(tīng)器接口(OnVORequestedListener)中主要包含兩個(gè)方法:請(qǐng)求成功和請(qǐng)求失敗。3) 監(jiān)聽(tīng)器接口BaseActivity中,申明了針對(duì)請(qǐng)求狀態(tài)和網(wǎng)絡(luò)狀態(tài)的監(jiān)聽(tīng)器接口,以供其子類實(shí)現(xiàn)。實(shí)現(xiàn)方式為重寫(xiě)Handler中的handleMessage(Message msg)方法。BASE_ACTION_TOAST進(jìn)行Toast消息提示。REQUEST_FAIL_NOTWASERVER服務(wù)器地址錯(cuò)誤。表53 Handler消息類型消息類型說(shuō)明REQUEST_SUC請(qǐng)求成功。對(duì)于服務(wù)器返回的VOHttpResponse對(duì)象。申明Message對(duì)象(msg)后,可以為其設(shè)置標(biāo)志和參數(shù),主要包括消息類型()和消息內(nèi)容()。在發(fā)送消息之前,需要定義消息。如果隊(duì)列中有消息,主線程會(huì)將消息去除并通知相應(yīng)的Handler處理;若隊(duì)列中沒(méi)有消息,則主線程會(huì)進(jìn)入等待狀態(tài),直到下一條消息的到來(lái)。該消息機(jī)制由消息循環(huán)、消息發(fā)送和消息處理三個(gè)部分組成。因此,需要一種消息機(jī)制來(lái)實(shí)現(xiàn)界面的更新操作。圖56客戶請(qǐng)求服務(wù)器參數(shù)流程圖2) 監(jiān)聽(tīng)事件的通知客戶端啟動(dòng)了一個(gè)子線程進(jìn)行服務(wù)器請(qǐng)求的操作。在獲取到服務(wù)器返回的voHttpResponse后,建立一個(gè)消息對(duì)象(Message msg)并將voHttpResponse添加進(jìn)該消息對(duì)象中;若服務(wù)器因某些原因處理失敗,則將失敗狀態(tài)及其相關(guān)提示說(shuō)明添加到消息對(duì)象中。客戶端與服務(wù)器進(jìn)行一次通信的流程圖如圖56所示。該線程主要負(fù)責(zé)請(qǐng)求發(fā)送和接收響應(yīng)的工作,并在獲得服務(wù)器響應(yīng)后,通知相應(yīng)模塊進(jìn)行處理。圖55BaseActivity類圖1) 向服務(wù)器的請(qǐng)求BaseActivity將提供一個(gè)方法來(lái)實(shí)現(xiàn)發(fā)起請(qǐng)求的操作,該方法封裝了向服務(wù)器發(fā)起請(qǐng)求的具體實(shí)現(xiàn)細(xì)節(jié),其子類可以直接調(diào)用該方法實(shí)現(xiàn)發(fā)送請(qǐng)求?!狟aseActivity的實(shí)現(xiàn)BaseActivity為Module的具體實(shí)現(xiàn)提供相關(guān)通用方法,包括向服務(wù)器的請(qǐng)求方法、相關(guān)監(jiān)聽(tīng)器、以及通過(guò)Handler實(shí)現(xiàn)對(duì)狀態(tài)監(jiān)聽(tīng)結(jié)果的相關(guān)操作。表52 列表樣式控件提供的方法方法說(shuō)明setGroupContent(ListView items)設(shè)置列表內(nèi)容,將列表項(xiàng)item添加進(jìn)列表中。同樣通過(guò)調(diào)用findViewById方法將以上申明的對(duì)象與xml中定義的控件相關(guān)聯(lián)。4) 創(chuàng)建并設(shè)置列表界面GroupLayout。Selector通過(guò)對(duì)事件的判斷(未點(diǎn)擊、點(diǎn)擊、獲取焦點(diǎn)等)定義各個(gè)事件下的背景。對(duì)于上述四種item背景布局,需要定義該控件未被點(diǎn)擊和被點(diǎn)擊時(shí)兩種狀態(tài)下的背景。底部圓角矩形GroupLayout具有多個(gè)item,該item位于最后一個(gè)。表51 四種布局及其所處位置樣式所處位置對(duì)應(yīng)的布局文件頂部圓角矩形GroupLayout具有多個(gè)item,該item位于第一個(gè)。item的不同樣式如圖54所示。這種依據(jù)用戶點(diǎn)擊事件而更改背景的方式是Android開(kāi)發(fā)過(guò)程中較為常用的界面處理方法。由于item繼承于LinearLayout,則其可以直接調(diào)用setOnClickListener方法實(shí)現(xiàn)點(diǎn)擊事件的處理。定義ListItemSingleLine類中的構(gòu)造函數(shù),通過(guò)調(diào)用findViewById方法將以上申明的對(duì)象與xml中定義的控件相關(guān)聯(lián)。 item中左側(cè)、右側(cè)和中間的圖片;b) TextView leftTextView, rightMainTextView, right2TextView。2) 創(chuàng)建并設(shè)置列表項(xiàng):ListItemSingleLine。針對(duì)以上兩個(gè)布局文件,在工程中建立兩個(gè)控件類,用以與上述兩個(gè)控件相關(guān)聯(lián)。該布局應(yīng)盡可能全面地囊括item中的內(nèi)容;示意圖如圖53所示。列表控件效果圖如圖52所示。在完成對(duì)所有自定義控件的添加后,將整個(gè)控件添加到界面中加以顯示。完成對(duì)自定義控件的設(shè)置后,將其添加到指定控件中。首先需要對(duì)自定義控件所存放的界面進(jìn)行相應(yīng)設(shè)置并初始化。因此,客戶端將該樣式實(shí)現(xiàn)為共用組件,以方便調(diào)用。本節(jié)以客戶端中列表樣式的控件為例來(lái)說(shuō)明共用組件的實(shí)現(xiàn)方式。 第五章 CRM系統(tǒng)客戶端的實(shí)現(xiàn)本章針對(duì)CRM系統(tǒng)客戶端,基于軟件設(shè)計(jì)工作與成果,闡述了客戶端界面元素、底層功能以及客戶端中主要功能模塊的具體實(shí)現(xiàn)方式。將各個(gè)功能模塊的數(shù)據(jù)交由數(shù)據(jù)封裝解析以及通信模塊進(jìn)行處理,完成與服務(wù)的數(shù)據(jù)交互。針對(duì)本系統(tǒng)客戶端進(jìn)行具體的結(jié)構(gòu)設(shè)計(jì),客戶端結(jié)構(gòu)圖如圖410所示。4)通信層通信層主要負(fù)責(zé)客戶端與服務(wù)器的數(shù)據(jù)通信,為數(shù)據(jù)封裝層提供了統(tǒng)一的接口以供調(diào)用。另一方面,當(dāng)業(yè)務(wù)邏輯層獲取到服務(wù)器所返回的且經(jīng)過(guò)數(shù)據(jù)解封裝等處理后的請(qǐng)求結(jié)果時(shí),會(huì)通過(guò)一定方式(如Handler、Listener等)通知UI進(jìn)行更新,將結(jié)果展現(xiàn)給客戶。各個(gè)Module將基于該父類進(jìn)行各自業(yè)務(wù)邏輯的實(shí)現(xiàn)。將為客戶端結(jié)構(gòu)中的Module提供一個(gè)具有通用性的父類——BaseActivity。這些組件,可以通過(guò)xml的方式進(jìn)行描述和設(shè)計(jì),而更好的方式則是在xml描述的基礎(chǔ)上,將xml文件轉(zhuǎn)換為Java對(duì)象,提供針對(duì)該控件的相關(guān)操作和方法,方便開(kāi)發(fā)人員調(diào)用?;谝陨瞎残?,本文所提出的企業(yè)移動(dòng)應(yīng)用軟件結(jié)構(gòu)圖如圖49所示,客戶端結(jié)構(gòu)分為四層,表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)封裝層和通信層。因此,絕大多數(shù)企業(yè)移動(dòng)應(yīng)用軟件都需要與服務(wù)器進(jìn)行通信交互。所以,對(duì)于企業(yè)移動(dòng)應(yīng)用,應(yīng)該提供一種方法對(duì)客戶端與服務(wù)器之間交互的數(shù)據(jù)進(jìn)行壓縮,從而一定程度上減少網(wǎng)絡(luò)流量。因此,移動(dòng)應(yīng)用應(yīng)盡可能地減少用戶流量的消耗,也就是應(yīng)該盡可能地減少客戶端與服務(wù)器之間交互的數(shù)據(jù)量。因此,對(duì)于企業(yè)應(yīng)用軟件,應(yīng)該提供一種對(duì)數(shù)據(jù)的保護(hù)手段,盡可能地降低數(shù)據(jù)被竊取的可能性,或者降低因數(shù)據(jù)丟失或被竊取所造成的損失。同時(shí),由于移動(dòng)終端處理能力相對(duì)于PC機(jī)要低,因此這種數(shù)據(jù)封裝和解封裝方法應(yīng)該要盡可能的高效、資源消耗低,能夠方便開(kāi)發(fā)人員調(diào)用同時(shí)也能較好地適應(yīng)移動(dòng)終端設(shè)備的硬件環(huán)境。對(duì)于企業(yè)應(yīng)用,客戶端與服務(wù)器交互的數(shù)據(jù)需要一種統(tǒng)一的數(shù)據(jù)格式,方便服務(wù)器提取參數(shù)進(jìn)行業(yè)務(wù)邏輯處理。因此,設(shè)計(jì)并開(kāi)發(fā)具有一定復(fù)用性的共用界面以及底層功能,能夠有效地減少開(kāi)發(fā)成本、提高開(kāi)發(fā)效率和代碼復(fù)用率,同時(shí),也便于應(yīng)用軟件后期的維護(hù)。另一方面,對(duì)于諸多企業(yè)移動(dòng)應(yīng)用軟件,其相似的地方比較多。當(dāng)前,針對(duì)企業(yè)移動(dòng)應(yīng)用軟件的開(kāi)發(fā),開(kāi)發(fā)人員通常都要重頭開(kāi)始進(jìn)行,針對(duì)應(yīng)用軟件的各個(gè)功能模塊逐個(gè)開(kāi)發(fā),這種開(kāi)發(fā)方式,既需要開(kāi)發(fā)使用Android基本API所能實(shí)現(xiàn)的功能,也需要開(kāi)發(fā)涉及企業(yè)業(yè)務(wù)方面的功能。在行動(dòng)詳情界面中,用戶可以編輯行動(dòng)信息、可以刪除或上傳照片;可以刪除行動(dòng);可以查看照片;可以定位,更新地理位置信息;可以查看相關(guān)對(duì)象,包括:線索、銷售機(jī)會(huì)和客戶。用戶執(zhí)行查詢操作時(shí),需要輸入關(guān)鍵字,執(zhí)行查詢操作后,客戶端會(huì)顯示查詢結(jié)果。用戶執(zhí)行添加行動(dòng)操作前,客戶端會(huì)對(duì)用戶的權(quán)限進(jìn)行驗(yàn)證,只有擁有添加權(quán)限的用戶才能進(jìn)行添加行動(dòng)的操作。如圖所示,用戶進(jìn)入行動(dòng)模塊后,客戶端將與用戶相關(guān)的所有行動(dòng)通過(guò)列表的方式展現(xiàn)出來(lái)。表41 關(guān)注訂單數(shù)據(jù)庫(kù)表表名稱crm_tb_order字段名類型長(zhǎng)度是否主鍵說(shuō)明_idint8是主鍵,自增idvarchar20訂單id號(hào),唯一標(biāo)示訂單,作為向服務(wù)器請(qǐng)求訂單詳情時(shí)的關(guān)鍵參數(shù)。在關(guān)注訂單功能中,所需要保存的訂單信息包括:訂單id、訂單編碼、訂單金額、客戶簡(jiǎn)稱、訂單日期。Android提供了輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)SQLite用以保存結(jié)構(gòu)化數(shù)據(jù)。本客戶端銷售訂單功能中,需要顯示用戶所關(guān)注的訂單列表。在進(jìn)入訂單詳情時(shí),客戶端會(huì)對(duì)用戶的權(quán)限進(jìn)行驗(yàn)證。l 用戶可以查看與該訂單相關(guān)的銷售機(jī)會(huì)的信息。l 用戶可以查看與當(dāng)前訂單相關(guān)聯(lián)的客戶信息。l 用戶可以查看與當(dāng)前訂單相關(guān)聯(lián)的業(yè)務(wù)員的信息。在訂單列表界面(銷售訂單主界面、訂單查詢結(jié)果、訂單關(guān)注列表)中,用戶可以選取一個(gè)銷售訂單查看其詳細(xì)信息。另一種方式則是關(guān)鍵字查詢,用戶可以輸入一個(gè)或者多個(gè)關(guān)鍵字進(jìn)行查詢。一種方式是分類查詢,客戶端提供了三種類別進(jìn)行分類查詢:日期、客戶和業(yè)務(wù)員。在用戶保存了所添加的訂單信息后,客戶端更新訂單列表。用戶在銷售訂單主界面中,可以添加銷售訂單、查詢銷售訂單、查看訂單詳情。在訂單關(guān)注列表界面下,用戶可以編輯當(dāng)前的關(guān)注列表,用戶可以將訂單從關(guān)注列表中刪除,但不會(huì)刪除該訂單本身。圖47 銷售訂單模塊流程圖如圖所示,用戶進(jìn)入銷售訂單模塊后,客戶端將通過(guò)兩種方式將訂單列表呈現(xiàn)給用戶,一種是顯示所有與用戶相關(guān)的銷售訂單;另一種則是顯示當(dāng)前用戶所關(guān)注了的銷售訂單。當(dāng)用戶在聯(lián)系人主界面返回時(shí),線索業(yè)務(wù)流程結(jié)束。當(dāng)用戶進(jìn)行查看線索詳情操作時(shí),除了判斷用戶的權(quán)限外,系統(tǒng)還將檢測(cè)當(dāng)前線索是否已經(jīng)被轉(zhuǎn)化。在線索列表(線索主界面、查詢結(jié)果)處,用戶可以查看所選定的線索的詳細(xì)信息。錄入完信息后,若用戶選擇保存,則客戶端會(huì)顯示最新的線索列表。在線索主界面下,用戶可以添加、查詢和查看線索。線索模塊的主要流程如圖46所示。在聯(lián)系人詳情處,用戶可以采用多種交流方式與當(dāng)前聯(lián)系人進(jìn)行通信,主要包括:手機(jī)、座機(jī)和郵件等。用戶可以編輯當(dāng)前查看的聯(lián)系人信息;用戶可以根據(jù)當(dāng)前的聯(lián)系人創(chuàng)建行動(dòng)信息,創(chuàng)建行
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1