目 錄
摘 要 I
Abstract II
引 言 1
1 系統(tǒng)開發(fā)相關(guān)技術(shù) 3
1.1 SpringBoot框架 3
1.1.1發(fā)展歷程 3
1.1.2 什么是SpringBoot 3
1.1.3 SpringBoot特性 3
1.1.4 SpringBoot的優(yōu)勢 3
1.2 MyBatis框架 4
1.2.1框架簡介 4
1.2.2框架特性 4
1.3 Java語言 5
1.3.1 Java語言簡介 5
1.3.2 Java語言的重要特性 5
1.4 BootStrap框架 6
1.4.1框架簡介 6
1.4.2框架特性 6
1.5小結(jié) 6
2 系統(tǒng)分析 7
2.1功能性需求 7
2.1.1 商品庫存模塊分析 8
2.1.2 供應(yīng)商數(shù)據(jù)模塊分析 8
2.1.3 消費(fèi)者數(shù)據(jù)模塊分析 9
2.1.4 銷售數(shù)據(jù)模塊分析 9
2.1.5 管理員模塊分析 9
2.2 非功能需求分析 10
2.2.1 編碼規(guī)范 10
2.2.2 界面要求 10
2.3 小結(jié) 10
3 系統(tǒng)設(shè)計(jì) 11
3.1 系統(tǒng)架構(gòu)設(shè)計(jì) 11
3.2 客戶端服務(wù)端通信設(shè)計(jì) 12
3.3 數(shù)據(jù)庫設(shè)計(jì) 13
3.4 數(shù)據(jù)分析核心設(shè)計(jì) 19
3.5 小結(jié) 20
4 系統(tǒng)實(shí)現(xiàn) 21
4.1系統(tǒng)服務(wù)端實(shí)現(xiàn) 21
4.1.1商品庫存分析模塊 21
4.1.2 供應(yīng)商數(shù)據(jù)分析模塊 22
4.1.3 消費(fèi)者數(shù)據(jù)分析模塊 23
4.1.4 銷售數(shù)據(jù)分析模塊 24
4.1.5管理員模塊 25
4.2 瀏覽器客戶端的實(shí)現(xiàn) 26
4.2.1 動(dòng)銷率分析 26
4.2.2 庫存比分析 27
4.2.3 庫銷比分析 27
4.2.4滯銷商品分析 27
4.2.5 庫存預(yù)警 28
4.2.6 商品分類供應(yīng)比例分析 28
4.2.7 商品退貨分析 29
4.2.8 客流量分析 29
4.2.9 客單價(jià)分析 30
4.2.10 客層分析 30
4.2.11 消費(fèi)者滿意度分析 31
4.2.12 銷售額分析 31
4.2.13 毛利潤分析 32
4.2.14 凈利潤分析 32
4.2.15 員工績效分析 33
4.2.16 系統(tǒng)登錄 33
4.2.17 查看或更改個(gè)人信息 34
4.2.18 修改密碼 34
4.2.19 查看登錄日志 35
4.2.20 查看密碼修改日志 35
4.3 小結(jié) 36
5 測試部署 37
5.1系統(tǒng)測試 37
5.2 系統(tǒng)部署 39
5.3 小結(jié) 40
結(jié) 論 41
致 謝 42
參考文獻(xiàn) 43
摘 要
傳統(tǒng)中小型超市進(jìn)銷存系統(tǒng)僅僅能夠提供數(shù)據(jù)的管理功能,沒有任何數(shù)據(jù)分析能力,導(dǎo)致大量具有時(shí)效性的數(shù)據(jù)被浪費(fèi),不利于中小型超市的未來發(fā)展?;赟pringBoot的中小型超市數(shù)據(jù)分析系統(tǒng)是一款Web應(yīng)用系統(tǒng)。本系統(tǒng)在中小型超市進(jìn)銷存系統(tǒng)運(yùn)營基礎(chǔ)上,分離其數(shù)據(jù)產(chǎn)物,利用數(shù)據(jù)庫定義數(shù)據(jù)之間的關(guān)系規(guī)則,并將數(shù)據(jù)應(yīng)用于這種規(guī)則,實(shí)現(xiàn)對中小型超市的數(shù)據(jù)分析能力。系統(tǒng)設(shè)計(jì)的架構(gòu)模式為B/S結(jié)構(gòu),瀏覽器端應(yīng)用BootStrap框架實(shí)現(xiàn)頁面渲染、SpringBoot框架構(gòu)建服務(wù)端。數(shù)據(jù)庫服務(wù)器選擇MySQL服務(wù)器。系統(tǒng)主要由商品庫存分析、供應(yīng)商數(shù)據(jù)分析、消費(fèi)者數(shù)據(jù)分析、銷售數(shù)據(jù)分析、管理員五大功能模塊組成,實(shí)現(xiàn)了對中小型超市數(shù)據(jù)信息的圖形化分析處理。本系統(tǒng)的開發(fā)價(jià)值是多角度的。首先,系統(tǒng)能提供給用戶最直觀、簡潔的分析數(shù)據(jù),系彌補(bǔ)了銷售行業(yè)里中小型超市數(shù)據(jù)分析領(lǐng)域的市場空缺,使中小型超市能夠簡單的擁有自己的數(shù)據(jù)分析能力。其次,本系統(tǒng)能夠?yàn)橹行⌒统性跔I銷、管理等多個(gè)方便提供準(zhǔn)確、客觀的數(shù)據(jù)支持。通過該系統(tǒng)能夠準(zhǔn)確找到中小型超市自身存在優(yōu)勢與不足,保證了中小型超市能夠在殘酷的市場競爭中穩(wěn)步前進(jìn),對中小型超市的健康可持續(xù)發(fā)展具有指導(dǎo)意義。
關(guān)鍵詞:SpringBoot; MyBatis; MySQL; 數(shù)據(jù)分析
Abstract
The traditional small and medium-sized supermarket invoicing system can only provide data management functions without any data analysis capabilities, resulting in a large amount of time-sensitive data being wasted, which is not conducive to the future development of small and medium-sized supermarkets. The data analysis system of small and medium-sized supermarkets based on SpringBoot is a Web application system. This system is based on the operation of the small and medium-sized supermarket invoicing system. It separates its data products, uses the database to define the relationship rules between the data, and applies the data to such rules to realize the data analysis capability of the small and medium-sized supermarkets. The architecture mode of the system design is B / S structure. The browser side uses BootStrap framework to realize page rendering and SpringBoot framework to build the server. Select MySQL server as the database server. The system is mainly composed of five major functional modules: commodity inventory analysis, supplier data analysis, consumer data analysis, sales data analysis, and administrator, and implements graphical analysis and processing of data information for small and medium-sized supermarkets. The development value of this system is multi-angle. First of all, the system can provide users with the most intuitive and concise analysis data, which makes up for the market gap in the data analysis of small and medium-sized supermarkets in the sales industry, so that small and medium-sized supermarkets can simply have their own data analysis capabilities. Secondly, the system can provide accurate and objective data support for marketing and management of small and medium-sized supermarkets. The system can accurately find the advantages and disadvantages of small and medium-sized supermarkets, which ensures that small and medium-sized supermarkets can steadily advance in the brutal market competition, and has a guiding significance for the healthy and sustainable development of small and medium-sized supermarkets.
Keywords: SpringBoot; MyBatis; MySQL; Data analysis
引 言
隨著21世紀(jì)以來計(jì)算機(jī)科學(xué)技術(shù)水平的高度發(fā)展和不斷進(jìn)步,數(shù)據(jù)化、信息化的時(shí)代加速到來,人們每天所面對和收集的信息量越來越多,數(shù)據(jù)分析漸漸走進(jìn)了人們的生活。數(shù)據(jù)分析在國內(nèi)外引起極大關(guān)注,國外的發(fā)展已經(jīng)到達(dá)了輕車熟路的地步,其市場額度已經(jīng)是每年達(dá)到千億美元級別。同時(shí),國外的數(shù)據(jù)分析行業(yè)有著重要的地位。美國為了進(jìn)行專業(yè)的數(shù)據(jù)分析,專門成立了數(shù)據(jù)中心,為本國和世界其他國家的數(shù)據(jù)分析研究提供了平臺(tái)。中國在經(jīng)濟(jì)迅速崛起的過程中,各大企業(yè)都充分的了解數(shù)據(jù)分析在重大決策前的必要性。正是由于以上種種因素,在我國社會(huì)中數(shù)據(jù)分析的人才需求特別多,并且短期內(nèi)求過于供。
數(shù)據(jù)分析主要的內(nèi)容是找到在看似無規(guī)則的數(shù)據(jù)中萃取有用的信息,找到其中隱含的關(guān)聯(lián)規(guī)則。數(shù)據(jù)分析在實(shí)際應(yīng)用中能夠幫助人們做出更加符合實(shí)際的決策。數(shù)據(jù)分析如果沒有數(shù)據(jù)的支撐是完全沒有意義的,討論數(shù)據(jù)分析,最先考慮到的是分析的對象,每一個(gè)企業(yè)每一個(gè)人或者事物都可作為數(shù)據(jù)分析的對象。企業(yè)的數(shù)據(jù)來源通常是內(nèi)部產(chǎn)生或者外部引進(jìn),數(shù)據(jù)分析企業(yè)的價(jià)值主要體現(xiàn)在增強(qiáng)了用戶的體驗(yàn),實(shí)現(xiàn)了企業(yè)資源的更加高效的利用,進(jìn)而讓企業(yè)充分發(fā)揮自身優(yōu)勢,實(shí)現(xiàn)利潤和發(fā)展齊頭并進(jìn)。
數(shù)據(jù)分析在大型企業(yè)內(nèi)部有著廣泛的應(yīng)用,隨著技術(shù)工具的成熟,數(shù)據(jù)分析正在慢慢向人們生活的每個(gè)角落滲透。即使這樣,數(shù)據(jù)分析領(lǐng)域依然有空缺。對于零售行業(yè)來說,中小型超市的數(shù)據(jù)分析應(yīng)用領(lǐng)域基本無人問津。由于其數(shù)據(jù)來源非常廣泛,每天的營業(yè)額、客流量、利潤、商品售出量、庫存增減等一系列指標(biāo)都可作為數(shù)據(jù)分析的對象,市場前景非常廣闊?;赟pringBoot的中小型超市數(shù)據(jù)分析系統(tǒng)能夠?qū)χ行⌒统械倪\(yùn)營過程中的數(shù)據(jù)進(jìn)行分析,將分析結(jié)果反饋給超市管理者,讓管理者更加方便的管理和營銷,使中小型超市的每一項(xiàng)決策都腳踏實(shí)地,真正做到數(shù)據(jù)化、科學(xué)化管理。綜上所述,本系統(tǒng)能正確、高效地利用好中小型超市經(jīng)營數(shù)據(jù),從數(shù)據(jù)中找到對超市未來發(fā)展有指導(dǎo)意義的信息,解決了中小型超市當(dāng)下面臨的數(shù)據(jù)分析應(yīng)用的難題。
文章采用如下結(jié)構(gòu):
引言部分分析論證國內(nèi)外數(shù)據(jù)分析技術(shù)的發(fā)展和應(yīng)用現(xiàn)狀、數(shù)據(jù)分析目前重要的市場地位、數(shù)據(jù)分析的意義和價(jià)值、能夠解決的問題、以及數(shù)據(jù)分析在中小型超市中的應(yīng)用,與其帶來的實(shí)際效果。
系統(tǒng)開發(fā)相關(guān)技術(shù)部分指出開發(fā)應(yīng)用的有關(guān)技術(shù)。具體列舉SpringBoot技術(shù)、MyBatis框架技術(shù)、Java語言、BootStrap框架技術(shù)。從框架和開發(fā)語言的特性以及優(yōu)勢兩個(gè)方面說明選擇以上技術(shù)的原因。
系統(tǒng)分析部分通過用例圖指出系統(tǒng)的具體用例。介紹系統(tǒng)的模塊劃分,系統(tǒng)的具體工作原理,和系統(tǒng)各個(gè)模塊需求的拆分。同時(shí),也介紹了系統(tǒng)在實(shí)現(xiàn)過程中的一些具體開發(fā)要求。
系統(tǒng)設(shè)計(jì)部分闡明系統(tǒng)架構(gòu)原理,系統(tǒng)架構(gòu)的優(yōu)勢,數(shù)據(jù)庫表結(jié)構(gòu)的設(shè)計(jì),包括每張數(shù)據(jù)表的字段類型、約束等具體信息。同時(shí),對系統(tǒng)客戶端瀏覽器到服務(wù)端服務(wù)器的通信原理進(jìn)行解析。
系統(tǒng)實(shí)現(xiàn)部分闡明系統(tǒng)各個(gè)模塊的實(shí)現(xiàn)原理并列舉部分功能模塊實(shí)現(xiàn)的代碼。同時(shí)進(jìn)行系統(tǒng)的客戶端瀏覽器界面設(shè)計(jì)的結(jié)果展示,對于系統(tǒng)實(shí)現(xiàn)的服務(wù)端、數(shù)據(jù)庫存儲(chǔ)過程等核心代碼舉例介紹。
測試部署部分說明系統(tǒng)每一個(gè)模塊的測試用例。包括系統(tǒng)測試內(nèi)容、測試中操作、期望得到的結(jié)果,以及實(shí)際測試完畢后的結(jié)果。并且,將測試前的假設(shè)結(jié)果和測試后得到的真實(shí)數(shù)據(jù)結(jié)果對比,給出測試結(jié)論。
1 系統(tǒng)開發(fā)相關(guān)技術(shù)
1.1 SpringBoot框架
1.1.1發(fā)展歷程
Spring框架慢慢變得成熟之后無論在個(gè)人開發(fā)還是企業(yè)開發(fā)中都應(yīng)用非常廣泛[1]。由此Spring 有原來功能單一體量很小的框架逐漸演變稱為功能豐富,能夠解決大多數(shù)企業(yè)級開發(fā)問題開源框架[2]。Spring對Apache軟件基金會(huì)的多數(shù)開源軟件都能夠完美支持。但是任何事物不會(huì)十全十美,盡管Spring有著各種各樣的優(yōu)點(diǎn),但配置文件非常復(fù)雜晦澀[3]。為了解決以上各種難題,SpringBoot誕生了。
SpringBoot的面世讓開發(fā)者們不在為復(fù)雜的配置文件頭疼,但是它是在Spring框架的基礎(chǔ)上研發(fā)的,為了讓開發(fā)者更好的使用SpringBoot,官方對其十分重視,現(xiàn)在已經(jīng)成為公司的頂級項(xiàng)目,為SpringBoot技術(shù)的未來發(fā)展奠定了良好的基礎(chǔ)。
1.1.2 什么是SpringBoot
SpringBoot 技術(shù)由 Pivotal 技術(shù)團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新 Spring 應(yīng)用的初始搭建以及開發(fā)過程[4]。
SpringBoot技術(shù)讓Spring應(yīng)用的開發(fā)過程變得非常簡單,一個(gè)成型的軟件產(chǎn)品運(yùn)用SpringBoot框架來開發(fā)以少量的代碼就可以完成。當(dāng)開發(fā)者用到了其他開源框架的時(shí)候,不必?fù)?dān)心整合問題,SpringBoot已經(jīng)把一切都準(zhǔn)備好了。例如,本系統(tǒng)用到了SpringBoot技術(shù),包括SpringMVC、Spring、MyBatis技術(shù)框架的整合[5],也就是SSM框架。
1.1.3 SpringBoot特性
(1)使用 SpringBoot技術(shù)可以快速構(gòu)建一個(gè)項(xiàng)目
(2)內(nèi)置Tomcat、Jetty等Web容器
(3)強(qiáng)大開源社區(qū)支持,開發(fā)工具包眾多
(4)支持項(xiàng)目熱啟動(dòng)
(5)能夠在運(yùn)行在多數(shù)開發(fā)環(huán)境如 IntelliJ IDEA 、eclipse
1.1.4 SpringBoot的優(yōu)勢
假設(shè)沒有利用SpringBoot 之前開發(fā)一個(gè) Web 項(xiàng)目需要做哪些工作?首先需要有最基本的web.xml和applicationContext.xml,web.xml在JavaWeb項(xiàng)目中不是必須的[6],但用Spring框架開發(fā)時(shí),web.xml必須要配置,作用是加載Spring配置文件。此外,還需要Dao、Service分層配置文件、日志文件等。大型項(xiàng)目中需要的配置會(huì)更多更加復(fù)雜。
不僅僅是配置方面存在以上問題。在拉取開發(fā)工具包的時(shí)候出現(xiàn)版本兼容性和沖突的可能性非常大,導(dǎo)致程序出現(xiàn)莫名其妙的錯(cuò)誤。這個(gè)時(shí)候SpringBoot的優(yōu)勢就非常明顯,這些問題都會(huì)被SpringBoot解決,開發(fā)者只需專注代碼編寫。
1.2 MyBatis框架
1.2.1框架簡介
MyBatis作為持久層框架[7],能夠自定義實(shí)現(xiàn)SQL、存儲(chǔ)過程以及高級映射,是一款半自動(dòng)框架。MyBatis將JDBC進(jìn)行封裝處理,但不會(huì)像JDBC那樣手動(dòng)獲取參數(shù)和結(jié)果集,而是通過XML配置或者注解配置來實(shí)現(xiàn)對象的一一映射,通過接口返回執(zhí)行結(jié)果。
1.2.2框架特性
(1)對JDBC的進(jìn)一步封裝
JDBC通過各個(gè)數(shù)據(jù)庫廠商定制API實(shí)現(xiàn)數(shù)據(jù)庫的交互[8],但JDBC十分偏底層,實(shí)現(xiàn)數(shù)據(jù)庫訪問的功能需要編寫大量代碼。在實(shí)現(xiàn)插入功能的時(shí)候,MyBatis只需要調(diào)用insert接口,傳遞對象參數(shù)即可實(shí)現(xiàn)插入功能,返回操作結(jié)果。
(2)學(xué)習(xí)難度低
MyBatis的學(xué)習(xí)和在實(shí)際項(xiàng)目中的應(yīng)用都很簡單,這也是該框架為什么那么流行的一個(gè)原因。倘若開發(fā)者對Java語言和數(shù)據(jù)庫腳本非常熟悉,那么入門學(xué)習(xí)非常容易。
(3)自定義SQL語句
類似的ORM框架,如Hibernate,是全自動(dòng)框架,所有SQL語句自動(dòng)生成,雖然可以節(jié)省時(shí)間,但大大降低了靈活性,MyBatis框架能夠自定義SQL語句,能夠充分利用不同廠商數(shù)據(jù)庫的自有特性。
(4)可以與Spring完美集成
MyBatis框架支持與Spring框架的集成,利用配置文件將二者無縫銜接,SSM框架就是經(jīng)典案例,這也使MyBatis框架更加易用。
(5)良好的性能
MyBatis支持池化技術(shù),能非常有效的減少資源開銷,大幅度提升程序運(yùn)行效率。
1.3 Java語言
1.3.1 Java語言簡介
Java語言是一種純粹的面向?qū)ο笳Z言[9],分為JavaME、JavaSE、JavaEE三個(gè)平臺(tái)。從Java誕生以來,成為了全世界開發(fā)者關(guān)注的熱點(diǎn)。其融合了C++語言的開發(fā)優(yōu)勢,放棄了C++里多繼承、指針等晦澀難懂的概念,成為了最受歡迎的編程語言之一。
1.3.2 Java語言的重要特性
(1)跨平臺(tái):Java的跨平臺(tái)特性是Java語言的一個(gè)非常重要的特性[10],Java語言是半編譯半解釋型的語言,Java源文件經(jīng)過JVM編譯成為字節(jié)碼文件,這些字節(jié)碼文件由JVM負(fù)責(zé)解釋執(zhí)行。Windows、Linux平臺(tái)有各自的JVM,但是都可以解釋編譯后的字節(jié)碼文件,基于此消除了平臺(tái)之前的障礙。Java如此受歡迎,和這一特性有著不可分割的關(guān)系。
(2)簡單:Java放棄了C++語言多繼承、指針、運(yùn)算符重載等特性[11],使其更加簡潔,眾多強(qiáng)大的開源社區(qū)、開源軟件庫為Java開發(fā)提供有力支持,海量的技術(shù)文檔能夠解決大多數(shù)開發(fā)難題,面向?qū)ο蠹夹g(shù)使得應(yīng)用程序的開發(fā)變得簡單易用,節(jié)省代碼。
(3)面向?qū)ο螅篔ava語言里,一切都是對象[12],對象有屬性和行為。對象的屬性可以存取數(shù)據(jù),對象的行為可以操作數(shù)據(jù)。Java是一種面向?qū)ο蟮恼Z言,能夠支持程序的擴(kuò)展性、復(fù)用性等多個(gè)方面
(4)安全性:Java在編譯Java文件時(shí),會(huì)對文件進(jìn)行校驗(yàn),確保文件中的內(nèi)容是JVM能夠接受的[13],并且不會(huì)對JVM造成損害。運(yùn)行過程中在經(jīng)過字節(jié)碼校驗(yàn)之后類加載器會(huì)把字節(jié)碼文件載入,這就保證了JVM的平穩(wěn)安全運(yùn)行,同時(shí)Java用引用代替了指針,加上自動(dòng)垃圾回收機(jī)制,開發(fā)者減少了內(nèi)存泄漏的風(fēng)險(xiǎn)[14]。
1.4 BootStrap框架
1.4.1框架簡介
Bootstrap框架是Twitter公司研發(fā)的一款前端框架,目前在國內(nèi)比較流行。Bootstrap 基于HTML、CSS、JavaScript,使用簡便,用戶可以根據(jù)需求定制。其豐富的組件,漂亮的界面幾乎能夠滿足所有Web應(yīng)用前端頁面的需要,讓W(xué)eb應(yīng)用開發(fā)更簡單、便捷。
1.4.2框架特性
(1)瀏覽器支持:大多數(shù)瀏覽器都能夠很好的兼容Bootstrap。
(2)容易上手:有網(wǎng)頁設(shè)計(jì)的基礎(chǔ)知識(shí),就能夠輕松學(xué)習(xí)BootStrap。
(3)統(tǒng)一的前端接口解決方案。
(4)內(nèi)置功能強(qiáng)大易用的組件,個(gè)性化定制。
(5)Web應(yīng)用開發(fā)前端設(shè)計(jì)最佳解決方案。
(6)開源框架,無版權(quán)限制。
1.5小結(jié)
本章主要介紹了系統(tǒng)開發(fā)涉及到的技術(shù)。包括SpringBoot框架、MyBatis框架、Java語言、BootStrap框架,主要是從技術(shù)的起源、特性、應(yīng)用場景以及開發(fā)優(yōu)勢四個(gè)角度進(jìn)行簡單介紹。
2 系統(tǒng)分析
2.1功能性需求
本系統(tǒng)劃分為五個(gè)模塊,分別為商品庫存分析模塊、供應(yīng)商數(shù)據(jù)分析模塊、消費(fèi)者數(shù)據(jù)分析模塊、銷售數(shù)據(jù)分析模塊、管理員模塊。數(shù)據(jù)分析系統(tǒng)用例圖見圖2.1。
圖2.1 數(shù)據(jù)分析系統(tǒng)用例圖
圖2.2為系統(tǒng)流程圖,客戶端把用戶輸入的數(shù)據(jù)打包發(fā)送給后臺(tái)服務(wù)器,服務(wù)器對用戶名和密碼進(jìn)行校驗(yàn),在驗(yàn)證完畢后把結(jié)果反饋給客戶端,登錄成功之后,用戶可以操作商品庫存分析、供應(yīng)商數(shù)據(jù)分析、消費(fèi)者數(shù)據(jù)分析、銷售數(shù)據(jù)分析幾大功能模塊。
圖2.2 系統(tǒng)流程圖
2.1.1 商品庫存模塊分析
動(dòng)銷率分析:此功能模塊分析超市庫存的動(dòng)銷率,動(dòng)銷率是指商品銷售品種數(shù)占中小型超市商品總種類數(shù)的百分比,這個(gè)比率是評價(jià)中小型超市各種商品銷售情況的指標(biāo)之一,商品動(dòng)銷率計(jì)算公式為:已銷售品種數(shù)/超市經(jīng)營總品種數(shù)。通過此模塊可以查看歷年每月商品庫存的動(dòng)銷率和本年度每個(gè)月的動(dòng)銷率。
庫存比分析:此功能模塊分析超市每種商品大分類的庫存占比,庫存比的含義是超市商品某一大分類庫存量,占超市所有商品大分類的總庫存量的百分比,結(jié)果可以看出每個(gè)大類商品的比例,從而分析那一大類商品庫存低需要補(bǔ)貨,那類商品庫存較高,如果不是暢銷商品,需要打折促銷。
庫銷比分析:此功能模塊分析商品每個(gè)月的銷售情況,庫銷比指的是指商品月平均庫存量與月平均銷售額的比值,能夠反映出中小型超市庫存與銷售額的綜合關(guān)系,比值越大,說明銷售情況不佳。
滯銷商品分析:此功能模塊可以分析出中小型超市一個(gè)月內(nèi)沒有銷售記錄的商品,即為滯銷商品。管理員可以該通過分析結(jié)果及時(shí)打折促銷,清理庫存,或者指定其他策略解決問題。
庫存預(yù)警:此功能模塊分析出每個(gè)種類商品的庫存狀態(tài),提供給超市管理者處于積壓狀態(tài)或短缺狀態(tài)的庫存商品數(shù)據(jù),商品短缺狀態(tài)指的是商品庫存不足所有商品平均庫存的百分之五十,此時(shí)說明該商品庫存數(shù)量特別低,即處于短缺狀態(tài),結(jié)合滯銷商品分析結(jié)果,確定是否需要及時(shí)補(bǔ)貨。商品積壓狀態(tài)指的是商品庫存大于平均商品庫存的百分之一百五十,確定商品是否滯銷后,進(jìn)而確定是否需要及時(shí)清理庫存。
2.1.2 供應(yīng)商數(shù)據(jù)模塊分析
商品分類供應(yīng)比例分析:通過此功能模塊可以分析供應(yīng)商的供應(yīng)商品數(shù)量占對應(yīng)商品分類的總供應(yīng)量的百分比。如果某一大分類、中分類或者小分類的商品全部由一個(gè)供應(yīng)商供應(yīng),那么超市管理者需要考慮是否需要引進(jìn)同類商品的其他品牌供應(yīng)商,來增加商品的品牌種類,進(jìn)而給消費(fèi)者更多的選擇機(jī)會(huì),增加銷售額或者銷售利潤。
商品退貨分析:通過此功能模塊可以分析出每個(gè)月每個(gè)品牌供應(yīng)商供應(yīng)商品的退貨信息,例如,那個(gè)大類或小類的商品退貨數(shù)量最多,說明該供應(yīng)商的商品無論是品牌還是商品質(zhì)量都不能達(dá)到客戶的要求,超市管理者可以考慮更換該類商品的供應(yīng)商,從而盡最大可能挽回?fù)p失。
2.1.3 消費(fèi)者數(shù)據(jù)模塊分析
客流量分析:通過此功能模塊可以查看每天的客流量,包括男型顧客、女性顧客的數(shù)量和顧客總數(shù)。管理者可以根據(jù)男性顧客和女性顧客的數(shù)量關(guān)系,指定商品采購計(jì)劃,如果女性顧客較多,那么應(yīng)該較多采購女性顧客大多需要的商品。
客單價(jià)分析:通過此功能模塊可以分析出每個(gè)月顧客的平均消費(fèi)情況,客單價(jià)的計(jì)算方法是在一個(gè)月內(nèi)的所有顧客消費(fèi)總額除以對應(yīng)年月的所有顧客數(shù)量。這組數(shù)據(jù)的意義是提供給管理者每個(gè)月客單價(jià)的變化。
客層分析:通過此功能模塊能夠分析中小型超市客流量中顧客的年齡段情況。例如,如果超市青年顧客居多,那么就應(yīng)該在超市中較多擺放一些年輕人喜愛的商品,刺激消費(fèi),提高利潤。
消費(fèi)者滿意度分析:通過此模塊能夠分析出消費(fèi)者對中小型超市各個(gè)方面的評價(jià)。該評價(jià)結(jié)果會(huì)反映出超市經(jīng)營管理方面的一些問題,在管理者了解問題之后,及時(shí)制定策略,留住消費(fèi)者。
2.1.4 銷售數(shù)據(jù)模塊分析
銷售額分析:通過此模塊能夠分析出某一種類商品在每一個(gè)月中銷售額情況。例如,可以分析出大分類為生鮮類,中分類為水果類,小分類為進(jìn)口水果的商品水蜜桃的銷售額情況。
毛利潤分析:通過此模塊可以分析出超市每一個(gè)月的毛利潤情況。毛利潤指的是銷售額減去售出產(chǎn)品成本,這個(gè)差值反映了中小型超市的盈利情況,如果差值越大,說明超市獲得毛利潤越多。
凈利潤分析:通過此模塊可以分析出超市每一個(gè)月的凈利潤情況。凈利潤指的是銷售額減去售出產(chǎn)品成本再減去所得稅,這個(gè)差值也能反映中小型超市的盈利情況,如果差值越大,說明超市獲得凈利潤越多。
員工績效分析:通過此模塊可以分析中小型超市員工的每一個(gè)月績效情況。例如,通過分析結(jié)果的展示,超市的管理者能夠輕松分析出每名員工在某一年中某一個(gè)月的銷售產(chǎn)品數(shù),從而制定員工計(jì)劃。
2.1.5 管理員模塊分析
系統(tǒng)管理員模塊實(shí)現(xiàn),登錄、注銷登錄、修改密碼、查看日志功能。管理員在輸入正確的用戶名密碼之后進(jìn)入系統(tǒng),可以查看系統(tǒng)日志,查看個(gè)人信息,修改個(gè)人信息。密碼修改過程需要再次輸入正確的登錄系統(tǒng)密碼后才能修改密碼,并且有密碼長度限制。
2.2 非功能需求分析
2.2.1 編碼規(guī)范
在進(jìn)行代碼編寫的過程中,要有良好的代碼規(guī)范[15]。包括項(xiàng)目的命名、包的命名、變量的命名等等。其次,變量名要有實(shí)際的意義,不能隨意命名。例如返回值可以定義為returnVal,采用駝峰命名規(guī)則。
2.2.2 界面要求
瀏覽器客戶端的界面要簡潔大方,要根據(jù)數(shù)據(jù)的特點(diǎn)來制定相應(yīng)的顯示控件。比值或者比例這樣特征的數(shù)值需要用餅狀圖來顯示。在用戶輸入錯(cuò)誤數(shù)據(jù)進(jìn)行驗(yàn)證后有友好的提示語提示用戶。例如“輸入不能為空,請重新輸入”。在前端編碼過程中要求同2.2.1的編碼規(guī)范。
2.3 小結(jié)
本章主要介紹了功能模塊需求以及項(xiàng)目的用例需求。重點(diǎn)分析了系統(tǒng)的功能模塊的劃分。每一個(gè)功能模塊的具體功能點(diǎn)。同時(shí),也指明了系統(tǒng)編碼需求和系統(tǒng)實(shí)現(xiàn)的界面要求,為系統(tǒng)實(shí)現(xiàn)章節(jié)做出鋪墊。
3 系統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)架構(gòu)設(shè)計(jì)
圖3.1為系統(tǒng)架構(gòu)圖,本系統(tǒng)遵循MVC設(shè)計(jì)模式[16],MVC設(shè)計(jì)模式是一種典范。其包括模型、視圖、控制器三個(gè)部分。視圖是一種數(shù)據(jù)解釋模型,能夠接受數(shù)據(jù)并且更新請求,可以發(fā)送用戶的數(shù)據(jù)給控制器,允許控制器選擇視圖,相當(dāng)于傳統(tǒng)JavaWeb開發(fā)中的JSP。控制器能夠接受用戶請求、調(diào)用模型響應(yīng)用戶請求并且選擇視圖顯示相應(yīng)結(jié)果。模型能夠封裝用戶的狀態(tài)、響應(yīng)狀態(tài)查詢、處理業(yè)務(wù)流程、通知視圖業(yè)務(wù)狀態(tài)更新。采用該設(shè)計(jì)模式能讓系統(tǒng)各個(gè)組件之間相互獨(dú)立,每一層都有自己的任務(wù)[17],任何一層的變化都不會(huì)導(dǎo)致其他層次的功能受到影響,降低了系統(tǒng)耦合度,有利于提高開發(fā)效率。
圖3.1 系統(tǒng)架構(gòu)圖
圖3.2為系統(tǒng)功能結(jié)構(gòu)圖,在五大功能模塊中,商品庫存分析模塊包括動(dòng)銷率分析、庫存比分析、庫銷比分析;供應(yīng)商數(shù)據(jù)分析模塊中包括商品分類供應(yīng)比例分析,商品退貨分析;消費(fèi)者數(shù)據(jù)分析模塊包括客流量分析、客單價(jià)分析、客層分析、消費(fèi)者滿意度分析;銷售數(shù)據(jù)分析模塊包括銷售額分析、毛利潤分析、凈利潤分析、員工績效分析。管理員功能模塊包括登錄、注銷登錄等基本功能。
圖3.2 系統(tǒng)功能結(jié)構(gòu)圖
3.2 客戶端服務(wù)端通信設(shè)計(jì)
系統(tǒng)前后臺(tái)通信用Ajax技術(shù)實(shí)現(xiàn)。Ajax常引用于網(wǎng)頁的開發(fā),可以異步連接到后臺(tái),更新網(wǎng)頁中某個(gè)組件。在前后臺(tái)數(shù)據(jù)量傳遞不是特別大的時(shí)候,該項(xiàng)技術(shù)是最佳的選擇。Ajax技術(shù)的應(yīng)用,使得前端與后端分離變?yōu)楝F(xiàn)實(shí)。Ajax不會(huì)依托瀏覽器的插件,但同樣用戶需要給予瀏覽器JavaScript腳本運(yùn)行權(quán)限。Ajax給用戶帶來的操作體驗(yàn)是全面的,只請求用戶需要的信息,可以避免網(wǎng)絡(luò)資源過大消耗,使頁面刷新速度有質(zhì)的升華?,F(xiàn)如今, Ajax已經(jīng)是一種標(biāo)準(zhǔn),很多企業(yè)在應(yīng)用,并且還在逐步成熟。圖3.3為本系前后臺(tái)通信數(shù)據(jù)流圖,展示了數(shù)據(jù)的傳遞過程。
圖3.3系統(tǒng)數(shù)據(jù)流圖
3.3 數(shù)據(jù)庫設(shè)計(jì)
圖3.4 系統(tǒng)實(shí)體關(guān)系圖
圖3.4為系統(tǒng)實(shí)體關(guān)系圖,該圖共有21個(gè)實(shí)體對象,1個(gè)1對1關(guān)系,11個(gè)1對多關(guān)系。在系統(tǒng)分析階段,完成了各個(gè)功能模塊的需求分析,根據(jù)分析結(jié)果建立實(shí)體對象。分析實(shí)體對象之間的關(guān)系之后,在MySQL數(shù)據(jù)庫服務(wù)器中建立以下數(shù)據(jù)表。
表3.1為用戶登錄表,表中共有6個(gè)字段,1個(gè)整型字段、5個(gè)字符串型字段,在管理員在進(jìn)行登錄操作過程中,進(jìn)行用戶名密碼驗(yàn)證,登錄系統(tǒng)后個(gè)人信息的修改與之相關(guān)聯(lián)。
表3.1用戶登錄表
名稱 類型 長度 約束 備注
LoginId int 1 主鍵 主鍵Id
LoginName varchar 45 非空 登錄名
Password varchar 45 非空 密碼
Email varchar 45 非空 郵箱
Phone varchar 45 非空 登錄次數(shù)
Remark varchar 200 非空 備注
表3.2為用戶登錄日志表,表中共有8個(gè)字段,2個(gè)整型字段、3個(gè)字符串型字段,3個(gè)時(shí)間類型字段,在管理員在進(jìn)行登錄操作的過程中,系統(tǒng)會(huì)把登錄信息存儲(chǔ)到該表,方便日后查看。
表3.2登錄日志表
名稱 類型 長度 約束 備注
LoginLogId int 11 主鍵,自增長 主鍵Id
LoginIp varchar 45 無 登錄Ip
LoginDateTime DateTime 無 非空 登錄時(shí)間
CreateUserId varchar 45 非空 創(chuàng)建作者
CreateTime DateTime 無 非空 創(chuàng)建時(shí)間
LoginMessage DateTime 45 非空 登錄信息
LoginName varchar 45 非空 登錄名
LoginTime int 11 非空 登錄次數(shù)
表3.3為商品的大分類表,表中共有4個(gè)字段,2個(gè)整型字段、1個(gè)字符串型字段,1個(gè)字節(jié)型字段。該表的意義是記錄中小型超市的商品大分類名稱,例如熟食類、生鮮類等。商品的中分類、小分類表都和該表有聯(lián)系、通過該表的大分類編號能夠查詢到商品的大分類名稱。
表3.3商品大分類表
名稱 類型 長度 約束 備注
CatId int 11 主鍵,自增長 分類Id
CatNumber int 11 非空 分類號
CatName varchar 45 非空 分類名
CatState bit 1 非空 狀態(tài)
表3.4為商品的中分類表,表中共有5個(gè)字段,3個(gè)整型字段、1個(gè)字符串型字段,1個(gè)字節(jié)型字段。該表記錄了中小型超市的商品中分類名稱,例如水果、水產(chǎn)等。
表3.4商品中分類表
名稱 類型 長度 約束 備注
CatId int 11 主鍵,自增長 分類Id
CatNumber int 11 非空 分類號
CatName varchar 45 非空 分類名
CatState bit 1 非空 狀態(tài)
ParentId int 11 非空 父類Id
表3.5為商品品牌表,共3個(gè)字段,其中有1個(gè)整型字段、2個(gè)字符串型字段,該表的意義是個(gè)記錄商品品牌信息。在進(jìn)行退貨分析的時(shí),能夠反映出各個(gè)品牌商品質(zhì)量情況。
表3.5商品品牌表
名稱 類型 長度 約束 備注
BrandId int 11 主鍵,自增長 品牌Id
BrandName varchar 45 非空 品牌名
BrandNumber varchar 45 非空 品牌編號
表3.6為商品小分類表,表中共有6個(gè)字段,4個(gè)整型字段、1個(gè)字符串型字段,1個(gè)字節(jié)型字段。該表記錄中小型超市的商品小分類名稱,例如進(jìn)口水果、鮮榨果汁等。商品的大分類、中分類表都和本表有依賴關(guān)系,通過本表的分類編號能夠確定一個(gè)商品的具體分類。
表3.6商品小分類表
名稱 類型 長度 約束 備注
CatId int 11 主鍵,自增長 分類Id
CatNumber int 11 非空 分類號
CatName varchar 45 非空 分類名
CatState bit 1 非空 狀態(tài)
ParentId int 11 非空 父類Id
GrandParent_Id int 11 非空 大分類Id
表3.7為商品信息表,共10個(gè)字段,其中有6個(gè)整型字段、3個(gè)字符串型字段,1個(gè)數(shù)字類型字段,該表記錄商品分類信息。通過分類層次和商品批號能夠找到某一類型商品的信息。
表3.7商品信息表
名稱 類型 長度 約束 備注
GoodsId int 11 主鍵,自增長 主鍵Id
GoodsName varchar 45 非空 商品名
FirstLevel int 11 非空 大分類
SecondLevel int 11 非空 中分類
ThirdLevel int 11 非空 小分類
BrandId int 11 非空 品牌
StockId int 11 非空 庫存
Status varchar 45 非空 狀態(tài)
GoodNumber varchar 45 非空 編號
UnitPrice decimal 8 非空 單價(jià)
表3.8為消費(fèi)者信息表,共7個(gè)字段,全部為整型字段,該表的意義是記錄消費(fèi)者客流量信息,進(jìn)行消費(fèi)者數(shù)據(jù)分析時(shí),需要查詢該表。該表反映了中小型超市的顧客結(jié)構(gòu)。
表3.8消費(fèi)者信息表
名稱 類型 長度 約束 備注
ConsumersId int 11 主鍵,自增長 主鍵Id
ConsumerNumber int 11 非空 顧總數(shù)客數(shù)
Year smallint 4 非空 年
Month smallint 2 非空 月
Day smallint 2 非空 日
Man int 11 非空 男性數(shù)
Woman int 11 非空 女性數(shù)
補(bǔ)充說明: Man為男性顧客的數(shù)量、Woman為女性顧客的數(shù)量,顧客的總數(shù)量為男性顧客和女性顧客的求和
表3.9為客層信息表,共4個(gè)字段,其中有1個(gè)整型字段、3個(gè)字符串型字段。該表記錄消費(fèi)者的年齡段。例如,19-39為青年、40-59為中年、60歲以上為老年。
表3.9客層信息表
名稱 類型 長度 約束 備注
FloorId int 11 主鍵 主鍵Id
FloorNumber varchar 45 非空 客層編號
FloorName varchar 45 非空 客層名稱
FloorRange varchar 45 非空 客層范圍
表3.10為員工信息表,共5個(gè)字段,其中有1個(gè)整型字段、4個(gè)字符串型字段,該表的意義是記錄員工信息。銷售數(shù)據(jù)分析中的員工績效分析模塊與之關(guān)聯(lián),銷售記錄表的員工編號對應(yīng)該表的員工編號。
表3.10員工信息表
名稱 類型 長度 約束 備注
EmployeeId int 11 主鍵,自增長 主鍵Id
EmployeeName varchar 45 非空 員工名
EmployeeNumber varchar 45 非空 編號
Phone varchar 45 非空 手機(jī)號
IdCard varchar 45 非空 身份證號
表3.11為消費(fèi)者滿意度信息表,共6個(gè)字段,全部為整型字段,該表的意義是存儲(chǔ)定期調(diào)查的消費(fèi)者滿意度情況,消費(fèi)者給出0-5范圍的評價(jià)分?jǐn)?shù),來反應(yīng)消費(fèi)者的滿意度。
表3.11消費(fèi)者滿意度信息表
名稱 類型 長度 約束 備注
InquireId int 11 主鍵,自增長 主鍵Id
ServiceAttitude smallint 6 非空 單號
ServiceQuality smallint 6 非空 大分類
ServiceEfficiency smallint 6 非空 中分類
Year smallint 4 非空 小分類
Month smallint 2 非空 月
表3.12為商品利潤信息表,共9個(gè)字段,其中有7個(gè)整型字段, 1個(gè)數(shù)字類型字段,1個(gè)字符串型字段,該表的意義是記錄了每個(gè)大分類、中分類、小分類商品的利潤信息。
表3.12商品利潤信息表
名稱 類型 長度 約束 備注
ProfitId int 11 主鍵,自增長 主鍵Id
Year smallint 4 非空 年
Month smallint 2 非空 月
Day smallint 2 非空 日
FirstLevel int 11 非空 大分類
SecondLevel int 11 非空 中分類
ThirdLevel int 11 非空 小分類
profit decimal 5 非空 利潤
GoodName varchar 45 非空 商品名
表3.13為商品入庫信息表,共12個(gè)字段,其中有9個(gè)整型字段,2個(gè)日期類型字段,1個(gè)數(shù)字類型字段,該表的意義是記錄了商品入庫的詳細(xì)信息,例如入庫時(shí)間等。該表和商品大分類表、中分類表、小分類表存在依賴關(guān)系。
表3.13商品入庫信息表
名稱 類型 長度 約束 備注
InStockId int 11 主鍵,自增長 主鍵Id
InStockNumber int 11 非空 單號
FirstLevel int 11 非空 大分類
SecondLevel int 11 非空 中分類
ThirdLevel int 11 非空 小分類
SupplierId int 11 非空 供應(yīng)商Id
StockId int 11 非空 庫存
InstockTime DateTime 無 非空 入庫時(shí)間
GoodNumber int 11 非空 批號
CompleteTime DateTime 無 非空 完成時(shí)間
InStockAmount int 11 非空 入庫數(shù)量
UnitPrice decimal 8 非空 單價(jià)
表3.14為商品稅務(wù)信息表,共3個(gè)字段,其中有1個(gè)整型字段、1個(gè)字符串型字段,1浮點(diǎn)類型字段,該表的意義是記錄商品稅務(wù)信息。在計(jì)算商品凈利潤時(shí)會(huì)用到。
表3.14商品稅務(wù)信息表
名稱 類型 長度 約束 備注
Tax int 11 主鍵 主鍵Id
TaxName varchar 45 非空 稅務(wù)名
TaxAmount float 4 非空 稅率
表3.15為密碼修改日志表信息表,共4個(gè)字段,其中有1個(gè)整型字段、2個(gè)字符串型字段,1個(gè)日期類型字段,在管理員在登錄系統(tǒng)之后,可以重新設(shè)置密碼,該表記錄了相關(guān)信息。
表3.15密碼修改日志信息表
名稱 類型 長度 約束 備注
ModifyPasswordLogId int 11 主鍵,自增長 主鍵Id
ModifyDateTime DateTime 無 無 修改時(shí)間
OldPassword varchar 45 無 舊密碼
ModifyIp varchar 45 無 修改Ip
表3.16為商品銷售記錄信息表,共12個(gè)字段,其中有10個(gè)整型字段, 2個(gè)字符串類型字段,該表的意義是記錄了商品銷售記錄信息。與銷售數(shù)據(jù)分析功能模塊有密切關(guān)系。 同時(shí)該表是中小型超市數(shù)據(jù)分析系統(tǒng)中最重要的一張數(shù)據(jù)表,是銷售數(shù)據(jù)分析模塊中的銷售額分析、凈利潤分析、毛利潤分析、員工績效分析這四個(gè)功能的數(shù)據(jù)來源。與員工表、商品稅務(wù)表有直接依賴關(guān)系。
表3.16商品銷售記錄信息表
名稱 類型 長度 約束 備注
RecordId int 11 主鍵,自增長 主鍵Id
GoodNumber varchar 45 非空 批號
EmployeeId int 11 非空 員工Id
SaleNumber int 11 非空 銷售數(shù)量
Year smallint 4 非空 年
Month smallint 2 非空 月
Day smallint 2 非空 日
FirstLevel int 11 非空 大分類
SecondLevel int 11 非空 中分類
ThirdLevel int 11 非空 小分類
Floor varchar 45 非空 客層
TaxNumber int 11 非空 商品稅務(wù)Id
表3.17為商品庫存信息表,共8個(gè)字段,其中有5個(gè)整型字段, 2個(gè)字符串類型字段,1個(gè)日期類型字段。該表的意義是記錄了商品庫存信息。該表與商品詳情信息表存在一對一的實(shí)體關(guān)系,即每一件商品都有其對應(yīng)的唯一的商品庫存記錄。
表3.17商品庫存信息表
名稱 類型 長度 約束 備注
StorgeId int 11 主鍵,自增長 主鍵Id
GoodNumber varchar 45 非空 批號
GoodName varchar 45 非空 商品名
RealAmount int 11 非空 庫存數(shù)量
InStockTime DateTime 無 非空 入庫時(shí)間
FirstLevel int 11 非空 大分類
SecondLevel int 11 非空 中分類
ThirdLevel int 11 非空 小分類
表3.18為供應(yīng)商信息表,共7個(gè)字段,其中有1個(gè)整型字段, 6個(gè)字符串類型字段。該表的意義是記錄了供應(yīng)商的基本信息。系統(tǒng)的供應(yīng)商數(shù)據(jù)分析模塊會(huì)用到該表。
表3.18供應(yīng)商信息表
名稱 類型 長度 約束 備注
SupplierId int 11 主鍵,自增長 主鍵Id
SupplierNumber varchar 45 非空 編號
SupplierName varchar 45 非空 供應(yīng)商名
Address varchar 45 非空 地址
PostCode varchar 45 非空 郵政編碼
Phone varchar 45 非空 電話
GoodNumber varchar 45 非空 批號
表3.19為顧客投訴信息表,共7個(gè)字段,其中有5個(gè)整型字段, 2個(gè)字符串類型字段,該表的意義是記錄了超市顧客投訴信息。消費(fèi)者數(shù)據(jù)分析模塊會(huì)用到該表。
表3.19顧客投訴信息表
名稱 類型 長度 約束 備注
ComplainId int 11 主鍵,自增長 主鍵Id
ComplainNumber varchar 45 非空 投訴編號
ComplainReason varchar 45 非空 投訴原因
EmployeeNumber int 11 非空 員工編號
Year smallint 4 非空 年
Month smallint 2 非空 月
Day smallint 2 非空 日
表3.20為商品月平均庫存信息表,共8個(gè)字段,其中有7個(gè)整型字段, 1個(gè)字符串類型字段,該表的意義是記錄了超市每一個(gè)月的平均庫存,在商品庫存分析功能模塊會(huì)用到該表。
表3.20 商品月平均庫存信息表
名稱 類型 長度 約束 備注
StorgeId int 11 主鍵,自增長 主鍵Id
Year smallint 4 非空 年
Month smallint 2 非空 月
AvgStorge int 11 非空 平均庫存
FirstLevel int 11 非空 大分類
SecondLevel int 11 非空 中分類
ThirdLevel int 2 非空 小分類
GoodNumber varchar 45 非空 商品批號
表3.21為商品退貨信息表,共11個(gè)字段,其中有10個(gè)整型字段, 1個(gè)字符串類型字段,該表的意義是記錄超市的退貨詳細(xì)信息,在商品退貨分析功能模塊中會(huì)從該表中過濾信息。
表3.21商品退貨信息表
名稱 類型 長度 約束 備注
RejectedId int 11 主鍵,自增長 主鍵Id
SupplierId int 11 非空 供應(yīng)商Id
GoodNumber varchar 45 非空 商品編號
FirstLevel int 11 非空 大分類
SecondLevel int 11 非空 中分類
ThirdLevel int 11 非空 小分類
Year int 11 非空 年
Month int 11 非空 月
Day int 11 非空 日
BrandId int 11 非空 品牌
Amount int 11 非空 總數(shù)
3.4 數(shù)據(jù)分析核心設(shè)計(jì)
基于SpringBoot的中小型超市數(shù)據(jù)分析系統(tǒng)的數(shù)據(jù)分析核心邏輯在數(shù)據(jù)庫服務(wù)器上運(yùn)用存儲(chǔ)過程實(shí)現(xiàn)[18]。首先,利用數(shù)據(jù)庫的存儲(chǔ)過程預(yù)先構(gòu)建出數(shù)據(jù)庫中各個(gè)實(shí)體對象之間的關(guān)系,在MyBatis框架請求執(zhí)行對應(yīng)模塊的存儲(chǔ)過程時(shí),數(shù)據(jù)庫將MyBatis框架請求的存儲(chǔ)過程執(zhí)行完畢后將構(gòu)建好的數(shù)據(jù)集合返回給MyBatis框架。最后,經(jīng)過視圖控制器將已經(jīng)轉(zhuǎn)換為Json格式的數(shù)據(jù)返回給JSP頁面[19],經(jīng)過JavaScript框架DataTable技術(shù)把數(shù)據(jù)整理成為表格形式、EChars框架將數(shù)據(jù)以圖形化信息進(jìn)行展示。系統(tǒng)利用MySQL數(shù)據(jù)庫的存儲(chǔ)過程把中小型超市復(fù)雜的業(yè)務(wù)邏輯封裝[20],數(shù)據(jù)庫服務(wù)器能夠自動(dòng)對其優(yōu)化。存儲(chǔ)過程執(zhí)行過后,系統(tǒng)會(huì)將結(jié)果緩存起來,下一次請求同樣的存儲(chǔ)過程時(shí),從緩存結(jié)果中直接拿到數(shù)據(jù)[21]。這樣不僅能夠省去復(fù)雜的Java代碼構(gòu)建業(yè)務(wù)邏輯,也會(huì)減少數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸,提升系統(tǒng)的安全性和擴(kuò)展性[22]。
3.5 小結(jié)
本章首先介紹了系統(tǒng)的架構(gòu)模式,簡單分析了采用MVC設(shè)計(jì)模式的優(yōu)勢[23]。同時(shí)分析說明系統(tǒng)客戶端同服務(wù)器的通信方式[24],最后介紹了系統(tǒng)數(shù)據(jù)庫的設(shè)計(jì)和每張數(shù)據(jù)表的基本內(nèi)容和數(shù)據(jù)分析功能的核心原理。
4 系統(tǒng)實(shí)現(xiàn)
4.1系統(tǒng)服務(wù)端實(shí)現(xiàn)
4.1.1商品庫存分析模塊
動(dòng)銷率分析:每個(gè)商品有商品的大分類、中分類、小分類對應(yīng),并且每一種商品對應(yīng)一個(gè)商品批號。首先需要計(jì)算所有庫存商品的中分類總數(shù),然后在已售商品中過濾商品的中分類種類數(shù),將過濾的商品中分類數(shù)和所有商品中分類數(shù)作除法運(yùn)算,得到結(jié)果。
庫存比分析:計(jì)算庫存比數(shù)據(jù)首先計(jì)算庫存商品總分類數(shù),在商品總庫存數(shù)據(jù)表中求得每一種大分類商品的總數(shù)量,在商品大分類數(shù)據(jù)表中獲取大分類名稱,將每一大類的商品總數(shù)量與庫存商品總數(shù)量作除法運(yùn)算,得到每一大類商品的庫存比。
庫銷比分析:計(jì)算庫銷比首先要計(jì)算一個(gè)月內(nèi)商品的總銷售額。然后,在商品平均庫存表中拿到對應(yīng)月份商品的平均庫存。商品在一個(gè)月內(nèi)平均庫存和該月商品的總銷售額的比值即為商品的庫銷比。
滯銷商品分析:滯銷商品分析首先需要在商品銷售記錄表中找出當(dāng)月中無銷售記錄的商品,結(jié)合商品大、中、小分類數(shù)據(jù)表和商品詳情信息表,采用多表查詢的方式準(zhǔn)確找到本月滯銷商品的大分類名稱、中分類名稱、小分類名稱和商品名稱。
庫存預(yù)警:庫存預(yù)警功能首先要從商品庫存表中獲取所有商品的庫存總數(shù)量,其次獲取庫存表中所有商品種類數(shù),用商品庫存的總數(shù)量/商品總種類數(shù),得到平均庫存量。如果某一種類的商品的庫存量低于平均庫存的百分之五十,則表明該種類商品處于缺貨狀態(tài),被標(biāo)記為短缺。如果商品的庫存量高于平均庫存的百分之一百五十,表明該商品庫存處于積壓狀態(tài),被標(biāo)記為積壓。
核心功能代碼示例:
declare total int; // 聲明變量,用于存儲(chǔ)所有商品的總庫存數(shù)量
declare amount int; // 聲明變量存儲(chǔ),用于存儲(chǔ)庫存中所有商品種類
declare avg float; // 聲明變量,用于存儲(chǔ)商品平均庫存
create table temp ( // 創(chuàng)建臨時(shí)表,存儲(chǔ)最終結(jié)果
FirstName varchar(50),
SecondName varchar(50),
ThirdName varchar(50),
GoodName varchar(50),
State varchar(50));
set total = (select sum(RealAmount) from storge); //為商品總庫存賦值
set amount = (select count(*) from storge); //為商品庫存種類數(shù)賦值
set avg = total/amount; // 計(jì)算所有商品種類的平均值
// 獲取庫存量少于平均庫存一半的商品并標(biāo)記為短缺
insert into temp (FirstName,SecondName,ThirdName,GoodName,State)
(select A.CatName FirstName , B.CatName SecondName ,
C.CatName ThirdName,S.GoodName,“短缺”
from storge S ,cat_first_level A , cat_second_level B , cat_third_level C
where S.RealAmount < avg * 0.5
and S.FirstLevel = A.CatId
and S.SecondLevel = B.CatId
and S.ThirdLevel = C.CatId);
// 獲取庫存量大于平均庫存1.5倍的商品并標(biāo)記為積壓
insert into temp (FirstName,SecondName,ThirdName,GoodName,State)
(select A.CatName FirstName , B.CatName SecondName ,
C.CatName ThirdName,S.GoodName,“積壓” from storge S ,
cat_first_level A , cat_second_level B , cat_third_level C
where S.RealAmount > avg 1.5
and S.FirstLevel = A.CatId
and S.SecondLevel = B.CatId
and S.ThirdLevel = C.CatId);
select * from temp; // 查詢最終結(jié)果
drop table temp; // 刪除臨時(shí)表
4.1.2 供應(yīng)商數(shù)據(jù)分析模塊
商品分類供應(yīng)比例分析:計(jì)算商品分類供應(yīng)比例首先需要在商品入庫信息表中通過分組查詢?nèi)〉萌霂焐唐返拇?、中、小分類名,對?yīng)分類的總數(shù)量。然后創(chuàng)建臨時(shí)數(shù)據(jù)表把查詢到的數(shù)據(jù)暫時(shí)存儲(chǔ)到臨時(shí)數(shù)據(jù)表中。再次通過多表查詢,把上一次查詢得到的商品分類信息對應(yīng)的供應(yīng)商名稱獲取到,以商品的大、中、小分類和供應(yīng)商編號、入庫時(shí)間為基礎(chǔ)把信息分組,同時(shí)計(jì)算供應(yīng)比例,將結(jié)果緩存到另一張臨時(shí)數(shù)據(jù)表中。最后通過第二張臨時(shí)數(shù)據(jù)表根據(jù)商品大、中、小分類、供應(yīng)商名稱分組計(jì)算,得到最后結(jié)果,然后刪除創(chuàng)建的臨時(shí)數(shù)據(jù)表。
商品退貨分析:商品退貨分析首先需要從在商品退貨信息表中查詢所有商品的退貨信息,從篩選出的信息中把相同大、中、小、分類名,商品名稱、年月、供應(yīng)商名稱、品牌名稱信息進(jìn)行分組統(tǒng)計(jì)。得到的結(jié)果就是有退貨記錄的商品每個(gè)月的退貨詳情信息。
核心功能代碼示例:
//創(chuàng)建臨時(shí)表存儲(chǔ)大中小分類商品數(shù)量
create table temptable as
select FirstLevel,SecondLevel,ThirdLevel ,sum(InStockAmount) as sumAmount
from instock
group by FirstLevel,SecondLevel,ThirdLevel;
// 創(chuàng)建臨時(shí)表存儲(chǔ) 不同供應(yīng)商、大中小分類、更新時(shí)間的的商品庫存比
create table final as
(select S.SupplierName SupplierName ,S.SupplierId SupplierId ,One.CatName
FirstName,Two.CatName SecondName,Three.CatName ThirdName,
I.InstockAmount/T.sumAmount Rate
from instock I, suppliers S,cat_first_level One,cat_second_level Two,
cat_third_levelThree , temptable T
where I.FirstLevel = T.FirstLevel
and I.SecondLevel = T.SecondLevel
and I.ThirdLevel = T.ThirdLevel
and I.SupplierId = S.SupplierId
and I.FirstLevel = One.CatId
and I.SecondLevel = Two.CatId
and I.ThirdLevel = Three.CatId
group by I.SupplierId,I.FirstLevel,I.SecondLevel,I.ThirdLevel,I.InStockTime);
// 根據(jù)商品大中小分類分組求和計(jì)算出,商品大、中、小分類的占比
select SupplierName,FirstName,SecondName,ThirdName,round(Sum(Rate),2) Rates
from final
//根據(jù)大、中、小分類分組
group by SupplierId,FirstName,SecondName,ThirdName;
// 刪除臨時(shí)表
drop table temptable;
drop table final;
4.1.3 消費(fèi)者數(shù)據(jù)分析模塊
客流量分析:客流量分析需要分析統(tǒng)計(jì)一年中每一個(gè)月每一天的客流量信息,包括男性、女性顧客數(shù)量、顧客的總數(shù)量。這部分?jǐn)?shù)據(jù)直接從消費(fèi)者信息表中獲取即可。
客單價(jià)分析:客單價(jià)分析首先從商品銷售記錄信息表中計(jì)算出每天每種商品的銷售額總數(shù),結(jié)合客流量信息表,計(jì)算出每天的客流量總數(shù)。每天的總銷售額和對應(yīng)的顧客總數(shù)量的比值即為一天的客單價(jià)。
客層分析:客層分析首先需要?jiǎng)?chuàng)建一個(gè)臨時(shí)數(shù)據(jù)表,依次從銷售記錄信息表中統(tǒng)計(jì)出每個(gè)月的青年、中年、老年顧客的數(shù)量,存儲(chǔ)到臨時(shí)數(shù)據(jù)表中。再新建一張臨時(shí)表用于存儲(chǔ)上一張臨時(shí)表的每個(gè)月顧客總數(shù)量,從兩張臨時(shí)表抽取年、月、客層名稱,計(jì)算比例占比。最后刪除臨時(shí)數(shù)據(jù)表。
消費(fèi)者滿意度分析:消費(fèi)者滿意度分析需要從消費(fèi)者滿意度信息表中根據(jù)年、月字段進(jìn)行分組,分組后進(jìn)行服務(wù)態(tài)度評分、服務(wù)效率評分和服務(wù)質(zhì)量評分平均值計(jì)算,結(jié)果為每一個(gè)月消費(fèi)者對超市的評價(jià)信息。
核心功能代碼示例:
// 創(chuàng)建臨時(shí)表用于存儲(chǔ)青年顧客的總數(shù)量
create table floors (
Year smallint,
month smallint,amount float(2),
floor varchar(45));
// 向臨時(shí)表中添加青年顧客信息
insert into floors (select Year,Month,count(Floor),FloorName from salerecord S,
consumersfloor C where S.Floor = “1”
and S.Floor = C.FloorNumber
group by .Year,S.Month);
// 向臨時(shí)表中添加中年顧客信息
insert into floors (select Year,Month,count(Floor),FloorName from salerecord S,
consumersfloor C where S.Floor = “2”
and S.Floor = C.FloorNumber
group by S.Year,S.Month);
// 向臨時(shí)表中添加老年顧客信息
insert into floors (select Year,Month,count(Floor),FloorName from salerecord S,
consumersfloor C where S.Floor = “3”
and S.Floor = C.FloorNumber
group by S.Year,S.Month);
// 計(jì)算各個(gè)消費(fèi)群體的占比
create table temps as ( select year,Month,sum(amount) Amount from floors group by year,Month);
select F.Year,F.Month,F.Floor,Format(F.Amount/T.Amount ,2) rate
from floors F,temps T where F.Year = T.Year
and F.Month = T.Month
order by Year,Month;
// 刪除臨時(shí)表
drop table floors;
drop table temps;
4.1.4 銷售數(shù)據(jù)分析模塊
銷售額分析:銷售額數(shù)據(jù)分析首先需要計(jì)算出所有商品每一個(gè)月的總銷售額。其次,根據(jù)商品銷售記錄商品的年、月、大分類、中分類、小分類進(jìn)行分組,將每組的商品銷售額和對應(yīng)月份所有商品銷售額作除法運(yùn)算。最后得到每一種商品的銷售額在本月總銷售額的占比大小。
毛利潤分析:毛利潤分析需要計(jì)算出每種商品在一個(gè)月中的毛利潤,商品的月度毛利潤為商品售價(jià)和商品進(jìn)價(jià)的差值與月度銷售總數(shù)量乘積。根據(jù)商品的大分類、中分類、小分類、年、月、商品編號分組查詢。
凈利潤分析:商品凈利潤為商品的售價(jià)減去商品的進(jìn)價(jià)和商品的稅收費(fèi)用。在商品的毛利潤基礎(chǔ)上減去對應(yīng)商品的稅收,采用多表查詢并分組的方式將銷售記錄表和商品稅收表對應(yīng),計(jì)算出每件商品凈利潤。
員工績效分析:員工績效分析包括兩部分,在一個(gè)月內(nèi)平均每天商品售出量和收到來自消費(fèi)者的投訴情況。在商品銷售記錄信息表中,員工在一個(gè)月內(nèi)銷售的商品總數(shù)量與對應(yīng)月份天數(shù)的比值為每天平均售出量。員工的相關(guān)投訴信息可在顧客投訴表中取得。
核心功能代碼示例:
// 從銷售記錄表、商品大分類表、商品中分類表、商品小分類表、商品表庫存表中過濾數(shù)據(jù)
select S.Year , S.Month ,A.catName FirstLevel ,
B.catName SecondLevel ,
C.catName ThirdLevel ,
G.GoodsName,sum(S.SaleNumber(G.UnitPrice-I.UnitPrice)) total // 計(jì)算每一個(gè)商品毛利潤
from
salerecord S ,goods G ,instock I,cat_first_level A,
cat_second_level B,cat_third_level C
where //設(shè)置過濾條件
S.FirstLevel = G .FirstLevel
and S.SecondLevel = G.SecondLevel
and S.ThirdLevel =G.ThirdLevel
and S.GoodNumber = G.GoodNumber
and S.GoodNumber = I.GoodNumber
and S.FirstLevel = A.catNumber
and S.SecondLevel = B.catNumber
and S.ThirdLevel = C.catNumber
// 根據(jù)商品大、中、小分類,年、月、商品編號進(jìn)行分組求和
group by S.FirstLevel , S.SecondLevel , S.ThirdLevel,S.Year,S.Month,S.GoodNumber ;
4.1.5管理員模塊
用戶登錄時(shí)在瀏覽器中輸入的數(shù)據(jù)提交給后臺(tái)服務(wù)器,服務(wù)器把用戶輸入的數(shù)據(jù)和數(shù)據(jù)庫中數(shù)據(jù)作對比,如果用戶名密碼全部正確,登錄成功跳轉(zhuǎn)頁面,否則提示錯(cuò)誤;成功登入系統(tǒng)后,JSP頁面請求前端控制器查詢登錄日志表、密碼修改日志表、個(gè)人信息表,并把查詢到的數(shù)據(jù)經(jīng)過控制器傳遞給JSP頁面;密碼修改時(shí)瀏覽器把原密碼和新密碼發(fā)送給后臺(tái)服務(wù)器進(jìn)行驗(yàn)證,如果原密碼正確,繼續(xù)修改密碼,否則提示修改失敗;用戶點(diǎn)擊客戶端瀏覽器中注銷登錄按鈕即可注銷登錄,返回登錄頁。
核心功能代碼示例:
LoginBean login=loginService.selectByName(username); // 根據(jù)用戶名查詢用戶是否存在
session = request.getSession(); // 建立session對象
String retVal = “false”; //定義返回消息
LoginLogBean logBean = new LoginLogBean();
logBean.setCreatetime(new Date());
logBean.setCreateuserid(“System”);
logBean.setLogindatetime(new Date());
logBean.setLoginip(request.getRemoteAddr());
logBean.setLoginname(username);
logBean.setLogintime(logService.getLastLoginTime()+1);
logBean.setLoginmessage(“登錄失敗”); // 用戶名密碼都正確,設(shè)置登錄成功信息。
if(login != null && login.getPassword().compareToIgnoreCase(passwd)==0) {
session.setAttribute(“SESSION_USERNAME”, username);
logBean.setLoginmessage(“登錄成功”);
retVal = “ok”;
}
logService.insertLog(logBean); // 插入登錄日志,
return JSONObject.toJSONString(retVal); // 返回登錄提示信息
4.2 瀏覽器客戶端的實(shí)現(xiàn)
4.2.1 動(dòng)銷率分析
如圖4.1為商品動(dòng)銷率分析客戶端頁面,用戶可以從數(shù)據(jù)表格中查詢每月商品各個(gè)種類動(dòng)銷率,并且根據(jù)柱形圖分析出本年度那一個(gè)月的動(dòng)銷品種最多。用戶可以根據(jù)按鈕、文本框等控件提示,檢索數(shù)據(jù)或者打印數(shù)據(jù)。
圖 4.1 商品動(dòng)銷率分析客戶端頁面
4.2.2 庫存比分析
如圖4.2為商品庫存比分析客戶端頁面,用戶可以查詢到每一類商品所占庫存總量的比例,并且根據(jù)扇形圖分析出庫存中那種分類商品所占比例最大,并根據(jù)需求打印可排序的數(shù)據(jù)。
圖 4.2 庫存比分析客戶端頁面
4.2.3 庫銷比分析
如圖4.3為庫銷比分析客戶端頁面效果。頁面實(shí)現(xiàn)了庫銷比信息的顯示、分頁、打印庫銷比數(shù)據(jù)表格等功能。用戶瀏覽信息的同時(shí),可以根據(jù)表頭提示檢索想要獲得的具體信息。
圖 4.3 庫銷比分析客戶端頁面
4.2.4 滯銷商品分析
如圖4.4為滯銷商品分析客戶端頁面,用戶可以查詢到滯銷商品的大分類、中分類,或者小分類的商品分類信息,并通過實(shí)時(shí)搜索功能實(shí)時(shí)獲取相應(yīng)的結(jié)果,也可根據(jù)商品分類、名稱對結(jié)果排序。
圖 4.4 滯銷商品分析客戶端頁面
4.2.5 庫存預(yù)警
如圖4.5為庫存預(yù)警客戶端頁面,頁面提供了商品大分類、中分類、小分類、商品名稱、商品狀態(tài)等信息,用戶根據(jù)頁面提示的信息可以獲取處于短缺或者積壓狀態(tài)的庫存商品信息。
圖 4.5 庫存預(yù)警客戶端頁面
4.2.6 商品分類供應(yīng)比例分析
如圖4.6為商品分類供應(yīng)比例分析客戶端頁面,頁面提供了商品大分類、中分類、小分類、供應(yīng)商,以及商品同類分類的各個(gè)供應(yīng)商供應(yīng)占比信息,用戶可根據(jù)頁面控件信息提示篩選供應(yīng)商、商品的分類等信息,也可以按照商品分類供應(yīng)比例進(jìn)行排序。
圖 4.6 商品分類供應(yīng)比例分析客戶端頁面
4.2.7 商品退貨分析
如圖4.7為商品退貨分析客戶端頁面,頁面提供了商品大分類、中分類、小分類、年、月、商品名稱、退貨數(shù)量等信息,用戶瀏覽信息的同時(shí)可以根據(jù)時(shí)間或者商品分類篩選信息、打印數(shù)據(jù)。
圖 4.7 商品退貨分析客戶端頁面
4.2.8 客流量分析
如圖4.8為客流量分析客戶端頁面,頁面提供了年、月、日、周、男性顧客、女性顧客、顧客總量等信息,用戶可以根據(jù)頁面展示的信息對超市客流量進(jìn)一步查詢分析統(tǒng)計(jì),在需要時(shí)進(jìn)行數(shù)據(jù)的檢索和打印。
圖 4.8 客流量分析客戶端頁面
4.2.9 客單價(jià)分析
如圖4.9為客單價(jià)分析客戶端頁面,頁面提供了年、月、日、客單價(jià)等信息,用戶能夠根據(jù)頁面提示的信息查詢某年、月、日的客單價(jià)信息,并且可以在檢索數(shù)據(jù)的基礎(chǔ)上,進(jìn)行客單價(jià)排序。
圖 4.9 客單價(jià)分析客戶端頁面
4.2.10 客層分析
如圖4.10為客層分析客戶端頁面實(shí)現(xiàn)效果,用戶可根據(jù)控件提示,對相應(yīng)的年、月、日等信息進(jìn)行檢索,檢索過程中會(huì)實(shí)時(shí)顯示檢索結(jié)果,并可以根據(jù)年、月、日、客層、比例進(jìn)行組合排序并打印數(shù)據(jù)。
圖4.10 客層分析客戶端頁面
4.2.11 消費(fèi)者滿意度分析
如圖4.11為消費(fèi)者滿意度分析客戶端頁面實(shí)現(xiàn),用戶可以瀏覽每個(gè)月消費(fèi)者對超市的平均評價(jià)分?jǐn)?shù),評價(jià)分?jǐn)?shù)為5分制。并根據(jù)需要檢索年、月對應(yīng)的消費(fèi)者的評價(jià),或者打印評價(jià)數(shù)據(jù)。
圖 4.11 消費(fèi)者滿意度分析客戶端頁面
4.2.12 銷售額分析
如圖4.12為銷售額分析客戶端頁面實(shí)現(xiàn),用戶可以瀏覽每個(gè)月對應(yīng)商品種類的銷售額,在當(dāng)月中的比例。同時(shí),根據(jù)用戶需要,頁面實(shí)現(xiàn)了對年、月、大分類、中分類、小分類、銷售額和占比數(shù)據(jù)的綜合排序。
圖 4.12 銷售額分析客戶端頁面
4.2.13 毛利潤分析
如圖4.13為商品毛利潤分析客戶端頁面實(shí)現(xiàn),用戶可以瀏覽每個(gè)月對應(yīng)商品種類的毛利潤。同時(shí),用戶可以對年、月、大分類、中分類、小分類和毛利潤進(jìn)行檢索或者綜合排序,在需要時(shí)打印數(shù)據(jù)。
圖 4.13 毛利潤分析客戶端頁面
4.2.14 凈利潤分析
如圖4.14為商品凈利潤分析客戶端頁面實(shí)現(xiàn),用戶可以瀏覽每個(gè)月對應(yīng)商品種類的凈利潤。同時(shí),頁面實(shí)現(xiàn)了對年、月、大分類、中分類、小分類和凈利潤進(jìn)行綜合排序,例如在查找生鮮類商品后可以在篩選后的數(shù)據(jù)基礎(chǔ)上對數(shù)據(jù)排序,并且在需要時(shí)可以打印數(shù)據(jù)。
圖 4.14 凈利潤分析客戶端頁面
4.2.15 員工績效分析
如圖4.15為員工績效分析客戶端頁面實(shí)現(xiàn),用戶可以瀏覽每個(gè)月員工的業(yè)績,即每個(gè)月員工的平均日銷售商品數(shù)量。同時(shí),頁面實(shí)現(xiàn)了查找、排序等功能,用戶可以在查找的基礎(chǔ)上對數(shù)據(jù)排序。
圖 4.15 員工績效分析客戶端頁面
4.2.16 系統(tǒng)登錄
如圖4.16為系統(tǒng)登錄頁,用戶輸入用戶名密碼之后點(diǎn)擊登錄按鈕進(jìn)行登錄操作。登錄成功或者失敗會(huì)有提示。如果成功則進(jìn)行頁面跳轉(zhuǎn),進(jìn)入商品庫存分析模塊中的動(dòng)銷率分析頁面;否則,提示用戶名密碼錯(cuò)誤消息后繼續(xù)留在本頁面等待下一次用戶輸入。
圖4.16 系統(tǒng)登錄客戶端頁面
4.2.17 查看或更改個(gè)人信息
如圖4.17為管理員個(gè)人信息客戶端頁面實(shí)現(xiàn),進(jìn)入個(gè)人信息頁面后,首先會(huì)顯示個(gè)人信息供用戶瀏覽,包括用戶名,郵箱,手機(jī)號。其次,用戶可以在文本框內(nèi)輸入想要更改的數(shù)據(jù)項(xiàng),點(diǎn)擊保存按鈕即可實(shí)現(xiàn)個(gè)人信息更改,如果更改成功則提示保存成功;否則提示保存失敗。
圖4.17 管理員個(gè)人信息客戶端頁面
4.2.18 修改密碼
如圖4.18為密碼修改客戶端頁面實(shí)現(xiàn)。進(jìn)入密碼修改頁面后,進(jìn)行修改密碼,首先需要輸入原密碼,然后再輸入想要更改的密碼,在點(diǎn)擊保存按鈕時(shí)提交給后臺(tái)驗(yàn)證,若原密碼正確,在點(diǎn)擊保存按鈕之后提示修改成功,否則提示修改失敗。
圖4.18 密碼修改客戶端頁面
4.2.19 查看登錄日志
如圖4.19為系統(tǒng)登錄日志客戶端頁面實(shí)現(xiàn),該頁面中實(shí)現(xiàn)了對登錄日志中編號、登錄Ip、登錄時(shí)間、登錄信息、登錄名等數(shù)據(jù)的綜合排序和過濾,用戶可根據(jù)需要打印系統(tǒng)登錄日志表。
圖4.19 登錄日志客戶端頁面
4.2.20 查看密碼修改日志
如圖4.20為系統(tǒng)密碼修改日志客戶端頁面實(shí)現(xiàn)。本頁面與登錄日志信息在同一頁面內(nèi)的不同面板中,用戶可以點(diǎn)擊加號來實(shí)現(xiàn)面板折疊功能。該頁面中實(shí)現(xiàn)了對密碼修改日志中編號、修改Ip、修改時(shí)間、舊密碼信息的綜合排序和過濾,用戶可根據(jù)需要打印系統(tǒng)密碼修改日志表。
圖4.20 密碼修改日志客戶端頁面
4.3 小結(jié)
本章節(jié)十分詳細(xì)的介紹了系統(tǒng)的商品庫存分析、供應(yīng)商數(shù)據(jù)分析、消費(fèi)者數(shù)據(jù)分析、銷售數(shù)據(jù)分析四大模塊的實(shí)現(xiàn)原理和對應(yīng)的功能實(shí)現(xiàn)效果,對每個(gè)模塊涉及到的功能點(diǎn)進(jìn)行詳盡闡述。
5 測試部署
5.1系統(tǒng)測試
項(xiàng)目開發(fā)完成之后最重要的一個(gè)環(huán)節(jié)就是單元測試,該項(xiàng)目采用JUnit框架來完成本系統(tǒng)的單元測試工作,JUnit框架是一種能夠?yàn)镴ava程序做測試的優(yōu)秀框架。該框架的自動(dòng)化水平非常高,有眾多不可替代的特性。例如對開發(fā)者預(yù)想結(jié)果做出斷言,能夠極大的改善程序開發(fā)效率,并且能夠很好的與SpringBoot框架兼容。
由于很多邏輯在客戶端中或者數(shù)據(jù)庫中實(shí)現(xiàn),這里不做全面測試,只挑選最具代表性的測試用例。選定好每個(gè)模塊的測試用例之后,開始進(jìn)行單元測試,單元測試用例見表5.1。
表5.1 單元測試用例表
模塊 測試功能點(diǎn) 測試操作流程 預(yù)想結(jié)果 測試結(jié)果
管
理
員 登錄 輸入正確用戶名密碼,點(diǎn)擊登錄 登錄成功,頁面跳轉(zhuǎn) 登錄成功,頁面跳轉(zhuǎn)
修改個(gè)人信息 登錄后在管理員模塊點(diǎn)擊查看個(gè)人信息,重新輸入后保存 提示保存成功 瀏覽器提示保存成功
商品庫存分析 動(dòng)銷率分析 登錄后點(diǎn)擊動(dòng)銷率分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
庫存比分析 登錄后點(diǎn)擊庫存比分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
供應(yīng)商數(shù)據(jù)分析 商品分類供應(yīng)比例分析 登錄后點(diǎn)擊商品分類供應(yīng)比例分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
商品退貨分析 登錄后點(diǎn)擊商品退貨分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
消費(fèi)者數(shù)據(jù)分析 客流量分析 登錄后點(diǎn)擊客流量分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
客單價(jià)分析 登錄后點(diǎn)擊客單價(jià)分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
銷售數(shù)據(jù)分析 銷售額分析 登錄后點(diǎn)擊銷售額分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
員工績效分析 登錄后點(diǎn)擊員工績效分析 顯示數(shù)據(jù) 顯示數(shù)據(jù)
進(jìn)行單元測試首先需要在測試類上面加SpringBoot框架的單元測試注解。這樣做的目的是表明該類是一個(gè)測試類,并且自動(dòng)配置單元測試。MockMvc是一個(gè)工具類,能夠自定義URL模擬HTTP請求對Controller進(jìn)行測試。通過實(shí)例化MvcResult對象接收測試結(jié)果,在單元測試通過之后,再把結(jié)果通過控制臺(tái)進(jìn)行打印。單元測試的核心代碼如下:
@SpringBootTest
@AutoConfigureMockMvc
@RunWith(SpringRunner.class)
public class MiniMarketDsasApplicationTests {
@Autowired
private MockMvc mockMvc; // 利用MockMvc發(fā)送HTTP請求
@Test
public void helloTest() throws Exception { // 測試方法
MvcResult mvcResult= mockMvc.perform(MockMvcRequestBuilders.get(“/saledRate”))
.andReturn(); // 輸出接口返回的結(jié)果
System.out.println(mvcResult.getResponse().getContentAsString());
}}
商品庫存分析模塊的動(dòng)銷率分析單元測試結(jié)果見圖5.1,其中左上角的綠色長條表明本次單元測試成功,無編譯或者運(yùn)行錯(cuò)誤。在eclipse控制臺(tái)中,輸出了年、月、動(dòng)銷率的具體數(shù)據(jù)信息,測試通過。
圖5.1動(dòng)銷率分析單元測試
供應(yīng)商數(shù)據(jù)分析模塊的商品分類供應(yīng)比例分析單元測試結(jié)果見圖5.2,其中左上角的綠色長條表明本次單元測試成功,無編譯或者運(yùn)行錯(cuò)誤。在eclipse控制臺(tái)中,輸出了商品大、中、小分類等信息,測試通過。
圖5.2商品分類供應(yīng)比例分析單元測試
消費(fèi)者數(shù)據(jù)分析模塊的客層分析單元測試結(jié)果見圖5.3,其中左上角的綠色長條表明本次單元測試成功,無編譯或者運(yùn)行錯(cuò)誤。在eclipse控制臺(tái)中,輸出了年、月、客層名稱、客層占比等信息,測試通過。
圖5.3 客層分析單元測試
銷售數(shù)據(jù)分析模塊的銷售額分析單元測試結(jié)果見圖5.4,其中左上角的綠色長條表明本次單元測試成功,無編譯或者運(yùn)行錯(cuò)誤。在eclipse控制臺(tái)中,輸出了商品分類名稱,商品名,銷售額占比等信息,測試通過。
圖5.4銷售額分析單元測試
5.2 系統(tǒng)部署
系統(tǒng)在開發(fā)環(huán)境中開發(fā)和測試完成之后,需要部署到生產(chǎn)環(huán)境中上線運(yùn)行。如圖5.5為系統(tǒng)部署圖,本系統(tǒng)可部署在Windows10操作系統(tǒng)中。系統(tǒng)包括Java開發(fā)工具包和系統(tǒng)運(yùn)行環(huán)境(JDK)、數(shù)據(jù)庫服務(wù)器(MySQL)、Web服務(wù)器(Tomcat)。用戶通過瀏覽器的HTTP請求即可實(shí)現(xiàn)對系統(tǒng)的訪問[25]。
圖5.5 系統(tǒng)部署圖
5.3 小結(jié)
本章主要是介紹了基于SpringBoot的中小型超市數(shù)據(jù)分析系統(tǒng)的測試以及部署,詳細(xì)闡述了具體測試方法,保證了系統(tǒng)的平穩(wěn)運(yùn)行,減少錯(cuò)誤和異常的發(fā)生,增強(qiáng)了系統(tǒng)健壯性。
結(jié) 論
2個(gè)月的時(shí)間終于完成了“基于Springboot的中小型超市數(shù)據(jù)分析系統(tǒng)”的開發(fā)工作。在如今數(shù)據(jù)滿天飛的時(shí)代中,數(shù)據(jù)的價(jià)值是不可估量的。我們要從細(xì)節(jié)中找到這些數(shù)據(jù)潛在的價(jià)值,挖掘其中隱含的規(guī)則,把握并且利用好這些數(shù)據(jù),如果是這樣,這對于每天產(chǎn)生大量數(shù)據(jù)的中小型超市來說無疑是一個(gè)福音。
本系統(tǒng)的設(shè)計(jì)開發(fā)充分利用了中小型超市數(shù)據(jù)量龐大的特點(diǎn),對數(shù)據(jù)進(jìn)行充分分析利用,實(shí)現(xiàn)了對中小型超市庫存、消費(fèi)者、供應(yīng)商、銷售四個(gè)方面的數(shù)據(jù)分析,將結(jié)果以最佳的用戶體驗(yàn)效果呈現(xiàn)出來,為超市的經(jīng)營管理奠定了數(shù)據(jù)基礎(chǔ)。在這個(gè)基礎(chǔ)上,中小型超市的管理經(jīng)營者能夠及時(shí)發(fā)現(xiàn)超市經(jīng)營方面的問題。最重要的是,中小型超市有了數(shù)據(jù)化的依據(jù)支撐,才能有豐富的利潤,走得更加長遠(yuǎn)。
本系統(tǒng)基于SpringBoot框架、MyBatis框架、SpringMVC技術(shù),結(jié)合MySQL數(shù)據(jù)庫設(shè)計(jì)編碼完成,實(shí)現(xiàn)了中小型超市數(shù)據(jù)分析過程需要的必要功能。但這還不夠完善,從業(yè)務(wù)角度來說,有很多細(xì)節(jié)功能還欠缺,例如由于對超市的數(shù)據(jù)庫系統(tǒng)不是特別熟悉,對超市倉庫的分析業(yè)務(wù)沒有實(shí)現(xiàn)。在代碼實(shí)現(xiàn)的角度來說,針對數(shù)據(jù)量龐大的特點(diǎn),由于知識(shí)能力有限,沒有采用處理大量數(shù)據(jù)的系統(tǒng)架構(gòu)。這樣會(huì)導(dǎo)致數(shù)據(jù)庫的壓力非常大,影響系統(tǒng)的整體運(yùn)行效率,未來會(huì)逐步解決以上問題,進(jìn)一步完善系統(tǒng)功能,為中小型超市提供更加全面的數(shù)據(jù)分析服務(wù)。
致 謝
大學(xué)四年時(shí)光,眨眼間便過去,馬上就要和大學(xué)說拜拜了,昨天的新生,今天即將邁入社會(huì),縱使心中有萬般不舍,也不能停止前進(jìn)的腳步。這四年的時(shí)光應(yīng)該是人生中最最值得回憶的時(shí)光。因?yàn)?,在這里曾經(jīng)流過充滿奮斗精神的汗水、遇到生活或者學(xué)習(xí)過程中的問題難以解決時(shí)的淚水,結(jié)交到人生中的摯友,遇到認(rèn)真負(fù)責(zé)的老師。四年光景中,有過歡樂,有過悲傷,有過沉思,也有過憧憬,這一切已經(jīng)過去。完成本篇論文的致謝,也就意味著與大學(xué)生活徹徹底底的別離,怎么也找不出一句話表達(dá)自己的心情,這也可能意味著我們真正的“長大了”,大學(xué)生活讓我明白了學(xué)習(xí)的重要意義,也許學(xué)習(xí)沒有帶給我們特別多的物質(zhì)財(cái)富,但是學(xué)習(xí)能讓一個(gè)人成長起來。成年人的世界里有很多傷感和遺憾,但奮斗的腳步一刻也不能放緩,昨天已經(jīng)是昨天,今天終將過去,我們要努力奮斗擁抱明天。
在這次畢業(yè)設(shè)計(jì)中,最主要的是感謝我的畢業(yè)設(shè)計(jì)指導(dǎo)老師崔滿老師、劉蔭忠老師,無論是在系統(tǒng)開發(fā)設(shè)計(jì)或者是論文寫作方面都給予我非常非常多的幫助。在完成畢業(yè)設(shè)計(jì)的過程中,我真真切切感受到了兩位老師盡職盡責(zé)、平易近人、孜孜不倦的人格魅力。同時(shí),在專業(yè)技能的角度老師同樣讓我明白了什么是專業(yè)性。正是由于二位老師的無私幫助、多次提出了寶貴建議,才完成了論文的編寫,再次向二位老師表達(dá)衷心的感謝。文章來源:http://www.zghlxwxcb.cn/news/detail-837285.html
參考文獻(xiàn)
[1]陳雄華. Spring企業(yè)級應(yīng)用開發(fā)詳解[M]. 北京: 電子工業(yè)出版社, 2009
[2]Craig Walls,Ryan BreidenBach. Spring In Action [M]. Manning ublications, 200
[3]陳亞探.Struts2 + Spring + Hibernate框架技術(shù)與項(xiàng)目實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,201
[4]李剛.輕量級J2EE企業(yè)應(yīng)用實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2007
[5]趙利慶.Java Web架構(gòu)中數(shù)據(jù)庫優(yōu)化模式的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2015
[6]賀松平.基于MVC模式的B/S架構(gòu)的研究與應(yīng)用[D].武漢:華中科技大學(xué),200
[7]張孝祥. 深入Java Web開發(fā)內(nèi)幕——核心基礎(chǔ)[M]. 北京:電子工業(yè)出版社. 2006
[8]孫衛(wèi)琴,李洪成. Tomcat 與 Java Web 開發(fā)技術(shù)詳解[M]. 電子工業(yè)出版社,2003.6:1-205
[9]朱紅,司光亞. JAVA Web編程指南[M].電子工業(yè)出版社,2001.9:34-307
[10]BruceEckel. Java編程思想[M]. 機(jī)械工業(yè)出版社,2003.10:1-378
[11]Joshua Bloch. Effective Java[M]. Piscataway, N.J: IEEE Press, 2009
[12]BruceEckel. Java編程思想[M]. 機(jī)械工業(yè)出版社,2003.10:1-378
[13]楊靜.基于JAVA WEB中MVC模式的研究與應(yīng)用[J].電腦知識(shí)與技術(shù),2014,9(28):68-71
[14]林信良. Spring2.0技術(shù)手冊[M]. 北京:電子工業(yè)出版社,2005
[15]FLANAGAN. Java技術(shù)手冊[M]. 中國出版社,2002.6:1-465
[16]賽奎春. JAVA工程應(yīng)用與項(xiàng)目實(shí)踐[M]. 機(jī)械工業(yè)出版社2002.8:23-294
[17]飛思科技產(chǎn)品研發(fā)中心. JAVA應(yīng)用開發(fā)詳解[M].電子工業(yè)出版社,2003.9:32-300
[18]賽奎春. JAVA工程應(yīng)用與項(xiàng)目實(shí)踐[M]. 機(jī)械工業(yè)出版社,2002.8:23-29
[19]耿祥義 JSP 基礎(chǔ)編程[M].清華大學(xué)出版社,2004.55-162
[20]田珂,謝世波,方馬. J2EE數(shù)據(jù)持久層的解決方案[J]. 計(jì)算機(jī)工程,2003, 29(22): 93-95
[21]孫一林,彭波. Java數(shù)據(jù)庫編程實(shí)例[M]. 清華大學(xué)出版社,002.8:30-210
[22]Ju Feng Juan. The Application of Servlet and Javabean In the Design of Blog[J]. Energy Procedia, 2011, 13: 8952-8956
[23]R Suzanne W. Dietrich, Susan D. Urban, Ion Kyriakides. JDBC demonstration courseware using Servlets and Java Server Pages. 2002, 34(1): 266-270
[24]Fahmida Y Rashid,Fahmida Y Rashid. Oracle security includes Java, MySQL, Oracle Database fixes[J]. InfoWorld.com,2016
[25]Hatma Suryotrisongko;Dedy Puji Jayanto;Aris Tjahyanto. Design and Development of Backend Application for Public Complaint Systems Using Microservice Spring Boot[D]. Procedia Computer Science, 2016文章來源地址http://www.zghlxwxcb.cn/news/detail-837285.html
到了這里,關(guān)于基于SpringBoot的中小型超市數(shù)據(jù)分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!