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