版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
概述1.1系統(tǒng)設(shè)計(jì)的背景與意義隨著人們生活水平的提高,餐飲行業(yè)也迎來(lái)了蓬勃發(fā)展。雖然吸引了大量資金流入,但是在人力資源的成本上依然居高不下,這使得以小型連鎖為主的餐飲企業(yè)倍感壓力。在互聯(lián)網(wǎng)與電子支付的逐漸普及的背景下,餐飲行業(yè)作為對(duì)用戶需求極為敏感的行業(yè),雖然在許多方面已經(jīng)完成了電子化的改造,但是這些系統(tǒng)通常只具備某個(gè)方面的功能,而且經(jīng)常采用較老的實(shí)現(xiàn)方案,使得維護(hù)與二次開(kāi)發(fā)難度高,數(shù)據(jù)無(wú)法快速直觀的呈現(xiàn)給管理人員。大部分餐飲一體化管理系統(tǒng)都針對(duì)的是擁有一定規(guī)模的商家,雖然擁有非常完善的功能與技術(shù)支持,但是其購(gòu)買、部署與培訓(xùn)的成本都相對(duì)較高。部分小型店家也希望能夠完成完整的電子化改造,擺脫傳統(tǒng)的賬目管理方式。隨著技術(shù)的發(fā)展,使得利用開(kāi)源技術(shù)實(shí)現(xiàn)一套完整的支付+統(tǒng)計(jì)系統(tǒng)的成本大大降低。1.2可行性分析1.2.1經(jīng)濟(jì)可行性分析本次開(kāi)發(fā)中使用的技術(shù)大多數(shù)是免費(fèi)提供的,不需要進(jìn)行購(gòu)買。其中IntelliJIDEA通過(guò)申請(qǐng)學(xué)生身份獲得了免費(fèi)的旗艦版本程序授權(quán)。系統(tǒng)中使用的SSL證書通過(guò)工具自行簽發(fā)。通過(guò)使用Java開(kāi)發(fā),系統(tǒng)可以部署在常見(jiàn)的個(gè)人電腦上,不需要額外的特殊設(shè)備??梢缘玫浇?jīng)濟(jì)可行性上符合現(xiàn)狀。1.2.2技術(shù)可行性分析本次主要選擇主流的開(kāi)源技術(shù)與應(yīng)用軟件進(jìn)行開(kāi)發(fā)工作,如SpringBoot,Hibernate等。這些技術(shù)已經(jīng)經(jīng)過(guò)大量廠商的檢驗(yàn),并且官方提供了詳細(xì)的開(kāi)發(fā)指導(dǎo)文檔,完全可以滿足本次開(kāi)發(fā)的需求。Android作為目前市場(chǎng)占有率最大的移動(dòng)操作系統(tǒng),其開(kāi)發(fā)工具和資源都十分充足。綜上所述,系統(tǒng)在開(kāi)發(fā)實(shí)現(xiàn)的過(guò)程中阻力較小。1.2.3市場(chǎng)可行性本項(xiàng)目主要面向的是小型個(gè)體與小型連鎖餐飲企業(yè)。目前市場(chǎng)上低于50家門店的企業(yè)依然處于主流,且人力成本依然處于居高不下的情況[1]。通過(guò)利用新技術(shù)改造管理平臺(tái),可以改善大量的管理成本,且系統(tǒng)的部署也十分簡(jiǎn)單。由此對(duì)于普通商家具有良好的吸引力,市場(chǎng)前景廣闊。1.3論文組織結(jié)構(gòu)本文總共分為7章,文章的結(jié)構(gòu)如下:第一章為概述,簡(jiǎn)要介紹了系統(tǒng)設(shè)計(jì)的設(shè)計(jì)背景與可行性分析,說(shuō)明論文的總體結(jié)構(gòu)。第二章對(duì)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)過(guò)程中使用到的相關(guān)技術(shù)與應(yīng)用軟件,如SpringBoot和IntelliJIDEA等進(jìn)行介紹。第三章對(duì)餐飲系統(tǒng)需要實(shí)現(xiàn)的需求和功能進(jìn)行分析,梳理出系統(tǒng)主要的業(yè)務(wù)流程。第四章介紹系統(tǒng)的總體功能框架規(guī)劃,以及分析系統(tǒng)數(shù)據(jù)庫(kù)內(nèi)實(shí)體表的設(shè)計(jì)目標(biāo)并展示表結(jié)構(gòu)第五章詳細(xì)介紹了系統(tǒng)各個(gè)模塊與功能的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程。第六章說(shuō)明了系統(tǒng)內(nèi)各個(gè)功能的測(cè)試目標(biāo)與重點(diǎn),并展示系統(tǒng)中各功能的測(cè)試用例與測(cè)試結(jié)構(gòu)第七章對(duì)系統(tǒng)實(shí)現(xiàn)的目標(biāo)和功能進(jìn)行總結(jié),并對(duì)不足之處進(jìn)行分析與檢討,提出后續(xù)可以改進(jìn)的部分。1.4本章小結(jié)本章通過(guò)對(duì)當(dāng)前餐飲行業(yè)現(xiàn)狀的分析,介紹了系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)的背景,并通過(guò)技術(shù)可行性和經(jīng)濟(jì)可行性兩方面對(duì)項(xiàng)目進(jìn)行分析,為后續(xù)的設(shè)計(jì)提供參考。
開(kāi)發(fā)核心技術(shù)2.1SpringBootSpringBoot是目前十分流行的開(kāi)源Java開(kāi)發(fā)框架Spring的衍生品。通過(guò)整合了Spring框架與第三方開(kāi)發(fā)庫(kù),開(kāi)發(fā)者可以在盡量少進(jìn)行配置的情況下開(kāi)發(fā)出一個(gè)獨(dú)立的Spring微服務(wù)應(yīng)用。由于內(nèi)置了HTTP服務(wù)器,基于SpringBoot開(kāi)發(fā)的程序也可以快速的完成部署。在此基礎(chǔ)上,通過(guò)引入擴(kuò)展,可以在不需要大量調(diào)試的情況下,完成對(duì)其他需要的開(kāi)發(fā)依賴的整合。本次開(kāi)發(fā)中使用的SpringMVC框架,SpringSecurity安全框架,MariaDB數(shù)據(jù)庫(kù)驅(qū)動(dòng)與HibernateORM的支持,就是通過(guò)這種形式完成的。2.2MariaDBMariaDB是一個(gè)從MySQL分支出的關(guān)系型數(shù)據(jù)庫(kù)。由于MySQL成為甲骨文公司的產(chǎn)品后,其開(kāi)源社區(qū)的發(fā)展前景受到威脅。因此原MySQL開(kāi)發(fā)團(tuán)隊(duì)的部分成員選擇從MySQL的開(kāi)源代碼上分支出新的版本,在保證大部分底層API與功能與MySQL兼容的基礎(chǔ)上,繼續(xù)以開(kāi)源的方式繼續(xù)維護(hù)。也由于其底層與MySQL兼容性強(qiáng),其繼承了MySQL的許多優(yōu)點(diǎn),大量Linux發(fā)行版也選擇將MySQL替換為MariaDB,谷歌,Mozilla,維基媒體基金會(huì)也在產(chǎn)品中使用了MariaDB。本次開(kāi)發(fā)中使用MariaDB的主要原因是,其在擁有MySQL優(yōu)點(diǎn)的基礎(chǔ)上,許可證較MySQL更加寬松。2.3HibernateHibernate是一個(gè)面向Java開(kāi)發(fā)的開(kāi)源對(duì)象關(guān)系映射(ORM,Object–relationalmapping)工具。通過(guò)映射,開(kāi)發(fā)人員只需要維護(hù)對(duì)象就可以對(duì)數(shù)據(jù)庫(kù)內(nèi)的關(guān)系進(jìn)行操作。同時(shí)Hibernate也集成了許多面向?qū)ο蟮牟樵兡J?,開(kāi)發(fā)人員在大多數(shù)時(shí)候不需要維護(hù)數(shù)據(jù)庫(kù)連接,也不需要編寫SQL語(yǔ)句就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。本次開(kāi)發(fā)通過(guò)SpringDataJPA模塊與Hibernate對(duì)JPA(JakartaPersistence,Java持久化API)的實(shí)現(xiàn)完成對(duì)數(shù)據(jù)庫(kù)的操作。2.4AndroidAndroid是一個(gè)基于Linux內(nèi)核的為觸摸屏優(yōu)化的開(kāi)源移動(dòng)操作系統(tǒng)。由于其寬松的授權(quán)許可,允許廠商自行定制以及對(duì)移動(dòng)平臺(tái)良好的兼容性,自2005年被谷歌收購(gòu)以來(lái),目前已經(jīng)成為市場(chǎng)占有率最高的移動(dòng)操作系統(tǒng)。通過(guò)Java語(yǔ)言和系統(tǒng)內(nèi)置的接口,開(kāi)發(fā)者可以輕松的完成對(duì)移動(dòng)設(shè)備底層硬件的調(diào)用并開(kāi)發(fā)出需要的軟件。本次開(kāi)發(fā)中的交易終端程序就使用Android作為平臺(tái),通過(guò)調(diào)用手機(jī)的NFC功能完成對(duì)會(huì)員卡的讀取。2.5NFCNFC(Near-fieldcommunication,近距離無(wú)線通信)是一種可以讓近距離的設(shè)備之間互相通信和傳輸數(shù)據(jù)的通信協(xié)議。通過(guò)使用NFC技術(shù),移動(dòng)設(shè)備可以模擬一張使用RFID技術(shù)的芯片卡,或讀取RFID芯片,也可以在兩個(gè)支持NFC技術(shù)的設(shè)備間快速傳輸數(shù)據(jù)。目前NFC技術(shù)已經(jīng)廣泛的應(yīng)用在電子錢包,讀卡器和移動(dòng)支付領(lǐng)域。本次開(kāi)發(fā)使用的交易終端就通過(guò)Android系統(tǒng)對(duì)NFC技術(shù)的支持,對(duì)RFID卡片進(jìn)行讀取,來(lái)獲取用戶卡片信息。使用的芯片為NTAG215。2.6IntelliJIDEAIntelliJIDEA是由捷克開(kāi)發(fā)商JetBrains開(kāi)發(fā)的一款面向Java開(kāi)發(fā)的集成開(kāi)發(fā)環(huán)境,包括免費(fèi)開(kāi)源的社區(qū)版以及付費(fèi)閉源的旗艦版本。由于其功能豐富,擁有良好的擴(kuò)展性,對(duì)版本管理工具的良好支持以及強(qiáng)大的代碼分析功能,受到了許多開(kāi)發(fā)者的青睞。谷歌也將其Android的官方開(kāi)發(fā)工具由Eclipse遷移到了定制的IntelliJIDEA。本次開(kāi)發(fā)使用的是通過(guò)學(xué)生授權(quán)申請(qǐng)獲得的IntelliJIDEA旗艦版。2.7GitGit是一個(gè)使用C開(kāi)發(fā)的開(kāi)源分布式版本控制工具。通過(guò)Git,開(kāi)發(fā)者可以快速地對(duì)代碼的版本及歷史進(jìn)行管理。目前許多著名的開(kāi)源項(xiàng)目都在通過(guò)Git進(jìn)行協(xié)作。本次開(kāi)發(fā)通過(guò)利用Git對(duì)開(kāi)發(fā)工作進(jìn)行管理,方便梳理開(kāi)發(fā)進(jìn)度與代碼修改。2.8本章小結(jié)本章具體闡述了實(shí)現(xiàn)系統(tǒng)所需要的主要技術(shù)。對(duì)后端服務(wù)以及移動(dòng)終端應(yīng)用使用的核心技術(shù)進(jìn)行簡(jiǎn)單的介紹,闡述在系統(tǒng)中的作用并簡(jiǎn)要的分析了其優(yōu)勢(shì)。本章還介紹了開(kāi)發(fā)過(guò)程中主要使用的開(kāi)發(fā)工具。
3系統(tǒng)分析3.1系統(tǒng)需求分析本系統(tǒng)的開(kāi)發(fā)重點(diǎn)在于實(shí)現(xiàn)一套集成店鋪人員管理,收銀和賬目查看管一體的系統(tǒng)。系統(tǒng)的用戶包括了系統(tǒng)管理員,店鋪管理員,店鋪收銀員,顧客四個(gè)角色。3.1.1系統(tǒng)管理員系統(tǒng)管理員主要職責(zé)為負(fù)責(zé)整個(gè)系統(tǒng)的運(yùn)行和管理工作。作為系統(tǒng)的維護(hù)人員,通過(guò)登錄功能鑒別身份后,可以通過(guò)用戶管理模塊和店鋪管理模塊對(duì)系統(tǒng)中的用戶和店鋪進(jìn)行增加,刪除,修改和查找操作。系統(tǒng)管理員用例圖如圖3-1所示。圖3-1:系統(tǒng)管理員用例圖3.1.2店鋪管理員店鋪管理人員負(fù)責(zé)對(duì)店鋪的信息,商品信息,店鋪內(nèi)的成員進(jìn)行管理。同時(shí)可以查詢本店鋪的交易流水信息。這些操作通過(guò)店鋪管理模塊,商品信息管理模塊,交易查詢模塊,操作授權(quán)模塊來(lái)完成。店鋪管理員用例圖如圖3-2所示。圖3-2:店鋪管理員用例圖3.1.3店鋪收銀人員店鋪收銀人員主要通過(guò)交易終端完成對(duì)會(huì)員卡的開(kāi)卡與管理,完成收銀操作。其中卡片管理可以在顧客要求的前提下完成對(duì)卡片的掛失和解除掛失,以及卡片的注銷,卡片的充值等操作操作。店鋪收銀人員用例圖如圖3-3所示。圖3-3:店鋪收銀人員用例圖3.1.4顧客普通顧客可以在收銀員完成開(kāi)卡操作后,在后臺(tái)使用指定的用戶名和密碼登錄,對(duì)自己的個(gè)人信息進(jìn)行修改,完成對(duì)狀態(tài)正常卡片的充值操作,查詢一定期限內(nèi)的卡片交易記錄與交易詳情。顧客用例圖如圖3-4所示。圖3-4:顧客用例圖3.2功能模塊分析1、后臺(tái)管理功能模塊(1)用戶管理系統(tǒng)管理員通過(guò)用戶管理功能對(duì)除普通顧客用戶外的系統(tǒng)用戶進(jìn)行添加操作,重置用戶密碼,刪除用戶的操作。(2)店鋪管理系統(tǒng)管理員可以對(duì)系統(tǒng)中存在的店鋪進(jìn)行管理。包括增加店鋪,刪除無(wú)用戶綁定的店鋪,修改店鋪基礎(chǔ)信息。(3)商品管理對(duì)店鋪內(nèi)的商品進(jìn)行管理,包括添加商品,商品上下架,商品庫(kù)存修改,商品刪除。(4)成員管理成員管理模塊用于店鋪管理員對(duì)店鋪成員進(jìn)行管理,通過(guò)姓名對(duì)成員進(jìn)行搜索以及權(quán)限授權(quán)操作。(5)交易流水查詢店鋪管理員登錄后可以查看當(dāng)前管理店鋪的交易流水,或者通過(guò)指定的搜索條件對(duì)交易流水進(jìn)行搜索。登錄的顧客也可以對(duì)自己卡片的交易記錄進(jìn)行查詢。(6)個(gè)人信息修改所有登錄用戶可以修改自己賬戶的個(gè)人信息,如姓名,生日,電話號(hào)碼等。(7)充值顧客可以在開(kāi)卡后使用自己的用戶信息登錄后臺(tái)完成在線充值操作。2、交易終端功能模塊(1)卡片管理卡片管理模塊用于收銀員進(jìn)行會(huì)員卡開(kāi)戶,卡片充值,卡片掛失/解除掛失等與卡片相關(guān)的操作。也可以查詢用戶卡片最近的交易記錄。(2)收銀由收銀員通過(guò)收銀模塊為用戶點(diǎn)餐,并讀取用戶卡片完成扣款,將信息回傳給系統(tǒng)后臺(tái)。3.3系統(tǒng)功能流程1、系統(tǒng)后臺(tái)登錄流程用戶訪問(wèn)登錄頁(yè)面,或被攔截器檢測(cè)到不能繼續(xù)訪問(wèn)當(dāng)前頁(yè)面(如會(huì)話過(guò)期,未登錄,無(wú)權(quán)限),會(huì)被導(dǎo)向后臺(tái)登錄頁(yè)面。用戶在登錄頁(yè)面輸入用戶名和密碼后,后臺(tái)從數(shù)據(jù)庫(kù)中查找是否有對(duì)應(yīng)的用戶信息,如果有則繼續(xù)比較密碼+鹽的哈希值是否符合。如果驗(yàn)證成功,則跳轉(zhuǎn)到系統(tǒng)主頁(yè)。系統(tǒng)登錄流程圖如圖3-5所示。圖3-5:登錄流程圖2、收銀流程顧客想要下單時(shí),向收銀員提出需要的菜品。由收銀員在交易終端上選擇對(duì)應(yīng)的商品,確認(rèn)無(wú)誤后,提交下單請(qǐng)求。接著在終端上進(jìn)行揮卡,終端讀取卡片信息后,將信息提交給后臺(tái)。后臺(tái)對(duì)訂單和卡片的相關(guān)信息進(jìn)行驗(yàn)證(如卡片狀態(tài)是否正常,卡片余額是否充足,商品庫(kù)存是否充足),確認(rèn)無(wú)誤后,將訂單信息和交易記錄寫入系統(tǒng),同時(shí)返回交易結(jié)果給終端,完成收銀流程。收銀流程圖如圖3-6所示。圖3-6:收銀流程圖3.4本章小結(jié)本章通過(guò)運(yùn)用軟件工程的知識(shí),對(duì)系統(tǒng)完成了整體分析,并完成了系統(tǒng)大致功能模塊的劃分和系統(tǒng)核心流程的簡(jiǎn)要設(shè)計(jì)。指明了系統(tǒng)設(shè)計(jì)需要滿足的要求和系統(tǒng)實(shí)現(xiàn)的目標(biāo)。
4系統(tǒng)概要設(shè)計(jì)4.1系統(tǒng)總體框架系統(tǒng)根據(jù)使用者分為了管理后臺(tái)和交易終端兩個(gè)部分。管理后臺(tái)主要由管理用戶使用,負(fù)責(zé)完成對(duì)系統(tǒng)以及對(duì)店鋪運(yùn)營(yíng)的信息查詢和維護(hù)。交易終端由收銀員使用,負(fù)責(zé)完成顧客會(huì)員卡的管理以及下單。本系統(tǒng)的功能框圖如圖4-1所示。圖4-1:系統(tǒng)功能框圖4.2系統(tǒng)實(shí)體設(shè)計(jì)通過(guò)對(duì)以上系統(tǒng)各模塊的分析和整理,梳理出了對(duì)應(yīng)的實(shí)體關(guān)系,并繪制出系統(tǒng)的E-R圖。本系統(tǒng)的E-R圖如圖4-2所示:圖4-2:系統(tǒng)E-R圖接下來(lái)根據(jù)此E-R圖進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),本次使用的數(shù)據(jù)庫(kù)為MariaDB,除卡片外,均采用系統(tǒng)生成的UUID作為主鍵??ㄆ褂脧S商燒錄的7位卡片ID作為主鍵。所有表均使用UTF8編碼。每個(gè)表都增加創(chuàng)建時(shí)間與更新時(shí)間列,方便對(duì)記錄進(jìn)行排序與篩選。用戶信息表(user)用戶信息表主要存儲(chǔ)用戶在系統(tǒng)內(nèi)驗(yàn)證身份的核心信息。為了保證密碼安全,用戶的密碼信息使用blowfish算法進(jìn)行加密,并根據(jù)每個(gè)用戶生成單獨(dú)的鹽,避免數(shù)據(jù)泄露時(shí)泄露密碼信息。每個(gè)用戶可以綁定一個(gè)店鋪,如果該用戶為顧客和系統(tǒng)管理員,則該字段留空。每個(gè)用戶也可以被管理員停用。刪除時(shí),用戶的狀態(tài)被設(shè)為-1。表4-1:用戶信息表列名類型是否可為空描述uuidvarchar(64)否主鍵,用戶IDusernamevarchar(20)否用戶名password_hashvarchar(64)否密碼哈希rolevarchar(20)否用戶類型admin–系統(tǒng)管理員manager–店鋪管理員worker–店鋪收銀員customer–顧客shop_uuidvarchar(64)是外鍵,所在店鋪的IDis_enabledtinyint否賬戶是否啟用0–否1–是statustinyint否賬戶狀態(tài)1–正常-1–刪除create_datedatetime否記錄的創(chuàng)建時(shí)間update_datedatetime否記錄的更新時(shí)間個(gè)人信息表(profile)個(gè)人信息表存儲(chǔ)每個(gè)用戶的個(gè)人信息。為了方便后期對(duì)個(gè)人信息的擴(kuò)充,個(gè)人信息從用戶信息表中拆分成單獨(dú)的表。由于每個(gè)用戶僅對(duì)應(yīng)一條個(gè)人信息記錄,用戶信息記錄的主鍵即為表的主鍵,表內(nèi)目前存儲(chǔ)包括姓名,性別,生日,性別,手機(jī)號(hào)碼。表4-2:個(gè)人信息表列名類型是否可為空描述uuidvarchar(64)否主鍵,外鍵,與對(duì)應(yīng)的用戶的ID相同namevarchar(20)否姓名birthdaydate是生日gendertinyint否性別mobilevarchar(20)否電話號(hào)碼create_datedatetime否記錄的創(chuàng)建時(shí)間update_datedatetime否記錄的更新時(shí)間店鋪信息表(shop)店鋪信息表存儲(chǔ)系統(tǒng)中店鋪的基本信息。包括店鋪名,店鋪位置(可選填寫)。每個(gè)店鋪有一個(gè)唯一的超級(jí)管理員,負(fù)責(zé)對(duì)店鋪的管理。表4-3:店鋪信息表列名類型是否可為空描述uuidvarchar(64)否主鍵,店鋪IDnamevarchar(32)否店鋪名locationvarchar(32)是店鋪位置managervarchar(64)否外鍵,店鋪管理員的用戶IDstatustinyint否店鋪狀態(tài)1–正常-1–刪除create_datedatetime否記錄的創(chuàng)建時(shí)間update_datedatetime否記錄的更新時(shí)間商品信息表(item)商品信息表存儲(chǔ)每個(gè)店鋪內(nèi)存在的貨品與相關(guān)的狀態(tài)信息。包括商品名,商品價(jià)格,商品庫(kù)存。同時(shí)數(shù)據(jù)庫(kù)存儲(chǔ)每個(gè)商品的拼音首字母,方便快速完成商品搜索。由于每個(gè)店鋪間的商品是獨(dú)立的,每個(gè)商品也單獨(dú)存儲(chǔ)所屬的店鋪的ID。每個(gè)商品都可以選擇是否被上架,被下架的商品不可以在收銀時(shí)被選擇。表4-4:商品信息表列名類型是否可為空描述uuidvarchar(64)否主鍵,商品IDnamevarchar(20)否商品名稱initialvarchar(20)否商品每個(gè)字的拼音的首字母,方便進(jìn)行搜索pricedecimal(10,2)否商品價(jià)格stockint否商品庫(kù)存數(shù)量descriptionvarchar(120)是商品描述信息is_enabledtinyint否是否上架0–否1–是statustinyint否商品狀態(tài)1–正常-1–刪除shop_uuidvarchar(64)否外鍵,商品所屬店鋪的IDcreate_datedatetime否記錄的創(chuàng)建時(shí)間update_datedatetime否記錄的更新時(shí)間卡片信息表(card)卡片信息表存儲(chǔ)了系統(tǒng)內(nèi)用戶擁有的卡片及其當(dāng)前狀態(tài)。卡片ID為廠商燒寫入芯片的8位16個(gè)字符的唯一卡號(hào)。每個(gè)用戶只能擁有一張?zhí)幱谡<せ顮顟B(tài)的卡片。處于掛失或過(guò)期狀態(tài)不受限制。表4-5:卡片信息表列名類型是否可為空描述uuidvarchar(16)否主鍵,卡片IDbalancedecimal(10,2)否卡片余額user_uuidvarchar(64)否外鍵,卡片所屬用戶的ID表4-5(續(xù)):卡片信息表列名類型是否可為空描述statustinyint否卡片狀態(tài)0–未激活1–正常5–掛失-1–注銷valid_datedate否卡片有效日期create_datedatetime否記錄的創(chuàng)建時(shí)間update_datedatetime否記錄的更新時(shí)間交易記錄表(transaction)交易記錄表包括充值與消費(fèi)等所有的金額變更記錄。每筆交易中存儲(chǔ)當(dāng)前交易涉及的金額,交易類型(充值或消費(fèi)),以及交易后卡片的余額。同時(shí)也記錄了每筆交易所在的店鋪以及收銀員的信息。表4-6:交易記錄表列名類型是否可為空描述uuidvarchar(64)否主鍵,交易記錄IDcard_uuidvarchar(16)否外鍵,交易卡片IDamountdecimal(10,2)否交易金額balancedecimal(10,2)否交易后卡片的余額actiontinyint否交易類型0–消費(fèi)1–充值shop_uuidvarchar(64)是外鍵,交易涉及的店鋪ID,在線充值時(shí)可為空operator_uuidvarchar(64)是外鍵,負(fù)責(zé)交易的操作員,在線充值時(shí)可為空create_datedatetime否記錄的創(chuàng)建時(shí)間update_datedatetime否記錄的更新時(shí)間交易商品記錄表(item_record)交易商品記錄表保存了每次交易時(shí)購(gòu)買的商品信息。包括涉及的交易ID,商品ID。由于商品價(jià)格可能隨著之后的修改變化,表中也存儲(chǔ)了購(gòu)買時(shí)的商品價(jià)格和個(gè)數(shù)。表4-7:交易商品記錄表列名類型是否可為空描述uuidvarchar(64)否主鍵,商品記錄IDtransaction_uuidvarchar(64)否外鍵,交易IDitem_uuidvarchar(64)否外鍵,商品IDpricedecimal(10,2)否商品單價(jià)numint否商品個(gè)數(shù)statustinyint否記錄狀態(tài)0–正常-1–刪除create_datedatetime否記錄的創(chuàng)建時(shí)間update_datedatetime否記錄的更新時(shí)間4.3本章小結(jié)本章完成了系統(tǒng)的功能模塊劃分,并通過(guò)繪制和分析E-R圖完成了實(shí)體分析與數(shù)據(jù)表設(shè)計(jì),為之后的詳細(xì)設(shè)計(jì)梳理思路。
5系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)5.1安全性設(shè)計(jì)1、密碼安全為了保障用戶密碼信息安全,在存儲(chǔ)密碼時(shí)使用blowfish算法。開(kāi)發(fā)中使用了bcrypt的blowfish算法實(shí)現(xiàn),對(duì)密碼進(jìn)行多次迭代加密,同時(shí)對(duì)每個(gè)密碼生成不同的鹽值,大大減小了暴力枚舉破解成功的可能性,同時(shí)每次進(jìn)行散列計(jì)算時(shí),不會(huì)出現(xiàn)相同的結(jié)果,也避免了其他散列算法可以根據(jù)散列結(jié)果推測(cè)明文的問(wèn)題。2、傳輸安全由于系統(tǒng)中涉及資金交易,如果客戶端和服務(wù)期間傳輸?shù)恼?qǐng)求被惡意劫持并進(jìn)行篡改,將會(huì)對(duì)用戶和商家造成財(cái)產(chǎn)損失。為了避免此種情況發(fā)生,服務(wù)器與客戶端之間的傳輸全程開(kāi)啟HTTPS,從而阻止對(duì)數(shù)據(jù)包的劫持,篡改等行為。由于TLS在配置不當(dāng)?shù)那闆r下,可能導(dǎo)致傳輸加密的有效性被削弱,依然有可能造成數(shù)據(jù)泄露(如貴賓犬漏洞),在進(jìn)行服務(wù)器配置時(shí),關(guān)閉了不推薦使用的密碼套件,并阻止客戶端申請(qǐng)回滾到有安全漏洞的傳輸協(xié)議。3、數(shù)據(jù)有效性驗(yàn)證為了保證存儲(chǔ)數(shù)據(jù)的有效性,除了進(jìn)行前端檢測(cè)和數(shù)據(jù)庫(kù)中約束外,在后端通過(guò)使用HibernateValidator,在域模型(即對(duì)象)上增加有效性驗(yàn)證,在減小編寫重復(fù)的驗(yàn)證代碼的基礎(chǔ)上,進(jìn)一步減少了無(wú)效數(shù)據(jù)進(jìn)入系統(tǒng)的可能性。4、數(shù)據(jù)庫(kù)注入防御數(shù)據(jù)庫(kù)注入是在線系統(tǒng)中經(jīng)常出現(xiàn)的問(wèn)題,由于對(duì)用戶的輸入約束不當(dāng)或?qū)QL進(jìn)行直接拼接,導(dǎo)致SQL的功能被改變,或拋出異常來(lái)達(dá)到攻擊者的目的。在開(kāi)發(fā)過(guò)程中,除了可以直接通過(guò)ORM操作的數(shù)據(jù)外,也必然需要對(duì)SQL進(jìn)行定制的功能。通過(guò)對(duì)編寫的SQL進(jìn)行預(yù)編譯,避免用戶輸入數(shù)據(jù)混入SQL語(yǔ)句結(jié)構(gòu)中,同時(shí)在正式運(yùn)行時(shí)關(guān)閉調(diào)試信息輸出,減小攻擊者獲得系統(tǒng)敏感數(shù)據(jù)的可能性。5.2用戶登錄當(dāng)用戶訪問(wèn)登錄頁(yè)面或攔截器檢測(cè)到用戶沒(méi)有有效的登錄信息時(shí),系統(tǒng)會(huì)展示登錄頁(yè)面。用戶將登錄信息填寫完整后,提交請(qǐng)求。通過(guò)實(shí)現(xiàn)UserDetailsService接口類的loadUserByUsername方法,將數(shù)據(jù)庫(kù)中的用戶信息接入驗(yàn)證。系統(tǒng)通過(guò)用戶名搜索到用戶之后,檢測(cè)用戶狀態(tài)是否正常,如果用戶被禁用,則無(wú)法正常登錄。如果一切正常,則讀取用戶的密碼哈希信息,通過(guò)設(shè)置的BCryptPasswordEncoder對(duì)用戶輸入的密碼和數(shù)據(jù)庫(kù)存儲(chǔ)的密碼進(jìn)行校對(duì)。校對(duì)成功后,將用戶信息寫入SecurityContext以供后續(xù)調(diào)用,同時(shí)將頁(yè)面導(dǎo)向系統(tǒng)主頁(yè)。系統(tǒng)主頁(yè)的菜單根據(jù)用戶角色的不同,顯示不同的功能。登錄界面效果圖如圖5-1所示。圖5-1:登陸界面效果圖5.3個(gè)人信息修改通過(guò)個(gè)人信息頁(yè)面,登錄用戶可以查看和修改賬號(hào)密碼和個(gè)人信息。為了保障安全,對(duì)個(gè)人信息修改時(shí)需要在頁(yè)面輸入用戶當(dāng)前密碼,驗(yàn)證成功后,相應(yīng)的修改才會(huì)生效。個(gè)人信息頁(yè)面效果圖如圖5-2所示。圖5-2:個(gè)人信息頁(yè)面效果圖5.4系統(tǒng)管理模塊1、用戶管理系統(tǒng)管理員可以在用戶管理子模塊中查看系統(tǒng)當(dāng)前存在的用戶信息。為了保證信息安全,系統(tǒng)管理員無(wú)法直接查看或修改用戶密碼,也不能直接修改用戶的個(gè)人信息,但是用戶可以調(diào)整工作人員的權(quán)限(即調(diào)整店鋪管理員和店鋪收銀員的權(quán)限)。當(dāng)用戶忘記密碼需要重置時(shí),管理員需要通過(guò)“重置密碼”按鈕對(duì)密碼進(jìn)行重置。此時(shí)后臺(tái)會(huì)隨機(jī)產(chǎn)生一個(gè)新密碼并寫入數(shù)據(jù)庫(kù),同時(shí)返回給管理員。系統(tǒng)管理員也可以禁用某個(gè)賬戶,被禁用的賬戶無(wú)法登錄,也無(wú)法進(jìn)行任何操作,直到被啟用為止。系統(tǒng)用戶列表效果圖如圖5-3所示。圖5-3:用戶列表效果圖2、店鋪管理店鋪管理子模塊的主要功能為添加店鋪信息、編輯店鋪信息、刪除店鋪信息以及根據(jù)店鋪名進(jìn)行搜索。添加店鋪時(shí),需要輸入店鋪的基礎(chǔ)信息,并指定店鋪管理員。每個(gè)店鋪擁有一個(gè)最高權(quán)限的管理員,可以對(duì)店鋪的詳細(xì)信息與人員進(jìn)行修改。在刪除店鋪前,系統(tǒng)會(huì)檢測(cè)店鋪中除管理員外是否有其他人員存在,如有則提示錯(cuò)誤,避免了誤刪除造成的災(zāi)難性后果。系統(tǒng)店鋪列表效果圖如圖5-4所示。圖5-4:店鋪列表效果圖5.5店鋪管理模塊1、店鋪信息維護(hù)店鋪管理員通過(guò)店鋪信息維護(hù)功能,可以對(duì)除店鋪管理員外的其他信息(如店鋪名稱,位置)等進(jìn)行修改。店鋪管理員打開(kāi)此頁(yè)面時(shí),后端通過(guò)調(diào)取登錄用戶的信息,自動(dòng)展示對(duì)應(yīng)店鋪的信息,保證其他店鋪的ID信息不會(huì)被泄露。店鋪信息維護(hù)頁(yè)面效果圖如圖5-5所示。圖5-5:店鋪信息維護(hù)頁(yè)面效果圖2、成員管理成員管理模塊展示了店鋪管理員所在店鋪的人員信息。店鋪管理員可以將系統(tǒng)中尚未綁定店鋪的,角色為工作人員的用戶添加到當(dāng)前店鋪,或?qū)?dāng)前店鋪的員工解綁。成員管理模塊也可以修改當(dāng)前店鋪成員綁定的卡片信息。成員列表效果圖如圖5-6所示。圖5-6:成員列表效果圖3、商品管理商品管理模塊包括了添加商品,商品信息修改,商品上下架,商品搜索的功能。默認(rèn)展示了當(dāng)前店鋪按時(shí)間順序添加入系統(tǒng)的商品信息。通過(guò)搜索框,可以根據(jù)商品的名稱進(jìn)行搜索。點(diǎn)擊進(jìn)入商品詳情頁(yè)后,可以對(duì)商品的詳細(xì)信息進(jìn)行修改。商品列表效果圖如圖5-7所示。圖5-7:商品列表效果圖4、賬目管理通過(guò)賬目管理功能,管理員可以快速查看當(dāng)天店鋪交易情況的分析圖表以及店鋪的所有流水信息。通過(guò)選擇時(shí)間區(qū)間,也可以完成指定時(shí)間段內(nèi)交易的統(tǒng)計(jì)分析。流水信息列表效果圖如圖5-8所示。圖5-8:流水信息列表效果圖5.6顧客個(gè)人管理模塊1、在線充值除了通過(guò)收銀員當(dāng)面對(duì)卡片進(jìn)行充值外,顧客也可以在線對(duì)卡片進(jìn)行充值。充值前系統(tǒng)會(huì)查詢用戶的卡片信息,自動(dòng)選擇當(dāng)前可用的卡片進(jìn)行充值操作。若用戶當(dāng)前無(wú)可用卡片,則提示用戶需要先進(jìn)行開(kāi)卡。在線充值頁(yè)面效果圖如圖5-9所示。圖5-9:在線充值頁(yè)面效果圖2、交易記錄查詢顧客可以在交易記錄查詢頁(yè)面查詢當(dāng)前有效卡片的充值與消費(fèi)信息,也可以通過(guò)選擇開(kāi)始與截止日期篩選某一時(shí)間段內(nèi)的交易信息。交易記錄查詢頁(yè)面效果圖如圖5-10所示。圖5-10:交易記錄查詢頁(yè)面效果圖5.7交易終端1、登錄每次打開(kāi)交易應(yīng)用時(shí),都會(huì)出現(xiàn)登錄界面。如果用戶是第一次登錄,需要輸入服務(wù)器地址,通信端口(可選)和登錄密碼信息。如果在用戶信息填充不完整的情況下點(diǎn)擊掃描卡片按鈕,會(huì)提示用戶需要補(bǔ)充完整才能登錄。為了避免服務(wù)器信息泄露,登錄信息都以掩碼展示。交易終端登錄界面效果圖如圖5-11所示。圖5-11:交易終端登錄界面效果圖確認(rèn)信息無(wú)誤后,點(diǎn)擊掃描卡片按鈕,此時(shí)會(huì)啟動(dòng)NFCActivity,首先對(duì)設(shè)備對(duì)NFC的兼容性進(jìn)行驗(yàn)證,如果當(dāng)前設(shè)備無(wú)法讀取卡片(設(shè)備不支持NFC或NFC未打開(kāi)),將提示用戶。如果NFC處于正常狀態(tài),Activity將開(kāi)始攔截名為ACTION_TECH_DISCOVERED的Intent,并聲明支持的NFC技術(shù),之后注冊(cè)攔截器,等待接收卡片信息。收銀員進(jìn)行揮卡,當(dāng)系統(tǒng)掃描到卡片后,將會(huì)觸發(fā)OnNewIntent方法。此時(shí)從Intent中讀取卡片的ID信息,并將16進(jìn)制的卡號(hào)轉(zhuǎn)換為字符串。如果轉(zhuǎn)換失敗或卡片讀取異常,將提示用戶重試讀卡。如果讀取成功,將卡片ID信息放入額外信息中,并關(guān)閉NFCActivity。具體實(shí)現(xiàn)如下:overridefunonNewIntent(intent:Intent?){super.onNewIntent(intent)valtag:Tag?=intent!!.getParcelableExtra(NfcAdapter.EXTRA_TAG)valcardId:ByteArray?=MifareUltralight.get(tag)?.use{card->card.connect()card.tag.id}valcardIdString=StringBuffer()if(cardId!=null){for(bincardId){cardIdString.append(String.format("%02X",b))}}if(cardIdString.toString().isEmpty()){valmessage=findViewById<TextView>(R.id.NFCMessage)message.text="請(qǐng)重試"}else{setResult(Activity.RESULT_OK,Intent().putExtra("cardId",cardIdString.toString()))finish()}}之后的卡片讀取都將調(diào)用NFCActivity,不再贅述。登錄界面接收到卡片ID信息后,向服務(wù)后端發(fā)起請(qǐng)求,確認(rèn)用戶信息是否正確以及用戶是否有登錄權(quán)限。如用戶信息錯(cuò)誤或無(wú)權(quán)限,則提示用戶登錄信息錯(cuò)誤。如驗(yàn)證成功,系統(tǒng)將保存登錄信息,并跳轉(zhuǎn)入主菜單頁(yè)面。交易終端主菜單界面效果圖如圖5-12所示。圖5-12:交易終端主菜單界面效果圖2、會(huì)員卡管理(1)開(kāi)卡在經(jīng)過(guò)顧客同意后,收銀員在系統(tǒng)中填寫用戶的基本信息,確認(rèn)無(wú)誤后,掃描一張未在系統(tǒng)內(nèi)注冊(cè)過(guò)的卡片,最后提交開(kāi)卡信息。系統(tǒng)后端對(duì)提交的開(kāi)卡信息在數(shù)據(jù)庫(kù)中進(jìn)行驗(yàn)證,確認(rèn)系統(tǒng)中不存在用戶名,手機(jī)號(hào),卡號(hào)沖突的數(shù)據(jù)后,將用戶信息存入數(shù)據(jù)庫(kù)。開(kāi)卡界面效果圖如圖5-13所示。圖5-13:開(kāi)卡界面效果圖(2)充值收銀員打開(kāi)充值界面,首先完成卡片掃描。此時(shí)程序讀取卡片的狀態(tài)信息,如果卡片處于掛失,過(guò)期等異常情況,程序?qū)棾龃翱谔崾?,拒絕進(jìn)行充值操作。若卡片信息正常,則由收銀員輸入充值金額,點(diǎn)擊充值按鈕,此時(shí)檢測(cè)充值金額是否在合法范圍內(nèi),確認(rèn)無(wú)誤則進(jìn)入充值付款程序。確認(rèn)付款成功后,程序向系統(tǒng)后端提交充值請(qǐng)求,系統(tǒng)后端修改卡片信息并寫入充值記錄,完成充值流程。充值界面效果圖如圖5-14所示。圖5-14:充值界面效果圖(3)續(xù)期每張卡片開(kāi)卡時(shí),默認(rèn)會(huì)擁有三年的有效期,在過(guò)期后,卡片不可以再繼續(xù)使用。在續(xù)期界面,收銀員掃描顧客的卡片后,如果卡片處于掛失狀態(tài),則彈出警告,禁止進(jìn)行操作。如卡片處于正常狀態(tài),收銀員可以選擇要續(xù)期的時(shí)間(或不選擇,則續(xù)期時(shí)間為當(dāng)前日期之后的三年),若選擇的日期無(wú)效(早于今日),則彈出提示。確認(rèn)無(wú)誤后,點(diǎn)擊續(xù)期按鈕,即可完成續(xù)期操作。續(xù)期界面效果圖如圖5-15所示。圖5-15:續(xù)期界面效果圖(4)掛失/解除掛失如顧客的卡片丟失,在向收銀員提供手機(jī)號(hào)或卡號(hào)信息后,收銀員在掛失/解除掛失功能中進(jìn)行搜索,如存在對(duì)應(yīng)的卡片則進(jìn)行掛失操作。解除掛失時(shí),顧客需要攜帶被掛失的卡片,通過(guò)掃描確認(rèn)狀態(tài)為已掛失后,點(diǎn)擊解除掛失按鈕,卡片將還原為正常狀態(tài)。掛失/解除掛失界面效果圖如圖5-16所示。圖5-16:掛失/解除掛失界面效果圖(5)注銷如顧客不想再使用卡片,可以對(duì)卡片進(jìn)行注銷,系統(tǒng)會(huì)自動(dòng)對(duì)卡片中的余額進(jìn)行查詢并進(jìn)行退款操作。之后在系統(tǒng)中刪除卡片以及對(duì)應(yīng)的用戶信息。注銷界面效果圖如圖5-17所示。圖5-17:注銷界面效果圖(6)查詢消費(fèi)記錄收銀員可以在查詢消費(fèi)記錄界面通過(guò)掃描顧客的卡片,查詢顧客最近的10條交易記錄進(jìn)行查詢。查詢消費(fèi)記錄頁(yè)面效果圖如圖5-18所示。圖5-18:查詢消費(fèi)記錄頁(yè)面效果圖3、收銀收銀時(shí),收銀員打開(kāi)點(diǎn)菜界面,根據(jù)顧客的要求將對(duì)應(yīng)的菜品加入購(gòu)物車。確認(rèn)無(wú)誤后,進(jìn)行下單操作,此時(shí)掃描顧客的會(huì)員卡。讀取卡片信息后,程序會(huì)先對(duì)消費(fèi)金額和卡片余額做比較,若卡片余額不足,則彈出提示。若余額充足,則向后端提交下單請(qǐng)求。點(diǎn)菜頁(yè)面效果圖如圖5-19所示。圖5-19:點(diǎn)菜頁(yè)面效果圖后端收到請(qǐng)求后,對(duì)訂單中的菜品庫(kù)存進(jìn)行檢查,并扣除購(gòu)買的數(shù)量。之后從卡片中扣除訂單總金額,最終寫入交易和交易詳情數(shù)據(jù)。實(shí)現(xiàn)該功能時(shí),通過(guò)啟用SpringBoot的事務(wù)功能,保證在數(shù)據(jù)庫(kù)操作中出現(xiàn)異常時(shí)(如商品數(shù)量不足,卡片余額不足),可以對(duì)所有修改進(jìn)行回滾。保證了數(shù)據(jù)的完整性。5.8本章小結(jié)本章詳細(xì)描述了系統(tǒng)的每個(gè)功能模塊的業(yè)務(wù)流程以及實(shí)現(xiàn)邏輯,對(duì)重要功能展示相關(guān)的代碼進(jìn)行解釋,通過(guò)結(jié)合界面截圖,形象的闡述了主要功能點(diǎn)的設(shè)計(jì)思路。
6系統(tǒng)測(cè)試6.1用戶登錄功能測(cè)試用戶登錄功能是系統(tǒng)的主要入口,如果出現(xiàn)故障可能導(dǎo)致資源的越權(quán)訪問(wèn)和敏感信息的泄露。登錄功能需要保證非授權(quán)用戶和賬戶被禁用的用戶無(wú)法登錄系統(tǒng)。表6-1:用戶登錄功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1使用http訪問(wèn)無(wú)法訪問(wèn)無(wú)法訪問(wèn)2用戶名正確,密碼正確登錄成功登錄成功3用戶名正確,密碼錯(cuò)誤登錄失敗登錄失敗4用戶名留空,輸入密碼無(wú)法登錄無(wú)法登錄5輸入用戶名,密碼留空無(wú)法登錄無(wú)法登錄6使用被禁用的賬戶進(jìn)行登錄登錄失敗登錄失敗6.2個(gè)人信息修改功能測(cè)試個(gè)人信息修改時(shí),主要需要保證用戶輸入數(shù)據(jù)的有效性。通過(guò)HTML在前端進(jìn)行第一輪驗(yàn)證,之后在執(zhí)行保存時(shí)進(jìn)行第二輪驗(yàn)證,最后在寫入數(shù)據(jù)庫(kù)時(shí)通過(guò)約束進(jìn)行第三輪驗(yàn)證。用戶修改個(gè)人信息時(shí)也需要驗(yàn)證當(dāng)前的密碼信息,避免重要信息被惡意篡改。表6-2:個(gè)人信息修改功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1輸入原密碼,新密碼,確認(rèn)密碼修改成功修改成功2不輸入原密碼,輸入新密碼,確認(rèn)密碼修改失敗修改失敗3輸入原密碼,新密碼,隨意輸入確認(rèn)密碼修改失敗修改失敗4輸入原密碼,不輸入新密碼,輸入確認(rèn)密碼修改失敗修改失敗5輸入原密碼,修改姓名修改成功修改成功6不輸入原密碼,修改姓名修改失敗修改失敗7輸入原密碼,輸入無(wú)效姓名修改失敗修改失敗8輸入原密碼,輸入系統(tǒng)中已存在的手機(jī)號(hào)修改失敗修改失敗6.3系統(tǒng)管理模塊測(cè)試1、用戶管理用戶管理功能是系統(tǒng)管理員完成用戶維護(hù)的入口。除保障基礎(chǔ)功能實(shí)現(xiàn)外,還應(yīng)該保證用戶信息的有效性。在修改用戶信息的過(guò)程中,如用戶角色為顧客,則應(yīng)該禁止管理員進(jìn)行角色的修改。表6-3:用戶管理模塊測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1搜索框中輸入“te”,“st”,“test”進(jìn)行搜索搜索到用戶“test”搜索到用戶“test”2添加用戶,任意必填項(xiàng)留空添加失敗添加失敗3修改店鋪收營(yíng)員“test”用戶的角色修改成功修改成功4修改顧客“customer”的角色無(wú)此選項(xiàng)無(wú)此選項(xiàng)6禁用用戶“test”操作成功操作成功7啟用用戶“test”操作成功操作成功8刪除用戶“test”操作成功操作成功2、店鋪管理在店鋪管理的測(cè)試中,重點(diǎn)需要保證提交數(shù)據(jù)時(shí)對(duì)店鋪信息的有效性進(jìn)行驗(yàn)證。包括系統(tǒng)內(nèi)不得出現(xiàn)重名店鋪,店鋪位置可以留空。另外管理員在刪除店鋪時(shí),如店鋪內(nèi)包含除管理者外的其他用戶,應(yīng)當(dāng)提示并拒絕進(jìn)行刪除。表6-4:店鋪管理模塊測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1添加店鋪,填寫所有必填字段添加成功添加成功2添加店鋪,店鋪名與現(xiàn)有店鋪重復(fù)添加失敗添加失敗3添加店鋪,不填寫店鋪名添加失敗添加失敗4修改店鋪,輸入合法店鋪名修改成功修改成功5修改店鋪,店鋪名留空修改失敗修改失敗6刪除店鋪,店鋪內(nèi)無(wú)管理員外其他成員刪除成功刪除成功表6-4(續(xù)):店鋪管理模塊測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果7刪除店鋪,店鋪內(nèi)有其他成員刪除失敗刪除失敗6.4店鋪管理模塊測(cè)試1、店鋪信息維護(hù)店鋪管理員登錄系統(tǒng)后,可以通過(guò)店鋪信息維護(hù)頁(yè)面完成對(duì)店鋪信息的修改。此時(shí)頁(yè)面中應(yīng)當(dāng)展示當(dāng)前用戶管理店鋪的正確信息,并對(duì)提交的修改內(nèi)容進(jìn)行校驗(yàn)。表6-5:店鋪信息維護(hù)功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1修改店鋪名修改成功修改成功2輸入過(guò)長(zhǎng)的店鋪名輸入被截取輸入被截取3店鋪名留空修改失敗修改失敗4修改店鋪地址修改成功修改成功6輸入過(guò)長(zhǎng)的店鋪地址輸入被截取輸入被截取7店鋪地址留空修改成功修改成功2、成員管理成員管理功能主要提供系統(tǒng)管理員管理當(dāng)前店鋪內(nèi)的成員以及查詢相關(guān)信息的功能。店鋪的管理員只能查看和修改當(dāng)前店鋪的成員信息。進(jìn)行成員添加時(shí),應(yīng)當(dāng)只能查看到系統(tǒng)中暫未綁定店鋪的成員,其他成員應(yīng)當(dāng)被隱藏。表6-6:成員管理模塊測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1搜索“王”搜索到人員“王剛”搜索到人員“王剛”2添加成員界面只顯示未綁定店鋪用戶是是3刪除成員后,成員列表中無(wú)被刪除的成員是是4編輯成員,填寫未存在的卡片信息,保存保存成功保存成功表6-6(續(xù)):成員管理模塊測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果6編輯成員,填寫已存在的卡片信息保存失敗保存失敗3、商品管理商品管理功能負(fù)責(zé)完成對(duì)當(dāng)前店鋪商品庫(kù)存信息的維護(hù)。測(cè)試的重點(diǎn)包括商品信息的合法性和庫(kù)存信息的合法性。表6-7:商品管理模塊測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1搜索“米”搜索到商品“米飯”搜索到商品“米飯”2添加商品,填寫所有信息添加成功添加成功3添加商品,隨機(jī)必填字段留空添加失敗添加失敗4編輯商品,價(jià)格填寫為0修改成功修改成功5編輯商品,庫(kù)存輸入-1修改失敗修改失敗6下架商品“可樂(lè)”操作成功操作成功7上架商品“可樂(lè)”操作成功操作成功8刪除商品“可樂(lè)”操作成功操作成功4、流水查看流水查看頁(yè)面是管理員快速查看當(dāng)天交易的功能入口。在保障當(dāng)天信息可以正常查看的基礎(chǔ)上,還需要對(duì)時(shí)間段搜索的功能進(jìn)行測(cè)試,保障功能的正常運(yùn)行。表6-8:流水查看模塊測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1主界面顯示今日統(tǒng)計(jì)圖表是是2在篩選框中選擇指定日期后查詢顯示指定日期區(qū)間的數(shù)據(jù)顯示指定日期區(qū)間的數(shù)據(jù)6.5顧客個(gè)人管理模塊測(cè)試顧客個(gè)人管理模塊主要負(fù)責(zé)會(huì)員登錄后完成個(gè)人信息的修改和查詢。充值時(shí)需要通過(guò)讀取登錄用戶的信息,找到有效的可充值卡片進(jìn)行充值,否則應(yīng)該及時(shí)提示用戶當(dāng)前狀態(tài)無(wú)法充值。表6-9:在線充值功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1用戶無(wú)有效卡片無(wú)法充值無(wú)法充值2用戶有有效卡片,輸入有效充值金額充值成功充值成功3用戶有有效卡片,輸入無(wú)效充值金額充值失敗充值失敗6.6交易終端測(cè)試交易終端程序作為直接涉及交易的部分,出現(xiàn)問(wèn)題時(shí)對(duì)系統(tǒng)的危害度大,有必要對(duì)每個(gè)功能點(diǎn)進(jìn)行細(xì)致的測(cè)試。1、登錄測(cè)試登錄功能的目的主要是防止系統(tǒng)的未授權(quán)訪問(wèn)。登錄時(shí)后端應(yīng)當(dāng)檢查登錄的用戶信息,對(duì)于不具備登錄資格以及賬戶無(wú)效的登錄請(qǐng)求應(yīng)該拒絕,并阻止操作者進(jìn)入功能界面。表6-10:交易終端登錄功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1輸入服務(wù)器地址,密鑰,掃描管理員卡片登錄成功登錄成功2輸入服務(wù)器地址,不輸入密鑰,掃描管理員卡片登錄失敗登錄失敗3輸入服務(wù)器地址,密鑰,掃描顧客卡片登錄失敗登錄失敗4輸入服務(wù)器地址,密鑰,掃描系統(tǒng)中不存在的卡片登錄失敗登錄失敗2、會(huì)員卡管理會(huì)員卡管理功能負(fù)責(zé)完成系統(tǒng)中對(duì)顧客卡片的各項(xiàng)管理操作。在操作過(guò)程中需要保證輸入信息有效性以及卡片的有效性。在部分功能中還需要對(duì)卡片的異常使用情況(如掛失)進(jìn)行提示,方便收銀員及時(shí)了解卡片狀態(tài)并停止相關(guān)操作。(1)開(kāi)卡開(kāi)卡時(shí),程序需要在提交前對(duì)必填的信息進(jìn)行檢測(cè),確保提交時(shí)必填項(xiàng)都已填寫并符合系統(tǒng)內(nèi)字段的規(guī)則。信息提交后,如出現(xiàn)用戶名或手機(jī)號(hào)已被占用的情況,應(yīng)該出現(xiàn)提示并停止開(kāi)卡流程。表6-11:開(kāi)卡功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1填寫所有字段,掃描新卡片開(kāi)卡成功開(kāi)卡成功2任意必填字段留空,掃描新卡片開(kāi)卡失敗開(kāi)卡失敗3填寫所有字段,掃描已存在卡片開(kāi)卡失敗開(kāi)卡失敗4填寫系統(tǒng)中存在的手機(jī)號(hào),掃描新卡片開(kāi)卡失敗開(kāi)卡失敗5填寫系統(tǒng)中存在的用戶名,掃描新卡片開(kāi)卡失敗開(kāi)卡失?。?)充值充值時(shí)應(yīng)當(dāng)在驗(yàn)證卡片有效性后才能進(jìn)行。充值時(shí)收銀員若輸入了超過(guò)單次可充值金額,應(yīng)當(dāng)出現(xiàn)提示并停止充值流程。若充值后將超出卡片余額上限時(shí),也應(yīng)當(dāng)出現(xiàn)提示并終止充值流程。表6-12:充值功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1掃描正??ㄆ?,輸入正確金額充值成功充值成功2掃描正??ㄆ?,輸入無(wú)效金額充值失敗充值失敗3掃描正??ㄆ?,輸入正確金額,但充值后卡片余額超限充值失敗充值失敗4掃描掛失卡片,輸入正確金額充值失敗充值失敗5掃描過(guò)期卡片,輸入正確金額充值失敗充值失敗(3)續(xù)期進(jìn)行卡片續(xù)期時(shí),若卡片已被掛失,應(yīng)當(dāng)出現(xiàn)提示警告收銀員,并禁止進(jìn)行續(xù)期操作。續(xù)期時(shí)可以不選擇日期,此時(shí)則自動(dòng)續(xù)期至當(dāng)前日期后的三年。若選擇了早于今日的日期,系統(tǒng)應(yīng)提示日期無(wú)效。表6-13:續(xù)期功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1掃描正??ㄆ?,輸入正確日期續(xù)期成功續(xù)期成功表6-13(續(xù)):續(xù)期功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果2掃描正常卡片,不輸入日期續(xù)期3年續(xù)期3年3掃描正常卡片,輸入無(wú)效日期續(xù)期失敗續(xù)期失敗4掃描掛失卡片,輸入正確日期續(xù)期失敗續(xù)期失敗5掃描過(guò)期卡片,輸入正確日期續(xù)期成功續(xù)期成功(4)掛失/解除掛失進(jìn)行掛失操作時(shí),應(yīng)該輸入卡片ID或用戶的手機(jī)號(hào)進(jìn)行搜索,如直接掃描對(duì)應(yīng)卡片,應(yīng)當(dāng)無(wú)法進(jìn)行掛失操作。進(jìn)行解除掛失操作時(shí),應(yīng)當(dāng)掃描需要解除掛失的卡片,若通過(guò)搜索查找卡片,應(yīng)當(dāng)無(wú)法進(jìn)行解除掛失操作。表6-14:掛失/解除掛失功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1掃描正常卡片無(wú)需解除掛失無(wú)需解除掛失2解除掛失,掃描掛失卡片解除掛失成功解除掛失成功3搜索用戶名test找到卡片信息找到卡片信息4搜索用戶名null找不到卡片信息找不到卡片信息5搜索卡片TESTSIMPLECARD找到卡片信息找到卡片信息6搜索卡片MEIYOUCIKAPIAN找不到卡片信息找不到卡片信息7選擇正常卡片進(jìn)行掛失掛失成功掛失成功8選擇掛失卡片進(jìn)行掛失掛失失敗掛失失?。?)注銷注銷卡片時(shí),若系統(tǒng)中掃描到已經(jīng)被掛失的卡片,需要警告收銀員并禁止繼續(xù)注銷流程。若掃描的卡片處于正常狀態(tài)或過(guò)期狀態(tài),則可以繼續(xù)注銷流程。表6-15:注銷功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1掃描正??ㄆN成功注銷成功2掃描掛失卡片注銷失敗注銷失敗3掃描過(guò)期卡片注銷成功注銷成功4掃描不存在卡片注銷失敗注銷失?。?)查詢交易記錄查詢交易記錄時(shí),此時(shí)只要卡片存在于系統(tǒng)中,就應(yīng)當(dāng)展示卡片的相關(guān)信息和近期交易記錄。若掃描的卡片在系統(tǒng)中不存在,則提示找不到卡片的相關(guān)信息和交易記錄。表6-16:查詢交易記錄功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1掃描正??ㄆ樵兂晒Σ樵兂晒?掃描掛失卡片查詢成功查詢成功3掃描過(guò)期卡片查詢成功查詢成功4掃描不存在卡片查詢失敗查詢失敗3、收銀收銀功能供收銀員完成下單操作。在此過(guò)程中涉及多個(gè)表數(shù)據(jù)的聯(lián)動(dòng),因此設(shè)計(jì)了多次的信息驗(yàn)證避免出現(xiàn)信息異常。同時(shí)對(duì)使用掛失卡進(jìn)行消費(fèi)的行為需要及時(shí)警告收銀員,保護(hù)顧客的財(cái)產(chǎn)。表6-17:收銀功能測(cè)試表測(cè)試用例編號(hào)測(cè)試項(xiàng)目預(yù)計(jì)結(jié)果實(shí)際結(jié)果1添加庫(kù)存充足商品到購(gòu)物車添加成功添加成功2添加庫(kù)存不足商品到購(gòu)物車添加失敗添加失敗3結(jié)賬時(shí)掃描額度充足卡片結(jié)賬成功結(jié)賬成功4結(jié)賬時(shí)掃描額度不足卡片結(jié)賬失敗結(jié)賬失敗6結(jié)賬時(shí)其中一個(gè)商品庫(kù)存不足結(jié)賬失敗結(jié)賬失敗7結(jié)賬時(shí)掃描過(guò)期卡片結(jié)賬失敗結(jié)賬失敗8結(jié)賬時(shí)掃描掛失卡片結(jié)賬失敗結(jié)賬失敗
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技企業(yè)技術(shù)文檔語(yǔ)言規(guī)范制度
- 工作調(diào)動(dòng)后事業(yè)單位聘用合同(2篇)
- 銀川-PEP-2024年11版小學(xué)5年級(jí)下冊(cè)英語(yǔ)第五單元測(cè)驗(yàn)卷
- 思維導(dǎo)圖在初中生物學(xué)重要概念教學(xué)中的應(yīng)用
- 學(xué)校購(gòu)買灶具協(xié)議書(2篇)
- 儲(chǔ)煤場(chǎng)租賃合同的稅務(wù)處理
- VR直播娛樂(lè)技術(shù)合作協(xié)議范本
- 《兼職勞動(dòng)合同》
- 生態(tài)修復(fù)工程沉降觀測(cè)方案
- 化工廠安全生產(chǎn)方案
- 2024年山東省春季高考數(shù)學(xué)試卷試題真題(含答案)
- 新生兒高膽紅素血癥護(hù)理查房 (精制手工圖文)
- 審計(jì)招投標(biāo)合同范本
- 2024年《種子生產(chǎn)經(jīng)營(yíng)者及種子法》知識(shí)考試題庫(kù)與答案
- 醫(yī)療機(jī)構(gòu)聘用合同標(biāo)準(zhǔn)范本
- 2024-2030年中國(guó)移動(dòng)運(yùn)營(yíng)行業(yè)深度分析及發(fā)展戰(zhàn)略研究咨詢報(bào)告
- 服裝行業(yè)競(jìng)爭(zhēng)對(duì)手分析
- 教室使用登記表
- 易制毒化學(xué)品培訓(xùn)教育制度
- 中成藥處方審核專家講座
- 2014年4月自考00804金融法二試題及答案含解析
評(píng)論
0/150
提交評(píng)論