本研究基于Spring Boot框架,設計并實現了一個Web美食分享平臺,旨在為用戶提供一個交流分享美食體驗的社區平臺。該平臺涵蓋了用戶注冊登錄、美食制作方法分享發布、點贊評論互動等功能模塊,致力于促進美食文化的傳播和交流。
通過Web美食分享平臺的設計與實現,用戶可以注冊登錄平臺,發布自己的美食制作經驗,與他人互動交流。采用Spring Boot框架,系統具有高效的響應速度和穩定性,為用戶提供流暢的使用體驗。
基于Spring Boot框架的Web美食分享平臺的設計與實現,將為美食愛好者搭建一個便捷、互動性強的分享平臺,豐富用戶的美食生活,促進美食文化的傳承和交流。該平臺的應用有助于推動美食產業的發展,為用戶提供更多美食探索和交流的機會,具有重要的社會和文化意義。
關鍵詞:美食分享平臺;Springboot框架;MySQL數據庫;
Based on Spring Boot framework, this research designs and implements a Web food sharing platform, aiming to provide a community platform for users to exchange and share food experience. The platform covers functional modules such as user registration and login, sharing and publishing of food production methods, and interaction of likes and comments, and is committed to promoting the dissemination and exchange of food culture.
Through the design and implementation of the Web food sharing platform, users can register and log in to the platform, publish their own food production experience, and interact with others. Using Spring Boot framework, the system has efficient response speed and stability, and provides smooth user experience.
The design and implementation of Web food sharing platform based on Spring Boot framework will build a convenient and interactive sharing platform for food lovers, enrich users' food life, and promote the inheritance and exchange of food culture. The application of the platform helps to promote the development of the food industry and provides users with more opportunities for food exploration and communication, which has important social and cultural significance.
Keywords:?Food sharing platform; Springboot framework; MySQL database;
目錄
基于Web美食分享平臺的系統設計與實現
摘 要
Abstract
第1章 緒論
1.1 研究背景
1.2 選題意義
1.3 課題研究現狀
1.4 論文組成結構
第2章 開發工具及相關技術介紹
2.1 開發技術說明
2.2 MVVM模式
2.3 B/S結構
2.4 SpringBoot框架介紹
2.5 Mysql數據庫
第3章 系統分析
3.1 可行性分析
3.1.1 經濟可行性
3.1.2 技術可行性
3.1.3 操作可行性
3.2性能分析
3.3系統操作流程
3.3.1用戶登錄流程
3.3.2信息添加流程
3.3.3信息刪除流程
第4章 系統設計
4.1系統架構設計
4.2開發流程設計
4.3數據庫設計
4.3.2數據表
第5章系統實現
5.1普通用戶功能模塊
5.2管理員功能模塊
第六章系統測試
6.1測試目的
6.2測試方案設計
6.2.1 測試策略
6.2.2 測試分析
6.3?測試結果
第七章 總結與展望
參考文獻
?????????致謝
隨著社交網絡和數字化技術的快速發展,人們對美食分享和交流的需求日益增加。傳統的美食分享方式受限于時間和空間,難以實現大范圍的交流和分享。基于Web的美食分享平臺的設計與實現,旨在打破傳統的限制,提供一個開放、便捷的美食交流平臺,促進用戶間的美食互動和文化交流。
美食作為人們日常生活中不可或缺的一部分,已成為社交和文化交流的重要載體。然而,現有的美食分享平臺普遍存在著信息碎片化、內容質量參差不齊的問題,缺乏專業性和互動性。基于Web的美食分享平臺的研究與實現,旨在解決當前美食分享平臺存在的問題,提供一個更加專業、便捷的美食交流平臺,豐富用戶的美食生活體驗。
通過建立基于Web的美食分享平臺,可以為廣大美食愛好者提供一個交流互動的平臺,促進美食文化的傳播和共享。結合Web技術的優勢,實現美食愛好者間的實時互動和內容分享,推動美食產業的發展,促進美食文化的繁榮。基于此背景,開展基于Web的美食分享平臺的設計與實現具有重要的現實意義和推動作用。
開發基于Web的美食分享平臺具有重要意義。隨著人們生活水平的提高和對美食文化的關注度增加,建立一個專業、便捷的美食分享平臺能夠滿足用戶日益增長的美食需求,促進美食文化的傳播和交流,豐富用戶的生活體驗。
通過建立基于Web的美食分享平臺,可以為美食愛好者提供一個互動交流的平臺,激發用戶分享美食經驗、探索美食文化的熱情。該平臺不僅可以促進用戶間的信息交流和互動,還有助于挖掘和傳承地方美食文化,推動美食產業的發展和推廣。
基于Web的美食分享平臺的設計與實現,將為美食產業與文化交流帶來新的機遇和挑戰。通過構建一個專業、便捷的美食分享平臺,可以激發用戶對美食的熱愛和探索欲望,促進美食產業的創新發展,為美食文化的傳承和發展注入新的活力。
目前,基于Web的美食分享平臺已成為研究和開發的熱點領域。國內外許多互聯網平臺和社交應用已推出了各類美食分享功能,如美食圖片上傳、食譜分享、餐廳點評等,為用戶提供了豐富的美食交流平臺。然而,現有平臺普遍存在信息質量參差不齊、交互性不足等問題,需要進一步完善和優化。
在國際研究中,一些美食分享平臺注重用戶體驗和社交互動功能的設計,通過引入用戶生成內容(UGC)和社交分享機制,促進用戶間的互動和交流。國內研究則更注重美食文化的傳承和地方特色的展示,倡導健康飲食理念和文化傳統的傳播,為用戶提供更加豐富多元的美食體驗。
基于Web的美食分享平臺的研究現狀顯示出多樣化的發展趨勢,涵蓋了技術創新、用戶體驗和文化傳承等方面。未來的研究可以進一步探討如何整合大數據分析等技術手段,提升平臺的個性化推薦和用戶互動體驗,推動美食分享平臺向更加智能化、個性化的方向發展。
根據市場調研得到的信息數據,結合國內外前沿研究,利用相關系統開發和設計方法,最終設計出美食分享平臺。
本文共有七章,如下所示。
第一章概述了美食分享平臺的研究目的和意義;精煉地總結了國內外在內的領域研究情況和未來的研究趨勢,最后給出了論文的組成結構。
第二章簡要概述了本文所用的開發技術和工具。
第三章簡要對系統各業務流程進行需求分析、可行性分析。
第四章對美食分享平臺進行設計。
第五章對美食分享平臺進行實現,并貼出相關頁面截圖,語言描述出具體功能實現的操作方法。
第六章對美食分享平臺采用測試用例的方式來對一些主要功能模塊測試,最后得出測試結果。
第七章總結全文并對未來的研究做出展望。
本系統前端部分基于MVVM模式進行開發,采用B/S模式,后端部分基于Java的SPringboot框架進行開發。
前端部分:前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型,項目前端通過柵格布局實現響應式,可適應PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用ssm作為開發框架,同時集成MyBatis、Redis等相關技術。
MVVM模式是常用的開發模式,主要是在代碼實現上將其分為M層、V層和C層。
視圖(View)代表用戶交互界面,一個 Web 應用就可能有很多的界面,在 MVVM?模式中,視圖僅僅處理的只有數據采集、處理,還有用戶的請求, 并不包括業務流程的處理,業務流程由模型(Model)來處理。
模型(Model)就是業務流程/狀態的處理及業務規則的制定。模型處理業務流程的過程其它層是無法看見了的,它就像黑箱子,在接受視圖請求的數據之后,然后返回最終的處理結果。MVVM?最主要的核心就是業務模型的設計,一個典型的應用例子就是目前流行的 EJB 模型,它從應用技術實現的角度對模型做了進一步的劃分,以便充分利用現有的組件,但是它不能作為應用設計模型的框架。
控制器(Controller)可以理解為接收用戶的請求,然后視圖和模型匹配在一起,一起再完成用戶請求。它有非常明顯的作用在劃分控制層上,可以很清晰地告訴你,它就是一個分發器,選擇什么樣的模型、視圖,可以完成用戶的什么樣的請求。控制層不做所有的數據處理,比如說:用戶點擊一個連接,控制層接受到請求之后,并不處理業務信息,它只是向模型傳遞用戶的信息,同時告訴模型做什么,然后選擇符合需求的視圖返回給用戶。
B/S(Browser/Server)比前身架構更為省事的架構。它借助Web server完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題。
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。SpringBoot基于Spring4.0設計,不僅繼承了Spring框架原有的優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩定性等問題得到了很好的解決。
??SpringBoot所具備的特征有:可以創建獨立的Spring應用程序,并且基于其Maven或Gradle插件,可以創建可執行的JARs和WARs;內嵌Tomcat或Jetty等Servlet容器;提供自動配置的“starter”項目對象模型(POMS)以簡化Maven配置;盡可能自動配置Spring容器;提供準備好的特性,如指標、健康檢查和外部化配置;絕對沒有代碼生成,不需要XML配置。
Mysql 經過多次的更新,功能層面已經非常的豐富和完善了,從Mysql4版本到5版本進行了比較大的更新,在商業的實際使用中取得了很好的實際應用效果。最新版本的Mysql支持對信息的壓縮,同時還能進行加密能更好的滿足對信息安全性的需求。同時經過系統的多次更新,數據庫自身的鏡像功能也得到了很大的增強,運行的流暢度和易用性方面有了不小的進步,驅動的使用和創建也更加的高效快捷。最大的變動還是進行了空間信息的顯示優化,能更加方便的在應用地圖上進行坐標的標注和運算。強大的備份功能也保證了用戶使用的過程會更加安心,同時支持的Office特性還支持用戶的自行安裝和使用。在信息的顯示形式上也進行了不小的更新,增加了兩個非常使用的顯示區,一個是信息區,對表格和文字進行了分類處理,界面的顯示更加清爽和具體。第二是儀表的信息控件,能在儀表信息區進行信息的顯示,同時還能進行多個信息的比對,為用戶的實際使用帶來了很大的便捷。
針對本文中設計的高校自習室座位管理系統在實際的實現過程中,最終選擇Mysql數據庫的主要原因在于在企業的應用系統應用及開發的過程中會存在大量的數據庫比較頻繁的操作,而且數據的安全性要求也是非常的高。綜合這些因素,最終選擇安全性系數比較高的Mysql來對高校自習室座位管理系統后臺數據進行存儲操作。
本系統將在經濟、技術、操作這三個角度上進行可行性分析。
整個系統從設計到開發以及測試過程嚴謹步驟齊全,所有工作任務全部由本人完成,并未獲取外部技術支持,節約了一切服務成本開銷以及人工成本,在硬件方面,為節約成本使用一臺二手移動工作站作為項目部署服務器以及數據庫服務器,成本在一萬元一下,真個網絡部署也是由本人獨立完成不涉及到其他人工費用,整個開發過程本著低成本,低消耗的原則。
技術可行性分析的目的是確認該系統能否利用現有技術實現,并評估開發效率和完成情況。技術的可行性是指在當前的技術條件下,計算機軟件和硬件的開發是否能夠滿足發展的要求。因為該系統的開發基于Java語言,所以開發該系統所需的軟件和硬件條件可以在普通計算機上滿足。因為它占用的內存相對較少,所以用Mysql數據庫開發和設計軟件理論上沒有問題,因為它占用的內存太少。上述技術可以有效地保證系統的成功和高效開發。
美食分享平臺的使用界面簡單易于操作,采用常見的界面窗口來登錄界面,通過電腦進行訪問操作,用戶只要平時使用過電腦都能進行訪問操作。此系統的開發采用Java技術開發,人性化和完善化是B/S結構開發比較顯要的特點使得用戶操作相比較其他更加簡潔方便。易操作、易管理、交互性好在本系統操作上體現得淋漓盡致。
3.2性能分析
對于性能分析,與傳統的管理方式相比,傳統的管理方式是使用人工通過用紙和筆進行數據信息的統計和管理,并且這種方式對于存儲和查找某一數據信息都比較麻煩,隨著計算機網絡的到來,這種傳統的方法很難適應當下社會的發展,不僅降低人們的辦事效率,而且還需要很多的人力和物力,對于使用的時間和所要花費的費用都是比較高的,為了降低成本費用,提高用戶的工作效率,進行開發一套基于計算機和網絡技術的美食分享平臺。
美食分享平臺的開發設計時一個獨立的系統,以流行數據庫進行數據的存儲開發,主要是為了實現美食分享平臺的用戶角色及相對應的功能模塊,讓美食分享平臺的管理不會存在管理差異、低效率,而是跟傳統的管理信息恰好相反,美食分享平臺的實現可以節約資源,并且對于業務的處理速度也提高,速度快、效率高,功能性強大。
3.3系統操作流程
3.3.1用戶登錄流程
圖3-1登錄操作流程圖
3.3.2信息添加流程
對于美食分享平臺,需要隨時添加所需要的數據信息,對于用戶添加信息,需要根據添加界面,根據選框的內容進行填寫所要添加的數據信息,信息輸入完成后判斷數據信息是否符合要求,符合要求則添加完成,用戶所添加的信息不符合要求,則需要返回到第一步,重新輸入數據信息,再進行判斷操作,如圖3-2所示。
不管是哪個用戶角色進入到不通的系統操作界面,都可以進行不同的信息內容的操作功能,對用系統數據信息的刪除,用戶一旦將信息刪除,那么該刪除的數據信息將無法恢復,所以用戶在對數據刪除事,一定判斷刪除的內容是否是確定要刪除的,確定無誤后選擇確定刪除操作,如圖3-3所示。
圖3-3?信息刪除流程圖
4.1系統架構設計
美食分享平臺的系統項目的概述設計分析,主要是美食分享平臺信息的具體分析,進行數據庫的是設計,數據采用mysql數據庫,并且對于系統的設計采用比較人性化的操作設計,對于系統出現的錯誤信息可以及時做出處理及反饋。
基于美食分享平臺的設計基于現有的功能,可以實現管理員:系統用戶、美食信息管理、制作方法管理、菜品分類管理、系統管理、公告信息管理、資源管理等詳細的了解及統計分析。根據系統功能需求建立的模塊關系圖如下圖:
圖4-1管理員功能模塊圖
基于美食分享平臺的設計現有的功能,可以實現普通用戶功能:首頁、公告信息、菜系文化、美食信息、制作方法、個人中心等詳細的了解及統計分析;根據系統功能需求建立的模塊關系圖如下圖:
圖4-2用戶功能模塊圖??????????????
4.2開發流程設計
美食分享平臺的開發對管理模塊和系統使用的數據庫進行分析,編寫代開發,規劃和操作是構建信息管理應用程序的必要三步曲,它決定了系統是否能夠真正實現預設功能以及是否可以在成功設計后實施。在開發過程中,每個階段必須嚴格按照線性順序進行開發,并且在相應階段生成的每個工作都可以通過技術進行驗證和檢查。確保一個階段完成后是正確的,不會造成下一階段拖拽現象,使系統完成設計功能后得到保證。
從美食分享平臺的成功開發經驗來看,上述方法效果最為明顯,最大程度地降低了系統開發的復雜性。如圖4-2所示。
圖4-2開發系統流程圖
4.3數據庫設計
數據庫是信息系統的基礎和核心。數據庫設計的好壞直接影響到信息系統開發的成敗。創建數據庫表首先確定實體的屬性和實體之間的關系。根據關系創建一個數據表。4.3.1實體ER圖
數據庫是整個軟件編程中最重要的一個步驟,對于數據庫問題主要是判定數據庫的數量和結構公式的創建。展示系統使用的是Mysql進行對數據庫進行管理,進行保證數據的安全性、穩定性等。
概念模型的設計是為了抽象真實世界的信息,并對信息世界進行建模。它是數據庫設計的強大工具。數據庫概念模型設計可以通過E-R圖描述現實世界的概念模型。系統的E-R圖顯示了系統中實體之間的鏈接。而且Mysql數據庫是自我保護能力比較強的數據庫,下圖是美食分享平臺總E-R關系圖:
圖4-4系統E-R關系圖
這些功能可以充分滿足美食分享平臺的需求。此系統功能較為全面如下圖系統功能結構如圖4-5所示。
圖4-5系統功能結構圖
4.3.2數據表
我們可以根據數據結構的詳細分析要求,我們根據輸入和輸出數據量的要求進行分析,確定什么表,結構之間的關系,我們可以驗證,調整和完善,查詢和瀏覽過程,可以實現數據庫,以使用戶對數據和功能有更多要求。
基于系統使用的數據庫管理系統的特點,對數據庫的概念模型進行了轉換和構建。但是,這個系統只需要充分考慮美食分享平臺的功能,而且組織比較清晰。
表access_token (登陸訪問時長)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | token_id | int | 10 | 0 | N | Y | 臨時訪問牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 臨時訪問牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大壽命:默認2小時 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用戶編號: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 標題:[0,125]用于文章和html的title標簽中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分類:[0,1000]用來搜索指定類型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 點擊數:[0,1000000000]訪問這篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 點贊數 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
8 | source | varchar | 255 | 0 | Y | N | 來源:[0,255]文章的出處 | |
9 | url | varchar | 255 | 0 | Y | N | 來源地址:[0,255]用于跳轉到發布該文章的網站 | |
10 | tag | varchar | 255 | 0 | Y | N | 標簽:[0,255]用于標注文章所屬相關內容,多個標簽用空格隔開 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主體內容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面圖 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分類ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 顯示順序:[0,1000]決定分類顯示的先后順序 |
3 | name | varchar | 16 | 0 | N | N | 分類名稱:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上級分類ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述該分類的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分類圖標: | |
7 | url | varchar | 255 | 0 | Y | N | 外鏈地址:[0,255]如果該分類是跳轉到其他網站的情況下,就在該URL上設置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | auth_id | int | 10 | 0 | N | Y | 授權ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用戶組: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模塊名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 頁面標題: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路徑: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳轉方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可刪除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查詢字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表導航名稱: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表導航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表categorization_of_dishes (菜品分類)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | categorization_of_dishes_id | int | 10 | 0 | N | Y | 菜品分類ID | |
2 | dishes_and_cuisines | varchar | 64 | 0 | Y | N | 菜品菜系 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
6 | title | varchar | 255 | 0 | Y | N | 標題: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | comment_id | int | 10 | 0 | N | Y | 評論ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 評論人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回復評論ID:空為0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 內容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵稱: | |
6 | avatar | varchar | 255 | 0 | Y | N | 頭像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
9 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | food_information_id | int | 10 | 0 | N | Y | 美食信息ID | |
2 | dish_name | varchar | 64 | 0 | Y | N | 菜品名稱 | |
3 | dishes_and_cuisines | varchar | 64 | 0 | Y | N | 菜品菜系 | |
4 | cover_photo | varchar | 255 | 0 | Y | N | 封面圖片 | |
5 | nutrient_composition | varchar | 64 | 0 | Y | N | 營養成分 | |
6 | ingredients_composition | text | 65535 | 0 | Y | N | 食材組成 | |
7 | procedure_steps | text | 65535 | 0 | Y | N | 做法步驟 | |
8 | introduction_to_food | longtext | 2147483647 | 0 | Y | N | 美食簡介 | |
9 | hits | int | 10 | 0 | N | N | 0 | 點擊數 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 點贊數 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | hits_id | int | 10 | 0 | N | Y | 點贊ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 點贊人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 標題: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | praise_id | int | 10 | 0 | N | Y | 點贊ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 點贊人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 點贊狀態:1為點贊,0已取消 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | production_method_id | int | 10 | 0 | N | Y | 制作方法ID | |
2 | dish_name | varchar | 64 | 0 | Y | N | 菜品名稱 | |
3 | type_of_dishes | varchar | 64 | 0 | Y | N | 菜品菜系 | |
4 | cover_photo | varchar | 255 | 0 | Y | N | 封面圖片 | |
5 | materials_used | varchar | 64 | 0 | Y | N | 所用材料 | |
6 | cooking_duration | varchar | 64 | 0 | Y | N | 烹飪時長 | |
7 | publish_users | int | 10 | 0 | Y | N | 0 | 發布用戶 |
8 | user_name | varchar | 64 | 0 | Y | N | 用戶姓名 | |
9 | procedure_steps | text | 65535 | 0 | Y | N | 做法步驟 | |
10 | details_remarks | text | 65535 | 0 | Y | N | 詳情備注 | |
11 | release_date | date | 10 | 0 | Y | N | 發布日期 | |
12 | hits | int | 10 | 0 | N | N | 0 | 點擊數 |
13 | praise_len | int | 10 | 0 | N | N | 0 | 點贊數 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用戶ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用戶姓名 | |
3 | user_age | varchar | 64 | 0 | Y | N | 用戶年齡 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用戶性別 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通過 | 審核狀態 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用戶ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | slides_id | int | 10 | 0 | N | Y | 輪播圖ID: | |
2 | title | varchar | 64 | 0 | Y | N | 標題: | |
3 | content | varchar | 255 | 0 | Y | N | 內容: | |
4 | url | varchar | 255 | 0 | Y | N | 鏈接: | |
5 | img | varchar | 255 | 0 | Y | N | 輪播圖: | |
6 | hits | int | 10 | 0 | N | N | 0 | 點擊量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表upload (文件上傳)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | upload_id | int | 10 | 0 | N | Y | 上傳ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 訪問路徑 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路徑 | |
5 | display | varchar | 255 | 0 | Y | N | 顯示順序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父級ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夾 | |
8 | type | varchar | 32 | 0 | Y | N | 文件類型 |
表user (用戶賬戶:用于保存用戶登錄信息)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用戶組:[0,32767]決定用戶身份和權限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登錄時間: |
5 | phone | varchar | 11 | 0 | Y | N | 手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手機認證:[0,1](0未認證|1審核中|2已認證) |
7 | username | varchar | 16 | 0 | N | N | 用戶名:[0,16]用戶登錄時所用的賬戶名稱 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵稱:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成 | |
10 | | varchar | 64 | 0 | Y | N | 郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 郵箱認證:[0,1](0未認證|1審核中|2已認證) |
12 | avatar | varchar | 255 | 0 | Y | N | 頭像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 針對獲取用戶信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
15 | vip_level | varchar | 255 | 0 | Y | N | 會員等級 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 會員折扣 |
表user_group (用戶組:用于用戶前端身份和鑒權)
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用戶組ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 顯示順序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名稱:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述該用戶組的特點或權限范圍 | |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注冊位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
第5章系統實現
5.1普通用戶功能模塊
登錄:管理員和普通用戶在登錄界面輸入賬號+密碼,點擊“登錄”按鈕,系統在用戶數據庫表中會對管理員和用戶的賬號進行匹配,賬號+密碼正確的話,就會登錄到系統中各個用戶的主管理界面,否則提示對應的信息,返回到登錄的界面,其主界面展示如下圖所示。
登錄界面如下圖所示。

圖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 菜系文化功能界面
美食信息:用戶點擊可通過搜索菜品名稱和菜品類型進行查看美食信息列表,同時可進行點贊、收藏和評論。如下圖所示。
圖5-3 美食信息界面
制作方法:用戶點擊可通過搜索菜品名稱和菜品菜系進行查看制作方法列表,同時可進行點贊、收藏和評論。界面圖如下。
圖5-4 制作方法界面
個人中心:用戶點擊頭像可查看“個人中心”,包括個人首頁、制作方法和收藏。點擊“制作方法”“添加”,輸入菜品名稱,選擇菜品菜系,上傳封面圖片,輸入所用材料、烹飪時長,選擇發布用戶,輸入用戶姓名、做法步驟、詳情備注,選擇發布時間,點擊“提交”按鈕進行添加制作方法。界面圖如下。
圖5-5 個人中心界面
圖5-6 制作方法添加界面
5.2管理員功能模塊
美食信息管理:管理員點擊可查看美食信息列表和誒是信息添加;點擊“美食信息添加”,輸入菜品名稱,選擇菜品類型,上傳封面圖片,輸入營養成分、食材組成、做法步驟和美食簡介,點擊“提交”按鈕進行添加。同時可對美食信息進行增刪改查。如下圖所示。
圖5-7 ?美食信息添加界面
系統管理:當管理員點擊”系統管理“這一菜單時,可查看輪播圖管理,如需添加新的輪播圖,點擊下方側”添加“按鈕,上傳輪播圖,填寫標題,點擊“提交”按鈕進行添加。同時管理員可對輪播圖進行增刪改查。如下圖所示。
圖5-8 ?系統管理界面
資源管理:管理員點擊可查看菜系文化和分類列表;如需添新的菜系文化,上傳封面圖,填寫標題,選擇分類,輸入標簽,填寫描述和正文,點擊“提交”按鈕進行添加。如下圖所示。
圖5-9 資源管理界面
第六章系統測試
6.1測試目的
程序設計不能保證沒有錯誤,這是一個開發過程,在錯誤或錯誤的過程中難以避免,這是不可避免的,但我們不能使這些錯誤始終存在于系統中,錯誤可能會造成無法估量的后果 如系統崩潰,安全信息,系統無法正常啟動,導致安裝用戶手機屏幕等,為了避免這些問題,我們需要測試程序,并發現這些問題,并糾正它們 ,并使系統更長時間穩定成熟,本章的作用是發現這些問題,并對其進行修改,雖然耗時費力,但長期非常重要和必要系統的開發。
軟件測試與開發過程是一樣的,都必須按照軟件工程的正規原理進行,遵守管理學理論。不過,目前國內的軟件測試已經積累了大量經驗和方法,步驟相對成熟,軟件測試的效率也越來越高。
美食分享平臺的實現,對于系統中功能模塊的實現及操作都必須通過測試進行來評判系統是否可以準確的實現。在美食分享平臺正式上傳使用之前必須做的一步就是系統測試,對于測試發現的錯誤及時修改處理,保證系統準確無誤的供給用戶使用。
6.2測試方案設計
6.2.1 測試策略
1、功能測試
從用戶的角度來看,測試時不了解新開發軟件的內部結構,因此可以將系統與黑匣子進行比較,盲目輸入后可以查看系統給出的反饋。這種測試屬于黑盒測試,在測試中如果輸入錯誤信息系統會報錯。
2、性能測試
測試軟件程序的整體狀況(稱為性能測試)通常使用自動化測試工具來檢測系統的整體功能,在負載測試和壓力測試之間進行分配,在某些情況下,將這兩種情況結合起來。雖然壓力測試可以檢測到系統可以提供的最高級別的服務,但負載測試可以測試系統如何響應增加的負載。
測試評估系統質量的方法不局限于系統編碼和過程,應該與軟件設計工作和歷史需求分析密切相關。
軟件測試應遵循以下原則:
(1)軟件測試應盡快進行,整個測試部分應在軟件開發和設計的整個過程中進行。如發現錯誤,立即處理,將大大減少軟件開發的時間,并提高軟件的質量。
(2)在軟件的各種測試中,測試過程中使用的計劃、報告等應妥善處理和存儲。其主要目的是為了便于以后系統的維護。
(3)軟件測試整個過程中的聚類現象應優先考慮。
(4)對于軟件測試,我們應該盡量不去和自己設計的系統進行參考,而是要測試對方的程序,以確保軟件測試結果的客觀性和公平性。
(5)整個測試計劃嚴格按照軟件測試的具體實施細則進行。
(6)對整個測試結果進行綜合檢查,盡量避免重復錯誤。
本美食分享平臺滿足用戶的要求和需求,本美食分享平臺的使用能夠有效的提高用戶的使用率。
6.3?測試結果
測試后得到的性能和用例,系統具有足夠的正確性、可靠性、穩定性,并且可以對輸入數據進行準確的點擊操作處理和響應測試用戶的體驗也得到了很好的反饋和響應時間。合理的范圍,可以兼容所有主流瀏覽器,設計所需的效果。
第七章 總結與展望
通過美食分享平臺的開發,本人鞏固了之前學過的知識,如今將平時所學到的知識融合在設計中,在設計過程中,做了很多的準備,首先,在數據庫系統的設計過程中,尤其是在數據庫的工作原理、工作特點,對其深刻的討論,與此同時,對于小型站點來說,最好服務器的選擇,其次,利用所學的知識點分析所做的系統,并在此基礎上設計。
目前本系統已經上線,正在試運行階段,用戶反饋良好,基本完成用戶所需,試運行過程中沒有出現阻斷性問題,有一些不足和小問題也及時予以修正,系統上線后,為了保證數據的安全性,對系統進行了備份操作,系統備份是每兩個月備份一次,數據庫備份為每周備份一次,系統部署在租賃的云平臺服務器中。
本次系統上線成功后,得到了用戶的高度認可,但是在功能上和性能上還需做進一步的研究處理,使其有更高的性能和更好的用戶體驗。
系統在以后的升級過程中,需要解決一系列用戶所提出的問題,例如打印過程中如何避免瀏覽器的兼容性問題,大量用戶訪問時,如何保持較高的響應速度,在系統今后的升級過程中將著重解決這些安全性問題。
參考文獻
[1]劉雨菲,黃濤,李云鵬.游客通過社交媒體分享美食照片的機制研究[J].旅游論壇,2024,17(01):42-56.DOI:10.15962/j.cnki.tourismforum.202401005.
[2]趙旭東.計算機軟件開發與設計中Java語言的應用研究[J].信息與電腦(理論版),2023,35(24):31-33.
[3]馬慶.計算機軟件開發中JAVA編程語言的應用[J].山西電子技術,2023(06):84-86+98.
[4]Laura M ,Cecilia G ,Nikolay D . [J]. British Food Journal,2023,125(11).
[5]尹應荊.JAVA編程語言在計算機軟件開發中的應用[J].石河子科技,2023(05):45-47.
[6]Liang C . [J]. Academic Journal of Computing & Information Science,2023,6(9).
[7]袁琳琳.淺析Java語言在計算機軟件開發中的應用[J].信息記錄材料,2023,24(09):81-83.DOI:10.16009/j.cnki.cn13-1295/tq.2023.09.006.
[8]楊玲.基于文本挖掘的美食旅游者在線分享行為特征研究[J].黑龍江科學,2023,14(15):16-19.
[9]郭朝陽. 少數民族美食類短視頻的內容生產研究[D].河北大學,2023.DOI:10.27103/d.cnki.ghebu.2023.000520.
[10]石子靜. 抖音美食探店短視頻的景觀生產與批判研究[D].西南大學,2024.DOI:10.27684/d.cnki.gxndx.2023.002273.
[11]王志亮,紀松波.基于SpringBoot的Web前端與數據庫的接口設計[J].工業控制計算機,2023,36(03):51-53.
[12]徐文倩,謝丹艷,黎柳,等.基于JSP的美食分享網站的設計與實現[J].電腦知識與技術,2023,19(09):57-59.DOI:10.14004/j.cnki.ckt.2023.0421.
[13]喻佳,吳丹新.基于SpringBoot的Web快速開發框架[J].電腦編程技巧與維護,2021(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.
[14]鮮易洲,楊蕊,吳蓉,等.時食美食分享系統的設計與分析[J].電腦知識與技術,2021,17(09):85-87.DOI:10.14004/j.cnki.ckt.2021.0845.
[15]張珊珊. 快手短視頻中的美食景觀現象研究[D].暨南大學,2021.DOI:10.27167/d.cnki.gjinu.2020.001139.
[16]楊艷妮. 分享餐飲美食平臺的政府監管問題研究[D].吉林大學,2019.
[17]陳瑞.基于Springboot高并發Java Web開發模式[J].電腦編程技巧與維護,2019(04):27-30.DOI:10.16184/j.cnki.comprg.2019.04.009.
[18]李之奇,封成玉,徐一鳳,等.基于SpringBoot的工控組態軟件Web發布系統設計與實現[J].信息技術與網絡安全,2019,38(04):88-91.DOI:10.19358/j.issn.2096-5133.2019.04.019.
致謝
時光飛逝,轉眼間我在學校的這些年生活即將結束,回顧這幾年的學習生活,收獲良多,既有幸福也有難過,學校生活的結束對于我來說也是一個新的開始。論文即將完成,在此,我心中有許多想要感謝的人。首先感謝我的導師,不僅在學習研究方面加以指導,也在生活和為人處世上給予幫助。還要感謝授課老師,你們嚴謹的學術精神和積極向上的工作態度都在激勵我的成長和進步。感謝多年來一直生活在一起的室友,謝謝你們多年來的陪伴和照顧。最后,要感謝各位論文評審老師,感謝您們在百忙之中抽空評閱本論文并給出寶貴的意見和建議。
免費領取項目源碼,請關注?點贊收藏并私信博主,謝謝~