欧美激情视频一区二区三区免费,爱情岛论坛首页永久入口,性高朝久久久久久久3小时,97在线观看永久免费视频

行業(yè)動(dòng)態(tài)

當前位置:首頁(yè)>>新聞中心>>行業(yè)動(dòng)態(tài) 發(fā)布時(shí)間:2017-06-22 06:56:52

基于A(yíng)ndroid平臺的收銀秤系統的設計與實(shí)現

時(shí)間:2017-06-22 06:56:52 來(lái)源:本站 點(diǎn)擊數:612

針對傳統收銀秤系統功能簡(jiǎn)單、操作復雜的問(wèn)題,研究了在Android開(kāi)發(fā)平臺下收銀秤系統的設計與 實(shí)現。該系統利用Android集成的小型嵌入式數據庫SQLite的開(kāi)發(fā)接口、基于Java語(yǔ)言開(kāi)發(fā)完成,實(shí)現了收銀 秤系統的稱(chēng)重、計價(jià)和收銀等功能,內置了相應的商品資料庫,也允許用戶(hù)導入需要的商品,導出相應的統計數 ,并且已經(jīng)在設備模擬器上測試通過(guò)。

0.引言

目前,集稱(chēng)重、打印與收銀機管理功能于一體的收銀秤已廣泛應用于商業(yè)流通領(lǐng)域、百貨超市、 便利店、酒店、餐飲、快餐連鎖等多個(gè)領(lǐng)域。

這些品牌的收銀秤大都以單片機作為主控CPU, 沒(méi)有使用操作系統或者使用UCOS系統,功能較 為簡(jiǎn)單,響應速度慢,操作比較復雜,不適合計算 機水平程度較低的操作人員使用。

而使用Wintel系統收銀秤單價(jià)太高,是其難 以取代單片機或ARM的重要原因。一臺采用 Intel核心與Microsoft平臺的收銀秤的到港報價(jià) 3000?5000元人民幣,終端市場(chǎng)的報價(jià)6000? 20000元人民幣,對于規模較小的生鮮及食品專(zhuān) 賣(mài)店而言是一筆不小的資本負擔。

200711月,Google推出基于Linux的操作 系統Android。Android開(kāi)放了源代碼,這給全世 界的應用程序開(kāi)發(fā)人員提供了開(kāi)放的開(kāi)發(fā)平臺, 出現了基于Android平臺的各種各樣的應用程序, 應用領(lǐng)域廣泛、內容豐富,也使得Android很快就 統治了手機、平板電腦等領(lǐng)域。

1.收銀秤系統的硬件設計與實(shí)現

根據收銀秤的功能需求,系統采用三星公司 高性?xún)r(jià)比的、基于ARM Cortex-A8內核的 S5PV210處理器設計的硬件平臺。S5PV210處理 器采用了 32/64位的內部總線(xiàn)結構和最大833 MHz的運算速度。包括強大的硬件加速器,支持多 種格式的硬件編解碼等。S5PV210開(kāi)發(fā)平臺具有 豐富的硬件資源,包含如下:512MB NAND Flash, 512MB DDR2 內存,HDMI 顯示接口,個(gè) USB Host2.0,USB OTG2.0 接口,1 個(gè) SDIO   (Micro SD卡接口),支持1RS232串口接口 (調試串口)等。整個(gè)收銀秤系統硬件總體設計 框圖如圖1。利用該片內的512 MBFlash 512MBRAM分別實(shí)現控制程序和上萬(wàn)個(gè)商品 PLU信息的存儲,外接I/O器件實(shí)現USB以太網(wǎng) 無(wú)線(xiàn)網(wǎng)絡(luò )的通訊以及支持7.0177.80mm) 10.1256.54mm)規格的LCD液晶顯示。利用 RS232串口外接電子秤器件和常見(jiàn)的LP-50打印 機和內置連續熱敏紙打印機接口,內置熱敏標簽 打印機接口,利用PS2接口連接掃描槍等。

體重1.jpg

2.系統功能和總體架構

按照收銀秤系統的功能需求及軟件的特點(diǎn), 本收銀秤系統劃分為5個(gè)功能模塊,每個(gè)模塊有 多個(gè)子模塊,詳細說(shuō)明如下。

收銀模塊:包含稱(chēng)重、去皮、清零、付款、折 扣、掛單、取單等功能,可接錢(qián)箱,進(jìn)行現金的收支 和管理,可外接掃描槍掃描稱(chēng)重或者非稱(chēng)重商品, 進(jìn)行收銀,可自動(dòng)計算單品折扣或者總價(jià)的比例 折扣。

基礎數據模塊:包含部門(mén)的管理、商品分 組管理、商品類(lèi)別的管理、商品PLU的管理、商品 批量添加和更新管理、商品折扣的管理、會(huì )員管理 和商品庫存管理等。

系統設置模塊:1)網(wǎng)絡(luò )設置;)用戶(hù)權限 的控制:收銀員的角色管理,包含銷(xiāo)售員、店鋪經(jīng) 理等;收銀員的管理;設置收銀員的業(yè)務(wù)操作權限, 包括退貨、退款、掛單、取單、取消商品訂單和刪除 商品訂單等;設置商店名稱(chēng)、地址和聯(lián)系電話(huà)等。

打印設置模塊:打印機的配置;打印格式 的配置,如打印頭信息、打印尾信息、打印日期時(shí) 間格式和打印字體信息的配置等。

報表設置模塊:可以查看各種銷(xiāo)售報表, 如實(shí)時(shí)查看單個(gè)商品日銷(xiāo)售報表、當日銷(xiāo)售報表、 當曰銷(xiāo)售明細報表和店員銷(xiāo)售統計報表等。能對 銷(xiāo)售的各類(lèi)商品進(jìn)行銷(xiāo)存管理,查看打印商品庫 存報表,統計庫存量,根據單據來(lái)盤(pán)點(diǎn)庫存,扣除 合理的損耗。

如上所述,該收銀秤系統基本上實(shí)現了市場(chǎng) 上收銀秤的所有功能,甚至包含了簡(jiǎn)單的進(jìn)銷(xiāo)存 和會(huì )員管理功能,能夠滿(mǎn)足大多數客戶(hù)的需求。

3.系統的關(guān)鍵功能具體實(shí)現

3.1商品管理的實(shí)現

商品管理包含商品名、商品編碼和商品價(jià)格 等基本信息的保存修改操作,它是收銀秤系統的 基礎。對于小型連鎖生鮮食品店、休閑食品專(zhuān)賣(mài) 店,中小型的商場(chǎng)、超市或商品數量較多的賣(mài)場(chǎng), 商品管理是一個(gè)很繁重的任務(wù)。用戶(hù)需要將所有 商品進(jìn)行編碼并逐個(gè)錄入到收銀秤系統中,以備 銷(xiāo)售。一個(gè)良好的商品管理模塊應能夠提供用戶(hù) 錄入商品,優(yōu)化銷(xiāo)售報表,方便計算銷(xiāo)售利潤等。

3.1.1商品表的設計

商品表是整個(gè)收銀秤系統設計的核心與基 礎。通過(guò)梳理實(shí)際銷(xiāo)售業(yè)務(wù)流程,可分析各個(gè)功能 模塊所需要存儲的數據,整理相互之間的關(guān)聯(lián), 而設計對應的商品表。根據收銀秤系統的需求,設 計了商品管理的數據表如表1。

3.1.2表現層設計

商品管理列表界面采用LinearLayout布局, 并使用了自定義翻頁(yè)列表組件ListViewPage, 組件繼承自ListView。ListViewAndroid界面設計中比較常用的組件,它以列表的形式展示數據 庫表中的具體內容,并且能夠根據數據的長(cháng)度和 屏幕的大小自適應顯示。ListView本身沒(méi)有顯示 上一頁(yè)和下一頁(yè)的按鈕,可通過(guò)手滑動(dòng)方式動(dòng)態(tài) 地加載數據,當向下滾動(dòng)時(shí),最下邊顯示Loading …,數據加載結束后,所顯示的Loading底欄消 失。本項目因為經(jīng)常會(huì )用到顯示上一頁(yè)和下一頁(yè) 按鈕的分頁(yè)列表,所以自定義了 ListViewPage ,可以在多個(gè)模塊的列表中使用。ListViewPage 實(shí)現了 onPrevPageonNextPage函數,對應兩個(gè) 按鈕上一頁(yè)下一頁(yè)的方法。設置兩個(gè)變 iPageSize10、iPageid默認為1,代表每頁(yè)只 顯示10條記錄,默認從第一頁(yè)開(kāi)始。

體重2.jpg

商品信息界面采用LinearLayout布局,里面 包含ScrollView支持垂直滾動(dòng)。使用Tablelayout 類(lèi)以表格的形式對控件進(jìn)行管理,有多個(gè)行和列, 每一行為個(gè)TableRow對象,在TableRow下根 據需要添加子控件標簽或輸入框或單選框或下拉 框做為列,默認情況下,每個(gè)子控件占據一列。

3.1.3業(yè)務(wù)邏輯層設計

針對收銀秤系統的硬件內存等資源有限問(wèn) 題,通過(guò)SQLite嵌入式數據庫引擎來(lái)實(shí)現結構 化數據存儲,封裝了 SQLite提供的API,編寫(xiě)了 DBHelper工具類(lèi),進(jìn)行數據庫增刪改查和事務(wù)處 理的基本操作。在商品添加或者編輯的界面中,使 用產(chǎn)品類(lèi)別的下拉框。下拉框中的內容通過(guò) DBHelper獲取時(shí)間放在字符串數組中,將字符串 數組與ArrayAdapter連接起來(lái),然后通過(guò) setDropDownViewResource可以設置下拉列表的 風(fēng)格,最后通過(guò)setAdapterAdapter添加到 Spinner,而使用 setOnltemSelectedListener Spinner添加事件監聽(tīng)函數。為自動(dòng)計算商品在收 銀銷(xiāo)售主界面的顯示位置,定義getShowPosit() 數,函數循環(huán)從數據庫中的同類(lèi)商品中查找該類(lèi) 別商品的頁(yè)面數及最小的空位置數。

3.1.4商品的批量增加和更新

針對收銀秤系統的商品品種較多問(wèn)題,系統 設計了商品的批量增加和更新的功能,利用常用 .txt或者.csv文件保存商品的基本信息,含商品 的PLU碼、類(lèi)別、名稱(chēng)、價(jià)格及計量單位;同時(shí)將 商品的圖片命名為相應的PLU編碼的圖片,如商 APLU編碼為2201134則其圖片名稱(chēng)為 2201134.jpg ;把商品信息和相應的圖片存放在同 個(gè)目錄下,通過(guò)網(wǎng)絡(luò )或U盤(pán)將文件夾拷貝到系統 data目錄中,就可以實(shí)現自動(dòng)導入和更新數據。

3.2收銀功能的實(shí)現

收銀功能包含以下子模塊自動(dòng)去皮、稱(chēng)重、修 改商品售價(jià)、修改商品數量、掛單、取單、會(huì )員折扣、 計價(jià)、付款、打印、查看日報表和店員銷(xiāo)售報表等, 并支持收銀員登錄和暫時(shí)離開(kāi)時(shí)對系統的鎖定。

3.2.1表現層設計

收銀秤的收銀界面比較復雜,筆者采用分層 結構,并使用動(dòng)態(tài)生成的方法。最頂層使用 RelativeLayout 布局,設置 Theme.NoTitleBar. Fullscreen風(fēng)格。讓整個(gè)應用窗口是不含標題欄并 且全屏的。內部的商品顯示界面使用Tab控件,以 實(shí)現在同個(gè)界面中分別顯示不同類(lèi)別的商品。每 個(gè)Tab控件顯示一種類(lèi)別的商品,使用Tab控件 顯示時(shí)首先使用TabActivtiy里的getTabHsot() 法獲取TabHost對象,接著(zhù)調用tabHost.addTab (TabSpec)方法添加商品類(lèi)別頁(yè)[6]。TabSpec則是通 過(guò) TabHost.newTabSpec (Stringtag)類(lèi)方法來(lái)創(chuàng )建的實(shí)例,實(shí)例化后通過(guò)setIndicator方法可對其屬 性進(jìn)行設置,設置屬性標簽頁(yè)的label (顯示的名 字)的值為商品類(lèi)別的值。另外通過(guò)setContent 法是指定的是Tab的內容。內容是使用 FrameLayout來(lái)設置商品顯示的位置和圖片。 FrameLayout 是通過(guò) FragmentManager 來(lái)對 Activity 運行時(shí)Fragment的添加、刪除、替換進(jìn)行操作,而 不是在XML布局文件中進(jìn)行定義。

通過(guò)FrameLayout動(dòng)態(tài)顯示商品的位置和圖 片的步驟如下:

通過(guò) Activity  getFragmentManager()來(lái) 獲得 FragmentManager 對象;

 過(guò) FragmentManager beginFragmentTransaction ()方法獲得個(gè) FragmentTransaction 對象;

通過(guò) FsragmentTransaction  add()方法來(lái) 添加一個(gè)Fragment到當前的Activity中;

通過(guò) FragmentTransaction  commit() 法來(lái)提交保存一個(gè)Fragment到當前Activity中。

3.2.2業(yè)務(wù)邏輯層設計

收銀功能是核心功能。包含許多子模塊:稱(chēng) 重、計價(jià)、修改價(jià)格、會(huì )員折扣、掛單、取單和收款 等。稱(chēng)重功能是通過(guò)創(chuàng )建電子秤監聽(tīng)服務(wù)類(lèi) ScaleService 來(lái)實(shí)現,ScaleService 繼承自 Service 類(lèi)。在AndroidService服務(wù)類(lèi)類(lèi)似于Linux 的后臺進(jìn)程,是用來(lái)進(jìn)行后臺數據處理的進(jìn)程,該 進(jìn)程能夠對用戶(hù)的行動(dòng)進(jìn)行跟蹤,收銀秤系統要 不斷采集電子秤發(fā)送過(guò)來(lái)的稱(chēng)重信息,就需要編 寫(xiě) ScaleServicec 自定義的ScaleService繼承自系 統的Service類(lèi),然后重載其中的OnCreate ()、 OnStart ()、OnDestroy ()三個(gè)方法,并需要在 AndroidManifest.xml 中注冊。

Activity 通過(guò) Intent 啟動(dòng) ScaleService,如果 ScaleService還沒(méi)有運行,則Android先調用 onCreate ()方法然后調用OnStart ()方法;如果 ScaleService 已經(jīng)運行,則只調用OnStart(),所以 一個(gè)ScaleServiceOnStart()方法可能會(huì )重復調 用多次。收銀秤系統關(guān)閉后則調用stopService() 法就會(huì )觸發(fā)ScaleServiceOnDestroy()方法。

在自定義的 ScaleService 中不能直接訪(fǎng)問(wèn)數 據庫,只能通過(guò)ContentResolver訪(fǎng)問(wèn)[8],實(shí)現步驟

如下:

創(chuàng )建 myContentProvider 繼承自ContentProvider 類(lèi);

AndroidManifest.xml中添加對應權限 并且注冊;

通過(guò) Activity  getContentResolver()返回 ContentResolver實(shí)例對應的query函數獲得返 回為Cursor對象的數據集,利用Cursor對象操作 數據庫;

ContentResolver實(shí)例提供的類(lèi)似數據庫的 增刪改查的基本操作,分別對應insert()、delete()、 update() query()函數。

4.仿真結果和測試

4.1仿真結果

 ADT (Android Developer Tools)開(kāi)發(fā)環(huán)境 ,使用Java語(yǔ)言,設計和實(shí)現了基于Android 臺的收銀秤系統,并在開(kāi)發(fā)板上測試了各項功能, 均按要求輸出了預期的結果,采用的開(kāi)發(fā)板平臺 Android4.1。2所示為程序在模擬器上運行 時(shí)的功能主界面,當用戶(hù)登錄后,可以選擇進(jìn)去某 個(gè)模塊。圖3為收銀秤的收銀操作界面,具有計 價(jià)、稱(chēng)重等功能。

體重3.jpg

4.2易用性測試

易用性測試的目的在于讓用戶(hù)容易接受使用 軟件。因為易用性是非功能性需求,有很多的主觀(guān) 成分無(wú)法量化。筆者使用B/T 16260.2-2006/ ISO/IEC 9126-2:2001軟件工程產(chǎn)品質(zhì)量(第2 )外部度量”9]中的兩個(gè)指標:功能學(xué)習的難易 性(用戶(hù)要用多長(cháng)時(shí)間學(xué)習使用一項功能)及操 作規程的減少(用戶(hù)能否減少操作規程)。測試對 象選擇CS2(LH51)收銀秤和RM-60 收銀秤在功能學(xué)習的難易性和的操作規程的減少 兩個(gè)指標上進(jìn)行比較。選擇的功能集中在常用的 功能,含單個(gè)商品銷(xiāo)售、多個(gè)商品銷(xiāo)售、掛單、取 單、會(huì )員打折、修改價(jià)格、單品作廢、交易作廢和退 貨操作。收銀員的培訓時(shí)間測試情況如下:CS2 (LH51), 16h ,RM-60,16h ;Android CRS,2h。培訓 時(shí)間從原來(lái)的16h大幅縮短為2h主要是由于智 能手機的廣泛使用,收銀員對于Android系統的使 用有著(zhù)親切感,對于收銀秤系統更容易上手操作。

根據《CS2(LH51)收銀秤銷(xiāo)售操作 使用說(shuō)明手冊》和《 RM-60操作培訓手冊》,估算出收銀秤的在8 常用的功能上的操作按鍵次數如表2。

體重4.jpg

從表2可以看出對于常用的功能操作,按鍵 次數減少,可以大幅減少操作員的工作強度,提高 工作效率。由于界面更直觀(guān),還能減少錯誤。

4.3響應時(shí)間測試

由于收銀秤的工作特性,在商品數量達到1 萬(wàn)個(gè)時(shí),需要收銀秤的響應時(shí)間不超過(guò)1s。筆者對 收銀秤系統的最常用的3個(gè)操作:定位商品、計 價(jià)、計重進(jìn)行響應時(shí)間測試。每個(gè)操作分別在100、 100010000個(gè)商品的情況下進(jìn)行30次的操 ,分別取其平均響應時(shí)間,結果見(jiàn)表3。

體重5.jpg

從測試結果可以獲知,由于稱(chēng)重過(guò)程需要與 外部串口通信,所以響應時(shí)間相對定位商品和計價(jià)較多,但是總體上滿(mǎn)足收銀秤操作響應時(shí)間不 超過(guò)1s的要求。

5.結束語(yǔ)

傳統的收銀秤系統一般采用單片機作為主控 核心,沒(méi)有采用操作系統,內存容量少,操作不方 便。筆者根據收銀秤的應用需求,采用基于ARM Cortex-A8為內核的S5PV210開(kāi)發(fā)板,設計了基于 Android的收銀秤硬件系統,并實(shí)現了大屏幕、可 視化、易操作的收銀秤軟件系統,并已開(kāi)發(fā)出樣 機。經(jīng)過(guò)整體測試證明了提供的設計方法的可用 性和可靠性。此外,由于需求的不斷豐富和更新, 有些功能仍需完善,如銀聯(lián)卡刷卡消費和會(huì )員積 分卡管理等。此外,考慮提高系統的可擴展性以滿(mǎn) 足不同的應用場(chǎng)景,整個(gè)收銀界面的操作按鍵應 該是可配置的。