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

正文內(nèi)容

基于android的手機(jī)彩票通的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁

2024-11-04 11:05本頁面

【導(dǎo)讀】點(diǎn)購買已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足人們的需求了。[摘要]本文主要介紹了“手機(jī)購彩”的概念、發(fā)展前景、功能和特點(diǎn)等。分析了“雙色球”。購彩的總體設(shè)計(jì)模式和應(yīng)用的實(shí)現(xiàn)過程。本文還在最后闡述了本應(yīng)用將來的發(fā)展方向以及。需要進(jìn)一步改進(jìn)的地方。本應(yīng)用在客戶端采用Android技術(shù),在Android端的開發(fā)中,為了。應(yīng)用的擴(kuò)展性,大量使用反射和工廠模式、觀察者模式等設(shè)計(jì)模式。技術(shù),服務(wù)端主要解決了。系統(tǒng)的最終目的是為了方便人們的購彩,同時(shí)讓更多的人能夠認(rèn)識和使用。本應(yīng)用,從而獲得更多地發(fā)展機(jī)會,提升本應(yīng)用的價(jià)值。

  

【正文】 element //彩種編號, 118 為雙色球的編號 lotteryid118/lotteryid //銷售期編號,如果為 0,則默認(rèn)獲取當(dāng)前銷售期 issues1/issues /element /elements /body /message ( 2)節(jié)點(diǎn)的封裝 在本應(yīng)用中由于采用 XML 格式進(jìn)行數(shù)據(jù)包的封裝,看起來每個(gè)節(jié)點(diǎn)都是不同的。從彩種編號 (lotteryid118/lotteryid)和銷售期編號( issues1/issues)的封裝代碼中可以看出,每個(gè)節(jié)點(diǎn)都有節(jié)點(diǎn)名和節(jié)點(diǎn)內(nèi)容,節(jié)點(diǎn)內(nèi)容可能為空。因此節(jié)點(diǎn)封裝的具體實(shí)現(xiàn)辦法就是創(chuàng)建一個(gè)葉子類 Leaf,對 Leaf 添加兩個(gè)構(gòu)造方法一個(gè)構(gòu)造方法中傳進(jìn)節(jié)點(diǎn)的內(nèi)容,另一個(gè)構(gòu)造方法只傳進(jìn)節(jié)點(diǎn)的名字,這樣就實(shí)現(xiàn)了節(jié)點(diǎn)中有內(nèi)容和無內(nèi)容的切換。同時(shí),在 Leaf 中添加序列化方法。該序列 化方法只管序列化好自己,降低了模塊之間的耦合度。 ( 3) Head 的封裝 本應(yīng)用的設(shè)計(jì)是,將每個(gè)請求相同的部分封裝成 header,每一個(gè)封裝好的請求協(xié)議頭部信息是固定的,包括 messengerid(消息編號)、 timestamp(時(shí)間戳)、 transactiontype(交易類型)、 agentid(代理商編號)、 digest( 對消息包的摘要,摘要算法為 MD5,摘要內(nèi)容為:時(shí)間戳 +代理密碼 +消息體)、 source(用戶操作終端來源)、 press(加密方式) 。因此 header 封裝的實(shí)現(xiàn)是聲明一個(gè) Header 類,在 Header 中添加以上 messengerid(消息編號)等八個(gè)葉子節(jié)點(diǎn),在構(gòu)造函數(shù)中對這八個(gè)葉子節(jié)點(diǎn)進(jìn)行初始化。然后添加序列化方法,將八個(gè)葉子節(jié)點(diǎn)序列化成 XML 格式數(shù)據(jù),同時(shí)序列化自己。在對 digeset 節(jié)點(diǎn)進(jìn)行序列化時(shí),需要對 digest 節(jié)點(diǎn)的內(nèi)容進(jìn)行 MD5 加密處理。 ( 4) element 的封裝 對于每個(gè)發(fā)向服務(wù)端的請求來說,唯一不同的就是 body 中的內(nèi)容,而 body 中唯一不同的就是 element 中的內(nèi)容,因此對于每個(gè)請求來說,例如注冊或登錄請求,則需要封裝煙臺大學(xué)畢業(yè)論文(設(shè)計(jì)) 18 成不同的類如 UserLoginElement 和 UserRegistElement,但是這些類也有共通的地方:序列化自己的方法 serializer 和獲取本 element 唯一標(biāo)識的方法 getTransactionType。因此將這些共通元素抽象出來,成為一個(gè)接口 Element。在 Element 中添加所有請求元素通用的部分。 ( 5) body 的封裝 將數(shù)據(jù)封裝成 Element 對象,然后將 element 元素進(jìn)一步添加進(jìn) elements 節(jié)點(diǎn),然后將elements 元素添加進(jìn) body 節(jié)點(diǎn),然后將 body 中的節(jié)點(diǎn)序列化和序列化自身就可以。同樣,建立一個(gè) Body 類, 向 Body 類中添加 Element 對象。又因?yàn)樵诎l(fā)向服務(wù)端的 body 信息是加密后的信息,所以需要添加一個(gè)加密方法,將 body 中的信息進(jìn)行 DES 加密后傳向服務(wù)端。 ( 6) message 的封裝 將所有的子元素都封裝完成后,接下來需要得到發(fā)送到服務(wù)端的 XML 數(shù)據(jù)。所以需要新建一個(gè) Message 類。在 Message 類種調(diào)用 Header 和 Body 中的序列化方法,同時(shí)序列化Message 自身,然后將序列化后的數(shù)據(jù)生成字符串類型的 XML 數(shù)據(jù)就得到了發(fā)向服務(wù)端的數(shù)據(jù)包。 客戶端服務(wù)類 反射獲取類 ( 1)將所有 的服務(wù)類的包名封裝到 文件中,通過反射就可以實(shí)現(xiàn)對象的靈活調(diào)用。該文件中的內(nèi)容如下所示 [4]。 CommonService= UserService= NewsService= ( 2)創(chuàng)建 BeanFactory 類,在該類中具通過反射實(shí)現(xiàn)服務(wù)對象的靈活調(diào)用。在Beanfactory 中定義一個(gè)方法 getImpl 來具體通過名稱獲到類的實(shí)例,例如要創(chuàng)建CommoService 類的對象,則需要調(diào)用類中的方法 getImpl()。方法首先加載 文件,然后定義一個(gè) getImpl 方法,根據(jù)傳遞進(jìn)來的參數(shù)如“ CommonService”來尋找到 中的對應(yīng)的類,創(chuàng)建類的實(shí)例并返回。 服務(wù)類的通用方法 ( 1)在所有的服務(wù)類中,無論是處理用戶請求的服務(wù)類還是獲取銷售信息的服務(wù)類,都需要對服務(wù)端返回的數(shù)據(jù)進(jìn)行解析。這里解析分為兩步。第一步:將服務(wù)端返回的 XML數(shù)據(jù)進(jìn)行初步解析,解析采用 XmlPullParser 進(jìn)行解析,解析出 Header 和 Body(加密)的信息。此時(shí) Body 中的信息是進(jìn)行加密處理的。 ( 2)解析 body 密文。服務(wù)端返回的 body 信息是加密后的信息,首先將 body 內(nèi)容進(jìn)行解密,解密方式同樣采用 XmlPullParser 進(jìn)行解密,解密后根據(jù)“時(shí)間戳 +body 明文”生成 MD5 值,與 digeset 節(jié)點(diǎn) 內(nèi)容進(jìn)行比對,如果相同,則證明返回的是正確數(shù)值,然后再次對 body 明文進(jìn)行一次解析,從而獲得 element 節(jié)點(diǎn)中的內(nèi)容。 煙臺大學(xué)畢業(yè)論文(設(shè)計(jì)) 19 網(wǎng)絡(luò)通信類 HttpClientAdapter ( 1)封裝發(fā)送請求類 HttpClientAdapter 的構(gòu)造方法,在構(gòu)造方法中設(shè)置代理信息。 如果 Inter 連接 方式為 APN WAP 方式, 則需要 代理信息。 ( 2) 添加一個(gè)方法將信息發(fā)送到服務(wù)器, 有 POST 和 GET 兩種方式 。 采用 Post 方式進(jìn)行數(shù)據(jù)傳遞時(shí),首先設(shè)置要發(fā)送至的 URL 地址,然后設(shè)置發(fā)送的內(nèi)容體, StringEntity entity = new StringEntity(xml,”utf8”)進(jìn)行參數(shù)體設(shè)置,然后判斷服務(wù)器回送的狀態(tài)嗎, 200表示正確返回,將返回流設(shè)置好同樣的編碼方式后進(jìn)行返回。 獲取當(dāng)前銷售期信息 ( 1)建立頁面類 Hall繼承 BaseView 頁面,并重寫父類的 init 等方法。 ( 2) CurrentIssueElement 類 建立 而且實(shí)現(xiàn) Element 接口 , 在該類中添加節(jié)點(diǎn)玩法編號( lotteryid)、當(dāng)前期次( issue)、截止時(shí)間( lasttime)、玩法名稱( lotteryname)。 ( 3)用戶點(diǎn)擊登錄按鈕,進(jìn)行登錄操作, UiManager 調(diào)用 changeView 方法進(jìn)行目標(biāo)頁面的切換,同時(shí)切換了頂部和頂部的導(dǎo)航。 ( 4)用戶填寫正確的數(shù)據(jù)后,點(diǎn)擊登錄, 創(chuàng)建異步方法 doInBackground 在方法中創(chuàng)建 對象 CommonServiceImpl,調(diào)用 CommonServiceImpl 對象中的 getCurrentIssueInfo 方法,將 CurrentIssueElement 對象作為參數(shù)傳遞給 getCurrentIssueInfo 方法,生成 XML 數(shù)據(jù)包后,將數(shù)據(jù)包發(fā)送到服務(wù)端。 ( 5)在異步 請求對象的 onPostExecute 處理服務(wù)器返回的結(jié)果,成功或者失敗都給用戶顯示友好的提示信息。 雙色球界面 雙色球號碼界面生成 ( 1)雙色球界面中,對于紅球和籃球的布局采用 GridView 進(jìn)行布局 [6]。在布局中將numColumns 屬性設(shè)置為 auto_fit,這樣應(yīng)用就可以適應(yīng)不同大小的手機(jī)屏幕,根據(jù)手機(jī)屏幕的大小而改變列數(shù)。同時(shí)左右設(shè)置一定的邊距,為了在點(diǎn)擊紅球或者藍(lán)球時(shí)出現(xiàn)抖動效果。 ( 2)采用 Adapter 方式進(jìn)行數(shù)據(jù)的填充。創(chuàng)建 PoolAdapter 類并繼承 BaseAdapter 紅球和藍(lán)球都采用 PoolAdapter 的對象進(jìn)行實(shí)現(xiàn)。只不過生成的球的數(shù)量不一樣。例如,在紅球的 Adapter 中生成 133 個(gè)球,同時(shí)可以將機(jī)選的球改變背景顏色。在 PoolAdapter 類中重寫 BaseAdapter 的 getView、 getCount、 getItem、 getItemId 方法,在 getView 方法中進(jìn)行雙色球的繪制,首先定義一個(gè)存放雙色球的容器,這里采用 TextView 作為容器,然后設(shè)置容器的背景圖片,設(shè)置內(nèi)容的顯示位置,設(shè)置內(nèi)容的顯示顏色,最后設(shè)置顯示內(nèi)容。 ( 3)創(chuàng)建一個(gè)通用的生成號 碼的方法,根據(jù)參數(shù),第一個(gè)參數(shù)為紅球個(gè)數(shù),第二個(gè)參數(shù)為藍(lán)球個(gè)數(shù),當(dāng)紅球數(shù)為 6 藍(lán)球數(shù)為 0 則機(jī)選紅球,如果紅球數(shù)為 0 藍(lán)球數(shù)為 1 則機(jī)選藍(lán)球,當(dāng)紅球?yàn)?6 藍(lán)球?yàn)?0 時(shí)則機(jī)選一注號碼,這是為了手機(jī)搖一搖而存在的。 煙臺大學(xué)畢業(yè)論文(設(shè)計(jì)) 20 搖一搖選號 ( 1)創(chuàng)建一個(gè)傳感器類并監(jiān)聽傳感器的事件。該類的原理就是判斷手機(jī)搖晃的幅度跟間隔,如果符合定義好的搖晃幅度和間隔,則隨機(jī)生成一注號碼。 如果不符合比如說搖晃時(shí)間過短或者搖晃距離不夠,則從零繼續(xù)開始統(tǒng)計(jì)。 ( 2)在雙色球頁面中注冊好傳感器,同時(shí)重寫生成一注彩票的方法。即可手動搖號,傳感器距 離和時(shí)間都符合要求之后,則隨機(jī)生成一注雙色球號碼。生成號碼后調(diào)用()重新生成雙色球界面。 煙臺大學(xué)畢業(yè)論文(設(shè)計(jì)) 21 6 綜合測試 登錄和注冊界面 登錄界面 登錄時(shí)要求用戶使用 手機(jī)號碼進(jìn)行登錄 ,因?yàn)猷]箱的全稱是沒有重復(fù)的,本系統(tǒng)利用此特性,無需再進(jìn)行唯一性驗(yàn)證。 ( 1)測試用例。目的是通過詳細(xì)的測試用例,來診斷用戶登錄模塊是否存在一些在臨界值狀態(tài)下的問題,例如用戶名和密碼的格式問題以及重復(fù)性或者長度等問題。 測試用例如表 。 表 用戶登錄測試用例 軟件測 試用例 項(xiàng)目名稱 程序版本 測試環(huán)境 硬件環(huán)境(服務(wù)器端: Windows 客戶端: Windows 7) 軟件環(huán)境(服務(wù)器端: Visual Studio 20客戶端: Eclipse) 網(wǎng)絡(luò)環(huán)境(正常) 編制人 劉敏 編制時(shí)間 2020 年 4 月 8 日 功能模塊名稱 登錄 預(yù)置條件 打開“購彩大廳”頁面 用例編號 測試步驟 輸入數(shù)據(jù) 預(yù)期結(jié)果 測試結(jié)果 點(diǎn)擊“登錄”按鈕,進(jìn)入“登錄”界面。 用戶名:13012575230 密碼: 123456。 用戶登錄 成功,跳轉(zhuǎn)到“購彩大廳”界面,同時(shí)頂部顯示用戶的名稱和賬戶余額。 用戶登錄成功,跳轉(zhuǎn)到“購彩大廳”界面,同時(shí)頂部顯示用戶的名稱和賬戶余額。 . 點(diǎn)擊“登錄”按鈕,進(jìn)入“登錄”界面。 用戶名:空 密碼: 123456。 彈出提示“用戶名不能為空”。 彈出提示“用戶名不能為空”。 . 點(diǎn)擊“登錄”按鈕,進(jìn)入“登錄”界面。 用戶名: 123 密碼: 123456。 彈出提示“用戶名格式不正確,請輸入正確的手機(jī)號碼”。 彈出提示“用戶名格式不正確,請輸入正確的手機(jī)號碼”。 . 點(diǎn)擊“登錄”按鈕,進(jìn)入“登錄”界面。 用戶名:13012575230 密碼:空。 彈出提示“密碼不能為空”。 彈出提示“密碼不能為空”。 點(diǎn)擊“登錄”按鈕,進(jìn) 用戶名: 彈出提示“密碼長 彈出提示“密碼長煙臺大學(xué)畢業(yè)論文(設(shè)計(jì)) 22 . 入“登錄”界面。 13012575230 密碼: 123. 度不足”。 度不足”。 . 點(diǎn)擊“登錄”按鈕,進(jìn)入“登錄”界面。 用戶名:13012575230 密碼:¥ 12356. 彈出提示“密碼中包含非法字符”。 彈出提示“密碼中包含非法字符”。 ( 2)登錄 界面顯示。本應(yīng)用中用戶登錄界面如圖 所示。 圖 用戶登錄界面 ( 3)測試結(jié)果。在用戶名的格式進(jìn)行驗(yàn)證時(shí),一開始的情況是不符合十一位格式的會進(jìn)行錯(cuò)誤提示,但是例如“ 12345678901”這樣格式的號碼無法進(jìn)行順利的錯(cuò)誤判斷,所以在修改了程序中手機(jī)號碼的正則表達(dá)式后即可以進(jìn)行正確的驗(yàn)證。 注冊界面 注冊時(shí),用戶只需要填寫用戶名和秘密,以及確認(rèn)密碼。當(dāng)密碼和確認(rèn)密碼不一致時(shí),系統(tǒng)都會給出提示。 ( 1)測試用例。 目的是通過詳細(xì)的測試用例,來診斷用戶注冊模塊是否存在一些在臨界值狀態(tài)下的問題, 例如用戶名和密碼的格式問題以及重復(fù)性或者長度等問題。這里著重測試的是用戶是否勾選了“我已經(jīng)閱讀了并同意”按鈕以及密碼和確認(rèn)密碼值是否相同。測試用例如表 。 表 用戶注冊測試用例 軟件測試用例 項(xiàng)目名稱 程序版本 測試環(huán)境 硬件環(huán)境(服務(wù)器端: Windows 客戶端: Windows 7) 軟件環(huán)境(服務(wù)器端: Visual Studio 20客戶端: Eclipse) 網(wǎng)絡(luò)環(huán)境(正常) 編制人 劉敏 編制時(shí)間 2020 年 4 月 8 日 煙臺大學(xué)畢業(yè)論文(設(shè)計(jì)) 23 功能模塊名稱
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1