javascript
Springboot+美妆网站的设计与实现 毕业设计-附源码211539
Springboot美妝網站的設計與實現
摘 要
近年來,隨著移動互聯網的快速發展,電子商務越來越受到網民們的歡迎,電子商務對國家經濟的發展也起著越來越重要的作用。簡單的流程、便捷可靠的支付方式、快捷暢通的物流快遞、安全的信息保護都使得電子商務越來越贏得網民們的青睞。現今,大量的計算機技術應用于商業領域,包括軟件技術、網絡技術、硬件技術等。越來越多的企業使用計算機來開展業務、銷售、購買和宣傳各種商品。各種商業系統和軟件已經解放了企業的雙手,并使企業能夠最大限度地獲得利益。因此,計算機技術在商業領域占有非常重要的地位。
本文主要通過對系統的前臺系統和后臺管理系統進行了功能性需求分析,對系統的安全性和可擴展性進行了非功能性需求分析。在詳細的需求分析的基礎上,根據系統的功能設計確定了數據庫結構,實現完整的代碼編寫。美妝網站采取Mysql作為后臺數據的主要存儲單元,運用軟件工程原理和開發方法,采用Java的Springboot框架構建的一個管理系統,實現了本系統的全部功能。完成系統的主要模塊的頁面設計和功能實現。本文展示了首頁頁面的實現效果圖,并通過代碼和頁面介紹了用戶注冊功能、美妝咨詢、商城管理、商品購買和查看我的訂單功能、在線付款功能的實現過程。
關鍵詞:美妝產品; Springboot;商品搜索
Design and implementation of springboot beauty website
Abstract
In recent years, with the rapid development of mobile Internet, e-commerce is more and more welcomed by Internet users. E-commerce also plays a more and more important role in the development of national economy. Simple process, convenient and reliable payment method, fast and smooth logistics express delivery and safe information protection all make e-commerce more and more popular among Internet users. Nowadays, a large number of computer technologies are used in commercial fields, including software technology, network technology, hardware technology and so on. More and more enterprises use computers to carry out business, sell, buy and publicize all kinds of goods. Various business systems and software have liberated the hands of enterprises and enabled enterprises to maximize benefits. Therefore, computer technology plays a very important role in the commercial field.
This paper mainly analyzes the functional requirements of the foreground system and background management system, and analyzes the non functional requirements of the security and scalability of the system. Based on the detailed demand analysis, the database structure is determined according to the functional design of the system to realize the complete coding. The beauty website takes MySQL as the main storage unit of background data, uses the principles and development methods of software engineering, and uses the springboot framework of Java to build a management system to realize all the functions of the system. Complete the page design and function realization of the main modules of the system. This paper shows the implementation effect diagram of the home page, and introduces the implementation process of user registration function, beauty consulting, mall management, commodity purchase and view my order function and online payment function through the code and page.
Key words:Beauty products; Springboot; Product search
目 ?錄
第1章 緒論
1.1?研究背景與意義
1.2?開發現狀
1.3?論文組成結構
第2章 相關技術介紹
2.1?相關技術說明
2.2 B/S體系工作原理
2.3 Springboot框架介紹
2.4?MySQL簡介
2.5?JavaScript運行模式
第3章 系統分析
3.1?可行性分析
3.1.1?經濟可行性
3.1.2?技術可行性
3.1.3?操作可行性
3.2?功能性需求分析
3.3?非功能性需求分析
第4章 系統設計
4.1?功能模塊設計
4.2?數據庫設計
4.2.1?概念模型設計
4.2.2?數據庫邏輯設計
4.2.3?數據庫表設計
第5章 系統實現
5.1?用戶登錄的實現
5.2?系統前臺主要功能實現
5.2.1?首頁的實現
5.2.2?用戶注冊的實現
5.2.3?美妝商城的實現
5.2.4?商品搜索的實現
5.2.5?商品購買的實現
5.3?系統后臺主要功能實現
5.3.1?用戶管理的實現
5.3.2?商城管理的實現
5.3.3?訂單列表管理的實現
第6章 系統測試
6.1?系統可靠性測試
6.2?系統功能性測試
6.3?系統合格性測試
6.4?測試結果
第7章 總結與展望
參考文獻
致謝
隨著中國經濟的快速增長,人均收入的提高,人們的生活水平隨之一步步地提高,人們把自己的吃穿住行等基本問題解決之后,開始慢慢注意自己的形象問題,對于美也有自己的看法,開始注意自己的皮膚和外表。美妝行業隨之快速發展起來并且不斷壯大。
隨著移動互聯網的迅速發展,除了傳統的網頁瀏覽、資料搜索、發送電子郵件等基本應用外,國內大多數網民已經漸漸習慣了通過網絡接受購物、通訊、旅游、娛樂等傳統功能之外的新服務模式,其中利用網絡購物也日益成為人們生活中一種重要的購物形式。互聯網的快速發展為美妝商城系統發展提供了強大保障和支撐,另外,在線網上購物的外部環境也逐漸得到了改善,移動互聯網終端(手機、平板)使得網民結構變得越來越大眾化,網上支付結算手段越來越便捷,快遞物流越來越暢通,相應的法規政策也越來越完善。現如今,在線網上購物對人們的吸引力越來越大,人們對網上購物的看法也從一開始的不了解到了解,從懷疑到逐漸信任,從拒絕到慢慢接受并習慣。在線網上購物的觀念已經越來越深入人心,促使人們在線網上購物的主要因素有:
(1)方便快捷。網上購物可全天 24 小時營業,人們不需要奔赴到商店就可進行購物,購買的商品也可以直接送達到家。這樣就使得消費者即使足不出戶,也能買到來自世界各地得喜愛商品。
(2)信息量大。相比于傳統的購物的方式,電子商務所能容納的信息量非常大,既包括現實產品也包括虛擬產品。另外,還可以提供一些比較特殊的產品,既能保護消費者的個人隱私,又能滿足消費者不同的心理需求。
(3)私密性強。消費者有時候在購買一些不愿意讓別人知道的商品時,利用網上購物,賣家和快遞物流都可以保護好用戶的隱私,這樣就可以避免一些不必要的麻煩。
由于近年來在線銷售行業的興起,也了解了一些相關信息。在中國,以前的銷售只是傳統銷售,而在線銷售似乎滿足了市場需求。到目前為止,有一些家喻戶曉的名字,如淘寶和天貓。然而,這種在線銷售也有一些缺點:用戶不能在下訂單并付款后立即提貨,他們還應該考慮貨物是否受損。該系統是根據商品網絡上的銷售情況開發的。
經過幾年的發展,許多被消費者認可的網上購物中心已經出現在國內外。這些網上購物中心的內容是多樣化的,它們包含的功能相對完善,包括注冊用戶、搜索商品、管理訂單、介紹商品細節以及在線留言。如今,互聯網的廣泛使用在一定程度上導致了國內外在線購物中心的發展,只要企業通過這個平臺在線打字,就可以隨時管理系統的內容。通過展示商品內容和發布公告,鼓勵消費者購買和進行在線交易。
根據市場調研得到的信息數據,結合國內外前沿研究,利用相關系統開發和設計方法,最終設計出美妝網站。
本文共有七章,如下所示。
第一章概述了美妝網站的研究目的和意義;精煉地總結了國內外在內的領域研究情況和未來的研究趨勢,最后給出了論文的組成結構。
第二章簡要概述了本文所用的開發技術和工具。
第三章簡要對系統各業務流程進行需求分析、可行性分析。
第四章對美妝網站進行設計。
第五章對美妝網站進行實現,并貼出相關頁面截圖,語言描述出具體功能實現的操作方法。
第六章對美妝網站采用測試用例的方式來對一些主要功能模塊測試,最后得出測試結果。
第七章總結全文并對未來的研究做出展望。
本系統前端部分基于MVVM模式進行開發,采用B/S模式,后端部分基于Java的springboot框架進行開發。
前端部分:前端框架采用了比較流行的漸進式JavaScript框架Springboot.js。使用Springboot-Router和Springbootx實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型,項目前端通過柵格布局實現響應式,可適應PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用springboot作為開發框架,同時集成MyBatis、Redis等相關技術。
B/S架構采取瀏覽器請求,服務器響應的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務器產生的文本、數據、圖片、動畫、視頻點播和聲音等信息;
而每一個Web服務器又可以通過各種方式與數據庫服務器連接,大量的數據實際存放在數據庫服務器中;
從Web服務器上下載程序到本地來執行,在下載過程中若遇到與數據庫有關的指令,由Web服務器交給數據庫服務器來解釋執行,并返回給Web服務器,Web服務器又返回給用戶。在這種結構中,將許許多多的網連接到一塊,形成一個巨大的網,即全球網。而各個企業可以在此結構的基礎上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對許多分布于網絡上的服務器進行請求訪問的,瀏覽器的請求通過服務器進行處理,并將處理結果以及相應的信息返回給瀏覽器,其他的數據加工、請求全部都是由Web Server完成的。通過該框架結構以及植入于操作系統內部的瀏覽器,該結構已經成為了當今軟件應用的主流結構模式。
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java平臺的任何環境中工作。Spring集成多種事務模板,系統可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring的數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數據訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個自己的WebMVC框架,其開發人員在開發過程中認為現有的StrutsWeb框架的呈現層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創建了SpringMVC。
MySQL是一個開放的、快速的、多線程的SQL關系型數據庫服務器。由于其體積小、免費、運行速度快以及可以通過相關免費的軟件來對MySql數據庫中的相關數據結構信息等等優點。受廣大中等、小型企業所喜愛并占據了很大地位。本系統在數據庫方面選用MySQL,并通過Nacivat來進行MySql數據庫的管理。在Mysql的安裝過程中,最需要注意的就是數據庫的編碼問題,所以在安裝數據庫時需要設置數據庫的編碼為Utf-8,與前臺頁面和服務器的編碼相一致。
JavaScript是一種屬于網絡的高級腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。
1.1是一種解釋性腳本語言(代碼不進行預編譯)。
1.2主要用來向HTML(標準通用標記語言下的一個應用)頁面添加交互行為。
1.3可以直接嵌入HTML頁面,但寫成單獨的js文件有利于結構和行為的分離。
1.4跨平臺特性,在絕大多數瀏覽器的支持下,可以在多種平臺下運行(如Windows、Linux、Mac、Android、iOS等)。
1.5 JavaScript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程序的基本程序框架。JavaScript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變量提供存放信息的地方,表達式則可以完成較復雜的信息處理。
本系統將在經濟、技術、操作這三個角度上進行可行性分析。
整個系統從設計到開發以及測試過程嚴謹步驟齊全,所有工作任務全部由本人完成,并未獲取外部技術支持,節約了一切服務成本開銷以及人工成本,在硬件方面,為節約成本使用一臺二手移動工作站作為項目部署服務器以及數據庫服務器,成本在一萬元一下,真個網絡部署也是由本人獨立完成不涉及到其他人工費用,整個開發過程本著低成本,低消耗的原則。
技術可行性分析的目的是確認該系統能否利用現有技術實現,并評估開發效率和完成情況。技術的可行性是指在當前的技術條件下,計算機軟件和硬件的開發是否能夠滿足發展的要求。因為該系統的開發基于Springboot框架,所以開發該系統所需的軟件和硬件條件可以在普通計算機上滿足。因為它占用的內存相對較少,所以用Mysql數據庫開發和設計軟件理論上沒有問題,因為它占用的內存太少。上述技術可以有效地保證系統的成功和高效開發。
美妝網站的使用界面簡單易于操作,采用常見的界面窗口來登錄界面,通過電腦進行訪問操作,用戶只要平時使用過電腦都能進行訪問操作。此系統的開發采用Springboot框架開發,人性化和完善化是B/S結構開發比較顯要的特點使得用戶操作相比較其他更加簡潔方便。易操作、易管理、交互性好在本系統操作上體現得淋漓盡致。
前臺需求:
(1)用戶模塊:主要包括用戶的注冊和登陸、用戶個人信息管理和用戶帳單查詢等功能。
(2)商品模塊:主要包括商品瀏覽、商品信息展示、商品搜索、商品收藏、商品購買等功能。
(3)購買訂單模塊:主要包括生成訂單、我的訂單、查看訂單詳細信息、在線支付等功能。
(4)美妝資訊模塊:主要展示系統最新的美妝資訊信息。
后臺需求:
(1)用戶管理:主要包括用戶列表、用戶數據管理等功能。
(2)商品管理:主要包括商品列表、商品類目管理、商品添加、商品信息管理等功能。
(3)訂單管理:主要包括訂單審核、訂單確認、訂單刪除等功能。
(4)物流配送管理:用戶訂單的物流配送信息維護管理。
系統用例圖如下所示。
圖3-1系統用例圖
商品添加用例描述如下表所示。
表3-1商品添加用例描述
| 用例名稱 | 添加新商品 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進行添加新商品操作 | |
| 前置條件 | 管理員添加新商品前必須登錄系統 | |
| 后置條件 | 系統中添加一個新商品 | |
| 基本事件流 | 參與者動作 | 系統響應 |
| 4、管理員填寫新商品信息,點擊“添加”按鈕。 | 2、系統打開添加新商品界面。 3、系統檢查管理員輸入的商品信息是正確有效的。 5、系統將商品添加到數據庫中。 6、系統提示“操作成功”。 7、系統跳轉到商品管理界面。 | |
| 其他事件流 | 1、系統驗證管理員輸入的商品名為空,則提示“*請填寫商品名稱!”。 2、系統驗證管理員輸入的價格不是貨幣格式,則提示“*價格必須是貨幣格式!” | |
商品刪除用例描述如下表所示。
表3-2商品刪除用例描述
| 用例名稱 | 刪除商品 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進行刪除商品操作 | |
| 前置條件 | 管理員刪除商品前必須登錄系統 | |
| 后置條件 | 系統中刪除一個商品 | |
| 基本事件流 | 參與者動作 | 系統響應 |
| 1、管理員在后臺主界面選擇“商品管理”。 4、管理員選擇一個商品,點擊“刪除”按鈕。 6、管理員點擊“確定”按鈕。 | 2、系統從數據庫中獲取商品信息列表 3、系統打開商品列表界面。 5、系統提示“你確定要刪除嗎?”。 7、系統將商品從數據庫中刪除。 8、系統提示“刪除成功”。 9、系統跳轉到商品管理界面。 | |
| 其他事件流 | 無 | |
商城分類用例描述如下表所示。
表3-2商城分類用例描述
| 用例名稱 | 分類商品 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進行分類商品操作 | |
| 前置條件 | 管理員分類商品前必須登錄系統 | |
| 后置條件 | 系統中分類一個商品 | |
| 基本事件流 | 參與者動作 | 系統響應 |
| 1、管理員在后臺主界面選擇“商品管理”。 4、管理員選擇一個商品,點擊“分類”按鈕。 6、管理員點擊“確定”按鈕。 | 2、系統從數據庫中獲取商品信息列表 3、系統打開商品列表界面。 5、系統提示“你確定要分類嗎?”。 7、系統將商品從數據庫中分類。 8、系統提示“分類成功”。 9、系統跳轉到商品管理界面。 | |
| 其他事件流 | 無 | |
用戶編輯用例描述如下表所示。
表3-3用戶編輯用例描述
| 用例名稱 | 修改用戶 | |
| 參與者 | 管理員 | |
| 用例概述 | 本用例用于管理員進行修改用戶信息操作 | |
| 前置條件 | 管理員已經登錄系統 | |
| 后置條件 | 系統中更新一條用戶記錄 | |
| 基本事件流 | 參與者動作 | 系統響應 |
| 1、管理員在后臺主界面選擇“用戶管理”。 4、管理員在用戶列表中選擇一個用戶,點擊“編輯”按鈕。 6、管理員填寫用戶信息,點擊“保存修改”按鈕。 | 2、系統從數據庫中獲取用戶信息。 3、系統打開用戶列表界面。 5、系統打開修改用戶信息界面。 7、系統將更改后的添加到數據庫中。 8、系統提示“操作成功”。 9、系統跳轉到用戶管理界面。 | |
| 其他事件流 | 無 | |
商品購買用例描述如下表所示。
表3-5商品購買用例描述
| 用例名稱 | 商品購買 | |
| 參與者 | 用戶 | |
| 用例概述 | 本用例用于用戶進行對商品購買操作 | |
| 前置條件 | 用戶已經登錄系統 | |
| 后置條件 | 系統中增加一條用戶購買記錄 | |
| 基本事件流 | 參與者動作 | 系統響應 |
| 1、用戶在前臺首頁選擇任意一個商品分類。 4、管理員在用戶列表中選擇一個商品。 7、用戶填寫購買訂單,點擊“購買”按鈕。 | 2、系統從數據庫中獲取商品列表信息。 3、系統打開商品列表界面。 5、系統從數據庫中獲取商品信息。 6、系統打開商品信息及購買界面。 8、系統檢查用戶輸入的信息是正確有效的。 9、系統將購買記錄添加到數據庫中。 | |
| 其他事件流 | 1、系統驗證用戶輸入的字段為空,則提示“*購買數量不能為空!”。 | |
隨著用戶量的增加,系統可能會需要同時服務上千、上萬個頁面,服務器需要同時響應大量用戶的操作,這就要求系統需要有良好的可擴展性,否則系統會出現延遲,卡頓甚至服務器崩潰的問題。高擴展性可以使軟件保持旺盛的生命力,同時也能夠使系統更好的適應用戶增加、提高性能需求、增加應用功能等改變。
系統中保存了大量用戶和管理員的個人信息,因此,保證系統服務器和數據安全是在開發過程中需要考慮的重要問題。安全性包括服務器安全、操作系統安全、數據庫安全、程序代碼安全以及用戶個人信息和支付安全等,系統可以通過采用防火墻技術、加密技術、認證技術等來增強其安全性,只有一個健壯安全的系統才能具有長久的生命力。
通過軟件的需求分析已經獲得了系統的基本功能需求。根據各大功能模塊的不同,將系統分為各種功能大塊。系統功能結構如下圖所示。
圖4-2系統功能結構圖
注冊/登錄
游客(未進行注冊或登陸的用戶)可以瀏覽、搜索商品,但不能進行收藏和購買。用戶注冊首先需要進行表單驗證,來驗證用戶名和手機號碼是否合法,然后驗證用戶名和手機號是否已經存在,驗證通過即可注冊。
注冊成功后,用戶可以通過輸入用戶名來登錄系統,輸入密碼后進行驗證。登錄成功后,用戶可以使用商品收藏、商品購買、查看我的訂單、個人信息管理等功能。
個人信息管理
用戶登錄系統后,在賬戶設置中,可以修改昵稱、頭像、手機號、登陸密碼、收貨地址等個人基本信息。
商品搜索
系統首頁展示了商品搜索輸入框,用戶在輸入框內輸入與商品名稱相關的關鍵字,系統通過模糊查詢搜索到用戶需要的商品并展示。
商品信息展示
用戶在瀏覽商品時,點擊某一個商品,跳轉到該商品的信息展示頁。在商品信息頁面展示了商品的詳情信息,比如商品介紹,商品詳情等,用戶通過瀏覽信息了解商品的主要功能和用途,最終決定是否購買。
商品購買
在商品信息頁面,用戶可以通過點擊“購買”進行購買商品,點擊后跳轉到訂單生成頁面。訂單生成頁面會展示商品信息,收貨地址,優惠信息等,用戶確認后信息無誤點擊“提交”生成訂單,訂單生成后跳轉到支付頁面,支付完成則購買成功。
生成訂單
用戶在購買商品時,點擊商品信息頁面的“立即購買”或購買記錄頁面的“去結算”,跳轉到訂單生成頁面,在訂單生成頁面用戶需要確認收貨地址、收貨人手機號、收貨人姓名等信息,確認無誤后點擊“提交訂單”,訂單提交成功,生成一條訂單信息。
查看訂單詳情
用戶在查看我的訂單列表時,可以點擊某一個訂單來查看該訂單的詳細信息,主要包括訂單編號、訂單狀態、訂單日期、訂單中的商品、交易金額等。訂單詳情還可以查看商品物流信息,用戶通過能夠物流信息了解所購買商品的發貨狀態。
商品列表
管理員可以在“商品列表”中展示商城中需要銷售的商品,包含商品名稱,商品屬性以及類目等商品信息。管理員可以對商品進行搜索,按分類查詢商品。
商品添加
添加商品首先需要輸入商品基本信息,如商品名稱、商品數量、商品分類等;然后需要編輯商品信息詳情,如商品規格,商品描述,商品圖片等。管理員也可以刪除已添加的商品。
商品管理
用戶在購買商品時需要選擇商品規格,管理員可以設置商品規格的名稱以及展示的順序等。管理員還可以給商品規格添加屬性值,也可以刪除不需要的屬性值。同時,管理員可以編輯商品信息,如商品介紹、商品展示圖片等,方便用戶瀏覽。
訂單管理
管理員根據訂單號、收貨人姓名、收貨地址、收貨人手機號碼等基本訂單信息進行發貨配送。
美妝資訊管理
系統首頁可以發布美妝資訊。管理員可以添加、修改資訊的信息。
概念設計包括實體和聯系兩部分,如該系統中,用戶是一個實體,其屬性包括用戶 ID 標識、用戶名、密碼、電話、地址等屬性。聯系是指實體之間有意義的關聯,包括一對一、一對多、多對多三種類型。
系統E-R圖如下所示。
圖4-3系統E-R圖
在圖中,用戶購買商品,關系為1:N,管理員管理商品的關系為1:N,用戶和訂單的關系為1:N。
針對系統的實體和屬性,結合數據設計思想,對系統的邏輯設計的內容進行如下描述。
商品(商品編號、商品名稱、商品圖片、價格、類目、庫存數量、介紹)。
訂單(訂單編號、用戶名、訂單內容、總金額、手機號、收貨地址、是否支付、當前狀態)。
美妝資訊(資訊編號、標題、類別、內容、圖片)。
數據庫表是設計和實現系統的一個重要基礎。以下列出了該購物系統幾個重要的數據庫表。
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| user_registration_id | int | 11 | 是 | 是 | 用戶注冊ID |
| gender | varchar | 64 | 否 | 否 | 性別 |
| date_of_birth | varchar | 64 | 否 | 否 | 出生日期 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
??
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| shopping_mall_id | int | 11 | 是 | 是 | 商城ID |
| seller | int | 11 | 否 | 否 | 賣家 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| cart_title | varchar | 125 | 否 | 否 | 標題: |
| cart_img | text | 0 | 否 | 否 | 封面圖 |
| cart_description | varchar | 255 | 否 | 否 | 描述 |
| cart_price_ago | double | 8 | 是 | 否 | 原價 |
| cart_price | double | 8 | 是 | 否 | 賣價 |
| cart_inventory | int | 11 | 是 | 否 | 商品庫存 |
| cart_type | varchar | 64 | 是 | 否 | 商品分類: |
| cart_content | longtext | 0 | 否 | 否 | 正文 |
| cart_img_1 | text | 0 | 否 | 否 | 主圖1: |
| cart_img_2 | text | 0 | 否 | 否 | 主圖2: |
| cart_img_3 | text | 0 | 否 | 否 | 主圖3: |
| cart_img_4 | text | 0 | 否 | 否 | 主圖4: |
| cart_img_5 | text | 0 | 否 | 否 | 主圖5: |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| type_id | int | 11 | 是 | 是 | 商品分類ID: |
| father_id | smallint | 5 | 是 | 否 | 上級分類 |
| name | varchar | 255 | 否 | 否 | 商品名稱: |
| desc | varchar | 255 | 否 | 否 | 描述: |
| icon | varchar | 255 | 否 | 否 | 圖標: |
| source_table | varchar | 255 | 否 | 否 | 來源表: |
| source_field | varchar | 255 | 否 | 否 | 來源字段: |
| create_time | timestamp | 0 | 是 | 否 | 創建時間: |
| update_time | timestamp | 0 | 是 | 否 | 更新時間: |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| order_id | int | 11 | 是 | 是 | 訂單ID: |
| order_number | varchar | 64 | 否 | 否 | 訂單號: |
| goods_id | mediumint | 8 | 是 | 否 | 商品id |
| title | varchar | 32 | 否 | 否 | 商品標題: |
| img | varchar | 255 | 否 | 否 | 商品圖片: |
| price | double | 10 | 是 | 否 | 價格: |
| price_ago | double | 10 | 是 | 否 | 原價: |
| num | int | 8 | 是 | 否 | 數量: |
| price_count | double | 8 | 是 | 否 | 總價: |
| norms | varchar | 255 | 否 | 否 | 規格: |
| type | varchar | 64 | 是 | 否 | 商品分類: |
| contact_name | varchar | 32 | 否 | 否 | 聯系人姓名: |
| contact_email | varchar | 125 | 否 | 否 | 聯系人郵箱: |
| contact_phone | varchar | 11 | 否 | 否 | 聯系人手機: |
| contact_address | varchar | 255 | 否 | 否 | 收件地址: |
| postal_code | varchar | 9 | 否 | 否 | 郵政編碼: |
| merchant_id | mediumint | 8 | 是 | 否 | 商家ID: |
| create_time | timestamp | 0 | 是 | 否 | 創建時間: |
| update_time | timestamp | 0 | 是 | 否 | 更新時間: |
| description | varchar | 255 | 否 | 否 | 描述 |
| state | varchar | 16 | 是 | 否 | 訂單狀態 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| Beautyinformation_id | int | 11 | 是 | 是 | 美妝資訊ID |
| title | varchar | 64 | 否 | 否 | 標題 |
| title_number | varchar | 64 | 否 | 否 | 標題編號 |
| publisher | int | 11 | 否 | 否 | 發布人 |
| title_picture | varchar | 255 | 否 | 否 | 標題圖片 |
| release_date | date | 0 | 否 | 否 | 發布日期 |
| content | longtext | 0 | 否 | 否 | 資訊內容 |
| hits | int | 11 | 是 | 否 | 點擊數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
financial_data表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| financial_data__id | int | 11 | 是 | 是 | 財務數據ID |
| date | date | 0 | 否 | 否 | 日期 |
| trade_name | varchar | 64 | 否 | 否 | 商品名稱 |
| revenue_amount | int | 11 | 否 | 否 | 收入金額 |
| merchant_store | int | 11 | 否 | 否 | 商家店鋪 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
用戶注冊完成后,點擊“登陸”進入到登陸頁面,輸入用戶名和密碼,點擊“登陸”按鈕,對用戶名和密碼進行驗證,根據傳入的用戶名和密碼在數據庫中是否能查詢到一條用戶信息,若不能返回用戶信息則登陸失敗,頁面提示用戶名或密碼錯誤。
登錄界面如下圖所示。
圖5-1登錄界面
登錄界面關鍵代碼如下所示。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}else{
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????//判斷是否有這個用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
????????????String res = String.valueOf(service.runCountSql(sql).getSingleResult());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態,不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數據庫
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號或密碼不正確");
????????}
}
用戶界面要盡量簡潔大方,使用戶能夠方便找到需要的功能入口,瀏覽、購買商品,且要易于修改和維護,同時還要保證用戶合法和系統安全。
首頁界面如下圖所示。
圖5-2首頁界面
用戶進入系統首頁后,點擊“注冊”鏈接進入到注冊頁面,按照頁面提示輸入用戶名、密碼和手機號,頁面進行表單驗證,驗證輸入的用戶名和手機號是否合法,表單驗證通過后,點擊“立即注冊”按鈕,利用 Ajax 技術,對用戶名和手機號實現頁面無刷新驗證,檢測數據庫中是否已經存在該用戶名或手機號,若數據庫中不存在,則注冊成功,注冊成功后,自動跳轉到登錄頁面。
用戶注冊界面如下所示。
圖5-3用戶注冊界面
用戶注冊關鍵代碼如下所示。
/**
?????* 注冊
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷)
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶組:[0,32767]決定用戶身份和權限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶名:[0,16]用戶登錄時所用的賬戶名稱
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱:[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認證:[0,1](0未認證|1審核中|2已認證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創建時間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
美妝商城頁是展示美妝商品的頁面,通過sql語句:"select shangpinxinximingcheng,id,tupian,jiage,addtime from shangpinxinxi order by addtime desc",將所有是商品按商品編號降序排列。
美妝商城頁面,如下圖所示。
圖5-4美妝商城頁面
系統首頁提供了搜索商品的輸入框,用戶在輸入框內輸入想要查找商品的關鍵字,點擊搜索按鈕,系統將用戶輸入的關鍵字傳遞到后臺。首先創建一個實體類 PageBean,該實體類的屬性包括頁碼 pageCode、每頁記錄數 pageSize、總記錄數 totalRecord 和一個 List 集合 beanList,利用輸入的關鍵字對數據庫進行模糊查詢,將得到的結果存入 PageBean 中,返回PageBean 跳轉到 goodList.Java?頁面,在 goodList.java?頁面,使用循環將搜索到的結果分頁展示。
商品搜索界面如下圖所示。
圖5-5商品搜索界面
商品搜索的關鍵代碼如下。
??@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
}
????public void insert(Map<String,Object> body){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
用戶在瀏覽商品時,對于心儀的想要購買的商品,可以將該商品添加到購買記錄中。點擊“添加購買記錄”按鈕,頁面將該商品的數據傳遞到后臺,首先查詢數據庫購買記錄表中是否已經存在該商品,若存在直接將商品數量加一,若不存在則創建一個新的購買記錄對象,添加購買記錄成功,數據庫中的購買記錄表添加一條信息。用戶還可以點擊“我的購買記錄”查看添加到購買記錄的商品,系統通過讀取 session獲取到用戶 ID,將用戶 ID 傳遞到后臺,在購買記錄表中查詢該用戶的所有購買記錄信息,返回數據到我的購買記錄頁面。
商品購買界面如下圖所示。
圖5-6商品購買界面
個人支付界面如下圖所示。
圖5-7個人支付界面
管理員對系統用戶的管理,在yhzhgl.Java實現管理員用戶的管理,包括錄入、刪除、修改,修改密碼通過SESSION獲取用戶名,然后輸入新密碼,提交到mod.java中,使用sql命令更新密碼。
管理員可以獲取系統中所有商城的列表并對其進行編輯。管理員在添加商城時,需要輸入商城基本信息,如標題、商品分類、原價、庫存、描述等,還需要輸入商城詳情描述,包括對商城功能的描述以及展示圖片等。添加商城完成,數據庫商城表添加一條信息。管理員可以對商城信息進行編輯。
商城管理界面如下圖所示。
圖5-8商城管理界面
管理員在后臺管理界面點擊到所有訂單列表界面dingdan_list.java,向控制層dingdanAction發送請求,搜索當前所有訂單列表信息,dingdanAction向訂單列表數據訪問層調用搜索全部訂單列表的請求,向數據庫的訂單列表搜索當前所有訂單列表并將訂單列表信息以對象的形式層層返回到dingdan_list.java界面,顯示出當前所有訂單列表信息。同時可以刪除過期訂單列表,確認已有訂單列表,進行發貨處理。
訂單列表管理界面如下圖所示。
圖5-9訂單列表管理界面
訂單列表管理界面邏輯代碼如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
以進入系統首頁的訪問速度為例展示系統的性能測試;系統的主要用戶群體是購物理念較為先進的消費者,系統要在3秒鐘內響應;需要完成頁面的菜單欄、首頁輪播圖片、類目及商品列表、商品評價以及各功能模塊入口等元素的顯示。
功能性測試是指執行指定的工作流程,通過對一個系統的所有特性和功能都進行測試確保符合需求和規范。
系統功能性測試表如下表所示。
表6-1系統功能性測試表
| 編號 | 測試功能 | 測試內容 | 測試結果 |
| 1 | 用戶登錄 | 1.驗證用戶名與密碼的正確性。 2.驗證密碼是否可見。 | 通過 |
| 2 | 首頁展示 | 1.首頁數據是否成功加載。 2.驗證搜索功能的準確性。 3.驗證是否可以異步加載。 4.驗證導航欄按鈕。 | 通過 |
| 3 | 個人信息修改 | 1.驗證登錄名是否可以正常更改。 2.驗證聯系方式是否可以更改。 3.驗證收貨地址可以正常修改。 4.驗證密碼是否可以修改。 | 通過 |
| 7 | 商品分類管理 | 1.驗證類目新增是否可以成功。 2.驗證類目刪除是否可以成功。 | 通過 |
| 8 | 商品管理 | 1.商品信息是否與上傳一致。 2.是否能完成價格修改。 3.驗證庫存信息修改。 | 通過 |
| 9 | 訂單處理 | 1.能否正常上傳單號完成發貨。 2.驗證數據準確性。 | 通過 |
| 10 | 添加商品 | 1.上傳商品是否添加驗證。 2.圖片是否成功上傳。 3.驗證表單是否提交成功。 | 通過 |
| 11 | 用戶管理 | 1.驗證用戶錄入功能。 2.驗證用戶違規清理功能。 | 通過 |
集成測試后,所有的模塊已經全部連接完畢,形成了一個完整的系統。合格性測試是在集成測試完畢后,進一步對系統進行綜合性的檢測。經過合格性測試,可以檢查出系統是否符合系統的設計,能夠完成需求的所有功能。本系統經過最后的測試,所有模塊功能都能按預定要求工作。
在實際測試中,經過一系列系統性的測試,使我們能夠及時發現一些系統在設計中出現的疏忽和漏洞。經過嚴密的測試,不僅發現了模塊內部的錯誤,也查找到模塊連接后產生的錯誤。經過測試,對系統產生錯誤的地方進行優化、修改和完善,使得系統能夠實現最初設計的基本功能。
此時項目已經完成,即使實施的時間不是很長,但是這個過程中需要準備很長的一段時間去對系統設計開發所實際到的技術進行學習。在學習的過程中,我逐漸認識得到了我自身存在的一些不足。對于一些控制是必要的應用技能,能夠理解,整個過程中僅僅是一個掌握了常用的性能和控制方法,我覺得挺容易的。從該系統中,系統的分析和設計的調查數據,并且已經經歷了幾個月,并努力幾個月,該系統已經完成。很顯然,該系統仍有很多不成熟,在系統設計過程中有許多技術缺陷存在。在設計的過程中也涉及到了很多自己無法解決的問題,主要通過找專業的網站和論壇來解決這些問題,對于圓滿完成我的畢業設計,他們也貢獻了很大一部分力量。系統的開發環境和配置都是可以自行安裝的,系統使用Springboot開發框架,使用比較成熟的Mysql數據庫進行對系統前臺及后臺的數據交互,根據技術語言對數據庫,結合需求進行修改維護,可以使得系統運行更具有穩定性和安全性,從而完成實現系統的開發。
系統投入運行時,各功能均運行正常。系統的每個界面的操作符合常規邏輯,對使用者來說操作簡單,界面友好。整個系統的各個功能設計合理,體現了人性化。
美妝網站的主要特點有:
(1)簡單大方,易于操作的 Web 頁面;
(2)利用 Ajax 技術使頁面進行無刷新更新;
(3)根據用戶的瀏覽和購買記錄,向用戶推薦可能感興趣的商品;
(4)系統具有商品搜索功能,使用戶能夠簡單方便的找到自己心儀的商品;
(5)商品評論功能可以幫助用戶更全面的了解商品信息,用戶可以發表自己對已購買商品的評價;
(6)有良好的安全性和可擴展性,增強了系統的可靠性,使系統保持持久的生命力。
由于時間限制和本人能力條件有限,該系統還存在一些不足,今后也會出現許多新的開發技術,未來還可以對系統做出如下改進:
(1)優化系統頁面,使頁面更加美觀且方便操作;
(2)優化商品搜索功能,提供多條件選擇查詢搜索;
(3)優化商品推薦功能,提高商品推薦的精準度;
(4)優化在線支付功能,提供更多支付接口,使用戶付款更加方便;
(5)進一步提高系統的安全性,使系統更加健壯;
(6)優化數據和代碼,提升軟件效率,方便系統維護和擴展。
參考文獻
[1]《化妝品生產質量管理規范》公布[J].日用化學品科學,2022,45(01):42.
[2]化妝品行業邁入“變革時代”[J].國際品牌觀察,2021(32):23.
[3]康勇. 加強網售化妝品監管勢在必行[N]. 中國醫藥報,2021-11-02(005).
[4]張欣茹,王鈺祺.變革進行時,化妝品行業邁入“中國時間”[J].國際品牌觀察,2021(29):65-67.
[5]王道平,郭文璇.網絡購物節期間在線零售商定價策略——基于電商平臺銷售大數據的分析[J].中國流通經濟,2021,35(09):95-106.
[6]徐蕾.基于消費者體驗需求的高端化妝品新零售經營策略[J].玉林師范學院學報,2021,42(03):117-122.
[7]鄭曉紅,楊圣黨. 打造化妝品網絡銷售監管新格局[N]. 中國醫藥報,2021-04-20(006).
[8]尹蓓珮.個性化定制化妝品發展現狀及問題分析[J].上海醫藥,2020,41(19):70-72.
[9]李晶晶.微信公眾號在化妝品營銷中的應用探討[J].今日財富(中國知識產權),2020(08):63-64.
[10]陳靜. 基于云計算的新零售化妝品企業ERP系統的設計與實施[D].山東大學,2020.
[11]陳德旭,朱文龍.“新零售+”電商模式的探索與設計[J].經濟師,2020(05):223-224.
[12]戴雯婕,宋劍奇.“互聯網+”化妝品營銷中《電子商務法》監管問題研究[J].時代金融,2020(06):123-124.
[13]徐連霞,李建.淺議化妝品網上銷售系統的設計與實現[J].明日風尚,2019(13):57.
[14]林勤花.基于.NET的某美妝網站的分析與設計[J].河北軟件職業技術學院學報,2019,14(04):55-57.
[15]丁鐳. ERP系統銷售管理子系統的設計與實現[D].北京郵電大學,20189
[20]WojciechowskiJ,SakowiczB,DuraK,etal.MVCmodel,strutsframeworkandfileuploadissuesinwebapplicationsbasedonJ2EEplatform[C]//ModernProblemsofRadioEngineering,Telecommunications&ComputerScience,InternationalConference.IEEE,2018:342-345.
致謝
時光飛逝,轉眼間我在學校的這些年生活即將結束,回顧這幾年的學習生活,收獲良多,既有幸福也有難過,學校生活的結束對于我來說也是一個新的開始。論文即將完成,在此,我心中有許多想要感謝的人。首先感謝我的導師,不僅在學習研究方面加以指導,也在生活和為人處世上給予幫助。還要感謝授課老師,你們嚴謹的學術精神和積極向上的工作態度都在激勵我的成長和進步。感謝多年來一直生活在一起的室友,謝謝你們多年來的陪伴和照顧。最后,要感謝各位論文評審老師,感謝您們在百忙之中抽空評閱本論文并給出寶貴的意見和建議。
點贊+收藏+關注 ?→ ?私信領取本源代碼、數據庫
總結
以上是生活随笔為你收集整理的Springboot+美妆网站的设计与实现 毕业设计-附源码211539的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DiabloFX展示模板 joomla多
- 下一篇: Fedora 34 dnf 安装nvid