施宸昊
(上海交通大學 電子信息與電氣工程學院,上海 201100)
我國是水果生產(chǎn)和消費大國,水果在居民生活中扮演著越來越重要的角色。居民對水果的需求是我國城市消費升級的一個重要參考指數(shù),隨著人民生活水平的大幅提高,我國城市的水果消費量也呈現(xiàn)出快速增加的態(tài)勢,這種增加不僅僅體現(xiàn)在絕對總量的增加,更體現(xiàn)在品種的多樣化、品質的提升等方面。在“網(wǎng)絡時代”的現(xiàn)在,眾多行業(yè)的互聯(lián)網(wǎng)化不可避免,水果銷售行業(yè)也到了改革的時候。本系統(tǒng)旨在幫助水果營銷者處理日常的水果出入庫、交易往來、根據(jù)消費者“偏好”推送水果信息等事務。通過使用本系統(tǒng),商戶可以大大降低人工成本和日常工作中因疏忽等原因產(chǎn)生的錯誤,使得商戶營收得到進一步提升,消費者得到更優(yōu)質的服務和更好的購物體驗。
水果銷售系統(tǒng)基于Python 語言開發(fā),Python是一個語法簡潔、可擴展的開源通用腳本語言。結合了可解釋性、可編譯性、交互性和面向對象,并具有良好的跨平臺性[1]。與其他語言相比,Python具有簡單、易學、易用等特點,同時具有海量、豐富的第三方庫,功能覆蓋到科學計算、Web 開發(fā)、大數(shù)據(jù)、人工智能等領域,廣泛應用于各行各業(yè)[2]。
Django 是一個由Python 語言寫成的開源Web應用框架[3]。Django 框架功能完善、要素齊全、有強大的數(shù)據(jù)庫訪問組件、靈活的URL 映射、豐富的Template 模板語言、自帶后臺管理系統(tǒng)admin。開發(fā)過程支持MTV 的設計模式,其中Model(模型)用來構建和操作Web 應用中的數(shù)據(jù),負責業(yè)務對象與數(shù)據(jù)庫對象(ORM);Template(模版)負責封裝響應結果,生成并返回要顯示的頁面,把頁面展示給用戶;View(視圖)負責接收用戶請求,進行業(yè)務處理,并返回響應,以及調用Model 和Template。
水果銷售平臺可以實現(xiàn)商家后臺管理、用戶管理、商品管理、訂單管理等模塊。實現(xiàn)用戶注冊/登錄、用戶信息管理、用戶商品瀏覽、商品下單付款等功能。商家可進入后臺管理模塊,實現(xiàn)商品管理、用戶管理、購物車管理等功能,整個系統(tǒng)的功能如圖1 所示。

圖1 系統(tǒng)功能模塊設計圖
水果銷售系統(tǒng)后臺采用MySql 數(shù)據(jù)庫提供數(shù)據(jù)持久化服務[4],其具有開源、輕量級、接口規(guī)范等優(yōu)點。數(shù)據(jù)庫包括用戶表、商品信息表、商戶信息表、訂單表、購物車等5 張數(shù)據(jù)表。部分表結構設計和說明如表1、表2 所示。

表1 用戶表

表2 商品表

(3)編寫model 類,完成數(shù)據(jù)表結構設計;
(4)使用命令python manage.py makemigrations生成遷移文件;
(5)使用命令python manage.py migrate 實現(xiàn)數(shù)據(jù)表遷移[5]。
3.2.1 注冊模塊設計
用戶進行注冊時,需要輸入賬號、密碼、手機號、驗證碼信息等。系統(tǒng)注冊功能時序圖設計如圖2 所示。

圖2 系統(tǒng)注冊時序圖
3.2.2 登錄模塊設計
用戶登錄模塊設計了3 種登錄方式:賬號密碼登錄;手機號加上手機驗證碼登錄;第三方平臺登錄。
第三方平臺登錄的原理是前端頁面向后臺發(fā)起獲取第三方登錄URL 的請求,后臺根據(jù)第三方平臺生成一個認證地址并將請求重定向到該地址。比如本系統(tǒng)中用于釘釘?shù)卿浀亩S碼。用戶使用手機掃描二維碼,然后在手機上點擊確定登錄按鈕后,就向后臺請求了對應的回調函數(shù)。后臺先解析回調參數(shù)獲取用戶信息,根據(jù)用戶名、平臺名、用戶在該平臺的UUID,查詢數(shù)據(jù)庫中是否有對應的用戶。
用戶登錄后可進入商品瀏覽首頁,在該頁面用戶可瀏覽查看管理員發(fā)布的所有水果產(chǎn)品。可選擇類別查看不同分類下的水果信息,同時也支持輸入名稱進行模糊搜索查看水果信息。
(1)根據(jù)商品模塊首頁的功能分析所有需要呈現(xiàn)的頁面元素,創(chuàng)建商品模塊首頁的模板文件index.html,使用DTL 模板語言渲染[6]。
(2)編寫Views.py 文件下的視圖函數(shù),使用Django 自帶的數(shù)據(jù)庫語言,接受Web 請求并且返回Web 響應。默認自動取出數(shù)據(jù)庫中用戶最喜歡的前6 種水果。
(3)設置商品瀏覽首頁的路由,建立用戶請求的URL 和視圖函數(shù)的映射關系。
用戶點擊水果可加入購物車,點擊下單后生成訂單,可以查看個人中心、修改收貨地址、修改基本信息、查詢歷史訂單、查詢當前訂單等。
(1)用戶添加購物車之后,后端路由訪問對應的視圖函數(shù),動態(tài)渲染購物車的數(shù)量。
(2)用戶選擇結算按鈕前,可對購物車中的水果商品列表進行選擇,可修改商品數(shù)量,可刪除購物車中的水果,購物車頁面如圖3 所示。

圖3 購物車頁面
創(chuàng)建Django 的admin 模塊并完成配置,實現(xiàn)商家后臺管理。
(1)創(chuàng)建admin 模塊
在控制臺窗口輸入:python manage.py creatsuperuser 設置用戶名和密碼,完成后臺管理員用戶的創(chuàng)建。
(2)修改項目配置文件setting.py
LANGUAGE_CODE='zh-Hans’
TIME_ZONE='Asia/Shanghai'
修改管理后臺的時區(qū)和顯示語言,然后在admin.py 文件中使用admin.site.register 命令完成模型注冊即可使用Django 的管理程序操作商家的后臺管理。
為了增強用戶購物體驗,在使用本系統(tǒng)時能快捷、方便地挑選到喜歡的水果,系統(tǒng)開發(fā)中使用了改進的協(xié)同過濾算法,用戶登錄時,首頁能進行水果信息個性化推送。傳統(tǒng)的協(xié)同過濾算法主要依據(jù)用戶對商品的評分,存在的問題是:非常依賴用戶評分矩陣的質量,只有高密度、海量的評分矩陣才能保證相似度計算的準確度[7],同時該算法缺乏個性化推薦功能。因此推薦效果有很大的局限性。本系統(tǒng)設計中,除了使用用戶的評分數(shù)據(jù),還給每一個商品增加標簽信息,用于描述商品的屬性信息,利用這些標簽信息來進一步挖掘商品之間的聯(lián)系以及用戶對商品的主觀偏好[8]。基于用戶偏好的水果銷售系統(tǒng)每天凌晨進行系統(tǒng)更新維護,更新后的數(shù)據(jù)保存于數(shù)據(jù)庫中,并通過系統(tǒng)首頁推薦信息展示,不同的用戶登錄所看到的推薦信息不完全一致,便于用戶選購。
本文開發(fā)的水果銷售系統(tǒng),具有用戶界面簡潔友好、易于操作的特點。同時根據(jù)協(xié)同過濾推薦算法實現(xiàn)了基于用戶偏好的水果銷售,系統(tǒng)根據(jù)用戶的歷史購買記錄,分析用戶偏好,推送相關水果信息,幫助用戶更好、更快捷地選購喜歡的水果,提升用戶購買體驗。