Android開發(fā)(七)| “我的12306”實例

作為程序員该肴,從一無所知開始接觸情竹、熟練使用android控件、布局匀哄、活動秦效,自己開發(fā)的項目隨之越來越茁壯,功能越來越完善涎嚼,我們的內(nèi)心是由衷感到高興的阱州。

為了對兩個月的學(xué)習(xí)成果有一個檢驗,我把之前所學(xué)所講做了如下的綜合實例法梯;如果能對其他熱愛android開發(fā)的朋友有所幫助苔货,那簡直是再好不過。這也是我寫android開發(fā)系列文章的初衷立哑。

這個實例取名“我的12306”夜惭,顧名思義源自12306火車訂票系統(tǒng),實現(xiàn)了原版的部分功能铛绰。如簡單的車票預(yù)訂:

購票

基本的線路查找:

查詢線路

列車詳細(xì)信息:

車次詳情

學(xué)習(xí)過程中借鑒一些優(yōu)秀實例诈茧,既是對編程開發(fā)能力的鍛煉,也利于活躍思維捂掰,有助于今后開發(fā)自己的創(chuàng)新產(chǎn)品若皱。

這一章就來簡明扼要的說明該實例的功能和開發(fā)過程。

一尘颓、實現(xiàn)基本的車次查詢

Android程序的設(shè)計講究邏輯和視圖分離走触,最好一個活動對應(yīng)一個布局,用來顯示界面的內(nèi)容疤苹。所以本實例都是通過修改 .xml中的代碼互广,完成界面的布局。再在activity中加入邏輯實現(xiàn)的代碼。

如下是第一個界面惫皱,具體布局代碼應(yīng)該可以直接略過了像樊,稍值一提的是“最近常用線路”往往不只一條,所以把它們存放在ListView中旅敷,方便用戶隨時調(diào)用髓抑。

儲備了多條常用線路 方便用戶選擇

關(guān)于Android號稱最難使用的控件ListView,您可以上網(wǎng)查閱資料或參考《android開發(fā)二 | 最常用和最難用的控件》我們需要為ListView定義一個適配器(如 ArrayAdapter)获印,將希望傳入顯示的數(shù)據(jù)和ListView關(guān)聯(lián)起來肝陪;同時定義一個實體類,作為適配器的適配類型晴音。

關(guān)于查詢界面柔纵,先給出點擊“查詢”跳轉(zhuǎn)的響應(yīng)代碼,如需完整代碼您可以在文末留言或私信“葉琛_”锤躁。這兒的常用線路我通過SharedPreferences存儲搁料、讀取,因為簡單方便系羞。

“查詢”跳轉(zhuǎn)按鈕

跳轉(zhuǎn)后顯示符合條件的車次郭计。從本界面開始的數(shù)據(jù)讀取、寫入椒振,都是是通過android系統(tǒng)內(nèi)置的數(shù)據(jù)庫SQLite實現(xiàn)的拣宏。

我已在數(shù)據(jù)庫中建了三張表,分別存放①列車(車次杠人、起點勋乾、終點)、②列車詳細(xì)信息(車次嗡善、時間辑莫、停靠站罩引、票價等)各吨、③票務(wù)管理(車次、余票等)袁铐,用于實現(xiàn)“12306”的基本功能揭蜒。表中變量車次是唯一的,即每張表通過車次關(guān)聯(lián)剔桨。

可以在dos界面下使用adb shell對數(shù)據(jù)庫和表的創(chuàng)建情況進(jìn)行檢查屉更。

現(xiàn)在,假設(shè)在起點洒缀、終點分別輸入“拉薩”和“北京西”瑰谜,點擊查詢后就會從數(shù)據(jù)庫逐條讀取出符合條件的車次:

我們要的結(jié)果出來了欺冀,每條記錄對應(yīng)于①列車這張表我暫時在表中插入兩班車所以只有兩條記錄萨脑。

二隐轩、實現(xiàn)車次的新增和查找

上一界面還有兩個藍(lán)色按鈕,分別為增添和查找功能渤早。增添职车,就是往表中插入數(shù)據(jù);點擊后鹊杖,可按提示文字對新車次進(jìn)行編輯:

新增車次編輯

填寫完成后悴灵,點擊“確定”,執(zhí)行如下代碼仅淑,通過SQL語句向三張表插入數(shù)據(jù)并彈出“增加成功”的提示語:

至于“查找”就更簡單了称勋,點擊后頁面跳轉(zhuǎn)胸哥,輸入車次后涯竟,會通過Cursor對象與表中內(nèi)容進(jìn)行匹配,如果存在空厌,就會在列表中顯示列車信息庐船;否則提示“車次不存在”并返回上一界面。

通過cursor匹配表中信息

三嘲更、實現(xiàn)增刪改和涂鹬樱靠站間的線路查詢

之前的界面,還有一個編輯按鈕沒有用到赋朦。其實這個按鈕經(jīng)過設(shè)置沒有實際功能篓冲,僅提示點擊具體班車再進(jìn)行后續(xù)步驟。

我們以“G501”為例宠哄,點擊后顯示出本班車的具體信息壹将,包括行駛時間、兔担靠站诽俯、車票等,對應(yīng)于表列車詳細(xì)信息”承粤。

列車詳情

這個界面顯示的信息相對比較全面了暴区,它包含了三個功能:購票、編輯和刪除辛臊∠闪唬“刪除”是最簡單的,它將執(zhí)行SQL的“delete”語句彻舰,在后臺三張表中這班車的信息就會全部刪光缰盏。

刪除車次

在“編輯”中我寫入了增加停靠站功能。新增后口猜,加入的透合靠站會被顯示在列表末尾,序列號自動+1济炎。我們在“拉薩”到“北京西”間增加一站“石家莊”川抡,再查看G501列車:

停靠站新增

通過SQL語句“update”更新表须尚,將數(shù)據(jù)增添:

“購票”功能將放在下一節(jié)⊙碌蹋現(xiàn)在,還有一個隱含功能沒有體現(xiàn)耐床,就是不同城市間的線路查詢密幔。假設(shè)我們要查詢“西寧“到“石家莊”的列車,那"G501"肯定包含其中撩轰,因為這兩站都是它的涂杷Γ靠站。

進(jìn)入列車詳情堪嫂,唾梭铮靠站自然只剩了兩站:

這個功能的實現(xiàn),需要遍歷算法的支持皆串。即輸入起點淹办、終點后先遍歷數(shù)據(jù)庫,判斷有沒有列車的起始站恶复、終點站剛好與之相等怜森。若有直接取出;若無谤牡,再遍歷查找起始站等于“起點”副硅,停靠站等于“終點”的列車...

排查范圍依次增大拓哟,最大范圍就是起點和終點都是同一班車的兩個拖胄恚靠站,否則就沒有符合條件的車次了断序。附上遍歷算法的android代碼:

便利查詢算法
接上頁

這一功能的實現(xiàn)流纹,標(biāo)志我們的項目和實際應(yīng)用又近了一步,是很好的趨勢违诗。

四漱凝、實現(xiàn)票數(shù)的銷售

這一步是最困難的,因為要考慮的因素很多诸迟。例如一班車從北京經(jīng)南京開往上海茸炒,現(xiàn)在賣出了一張北京到上海的全程車票愕乎,這是最理想的;但如果賣出了一張北京到南京的車票壁公,那有人想從北京去上海感论,就買不到這張票了;除非有人買下南京到上海的車票紊册,不然這個位置就被閑置浪費了比肄。

時間倉促,本案例中我沒有完整寫出正常售票的算法囊陡,只實現(xiàn)購買全程車票的情況芳绩。

還是拉薩到北京西的例子,假設(shè)某人購買了一張“商務(wù)座”撞反,原來商務(wù)座余票2張妥色,購票成功后余票變?yōu)?。依舊通過SQL語句實現(xiàn)表中數(shù)據(jù)的更新遏片。

本案例所有功能嘹害、步驟到此介紹完了,關(guān)鍵部分代碼已給出丁稀。當(dāng)然部分功能是不全或有缺陷的吼拥,這說明我們學(xué)習(xí)的道路依舊路漫漫其修遠(yuǎn)倚聚,蘊藏著很大的潛能线衫。


本章小節(jié):

本實例是對之前android知識的綜合運用,涉及基本控件惑折、布局授账、活動的跳轉(zhuǎn)、數(shù)據(jù)的傳遞惨驶,也充分運用了android內(nèi)置數(shù)據(jù)庫的查詢白热、更新、添加粗卜、刪除各個功能屋确,還對SQL語句進(jìn)行了很好的回顧。

通過今后學(xué)習(xí)续扔,改進(jìn)一些算法使功能更加完善攻臀,再加上網(wǎng)絡(luò)和多線程技術(shù),我們的應(yīng)用就蠻像一回事了纱昧∨傩ィ“編程尚未成功,大伙仍需努力识脆∩枇”

接下來善已,我還會對聯(lián)網(wǎng)技術(shù)、多線程編程等剖文講解离例。每周一更新换团,歡迎您持續(xù)關(guān)注!


點贊的人 是善良的大多數(shù):)

作者:葉琛

一只癡迷旅行的 IT程序狗

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宫蛆,一起剝皮案震驚了整個濱河市啥寇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洒扎,老刑警劉巖辑甜,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異袍冷,居然都是意外死亡磷醋,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門胡诗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邓线,“玉大人,你說我怎么就攤上這事煌恢『С拢” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵瑰抵,是天一觀的道長你雌。 經(jīng)常有香客問我,道長二汛,這世上最難降的妖魔是什么婿崭? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮肴颊,結(jié)果婚禮上氓栈,老公的妹妹穿的比我還像新娘。我一直安慰自己婿着,他們只是感情好授瘦,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竟宋,像睡著了一般提完。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袜硫,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天氯葬,我揣著相機與錄音,去河邊找鬼婉陷。 笑死帚称,一個胖子當(dāng)著我的面吹牛官研,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闯睹,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼戏羽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了楼吃?” 一聲冷哼從身側(cè)響起始花,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孩锡,沒想到半個月后酷宵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡躬窜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年浇垦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荣挨。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡男韧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出默垄,到底是詐尸還是另有隱情此虑,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布口锭,位于F島的核電站朦前,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏讹弯。R本人自食惡果不足惜况既,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一这溅、第九天 我趴在偏房一處隱蔽的房頂上張望组民。 院中可真熱鬧,春花似錦悲靴、人聲如沸臭胜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耸三。三九已至,卻和暖如春浇揩,著一層夾襖步出監(jiān)牢的瞬間仪壮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工胳徽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留积锅,地道東北人爽彤。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像缚陷,于是被迫代替她去往敵國和親适篙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容