康昕宇 耿恒山 翟丹娜 富 坤
(河北工業(yè)大學計算機科學與軟件學院 天津 300401)
?
基于Android的物流與財務管理系統(tǒng)的設計與實現(xiàn)
康昕宇耿恒山翟丹娜富坤
(河北工業(yè)大學計算機科學與軟件學院天津 300401)
針對大多數(shù)企業(yè)的物流與財務信息的管理系統(tǒng)一般運行在電腦客戶端上,不便于銷售人員與財務人員實時進行數(shù)據(jù)整理與分析的情況,提出在手機等移動終端上開發(fā)一個基于Android平臺的物流與財務管理系統(tǒng)。依據(jù)實際需求,將該系統(tǒng)分為客戶端與服務器端,然后分析相關(guān)算法和設計,如成本計算方法、損益結(jié)轉(zhuǎn)和數(shù)據(jù)預取設計。實驗結(jié)果表明,該系統(tǒng)可以滿足銷售及財務人員隨時查看、分析并處理相關(guān)信息的需求。
Android物流管理財務系統(tǒng)成本計算損益結(jié)轉(zhuǎn)
傳統(tǒng)的物流以及財務信息管理系統(tǒng)是運行在每個人的電腦上的,那么銷售人員和財務人員就需要在電腦上完成所有的工作。但現(xiàn)實工作中,銷售人員可能會在庫房、車間等場地現(xiàn)場作業(yè),核實貨物信息;財務人員同樣也可能會在會議等非電算化環(huán)境下獲取財務信息,此時他們的需求便無法滿足。手機等移動產(chǎn)品的迅速發(fā)展為這一需求的實現(xiàn)創(chuàng)造了空間,再依靠無線網(wǎng)絡等通信技術(shù),現(xiàn)有的智能手機等移動設備完全滿足對于物流、財務等信息的相關(guān)操作。在此背景下,本文設計并開發(fā)一個基于手機等移動平臺[1]的物流及財務信息管理系統(tǒng)[2],主要功能包括基礎(chǔ)資料維護,物流信息查詢與修改,財務信息查詢與修改和系統(tǒng)管理。
當前的移動平臺市場,Android、IOS和Windows Phone并稱三大移動端操作系統(tǒng)。而在這三者中,Android又占據(jù)了絕大多數(shù)的市場份額。從2013年9月到2014年7月,在將近一年的時間里Android市場占有率穩(wěn)步提升,從最初的29.42%飆升至44.62%,而IOS則從53.68%降至44.19%,Android實現(xiàn)了首次超越。針對于此,越來越多的供應商選擇支持Android平臺;同時,消費者手中的智能手機搭載Android系統(tǒng)的不在少數(shù)。所以本文選擇實現(xiàn)的是一款基于Android平臺的物流與財務管理系統(tǒng)。
Android是Google公司推出的基于Linux平臺的移動設備操作系統(tǒng)。它主要由以下幾個部分組成:操作系統(tǒng)、中間件、用戶界面和應用。由于源代碼開放,Android系統(tǒng)可被移植到不同的硬件平臺上。Android系統(tǒng)采用分層架構(gòu)[3],分為四層,從下至上依次是:(1)Linux內(nèi)核層,包含操作系統(tǒng)及驅(qū)動,主要用C語言開發(fā)。(2)系統(tǒng)運行庫,包含本地框架、函數(shù)庫及Java運行環(huán)境,主要用C語言和C++開發(fā)。(3)Java框架層,包含諸多組件,如ActivityManager等,用Java語言開發(fā)。(4)Java應用層,包含用戶實際使用的短信,打電話,上網(wǎng)等功能,用Java語言編寫。圖1為Android系統(tǒng)的架構(gòu)。

圖1 Android系統(tǒng)架構(gòu)
參考現(xiàn)有的物流管理系統(tǒng),財務軟件和用戶的實際需求,系統(tǒng)會實現(xiàn)基礎(chǔ)資料維護,物流信息查詢與修改,財務信息查詢與修改,系統(tǒng)管理等功能。基礎(chǔ)資料包括客戶信息、廠商信息、員工資料、貨品資料、期初開賬信息;物流信息包括采購訂單、采購明細表、采購入庫單、采購入庫明細表、銷售訂單、銷售訂單明細表、銷售出庫單、銷售出庫明細表、庫存調(diào)撥單、貨品分倉存量、產(chǎn)銷存明細表、成本計算;財務信息包括查詢憑證、損益結(jié)轉(zhuǎn)、總賬明細賬查詢、報表查詢;系統(tǒng)管理包括系統(tǒng)內(nèi)部消息、預警設置。以上的這些信息功能僅僅是在移動客戶端上實現(xiàn),簡化了諸多操作。客戶端需要訪問服務器以獲取這些信息,移動客戶端的加入使客戶端的數(shù)量增長,此時則可以使用負載均衡技術(shù)將訪問分流至其他的服務器。在服務器端則使用Spring+Struts+Hibernate框架來實現(xiàn),服務器與客戶端之間的通信則依靠傳統(tǒng)的http協(xié)議。系統(tǒng)的總體框架如圖2所示。

圖2 系統(tǒng)總體框架
客戶端的框架如圖3所示。客戶端系統(tǒng)在Android平臺上運行,并在Android4.2.1真機環(huán)境下測試。根據(jù)客戶端需要實現(xiàn)的功能,可以把客戶端劃分為信息交互模塊與數(shù)據(jù)計算模塊。其中,信息交互模塊包含了基礎(chǔ)資料、物流信息、財務信息和系統(tǒng)信息的獲取與修改;數(shù)據(jù)計算模塊則包含成本計算,損益結(jié)轉(zhuǎn)等功能。

圖3 客戶端框架
3.1客戶端界面
物流與財務管理系統(tǒng)涉及到的信息相當多,所以需要系統(tǒng)用最直接且明顯的方式顯示系統(tǒng)信息,并且操作要盡量簡單,以便于銷售與財務人員進行操作。客戶端的主界面[4]如圖4所示。當選中某一按鈕時,系統(tǒng)使用setOnClickListener方法進行監(jiān)聽,并利用intent的startActivity方法創(chuàng)建新的Activity進行界面切換。在res的布局文件layout中,新建main.xml主界面布局文件,可以為系統(tǒng)界面選擇流線型布局LinearLayout并按照界面框架按順序添加相應的控件,如Button,TextView等;然后在配置文件values中添加樣式文件style.xml進行樣式編輯,如字體與背景顏色等;最后在AndroidManifest.xml文件中可以配置activity的屬性,包括name,label,intent-filter等。

圖4 客戶端主界面
3.2信息交互
在服務器端實例化一個TcpClient對象,可以通過ServerListener.AcceptTcpClient()方法獲取。然后從TcpListener對象中提取NetworkStream對象,目的是建立Socket數(shù)據(jù)流。再建立BinaryReader對象為剛剛創(chuàng)建的NetworkStream提供一個接口,借助于這個接口可以非常方便的讀取信息,讀取Stream中的byte array信息然后再轉(zhuǎn)化成String字符串。在客戶端同樣需要建立Socket對象,但IP地址和端口號需要從配置文件中獲取。再依據(jù)Socket創(chuàng)建OutPutStream對象,再建立DateOutPutStream接口,可以通過接口向外寫數(shù)據(jù)。最后,需要在AndroidManifest.xml文件中添加相應的權(quán)限
因為客戶端不止一個,如果同時訪問服務器則會造成無法訪問。所以需要引入多線程。在服務器端定義一個接受消息的類GetMessage并實現(xiàn)接口Runnable,再將內(nèi)部需要重寫的方法完成。實例化一個Thread對象并以GetMessage為參數(shù),之后調(diào)用Thread對象的start()方法即可;同樣在客戶端定義接收消息和發(fā)送消息的類并實現(xiàn)接口。因為客戶端需要隨時接收消息,所以將接收消息部分的實例化Thread對象過程放在while循環(huán)中進行。
在設計程序時,并未把OutPutStream流包裝成PrintStream,然后使用PrintStream直接輸出信息。這是因為系統(tǒng)的服務器端程序運行在Windows主機上,當直接使用PrintStream輸出字符串時默認使用系統(tǒng)平臺的字符串,即GBK進行編碼;但程序的客戶端時Android應用,依賴于Linux內(nèi)核,因此當客戶端讀取網(wǎng)絡數(shù)據(jù)時默認使用UTF-8字符集進行解碼,這樣勢必引起亂碼。為了保證客戶端能正常解碼得到數(shù)據(jù),此處手動控制字符串的解碼,強行制定使用UTF-8字符串集進行編碼,這樣就可以避免亂碼問題了。
3.3成本計算
成本計算又稱成本核算,是指將企業(yè)在生產(chǎn)過程中發(fā)生的各項耗費按照一定的對象進行分配和歸集,以計算總成本和單位成本。成本計算通常以會計核算為基礎(chǔ),以貨幣為計算單位。成本計算是成本管理的重要組成部分,對于企業(yè)的成本預測和企業(yè)的經(jīng)營決策等存在直接影響。

圖5 成本計算界面
常見的成本計算方法[5,6]有移動加權(quán)法、月加權(quán)平均法和年加權(quán)平均法。移動加權(quán)法的含義是每次收到存貨以后,以各批收入數(shù)量和各批收入前得結(jié)存數(shù)量為權(quán)數(shù),從而計算新的加權(quán)平均單位成本的方法;月加權(quán)平均法與年加權(quán)平均法則分別指以月和年為時間單位,在期末計算存貨的平均單位成本時,用期初存貨數(shù)量和本期各批收入的數(shù)量作為權(quán)數(shù)來確定存貨的平均單位成本,從而計算出期末存貨和已銷存貨成本的計算方法。移動加權(quán)法適用于價格變化大或要求精確核算的成本核算,核算比較費時,應用在系統(tǒng)中可以使用改進的加權(quán)遞推平均濾波算法計算;期末加權(quán)平均法則適用于價格變化不大或要求不是特別精確的成本核算,過程比較簡單且節(jié)省時間,在系統(tǒng)中使用普通加權(quán)平均濾波算法即可完成計算。在比較幾種方法異同的同時,考慮到工作人員在移動平臺上的應用絕大多數(shù)是為了貨品的進銷存而不是精確核算,并且基于移動平臺上運算能力的限制等因素,可以采用月加權(quán)平均法來完成成本核算。成本計算界面如圖5所示。
在完成成本計算步驟之后,期初結(jié)存、采購入庫、本期耗用和期末結(jié)存部分的數(shù)據(jù)將會統(tǒng)一,以便于工作人員隨時查看與分析。
3.4損益結(jié)轉(zhuǎn)
損益結(jié)轉(zhuǎn)[7]是指期末時,將各損益類科目的余額轉(zhuǎn)入本年利潤科目,并生成一張損益結(jié)轉(zhuǎn)記賬憑證。它可以反映集團企業(yè)在一個會計期間內(nèi)實現(xiàn)的利潤或虧損總額。
考慮到這個業(yè)務的計算量較大,在Android平臺上生成數(shù)據(jù)較為困難,因此將該結(jié)轉(zhuǎn)業(yè)務放在服務器端實現(xiàn)。其流程如圖6所示,在客戶端可以查詢并統(tǒng)計相關(guān)的憑證,在財務人員核對過后,將結(jié)轉(zhuǎn)信息發(fā)送到服務器端,服務器端根據(jù)具體信息從數(shù)據(jù)庫中讀取相應的數(shù)據(jù)并進行試算,然后將結(jié)果反饋到客戶端。這一過程并不會產(chǎn)生真正的結(jié)轉(zhuǎn)損益記賬憑證,因為財務人員可能會隨時對賬目進行核算,但損益結(jié)轉(zhuǎn)后將不能進行期間憑證的修改,所以將真正的結(jié)轉(zhuǎn)功能放置在服務器或電腦客戶端進行,防止出現(xiàn)審計錯誤。

圖6 損益結(jié)轉(zhuǎn)流程圖
在審核期間損益結(jié)轉(zhuǎn)步驟中,可以讓財務主管或有權(quán)限的工作人員在電腦客戶端上進行審核并進行后續(xù)步驟操作,生成的數(shù)據(jù)提交系統(tǒng)服務器處理。
3.5數(shù)據(jù)預取
當用戶在移動端獲取信息時,信息量可能會相當龐大,例如本月的銷售訂單統(tǒng)計明細所包含的內(nèi)容可能就有成百上千條,但是這些信息不可能由系統(tǒng)一次性提供。為了減少用戶查詢信息時系統(tǒng)響應時間,可以采用數(shù)據(jù)預取技術(shù)[8],即在當前用戶查詢信息的同時,將下一頁的信息進行預取,以節(jié)省系統(tǒng)響應時間。數(shù)據(jù)預取的鏈表模型如圖7所示。使用兩個緩沖區(qū),一個為當前頁面的數(shù)據(jù),另一個為預取頁面的數(shù)據(jù)。之前已顯示的頁面依靠系統(tǒng)的緩存來實現(xiàn),這樣相比于設置三個緩沖區(qū)即當前頁、預取頁和已讀頁,更節(jié)省系統(tǒng)資源,可以減小數(shù)據(jù)預取的成本。

圖7數(shù)據(jù)預取鏈表
系統(tǒng)使用Spring+Struts+Hibernate框架來實現(xiàn)服務器端。Spring[9]是一個分層的輕量級開源框架,其核心是控制反轉(zhuǎn)和面向切面,便于編程與代碼管理;Struts[10]是基于MVC的框架,提升了開發(fā)效率并便于后期維護;Hibernate[11]是一個對象關(guān)系映射框架,對于完成數(shù)據(jù)持久化起到關(guān)鍵作用。使用三者的整合框架,更加便于實現(xiàn)網(wǎng)絡與系統(tǒng)管理。
若系統(tǒng)僅在小范圍內(nèi)使用,不存在訪問延遲,系統(tǒng)響應慢等情況;若將系統(tǒng)部署在較大的范圍內(nèi),有大量的客戶端訪問服務器時,可能會造成上述情況的發(fā)生,此時可以考慮采用負載均衡[12]。系統(tǒng)所包含的模塊主要有物流和財務兩大部分且之間關(guān)聯(lián)性較弱,可以考慮部署在不同的服務器上。

圖8 客戶端登陸界面
本文設計的系統(tǒng)其客戶端在Android4.2.1 HM2013022和華為Y516-T00設備上實現(xiàn);服務器端則采用Spring2.5、Struts2.1和Hibernate4.2的整合框架構(gòu)建,運行在Windows7操作系統(tǒng)下;整個開發(fā)過程在Eclipse4.3(kepler)和AndroidSDK上實現(xiàn)。數(shù)據(jù)庫使用SQLServer2008。將數(shù)據(jù)庫安裝并配置好之后,再將服務器端運行在Tomcat v7.0上并實現(xiàn)相應程序,此時就可以使用手機客戶端登錄系統(tǒng)了。客戶端的登錄界面如圖8所示。用戶登錄之后就可以正常使用各項功能了。
需要注意的是,現(xiàn)在還有很多的企業(yè)使用WindowsXP系統(tǒng),在這一操作系統(tǒng)下最好使用SQLServer2005,其他版本兼容性較差;同時,在使用本系統(tǒng)時可能會將服務器連接在局域網(wǎng)內(nèi),隨著服務器IP地址的變化,此時用戶需注意在登錄客戶端時手動輸入目標的IP地址,以免連接不到服務器。
本文設計和實現(xiàn)了一種基于Android的物流與財務管理系統(tǒng),并對該系統(tǒng)的功能進行了分析。系統(tǒng)將一般企業(yè)內(nèi)的物流和財務等主流業(yè)務進行整合,并實現(xiàn)在移動端實時管理數(shù)據(jù),具有方便、便攜和靈活等優(yōu)點,為銷售和財務人員的工作帶來便利,同時對于企業(yè)資源管理與優(yōu)化起到十分關(guān)鍵的作用。
與此同時系統(tǒng)還需要進一步的完善。例如,在系統(tǒng)中添加員工簽到和企業(yè)內(nèi)部郵箱等功能,以提升用戶體驗;同時,添加角色權(quán)限,以保證企業(yè)信息的安全性。
[1] 郭建儐,蔡雪松.基于Android平臺的公交信息發(fā)布終端軟件的設計與實現(xiàn)[J].計算機應用與軟件,2014,31(9):322-324,333.
[2] 李佳,陳亞軍,何先波.財務管理系統(tǒng)設計與實現(xiàn)[J].軟件導刊,2015,14(1):111-112.
[3] 黃彬華.Android系統(tǒng)架構(gòu)[EB/OL].2013.http://book.51cto.com/art/201311/415363.htm.
[4] Meier R.Android4高級編程[M].北京.清華大學出版社,2013.
[5] 李紅娟.企業(yè)成本核算中的配比原則[J].會計之友,2015,2(1):55-57.
[6] IT技術(shù)論壇.成本計算方法[EB/OL].2014.http://www.itpub.net/thread-810008-1-1.html.
[7] 中國會計社區(qū).月末結(jié)轉(zhuǎn)流程[EB/OL].2013.http://bbs.canet.com.cn/thread-536060-1-1.html.
[8] 高萌,王霓虹,李丹,等.一種基于模版的數(shù)據(jù)預取和緩存算法[J].計算機應用研究,2014,31(11):3240-3246.
[9] Craig Walls.Spring in Action[M].北京.人民郵電出版社,2008.
[10] Brawn,Davis.Struts2[M].北京.人民郵電出版社,2010.
[11] James Elliott.精通Hibernate[M].北京.機械工業(yè)出版社,2009.
[12] 李燕歌,張志斌,王娜.基于負載均衡的MapReduce后備任務上限自適應算法[J].計算機應用研究,2015,32(1):67-70.
DESIGN AND IMPLEMENTATION OF LOGISTICS AND FINANCIAL MANAGEMENT SYSTEM BASED ON ANDROID
Kang XinyuGeng HengshanZhai DannaFu Kun
(CollegeofComputerScienceandSoftware,HebeiUniversityofTechnology,Tianjin300401,China)
For such the case that the logistics and financial information management system of most enterprises usually runs on the client computer, it is not convenient for sales and financial personnel to make data collection and analysis timely, we propose to develop an Android platform-based logistics and financial management system on mobile terminals such as mobile phones. According to practical demand, the system is divided into client and server, and then we analyse the relevant algorithms and designs, such as costing method and profit and loss carrying over and data prefetch designs. Experimental results show that the system can meet the sales and financial personnel to check, analyse and deal with the demands of related information at any time.
AndroidLogistics managementFinancial systemCostingProfit and loss carrying over
2015-03-15。國家自然科學基金項目(31100711)。康昕宇,碩士,主研領(lǐng)域:嵌入式系統(tǒng),手機應用開發(fā)與算法。耿恒山,教授。翟丹娜,碩士。富坤,博士。
TP311
A
10.3969/j.issn.1000-386x.2016.08.070