程序员

4周开发一款应用程序,是怎样的体验

01 每天敲代码的程序员,同样很幸福

曾经4周追了两部TVB电视剧;4周吃遍了校门外的小吃铺;4周穿梭在4个国家旅行。但最近的4周,我尝试用三个月学习的技术,开发了一款能在手机上流畅运行的应用程序。

9月学校开始学习安卓,用的教材是安卓大牛郭霖的《第一行代码》。11月,老师说这门课不考试,只要模仿做一个能在手机上运行的app,限时4周。

“能做出来的同学,4个星期一定能做出来;做不出来的同学,给你一年也做不出来。”

虽然当时心没底很有压力,但觉得这句话是真理。最终做出了这款模仿“去哪儿”的“机票订购”系统。

程序登录页面

一个月里,每天花固定2小时去构思流程、上机编程。其余时间依据追爱看的剧、上球馆打球、周末出门郊游、不定期来简书码字。虽然每天面对代码,并没让我觉得多么痛苦。

能学精一门编程技术,又能坚持个人兴趣、爱好、情怀。每天面对电脑的未来程序员,同样可以拥有丰富多彩的生活。

02 细小bug能“致命”,良好习惯能“救命”

4周写了一万多行代码,最大的感悟是养成良好的编程风格很重要。

良好的编程习惯包括:

1)抽象思考问题,合理划分模块;

2)代码简洁清晰,对人友善;

3)勤写注释,方便维护

4)能看懂编译器的错误提示;(基本英文单词一定要掌握)

5)出错时,请先怀疑自己的代码而不是编译器….

写程序前,我们首先应该对要编码实现的方案有一个初步设计,抽象思考问题即我要达到怎样的目的。我觉得这是编程的基础。

例如这张流程图,在正式编程前已经在我脑海中基本明确,所以一行行代码写下来很清楚下一步自己需要做什么,不会思绪混乱。

养成各种良好的编程风格,能从根上起有效减少你的出错率,提高编程速度,同时便于程序的后期维护。

例如 if( x == 1 ){…} 和 if( 1 == x ){…} 这两种写法,功能完全一样。但一般在大型程序中会推荐后一种。因为如果程序员粗心,少写一个“=”,前者编译器并不报错;后者编译器就能识别给常量赋值这一错误。

有时,关键处漏写一个“空格”都足以让程序崩溃;而程序员还得可怜地盯着半红的屏幕,大眼瞪小眼好久。

4周里,我就有过多次一个细节卡壳数小时的深刻体会。时间就是生命。我们要对自己的代码负责,对生命负责。

03 我的“去哪儿机票”

虽然遇见过各种错误,失败过无数次,但当看到自己的程序流畅运行时,对程序员而言是最大的褒奖。

这次做的是一款民航订票系统,实现了基本的线路查询、购票、退票、改签功能。同时加入管理员来实现管理用户请求和维护航线。程序中所有数据都存放在后台数据库。

麻雀虽小五脏俱全,整个流程并不复杂。

一、用户登录

1)查询线路

类似于其他订票app,在用户首页提供了“路线查询”、“查看订单”和“查询余额”功能。点击相应按钮,执行对应函数,向后台提交读取数据请求。

用户查询界面

现在输入“上海”、“香港”,程序会查询出所有满足条件的航班信息。当然目前,这些信息是我在后台数据库事先写好的。

航班信息

这是一个列表ListView,用户可以手指上下滑动屏幕把没有显示出的航班信息滚动加载到屏幕内。

这个ListView号称安卓最复杂的控件,之前笔者写过一篇相关文章:《Android最常用和最难用的控件》,可供您参考。

2)下单订票

选择某一趟航班,点击进入后会显示本次航线的具体信息:

航班详细信息

所有控件的布局都是自己设计的,所以和实际使用的app还有一些差距,请读者多包涵。

接下来就可以订票了,点击“购票”程序将跳转到下一页面。

填写乘机人信息

先填写乘客基本信息,然后就可以正式提交订单了。程序继续向后跳转:

付款界面

确认付款后,可以去“我的订单”中查到这一订单,系统自动在账户余额中扣除机票费用。

3)订单记录查询

我的订单

列表中最底层的就是刚刚购票的记录(其余是之前测验的结果)。点击进入查看:

订单详细信息

可以看到,我们刚刚手动输入的乘客信息包括航班信息都显示在当前界面上。这里的订单号是依据当前主机的系统时间生成,精确到毫秒级。所以是独一无二的。

这种生成唯一订单号的方法推荐给大家,还可以加入随机生成数,让序号变得更复杂。

4)退票 / 改签

和实际相联系,用户可以申请退票或改签,操作成功后原机票将作废。

我在这里做了一点设置,用户退票需向管理员申请。如点击“退票”,机票状态更新为“订单取消中”,可以在管理员界面查看。

申请退票

管理员同意请求后,才能真正完成退票。

二、管理员登录

1)查询航班

管理员同样可以查询航线,与用户共享数据库中的航班信息数据。

管理员登录界面

2)暂停售票

我为管理员增加了暂停售票功能,之后用户查看本次航班,将无法进行购票操作。

用户无法订票

3)受理请求

不同用户提交的订单都将在一个列表中统一显示,唯一的订单号将它们明确区别:

用户退票请求

点击进入后,可以同意或拒绝用户请求:

4)增加航线

管理员有权增加航线,按提示输入信息再传递到后台PC端,数据库的记录相应增加。

增开航线

总的来说,这是一款仿实际生活中app的小型应用程序。使用的服务器是tomcat8.0,开发环境是安装了ADT插件的eclipse和Android SDK、JDK 8.0、MySQL。


小结:

这一学期学习的安卓开发技术,是我出乎意料的进大学以来写程序最多的一学期。

进这门专业2年多,我觉得学习计算机仅凭每周上几节课是远远不够的,关键在课后勤写代码;仅凭学校发的几本教材同样不够,还得自己课外寻找其它资料不断补充。

所以学习安卓时,我另买了一本《疯狂安卓讲义》,平时逛逛CSDN之类的计算机论坛,每天固定2小时用于计算机编程,顺带坚持在简书写了10篇小文专门记录安卓学习历程。

4周完成了一款当初认为不可能做到的应用程序。我觉得凡事只要肯下功夫,一定会有属于你那份应得的回报。

最后,如有何问题欢迎留言,笔者会力所能及提供帮助。


愿我们都能学精自己的专业技能,用它创造无尽的智慧和财富

作者:叶琛

一只痴迷于旅行的大三编程狗