其实算不上真正意义上的第一个安卓应用。前几个月朋友过生日,不能送去礼物,正好当时开始学习安卓,就编了一个小的应用发给同学当生日祝福了。
话扯远了。开始讨论我做的应用。先说说出发点。之前一个开代加工公司(有点像富士康)的同学曾要我帮忙编了一个Excel下的程序,用于统计进入仓库的原材料数量、每天完成的成品数量、输出的成品数量,通过原材料和成品之间的关系,计算出仓库里成品和原材料的数量,以便及时监控进度、调整工人的任务、向客户索要新的材料。当时Excel在我的电脑上调试没有任何问题,可在他公司每用几天就会出状况,每次都要帮他修正,弄得最后无奈地把这个程序搁浅。
两个月断断续续地学习了安卓开发,讽刺的是我用的是wp8。在看完数据库处理的部分后,觉得可以把之前的那个程序编成安卓版本。现在有很多手持机公司在开始生产安卓版本的手持机。即使不用手持机,随便掏个便宜的安卓手机或者平板也可以使用这样的应用轻松完成仓库的统计。于是决定着手先把程序编出来,以后可以根据需求跟二维码,RFID拼接。
程序的构思是这样,自定义各种成品,每个成品下有对应的原材料。定义成品时也要定义成品和它的每个原材料之间的关系。例如完成某产品需要原料A两个,原料B三个... ...。定义完成后,在仓库状态初始化之前,允许更改说删除成品定义(包括名称,数量关系)。
确定无误以后就可以对新定义的产品做一个仓库状态初始化。然后就可以开始添加新输入仓库的原材料数量,新完成的成品数量,新的从仓库输出的成品数量。每次添加完成,都会自动对仓库状态进行自动更新。“添加”的历史记录可以随时删除或更改,但仓库状态是不允许手动修改的,因为仓库状态是自动计算的结果。
另外,考虑到有的时候会产生废品,废品也会消耗掉原材料; 或者输入仓库的原材料数量有误。但平时不会有人去统计这个,这就导致隔一段时间程序里计算出的仓库状态和实际情况不符。这时候就需要对仓库进行检查。所以对仓库状态重置的功能也是必须的。那么仓库状态就是依托初始化和重置按优先级进行计算的结果。在这样的计算思路下,需要一个时间上连续的仓库历史,程序必须每天第一次打开时自动把状态更新到当天,或者在后台自动运行。
程序在一段时间的使用后,需要删除一些历史记录。为了保证仓库状态的连续性,只允许一成品的定义为单位清除从起始时间到一个指定时间范围内的数据,包括仓库状态、进入仓库的原材料历史记录、成品完成的历史记录、成品输出的历史记录、仓库状态重置的历史记录。删除完成后要重新自动定义仓库的初始化。
之前的Excel程序搁浅大概就是因为同学的不当操作造成的,当然也不排除有我没照顾的地方,导致错误的操作也被允许输入。对于一些用户来说,可能需要把安卓设备上统计的数据备份到电脑里。于是决定再添加一个功能,根据客户自己的输入生成Excel文件。这样就可以在电脑上直接打开,然后做进一步的操作。
所有思路清楚以后,就开始了我苦逼的编程过程。因为这个应用涉及到了数据库的管理,所以要保证操作的正确。结果导致就像爆炸一样的出现了很多需要考虑的细节。例如成品的定义或修改时,要求至少要有一种原材料,原材料的关系不能为零等等。仓库状态的算法也实在让人头大。历时近一个月终于完成了。
学习安卓时,没有好好开UI的设计,所以界面做的很简单。同学是德国人(偶目前还在德国读书),所以界面都是用德语写的,先放上来,过几天有时间修改个中文的界面在传新的图片。