1. 引言
1.1 編寫目的
在完成圖書銷售系統需求分析的基礎上,項目開發團隊依據《圖書銷售系統需求規格說明書》對圖書銷售系統如何實現進行了設計。爲了文檔化我們對系統的設計,編寫了本文檔。
本文檔主要供項目開發團隊在具體實現圖書銷售系統時參考使用。系統交給客戶之後,系統維護人員在必要時也可查閱本文檔。
1.2 背景
包括以下內容:
l 系統名稱:《圖書銷售系統》
l 本系統由軟件工程專業項目開發小組完成從需求分析、設計到編碼、測試、發佈的全過程。
1.3 參考資料
l 《軟件工程實踐者的研究方法》,(美)普雷斯曼,鄭人傑譯,機械工程出版社,2011-5
l 《敏捷技能修煉:敏捷軟件開發與設計的最佳實踐》,(美)艾倫·沙絡(Alan Shalloway);斯科,機械工業出版社,2012-9
l 《分析模式:可複用的對象模型》,(美)福勒,出版社:人民郵電出版社,2010-11
l 《快速軟件開發》,(美)麥克康奈爾著,席相林等譯,馮炳根審校,清華大學出版社,2008-8
l 《軟件工程課程設計》,呂雲翔,劉浩,王昕鵬,周健等,機械工業出版社,2009-6
l 《軟件設計模式與體系結構》,孫玉山,劉旭東等,高等教育出版社,2013-5
2. 總體設計
2.1 需求規定
本系統將解決當前很多圖書購買和銷售過程的電子化、規範化需求。詳細的需求規格說明可參見《圖書銷售系統需求規格說明書》。
2.2 硬件運行環境
服務器:
本系統軟件旨在模擬和實現圖書銷售過程中的業務邏輯,是個人團隊做學習和研究的設計開發,受到開發經費以及使用範圍的限制無需配置服務器。
銷售方客戶機:
處理器型號:AMD/Intel 1.6GHz及以上
內存容量:512MB及以上
外存剩餘空間:1GB及以上
網絡配置:無特殊要求
購買方客戶機:
處理器型號:AMD/Intel 1.6GHz及以上
內存容量:512MB及以上
外存剩餘空間:1GB及以上
網絡配置:無特殊要求
讀卡器以及其他外設環境:
本圖書銷售系統無需配置多餘的讀卡器及其他外設環境,非接觸式的IC卡讀卡器以及可以讀取RF類型的非接觸式IC卡都無需配備,對讀卡器的接口以及串口也無特殊要求。
2.3 軟件運行環境
服務器:
本系統軟件旨在模擬和實現圖書銷售過程中的業務邏輯,是個人團隊做學習和研究的設計開發,受到開發經費以及使用範圍的限制無需配置服務器。
銷售方客戶機:
操作系統:Windows XP/7(推薦Windows 7)
數據庫:Microsoft SQL Server 2008
運行支持軟件環境:.NET Framework 3.0及以上(推薦.NET Framework 4.5)
購買方客戶機:
操作系統:Windows XP/7(推薦Windows 7)
數據庫:Microsoft SQL Server 2008
運行支持軟件環境:.NET Framework 3.0及以上(推薦.NET Framework 4.5)
2.4 開發環境
硬件環境:
本系統採用PC機開發,配置如下:
處理機型號:AMD/Intel 1.6GHz及以上
內存容量:1GB及以上
外存剩餘空間:1GB及以上
網絡配置:無特殊要求
軟件環境:
操作系統:Windows 7
IDE:Microsoft Visual Studio 2012
數據庫:Microsoft SQL Server 2008
測試工具:Microsoft Visual Studio 2012集成測試工具
代碼輔助編輯:Notepad ++ v6.5 (UNICODE)
2.5 基本設計思想
圖書購買以及銷售的具體工作設計很多方面,在實際的應用中銷售方以及購買方對於系統功能的需求有時會千差萬別,由此確定的軟件系統的規模大小也不盡相同。但總體上來說,圖書銷售的業務邏輯還是比較清晰的,一般的銷售流程基本可以確定下來。
爲了使圖書銷售系統具有一定程度的通用性,我們主要實現“用戶及管理員的登入登出”、“基礎信息管理”、“庫存管理”、“價格管理”、“銷售管理”以及“查詢管理”等功能。我們儘量將銷售方和購買方的權限加以區分,保證系統邏輯的嚴謹。在界面的美觀設計方面,着重強調控件風格的一致,以及顯示內容的清晰度。
2.6 結構
本圖書銷售系統的功能結構如表1所示。
表1 結構
模塊名稱 |
功能描述 |
輸入 |
輸出 |
登入登出
|
讓管理員以及用戶登陸系統,根據角色的權限進行相應操作 |
用戶名和密碼 |
登陸是否成功的信息 |
基礎信息管理 |
實現管理員,圖書信息,圖書種類,供應商信息,倉庫信息以及銷售櫃檯信息的增刪改查 |
操作對象的信息
|
格式化、數字化的操作對象信息 |
庫存管理 |
實現圖書入庫,入庫退貨,庫存調撥的操作 |
相應的圖書信息,倉庫名稱,調撥數量等 |
倉庫圖書記錄的變動,銷售櫃檯圖書記錄的變動 |
價格管理 |
對庫存圖書進行價格的定製以及調節 |
相應的圖書信息,圖書價格 |
圖書價格的變動 |
銷售管理 |
實現圖書銷售以及銷售退貨的操作 |
相應的圖書信息,購買數量或者退貨數量 |
圖書銷售記錄變更 |
查詢管理 |
實現對圖書入庫數據,入庫退貨數據,銷售數據,銷售退貨數據的查詢 |
相應的功能標識 |
列表式顯示圖書入庫數據或者入庫退貨數據或者銷售數據等 |
2.7 功能需求與程序的關係
本圖書銷售系統的功能需求與程序的關係如表2所示。
表2 功能需求與程序的關係
需求 |
功能模塊 |
功能描述
|
圖書信息登記 |
基礎信息管理 |
圖書信息主要包含圖書名稱,圖書編號,作者,出版社,登記時的價格(即入庫價格),圖書種類,只有登記的圖書才能進行入庫操作 |
圖書種類添加與刪除 |
基礎信息管理 |
新建或者刪除已有的圖書種類 |
銷售櫃檯添加與刪除 |
基礎信息管理 |
新建或者刪除已有的銷售櫃檯 |
倉庫對象添加與刪除 |
基礎信息管理 |
新建或者刪除已有的倉庫對象 |
供應商信息的添加與刪除 |
基礎信息管理 |
供應商信息主要包含供應商名稱,法人,負責人,電話,地址,聯繫網址,聯繫郵箱 |
管理員信息修改 |
基礎信息管理 |
刪除管理員,修改管理員信息(賬號密碼,權限等級),添加管理員 |
會員信息修改 |
基礎信息管理 |
刪除會員,修改會員信息(賬號密碼,會員等級,折扣等級),添加會員 |
圖書入庫 |
庫存管理 |
從登記的圖書列表中選擇,購買後放入特定名稱的倉庫中 |
入庫退貨 |
庫存管理 |
對入庫的圖書進行退貨,從特定倉庫庫存中減少相應的退貨數量 |
庫存調撥 |
庫存管理 |
實現各個倉庫中圖書庫存的相互轉移,以及倉庫與銷售櫃檯中圖書庫存的轉移 |
圖書定價 |
圖書價格管理 |
對剛入庫的圖書進行定價 |
圖書調價 |
圖書價格管理 |
對已經定價的圖書進行價格調整 |
圖書銷售 |
圖書銷售管理 |
用戶登陸後在各個銷售櫃檯中選擇圖書進行購買 |
銷售退貨 |
圖書價格管理 |
用戶登陸後可以對自身購買的圖書進行退貨操作 |
入庫信息查詢 |
信息查詢管理 |
統計已經入庫的圖書記錄,列表顯示 |
入庫退貨查詢 |
信息查詢管理 |
統計入庫退貨的相關記錄,列表顯示 |
銷售信息查詢 |
信息查詢管理 |
統計圖書銷售記錄,列表顯示 |
銷售退貨查詢 |
信息查詢管理 |
統計銷售退貨記錄,列表顯示 |
2.8 人工處理過程
1)管理員對圖書信息進行登記,登記時需要對圖書種類進行填寫,登記前需要添加圖書種類信息,未經登記的圖書不能入庫。
2)管理員需要以人工輸入的方式進行基礎信息的管理以及庫存管理,用戶不能對以上功能項目進行管理。
3)管理員人工操作添加銷售櫃檯的圖書信息,用戶登陸後可以從相應的櫃檯中獲取銷售的圖書列表,進行購買操作。
4)需要時,用戶可以對自身購買的圖書進行退貨操作。
5)圖書銷售系統的持續使用,需要人工對庫存進行維護和管理(例如庫存圖書以及銷售櫃檯圖書的補充),銷售櫃檯沒有圖書銷售信息,用戶便無法從其中執行購買操作。
3. 接口設計
3.1 用戶接口
l 網站部分:本圖書銷售系統不包含與網絡的交互聯通功能。
l 客戶端部分:簡潔大方的圖形用戶界面,包含登陸窗口,以及登陸成功後顯示的用戶主界面窗口。主界面由各個系統功能子模塊構成,要求清晰、美觀。登陸界面包含不同角色的切換登陸功能,適用於管理員以及用戶等不同身份權限的角色進行登陸,要求簡潔、有序。
3.2 外部接口
l 數據存儲:本系統設計數據的存儲和處理,通過ADO.NET與Microsoft SQL Server 2008交互。
3.3 內部接口
l 本系統以數據爲中心,各模塊均通過ADO.NET與數據庫服務器交互。
l 功能界面的切換通過特定的事件響應和監聽機制進行處理。
l 桌面系統和數據庫緊密的聯繫在一起。
4. 運行設計
4.1 運行模塊組合
l 客戶端:這種情況下充分利用了系統提供的功能,能夠實現對圖書銷售流程的較爲全面的管理,適合大多數用戶。
4.2 運行控制
l 客戶端:銷售方管理員在圖書銷售開始之前在系統中登記好圖書信息,根據實際情況添加管理員信息,用戶信息,圖書信息,對倉庫以及銷售櫃檯的圖書進行調撥管理,確保銷售櫃檯的圖書銷售列表不爲空。購買方用戶登陸系統後,便可以選擇相應的銷售櫃檯,從中獲取圖書列表進行購買操作或者對用戶自己已經購買有的圖書進行合理性的退貨操作。銷售方管理員可以獲取入庫以及入庫退貨的記錄,銷售以及銷售退貨的記錄。
客戶端從銷售方管理員或者購買方用戶登錄時開始使用,主要負責管理員和用戶在操作時進行相應的數據庫數據處理。客戶端需要相關人員的控制進行啓動和關閉操作。
4.3 運行時間
l 客戶端:運行時佔用各種資源的時間較多。運行客戶端是佔用一定的數據連接資源。但由於軟件系統規模比較精悍,運行時佔用的資源很小,對CPU、網絡等資源的佔用率變化不大,而且一般處於低佔用水平。
5. 功能模塊設計
5.1 登入登出模塊設計
模塊編號:001
模塊名稱:登入登出
模塊編寫者:
模塊功能概述:
提供銷售方管理員以及購買方用戶人員的身份驗證功能。包括管理員與用戶在軟件系統桌面程序的登入和登出系統。
界面描述:
(1)管理員登陸窗口
本界面有一個登陸框,登錄人員輸入正確的管理員賬號、密碼,則提示登陸成功,跳轉到管理員操作主界面,進行基礎信息管理,庫存管理,圖書價格管理等操作。如果輸入錯誤,則提示相應的錯誤信息。本界面還有一個切換按鈕,用於將窗口切換爲用戶登錄窗口。
(2)用戶登錄窗口
本界面與管理員登錄窗口共享同一個界面,通過界面上的切換按鈕實現兩種登錄模式的切換。登錄人員在登陸框中輸入正確的用戶賬號、密碼,則提示登錄成功,跳轉到用戶操作主界面,進行圖書購買以及銷售退貨等操作。
5.2 基礎信息管理模塊設計
模塊編號:002
模塊名稱:基礎信息管理
模塊編寫者:XXX
模塊功能概述:
爲系統管理員提供對圖書銷售系統中所涉及的各個實體(圖書種類,櫃檯,倉庫,管理員,用戶,圖書,供應商)的具體信息進行添加,修改或者刪除的功能。
界面描述:
(1)管理員主界面
系統管理員登陸成功後首先進入管理員主界面,其主要包含上下兩個區域:上方包含管理員所有可以操作的功能模塊:基礎信息管理模塊、庫存管理模塊、圖書價格管理模塊以及信息查詢管理模塊;下方則是公共的工作區。系統默認工作區中顯示的模塊爲基礎信息管理模塊,管理員可以通過點擊上方的各個模塊進行功能切換,系統會在工作區中顯示出相應的操作選項。
選擇基礎信息管理模塊即可在主界面工作區域中顯示該管理界面。
(2)基礎信息管理界面
本界面包含圖書種類管理、櫃檯信息管理、圖書信息管理、倉庫信息管理、供應商信息管理、管理員信息管理、用戶信息管理等功能按鈕。點擊不同的按鈕,系統會在工作區中刷新出相應的操作界面。
(3)圖書種類管理界面
參數:bookkind = ?
頁面設計:
本界面包含一個主要的列表容器以及容器上方的“添加”按鈕,所有的圖書種類會以長條狀控件的形式添加入列表容器中顯示出來,控件上將會顯示出圖書種類的信息。管理員可以通過點擊控件右上角的關閉按鈕刪除該圖書種類,點擊控件上的修改按鈕,可以在彈出的窗體中輸入需要修改的項目信息。如果需要添加圖書種類可以點擊列表容器上方的“添加”按鈕,在彈出的窗體中輸入圖書種類名稱即可添加,並在列表容器中顯示。
(4)櫃檯信息管理界面
參數:counter = ?
頁面設計:
本界面包含一個主要的列表容器以及容器上方的“添加”按鈕,所有的櫃檯對象會以長條狀控件的形式添加入列表容器中顯示出來,控件上將會顯示出銷售櫃檯的信息。管理員可以通過點擊控件右上角的關閉按鈕刪除該櫃檯,點擊控件上的修改按鈕,可以在彈出的窗體中輸入需要修改的項目信息。如果需要添加櫃檯對象可以點擊列表容器上方的“添加”按鈕,在彈出的窗體中輸入櫃檯名稱即可添加,並在列表容器中顯示。
(5)圖書信息管理界面
參數:bookcode = ?
頁面設計:
本界面包含一個主要的列表容器以及容器上方的“添加”按鈕,所有的圖書對象會以長條狀控件的形式添加入列表容器中顯示出來,控件上將會顯示出圖書的信息。管理員可以通過點擊控件右上角的關閉按鈕刪除該圖書對象。點擊控件上的修改按鈕,可以在彈出的窗體中輸入需要修改的項目信息。如果需要添加圖書對象可以點擊列表容器上方的“添加”按鈕,在彈出的窗體中輸入圖書對象的信息(圖書名稱,圖書編號,作者,出版社,登記價格等)即可添加,並在列表容器中顯示。
(6)倉庫信息管理界面
參數:storagename = ?
頁面設計:
本界面包含一個主要的列表容器以及容器上方的“添加”按鈕,所有的倉庫對象會以長條狀控件的形式添加入列表容器中顯示出來,控件上將會顯示出倉庫對象的信息。管理員可以通過點擊控件右上角的關閉按鈕刪除該倉庫,點擊控件上的修改按鈕,可以在彈出的窗體中輸入需要修改的項目信息。如果需要添加倉庫對象可以點擊列表容器上方的“添加”按鈕,在彈出的窗體中輸入倉庫名稱即可添加,並在列表容器中顯示。
(7)供應商信息管理界面
參數:provider = ?
頁面設計:
本界面包含一個主要的列表容器以及容器上方的“添加”按鈕,所有的供應商對象會以長條狀控件的形式添加入列表容器中顯示出來,控件上將會顯示出供應商的信息。管理員可以通過點擊控件右上角的關閉按鈕刪除該供應商對象,點擊控件上的修改按鈕,可以在彈出的窗體中輸入需要修改的項目信息。如果需要添加供應商對象可以點擊列表容器上方的“添加”按鈕,在彈出的窗體中輸入供應商的信息即可添加,並在列表容器中顯示。
(8)管理員信息管理界面
參數:name = ?
頁面設計:
本界面包含一個主要的列表容器以及容器上方的“添加”按鈕,所有的管理員對象會以長條狀控件的形式添加入列表容器中顯示出來,控件上將會顯示出管理員的信息。管理員可以通過點擊控件右上角的關閉按鈕刪除該管理員對象,點擊控件上的修改按鈕,可以在彈出的窗體中輸入需要修改的項目信息。如果需要添加管理員對象可以點擊列表容器上方的“添加”按鈕,在彈出的窗體中輸入管理員信息即可添加,並在列表容器中顯示。
(9)用戶信息管理界面
參數:username = ?
頁面設計:
本界面包含一個主要的列表容器以及容器上方的“添加”按鈕,所有的用戶對象會以長條狀控件的形式添加入列表容器中顯示出來,控件上將會顯示出用戶的信息。管理員可以通過點擊控件右上角的關閉按鈕刪除該用戶對象,點擊控件上的修改按鈕,可以在彈出的窗體中輸入需要修改的項目信息。如果需要添加用戶對象可以點擊列表容器上方的“添加”按鈕,在彈出的窗體中輸入用戶信息即可添加,並在列表容器中顯示。
5.3 庫存管理模塊設計
模塊編號:003
模塊名稱:庫存管理
模塊編寫者:
模塊功能概述:
對銷售方管理員提供處理圖書庫存數據的功能,包括對圖書入庫的相關信息的登記以及實現從倉庫到倉庫或者倉庫到銷售櫃檯的庫存調撥功能。管理員還可以根據實際的需求,將入庫的圖書進行退貨處理,系統將自動對庫存數據進行相應的更新。
界面描述:
(1)管理員主界面
系統管理員登陸成功後首先進入管理員主界面,其主要包含上下兩個區域:上方包含管理員所有可以操作的功能模塊:基礎信息管理模塊、庫存管理模塊、圖書價格管理模塊以及信息查詢管理模塊;下方則是公共的工作區。系統默認工作區中顯示的模塊爲基礎信息管理模塊,管理員可以通過點擊上方的各個模塊進行功能切換,系統會在工作區中顯示出相應的操作選項。
選擇庫存管理模塊即可在主界面工作區域中顯示該管理界面。
(2)庫存管理界面
本界面主要包含圖書入庫管理、入庫退貨管理以及庫存調撥管理的功能按鈕。系統會根據管理員的選項操作,自動在工作區中刷新出相應的操作界面。
(3)圖書入庫管理界面
參數:type = add
頁面設計:
本界面主要包含一個列表容器,所有登記過的圖書對象會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示出圖書對象的信息。管理員可以通過點擊控件上的“入庫”按鈕,在彈出的窗體中輸入需要入庫的圖書數量等相關信息,即可實現圖書的入庫操作。
(4)圖書退貨管理界面
參數:type = del
頁面設計:
本界面主要包含一個列表容器,所有入庫的圖書對象會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示出入庫圖書對象的相關信息,包括圖書名稱,庫存數量等等。管理員可以通過點擊控件上的“入庫退貨”按鈕,在彈出的窗體中輸入需要退貨的圖書數量等相關信息,即可實現圖書的入庫退貨操作。
(5)庫存調撥管理
參數:type = move
頁面設計:
本界面主要包含一個列表容器,所有倉庫或者銷售櫃檯中的圖書對象會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示出圖書對象的信息(包括圖書名稱,圖書屬於哪個倉庫或者櫃檯,數量等)。管理員可以通過點擊控件上的“庫存調撥”按鈕,在彈出的窗體中輸入需要調撥相關信息(目標倉庫或者目標櫃檯信息,調撥數量信息等),即可實現圖書的庫存調撥操作。
注意:只有定價過的圖書纔可以調撥到銷售櫃檯出售。
5.4 圖書價格管理模塊設計
模塊編號:004
模塊名稱:圖書價格管理
模塊編寫者:
模塊功能概述:
爲管理員提供圖書定價以及圖書調價的功能。剛入庫的圖書要進行銷售必須先進行圖書定價,已經定價的圖書纔可以進行圖書調價的操作。
界面描述:
(1)管理員主界面
系統管理員登陸成功後首先進入管理員主界面,其主要包含上下兩個區域:上方包含管理員所有可以操作的功能模塊:基礎信息管理模塊、庫存管理模塊、圖書價格管理模塊以及信息查詢管理模塊;下方則是公共的工作區。系統默認工作區中顯示的模塊爲基礎信息管理模塊,管理員可以通過點擊上方的各個模塊進行功能切換,系統會在工作區中顯示出相應的操作選項。
選擇圖書價格管理模塊即可在主界面工作區域中顯示該管理界面。
(2)圖書定價界面
參數:Flag = ?
頁面設計:
本界面主要包含一個列表容器,所有已經入庫且Flag標記值爲0(即標識未定價的圖書)的圖書對象會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示出入庫圖書對象的相關信息,包括圖書名稱,作者等信息。管理員可以通過點擊控件上的“圖書定價”按鈕,在彈出的窗體中輸入圖書價格等相關信息,即可實現圖書的定價操作。
(3)圖書調價界面
參數:Flag = ?
本界面主要包含一個列表容器,所有已經入庫且Flag標記值爲1(即表示已經定價的圖書)的圖書對象會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示出入庫圖書對象的相關信息,包括圖書名稱,作者等信息。管理員可以通過點擊控件上的“圖書調價”按鈕,在彈出的窗體中輸入圖書價格等相關信息,即可實現圖書的調價操作。
5.5 圖書銷售管理模塊設計
模塊編號:005
模塊名稱:圖書銷售管理
模塊編寫者:
模塊功能概述:
爲購買方用戶提供圖書銷售以及銷售退貨的功能。用戶在登陸系統之後可以根據需要選擇相應的操作進行。
界面描述:
(1)用戶操作主界面
購買方用戶登陸成功後首先進入用戶操作主界面,其主要包含上下兩個區域:上方包含用戶所有可以操作的功能模塊:圖書銷售模塊。
下方則是公共的工作區。由於用戶只有一種模塊功能的操作,所以系統默認工作區中顯示的模塊即爲圖書銷售管理模塊。
(2)圖書銷售管理界面
本界面主要包含:圖書銷售以及銷售退貨的功能按鈕。系統會根據用戶的操作,在工作區中刷新出對應的操作界面。
(3)圖書銷售界面
參數:username&bookcode = ?
頁面設計:
本界面主要包含一個列表容器,所有銷售櫃檯中的圖書對象會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示出圖書對象的信息(包括圖書名稱,圖書屬於哪個櫃檯,數量,單價等)。用戶可以通過點擊控件上的“圖書購買”按鈕,在彈出的窗體中輸入圖書銷售的相關信息(如購買數量等),即可實現圖書的購買操作。
(4)銷售退貨界面
參數:username&bookcode = ?
頁面設計:
本界面主要包含一個列表容器,所有用戶已經購買的圖書對象會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示出圖書對象的信息(包括圖書名稱,從哪個櫃檯購買的,數量等)。用戶可以通過點擊控件上的“銷售退貨”按鈕,在彈出的窗體中輸入銷售退貨的相關信息(如退貨數量等),即可實現圖書的銷售退貨操作。
5.6 信息查詢管理模塊設計
模塊編號:006
模塊名稱:信息查詢管理
模塊編寫者:
模塊功能概述:
爲銷售方管理員提供入庫信息查詢、入庫退貨查詢、銷售信息查詢以及銷售退貨查詢的功能。管理員可以根據自身的需要對各項功能信息進行查詢。
界面描述:
(1)管理員主界面
系統管理員登陸成功後首先進入管理員主界面,其主要包含上下兩個區域:上方包含管理員所有可以操作的功能模塊:基礎信息管理模塊、庫存管理模塊、圖書價格管理模塊以及信息查詢管理模塊;下方則是公共的工作區。系統默認工作區中顯示的模塊爲基礎信息管理模塊,管理員可以通過點擊上方的各個模塊進行功能切換,系統會在工作區中顯示出相應的操作選項。
選擇信息查詢管理模塊即可在主界面工作區域中顯示該管理界面。
(2)入庫信息查詢界面
本界面主要包含一個列表容器,所有的圖書入庫記錄會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示相關的信息(包括入庫單號,供應商,操作員以及時間等)。
(3)入庫退貨查詢界面
本界面主要包含一個列表容器,所有的入庫退貨記錄會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示相關的信息(包括退貨單號,供應商,操作員以及時間等)。
(4)銷售信息查詢界面
本界面主要包含一個列表容器,所有的圖書銷售記錄會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示相關的信息(包括銷售單號,購買者,圖書名稱,數量以及櫃檯信息等)。
(5)銷售退貨查詢界面
本界面主要包含一個列表容器,所有的銷售退貨記錄會以長條狀控件的形式在列表容器中顯示出來,並在控件上顯示相關的信息(包括零售退貨單號,圖書名稱,退貨數量以及時間等)。
6. 數據庫設計
6.1 對象關係圖
經過對系統中涉及的實體和關係進行分析,用Visio畫出實體的對象 - 關係圖,如圖1所示。
圖 1 實體的對象 - 關係圖
6.2 基本表設計
根據圖1得到的對象 - 關係圖,結合本系統的實際,設計基本表如下:
圖書登記信息表(tb_bookinfo):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
bookname |
Varchar(30) |
Not null |
圖書名稱 |
bookcode |
Varchar(30) |
Not null |
圖書編號(主鍵PK) |
author |
Varchar(30) |
Not null |
作者 |
bookconcern |
Varchar(30) |
Not null |
出版社 |
price |
Money |
Not null |
圖書登記價格 |
kind |
Varchar(30) |
Not null |
圖書種類(外鍵FK) |
圖書種類表(tb_bookkinds):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
bookkind |
Varchar(30) |
Not null |
圖書種類(主鍵PK) |
圖書倉庫表(tb_bookstorage):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
bookcode |
Varchar(30) |
Not null |
倉庫存放的圖書編號(PK,FK) |
storagename |
Varchar(30) |
Not null |
倉庫名稱(PK,FK) |
booknum |
float |
Not null |
倉庫存放該圖書的數目 |
Flag |
Int |
Not null |
圖書定價標記(已經定價爲1,未定價爲0) |
sellprice |
Money |
Default 0 |
銷售價格 |
倉庫退貨主表(tb_cancelinstock):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
CancelID |
Varchar(30) |
Not null |
退貨單號(PK) |
provider |
Varchar(50) |
Not null |
供應商名稱 |
operator |
Varchar(30) |
Not null |
操作員 |
intime |
Datetime |
Not null |
時間 |
unitPrice |
Money |
Not null |
圖書入庫單價 |
numbers |
float |
Not null |
退貨數 |
bookname |
Varchar(30) |
Not null |
圖書名稱 |
零售退貨主表(tb_cancelsell):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
SellCancelID |
Varchar(30) |
Not null |
零售退貨單號(PK) |
username |
Varchar(30) |
Not null |
顧客(用戶)名稱 |
intime |
Datetime |
Not null |
退貨時間 |
counter |
Varchar(30) |
Not null |
銷售櫃檯 |
sellPrice |
Money |
Not null |
購買時的價格 |
numbers |
Int |
Not null |
退貨數 |
bookname |
Varchar(30) |
Not null |
圖書名稱 |
用戶信息表(tb_user):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
username |
Varchar(30) |
Not null |
用戶名(PK) |
password |
Varchar(50) |
Not null |
用戶密碼 |
level |
int |
Not null |
用戶等級 |
rebate |
Float |
Not null |
對應等級享受的折扣 |
用戶購買表(tb_userbook):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
username |
Varchar(30) |
Not null |
用戶名 |
bookname |
Varchar(30) |
Not null |
圖書名稱(PK) |
Number |
Varchar(30) |
Null |
購買數量 |
counter |
Varchar(30) |
Not null |
櫃檯名稱 |
sellprice |
Money |
Nul null |
銷售價格 |
intime |
Datetime |
Not null |
購買時間(PK) |
櫃檯圖書表(tb_counterbook):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
counter |
Varchar(30) |
Not null |
櫃檯名稱(PK,FK) |
booknum |
int |
Not null |
櫃檯該種圖書的數目 |
bookname |
Varchar(30) |
Not null |
圖書名稱 |
sellprice |
Money |
Not null |
銷售價格 |
櫃檯信息表(tb_counterinfo):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
counter |
Varchar(30) |
Not null |
櫃檯名稱(PK) |
圖書入庫表(tb_instock):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
instockID |
Varchar(30) |
Not null |
入庫單號(FK) |
bookname |
Varchar(30) |
Not null |
圖書名稱 |
unitPrice |
Money |
Not null |
入庫單價 |
numbers |
float |
Not null |
入庫數目 |
storagename |
Varchar(30) |
Not null |
圖書要入到哪個倉庫 |
intime |
Datetime |
Not null |
時間 |
provider |
Varchar(50) |
Not null |
供應商 |
操作管理員信息表(tb_operator):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
name |
Varchar(30) |
Not null |
管理員名(PK) |
password |
Varchar(50) |
Not null |
密碼 |
level |
smalliant |
Not null |
權限等級 |
供應商信息表(tb_providerinfo):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
provider |
Varchar(50) |
Not null |
供應商名(PK) |
Principal |
Varcahr(10) |
null |
負責人 |
phone |
Varchar(30) |
Null |
電話 |
addr |
Varchar(50) |
Null |
地址 |
web |
Varchar(50) |
Null |
聯繫網址 |
e_mail |
Varchar(30) |
Null |
聯繫郵箱 |
圖書銷售表(tb_sell):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
SellID |
Varchar(30) |
Not null |
銷售單號(PK) |
username |
Varchar(30) |
Not null |
購買用戶名稱 |
rebate |
Float |
Not null |
折扣 |
sumtotal |
Money |
Not null |
購買總金額(購買數*購買單價*折扣) |
intime |
Datetime |
Not null |
購買時間 |
counter |
Varchar(30) |
Null |
在哪個櫃檯買的(FK) |
numbers |
flaoat |
Not null |
購買數 |
bookcode |
Varchar(30) |
Not null |
圖書編號(FK) |
倉庫信息表(tb_storageinfo):
字段名稱 |
字段類型 |
是否爲空 |
備註 |
storagename |
Varchar(30) |
Not null |
倉庫名稱(PK) |
7. 測試計劃
測試計劃作爲本系統的測試指導,主要用於幫助項目開發團隊的測試成員按計劃和規定進行測試。圖書銷售系統的測試將從單元測試、集成測試以及系統測試三方面來完成。
7.1 單元測試
圖書銷售系統個函數測試設計如表3所示。
表3 單元測試設計表
序號 |
測試函數名 |
函數功能 |
是否成功 |
是否更正 |
1 |
AddStorage |
爲系統添加一個倉庫對象,更新數據庫信息 |
|
|
2 |
Login |
根據用戶輸入的登錄信息進行身份驗證 |
|
|
3 |
DelBookKind |
刪除指定的圖書種類 |
|
|
4 |
InsertBook |
將圖書實例的內容添加到數據庫的tb_bookinfo表 |
|
|
5 |
UpdateBook |
將圖書實例中的內容更新到數據庫中的tb_bookinfo中bookcode與實例的bookcode相同的行 |
|
|
6 |
Sell |
通過將相應的圖書編號的銷售記錄更新到數據庫中對應的表中,記錄銷售信息 |
|
|
7.2 集成測試
圖書銷售系統的集成測試分爲界面切換正確性測試和界面之間傳遞參數正確性的測試。
圖書銷售系統各個界面切換的測試設計如表4所示。
表4 界面切換測試設計表
編號 |
切換鏈接名稱 |
所在界面 |
測試結果 |
測試人 |
測試時間 |
1 |
登入登出 |
客戶端登陸界面 |
|
|
|
2 |
基礎信息管理 |
管理員主界面 |
|
|
|
3 |
庫存管理 |
管理員主界面 |
|
|
|
4 |
圖書價格管理 |
管理員主界面 |
|
|
|
5 |
信息查詢管理 |
管理員主界面 |
|
|
|
6 |
圖書銷售管理 |
用戶操作主界面 |
|
|
|
圖書銷售系統界面之間參數傳遞的測試設計如表5所示。
表5 界面之間參數傳遞測試設計表
編號 |
參數傳遞鏈接 |
所在界面 |
預期結果 |
發現問題 |
測試人 |
測試時間 |
1 |
登入登出 |
客戶端登陸界面 |
登陸框中賬號密碼均爲空白 |
|
|
|
2 |
基礎信息管理 |
管理員主界面 |
工作區中默認的操作界面爲基礎信息管理界面 |
|
|
|
3 |
庫存管理 |
管理員主界面 |
工作區中默認的操作界面爲庫存管理管理界面 |
|
|
|
4 |
圖書價格管理 |
管理員主界面 |
工作區中默認的操作界面爲圖書價格管理界面 |
|
|
|
5 |
信息查詢管理 |
管理員主界面 |
工作區中默認的操作界面爲信息查詢管理界面 |
|
|
|
6 |
圖書銷售管理 |
用戶操作主界面 |
工作區中默認的操作界面爲圖書銷售管理界面 |
|
|
|
7.3 系統測試
限於篇幅,系統測試的設計此處略去不講,將會在軟件測試階段的文檔編寫中進行相應的說明。
8. 系統出錯處理設計
8.1 出錯信息
對用戶輸入的各項內容均進行有效性、安全性檢查,減少錯誤發生的機率。
對程序運行中的異常均進行捕獲,按同一方式將出錯提示信息提供給用戶。
當用戶訪問自身權限以外的信息時,將其導航到同一的出錯提示頁面給。
8.2 故障預防與補救
以統一的機制進行系統權限的控制。
對程序中用到的數據儘量進行加密,以減少黑客攻擊的危害。
定期對數據庫中的數據進行備份。
8.3 系統維護設計
編碼實現時應採用模塊化和分層思想,提高模塊內部的內聚性,減少模塊間的耦合性,是系統邏輯結構清晰,從而增強可讀性和可維護性。
面向數據與面向對象相結合,模塊劃分符合面向對象思想。
在編碼過程中注意標識符命名的意義,添加適量的註釋說明。
從項目確定開始就重視文檔的寫作,每一項工作都有文檔記錄,保證文檔和程序的一致性。