【文章內容簡介】
久都不會有變動,所以考慮在客戶端也創(chuàng)建一個數(shù)據(jù)庫把服務器端發(fā)送過來的數(shù)據(jù)存儲在本地數(shù)據(jù)庫中,當服務器有更新時只需要傳遞改變的數(shù)據(jù)就可以實現(xiàn)更新。 數(shù)據(jù)庫表及 其結構 客戶端數(shù)據(jù)庫( SQLite) DownloadInfo 表:編號,文件名,包名,圖標鏈接,下載鏈接,下載進度,文件長度,文件詳細信息鏈接,文件存儲路徑。 服務端數(shù)據(jù)庫( MySQL) User 表:編號,頭像鏈接,用戶名,性別,生日,手機,郵箱,等級,經(jīng)驗, 金幣,注冊時間,禮包數(shù),收藏數(shù),評論數(shù)。 Game 表:編號,標題,圖標鏈接,包名,版本號,評價等級,描述,金幣數(shù), 獎勵金幣數(shù),游戲類別,文件大小,下載數(shù)量,下載鏈接,詳情編 號,作者編號。 GameDetail 表:編號,標簽,詳情圖片鏈接,評論鏈接; Author 表:編號,姓名,作者鏈接。 Comment 表:編號,評分,評論內容,評論日期,手游編號,評論者編號。 基于 Android 的手游應用商店的設計與實現(xiàn) 20 數(shù)據(jù) 系統(tǒng) ER(實體 聯(lián)系)圖用來描述數(shù)據(jù)關系模型,可以用來建立數(shù)據(jù)模型。本系統(tǒng)共有 6 個實體,其關系如圖 39 所示。 D o w n l o a d I n f oP K I D p a s s w o r d n a m e f i l e N a m e p a c k a g e N a m e i c o n P a t h d o w n l o a d U r l p r o g r e s s f i l e L e n g h t d e t a i l U r l f i l e S a v e P a t hU s e rP K I D i c o n u s e r n a m e p a s s w o r d s e x b i r t h d a y p h o n e e m a i l l e v e l e x p e r i e n c e c o i n s i g n u p T i m e g i f t b a g C o u n t b o o k m a r k C o u n t c o m m e n t C o u n tG a m eP K I D t i t l e i c o n p a c k a g e N a m e v e r s i o n C o d e s t a r t s u m m a r y c o i n a w a r d C o i n c a t e g o r y N a m e d o w n l o a d C o u n t d o w n l o a d L e n g h t d e t a i l U r l d e t a i l I D a u t h o r I DC o m m e n tP K I D s t a r t c o m m e n t s u m b i t D a t e u s e r I D g a m e I DG a m e D e t a i lP K I D t a g s c o v e r U r l c o m m e n t U r lA u t h o rP K I D n a m e s u m m a r y U r l 圖 39 手游應用商店實體關系圖 客戶 端數(shù)據(jù)庫的連接 客戶端的數(shù)據(jù)庫創(chuàng)建代碼如下所示: public class FileDownDBOpenHelper extends SQLiteOpenHelper { private static final String DBNAME = 。 private static final int VERSION = 1。 基于 Android 的手游應用商店的設計與實現(xiàn) 21 public FileDownDBOpenHelper(Context context) { super(context, DBNAME, null, VERSION)。 } @Override public void onCreate(SQLiteDatabase db) { (CREATE TABLE IF NOT EXISTS + + (_id integer primary key autoincrement, ++ varchar(100), ++ varchar(100), ++ varchar(100), ++ varchar(100), + + varchar(100), + + varchar(100), + + INTEGER, + + varchar(100), ++ INTEGER ))。 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { (DROP TABLE IF EXISTS + )。 onCreate(db)。 } } 客戶端數(shù)據(jù)庫鏈接代碼(主要代碼)如下所示: 基于 Android 的手游應用商店的設計與實現(xiàn) 22 服務器數(shù)據(jù)庫的連接 系統(tǒng)結構 本系統(tǒng)采用 HTTP協(xié)議來進行數(shù)據(jù)傳輸。采用 C/S結構,客戶端為基于 Android操作系統(tǒng)平臺的智能手機,主要的業(yè)務邏輯則服務器端來實現(xiàn),數(shù)據(jù)存儲在數(shù)據(jù)庫服務器 部署圖 系統(tǒng)部署如圖 所示,客戶端采用基于 Android 操作系統(tǒng)平臺的智能手機,服務器端包括服務器、圖形界面化工具和 數(shù)據(jù)庫服務器,主要處理業(yè)務邏輯和對數(shù)據(jù)的增刪改查。 基 于 A n d r o i d操 作 平 臺 的智 能 手 機客 戶 端P C 機服 務 端數(shù) 據(jù) 庫 服務 : S Q L s e r v e r 2 0 0 5D B M SH T T P 協(xié)議 圖 310 系統(tǒng)部署圖 類圖 根據(jù)已建立的用例圖確定要建立的對象類并確定屬性和操作。通過檢查類的定義,分析問題的需求和運用該領域知識來確定類的屬性。根據(jù)系統(tǒng)功能需求和基于 Android 的手游應用商店的設計與實現(xiàn) 23 系統(tǒng)設計需要確定類的操作 ,本系統(tǒng)有 6 個實體類,分別為下載信息實體類( DownloadInfo)、用戶實體類( User)、評論實體類( Comment)、手游實體類( Game)、手游詳情實體類( GameDetail)、手 游作者實體類( Author),如圖311 所示。+setID()+getID() : Long+setName()+getName() : String+setFileName()+getFileName() : String+setPackageName()+getPackageName() : String+setIconPath()+getIconPath() : String+setDownloadUrl()+getDownloadUrl() : String+setProgres()+getProgres() : Integer+setFileLength()+getFileLength() : Integer+seDetailUrl()+getDetailUrl() : String+setFileSavePath()+getFileSavePath() : StringID : Longname : StringfileName : StringpackageName : StringiconPath : StringdownloadUrl : Stringprogres : IntegerfileLength : IntegerdetailUrl : StringfileSavePath : StringDownloadInfo+setID()+getID() : Long+setIcon()+getIcon() : String+setUserName()+getUserName() : String+setSex()+getSex() : String+setBirthday()+getBirthday() : String+setPhone()+getPhone() : String+setEmail()+getEmail() : String+setLevel()+getLevel() : Integer+setExperience()+getExperience() : Integer+setCoin()+getCoin() : Integer+setSignupTime()+getSignupTime() : String+setGiftbagCount()+getGiftbagCount() : Single+setBookmarkCount()+getBookmarkCount() : Integer+setCommentCount()+getCommentCount() : IntegerID : Longicon : StringuserName : Stringsex : Stringbirthday : Stringphone : String : Stringlevel : Integerexperience : Integercoin : IntegersigupTime : StringgiftbagCount : IntegerbookmarkCount : IntegermentCount : IntegerUser+setID()+getID() : Long+setTitle()+getTitle() : String+setIcon()+getIcon() : String+setPackageName()+getPackageName() : String+setVersionCode()+getVersionCode() : Double+setStart()+getStart() : Double+setSummary()+getSummary() : String+setCoin()+getCoin() : Integer+setAwardCoin()+getAwardCoin() : Integer+setCategoryName()+getCategoryName() : String+setDownloadUrl()+getDownloadUrl() : String+setDownloadCount()+getDownloadCount() : String+setDownloadLength()+getDownloadLength() : Integer+setDetailUrl()+getDetailUrl() : StringID : Longtitle : Stringicon : StringpackageName : StringversionCode : Doublestart : Doublesummary : Stringcoin : IntegerawardCoin : IntegercategoryName : StringdownloadUrl : StringdownloadCount : IntegerdownloadLength : IntegerdetailUrl : StringGame+setID()+getID() : Long+setStart()+getStart() : Double+setComment()+getComment() : String+setSumbitDate()+getSumbitDate() : StringID : Longstart : Doublement : StringsumbitDate : DateComment+setID()+getID() : Long+setTags()+getTags() : String+setCoverUrl()+getCoverUrl() : String+setAuthor()+getAutjor() : Author+setComment()+getComment() : CommentID : Longtags : Strin