謝樹仁 鄧凱成 喻琨 陳政
摘 要:以研究和實(shí)現(xiàn)基于網(wǎng)絡(luò)的農(nóng)業(yè)信息共享平臺(tái)為核心,以湖南省衡陽(yáng)市農(nóng)業(yè)信息共享平臺(tái)的應(yīng)用為案例,研究的內(nèi)容包括衡陽(yáng)市農(nóng)戶在基于Python框架的農(nóng)業(yè)信息共享平臺(tái)的基礎(chǔ)上運(yùn)用該平臺(tái)搜索農(nóng)業(yè)新聞動(dòng)態(tài)、農(nóng)業(yè)科技信息、市場(chǎng)信息分析與用戶分享合作平臺(tái)。通過(guò)開發(fā)Python框架的農(nóng)業(yè)信息共享平臺(tái),為衡陽(yáng)市農(nóng)業(yè)相關(guān)領(lǐng)域提供一個(gè)信息交流平臺(tái),使衡陽(yáng)市農(nóng)業(yè)從業(yè)人員能夠獲得一個(gè)較為全面的信息分享平臺(tái),為衡陽(yáng)市農(nóng)業(yè)信息化發(fā)展助力。
關(guān)鍵詞:農(nóng)業(yè)信息化 信息共享平臺(tái) Web Python框架
中圖分類號(hào):F323 ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-4914(2021)05-037-03
一、湖南省衡陽(yáng)市農(nóng)業(yè)信息共享平臺(tái)設(shè)計(jì)
平臺(tái)概要設(shè)計(jì)是在系統(tǒng)需求分析完成并形成需求分析手冊(cè)后,根據(jù)需求劃分功能模塊,并且設(shè)計(jì)數(shù)據(jù)表存儲(chǔ)功能模塊所需數(shù)據(jù)。該階段還需要考慮實(shí)際問(wèn)題,比如選擇什么樣的開發(fā)環(huán)境,選擇什么樣的開發(fā)技術(shù)。概要設(shè)計(jì)階段主要完成的任務(wù)是把用戶的需求用系統(tǒng)所需實(shí)現(xiàn)的功能表示出來(lái)。Flask-Script是一個(gè)Flask擴(kuò)展,為Flask程序添加了一個(gè)命令行解析器。本系統(tǒng)就是在Flask-Script命令行下進(jìn)行系統(tǒng)調(diào)試和運(yùn)行的。
(一)Flask-SQLAlchemy
ORM(Object-Relational Mapping,對(duì)象關(guān)系映射)提供一種概念化,易于理解的數(shù)據(jù)建模方法。ORM方法基于三個(gè)核心原則:簡(jiǎn)單性:以最基本的形式建模數(shù)據(jù)。交流:數(shù)據(jù)庫(kù)結(jié)構(gòu)以任何人都能理解的語(yǔ)言記錄。準(zhǔn)確性:根據(jù)數(shù)據(jù)模型創(chuàng)建適當(dāng)標(biāo)準(zhǔn)化的結(jié)構(gòu)。通常,建模者通過(guò)從熟悉應(yīng)用程序但不是熟練數(shù)據(jù)建模人員的人那里收集信息來(lái)開發(fā)信息模型。建模者必須能夠以非技術(shù)企業(yè)專家可以理解的概念級(jí)別與數(shù)據(jù)結(jié)構(gòu)進(jìn)行通信。建模者還必須能夠在簡(jiǎn)單的單元分析中分析樣本數(shù)據(jù)。ORM專門用于改善這種連接。SQLAlchemy是Python中最成熟的ORM框架,資源和文檔十分豐富,可以勝任大多數(shù)應(yīng)用場(chǎng)景。
(二)Flask-Bootstrap
Bootstrap是Twitter開源的一個(gè)Web前端框架,它提供的用戶界面組件可用于創(chuàng)建整潔且有吸引力的網(wǎng)頁(yè)。要想在程序中集成Bootstrap,顯然要對(duì)模板做所有必要的改動(dòng)。不過(guò),更簡(jiǎn)單的方法是使用一個(gè)名為Flask-Bootstrap的Flask擴(kuò)展、簡(jiǎn)化集成的過(guò)程。
(三)Flask-Login
大多數(shù)程序都要進(jìn)行用戶跟蹤。用戶連接程序時(shí)會(huì)進(jìn)行身份認(rèn)證,通過(guò)這一過(guò)程,讓程序知道自己的身份。程序知道用戶是誰(shuí)后,就能提供有針對(duì)性的體驗(yàn)。最常用的認(rèn)證方法要求用戶提供一個(gè)身份證明(用戶的電子郵件或用戶名)和一個(gè)密碼。Flask-Login為Flask提供了用戶會(huì)話管理。它處理日常的登入,登出和記住用戶的會(huì)話。
(四)Flask-Mail
在互聯(lián)網(wǎng)應(yīng)用中最基本的功能就是能夠給注冊(cè)用戶發(fā)送確認(rèn)郵件,或者給有重置密碼需求的用戶發(fā)送郵件。Flask-Mail擴(kuò)展可以提供一個(gè)基于SMTP的接口,可以在視圖函數(shù)或命令行中發(fā)送郵件。
(五)Flask-Migrate
Flask-Migrate是一個(gè)為Flask應(yīng)用處理SQLAlchemy數(shù)據(jù)庫(kù)的遷移擴(kuò)展,該擴(kuò)展使用了數(shù)據(jù)庫(kù)遷移框架——Alembic。數(shù)據(jù)庫(kù)操作可以通過(guò)Flask命令行接口或者通過(guò)Flask-Script擴(kuò)展。
(六)baidu-aip
Baidu-aip是百度云提供的AI接口,可以調(diào)用百度云提供的語(yǔ)音識(shí)別、圖像識(shí)別、文字識(shí)別等功能。
二、數(shù)據(jù)庫(kù)設(shè)計(jì)
實(shí)體聯(lián)系圖又被稱為E-R(Entity-Relationship)圖或?qū)嶓w關(guān)聯(lián)圖,在軟件開發(fā)中主要用于表示系統(tǒng)所需數(shù)據(jù)之間的關(guān)系。實(shí)體關(guān)聯(lián)圖由實(shí)體,實(shí)體間的關(guān)聯(lián)和實(shí)體屬性3個(gè)基本成分組成。
(一)數(shù)據(jù)庫(kù)實(shí)體
通常認(rèn)為可以客觀地區(qū)分的事物是實(shí)體。實(shí)體可以是特定的人和事物,也可以指泛指抽象的概念。關(guān)鍵在于將每個(gè)實(shí)體之間的特征區(qū)分開來(lái),具有相同屬性的實(shí)體具有相同的特征和屬性。使用實(shí)體或?qū)嶓w屬性來(lái)抽象表示一類實(shí)體,它由E-R圖中的矩形表示,實(shí)體名稱寫在矩形中;例如,學(xué)生張三和學(xué)生李四是實(shí)體。如果它是弱實(shí)體,在矩形外部設(shè)置實(shí)心矩形。
(二)實(shí)體屬性
用E-R圖中的橢圓表示,屬性是相對(duì)實(shí)體;例如,學(xué)生的性別、學(xué)號(hào)等即是屬性。如果是多值屬性,則在橢圓外設(shè)置一個(gè)實(shí)心橢圓。如果導(dǎo)出,則表示為虛線橢圓。
(三)實(shí)體聯(lián)系
是指信息世界中實(shí)體之間的關(guān)聯(lián),信息世界中實(shí)體之間的關(guān)聯(lián)是實(shí)體屬性之間的關(guān)系;實(shí)體之間的關(guān)系通常是指不同實(shí)體集之間的關(guān)系。在ER圖中,菱形用于指示菱形框架中的接觸名稱,不相關(guān)的邊緣連接到相關(guān)實(shí)體,以及無(wú)向側(cè)的接觸類型(1 ∶1,1 ∶ n或m ∶ n)。例如,教師給學(xué)生講課,學(xué)生有選修關(guān)系。如果是弱實(shí)體的聯(lián)系則在菱形外面再套菱形。根據(jù)實(shí)現(xiàn)用戶需求所需的信息劃分項(xiàng)目的數(shù)據(jù)實(shí)體:用戶角色、用戶、用戶共享、用戶評(píng)論和用戶關(guān)注點(diǎn)。
1.數(shù)據(jù)實(shí)體。用戶角色實(shí)體:用戶角色I(xiàn)D(id),用戶角色姓名(role),默認(rèn)用戶角色(default),用戶角色允許的操作。
用戶實(shí)體:用戶ID(id),用戶郵箱(email),用戶名(username),用戶角色I(xiàn)D,用戶密碼(password),用戶確認(rèn)狀態(tài)(confirm),用戶真實(shí)姓名(name),用戶地址(address),關(guān)于我(about_me),注冊(cè)時(shí)間,最近登陸時(shí)間,用戶頭像。
用戶分享實(shí)體:分享實(shí)體ID,分享內(nèi)容,分享時(shí)間,用戶ID
用戶評(píng)論實(shí)體:用戶評(píng)論ID,評(píng)論內(nèi)容,評(píng)論狀態(tài),用戶ID,用戶分享ID。
用戶關(guān)注實(shí)體:關(guān)注者ID,被關(guān)注者ID,關(guān)注時(shí)間。
2.數(shù)據(jù)實(shí)體聯(lián)系圖(E-R圖)。衡陽(yáng)市農(nóng)業(yè)信息共享平臺(tái)系統(tǒng)分析下的主要實(shí)體都有:用戶、用戶關(guān)注、用戶角色、用戶評(píng)論、用戶分享。衡陽(yáng)市農(nóng)業(yè)信息共享平臺(tái)數(shù)據(jù)實(shí)體之間的聯(lián)系見圖1。
三、系統(tǒng)功能模塊設(shè)計(jì)
(一)功能模塊劃分
項(xiàng)目的功能模塊根據(jù)用戶的需求進(jìn)行劃分,必須實(shí)現(xiàn)的功能模塊有:注冊(cè)模塊、登陸模塊、編輯信息模塊、重置密碼模塊、分享模塊、評(píng)論模塊、關(guān)注與取消關(guān)注模塊、禁止評(píng)論模塊、修改用戶權(quán)限模塊、登出模塊;另外,還提供了調(diào)用百度AI的功能模塊:語(yǔ)音識(shí)別模塊、圖像識(shí)別模塊、文字識(shí)別模塊;最后在系統(tǒng)完善過(guò)程中還添加了公告模塊、數(shù)據(jù)庫(kù)操作模塊、網(wǎng)絡(luò)爬蟲模塊等。
(二)功能模塊組織結(jié)構(gòu)
衡陽(yáng)市農(nóng)業(yè)信息共享平臺(tái)功能結(jié)構(gòu)圖如圖2所示,主要包括以下幾個(gè)功能模塊。
注冊(cè)模塊:當(dāng)非注冊(cè)用戶登陸平臺(tái)時(shí),該用戶只能瀏覽其他登陸用戶的分享和評(píng)論;用戶進(jìn)行注冊(cè)后才能使用較為完整的功能。該模塊主要使用了Flask-Mail、Flask-Login、Flask-Moment、Flask-WTF等擴(kuò)展模塊。
瀏覽模塊:所有用戶可以瀏覽登陸用戶發(fā)布的分享和評(píng)論,但是不能進(jìn)行信息交流和分享。該模塊主要使用了Flask-Moment等擴(kuò)展模塊。
登陸模塊:當(dāng)用戶注冊(cè)后,需要通過(guò)確認(rèn)注冊(cè)郵件進(jìn)行確認(rèn),才可以使用該功能進(jìn)行登陸;系統(tǒng)根據(jù)登陸數(shù)據(jù)進(jìn)行判斷該用戶是否合法,如果不合法將會(huì)刷新登陸模塊并進(jìn)行提示。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF等擴(kuò)展模塊。
編輯信息模塊:注冊(cè)用戶登陸后方可使用的功能,該功能用于編輯自身信息;非系統(tǒng)管理員用戶只能使用編輯自身信息的模塊;系統(tǒng)管理員可以編輯其他用戶的信息。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-SQLAlchemy等擴(kuò)展模塊。
分享模塊:通過(guò)富文本框發(fā)布全網(wǎng)可看的分享,注冊(cè)登陸用戶均可使用的功能。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等擴(kuò)展模塊。
評(píng)論模塊:對(duì)用戶的分享進(jìn)行評(píng)論,注冊(cè)登陸用戶均可使用的功能。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等擴(kuò)展模塊。
關(guān)注與取消關(guān)注模塊:登陸用戶可以關(guān)注某些用戶,當(dāng)這些用戶發(fā)布分享后,登陸用戶可以方便快捷地得到這些分享;同樣,如果不想關(guān)注這些對(duì)象,就取消關(guān)注即可,這些分享便不會(huì)出現(xiàn)在關(guān)注者列表中。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等擴(kuò)展模塊。
禁止評(píng)論模塊:將某些用戶的不正當(dāng)評(píng)論禁止,使全網(wǎng)用戶看不到這些評(píng)論;只有評(píng)論評(píng)審員和系統(tǒng)管理員才能使用的功能。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等擴(kuò)展模塊。
修改用戶權(quán)限模塊:修改當(dāng)前用戶的權(quán)限;只有系統(tǒng)管理員才能使用的功能。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等擴(kuò)展模塊。
重置密碼模塊:當(dāng)用戶忘記密碼時(shí),可以使用該功能實(shí)現(xiàn)密碼重置。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等擴(kuò)展模塊。
登出模塊:登陸用戶用于從平臺(tái)中登出,平臺(tái)清除用戶登陸信息;注冊(cè)登陸用戶均可使用的功能。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等擴(kuò)展模塊。
百度AI功能模塊:用戶進(jìn)入百度AI功能模塊,系統(tǒng)將調(diào)用百度提供的API,實(shí)現(xiàn)各種熱門的應(yīng)用場(chǎng)景。該模塊主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy、baidu-aip等擴(kuò)展模塊。
網(wǎng)絡(luò)爬蟲功能模塊:用戶通過(guò)關(guān)鍵字搜索,系統(tǒng)將通過(guò)網(wǎng)絡(luò)爬蟲技術(shù)獲取到某些平臺(tái)上的相關(guān)信息,并將信息顯示處理。該模塊主要使用了Flask-Bootstrap等擴(kuò)展模塊,見圖2。
四、結(jié)論與建議
本文主要通過(guò)概要設(shè)計(jì),選定了系統(tǒng)開發(fā)環(huán)境,開發(fā)系統(tǒng)所用技術(shù),系統(tǒng)體系結(jié)構(gòu)和模式;明確了系統(tǒng)組織結(jié)構(gòu);設(shè)計(jì)了系統(tǒng)所需數(shù)據(jù)表。最終以體系結(jié)構(gòu)圖,模式結(jié)構(gòu)圖,系統(tǒng)組織結(jié)構(gòu)圖和數(shù)據(jù)表的形式展現(xiàn)。
(一)衡陽(yáng)市Python框架的農(nóng)業(yè)信息共享平臺(tái)適用范圍
2018年,衡陽(yáng)市實(shí)現(xiàn)地區(qū)生產(chǎn)總值3046.03億元。其中,農(nóng)林牧漁業(yè)總產(chǎn)值582.04億元,農(nóng)業(yè)產(chǎn)值238.86億元,占農(nóng)林牧漁業(yè)總產(chǎn)值的41.04%。祁東縣是全國(guó)的黃花菜之鄉(xiāng),在祁東縣主要產(chǎn)地官家嘴鎮(zhèn)、太和堂鎮(zhèn),有大約3000戶左右的農(nóng)戶在適用基于Python框架的農(nóng)業(yè)信息共享平臺(tái)。其中,黃土鋪鎮(zhèn)不僅是湖南省農(nóng)業(yè)特色小鎮(zhèn),而且是全國(guó)的黃花菜之鄉(xiāng),黃土鋪鎮(zhèn)農(nóng)民積極應(yīng)用Python框架的農(nóng)業(yè)信息共享平臺(tái)在黃花菜農(nóng)作物上進(jìn)行選種,有效地促進(jìn)了鄉(xiāng)域經(jīng)濟(jì)的發(fā)展。太和堂鎮(zhèn)積極推進(jìn)Python框架的農(nóng)業(yè)信息共享平臺(tái),指導(dǎo)農(nóng)戶利用該平臺(tái)的專業(yè)技術(shù)進(jìn)行農(nóng)業(yè)技術(shù)的學(xué)習(xí),以提高當(dāng)?shù)剞r(nóng)戶的農(nóng)業(yè)專業(yè)性水平。
(二)Python框架的農(nóng)業(yè)信息共享平臺(tái)在農(nóng)業(yè)選種上的運(yùn)用
衡陽(yáng)市農(nóng)民利用充分Python框架的農(nóng)業(yè)信息共享平臺(tái),在全國(guó)各類經(jīng)濟(jì)平臺(tái)上篩選出當(dāng)前市場(chǎng)上最受歡迎的經(jīng)濟(jì)農(nóng)作物。然后,再根據(jù)衡陽(yáng)市當(dāng)?shù)氐耐恋貤l件,利用Python框架的農(nóng)業(yè)信息共享平臺(tái)在農(nóng)作物種子網(wǎng)站上輸入需要選種的農(nóng)產(chǎn)品,利用Python框架的農(nóng)業(yè)信息共享平臺(tái)的強(qiáng)大功能,選擇最優(yōu)質(zhì)最便宜的種子來(lái)進(jìn)行培育,這樣,既提高了選擇農(nóng)作物品種效率,也適應(yīng)了市場(chǎng)經(jīng)濟(jì)選擇的結(jié)果,對(duì)增收有很大的促進(jìn)作用,提高了農(nóng)民的收入。
(三)Python框架的農(nóng)業(yè)信息共享平臺(tái)在農(nóng)業(yè)技術(shù)上的運(yùn)用
衡陽(yáng)市農(nóng)民可以利用Python框架的農(nóng)業(yè)信息共享平臺(tái)對(duì)農(nóng)作物的專業(yè)技術(shù)進(jìn)行專業(yè)篩選。選擇全國(guó)農(nóng)作物技術(shù)指導(dǎo)網(wǎng)站,輸入農(nóng)作物需要的關(guān)鍵性技術(shù),然后進(jìn)行有選擇性的下載、學(xué)習(xí)。不但可以提高效率,也可以將下載來(lái)的農(nóng)作物的專業(yè)技術(shù)保存好,以備不時(shí)之需。
(四)Python框架的農(nóng)業(yè)信息共享平臺(tái)在企業(yè)之間的運(yùn)用
2018年,衡陽(yáng)市新增各類新型農(nóng)民合作社71家,各類新型農(nóng)民合作社共計(jì)4217家。全市共有農(nóng)產(chǎn)品產(chǎn)加銷一體化服務(wù)企業(yè)2336家,農(nóng)產(chǎn)品加工企業(yè)427家,實(shí)現(xiàn)農(nóng)業(yè)產(chǎn)值330.36億元。
Python框架的農(nóng)業(yè)信息共享平臺(tái)可以在企業(yè)之間建立一個(gè)交流的平臺(tái),通過(guò)企業(yè)之間的相互交流,促進(jìn)企業(yè)之間相互學(xué)習(xí)。同時(shí),由于有Python框架的農(nóng)業(yè)信息共享平臺(tái),可以有效的避免企業(yè)之間的同品質(zhì)農(nóng)產(chǎn)品之間的惡性競(jìng)爭(zhēng),緩解企業(yè)之間的關(guān)系,形成一個(gè)良性循環(huán)的農(nóng)業(yè)產(chǎn)業(yè)園。
[基金項(xiàng)目:湖南工學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目《基于Python框架的衡陽(yáng)市農(nóng)業(yè)信息共享平臺(tái)研究》(CX2019066)。]
參考文獻(xiàn):
[1] 周快快.基于Web的長(zhǎng)沙縣農(nóng)業(yè)信息共享平臺(tái)研究[D].中南林業(yè)科技大學(xué)碩士論文,2019.
[2] 陳政,崔若男,周天予,劉會(huì)平,羅曉霞.河北省交通與農(nóng)業(yè)現(xiàn)代化耦合協(xié)調(diào)性研究[J].經(jīng)濟(jì)地理,2020.40(3):152-159.
[3] 李喬宇,尚明華,王富軍,等.基于Scrapy的農(nóng)業(yè)網(wǎng)絡(luò)數(shù)據(jù)爬取[J].山東農(nóng)業(yè)科學(xué),2018,50(1):142-147.
[4] 吳霏.分布式微信公眾平臺(tái)爬蟲系統(tǒng)的研究與應(yīng)用[D].南華大學(xué)碩士學(xué)位論文,2015.
(作者單位:1.三峽大學(xué)經(jīng)濟(jì)與管理學(xué)院 湖北宜昌 443002;2.湖南工學(xué)院計(jì)算機(jī)與信息科學(xué)院 湖南衡陽(yáng) 421002;3.長(zhǎng)沙衛(wèi)生職業(yè)學(xué)院信息中心 湖南長(zhǎng)沙 410000)
[作者簡(jiǎn)介:第一作者,謝樹仁(1994—),男,湖南常寧人,三峽大學(xué)經(jīng)濟(jì)與管理學(xué)院研究生,研究方向:人力資源;第二作者,鄧凱成(1998—)男,湖南永州人,軟件工程專業(yè),湖南工學(xué)院計(jì)算機(jī)與信息科學(xué)學(xué)院在讀學(xué)士;通訊作者,喻琨(1980—),男,湖南長(zhǎng)沙人,長(zhǎng)沙衛(wèi)生職業(yè)學(xué)院信息中心主任,實(shí)驗(yàn)師職稱,主要從事教育信息化;通訊作者:鄧凱成(1998—),男,湖南永州人,軟件工程專業(yè),湖南工學(xué)院計(jì)算機(jī)與信息科學(xué)學(xué)院在讀學(xué)士;第四作者,陳政(1988—),男,湖南常寧人,信息工程專業(yè),湖南工學(xué)院計(jì)算機(jī)與信息科學(xué)學(xué)院講師、碩士,主要從事信息工程管理研究。]
(責(zé)編:若佳)