美文网首页安卓软件技术it技术
4周开发一款应用程序,是怎样的体验

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

作者: 叶琛_ | 来源:发表于2016-12-19 17:22 被阅读5040次

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

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


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

    作者:叶琛

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

    相关文章

      网友评论

      • 51b863c0c5ef:小程序猿受教🙌🏻话说回来,我还是比较想做程序猿鼓励师:joy:
        叶琛_:@_unknown 我想出去玩🙈🙈
        51b863c0c5ef:@叶琛_ 是在程序猿旁边说:joy:哥哥你要加油哦
        叶琛_:@_unknown 是管理程序员的中层对吗🌝 让他们写自己监督~
      • Jarly_Sun:建议工具用as,现在已经是主流了;还有建议看一些主流框架,这对以后实习或工作比较有帮助
        叶琛_:好的,已get
      • 明明可以不写代码:学习总结的过程很不错,用了很多基础的控件,布局这些东西还可以深入玩一玩,就学生来说,我觉得真的已经很棒了,我大三的时候 还在重修C语言呢。继续坚持的话,作者日后必成大牛
        叶琛_:@CodingMing 哈哈谢谢你的鼓励,还得继续深入学习下去:relieved:
      • 仙剑冲锋:值得鼓励,加油 :+1:
        叶琛_:@仙剑冲锋 谢谢你!
      • e1e8431a7779:对初学者来说已经很不错了 慢慢积累经验吧
        叶琛_:@起飞的洋 好的谢谢鼓励
      • d2cc0506a6aa:复杂
        叶琛_:@jajatgp 术业有专攻~
      • N丶aMe丨宇宇:所有数据都是在本地数据库的吗?
        叶琛_:@N丶aMe丨宇宇 嗯暂存在本地数据库Mysql的表里~
      • 浅笑_JIE:我已两年多的经验说 确实三天可以 但是对于新手 四周算正常范围内 做开发的经常需要评估时间 根据楼主的UI和功能上看 三天基本可以完成 我试过两周做完一个项目 搭建框架 UI 逻辑 网络 交互 这个项目还是android平台两个端的
        浅笑_JIE:@叶琛_ 搭建框架 UI 逻辑 网络 交互 多做几次项目 累计到一套应用开发的框架 很多东西都变得很简单了
        叶琛_:@浅笑_JIE 好厉害...三天是后台连接 读取数据也算上吗?
      • 186a39a63b30:确定不是推销:kissing_heart:
        叶琛_:不是阿:smile:只是个人课程设计
      • 安浪创想:就是界面太丑了
      • 263ef79dfff9:加油😝
      • 枫灬叶:作为一名Android程序员你这写的很不错,哈哈,加油,试一下Androidstudio吧
        叶琛_:好的噢:smile:
      • 懵_初心:就是喜欢码农男神
        懵_初心: @叶琛_ 最近在自学编码,就是为了找一个哈哈男朋友😅
        叶琛_:@_蓝森_ 就是喜欢你的眼光:wink:
      • 烫嘴豆腐:给予初学者鼓励一下 继续努力 很棒
        叶琛_:@烫嘴豆腐 谢谢你,我感受到了力量~
      • b94a759841a1:虽然做的很low,不过精神可嘉,骚年努力吧。随便说一下第一行代码已经出第二版了,添加了不少新知识。其它的你自己去发现吧
        叶琛_:@㫖颰 嗯已经看到出第二版的消息了,我会继续追随大神的脚步:grin:
      • 锐萌萌OVO:有空可以自己去学习一下 Material Design =。=
        叶琛_:好的先记下了:blush:
      • 200ba7b7e6ac:加油
        叶琛_:@貍桃仔 加油💪
      • Sparky:思路很好,可以少走很多弯路
        叶琛_:@Sparky 编写前明确思路的确能事半功倍 从根上起对,后面就不容易错了~
      • 花前月下:我们组最快一周开发一款。
        花前月下:@叶琛_ 哈哈。那是
        叶琛_:挺快的,一个人奋斗终敌不过团队合作- -
      • 小新拉噗噗:....厉害
        叶琛_:@小新拉噗噗 精辟....
      • 75962d2e3541:x==1与1==x 受教了
        叶琛_:@万胜磊 对的
        WanJerry: @bamtercelboo 这是c/c++上的问题,android/java上面没有这种问题
        叶琛_:嘻嘻这是有次上课老师无意说的,就记下了:grin:
      • 8e661520c07e:谢谢,支持下
        叶琛_:@风中飘零2016 谢谢你的支持~
      • Zzzzzzzzzzzzzz:很不错!
        叶琛_:谢谢你!
      • 沈敏杰:给点小建议:
        1.预留多点时间去搭框架,很重要
        2.初学者多使用官方的空间,学习读官方文档,如recyclerview这些都是很常用的。
        3.多学习业界做项目使用的框架
        4.不要为了完成而完成,要学会总结,代码本身是不值钱的

        在大学里,能做到如此,抛开大学的种种诱惑,能静下心去做一件事,实属不易。
        共勉!
        叶琛_:@沈敏杰 共勉!很受用,谢前辈能花时间点拨:blush:
      • 西山嬛:作者是学程序的吗?这和编程有区别吗?完全不懂......表示还没上大学,以后蛮想当医生的。
        叶琛_:@WeiranLyu 不过学成一定很厉害,让爸妈心服口服;真喜欢就要坚持自己的选择,支持你:kissing_heart:
        西山嬛:@叶琛_ 男生学这个挺好的,我爸妈超想让我学计算机专业。但是我自己挺想当医生的,可是在美国这边学医还要考医学院,好多人都是因为上完本科后没考上医学院又换了别的专业。而且上医学院还得上四五年。:worried:到时候我都成老女人了.......
        叶琛_:计算机专业,学习编程同时也要写代码、算法、掌握英语...简单的说就是让计算机按程序员的意图完成相应的功能拉~ 医生是个很好的职业,能有理想很棒:kissing_heart:
      • 顾明伟:这demo四周?一周吧~
      • a71eabd37218:程序崩了,在编译器里能显示的bug根本就不叫bug。最头疼的是各种适配和ANR卡顿问题。
        叶琛_:@七仙 环境配置如果出错就复杂了...看来我还算幸运没出现这种error..
      • info_gu:你确定if(x=1)不会报错?
        info_gu:@叶琛_ 我很羡慕你们大学计算机专业的学生,我是土木工程毕业的,然后培训机构出来做的计算机,感觉android的路很长,学习的东西比较多!你可以看看慕课网的android教学,还有java的设计模式也比较重要!我写代码就用eclips还有as!
        叶琛_:@info_gu 抱歉我说错了!刚上机实验发现 eclipse里这么写会报错,如你所说if里要为boolean类型,x=1返回int~但是visualc++6.0不报错也没有warning
        info_gu:@叶琛_ 你试过了吗?在我的印象里,=号是赋值运算符,if里面不是应该放布尔类型吗?我感觉一定会报错,如果写if(x=1),你可以试一试
      • 8b695f82fa3e:不得不说。。这个ui真的简陋 4周,一个月的时间 ,是有时间好好做设计再编码的 移动平台规范也很重要 不过作为课程设计已经很不错啦
        叶琛_:路漫漫其修远 呐,谢谢你的分析指点:smile:
      • summer丶忘记:我也想这么专心的做这样的一件事
        叶琛_:你也可以的!!
      • 杨安大:我就感觉测试的代价有点大^_^
        叶琛_:@杨安大 哈哈你可以先在后台数据库 把余额设为100000+再测试,就不心疼了~
        杨安大:@叶琛_ 测试一下支付功能就要订个几千块的机票。。
        叶琛_:@杨安大 此话怎讲~
      • 星期五_夜晚:好厉害,我什么时候也可以做出一个APP啊😓
        叶琛_:@憾生道 fighting!
        星期五_夜晚: @叶琛_ 大一,坚持!!
        叶琛_:@憾生道 你大几了?坚持下去 肯定可以的阿
      • 竹子成长记:每天编程两小时,厉害了 :+1: :+1: :+1:
        叶琛_:@我为快乐狂 咬咬牙,跺跺脚 坚持一段时间 后面会简单些:grin:
      • fe64e8642b8f:能否问个比较私人的问题,楼主每天几点睡觉,几点起床:no_mouth:
        叶琛_:@megachweng 平时都11点半睡 一般早上7点-7点半起 我不喜欢熬夜:joy:
      • 6228a1dd2c3e:用的C++?
        叶琛_:@慕雪三日天扬 是java:grin:
      • 朋朋cn:好厉害
        叶琛_:@朋朋cn 其实也还好:smile:
      • 最怕认真:可以的,给你推荐一个免费的后台,做做毕业论文,写写小应用嘚瑟下还是很不错的,bmob
        叶琛_:好的 这个是开发云存储的软件吧:smile:我再去研究研究~
      • Sylars:我做个APP,没接触过的话,如果实现所有UI的,50个页面至少需要三周。 对同行来说,这个速度很快了,掌握开发模式,快速搭建,从上手到完成,三个月完成一个APP 的话(数据已经由后台开发完了)速度也是很快的。 :smile:
        叶琛_:@Sylars 原来这样阿 涨知识了 看来我还得多敲代码:smile:
      • 小鲁靠谱:是在已经掌握了java的基础上 4周吧? :smile:
        叶琛_:@小鲁靠谱 嗯嗯 这个忘说了 上学期已经学习过java web~
      • b22523051261:大三程序狗给个赞,不过还是得说一句赶紧上AS吧 真的好用效率又高
        b22523051261:@叶琛_ 对啊跟着Google走
        叶琛_:好的~这么多人推荐 真有点迫不及待试试AS了:smile:
      • 小轴和他的plan_B:在if里边写x=1编译器不报错?
        叶琛_:@小轴和他的plan_B 刚刚上机测试了一下,确实eclipse中程序报错,如你所说if里要求为boolean类型;但是visualc++6.0并不保存 这跟语言 编译器警告级别应该有关系吧:smile:
        小轴和他的plan_B:@叶琛_x=1返回integer 。if()接受的入参是boolean吧
        cjw1115: @小轴和他的plan_B 看啥语言了
      • 05df7326525b:大二程序员表示很厉害,厉害的是这种拼命的样子,以此共勉,加油。
        叶琛_:哈哈,程序员和代码是一组容易疯狂的组合,一起加油~:smile:
      • 4aba9a511bb8:能定下心来写很好,不知道你是真心喜欢编程还是现在觉得有趣。 我初期跟你现在状态差不多,好奇有兴趣还能写出小项目,时间长了失去了兴趣,好好写能写出来,但现在很少写了。给自己找了个理由,上班了再好好写
        叶琛_:也好,其实写的过程还是有很多累的时候尤其是程序崩溃一下又没找到错在哪。还是要工作(学习)娱乐相结合吧,程序员更应该多适当休息:smile:
      • 江城北望:推荐你使用github.com
        叶琛_:@jiangzehui 好的以前不知道它:joy: 我去自学~
      • 无颜Flower:厉害了我滴弟 :joy:
        叶琛_:谢谢我姐:kissing_heart:
      • uncochen:曾经和另一个同事4天做了一个电商APP 商家版,公司赶活动没办法。这里给你几个建议,IDE 转为AS(很重要);尝试自己封装一些东西并分享到开源社区;能用笔记记的尽量不用脑袋记;你需要一个机械键盘:grin:
        叶琛_:@uncochen 都记下了 挺实用 谢谢哈:kissing_heart:
      • _Stan丶:换了AS就不愿意用eclipse了 :smiley:
        大学能静下心来自己写一个小项目已经很厉害了 :+1:
        叶琛_:哈哈谢谢您的鼓励:smile:
      • SaiWu:这个三天就能成。
        391c7ed5c5e5:@SaiWu 三天 你写个鬼,你从前期设计逻辑,还要调试,虽然人家界面写的比较丑,但是 你三天的话就大概写一个大概流程出来而已
        花前月下的细说:@SaiWu 人家是初学。刚学习,先不说代码写的怎样,这种学习的态度,和居然能够从这么短的时间学完,并写出,最重要的是,整个过程的逻辑性和计划性(做事,不是说代码),总结的几个点,工作了的又有几个能有这种态度,和严谨性。笔者,日后必成大牛。
        叶琛_:@SaiWu 初学者,没您厉害~
      • dfe147f4a102:加油
        叶琛_:@_v君 :smile:thx
      • GusGus:老程序狗给你点赞
        叶琛_:@GusGus 谢谢师傅:wink:
      • d4edae123ffc:我也是学编程的,不过还是初学者
        叶琛_:@名可铭 都是一步步从基础学上来的:grin: 基础很重要哦 努力学好~
        d4edae123ffc: @叶琛_ 好羡慕你们已经可以自己做了,我们还在学字符串。。。
        叶琛_:嗯嗯继续加油~
      • eric_lai:为什么不用AS……eclipse已经out很久了……
        叶琛_:@eric_lai 学校上来就用这个IDE 包括学习java也是,寒假准备自己尝试使用AS:grin:
      • justZero:为热爱和恒心点赞~
        叶琛_:@justZERO 为你点赞:wink:
      • 运子先生:好羡慕技术,我是学编导的
        叶琛_:@运子先生 原来如此
        运子先生:@叶琛_ 不怎么有联系,只是学这个专业,又不是已经上班了
        叶琛_:@运子先生 其实我很羡慕广播电视行业,能在电视台工作:relieved:编导是不是也和计算机紧密相关?
      • f86a35357591:好厉害!!!
        我现在 大学学了几个语言 但不知道 怎么开始能做实用的程序 能指点一下吗
        叶琛_:@LD_大东 这就是 实践出真知 吧~
        知识酷教育大东:@奋男 找小项目去做 只有项目最锻炼人
        叶琛_:@奋男 可以先从基础简单的例子开始,慢慢加大层次 代码量~例如按照专业书上的习题编程练习,然后可以多逛逛大牛的blog、坚持敲代码:blush:
      • 任雨前行:学计算机的路过,深感佩服!
        叶琛_:@用户5735491410 :wink::wink::wink:
      • 程序员联盟:厉害厉害, 不错
        叶琛_:@程序员在法国 :blush:好开森 谢谢
      • dcb6dfaa4863:支付功能都实现了吗
        dcb6dfaa4863: @叶琛_ 但是已经很不错啦 建议用AS开发😬
        dcb6dfaa4863:@已来的主人翁翁 哦哦 所以很多都是静态的数据自己存在服务器吧
        叶琛_:@已来的主人翁翁 还没有 :joy:那个是为以后关联支付宝 银行卡做准备的,暂时只能从余额扣~
      • Yaragroovy:不错:+1:,加油。
        叶琛_:@Yaragroovy 谢谢拉 么么
      • 4f57ac099c41:建议使用android studio 开发。
        叶琛_:@看花容易画花难 好的 寒假去学习学习:grin:
      • 想养一只叫狗子的英短渐银:只用了四个星期??!!
        叶琛_:@我叫胡__然后呢 嘿嘿:wink:
        叶琛_:对啊,每天都在写写写
      • _麦多:赞👍
        叶琛_:@_麦多 厉害~其实计算机这专业光上课也不够 更多还是要靠自学 fighting!
        _麦多: @叶琛_ 一起加油,虽然我不是计算机专业的,但是也努力往这方面转呢,都是在自学😔
        叶琛_:@_麦多 谢谢你:wink:

      本文标题:4周开发一款应用程序,是怎样的体验

      本文链接:https://www.haomeiwen.com/subject/cxwomttx.html