1 設計概述
1.1 條件與限制
- 建議系統的運行壽命:5 年
- 經費、投資方面的來源和限制:自營
- 法律和政策方面的限制:不得侵犯學生和商家權利,不得與相關政策違背
- 硬件環境:性能良好的服務器
- 開發環境:Android Stdio、MySQL、JAVA 相關的開發軟件等
- 可利用的信息和資源:參考文獻,所學的高級編程語言和數據庫知識
- 系統投入使用的最晚時間:2 個月
1.2 運行環境概述
- 支持環境:Android ?及以上。
- 數據庫:MYSQL。
- 開發平台:Android Stdio。
- 編程語言:JAVA。
1.3 需求概述
見需求文檔。
1.4 詳細設計方法和工具
- 數據庫設計工具:MySQL
- 界面設計工具:Android Stdio
- 原型設計工具:spring+springmvc+mybatis
2 總體設計
2.1 系統體系結構
功能模塊的划分
2.2 系統功能結構
2.2.1 主功能清單
主功能模塊清單
功能編號 | 功能名稱 | 功能簡述 |
---|---|---|
F1 | 用戶接口模塊 | 在此模塊用戶可以注冊后享受美食推薦服務、進行周邊美食探索。 |
F2 | 管理員接口模塊 | 對於美食信息進行管理,也可以審核用戶評價。 |
F3 | 數據服務模塊 | 對美食的信息,用戶的喜好進行管理,實現推薦算法。 |
2.2.2 子功能清單
子功能清單
功能編號 | 子功能編號 | 子功能名稱 | 子功能簡述 |
---|---|---|---|
F1 | F1-1 | 用戶注冊 | 用戶可以注冊個人信息。 |
F1-2 | 用戶登錄 | 用戶登錄后可以修改個人口味,享受推薦功能。 | |
F1-3 | 個人愛好設置 | 用戶對甜、辣、酸、咸、油屬性的食物設置口味愛好。 | |
F1-4 | 每日推薦 | 向用戶於各個飯點,根據用戶喜好、當天天氣和用戶身體狀況等進行菜品推薦。 | |
F1-5 | 喜好反饋 | 用戶對於推薦的菜品,可以點贊或點踩,反饋給數據庫新的喜好特性值。 | |
F2 | F2-1 | 美食信息管理 | 管理員對美食信息進行管理,可以進行增、刪、改操作。 |
F2-2 | 用戶評價管理 | 管理員對用戶提交的評價進行審核。 |
2.3 功能設計
用例圖: 用戶用例圖
管理員用例圖
類圖:
類圖
3 程序模塊設計說明
3.1 F1 用戶接口模塊
3.1.1 F1-1 用戶注冊
功能要求:用戶使用本 app 需先注冊,方便軟件根據用戶口味喜好進行推薦。
性能要求:要求 1 秒內作出相應。
界面要求:簡單美觀。
輸入項:由用戶初次點擊“推薦”觸發該事件,或在登錄界面選擇注冊。
輸出項:無
程序流程:
3.1.2 F1-2 用戶登錄
功能要求:用戶登錄后可以點擊首頁的“開始推薦”按鈕進行美食推薦。
性能要求:要求 1 秒內作出相應。
輸入項:由用戶點擊登錄觸發該事件。
輸出項:登錄是否成功。
程序流程:
3.1.3 F1-3 個人愛好設置
功能要求:用戶對於甜、辣、酸、咸、油屬性的食物設置口味愛好。
性能要求:要求 1 秒內作出相應。
輸入項:注冊成功后自動跳轉觸發,或登錄后在個人中心選擇設置。
輸出項:用戶是否喜愛。
3.1.4 F1-4 每日推薦
功能要求:向用戶於各個飯店,根據用戶喜好、當天天氣和用戶身體狀況等進行美食推薦。
性能要求:要求 1 秒內作出相應。
輸入項:時間、用戶喜好、天氣、用戶身體狀況,用戶點擊“推薦”觸發。
輸出項:根據推薦算法得到的結果。
3.1.5 F1-5 喜好反饋
功能要求:用戶對於推薦的菜品進行點贊或點踩,進一步反饋數據庫口味喜好特征。
性能要求:要求 1 秒內作出相應。
輸入項:點贊或點踩。
輸出項:用戶對某美食的喜好特征。
3.1.6 F1-6 探索
功能要求:用戶根據距離、地區、評價等條件進行篩選或以關鍵字進行搜索。用戶可以點進各結果查看詳細信息。
性能要求:要求 1 秒內作出相應。
輸入項:篩選條件,關鍵字,查看詳細信息的請求。
輸出項:篩選或搜索結果,商家詳情。
>3.2 F2 管理員接口模塊
3.2.1 F2-1 美食信息管理
功能要求:管理員對美食信息進行管理,可以進行增加、刪除、修改等操作。
性能要求:要求 1 秒內作出相應。
輸入項:美食,相應的操作。
輸出項:修改的結果。
3.2.2 F2-2 用戶評價管理
功能要求:管理員對用戶提交的評價進行審核。
性能要求:要求 1 秒內作出相應。
輸入項:用戶提交的評價。
輸出項:通過或不通過。
3.3 數據結構
3.3.1 數據庫環境說明
軟件開發用到的數據庫是 MySQL。MySQL 是一個關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下產品。關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL 所使用的 SQL 語言是用於訪問數據庫的最常用標准化語言。
3.3.2 數據庫表設計
(1)用戶信息
字段名 | 數據類型 | 長度 | 主鍵 | 非空 | 描述 |
---|---|---|---|---|---|
UID | Varchar | 20 | 是 | 是 | 用戶 id |
Phone | Varchar | 11 | 否 | 是 | 手機號(登錄賬號) |
Password | Varchar | 20 | 否 | 是 | 密碼 |
Feature | Int | 否 | 否 | 特征值(暫定) |
(2)菜品信息
字段名 | 數據類型 | 長度 | 主鍵 | 非空 | 描述 |
---|---|---|---|---|---|
DID | Varchar | 20 | 是 | 是 | 菜品編號 |
ImagePath | Varchar | 50 | 否 | 否 | 圖片存放路徑 |
Feature | Int | 否 | 否 | 特征值 | |
Season | Int | 否 | 否 | 季節屬性 | |
AID | Varchar | 20 | 否(外鍵) | 是 | 所在場所編號 |
Remark | Float | 否 | 否 | 評價值 |
(3)場所信息
字段名 | 數據類型 | 長度 | 主鍵 | 非空 | 描述 |
---|---|---|---|---|---|
AID | Varchar | 20 | 是 | 是 | 場所編號 |
Name | Varchar | 50 | 否 | 否 | 場所名 |
Address | Varchar | 50 | 否 | 否 | 所屬地 |
(4)用戶反饋日志
字段名 | 數據類型 | 長度 | 主鍵 | 非空 | 描述 |
---|---|---|---|---|---|
UID | Varchar | 20 | 是 | 是 | 用戶編號 |
DID | Varchar | 20 | 是 | 是 | 菜品編號 |
Time | Date | 否 | 是 | 最后一次用餐時間 | |
Count | Int | 否 | 是 | 一周內用餐次數 | |
Comment | Int | 否 | 否 | 評價值(單次) |
分工
UI 界面:趙昕穎、李景怡
推薦算法:張陳傑、孟蘇、林朝洋
服務器端:梁翹楚、楊乾成、葉沛玟