超市收銀系統設計思路

來源:互聯網
上載者:User

超市收銀系統設計分析

一、系統整體架構

圖1

從圖1可以看出,系統架構很清晰,使用者登入,根據使用者權限的不同,對應不同的操作方法,操作對象為商品。

但本系統要求使用C/S架構結構來設計。

C/S架構介紹:

C/S 結構,即大家熟知的客戶機和伺服器結構。

C/S 結構的基本原則是將電腦應用任務分解成多個子任務,由多台電腦分工完成,即採用“功能分布”原則。用戶端完成資料處理,資料表示以及使用者介面功能;伺服器端完成DBMS(資料庫管理系統)的核心功能。這種客戶請求服務、伺服器提供服務的處理方式是一種新型的電腦應用模式。

Client和Server常常分別處在相距很遠的兩台電腦上,Client程式的任務是將使用者的要求提交給Server程式,再將Server程式返回的結果以特定的形式顯示給使用者;Server程式的任務是接收客戶程式提出的服務要求,進行相應的處理,再將結果返回給客戶程式。

鑒於超市收銀系統的特性,本系統不牽扯多個用戶端,不需要線程同步。

 

二、代碼設計架構

因為使用C/S架構設計程式,因此有固定的設計步驟:

1.  項目包的設計:

圖2

client包:主要由用戶端操作介面類和用戶端業務類組成,用戶端操作類也就是用戶端main方法類,主要負責引導使用者操作,提供系統介面資訊提示操作,包括:初始化登入視圖、商品庫存管理檢視和收銀管理檢視;用戶端業務類主要包括處理用戶端請求並將用戶端請求打包發送給伺服器的方法和一些輔助操作方法。處理庫存管理員要求方法為:商品入庫、商品出庫、新增商品、查詢全部商品和按編號查詢商品;處理收銀員要求方法為:掃描商品、修改購買數量商品和結賬。

entity包:主要由系統所涉及的實體類組成,根據操作視圖可以確定為使用者類和商品類。

圖3 使用者資訊

圖4 商品資訊

server包:主要由伺服器主流程類(線程類)和伺服器(資料處理)業務類組成,伺服器主流程類也即main方法類,主要負責接收用戶端請求,並根據請求標誌資訊分配相應操作,最後再將處理資料發送給用戶端;伺服器資料處理業務類主要由處理用戶端請求的方法和商品資訊庫組成。

util包:

util包為工具 + 生產力包,主要包括項目中一些工具類,主要包括資料處理類(加密、解密、資料轉換、特殊檔案操作和資料打包)和常量類。

本項目主要包括資料打包類、常量類和proprties檔案操作類。

sys.properties檔案:

Properties檔案是一個文字檔;properties檔案的文法有兩種,一種是注釋,一種是屬性配置;注釋:前面加上#號;屬性配置:以“鍵=值”的方式書寫一個屬性的配置資訊。

Properties類本身表示了對一種Map結構的操作,properties檔案本身就表示一個“索引值對”的集合,因此,Properties類屬於集合容器的家族,在使用前應該建立一個Properties的容器,實際上就是建立一個預設不帶參數的Properties對象,通過別的方式給裡面添加“索引值對”。

sys.properties在本項目的作用主要用來設定管理員資訊:主機名稱和連接埠號碼。

2、項目設計知識點

本項目主要設計關鍵知識點:類和對象,封裝,繼承,異常,集合和泛型,輸入/輸出,多線程和網路編程。

3、代碼編寫思路

1)  建立項目

2)  建立Java包:用戶端包,伺服器包,實體包,工具 + 生產力包。

3)  建立設定檔:.properties檔案或 .xml檔案。

4)  建立各Java包中的類檔案:

用戶端包:用戶端操作介面類和用戶端業務類;

伺服器包:伺服器主流程類(線程類)和伺服器業務類(資料處理);

實體包:根據具體項目情況建立;

工具 + 生產力包:

ü  資料包類:主要儲存用戶端和伺服器之間互動的關鍵資料,包括實體物件和邏輯判斷標誌等;

ü  常量類:用戶端和伺服器之間需要共同使用的狀態常量,一般為業務操作標識符和系統資訊常量(正確、錯誤狀態常量,配置資訊常量)。

ü  工具類:一般為設定檔的操作類。

5)  編寫個專案檔(由簡入繁:單個功能實現到全部功能拓展)。

6)  項目調試。

 

三、具體程式碼分析

1.  sys.properties檔案編寫

該檔案主要使用者配置socket通訊端屬性:主機名稱和連接埠號碼,在此配置資訊為:

圖5 sys資訊

2.  實體類編寫

根據entity包分析可知:Goods類和Users類。

Goods類:

圖6 Goods類

Users類:

圖7 Users類

註:因為涉及到socket編程,因此兩實體類均需要序列化。

3.  工具 + 生產力包類編寫

1)資料包類(Datas類):

因為該項目為超市收銀系統,根據項目效果圖可知,主要設計對象為:商品對象(goods),使用者物件(user);為便於商品資訊操作,建立商品集合,又因為牽扯到庫存管理和收銀兩個類,進而建立庫存商品集合和 購買商品集合;又因為牽扯到用戶端和伺服器端業務請求操作,因此建立業務操作標識變數:flag。具體內容如下:

圖8 Datas類

圖9 庫存商品集合應用需求

圖10 購買商品集合應用需求

註:因為涉及到socket編程,Datas類需要序列化。

2)工具類(Tools類檔案):

Tools檔案主要用於操作sys.properties檔案,對sys.properties檔案操作之前,首先需要載入源檔案(鑒於載入操作特殊性(提前操作),使用static塊來封裝),然後才能讀取sys.properties檔案中鍵對應的值。

該類主要是用於讀取socket參數資訊(host,port)。

圖11

Propertis方法:void load(InputStream inStream) 從輸入資料流中讀取屬性列表(鍵和元素對)。

ClassLoader類:類載入器是負責載入類的對象。

InputStream getResourceAsStream(String name):返回讀取指定資源的輸入資料流。

3)常量類:

由代碼編寫思路分析可知:常量類列表主要由以下幾個部門組成:系統配置常量,系統資訊反饋常量,系統操作常量,管理員操作常量,收銀員操作常量。

圖12 常量列表

註:具體常量參數可以在具體編程中增加或刪減。

4.  用戶端類編寫

1)用戶端操作介面類:

用戶端操作介面類主要完成如下工作:(1)使用者登入(2)使用者操作

使用者登入有兩個選項:管理員和收銀員;使用者操作也分別按照管理員和收銀員來展開。

圖13 管理員登入成功視圖

圖14 收銀員登入成功視圖

鑒於登入操作只有兩個選項,採用if-else編寫較為快捷。具體代碼截圖如下:

圖15登入作業碼

管理員操作和業務員操作選擇較多,因此採用switch來實現較為合適,具體代碼截圖如下:

圖16 管理員作業碼

圖17 收銀員作業碼

main()方法:原則上main()越簡單越好,具體代碼截圖如下:

圖18 main()方法代碼

註:代碼編寫按如上模組來進行編寫(登入方法,管理員操作方法,收銀員方法),具體方法的實現依靠用戶端業務類,本類中主要負責視圖的引導和顯示,可以分模組來進行編寫和調試,遵循由簡入繁原則。

2)用戶端業務類:

用戶端類的方法編寫主要為滿足用戶端操作介面類的需求且需要實現與伺服器端的資訊互動(通過socket編程實現),因此具體程式碼封裝括登入資訊的處理(方法),管理員視圖下的業務操作處理(方法),收銀員視圖下的業務操作處理(方法),以及業務操作過程需要的邏輯操作方法的編寫。具體代碼截圖如下:

圖19 用戶端業務方法

因為需要使用socket編程來實現用戶端與伺服器的資料通訊,因此需要socket的初始化和socket的關閉操作。具體代碼如下:

圖20 socket的初始化和關閉操作

註:用戶端業務類的調試應該在伺服器類的架構搭好之後進行(可以完成基本的通訊應答操作)。

用戶端編程關鍵點:

用戶端發送資料編寫原則,通過Datas類中的屬性參數作為載體,即對客戶資訊,商品資訊和業務操作常量標識符進行資料打包,統統將需要發送的關鍵資訊封裝到Datas對象內,然後將這個對象發送給伺服器,具體代碼截圖如下:

圖21 商品入庫關鍵資訊Datas打包發送代碼

同時讀取伺服器端返回的Datas資料,提取需要的資訊進行處理和判斷,其中包括狀態常量資訊(success或error),具體代碼截圖如下:

圖22 讀取伺服器返回資料並處理

5.  伺服器類編寫

1)伺服器主流程類:

伺服器主流程類也即線程類,本線程類採用繼承Thread父類來實現。

run()方法主要負責讀取用戶端發送過來的資料,提取業務操作常量標識,然後分別進行相應的操作,具體的資料處理依靠伺服器業務類來實現,然後在將處理好的資料打包(Datas)發送給用戶端,具體代碼截圖如下:

圖23 讀取用戶端資料並進行相應的作業碼

圖24 將處理好的資料打包發送給用戶端作業碼

2)伺服器業務類:

伺服器業務類主要包括兩部分:基礎資料:使用者資訊(管理員和收銀員的帳號、密碼-ROM型),庫存商品資訊(ROM型),購買商品資訊(RAM型);處理用戶端請求的資料處理方法。基礎資料以後可用資料庫來儲存處理。

ROM型資料初始化採用static塊實現,一次執行,最先執行。具體代碼截圖如下:

圖25 系統基礎資料代碼

資料處理方法均為有參數方法,因為要將處理資訊發送給用戶端,具體返回資料類型依據具體業務操作來定。具體代碼截圖如下:

圖26 伺服器業務處理方法代碼

註:用戶端與伺服器聯調時,可以先把用戶端和伺服器的基本架構搭好,調試好準系統後再做後續的代碼擴充和調試。

 

問題點收集:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.