超市收銀系統(tǒng)設計說明書_第1頁
超市收銀系統(tǒng)設計說明書_第2頁
超市收銀系統(tǒng)設計說明書_第3頁
超市收銀系統(tǒng)設計說明書_第4頁
超市收銀系統(tǒng)設計說明書_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

年5月29日超市收銀系統(tǒng)設計說明書文檔僅供參考目錄TOC\o"1-3"\h\u13011可行性分析 1192261.1問題描述 1237161.2可行性研究的主要內(nèi)容 1285821.2.1技術可行性 1185371.2.2經(jīng)濟可行性 137671.2.3操作可行性 2307801.3結論意見 2153122項目開發(fā)計劃 341852.1編寫目的 356042.2項目背景 364002.3項目概述 3155822.4項目開發(fā)計劃 4205742.5交付期限 4175363需求分析 562463.1任務需求分析 559523.2系統(tǒng)流程圖 6186243.3系統(tǒng)構架圖 6115203.4數(shù)據(jù)流圖、數(shù)據(jù)字典及實體聯(lián)系圖 764143.4.1數(shù)據(jù)流圖 8311693.4.2數(shù)據(jù)字典 8314933.4.3實體聯(lián)系E-R圖 959694系統(tǒng)概要設計 129134.1總體設計 13222954.2系統(tǒng)功能模塊圖 1343194.3數(shù)據(jù)庫概念設計 1335894.4數(shù)據(jù)庫邏輯結構設計 14203845詳細設計 1760395.1系統(tǒng)的主要功能 18126815.2人機界面設計 1814375.2.1一般交互設計 18320825.2.2信息顯示設計 19279895.2.3數(shù)據(jù)輸入設計 19161555.3程序設計過程 20119765.3.1登陸界面 20276635.3.2后臺管理操作 24137056軟件測試 2906.1系統(tǒng)測試 03056746.1.1單元測試 31271566.1.2集成測試 3115126.2測試步驟 31273006.3測試數(shù)據(jù)的常見技術 32222676.3.1白盒測試技術 32145346.3.2黑盒測試技術 33316547設計總結 3392657.1心得與體會 3464637.2存在的問題及建議 3426487參考文獻 35

摘要隨著經(jīng)濟的發(fā)展,人們的生活越來越好。日常見品的種類越來越多,超市的規(guī)模也越來越大,超市收銀員的工作量也越來越大。為了適應超市規(guī)模的不斷變化,減輕收銀員的工作負擔,根據(jù)超市的實際需要設計了一個具有開放體系結構的、易擴充的、易維護的、具有良好人機交互界面的超市收銀系統(tǒng),為超市的決策者和管理者提供超市的各種數(shù)據(jù)信息、方便的查詢和高效便捷的管理。該超市收銀系統(tǒng)包括前臺操作和后臺數(shù)據(jù)庫,后臺數(shù)據(jù)庫包括入庫記錄、銷售記錄、商品信息、用戶信息和會員信息,前臺操作是收銀、查詢和修改商品信息。該系統(tǒng)采用C#實現(xiàn),系統(tǒng)開發(fā)工具是VS。關鍵詞:C#;VS;數(shù)據(jù)庫;超市收銀1可行性分析1.1問題描述本次課程設計實訓要求在計算機網(wǎng)絡,數(shù)據(jù)庫和先進的開發(fā)平臺上,利用現(xiàn)有的軟件,配置一定的硬件,分析和設計一個具有開放體系結構的、易擴充的、易維護的、具有良好人機交互界面的超市收銀系統(tǒng),為超市的決策者和管理者提供充分的信息、快捷的查詢和有效的管理方式,減少不必要的損失和浪費,提高超市管理的效率。1.2可行性研究的主要內(nèi)容可行性研究的目的,就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。可行性研究實質(zhì)上是要進行一次大大壓縮簡化了的系統(tǒng)分析和設計過程,也就是在較高層系上以較抽象的方式進行的系統(tǒng)分析和設計過程。在進行可行性研究時首先要進一步分析和澄清問題定義。在問題定義階段初步確定系統(tǒng)的規(guī)模和目標,如果正確就進一步加以肯定,如果有錯誤就應該及時改正,如果對目標約束和限制,必須把她們一一列出來。從系統(tǒng)邏輯模型出發(fā),探索若干種可供選擇的主要解法(即系統(tǒng)實現(xiàn)方案)。對于每種解法都應該仔細研究它的可行性,一般來說,至少應該從下述三個方面研究每種解法的可行性。1.2.1技術可行性技術可行性主要分析研究在現(xiàn)有技術條件的基礎上是否能夠?qū)崿F(xiàn)該系統(tǒng)。當前電腦在中國已經(jīng)得到普及,使用電腦的人數(shù)在快速增長。從事軟件設計的人員的技術能力有了很大提高,能夠?qū)崿F(xiàn)該系統(tǒng)。1.2.2經(jīng)濟可行性經(jīng)濟可行性主要研究該系統(tǒng)的經(jīng)濟效益能否超過它的開發(fā)成本。當前在中國,到超市進行購物的人流量是非常龐大的,由于超市提供的商品種類繁多,且大多是人們的日常必須品,因此人們對超市的依賴性非常強。在這樣的背景下,為超市設計這樣的一個系統(tǒng),其經(jīng)濟效益是十分可觀的。又由于經(jīng)過網(wǎng)絡傳遞銷售信息能夠不受距離的限制,因此能夠節(jié)省大量的人力和物力,方便管理,由此能夠減少不必要的開支,同時該系統(tǒng)能夠提高超市的銷售效率,即提高了超市的經(jīng)濟效益,因此從經(jīng)濟上完全是可行的。1.2.3操作可行性操作可行性主要研究系統(tǒng)的操作方式在該用戶組織內(nèi)是否可行。在當前的社會條件下,Internet網(wǎng)已經(jīng)在中國全面覆蓋,在中國各地,均能夠經(jīng)過硬件設備聯(lián)網(wǎng)。而且各商業(yè)組織也擁有屬于自己的內(nèi)部局域網(wǎng),因此該系統(tǒng)能夠?qū)崿F(xiàn)聯(lián)網(wǎng)。該系統(tǒng)在聯(lián)網(wǎng)情況下,能夠經(jīng)過PC機訪問系統(tǒng)的數(shù)據(jù)。因此該系統(tǒng)的操作方式符合該用戶組織。1.3結論意見經(jīng)過認真地研究,該系統(tǒng)完成了在技術可行性、經(jīng)濟可行性、操作可行性方面的可行性研究,該系統(tǒng)能夠開發(fā)實現(xiàn)。因此,相信全系統(tǒng)的設計將會按時、高質(zhì)量完成。因此,系統(tǒng)的設計開發(fā)是能夠馬上進行的。

2項目開發(fā)計劃2.1編寫目的經(jīng)過項目的可行性分析,得出項目可進一步進行下去的結論,在軟件繼續(xù)進一步的開發(fā)之前首先給出此軟件項目計劃。2.2項目背景項目分析單位在接到項目分析員給出的項目可行性分析報告后,在本系統(tǒng),即超市收銀系統(tǒng)開發(fā)主管部門的統(tǒng)一規(guī)劃下制定用于軟件實質(zhì)開發(fā)的軟件項目計劃,以使軟件開發(fā)單位理解軟件開發(fā)要求,進行開發(fā)。2.3項目概述超市收銀系統(tǒng)主要功能包括:后臺管理和前臺操作,其中:后臺管理主要包括:進貨管理、銷售管理、庫存管理、相關業(yè)務的查詢和系統(tǒng)維護等;進貨管理:在數(shù)據(jù)庫中存儲有各種商品的供應商信息,當需要進貨時,能夠與供應商聯(lián)系,同時數(shù)據(jù)庫中會存儲各種商品的每一次進貨信息,并保持數(shù)據(jù)的時效性和完整性。銷售管理主要包括:隨時錄入賣出商品信息,如名稱,數(shù)量,單價等,及時更新數(shù)據(jù)庫數(shù)據(jù)。貨架上商品賣到一定數(shù)量時,實時生成提貨報告,并提供商品的庫存信息,剩余信息。庫存管理主要包括:生成庫存報告、生成缺貨報告、錄入更新數(shù)據(jù)。在需要時(可每隔一個時間段查詢一次)生成商品庫存情況報告,實時報告商品庫存情況,如庫存量不足(小于某一自定的數(shù)量)時,可生成缺貨報告,并提供商品種類,來源等商品屬性信息,方便采購人員進行商品采購。采購員采購商品后,及時錄入商品信息等數(shù)據(jù),在數(shù)據(jù)庫中進行數(shù)據(jù)更新。前臺操作主要包括:前臺收銀員權限嚴格控制,支持斷網(wǎng)銷售、連網(wǎng)銷售兩種模式,預留對條碼掃描、票據(jù)打印機、顧顯、錢箱、磁卡刷卡機、IC卡讀寫器、條碼打印機、盤點機等POS外設的支持,可直接修改銷售數(shù)量、單價、折扣等(權限控制),支持贈送(權限控制),會員卡、儲值卡消費,收款抹零(權限控制),掛單/取單,前臺查詢商品、庫存,刪單、刪行、查單(權限控制),特殊操作記錄(防止前臺作弊),支持電子稱散裝商品銷售,前臺支持業(yè)務員錄入計提,商品促銷銷售(按時間段),會員價、儲值卡價銷售,支持無庫存商品銷售,銷售小票格式自定義(標題、腳注、明細格式等)。2.4項目開發(fā)計劃1任務分解分三個大的階段進行開發(fā)第一階段完成本系統(tǒng)的數(shù)據(jù)流圖跟E-R圖。第二階段完成概要設計跟詳細設計。第三階段書寫文檔。2關鍵問題各模塊之間的聯(lián)系和后臺數(shù)據(jù)庫的完成。使用當前的設備與現(xiàn)有開發(fā)技術完全能夠開發(fā)出該系統(tǒng),總的來說該項目沒有較大的技術難點與其它的一些風險因素。對于出現(xiàn)的一些小難點總都能得到解決。2.5交付期限本系統(tǒng)的開發(fā)時限為兩個星期,該系統(tǒng)的交付期限為7月3日。

3需求分析3.1任務需求分析前臺操作包括:商品錄入:根據(jù)超巿業(yè)務特點制定相關功能,能夠經(jīng)過輸入唯一編號、掃描條形碼、商品名稱等來實現(xiàn)精確的商品掃描錄入。該掃描錄入方法能夠充分保證各種電腦操作水平層次的人員均能準確快速地進行商品掃描錄入。收銀業(yè)務:經(jīng)過掃描條形碼或者直接輸入商品名稱(對于同類多件商品采用一次錄入加數(shù)量的方式)自動計算本次交易的總金額。在顧客付款后,自動計算找零,同時打印交易清單(包括交易的流水賬號、每類商品的商品名、數(shù)量、該類商品的總金額、交易的時間、負責本次收銀的員工號)。如果顧客是本店會員并持有本人會員卡,則在交易前先掃描會員卡,并對所購物品全部實行95折優(yōu)惠,并將所購物品的總金額累計到該會員的總消費金額中。會員卡的有效期限為一年,滿一年未續(xù)卡者,該會員卡將被注銷。后臺管理操作:進貨管理:根據(jù)銷售情況及庫存情況,自動制定進貨計劃(亦可手工制定修改),能夠避免盲目進貨造成商品積壓。按計劃單有選擇性地進行自動入庫登記。綜合查詢打印計劃進貨與入庫記錄及金額。銷售管理:商品正常銷售、促銷與限量、限期及禁止銷售控制。綜合查詢各種銷售明細記錄、各地收銀員收銀記錄以及交結賬情況等。按多種方式統(tǒng)計生成銷售排行榜,靈活察看和打印商品銷售日、月、年報表。庫存管理:綜合查詢庫存明細記錄。庫存狀態(tài)自動告警提示。如庫存過剩、少貨、缺貨等。軟件為您預警,避免庫存商品積壓損失和缺貨。庫存自動盤點計算。人員管理:員工、會員、供貨商、廠商等基本信息登記管理。員工操作權限權利、客戶銷售權限管理。

3.2系統(tǒng)流程圖商品庫存程序收銀員收銀商品銷售程序進貨報告生成程序商品庫存信息文件進貨報告輸入購物信息顯示銷售信息顯示訂貨信息圖3.1系統(tǒng)流程圖

3.3系統(tǒng)構架圖商品庫存程序收銀員收銀商品銷售程序進貨報告生成程序商品庫存信息文件進貨報告輸入購物信息顯示銷售信息顯示訂貨信息圖3.1系統(tǒng)流程圖收銀收銀POS機查詢數(shù)據(jù)/員工管理PC機打印機稱裝電子秤管理商品信息PC機SQlServer服務器進貨PC機超市前臺管理者超市前臺管理者SQlServerSQlServer服務器進貨PC機圖3.2系統(tǒng)構架圖超市工作人員前臺收銀員管理部門進貨部門數(shù)據(jù)庫服務器進貨PC機

3.4數(shù)據(jù)流圖、數(shù)據(jù)字典及實體聯(lián)系圖進貨PC機圖3.2系統(tǒng)構架圖超市工作人員前臺收銀員管理部門進貨部門數(shù)據(jù)庫服務器進貨PC機3.4.1數(shù)據(jù)流圖產(chǎn)生銷售記錄產(chǎn)生銷售記錄產(chǎn)生進貨單倉庫管理員收銀員更新庫存信息進貨員前臺經(jīng)理更新商品信息D1商品信息表D1商品信息表D3銷售記錄銷售信息銷售信息銷售信息事務庫存信息進貨信息D2進貨信息進貨單圖3.3數(shù)據(jù)流圖商品信息商品信息事務D4商品信息表

3.4.2數(shù)據(jù)字典D3銷售記錄銷售信息銷售信息銷售信息事務庫存信息進貨信息D2進貨信息進貨單圖3.3數(shù)據(jù)流圖商品信息商品信息事務D4商品信息表數(shù)據(jù)字典是關于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合。數(shù)據(jù)字典的作用是在軟件分析和設計的過程中給人提供關于數(shù)據(jù)的描述信息。名稱:銷售名稱:銷售清單別名:銷售報表描述:對超市商品銷售情況的描述定義:貨物編號+名稱+銷售日期+數(shù)量+售價位置:輸出到打印機保存到磁盤名稱:商品信息別名:商品單描述:超市銷售商品的信息定義:商品編號+類型編號+商品名稱+庫存量+售價+報警值+商品規(guī)格+計量單位位置:輸出到打印機保存到磁盤名稱:用戶信息別名:描述:該系統(tǒng)的使用者的信息定義:用戶編號+姓名+密碼+權限位置:輸出到打印機保存到磁盤名稱:入庫記錄別名:進貨報表描述:每次進貨的貨物描述定義:入庫編號+貨物編號+供應商編號+操作員+進價+數(shù)量名稱:用戶信息別名:描述:該系統(tǒng)的使用者的信息定義:用戶編號+姓名+密碼+權限位置:輸出到打印機保存到磁盤名稱:入庫記錄別名:進貨報表描述:每次進貨的貨物描述定義:入庫編號+貨物編號+供應商編號+操作員+進價+數(shù)量位置:輸出到打印機保存到磁盤名稱:會員信息信息表別名:商品編號描述:該超市所屬會員的信息定義:會員編號+會員名+會員積分+會員等級+會員電話+會員起始日期位置:輸出到打印機保存到磁盤名稱:供應商信息別名:供應商描述:和超市合作的供應商的信息定義:供應商編號+名稱+聯(lián)系人+地址+聯(lián)系電話+傳真+合作起始時間位置:輸出到打印機保存到磁盤入庫記錄銷售記錄入庫記錄銷售記錄供應商商品編號商品名稱庫存量計量單位報警值商品規(guī)格類別編號名稱電話聯(lián)系人供應地址商品名稱數(shù)量售價總金額進價商品名稱商品數(shù)量供應商編號進貨銷售供應商編號合作時間傳真入庫編號商品編號售價11111圖3.4部分實體聯(lián)系(E-R)圖nn商品

1111圖3.4部分實體聯(lián)系(E-R)圖nn商品用戶用戶用戶用戶編號密碼用戶名權限會員用戶會員編號會員名會員積分會員等級電話會員起始日期圖3.6會員實體E—R圖圖3.5用戶實體E—R圖

4系統(tǒng)概要設計會員用戶會員編號會員名會員積分會員等級電話會員起始日期圖3.6會員實體E—R圖圖3.5用戶實體E—R圖4.1總體設計經(jīng)過需求分析階段的工作,系統(tǒng)必須”做什么”已經(jīng)清楚了,現(xiàn)在是決定”怎樣做”的時候了??傮w設計的基本目標就是回答”概括地說,系統(tǒng)應該如何實現(xiàn)”的問題。因此總體設計又稱為概要設計。經(jīng)過這個階段的工作將劃分出組成系統(tǒng)的物理元素—程序、文件、數(shù)據(jù)庫、人工過程和文檔等。總體設計的另一項任務是設計軟件的結構,也就是要確定系統(tǒng)中的每個程序是由那些模塊組成的,以及這些模塊相互間的關系。4.2系統(tǒng)功能模塊圖超市收銀系統(tǒng)超市收銀系統(tǒng)查詢修改商品信息收銀進貨管理銷售管理庫存管理前臺操作后臺數(shù)據(jù)庫營業(yè)統(tǒng)計會員信息管理圖4.1系統(tǒng)功能模塊圖

4.3數(shù)據(jù)庫概念設計數(shù)據(jù)庫一般分為三級模式:外模式、模式和內(nèi)模式。外模式也就是不同用戶所正確數(shù)據(jù)視圖,它將數(shù)據(jù)庫內(nèi)部抽象的數(shù)據(jù)及其互相之間的關系表示為簡單、直觀的應用界面。模式是數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結構和特征描述,一般以某種數(shù)據(jù)模型為基礎。內(nèi)模式是對數(shù)據(jù)的物理結構和存儲方式的描述。在該系統(tǒng)中具體的模式有:商品(商品編號,類型編號,商品名稱,規(guī)格,計量單位,售價,庫存量,報警值)用戶(用戶編號,用戶名,密碼,權限)入庫記錄(入庫編號,商品編號,供應商編號,聯(lián)系人,進價,數(shù)量)銷售記錄(商品編號,售價,銷售數(shù)量,總金額)供應商(供應商編號,供應商名稱,聯(lián)系人,供應商電話,傳真,地址,合作時間)會員(會員編號,會員名,會員積分,會員等級,電話,會員起始日期)4.4數(shù)據(jù)庫邏輯結構設計在數(shù)據(jù)庫設計中相當重要的一步就是將概念模型轉(zhuǎn)化為計算機上DBMS所支持的數(shù)據(jù)模型,例如,將E-R圖轉(zhuǎn)化為關系模型,我們設計概念模型基本上都是一些抽象的關系,再在數(shù)據(jù)庫設計的實現(xiàn)過程中,在計算機上有效地表示出這些關系就成了數(shù)據(jù)庫設計的關鍵。根據(jù)超市收銀系統(tǒng)的功能要求,選取MySQL作為后臺數(shù)據(jù)庫。在上面的實體和實體之間的E-R圖設計基礎上,形成數(shù)據(jù)庫中的表格及表格之間的關系。該數(shù)據(jù)庫包括系統(tǒng)登錄用戶的基本信息保存在用戶信息表里,其中對于用戶編號,經(jīng)過自增方式實現(xiàn),無需用戶手動編號,編號從1000起始。具體內(nèi)容如下表所示:

用戶信息表包括:用戶編號、用戶名、密碼和用戶權限,具體如下:表4.1用戶信息表屬性名字段名類型長度Null備注編號UserIDInt20否主鍵姓名UserNamevarchar50否密碼UserPasswordvarchar50否權限UserRightvarchar50否會員信息表包括了在該超市申請會員的消費者的信息,會員信息表包括:會員編號、會員名、積分、權限、聯(lián)系電話和會員起始日期,具體內(nèi)容如下:表4.2會員信息表屬性名字段名類型長度Null備注會員編號VipIdInt20否主鍵會員姓名VipNamevarchar50否積分VipScorevarchar50否等級VipRankvarchar50否電話VipNumbervarchar50否成為會員時間VipDatavarchar50否銷售信息表包括:商品編號、售價、數(shù)量、總金額以及備注,具體內(nèi)容如下:屬性名字段名類型長度Null備注商品編號GoodsIdInt20否主鍵單價SellPricevarchar50否數(shù)量GoodsNumvarchar50否總價zongsellvarchar50否備注Remarkvarchar50否銷售時間DataTimevarchar50否表4.3銷售信息表商品信息表包括:商品編號、商品名稱、商品類型、計量單位、規(guī)格、售價、庫存量、報警值和備注,具體內(nèi)容如下表:表4.4商品信息表屬性名字段名類型長度Null備注商品編號GoodsIdInt20否主鍵類型號TypeIdvarchar50否商品名稱GoodsNamevarchar50否計量單位GoodsUnitvarchar50是規(guī)格GoodsNormvarchar50否售價GoodsSellpricevarchar50否庫存量GoodsNumvarchar50否報警值AlarmNumvarchar50否備注GoodsRemardkvarchar50是入庫記錄表包括:入庫編號、商品編號、供應商編號、聯(lián)系人、進價、數(shù)量以及備注,具體內(nèi)容如下:表4.5入庫記錄表屬性名字段名類型長度Null備注入庫編號StockIdInt20否主鍵商品編號GoodsIdvarchar50否外鍵供應商編號CompanyIdvarchar50否操作員Operatorvarchar50否進價GoodsPricevarchar50否入庫時間DataTimevarchar50否數(shù)量GoodsNumvarchar50否備注Remarkvarchar50是供應商信息表包括:供應商編號、供應商名稱、聯(lián)系人、電話、傳真、地址、合作起始時間,具體內(nèi)容如下表:表4.6供應商信息表屬性名字段名類型長度Null備注供應商編號CompanyIdInt20否主鍵供應商名稱CompanyNamevarchar50否聯(lián)系人CompanyDirectorvarchar50否電話CompanyPhonevarchar50否傳真CompanyFaxvarchar50否地址CompanyAddvarchar50否合作時間HzDataTimevarchar50否

5詳細設計詳細設計階段的根本目標是確定應該如何具體地實現(xiàn)所要求的系統(tǒng),包括用戶界面設計、程序過程設計等步驟。也就是說,經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段能夠把這個描述直接翻譯成某種設計語言書寫的程序。詳細設計階段的任務不是具體的編寫程序,而是要設計出程序的”藍圖”,以后程序員將根據(jù)這個”藍圖”寫出實際的程序代碼。5.1系統(tǒng)的主要功能該系統(tǒng)采用C/S結構,超市收銀系統(tǒng)的主要功能包括:后臺管理和前臺操作。前臺的主要功能是:(1)記錄超市前臺收銀員的收銀信息;(2)查詢、修改商品信息;后臺的主要功能是:(1)記錄商品的入庫記錄;(2)管理商品的庫存、價格等具體信息(3)記錄商品的銷售記錄;(4)管理超市會員的會員信息;(5)管理登陸用戶的信息。5.2人機界面設計5.2.1一般交互設計一般交互設計涉及信息顯示、數(shù)據(jù)輸入和系統(tǒng)整體控制。保持一致性。為客戶交互界面中的菜單選擇、命令輸入、數(shù)據(jù)顯示以及眾多的其它功能,使用一致的格式。提供信息的反饋。向用戶及時提供視覺和聽覺的信息反饋,以保證在用戶和系統(tǒng)之間及時地建立雙向通信。在本系統(tǒng)設計過程中,基本做到了信息的及時反饋,當用戶操作完一步后系統(tǒng)會對數(shù)據(jù)庫中的數(shù)據(jù)進行及時地顯示。執(zhí)行有較大影響的操作前提示用戶確認。在設計過程中,如果用戶要執(zhí)行刪除操作,以及對數(shù)據(jù)庫的讀寫操作時,都會有窗體彈出詢問繼續(xù)操作或者予以提示。減少兩次操作間需要記憶的內(nèi)容。為了避免用戶為下一步操作而記憶大量數(shù)據(jù),因此在設計過程中在需要數(shù)據(jù)傳遞的窗體中設置全局變量,來傳遞數(shù)據(jù)。提高對話、移動和思考的效率。盡量減少用戶擊鍵的次數(shù),在設計時考慮用戶屏幕的布局以減少用戶鼠標移動的距離,盡量避免用戶在操作中發(fā)生疑問的情況。允許犯錯誤。允許用戶的誤操作盡量不對系統(tǒng)造成傷害。按功能對動作分類,并據(jù)此設計屏幕布局。屏幕布局盡量將軟件所具有的所有功能在主頁面展示,界面一目了然。5.2.2信息顯示設計系統(tǒng)在顯示用戶所需要的信息時應該盡量完整、清晰和易于理解。這樣才能滿足用戶的需求。使用不同的方式顯示信息:用文字、圖形、聲音,按位置、移動和大小,使用顏色和省略等方式傳達信息。只顯示與當前工作有關的信息。在用戶操作有關系統(tǒng)的特定功能的信息時,不必看到與之無關的數(shù)據(jù)、菜單和圖形。使用便于用戶迅速吸收數(shù)據(jù)的方式來表示數(shù)據(jù)。使用一致的標記、標準的縮寫和可預知的顏色。顯示的含義應該非常準確,用戶無須參照其它信息源就能理解。產(chǎn)生有意義的錯誤信息。對于系統(tǒng)在運行過程中產(chǎn)生的錯誤盡量給用戶返回一個容易理解的錯誤信息,以使用戶保持對系統(tǒng)的信任,和系統(tǒng)的可用性。使用窗口分隔不同類型的信息。使用不同的窗口顯示、保存不同類型的信息。高效率的使用顯示屏。當使用多窗口時,應該有足夠的空間使得每個窗口至少都能顯示出一部分。5.2.3數(shù)據(jù)輸入設計用戶的大部分時間用在選擇菜單命令、鍵入數(shù)據(jù)和向系統(tǒng)提供輸入。在系統(tǒng)中,鍵盤是主要的輸入介質(zhì),可是鼠標等設備的也是重要的輸入手段,因此,對于她們的數(shù)據(jù)輸入操作有如下約定:盡量減少用戶的輸入動作。為了方便用戶的使用,鼠標應當盡量減少操作的幅度。保持顯示信息和輸入信息之間的一致性。對于用戶來說,要保證其輸入的數(shù)據(jù)在顯示上與其它顯示的視覺特征(例如:文字大小、顏色、位置等)要一致。允許用戶自定義輸入。用戶可能希望定義自己專用的命令或略去某些類型的警告信息和動作確認,人機界面應該為用戶提供這樣做的機制。交互應該是靈活的,而且可調(diào)整成用戶最喜歡的輸入方式。用戶類型與喜歡的輸入方式有關,不同的用戶喜歡不同的輸入方式。使用當前動作語境中不適用的命令不起作用。這可使得用戶不去做那些肯定會導致錯誤的動作。讓用戶控制交互流。用戶應該能跳過不必要的動作,改變所需做的動作的順序,以及在不退出程序的情況下從錯誤狀態(tài)中恢復正常。消除冗余的輸入。除非可能發(fā)生誤解,否則不要要求用戶指定輸入數(shù)據(jù)的單位;盡可能提供默認值,絕對不要要求用戶提供程序能夠自動獲得或計算出來的信息。對于不同類型的用戶在登錄到系統(tǒng)后,由于有不同的權限,因此在主界面中會有一些項目受到限制而無法使用,因此要使這些項目不發(fā)生作用,以保證系統(tǒng)安全。5.3程序設計過程程序過程設計主要是在借助過程設計工具的情況下,對程序的具體實現(xiàn)過程進行設計。程序的主要部分設計在這個環(huán)節(jié)完成。在這個任務說明書中我們采用盒圖的形式來表示程序的具體的設計過程,我們的系統(tǒng)設計為C/S結構,因此是客戶端登陸系統(tǒng)的形式,盒圖沒有箭頭,因此不允許隨意轉(zhuǎn)移控制,堅持使用盒圖能夠使程序員養(yǎng)成用用結構化的方式來思考問題。5.3.1登陸界面在用戶登錄時,在輸入用戶名和密碼及用戶類型的前提下將其與數(shù)據(jù)庫中的數(shù)據(jù)進行比對,若一致,則打開主窗體;若不一致提示錯誤,并要求重新輸入。注冊后保存用戶信息,登陸界面的的程序盒圖如圖5.1所示://登陸界面的程序代碼privatevoidbutton1_Click(objectsender,EventArgse){stringMyConnectionString="Server=localhost;Database=chaoshi;Uid=root;Pwd=123456;PersistSecurityInfo=True;Charset=utf8;";stringusername=tbxUsr.Text.Trim();stringpasswd=tbxPwr.Text.Trim();stringrol=comboBox1.Text.Trim();stringloginsql="SELECT*FROMuserWhereUserID='"+username+"'andUserPassword='"+passwd+"'andUserRight='"+rol+"'";MySqlConnectionconnection=newMySqlConnection(MyConnectionString);connection.Open();MySqlCommandmycmd=newMySqlCommand(loginsql,connection);MySqlDataReadermyread=mycmd.ExecuteReader();try{if(myread.HasRows){if(myread.Read()){//MessageBox.Show("登錄成功");if(myread["UserID"].ToString()==tbxUsr.Text&&myread["UserPassword"].ToString()==tbxPwr.Text&&myread["UserRight"].ToString()=="管理員"){user=username;Form8f3;f3=newForm8();f3.Show();}elseif(myread["UserID"].ToString()==tbxUsr.Text&&myread["UserPassword"].ToString()==tbxPwr.Text&&myread["UserRight"].ToString()=="員工"){user=username;Form2f2;f2=newForm2();f2.Show();}}}else{MessageBox.Show("Pleaseenterthecorrectusernameandpassword!!!");}}catch(Exceptionex){MessageBox.Show(string.Format("出錯,出錯原因{0}"),ex.Message);}finally{connection.Close();connection.Dispose();mycmd.Dispose();}}privatevoidbutton2_Click(objectsender,EventArgse){this.Close();}privatevoidtextBox1_TextChanged(objectsender,EventArgse){}privatevoidForm1_Load(objectsender,EventArgse){}}}

連接數(shù)據(jù)庫連接數(shù)據(jù)庫否是用戶名和密碼輸入否是用戶名和密碼輸入提示輸入否是賬戶是否存在提示輸入否是賬戶是否存在提示錯誤提示錯誤顯示提示框顯示提示框”登錄成功”圖5.1登陸界面程序盒圖圖5.1登陸界面程序盒圖5.3.2后臺管理操作對于系統(tǒng)的各項信息的管理屬于后臺管理,管理程序盒圖如圖5.2所示:privatevoidbutton2_Click_1(objectsender,EventArgse){stringspbh=textBox2.Text.Trim();stringlx=textBox3.Text.Trim();stringmc=textBox4.Text.Trim();stringjldw=textBox5.Text.Trim();stringgg=textBox6.Text.Trim();stringsj=textBox7.Text.Trim();stringkcl=textBox9.Text.Trim();stringbjz=textBox10.Text.Trim();stringbz=textBox11.Text.Trim();MySqlParameter[]sp=newMySqlParameter[9];sp[0]=newMySqlParameter("@spbh",MySqlDbType.VarChar);sp[0].Value=spbh;sp[1]=newMySqlParameter("@lx",MySqlDbType.VarChar);sp[1].Value=lx;sp[2]=newMySqlParameter("@mc",MySqlDbType.VarChar);sp[2].Value=mc;sp[3]=newMySqlParameter("@jldw",MySqlDbType.VarChar);sp[3].Value=jldw;sp[4]=newMySqlParameter("@gg",MySqlDbType.VarChar);sp[4].Value=gg;sp[5]=newMySqlParameter("@sj",MySqlDbType.VarChar);sp[5].Value=sj;sp[6]=newMySqlParameter("@kcl",MySqlDbType.VarChar);sp[6].Value=kcl;sp[7]=newMySqlParameter("@bjz",MySqlDbType.VarChar);sp[7].Value=bjz;sp[8]=newMySqlParameter("@bz",MySqlDbType.VarChar);sp[8].Value=bz;using(MySqlConnectionconnection=newMySqlConnection(MyConnectionString)){try{connection.Open();stringsql="updategoodsinfosetGoodsId=@spbh,TypeId=@lx,GoodsName=@mc,GoodsUnit=@jldw,GoodsNorm=@gg,GoodsSellprice=@sj,GoodsNum=@kcl,AlarmNum=@bjz,GoodsRemardk=@bzwhereGoodsId=@spbh";MySqlCommandcmd=newMySqlCommand();cmd.Connection=connection;cmd.CommandText=sql;cmd.CommandType=CommandType.Text;cmd.Parameters.AddRange(sp);cmd.ExecuteNonQuery();MessageBox.Show("修改成功");}catch(Exceptionex){MessageBox.Show(string.Format("出錯,出錯原因{0}"),ex.Message);}}}privatevoidbutton4_Click(objectsender,EventArgse){stringGoodsId=textBox2.Text.Trim();stringTypeId=textBox3.Text.Trim();stringGoodsName=textBox4.Text.Trim();stringGoodsUnit=textBox5.Text.Trim();stringGoodsNorm=textBox6.Text.Trim();stringGoodsSellprice=textBox7.Text.Trim();stringGoodsNum=textBox9.Text.Trim();stringAlarmNum=textBox10.Text.Trim();stringGoodsRemardk=textBox11.Text.Trim();MySqlParameter[]sp=newMySqlParameter[9];sp[0]=newMySqlParameter("@ab",MySqlDbType.VarChar);sp[0].Value=GoodsId;sp[1]=newMySqlParameter("@ac",MySqlDbType.VarChar);sp[1].Value=TypeId;sp[2]=newMySqlParameter("@ad",MySqlDbType.VarChar);sp[2].Value=GoodsName;sp[3]=newMySqlParameter("@ae",MySqlDbType.VarChar);sp[3].Value=GoodsUnit;sp[4]=newMySqlParameter("@aa",MySqlDbType.VarChar);sp[4].Value=GoodsNorm;sp[5]=newMySqlParameter("@bb",MySqlDbType.VarChar);sp[5].Value=GoodsSellprice;sp[6]=newMySqlParameter("@vv",MySqlDbType.VarChar);sp[6].Value=GoodsNum;sp[7]=newMySqlParameter("@dd",MySqlDbType.VarChar);sp[7].Value=AlarmNum;sp[8]=newMySqlParameter("@gg",MySqlDbType.VarChar);sp[8].Value=GoodsRemardk;using(MySqlConnectionconnection=newMySqlConnection(MyConnectionString)){try{connection.Open();stringsql="insertintogoodsinfo(GoodsId,TypeId,GoodsName,GoodsUnit,GoodsNorm,GoodsSellprice,GoodsNum,AlarmNum,GoodsRemardk)values(@ab,@ac,@ad,@ae,@aa,@bb,@vv,@dd,@gg)";MySqlCommandcmd=newMySqlCommand();cmd.Connection=connection;cmd.CommandText=sql;cmd.CommandType=CommandType.Text;cmd.Parameters.AddRange(sp);cmd.ExecuteNonQuery();MessageBox.Show("增加成功");}catch(Exceptionex){MessageBox.Show(ex.ToString());}}}privatevoidbutton5_Click(objectsender,EventArgse){stringGoodsId;GoodsId=textBox2.Text.Trim();MySqlParameter[]sp=newMySqlParameter[1];sp[0]=newMySqlParameter("@aaa",MySqlDbType.VarChar);sp[0].Value=GoodsId;using(MySqlConnectionconnection=newMySqlConnection(MyConnectionString)){try{connection.Open();stringsql="deletefromgoodsinfowhereGoodsId=@aaa";MySqlCommandcmd=newMySqlCommand();cmd.Connection=connection;cmd.CommandText=sql;cmd.CommandType=CommandType.Text;cmd.Parameters.AddRange(sp);cmd.ExecuteNonQuery();MessageBox.Show("刪除成功");}catch(Exceptionex){MessageBox.Show(string.Format("出錯,出錯原因{0}"),ex.Message);}}}否否是是否進行操作圖5.2后臺管理操作程序盒圖重新操作保存信息是操作是否成功否否是否選中數(shù)據(jù)進行操作是管理后臺信息

6軟件測試測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行的程序。好的測試方案是極有可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案,成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。為了能設計出有效的測試方案,軟件工程師必須深入理解并正確運用軟件測試的基本準則:所有測試都應該能追溯到用戶需求。從用戶角度看,最嚴重的錯誤是導致程序不能滿足用戶需求的哪些錯誤。應該預案在測試開始之前就制定出測試計劃。實際上,一旦完成了需求模型就能夠著手制定測試計劃,在建立了設計模型之后就能夠立即開始詳細設計的測試方案。把pareto原理應用到軟件測試中。Pareto原理說明,測試發(fā)現(xiàn)的錯誤當中的80%很可能是由程序中20%的模塊造成的。完全測試是不可能的,測試需要終止。測試無法顯示軟件潛在的缺陷,”測試只能證明軟件存在錯誤而不能證明軟件沒有錯誤”。最初的測試一般把焦點放在單個程序模塊上,進一步測試的焦點則轉(zhuǎn)向在集成的模塊簇中尋找錯誤,最后在整個系統(tǒng)中尋找錯誤。在測試中不可能運行路徑的每一種組合。然而,充分覆蓋程序邏輯,并確保程序設計中使用的所有條件是有可能的。應由獨立的第三方來構造測試。第三方測試最大的特點在于它的專業(yè)性、獨立性、客觀性和公正性。對于軟件開發(fā)商來說,經(jīng)過第三方測試機構的測試,不但能夠經(jīng)過專業(yè)化的測試手段發(fā)現(xiàn)軟件錯誤,幫助開發(fā)商提升軟件的品質(zhì),而且能夠?qū)浖幸粋€客觀、科學的評價,有助于開發(fā)商認清自己產(chǎn)品的定位。對于行業(yè)主管部門以及軟件使用者來說,由于第三方測試機構獨立公正的地位,能夠?qū)Ρ粶y試的軟件有一個客觀公正的評價,幫助用戶選擇合適、優(yōu)秀的軟件產(chǎn)品。充分注意測試中的群集現(xiàn)象。測試后程序殘存的錯誤數(shù)目與該程序中已發(fā)現(xiàn)的錯誤數(shù)目或檢錯率成正比。不要在某個程序段中找到幾個錯誤就誤認為該程序段就沒有錯誤而不再測試,相反應該對錯誤群集的程序段進行重點測試。6.1系統(tǒng)測試6.1.1單元測試單元測試是指對軟件中的最小可測試單元進行檢查和驗證。對于單元測試中單元的含義,一般來說,要根據(jù)實際情況去判定其具體含義,如C語言中單元指一個函數(shù),Java里單元指一個類,圖形化的軟件中能夠指一個窗口或一個菜單等??偟膩碚f,單元就是人為規(guī)定的最小的被測功能模塊。單元測試主要使用白盒測試技術,而且對多個模塊的測試能夠并行地進行。6.1.2集成測試集成測試是測試和組裝軟件的系統(tǒng)化技術,主要目標是發(fā)現(xiàn)與接口有關的問題。由模塊組裝成程序時有兩種辦法。一種方法是先分別測試每個模塊,再把所有模塊按設計要求放在一起結合成所要的程序,這種方法稱為非漸增式測試方法;另一種方法是把下一個要測試的模塊同已經(jīng)測試好的那些模塊結合起來進行測試,測試完以后再把下一個應該測試的模塊結合起來進行測試。集成測試包括自頂向下集成和自底向上集成兩種方法,自頂向下集成是從主控制模塊開始,沿著程序的控制層次向下移動,逐步把各個模塊結合起來。在把附屬于(及最終附屬于)主控制模塊的那些模塊組裝到程序結構中去時,或者使用深度優(yōu)先的策略,或者使用寬度優(yōu)先的策略。自底向上集成從”原子”模塊(即在軟件結構最底層的模塊)開始組裝和測試。因為是從底部向上結合模塊,總能得到所需的下層模塊處理功能,因此不需要存根程序。6.2測試步驟在整個系統(tǒng)測試過程中,按以下4個步驟進行,即模塊測試、聯(lián)合測試、確認測試和系統(tǒng)測試。1.模塊測試。主要是針對程序模塊進行正確性檢驗的測試。單元測試的內(nèi)容有:模塊接口測試即對經(jīng)過被測模塊的數(shù)據(jù)流進行測試;局部數(shù)據(jù)結構測試,即設計測試用例檢查數(shù)據(jù)類型說明、初始化、缺省值等方面的問題,還要查清全程數(shù)據(jù)對模塊的影響;路徑測試,即選擇適當?shù)臏y試用例,對模塊中重要的執(zhí)行路徑進行測試,對基本執(zhí)行路徑和循環(huán)進行測試能夠發(fā)現(xiàn)大量的路徑錯誤;錯誤處理測試即檢查模塊的錯誤處理功能是否包含有錯誤或缺陷;邊界測試,即要特別注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時出錯的可能性。這部分的測試能夠發(fā)現(xiàn)詳細設計和編程時犯下的錯誤,如某個變量未賦值、數(shù)組的上下界不對等。2.聯(lián)合測試。在模塊測試的基礎上,需要將所有模塊按照設計要求組裝成為系統(tǒng),然后按業(yè)務流程對集成的系統(tǒng)進行測試??上纫粋€模塊一個模塊的增加測試,直到集成為一個系統(tǒng)。這個測試過程能夠發(fā)現(xiàn)概要設計時犯的錯誤。3.確認測試。又稱為有效性測試,它的任務是驗證軟件的有效性,即驗證軟件的功能、性能及其它特性是否與用戶的要求一致。這個測試過程最好由用戶參與測試。4.系統(tǒng)測試。將經(jīng)過確認測試的軟件,在用戶的實際環(huán)境(硬件環(huán)境、軟件環(huán)境、數(shù)據(jù)、人員等)進行聯(lián)合測試和確認測試。6.3測試數(shù)據(jù)的常見技術6.3.1白盒測試技術白盒測試技術主要包括邏輯覆蓋和控制結構測試。所謂邏輯覆蓋是對一系列測試的總稱,這組測試過程逐漸進行越來越完整的通路測試。測試數(shù)據(jù)執(zhí)行(或叫覆蓋)程序邏輯的程度能夠劃分為以下不同覆蓋標準:(1)語句覆蓋。為了暴露程序中的錯誤,至少每個語句應該執(zhí)行一次。語句覆蓋的含義是,選擇足夠多的測試數(shù)據(jù),使被測程序中的每個語句至少執(zhí)行一次。(2)判定覆蓋。又稱分支覆蓋,它的含義是,不但每個語句必須執(zhí)行一次,而且每個判定的每種可能的結果都應該至少執(zhí)行一次,也就是每個判定的每個分支都至少執(zhí)行一次。(3)條件覆蓋。條件覆蓋的含義是,不但每個語句至少執(zhí)行一次,而且是判定表示式中的每個條件都取到各種可能的結果。(4)判定/條件覆蓋。它的含義是,選取足夠多的測試數(shù)據(jù),使得判定表示式中的每個條件都取到各種可能的值。(5)條件組合覆蓋。它要求選取足夠多的測試數(shù)據(jù),使得每個判定表示式中條件的各種可能組合都至少出現(xiàn)一次。(6)路徑覆蓋。它的含義是,選取足夠多的測試數(shù)據(jù),使程序的每條可能路徑至少執(zhí)行一次。所謂

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論