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 系統維護設計
編碼實作時應采用子產品化和分層思想,提高子產品内部的内聚性,減少子產品間的耦合性,是系統邏輯結構清晰,進而增強可讀性和可維護性。
面向資料與面向對象相結合,子產品劃分符合面向對象思想。
在編碼過程中注意辨別符命名的意義,添加适量的注釋說明。
從項目确定開始就重視文檔的寫作,每一項工作都有文檔記錄,保證文檔和程式的一緻性。