文章目錄
- 摘 要
- ABSTRACT
- 目 錄
- 1 概述
- 1.1 研究背景及意義
- 1.2 國內外研究現狀
- 1.3 擬研究內容
- 1.4 系統開發技術
- 1.4.1 Java編程語言
- 1.4.2 SpringBoot框架
- 1.4.3 MySQL數據庫
- 1.4.4 B/S結構
- 1.4.5 MVC模式
- 2 系統需求分析
- 2.1 可行性分析
- 2.2 任務概述
- 2.3 功能性需求
- 3.2.2 數據庫邏輯結構設計
- 4 系統實現
- 4.1 前臺功能模塊
- 4.1.1 登錄
- 4.1.2 注冊
- 4.1.3 美食查詢
- 4.1.4 美食瀏覽
- 4.1.5 收藏
- 4.1.6 查看一周美食健康安排
- 4.1.7 材料信息管理
- 4.1.8 美食論壇
- 4.1.9 公告信息
- 4.1.10 用戶信息管理
- 4.2 后臺功能模塊
- 4.2.1 用戶信息管理
- 4.2.2美食信息管理
- 4.2.3 論壇信息管理
- 4.2.4 修改密碼
- 4.2.5 美食分類信息
- 4.2.6 一周美食健康安排管理管理
- 4.2.7 系統信息管理
- 4.2.8 用戶信息管理
- 5 系統測試
- 5.1 系統測試的目的
- 5.2測試方案
- 5.3 測試用例及測試結果
- 5.3.1功能測試用例及測試結果
- 5.3.2界面測試用例及測試結果
- 5.4 測試總結
- 參考文獻
- 致 謝
摘 要
當今社會已經進入了科技進步、經濟社會快速發展的新時代。計算機技術對經濟社會發展和人民生活改善的影響日益突出,人類的生活方式和思考方式也隨之產生了變化。傳統的美食信息分享與推薦主要依賴于口口相傳或是簡單的在線論壇分享,然而,這些管理方式存在著效率低下、安全性不高以及信息傳輸不精準等問題。同時,隨著美食文化的興盛,人們對于特色美食的發現和分享的需求也日益高漲,急需一種更高效、更安全、更個性化的解決方案。
根據此背景,開發一套基于Java的特色美食推薦網站,不僅可以大大提高美食信息的檢索、變更與維護的工作效率,也可以方便用戶發現和分享美食,從而減少信息管理成本,提高用戶體驗。該特色美食推薦網站采用B/S架構、前后端分離以及MVC模型進行設計,并采用Java語言及Spring Boot框架進行開發。該系統界面友好,操作簡單,不僅能基本滿足美食愛好者、餐飲業從業者以及美食文化研究者的日常需求,而且能有效降低人員成本和時間成本,為推廣和發展地方特色美食文化提供強大的技術支持。
關鍵詞:特色美食推薦網站;Java;SpringBoot框架;MySQL
ABSTRACT
Today’s society has entered a new era of scientific and technological progress and rapid economic and social development. The influence of computer technology on the economic and social development and the improvement of people’s life has become increasingly prominent, and the way of life and thinking of human beings have also changed. Traditional food information sharing and recommendation mainly rely on word of mouth or simple online forum sharing. However, these management methods have problems such as inefficiency, low security and inaccurate information transmission. At the same time, with the prosperity of food culture, people’s demand for the discovery and sharing of special food is also increasing, and a more efficient, safer and more personalized solution is urgently needed.
According to this background, the development of a special food recommendation website based on Java can not only greatly improve the efficiency of food information retrieval, change and maintenance, but also facilitate users to discover and share food, thus reducing information management costs and improving user experience. This special food recommendation website uses B/S architecture, front end separation and MVC model to design, and uses Java language and Spring Boot framework to develop. With friendly interface and simple operation, the system can not only basically meet the daily needs of food lovers, catering industry practitioners and food culture researchers, but also effectively reduce personnel costs and time costs, and provide strong technical support for the promotion and development of local characteristic food culture.
Keywords: Special food recommendation website;Java;SpringBoot framework;MySQL
目 錄
1 概述 1
1.1 研究背景及意義 1
1.2 國內外研究現狀 2
1.3 擬研究內容 2
1.4 系統開發技術 2
1.4.1 Java編程語言 3
1.4.2 SSM框架 3
1.4.3 MySQL數據庫 3
1.4.4 B/S結構 3
1.4.5 MVC模式 4
2 系統需求分析 5
2.1 可行性分析 5
2.2 任務概述 6
2.2 功能性分析 6
2.2 非功能性分析 6
3 系統設計 8
3.2 系統總功能設計 9
3.2.1 前臺功能設計 9
3.2.2 后臺功能設計 9
3.2 系統數據庫設計 11
3.2.1 概念結構設計 11
3.3.3 數據庫邏輯結構設計 13
4 系統實現 22
4.1 前臺功能實現 22
4.1.1 登錄 9
4.1.2 注冊 9
4.1.3 美食查詢 9
4.1.4 美食瀏覽 9
4.1.5 收藏 9
4.1.6 查看一周美食健康安排 9
4.1.7 材料信息管理 9
4.1.8 美食論壇 9
4.1.9 公告管理 9
4.1.10 用戶信息管理 9
4.2 后臺用戶模塊實現 29
4.2.1 用戶信息管理 9
4.2.2 美食信息管理 9
4.2.3 論壇信息管理 9
4.2.4 修改密碼 9
4.2.5 美食分類管理 9
4.2.6 一周美食健康安排管理 9
4.2.7 系統信息管理 9
4.2.8 用戶信息管理 9
5 系統測試 37
5.1 系統測試的目的 37
5.2 測試方案 37
5.3 測試用例及測試結果 29
5.3.1 功能測試用例及測試結果 9
5.3.2 界面測試用例及測試結果 9
5.4 測試總結 29
6 總結 39
參考文獻 40
致 謝 42
1 概述
1.1 研究背景及意義
信息技術已經廣泛應用到社會生產和生活的各個領域, 人們的日常工作中越來越多的依賴信息技術。特色美食推薦系統不僅為廣大美食愛好者提供了分享和學習的平臺, 而且也在一定程度上促進了美食文化的和諧發展[1]。
隨著互聯網的普及,越來越多的人傾向于通過在線平臺分享自己的烹飪經驗,這不僅方便了顧客點餐,也提高了餐飲業的工作效率和營業額。
在中國,飲食文化源遠流長,各地美食各具特色。設計和實現一個基于JavaWeb的特色美食推薦系統,對于傳承和推廣中國豐富的飲食文化具有重要意義。這樣的系統能夠滿足快節奏生活中人們對美食信息的多樣化需求,同時幫助餐飲業者把握市場動態,提供更受歡迎的菜品[2]。
本系統的設計注重用戶體驗,界面簡潔直觀,使用戶能夠輕松瀏覽和搜索美食。通過高效的信息管理,系統能夠確保美食內容的實時更新,讓用戶及時了解最新的美食趨勢。此外,系統還支持用戶評價和推薦功能,增強了內容的互動性和實用性。
綜上所述,這個特色美食推薦系統的設計與實現,不僅順應了時代發展的需求,而且為美食文化的傳播提供了新的途徑。它通過提供豐富多樣的美食信息、友好的用戶界面和快速的系統更新,極大地豐富了人們的烹飪生活,使得烹飪變得更加便捷和有趣。本系統的主要優勢包括:
(1)系統收錄了大量美食,滿足不同口味和烹飪水平的用戶需求。
(2)界面友好,易于使用,簡潔明了的界面設計,使用戶能夠快速找到并學習感興趣的美食。
(3)系統更新迅速,系統能夠及時更新美食信息,反映最新的美食趨勢,提升用戶體驗。
1.2 國內外研究現狀
隨著人們對美食文化的興趣日益增長,以及互聯網技術的快速發展,基于JavaWeb的美食推薦系統作為一種新興的服務模式,已經受到了廣泛的關注。這類系統指的是,用戶通過互聯網平臺獲取個性化的美食推薦,并能夠實現在線交流、評價等功能的服務平臺。美食推薦系統通過在線平臺和現代網頁技術實現對美食信息的集中展示和個性化推薦。
在國外,美食推薦系統的研究和應用已經相當成熟。例如,平臺如Yelp和Zomato等,不僅提供餐廳和美食的評分和評論,還通過算法推薦系統為用戶提供個性化的美食體驗。這些平臺利用用戶數據和行為分析,推薦符合用戶口味和偏好的美食,極大地豐富了用戶的餐飲選擇。
在中國,基于JavaWeb的美食推薦系統雖然起步較晚,但隨著互聯網技術的普及和飲食文化的多樣化,這類平臺也迅速發展起來。平臺如大眾點評、美團等,已經成為美食愛好者獲取推薦和分享體驗的重要場所。這些平臺通過提供豐富的餐廳信息、用戶評價和美食圖片,以及基于用戶位置和歷史行為的智能推薦,為用戶提供了便捷的美食探索體驗[4]。
總的來說,基于JavaWeb的美食推薦系統的設計與實現,不僅滿足了人們對美食探索的需求,也為餐飲行業的發展提供了新的動力。這些系統通過集中展示和個性化推薦美食信息,促進了美食文化的交流和創新,同時也為美食愛好者提供了一個便捷的探索和分享平臺。隨著技術的不斷進步和用戶需求的不斷變化,這類系統將繼續發展,為用戶提供更加豐富和個性化的美食推薦服務。
1.3 擬研究內容
該系統應能基本完成特色美食推薦的基本要求。管理員可以對整個系統進行管理,用戶可以實現各種美食的瀏覽,并了解各種美食的營養價值,同時可以與其他用戶對美食進行討論等基本功能。
使用Java語言和SpringBoot框架進行開發設計,具體研究內容如下:
用戶登錄、注冊等基礎功能。用戶可以對美食進行瀏覽、查詢以及分享。同時,用戶也可以收藏對應的美食信息。用戶也可以參加論壇,與其他用戶一起討論美食。
管理員登錄系統,便可對個人信息進行修改,對用戶管理,比如對用戶進行修改、添加、刪除等功能,并且可以幫助用戶修改密碼。管理員可以對美食信息進行管理,添加、刪除與修改美食信息。同時,管理員也可以對論壇信息進行管理,添加刪除修改論壇,并且審查駁回一些不合理的論壇信息。
1.4 系統開發技術
1.4.1 Java編程語言
Java語言成為現今主流編程語言之一,是基于其獨特特點和眾多優勢。首先,Java語言編寫的程序,在不同操作系統、不同瀏覽器下使用相同的字符集和語法,可以大大提高代碼可讀性和可維護性。其次,Java有完善的面向對象編程規范和語法。此外,Java還提供了豐富的類庫。另外,Java語言對于開發工具要求不高,有專業的編程工具IntelliJ IDEA會更順利編程,但是,沒有專業的編程軟件,用記事本也能進行編輯。
1.4.2 SpringBoot框架
Spring Boot是由Pivotal團隊提供的全新框架,它繼承了Spring框架原有的優秀特性,用來簡化新Spring應用的初始搭建和開發過程,并且使項目的配置過程、部署過程和監控過程變得簡潔高效[3]。Spring Boot是一個開源的Java基礎框架,它的主要目標是簡化Spring應用的初始搭建以及開發過程。Spring Boot通過提供一系列預設的配置("約定大于配置"的原則),使得開發者能夠快速啟動和開發新的Spring應用程序。它內嵌了Tomcat、Jetty或Undertow,無需部署WAR文件。通過使用Spring Boot,開發者可以更加專注于業務邏輯的實現,而不必花費太多時間在配置和環境搭建上。這使得Spring Boot成為了構建基于Spring的微服務、REST應用和更多類型應用的首選框架。使用springboot極大提升了開發效率,降低了開發過程的可能出現問題的概率[4] 。SpringBoot框架是Spring框架的擴展,Spring雖然實現了業務邏輯的極大簡化,卻需要繁瑣的配置,SpringBoot在Spring的基礎上消除了設置程序所需的XML配置,實現了自動配置,為更快、更高效地開發生態系統鋪平了道路[5]。
1.4.3 MySQL數據庫
數據的存儲使用MySQL數據庫[6-7],MySQL數據庫可以實現用戶多線程服務器的高效處理。其本身具有開放的源代碼數據、反應速度快和易于使用的作用,結合Java語言進行開發[8-9],,程序開發的平臺功能完整,編程者使用起來簡單易懂,技術成熟可靠[10]。
經第三方權威機構評測,在性能上,只有Oracle數據庫能與MySQL相比;在可靠性與安全性上,與MySQL服務器建立連接需要通過身份認證,確保外部訪問者擁有操作數據庫的權限,并支持通過日志文件對數據進行恢復[6]。
綜上所述MySQL數據庫不僅安全性高、占用內存小,而且運行速度十分迅速,且使用不收費,是作為中小型網站系統存儲數據的最佳選擇。
1.4.4 B/S結構
B/S結構目前廣泛應用于絕大部分系統搭建中,這種結構摒棄C/S結構客戶端服務端不分離的缺點,具有更多的優勢:
(1)跨平臺性:B/S的標準由標準化組織確立,適用于絕大多數的系統搭建,通用于應用之間。
(2)低維護成本:系統升級只需將服務端應用升級便可完成系統升級,此方式降低系統升級的難度和成本。
1.4.5 MVC模式
本平臺采用的MVC模式的三層架構[11-17]。MVC是一種常用的軟件架構模式。MVC 模式將傳統的輸入、處理和輸出分離。負責網頁設計的人員只需要專注構建前端 JSP 頁面,負責業務邏輯設 計的后臺開發人員進行模型層設計,負責數據庫設計的數據庫工程師進行數據層設計。MVC模式的優勢在于它的分離關注點原則,使得代碼更易于管理、擴展還有利于組件重用。通過清晰的分工和交互,MVC模式提供了更高的靈活性和可維護性,使得團隊成員可以獨立開發和測試不同的組件。
需要注意的是,MVC模式并不是一種具體的技術或框架,而是一種通用的設計模式,可以用于各種編程語言和平臺。許多Web框架和應用程序開發工具都采用了MVC模式來支持開發過程。
2 系統需求分析
在開發基于Java的特色美食推薦系統之前,進行需求分析是至關重要的。這一階段的目標是深入理解用戶的需求,確保新系統能夠滿足用戶的期望并解決實際問題。在當前互聯網高度發達的社會背景下,用戶對于在線美食推薦服務的需求日益增長,這要求系統能夠提供豐富的美食信息、便捷的用戶交互以及個性化的推薦體驗[5]。
在線美食推薦系統面臨的挑戰包括系統需要支持用戶之間的互動,如評論、評分和分享,以增強社區氛圍、系統應能夠高效地管理大量美食數據,包括上傳、編輯、分類和搜索等。
為了解決這些挑戰,系統需要一個強大的后端支持。數據庫管理系統(DBMS)是實現這一目標的關鍵技術。在數據庫系統設計中,MySQL因其高性能、易用性和廣泛的社區支持,成為了實現數據集中管理的理想選擇。MySQL能夠支持復雜的數據結構,可以有效地組織用戶數據和美食信息,實現有序存儲。隨著用戶基數和數據量的增長,MySQL可以輕松擴展以應對更高的負載。MySQL提供了多種安全特性,如用戶權限管理和數據加密,確保數據的安全性。選擇MySQL作為美食推薦系統的數據庫管理系統,將有助于確保系統的穩定性和高效運行。通過精心設計的數據模型和優化的數據庫操作,系統能夠為用戶提供快速、準確的美食推薦,同時保持良好的用戶體驗。此外,MySQL的社區支持和豐富的資源也為系統的開發和維護提供了便利。這不僅有助于保證系統的穩定性,還能提高數據管理的效率和效果。
2.1 可行性分析
以下是從經濟、技術和管理方面對本系統做出的可行性分析:
(1) 經濟可行性:本特色美食推薦系統采用Java語言編寫,結合B/S架構和Mysql數據庫進行數據管理,這種配置對硬件要求較低,因此可以在多種低配置硬件上運行,有效降低硬件成本和維護成本。系統開發中所用的軟件主要為免費或開源軟件,減少了成本投入同時避免了潛在的法律風險。此外,基于JavaWeb的開發周期相對較短,人力和財力成本控制在合理范圍內,綜合考慮,該系統在經濟上具有較高的可行性。
(2) 技術可行性:系統架構、采用技術均具有較好的開放性、先進性、前瞻性和擴展性。基于Java的特色美食推薦系統基于B/S架構和MVC模型設計,通過分層分包的方法,實現功能模塊和業務邏輯的分離。這種設計使代碼結構清晰,易于維護和擴展。此外,該架構有助于減少代碼間的耦合,降低后期維護成本,并且容易進行功能的升級和重構,從技術角度看,該系統的開發和實施是可行的。
(3) 操作可行性:用戶可通過瀏覽器直接訪問特色美食推薦系統,無需下載安裝任何客戶端軟件,使得訪問變得更為便捷。系統界面設計簡潔直觀,操作流程簡單明了,用戶可以輕松地瀏覽、搜索和學習各種美食。這種用戶友好的設計降低了用戶的學習成本,提高了系統的可用性。因此,從操作角度來看,該系統具有很高的可行性。
2.2 任務概述
該系統應能基本完成特色美食推薦的基本要求。管理員可以對整個系統進行管理,用戶可以實現瀏覽、討論等基本功能。
該美食在線分享平臺具有以下基本功能:
1、前臺功能
(1)用戶注冊
(2)用戶登錄
(3)公告信息的查看
(4)材料信息查看
(5)一周健康美食安排查看
(6)美食的瀏覽、學習
(7)收藏
(8)論壇討論
(9)個人信息的管理
2、后臺功能
(1)管理員登錄
(2)用戶管理(添加、刪除、修改用戶信息、修改密碼)
(3)美食信息管理(添加、刪除、修改美食信息)
(4)美食分類管理(添加、刪除、修改美食分類信息)
(5)材料信息管理(添加、刪除、修改、刪除)
(6)一周健康美食安排管理(添加、刪除、修改、刪除)
(7)論壇信息管理(添加、刪除、修改筆記、審查駁回)
(8)系統公告信息管理(添加、刪除、修改、刪除)
2.3 功能性需求
根據需求分析創建系統需要的相應實體類及其屬性,各實體類創建相應數據庫表存儲數據[6]。對功能需求的定義,一個軟件系統或組件的功能,也是網頁所需提供的功能和服務。本系統的功能需求按模塊進行分析,主要由前臺用戶模塊,后臺管理員兩大模塊。
本美食推薦系統主要包括二大功能模塊,即用戶功能模塊和管理員功能模塊。
管理員模塊:系統中的核心用戶是管理員,管理員登錄后,通過管理員功能來管理后臺系統。主要功能有:首頁、個人中心、用戶管理、美食分類管理、美食信息管理、一周美食健康安排管理、材料信息管理、美食論壇、系統管理等功能。管理員用例圖如圖2.1所示。
圖 2.1 管理員用例圖
用戶模塊:首頁、個人中心、我的收藏管理、美食論壇等功能,用戶如圖2.2所示。
圖2.2 用戶用例圖
2.4 非功能性需求
(1)健壯性:具有較高的容錯能力和恢復能力。
(2)正確性:按照需求正確執行任務,完成各個模塊的相應要求。
(4)易用性:系統研制的過程中所有的語言簡練、通俗易懂并且前后一致,語句無歧義。圖標提示清晰,位置恰當,易于理解。操作簡單,不用進行專門學習才可使用。
(5)安全性:為防止軟件受到意外或蓄意存取、使用、修改、毀壞、或泄密,該系統上所有的數據應集中存放于總部的數據庫服務器,當用戶超過一小時未進行操作時,系統將自動退出。
(6)可擴展性:能方便的進行二次開發,滿足對功能的需求。
3 系統設計
3.1 系統總體功能設計
考慮到本系統主要是的使用者是年輕消費群體,考慮到科技發展,美食在線分享成為潮流等因素,本網站設計了如下功能。
圖3.1 系統模塊總功能設計圖
3.1.1 前臺功能設計
前臺主要包括以下功能:
用戶登錄:用戶登錄本系統,用戶名和密碼匹配成功,登錄賬號成功,沒有賬號則需要注冊新賬號。
系統界面:首頁展示本系統中的美食信息,用戶可以根據需求尋找美食,可以找到滿意的美食,覺得滿意或喜歡的美食可以進行收藏并且可以記筆記,評價美食的好壞,系統首頁還可以進入后臺管理自己的信息以及退出系統。
一周美食健康安排:用戶可以根據各種美食,來安排自己一周的飲食規劃,從而均衡營養。
材料信息:用戶可以在首頁查看到各種制作美食的材料信息,并了解這些材料的功效和作用。
美食論壇:用戶可以參與美食論壇,對美食進行討論。
3.1.2 后臺功能設計
后臺主要包括以下功能:
管理員與用戶的后臺管理系統是不同的,管理員包括用戶后臺系統的所有權限,還包括用戶信息管理模塊。
管理員后臺功能:系統首頁;信息展示包括用戶信息管理、美食信息管理、論壇信息管理;修改個人信息;退出系統。
用戶后臺功能:系統首頁;信息展示包括論壇信息管理;修改個人信息;退出系統,我的收藏管理。
3.2 系統數據庫設計
3.2.1 概念結構設計
持久層通過MYSQL數據庫將系統的數據進行存儲管理。 MySQL數據庫作為目前廣泛使用的開源數據庫之一,自然具有比較優秀的運行效率。并且MySQL提供了自適應查詢,顧名思義,通過利用查詢部分執行中獲得的信息來調整數據結構和系統,幫助企業優化查詢的執行計劃,以提高性能。[19-22]。
現實世界中客觀存在并且可以相互區分的事物稱為實體,此系統中的實體主要包括管理員、美食信息、收藏信息、論壇、材料信息、用戶信息、分類信息等。
本家庭食譜管理系統采用的是MYSQL數據庫,數據存儲快,因為特色美食推薦系統 ,主要的就是對信息的管理,信息內容比較多,這就需要好好的設計一個好的數據庫,分類要清楚,不能添加信息的時候,造成信息太過混亂,設計好的數據庫首先就需要先把各個實體之間的關系表達明確,系統的E-R圖如下圖所示:
(1)用戶實體E-R圖表示如下:
圖 3.2 用戶ER圖片
(2)美食實體有3個屬性,用E-R圖表示如下:
圖 3.3 美食信息ER圖片
(3)一周食譜健康安排管理實體E-R圖表示如下:
圖 3.4 一周食譜健康安排管理實體及屬性
(4)管理員實體E-R圖表示如下:
圖 3.5 管理員實體及屬性
(5)公告實體E-R圖表示如下:
圖 3.6 公告實體及屬性
(6)材料實體E-R圖表示如下:
圖 3.7 材料實體及屬性
3.2.2 數據庫邏輯結構設計
數據庫的邏輯結構設計主要分為兩步:第一步將概念設計模型得出的E-R圖進行轉換成關系模型,然后對轉化成的關系模型進行優化。
在關系數據庫中,數據關系由數據表組成,但是表的結構表現在表的字段上。
- 材料信息表
材料信息表里面存儲了管理員的相關信息,如表3.1所示:
表 3.1 材料信息表
字段名稱 類型 長度 字段說明 主鍵 默認值
id bigint 主鍵
主鍵
addtime timestamp 創建時間 CURRENT_TIMESTAMP
cailiaomingcheng varchar 200 材料名稱
tupian varchar 200 圖片 shangpinxinxi
shiwugongxiao bigint 食物功效
shiwudapei bigint 食物搭配
shiwujinji varchar 200 食物禁忌
- 美食分類表
美食分類表里面存儲了美食分類的相關信息,如表3.2所示:
表 3.2 美食分類表
字段名稱 類型 長度 字段說明 主鍵 默認值
id bigint 主鍵
主鍵
addtime timestamp 創建時間 CURRENT_TIMESTAMP
shipufenlei varchar 200 食譜分類
3. 美食信息表
美食信息表里面存儲了美食的相關信息,如表3.3所示:
表 3.3 美食信息表
字段名稱 類型 長度 字段說明 主鍵 默認值
id bigint 主鍵
主鍵
addtime timestamp 創建時間 CURRENT_TIMESTAMP
shipumingcheng bigint 食譜名稱
tupian bigint 圖片
shipufenlei longtext 4294967295 食譜分類
pengrenfangshi longtext 4294967295 烹飪方式
zuofa longtext 4294967295 做法
gongxiao longtext 4294967295 功效
shizhang longtext 4294967295 時長
yuancailiao longtext 4294967295 原材料
dapeijinji longtext 4294967295 搭配禁忌
4. 用戶表
用戶表里面存儲了用戶的相關信息,如表3.4所示:
表 3.4 用戶表
字段名稱 類型 長度 字段說明 主鍵 默認值
id bigint 主鍵
主鍵
addtime timestamp 創建時間 CURRENT_TIMESTAMP
yonghuhao bigint 用戶賬號
mima bigint 密碼
yonghuxingming longtext 4294967295 用戶姓名
touxiang longtext 4294967295 頭像
xingbie longtext 4294967295 性別
shoujihaoma longtext 4294967295 手機號碼
5. 一周美食規劃管理表
一周美食規劃管理表里面存儲了一周美食規劃管理的相關信息,如表3.3所示:
表 3.3 美食信息表
字段名稱 類型 長度 字段說明 主鍵 默認值
id bigint 主鍵
主鍵
addtime timestamp 創建時間 CURRENT_TIMESTAMP
biaotimingcheng bigint 標題名稱
tupian bigint 圖片
xinqiyi longtext 4294967295 星期一
xinqier longtext 4294967295 星期二
xinqisan longtext 4294967295 星期三
xinqisi longtext 4294967295 星期四
xinqiwu longtext 4294967295 星期五
xinqiliu longtext 4294967295 星期六
xinqiri longtext 4294967295 星期日
4 系統實現
4.1 前臺功能模塊
4.1.1 登錄
登錄是項目的第一個也是最重要的業務。我們使用MVC三層架構能非常容易的區分各個層級。登錄功能是業務層第一個要實現的功能。業務層是業務的邏輯處理,提供接口和接口實現類,提供controller層調用的方法[17]。用戶登錄時通過vue頁面的Ajax請求,發送post請求到/login,在Usercontroller里面首先設置請求地址為/login,然后把前臺輸入的數據獲取。
如果是管理員進行登錄,則調用AdminController的login方法,首先要判斷管理員輸入的名字和密碼是否為空,如果為空則返回錯誤。不為空的情況下,獲取前臺輸入的用戶名和數據。然后和數據庫進行比對,比對成功則可進入該平臺。如果是用戶進行登錄,則調用UserService的login方法,首先要判斷用戶輸入的名字和密碼是否為空,如果為空則返回錯誤。不為空的情況下,獲取前臺輸入的用戶名和數據。然后和數據庫進行比對,比對成功則可進入該平臺。
圖4.1.1 登錄界面
關鍵代碼:
@IgnoreAuth
@PostMapping(value = “/login”)
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper().eq(“username”, username));
if(user==null || !user.getPassword().equals(password)) {
return R.error(“賬號或密碼不正確”);
}
String token = tokenService.generateToken(user.getId(),username, “users”, user.getRole());
return R.ok().put(“token”, token);
4.1.2 注冊
用戶首次登陸時需要進行注冊,在前臺輸入注冊相關信息,通過axios發送post請求到/register,調用后端save方法進行后端注冊操作。首先要判斷輸入的用戶名是否重名,如果重復,則返回用戶名已存在。然后判斷密碼 是否為空,如果不為空,則調用insert語句將用戶信息存入數據庫中,并且返回登陸界面。
圖4.1.2 注冊界面
關鍵代碼:
@IgnoreAuth
@RequestMapping(“/register”)
public R register(@RequestBody YonghuEntity yonghu){
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity user = yonghuService.selectOne(new EntityWrapper().eq(“yonghuhao”, yonghu.getYonghuhao()));
if(user!=null) {
return R.error(“注冊用戶已存在”);
}
Long uId = new Date().getTime();
yonghu.setId(uId);
yonghuService.insert(yonghu);
return R.ok();
}
4.1.3 美食查詢
美食查詢提供按照美食的名稱的方式進行查詢,通過不同美食的name屬性,確定其所屬類別,當點擊此類別時,首先確定美食小類的name屬性,其次調用shipuxinxiService.queryPage方法,獲取所屬的美食信息,在美食分類中,通過type屬性篩選出符合條件的美食,并顯示在界面上。
圖4.1.3 美食查詢界面
關鍵代碼:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,ShipuxinxiEntity shipuxinxi, HttpServletRequest request){
EntityWrapper<ShipuxinxiEntity> ew = new EntityWrapper<ShipuxinxiEntity>();PageUtils page = shipuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shipuxinxi), params), params));return R.ok().put("data", page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper wrapper) {
Page page =new Query(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
4.1.4 美食瀏覽
用戶點擊頭部標題欄中的首頁,發送post請求調用后端方法,通過id和name屬性,獲取到所有美食信息,并在前端展示出來。之后,用戶可以點擊具體的某一個美食,并且瀏覽美食的詳情信息。
圖4.1.4 美食瀏覽界面
關鍵代碼:
@RequestMapping(“/query”)
public R query(ShipuxinxiEntity shipuxinxi){
EntityWrapper< ShipuxinxiEntity> ew = new EntityWrapper< ShipuxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( shipuxinxi, “shipuxinxi”));
ShipuxinxiView shipuxinxiView = shipuxinxiService.selectView(ew);
return R.ok(“查詢美食信息成功”).put(“data”, shipuxinxiView);
}
@Override
public ShipuxinxiView selectView(Wrapper wrapper) {
return baseMapper.selectView(wrapper);
}
4.1.5 收藏
用戶點擊界面中的美食圖片,圖片上方有收藏按鈕,點擊收藏,觸發collect(),收藏數目加1,然后到收藏頁面collectInfo.html,展示所收藏菜品的信息。
圖4.1.5 收藏成功頁面
關鍵代碼:
@RestController
@RequestMapping(value = “/collectInfo”)
public class CollectInfoController {
@Resource
private CollectInfoService collectInfoService;
@PostMapping
public Result add(@RequestBody CollectInfoVo collectInfo, HttpServletRequest request) {
collectInfoService.add(collectInfo, request);
return Result.success(collectInfo);
}
4.1.6 查看一周美食健康安排
用戶點擊頭部標題欄中的一周美食健康安排,發送post請求調用后端方法,通過yizhoushipujiankanganpaiService.queryPage以獲取到所有的美食健康安排。
圖4.1.6 查看一周美食健康安排
關鍵代碼:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,YizhoushipujiankanganpaiEntity yizhoushipujiankanganpai, HttpServletRequest request){
EntityWrapper<YizhoushipujiankanganpaiEntity> ew = new EntityWrapper<YizhoushipujiankanganpaiEntity>();
PageUtils page = yizhoushipujiankanganpaiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yizhoushipujiankanganpai), params), params));
return R.ok().put(“data”, page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper wrapper) {
Page page =new Query(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
之后用戶可以點擊一個具體的美食安排,然后查看美食安排的詳情信息,如下圖所示:
圖4.1.7 查看一周美食健康安排
關鍵代碼:
@RequestMapping(“/query”)
public R query(YizhoushipujiankanganpaiEntity yizhoushipujiankanganpai){
EntityWrapper< YizhoushipujiankanganpaiEntity> ew = new EntityWrapper< YizhoushipujiankanganpaiEntity>();
ew.allEq(MPUtil.allEQMapPre( yizhoushipujiankanganpai, “yizhoushipujiankanganpai”));
YizhoushipujiankanganpaiView yizhoushipujiankanganpaiView = yizhoushipujiankanganpaiService.selectView(ew);
return R.ok(“查詢一周美食健康安排成功”).put(“data”, yizhoushipujiankanganpaiView);
}
@Override
YizhoushipujiankanganpaiView selectView(Wrapper wrapper) {
return baseMapper.selectView(wrapper);
}
4.1.7 材料信息管理
點擊導航欄頂部的材料信息,就可以查看制作美食所需要的各種材料,以及材料的作用,并且可以根據材料的名稱對材料進行搜索。如下圖所示:
圖4.1.8 材料信息
關鍵代碼:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,CailiaoxinxiEntity cailiaoxinxi, HttpServletRequest request){
EntityWrapper<CailiaoxinxiEntity> ew = new EntityWrapper<CailiaoxinxiEntity>();
PageUtils page = cailiaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cailiaoxinxi), params), params));
return R.ok().put(“data”, page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper wrapper) {
Page page =new Query(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
點擊某個材料之后,就可以查看材料的詳情信息,如下圖所示:
圖4.1.9 材料詳情信息
4.1.8 美食論壇
用戶點擊首頁上面的美食論壇之后,可以進入論壇,查看大家對美食的各種討論信息,如下圖所示:
圖4.1.10 美食論壇信息
關鍵代碼:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,ForumEntity forum, HttpServletRequest request){
if(!request.getSession().getAttribute(“role”).toString().equals(“管理員”)) {
forum.setUserid((Long)request.getSession().getAttribute(“userId”));
}
EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));return R.ok().put("data", page);
}
用戶可以點擊任何一條論壇討論信息,并且查看具體的討論內容和帖子內容,并且可以進行評論,如下圖所示:
圖4.1.11 美食論壇詳情信息
圖4.1.12 美食論壇評論
4.1.9 公告信息
用戶可以點擊首頁上面的公告信息,查看系統的公告。如下圖所示:
圖4.1.13 公告信息查看
關鍵代碼:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper ew = new EntityWrapper();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put(“data”, page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper wrapper) {
Page page =new Query(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
點擊某一條公告信息之后,就可以查看公告的詳情信息,如下圖所示:
圖4.1.14 公告信息詳情查看
4.1.10 用戶信息管理
點擊首頁上方的個人中心就可以進入個人中心,查看個人的信息,如下圖所示:
圖4.1.15 個人信息查看
關鍵代碼:
@RequestMapping(“/query”)
public R query(YonghuEntity yonghu){
EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
ew.allEq(MPUtil.allEQMapPre( yonghu, “yonghu”));
YonghuView yonghuView = yonghuService.selectView(ew);
return R.ok(“查詢用戶成功”).put(“data”, yonghuView);
}
4.2 后臺功能模塊
4.2.1 用戶信息管理
(1)添加用戶信息
添加用戶信息時通過vue頁面的Ajax請求,發送post請求到/add,彈出添加用戶信息的頁面,輸入要添加用戶的信息,點擊保存數據存入數據庫中。然后然后在UserInfoController里面調用接口userInfoService的add方法,在service里面調用UserInfoDao的insertSelective方法,成功添加用戶。
圖4.2.1 添加用戶
關鍵代碼:
@RestController
@RequestMapping(value = “/userInfo”)
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@PostMapping
public Result add(@RequestBody UserInfoVo userInfo) {
userInfoService.add(userInfo);
return Result.success(userInfo);
}
修改用戶信息
修改用戶信息時通過vue頁面的Ajax請求,發送post請求到/update,調用UserInfoController里面的update方法,首先看信息是否匹配,如果不匹配,則返回不能此用戶,如果匹配成功,調用userInfoService的update方法,成功修改用戶信息。
圖4.2.2 修改用戶信息
關鍵代碼:
@RestController
@RequestMapping(value = “/userInfo”)
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@PutMapping
public Result update(@RequestBody UserInfoVo userInfo) {
userInfoService.update(userInfo);
return Result.success();
}
刪除用戶信息
刪除用戶信息時通過vue頁面的Ajax請求,發送post請求到/delete,調用UserInfoController里面的delete方法,首先調用userInfoService的findById方法,如果不匹配,則返回不能刪除用戶,如果匹配成功,彈出是否要刪除用戶,確認刪除,則成功刪除用戶信息。
圖4.2.3 刪除用戶信息
關鍵代碼:
@RestController
@RequestMapping(value = “/userInfo”)
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@DeleteMapping(“/{id}”)
public Result delete(@PathVariable Long id) {
userInfoService.delete(id);
return Result.success();
}
4.2.2美食信息管理
(1)添加美食
添加餐譜信息時通過vue頁面的Ajax請求,發送post請求到/add,首先輸入菜的名稱,標簽等一些信息。然后在ShipuxinxiController里面調用接口ShipuxinxiService
的add方法,在service里面調用ShipuxinxiDao的insert方法,成功添加美食。
圖4.2.4 添加美食界面
關鍵代碼:
@RequestMapping(“/save”)
public R save(@RequestBody ShipuxinxiEntity shipuxinxi, HttpServletRequest request){
shipuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(shipuxinxi);
shipuxinxiService.insert(shipuxinxi);
return R.ok();
}
(2)刪除美食
刪除美食信息時通過vue頁面的Ajax請求,發送post請求到/delete,調用ShipuxinxiController里面的delete方法,首先調用ShipuxinxiService的findbyid方法,如果不匹配,則返回不能刪除,如果匹配成功,則成功刪除。
圖4.2.5刪除美食界面
關鍵代碼:
@RequestMapping(“/delete”)
public R delete(@RequestBody Long[] ids){
shipuxinxiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
(3)更新美食
更新美食信息時通過vue頁面的Ajax請求,發送post請求到/update,調用ShipuxinxiController里面的update方法,首先看信息是否匹配,如果不匹配,則返回不能修改他人的記錄,如果匹配成功,調用ShipuxinxiService的update方法。
圖4.2.6 更新美食界面
關鍵代碼:
@RequestMapping(“/update”)
public R update(@RequestBody ShipuxinxiEntity shipuxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(shipuxinxi);
shipuxinxiService.updateById(shipuxinxi);//全部更新
return R.ok();
}
4.2.3 論壇信息管理
(1)查看論壇信息
添加筆記信息時通過vue頁面的Ajax請求,發送get請求到/query,查看所有的論壇帖子信息。然后在Forumscontroller里面調用接口ForumsService的query方法,在service里面調用Forumsdao的select方法。
圖4.2.7 論壇帖子界面
關鍵代碼:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,ForumEntity forum, HttpServletRequest request){
if(!request.getSession().getAttribute(“role”).toString().equals(“管理員”)) {
forum.setUserid((Long)request.getSession().getAttribute(“userId”));
}
EntityWrapper<ForumEntity> ew = new EntityWrapper<ForumEntity>();PageUtils page = forumService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, forum), params), params));return R.ok().put("data", page);
}
(2)刪除帖子
刪除帖子信息時通過vue頁面的Ajax請求,發送post請求到/delete,調用ForumsController里面的delete方法,首先調用ForumsService的findbyid方法,如果不匹配,則返回不能刪除他人的記錄,如果匹配成功,則成功刪除。
圖4.2.8 刪除帖子界面
關鍵代碼:
@DeleteMapping(“/delete”)
public Result delete(@PathVariable Long id) {
ForumsService.delete(id);
return Result.success();
}
(3)修改帖子
修改帖子信息時通過vue頁面的Ajax請求,發送post請求到/update,調用ForumsController里面的update方法,首先看信息是否匹配,如果不匹配,則返回不能修改他人的記錄,如果匹配成功,調用ForumsService的update方法,成功修改信息。
圖4.2.9 更新帖子信息界面
關鍵代碼:
@PutMapping(“/update”)
public Result update(@RequestBody ForumsVo info) {
ForumsService.update(info);
return Result.success();
}
(4)查看帖子詳情
查看帖子詳情信息時通過vue頁面的Ajax請求,發送post請求到/page,調用ForumsController里面的page方法,首先看信息是否匹配,如果不匹配,則駁回,如果匹配成功,調用ForumsService的page方法,則通過。
圖4.2.10 查看帖子詳情
關鍵代碼:
@GetMapping(“/page/{name}”)
public Result<PageInfo> page(@PathVariable String name,
@RequestParam(defaultValue = “1”) Integer pageNum,
@RequestParam(defaultValue = “5”) Integer pageSize,
HttpServletRequest request) {
return Result.success(ForumsService.findPage(name, pageNum, pageSize, request));
}
}
4.2.4 修改密碼
修改密碼時通過vue頁面的Ajax請求,發送post請求到/resetPassword,調用AdminController里面的resetPassword方法,首先看信息是否匹配,如果不匹配,則返回不能修改密碼,如果匹配成功,調用Admin的方法,成功修改密碼。
圖4.2.11 修改密碼界面
關鍵代碼:
@PostMapping(“/resetPassword”)
public Result resetPassword(@RequestBody Admin Admin) {
Integer level = Admin.getLevel();
if (1 == level) {
AdminInfo info = adminInfoService.findByUserName(Admin.getName());
if (info == null) {
return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
}
info.setPassword(SecureUtil.md5(“123456”));
adminInfoService.update(info);
}
if (2 == level) {
UserInfo info = userInfoService.findByUserName(Admin.getName());
if (info == null) {
return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
}
info.setPassword(SecureUtil.md5(“123456”));
userInfoService.update(info);
}
return Result.success();
}
4.2.5 美食分類信息
(1)查看美食分類信息
查看美食分類信息時通過vue頁面的Ajax請求,發送post請求到/page,調用MeishifenleiController里面的page方法。
圖4.2.12 美食分類信息界面
關鍵代碼:
@RequestMapping(“/page”)
public R page(@RequestParam Map<String, Object> params,ShipufenleiEntity shipufenlei, HttpServletRequest request){
EntityWrapper<ShipufenleiEntity> ew = new EntityWrapper<ShipufenleiEntity>();PageUtils page = shipufenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shipufenlei), params), params));return R.ok().put("data", page);
}
(2)添加美食分類信息
查看帖子詳情信息時通過vue頁面的Ajax請求,發送post請求到/add,調用MeishifenleiController里面的add方法來創建美食分類信息。
圖4.2.13 添加美食分類信息
(3)修改美食分類信息
修改美食分類信息時通過vue頁面的Ajax請求,發送post請求到/update,調用MeishifenleiController里面的update方法,首先看信息是否匹配,如果不匹配,則駁回,如果匹配成功,調用MeishifenleiService的update方法,則通過。
圖4.2.14 修改美食分類信息
關鍵代碼:
@RequestMapping(“/update”)
public R update(@RequestBody ShipufenleiEntity shipufenlei, HttpServletRequest request){
//ValidatorUtils.validateEntity(shipufenlei);
shipufenleiService.updateById(shipufenlei);//全部更新
return R.ok();
}
4.2.6 一周美食健康安排管理管理
(1)添加一周美食健康安排管理
添加筆記信息時通過vue頁面的Ajax請求,發送get請求到/add,查看所有的論壇帖子信息。然后在Meishianpaicontroller里面調用接口MeishianpaiService的add方法,在service里面調用Meishianpaidao的add方法。
圖4.2.15 添加美食安排
關鍵代碼:
@RequestMapping(“/save”)
public R save(@RequestBody YizhoushipujiankanganpaiEntity yizhoushipujiankanganpai, HttpServletRequest request){
yizhoushipujiankanganpai.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yizhoushipujiankanganpai);
yizhoushipujiankanganpaiService.insert(yizhoushipujiankanganpai);return R.ok();
}
(2)刪除一周美食健康安排管理
刪除一周美食健康安排管理
時通過vue頁面的Ajax請求,發送post請求到/delete,調用MeishianpaiController里面的delete方法,首先調用MeishianpaiService的findbyid方法,如果不匹配,則返回不能刪除他人的記錄,如果匹配成功,則成功刪除。
圖4.2.16 刪除一周美食健康安排管理
關鍵代碼:
@DeleteMapping(“/delete”)
public Result delete(@PathVariable Long id) {
MeishianpaiService.delete(id);
return Result.success();
}
(3)修改一周美食健康安排管理
修改帖子信息時通過vue頁面的Ajax請求,發送post請求到/update,調用MeishianpaiController里面的update方法,首先看信息是否匹配,如果不匹配,則返回不能修改他人的記錄,如果匹配成功,調用MeishianpaiService的update方法,成功修改信息。
圖4.2.17 更新一周美食健康安排管理信息界面
關鍵代碼:
@PutMapping(“/update”)
public Result update(@RequestBody MeishianpaiVo info) {
MeishianpaiService.update(info);
return Result.success();
}
(4)查看一周美食健康安排管理
查看一周美食健康安排管理詳情信息時通過vue頁面的Ajax請求,發送post請求到/page,調用MeishianpaiController里面的page方法,首先看信息是否匹配,如果不匹配,則駁回,如果匹配成功,調用MeishianpaiService的page方法,則通過。
圖4.2.18 查看一周美食健康安排管理
關鍵代碼:
@IgnoreAuth
@RequestMapping(“/detail/{id}”)
public R detail(@PathVariable(“id”) Long id){
YizhoushipujiankanganpaiEntity yizhoushipujiankanganpai = yizhoushipujiankanganpaiService.selectById(id);
return R.ok().put(“data”, yizhoushipujiankanganpai);
}
4.2.7 系統信息管理
(1)輪播圖管理
管理員可以管理系統的輪播圖信息,對輪播圖進行修改和刪除。
圖4.2.19 輪播圖管理
(2)公告信息管理
管理員可以管理系統的公告信息,并且對公告進行增加、刪除、創建和查看。
圖4.2.20 公告信息管理
4.2.8 用戶信息管理
(1)我的收藏管理
用戶可以管理自己的收藏信息,刪除自己刪除的某些美食或者查看自己收藏的某些美食。
圖4.2.21 我的收藏管理
(2)美食論壇
用戶可以管理自己的論壇信息,例如創建自己的論壇帖子或者刪除自己創建的論壇帖子。
圖4.2.22 美食論壇管理
5 系統測試
5.1 系統測試的目的
一個系統設計好后,就會進入測試階段,測試的目標是檢驗設計好的網站是否可以正常無誤的運行,盡可能的發現網站的問題,已使后期網站投入使用后網站盡少出錯。
系統測試的目的在于找出系統在開發與設計時可能出現的缺陷與錯誤,驗證系統是否滿足用戶的需求。
系統測試主要是判斷系統是否可以正常運行,功能模塊是否可以實現操作。程序代碼中是否有錯誤出現。測試程序是開發過程中的一個主要問題。就算系統完成的再好,再進行程序測試時也會發現一個從來沒有被發現的錯誤信息。
測試不僅是系統開發的開始,而且應該貫穿整個系統的整個生命周期[23]。評估系統質量的方法不局限于系統編碼和過程,應該與軟件設計工作和歷史需求分析密切相關。系統錯誤,不一定是代碼錯誤,可能是階段的設計摘要和設計細節存在問題,問題也可能出現在需求分析階段。從實際情況來看,最初的問題很可能是一個小錯誤,根據按鈕的原理,按鈕后的按鈕位錯將是所有位錯。該系統的原因也同樣適用,隨著后續的開發工作,誤差將越來越嚴重。因此就應該對系統進行測試,在一開始就發現系統中存在的問題,就能保證以后系統能夠正常穩定的運行。在測試系統中,開發人員應該站在用戶的角度來處理測試工作,而現在主要的測試方法是黑盒測試。測試的目的可以概括為以下幾點:首先,用戶界面和用戶需求是一致的,設置界面和設計風格統一;第二,創新設計接口規范設計標準,具有獨特的審美特征;最后,人類傳統的接口以滿足審美需求,不能盲目地追求一種獨特的,合理的規劃布局,符合審美標準。
5.2測試方案
對測試計劃的把握是測試方案的重中之重。所有的技術難點應該都被包含在這個測試計劃之中。而且我們要保證能與目標形成一致性,以至于能夠測試出一些主要存在的錯誤和一些錯誤的漏洞。可以完美解決這些問題就只有白盒測試或者黑盒測試[14]。
構造測試是白盒測試的另一個名字,了解與分析程序的結構以及性能功用的,從而我們可以得到最終想要的結果并且觀察出是不是每一條程序都能得到。
性能測試是黑盒測試別稱,程序本身的運作通過程序的進程來觀察,主要是看一下程序是不是能夠像我們預期的目標那樣發展,看一看我們的程序最終能不能完整的得到我們最后想要的功能和儲存想得到的數據,到最后看一下我們的這個程序完整性能不能達到要求。
5.3 測試用例及測試結果
5.3.1功能測試用例及測試結果
逐個測試子模塊的功能,查看平臺是否能夠達到預期目標。由于測試內容較多,下面僅給出部分子模塊功能測試用例:
用例id 用例標題 測試步驟 預期結果 實際結果
1 輸入符合要求的注冊數據能否注冊 1.輸入美食分享系統注冊頁面URL
2.輸入用戶名、密碼. 能夠注冊成功 能夠登陸成功
2 輸入和已經注冊過的用戶相同用戶名是否可以注冊 1.輸入美食分享系統注冊頁面URL
2.輸入和已經注冊過的用戶相同用戶名 注冊失敗 注冊失敗
3 注冊失敗,是否有失敗信息提示 1.輸入美食分享系統注冊頁面URL
2.輸入和已經注冊過的用戶相同用戶名 注冊失敗,有失敗信息提示 注冊失敗,有失敗信息提示
4 用戶名為空是否可以注冊 1.輸入美食分享系統注冊頁面URL
2.用戶名為空 注冊失敗 注冊失敗
5 密碼為空是否可以注冊 1.輸入美食分享系統注冊頁面URL
2密碼為空 注冊失敗 注冊失敗
6 輸入已注冊的用戶名和密碼能否正常登錄 1.輸入美食分享系統登陸頁面URL
2輸入已經注冊的用戶名
3.輸入正確的密碼并提交登陸; 登陸成功 登陸成功
7 輸入錯誤的密碼,正確的用戶名能否登陸成功 1.輸入美食分享系統登陸頁面URL
2輸入已經注冊的用戶名. 登陸失敗 登陸失敗
8 用戶名、密碼均為空能否登陸 1.輸入美食分享系統登陸頁面URL
2點擊登錄 登陸失敗 登陸失敗
9 登錄成功后,提示跳轉鏈接是否有效 1.輸入美食分享系統登陸頁面URL 成功進入博客首頁 成功進入博客首頁
10 登錄失敗后,提示跳轉鏈接是否有效 1.輸入美食分享系統登陸頁面URL 成功進入登陸頁面 成功進入登陸頁面
11 用戶-美食 1.用戶成功登陸
2.點擊美食
3.點贊4.收藏 成功 成功
12 用戶-收藏 1.用戶登陸成功
2.點擊收藏 能看到該用戶所有收藏的美食 能看到該用戶所有收藏的美食
13 用戶-筆記 1.用戶登陸成功
2.點擊筆記
3.點擊查看詳情 能看到筆記詳情 能看到筆記詳情
14 管理員-查看用戶信息 1.管理員登陸成功
2.點擊查看用戶信息 能看到所有已經注冊的用戶信息 能看到所有已經注冊的用戶信息
15 管理員-查看美食刪除菜品 1.管理員登陸成功
2.點擊查看菜品
3.刪除菜品 刪除菜品成功 刪除菜品成功
16 管理員-添加菜品菜品名為空 1.管理員登陸成功
2.點擊查看菜品
3.點擊添加菜品
4.菜品名為空 添加菜品失敗 添加菜品成功
17 管理員-添加菜品菜品名正常 1.管理員登陸成功
2.點擊查看菜品
3.點擊添加菜品
4.菜品名正常 添加菜品成功 添加菜品成功
18 管理員-查看筆記信息 1.管理員登陸成功
2.點擊查看筆記信息 能看到筆記詳情 能看到筆記詳情
19 管理員-修改密碼,輸入正確的原密碼 1.管理員登陸成功
2.修改密碼 修改成功 修改成功
20 在Chrome瀏覽器使用該系統 1.打chrome瀏覽器
2.輸入美食分享系統URL
3.驗證各個功能 各項功能正常 各項功能正常
5.3.2界面測試用例及測試結果
測試步驟 預期結果 實際結果
頁面是否整潔 是 是
文本描述通俗易懂 是 是
布局大致左右對稱 是 是
界面上的按鈕符合大部分人的使用習慣 是 是
5.4 測試總結
本基于Java的特色美食推薦網站設計要求基本都可以達到,此系統具有完整的軟件功能,良好的用戶界面,能夠正確的處理錯誤信息,而且能夠準確的提出錯誤的種類。但是系統測試時也出現了一些系統的不足和缺陷,所以在今后的日子里我會對其視覺上的不足作出修改,其次系統的代碼和數據庫出現了非常多的冗余現象,都是因為對編程技術的應用不夠熟練,在日后我會加強自己的自身學習和能力,減少這樣的冗余現象。
經過對上述的測試結果分析,本家庭食譜管理系統無論是在技術方面,還是操作方面,還是經濟方面都是完全可以實行的,并且經過測試,該系統操作簡單,所有的功能都可以實現,因此該系統可以滿足用戶的使用需求,值得被推廣。
6 總結
本文研究了家庭食譜管理系統的設計與實現,在文章開端首先對個研究背景、研究現狀和研究內容作了簡單的介紹,然后通過系統分析,引申出本系統研究的主要內容。
通過對Java語言和MYSQL數據庫的簡介,從硬件和軟件兩反面說明了家庭食譜管理系統的設計與實現的可行性,本文結論及研究成果如下:實現了Java與MYSQL相結合構建的家庭食譜管理系統 ,我感觸到學習一門新技術,最重要的是實踐,只有多動手才能盡快掌握它,一個系統的開發,經驗是最重要的,經驗不足,就難免會有許多考慮不周之處。要想吸引更多的用戶,系統的界面必須要美觀、有特色、友好,功能要健全。
由于在此之前對于Java知識并不了解,所以從一開始就碰到許多困難,例如一開始的頁面顯示不規范、數據庫連接有問題已經無法實現參數的傳遞等等,不過通過我不斷的查閱相關的資料,以及向老師同學請教,最后出現的所有的問題都得到了解決,通過這次的系統開發,我學到了很多的知識,也明白了自己在哪些方面有不足的地方,尤其是學會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實際上每個人編程的思路和對數據處理的方法、思想都是不同的,這就要求我們一定要通過實踐才能找到解決問題的方案。在此次畢業設計活動中,我不斷的提高了自己,也得到了寶貴的經驗,我相信這些對我以后的發展都會有很大幫助。
通過這次家庭食譜管理系統的開發,讓我學到了更多的知識,同時通過這次系統的設計也讓我明白了自己在哪方面有不足,以后加以學習爭取可以開發住更多有用的適用的系統軟件,本次系統的設計提高了我的編程水平,為了我今后系統的開發打下了結實
參考文獻
[1]李戀.基于JAVA WEB的美食網設計與實現[J].福建電腦,2019,35(02):78-79.DOI:10.16707/j.cnki.fjpc.2019.02.025.陳諾言. 基于用戶體驗的線上洗衣服務設計研究[D].華南理工大學,2019.
[2]謝富平.基于SSH2框架的在線美食系統的實現[J].電腦知識與技術,2015,11(33):168-170.DOI:10.14004/j.cnki.ckt.2015.3264.唐媛媛,王曉楠,李京培等.基于SpringBoot的病原生物學在線智能化實驗考試系統建設探索[J].赤峰學院學報(自然科學版),2023,39(12):75-78.DOI:10.13398/j.cnki.issn1673-260x.2023.12.024.
[3]楊凡.基于Android的美食APP設計與實現[J].電子世界,2017(19):70+72.DOI:10.19353/j.cnki.dzsj.20170916.001.劉瓊,史諾,劉康.基于微信小程序的學生考勤系統的設計與實現[J1.微型電腦應用,2023,39(1):173-176
[4]張豪,朱石磊,胡建華等. 基于B/S架構的校園論壇系統的設計與實現 [J]. 電腦知識與技術, 2023, 19 (33): 32-35. DOI:10.14004/j.cnki.ckt.2023.1779
[5]唐媛媛,王曉楠,李京培等.基于SpringBoot的病原生物學在線智能化實驗考試系統建設探索[J].赤峰學院學報(自然科學版),2023,39(12):75-78.DOI:10.13398/j.cnki.issn1673-260x.2023.12.024.
[6]胡鵬飛,于強. 基于B/S的空間站高溫柜地基實驗遠程操控系統 [J]. 計算機應用與軟件, 2023, 40 (12): 9-15+78.
[7]劉瓊,史諾,劉康.基于微信小程序的學生考勤系統的設計與實現[J1.微型電腦應用,2023,39(1):173-176
[8]姚麗娟,羅宏偉,丑晨,等.基于微信小程序的智慧校園導航系統研究1.網絡安全技術與應用,2023(3):48-50.
[9]趙鋼.Java Servlet+EJB的Web模式應用研究[J].電子設計工程,2017,21(13):47-49.
[10]邵嘉誠,厲旭杰,林選,等.基于微信小程序的后勤報修系統的設計與實現.智能計算機與應用,2019.9(2):100-103
[11]陳淼,羊開云. 基于微信小程序的校園報修管理系統設計 [J]. 網絡安全技術與應用, 2024, (01): 57-60.
[12]顧文靜,趙春燕,李娟基于SpringMVC的高性能計算機監視管理系統設計與實現[J].計算機應用與與軟件,2017,34(10):102-107.
[13]彭霞,朱萍MVC模式高新科研管理平臺構建方案IJ1.計算機技術與發展,201323):249-253
[14]梁粥.基于MVC的高校科研成果管理系統的設計與實現IJ1.計算機技術與發展,2011,21(10):161-163
[15]杜成龍.基于MVC模式的三層架構研究[J].軟件,2022,43(6):100-102
[16]海波,匡靜,朱承學,等.基于MVC的教學資源管理系統的設計與實現[J].計算機技術與發展2014.24(7):214-217.
[17]羅梓汛,徐鵬,黃聽凱.基于MVC模式與MySQL的信息咨詢服務系統設計與實現IJ1.信息與電腦(理論版).2022,34(9):184-188.
[18]王絮,陳學斌,王艷彥,等.基于MVC架構的教學考勤系統設計與實現[J1計算機技術與發展2016,26(9):65-68
[19]Xiao Z ,Ali Y ,Xin W , et al.Sports Work Strategy of College Counselors Based on MySQL Database Big Data Analysis[J].International Journal of Information Technology and Web Engineering (IJITWE),2023,18(1):1-14.
[20]Yuan G ,Ximu Y .Data analysis framework of tourism enterprise human resource management system based on MySQL and fuzzy clustering[J].International Journal of System Assurance Engineering and Management,2023,14(5):1647-1659.
[21]Gao Yuan,and Yan Ximu.Data analysis framework of tourism enterprise human resource management system based on MySQL and fuzzy clustering.International Journal of System Assurance Engineering and Management 14.5(2023):1647-1659.
[22]Babatunde Olagoke Sunday Sunday O Nduka.(2023).MySQL Database Server: Deploying Software Application to Enhance Visibility and Accountability.Current Journal of Applied Science and Technology(4),16-23.123
[23]Kharchenko K ,Beznosyk O ,Bulakh B , et al.The development of the method of optimizing costs for software testing in the Agile model[J].Technology audit and production reserves,2023,6(2):10-14.
致 謝
在這篇關于基于JavaWeb的特色美食推薦系統設計與實現的畢業設計論文完成之際,我衷心感謝所有給予我幫助和支持的人。首先,我要特別感謝我的指導老師,他們不僅在專業知識上給予我巨大的幫助,還在研究方法和論文撰寫上提供了寶貴的指導。他們的耐心和專業精神一直是我學習的榜樣。
我還要感謝我的同學和朋友們,他們在我遇到困難和挑戰時給予了我鼓勵和支持。在論文撰寫過程中,他們的意見和建議對我幫助極大。
此外,我還要感謝我的家人對我的理解和支持,他們的愛和鼓勵是我前進的動力。
最后,感謝所有直接或間接幫助和影響我完成這項畢業設計的每一個人。沒有你們的幫助,我無法完成這份工作。衷心感謝你們的支持與陪伴。