Android开发(七)| “我的12306”实例

作为程序员,从一无所知开始接触、熟练使用android控件、布局、活动,自己开发的项目随之越来越茁壮,功能越来越完善,我们的内心是由衷感到高兴的。

为了对两个月的学习成果有一个检验,我把之前所学所讲做了如下的综合实例;如果能对其他热爱android开发的朋友有所帮助,那简直是再好不过。这也是我写android开发系列文章的初衷。

这个实例取名“我的12306”,顾名思义源自12306火车订票系统,实现了原版的部分功能。如简单的车票预订:

购票

基本的线路查找:

查询线路

列车详细信息:

车次详情

学习过程中借鉴一些优秀实例,既是对编程开发能力的锻炼,也利于活跃思维,有助于今后开发自己的创新产品。

这一章就来简明扼要的说明该实例的功能和开发过程。

一、实现基本的车次查询

Android程序的设计讲究逻辑和视图分离,最好一个活动对应一个布局,用来显示界面的内容。所以本实例都是通过修改 .xml中的代码,完成界面的布局。再在activity中加入逻辑实现的代码。

如下是第一个界面,具体布局代码应该可以直接略过了,稍值一提的是“最近常用线路”往往不只一条,所以把它们存放在ListView中,方便用户随时调用。

储备了多条常用线路 方便用户选择

关于Android号称最难使用的控件ListView,您可以上网查阅资料或参考《android开发二 | 最常用和最难用的控件》我们需要为ListView定义一个适配器(如 ArrayAdapter),将希望传入显示的数据和ListView关联起来;同时定义一个实体类,作为适配器的适配类型。

关于查询界面,先给出点击“查询”跳转的响应代码,如需完整代码您可以在文末留言或私信“叶琛_”。这儿的常用线路我通过SharedPreferences存储、读取,因为简单方便。

“查询”跳转按钮

跳转后显示符合条件的车次。从本界面开始的数据读取、写入,都是是通过android系统内置的数据库SQLite实现的。

我已在数据库中建了三张表,分别存放①列车(车次、起点、终点)、②列车详细信息(车次、时间、停靠站、票价等)、③票务管理(车次、余票等),用于实现“12306”的基本功能。表中变量车次是唯一的,即每张表通过车次关联。

可以在dos界面下使用adb shell对数据库和表的创建情况进行检查。

现在,假设在起点、终点分别输入“拉萨”和“北京西”,点击查询后就会从数据库逐条读取出符合条件的车次:

我们要的结果出来了,每条记录对应于①列车这张表我暂时在表中插入两班车所以只有两条记录。

二、实现车次的新增和查找

上一界面还有两个蓝色按钮,分别为增添和查找功能。增添,就是往表中插入数据;点击后,可按提示文字对新车次进行编辑:

新增车次编辑

填写完成后,点击“确定”,执行如下代码,通过SQL语句向三张表插入数据并弹出“增加成功”的提示语:

至于“查找”就更简单了,点击后页面跳转,输入车次后,会通过Cursor对象与表中内容进行匹配,如果存在,就会在列表中显示列车信息;否则提示“车次不存在”并返回上一界面。

通过cursor匹配表中信息

三、实现增删改和停靠站间的线路查询

之前的界面,还有一个编辑按钮没有用到。其实这个按钮经过设置没有实际功能,仅提示点击具体班车再进行后续步骤。

我们以“G501”为例,点击后显示出本班车的具体信息,包括行驶时间、停靠站、车票等,对应于表列车详细信息”

列车详情

这个界面显示的信息相对比较全面了,它包含了三个功能:购票、编辑和删除。“删除”是最简单的,它将执行SQL的“delete”语句,在后台三张表中这班车的信息就会全部删光。

删除车次

在“编辑”中我写入了增加停靠站功能。新增后,加入的停靠站会被显示在列表末尾,序列号自动+1。我们在“拉萨”到“北京西”间增加一站“石家庄”,再查看G501列车:

停靠站新增

通过SQL语句“update”更新表,将数据增添:

“购票”功能将放在下一节。现在,还有一个隐含功能没有体现,就是不同城市间的线路查询。假设我们要查询“西宁“到“石家庄”的列车,那"G501"肯定包含其中,因为这两站都是它的停靠站。

进入列车详情,停靠站自然只剩了两站:

这个功能的实现,需要遍历算法的支持。即输入起点、终点后先遍历数据库,判断有没有列车的起始站、终点站刚好与之相等。若有直接取出;若无,再遍历查找起始站等于“起点”,停靠站等于“终点”的列车...

排查范围依次增大,最大范围就是起点和终点都是同一班车的两个停靠站,否则就没有符合条件的车次了。附上遍历算法的android代码:

便利查询算法
接上页

这一功能的实现,标志我们的项目和实际应用又近了一步,是很好的趋势。

四、实现票数的销售

这一步是最困难的,因为要考虑的因素很多。例如一班车从北京经南京开往上海,现在卖出了一张北京到上海的全程车票,这是最理想的;但如果卖出了一张北京到南京的车票,那有人想从北京去上海,就买不到这张票了;除非有人买下南京到上海的车票,不然这个位置就被闲置浪费了。

时间仓促,本案例中我没有完整写出正常售票的算法,只实现购买全程车票的情况。

还是拉萨到北京西的例子,假设某人购买了一张“商务座”,原来商务座余票2张,购票成功后余票变为1。依旧通过SQL语句实现表中数据的更新。

本案例所有功能、步骤到此介绍完了,关键部分代码已给出。当然部分功能是不全或有缺陷的,这说明我们学习的道路依旧路漫漫其修远,蕴藏着很大的潜能。


本章小节:

本实例是对之前android知识的综合运用,涉及基本控件、布局、活动的跳转、数据的传递,也充分运用了android内置数据库的查询、更新、添加、删除各个功能,还对SQL语句进行了很好的回顾。

通过今后学习,改进一些算法使功能更加完善,再加上网络和多线程技术,我们的应用就蛮像一回事了。“编程尚未成功,大伙仍需努力。”

接下来,我还会对联网技术、多线程编程等剖文讲解。每周一更新,欢迎您持续关注!


点赞的人 是善良的大多数:)

作者:叶琛

一只痴迷旅行的 IT程序狗

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容