主頁 > 後端開發 > 基于flask實作疫情可視化監控系統

基于flask實作疫情可視化監控系統

2021-11-07 08:29:36 後端開發

目錄

  • 第一章 緒論
    • 1.1 課題背景及意義
  • 第二章 相關理論及技術
    • 2.1 flask框架概述
    • 2.2 Layui框架概述
    • 2.3 開發工具
      • 2.3.1 MySQL資料庫技術
      • 2.3.2 pycharm技術
      • 2.3.3 .爬蟲技術
      • 2.3.4 Echarts技術
    • 3.1 業務流程調研及分析
    • 3.2 系統功能需求分析
      • 3.2.1 系統安全需求
      • 3.2.2 用戶角色定義
    • 3.3 解決方案的提出與分析
    • 3.4 系統非功能性需求
  • 第四章 系統設計
    • 4.1 系統技術架構設計
      • 4.1.1 總體架構
      • 4.1.2 軟體邏輯結構
    • 4.2 系統功能結構設計
      • 4.2.1 爬蟲功能模塊設計
      • 4.2.3 登錄模塊設計
      • 4.2.4 展示模塊設計
      • 4.2.5 后臺模塊設計
    • 4.3 資料庫設計
      • 4.3.1 主要E—R圖
      • 4.3.2 主要資料庫表
  • 第五章 系統實作
    • 5.1 系統運行環境
    • 5.2 主要功能實作
      • 5.2.1 爬蟲功能實作
      • 5.2.2 登錄模塊實作
      • 5.2.3 展示模塊實作
      • 5.2.4 后臺模塊實作
  • 第六章 系統測驗
    • 6.1 測驗方案與測驗目標
    • 6.2 系統功能測驗
      • 6.2.1 登錄功能測驗
      • 6.2.2 資料庫連接功能測驗
      • 6.2.3 爬蟲功能測驗
      • 6.2.4 資料展示功能測驗
    • 6.3 測驗結論
  • 第七章 總結與展望
    • 7.1 總結
    • 7.2 展望
  • 致謝

第一章 緒論

1.1 課題背景及意義

我們身處一個資訊極度豐富的時代,資訊以更多的維度、更豐富的形態充滿著我們的生活,潛移默化地影響著我們的決策,

全球Covid-19大危機影響我們的生活,我們的出行、交流、教育、經濟等都發生了巨大的變化,全球疫情大資料可視化分析與展示,可用于社會各界接入疫情資料,感知疫情相關情況的實時互動式態勢,是重要的疫情分析、防控決策依據,
對于同學們而言,導師將在專案中帶領大家掌握一門編程語言,探索揭秘大資料分析原理,資料科學不僅是未來科研、職業發展的重要基礎,更有助于鍛煉邏輯能力,培養謹慎、客觀、獨立的思維習慣,

第二章 相關理論及技術

下面將介紹本文所涉及的相關技術與理論的內容,將主要介紹flask框架,開發工具以及系統的機構模式,SQL的內容,

2.1 flask框架概述

Flask是一個使用 Python 撰寫的輕量級 Web 應用框架,其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 ,Flask使用 BSD 授權,Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension 增加其他功能,Flask沒有默認使用的資料庫

2.2 Layui框架概述

layui(諧音:類 UI) 是一套開源的 Web UI 解決方案,采用自身經典的模塊化規范,并遵循原生 HTML/CSS/JS 的開發方式,常適合網頁界面的快速開發,layui 區別于那些基于MVVM 底層的前端框架,它更多是面向后端開發者,無需涉足前端各種工具,只需面對瀏覽器本身,讓一切所需要的元素與互動,

2.3 開發工具

2.3.1 MySQL資料庫技術

MYSQL資料庫. MySQL 是一種 開放源代碼 的關系型 資料庫管理 系統(RDBMS),使用最常用的資料庫管理語言-- 結構化查詢語言 (SQL)進行資料庫管理,. MySQL是開放源代碼的,因此任何人都可以在General Public License的許可下下載并根據個性化的 需要 對其進行修改,. MySQL因為其速度、可靠性和適應性而備受關注,. 大多數人都認為在不需要 事務 化處理的情況下,MySQL是管理內容最好的選擇,
MySQL 是一款安全、跨平臺、高效的,并與 PHP、Java 等主流編程語言緊密結合的資料庫系統,該資料庫系統是由瑞典的 MySQL AB 公司開發、發布并支持,由 MySQL 的初始開發人員 David Axmark 和 Michael Monty Widenius 于 1995 年建立的,

MySQL 的象征符號是一只名為 Sakila 的海豚,代表著 MySQL 資料庫的速度、能力、精確和優秀本質,目前 MySQL 被廣泛地應用在 Internet 上的中小型網站中,由于其體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,使得很多公司都采用 MySQL 資料庫以降低成本,

MySQL 資料庫可以稱得上是目前運行速度最快的 SQL 語言資料庫之一,除了具有許多其他資料庫所不具備的功能外,MySQL 資料庫還是一種完全免費的產品,用戶可以直接通過網路下載 MySQL 資料庫,而不必支付任何費用,

2.3.2 pycharm技術

PyCharm是一種Python IDE(Integrated Development Environment,集成開發環境),帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如除錯、語法高亮、專案管理、代碼跳轉、智能提示、自動完成、單元測驗、版本控制,此外,該IDE提供了一些高級功能,以用于支持Django框架下的專業Web開發,

2.3.3 .爬蟲技術

網路爬蟲(又稱為網頁蜘蛛,網路機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網資訊的程式或者腳本,另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲,
爬蟲:一段自動抓取互聯網資訊的程式,從互聯網上抓取對于我們有價值的資訊Python 爬蟲架構主要由五個部分組成,分別是調度器、URL管理器、網頁下載器、網頁決議器、應用程式(爬取的有價值資料),

調度器:相當于一臺電腦的CPU,主要負責調度URL管理器、下載器、決議器之間的協調作業,
URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重復抓取URL和回圈抓取URL,實作URL管理器主要用三種方式,通過記憶體、資料庫、快取資料庫來實作,
網頁下載器:通過傳入一個URL地址來下載網頁,將網頁轉換成一個字串,網頁下載器有urllib2(Python官方基礎模塊)包括需要登錄、代理、和cookie,requests(第三方包)
網頁決議器:將一個網頁字串進行決議,可以按照我們的要求來提取出我們有用的資訊,也可以根據DOM樹的決議方式來決議,網頁決議器有正則運算式(直觀,將網頁轉成字串通過模糊匹配的方式來提取有價值的資訊,當檔案比較復雜的時候,該方法提取資料的時候就會非常的困難)、html.parser(Python自帶的)、beautifulsoup(第三方插件,可以使用Python自帶的html.parser進行決議,也可以使用lxml進行決議,相對于其他幾種來說要強大一些)、lxml(第三方插件,可以決議 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 樹的方式進行決議的,
應用程式:就是從網頁中提取的有用資料組成的一個應用,

2.3.4 Echarts技術

ECharts 是一個使用 JavaScript 實作的開源可視化庫,涵蓋各行業圖表,滿足各種需求,它遵循 Apache-2.0 開源協議,免費商用,且兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多種設備,可隨時隨地任性展示,
百度最早內部圖表組件使用的是 Flash 技術,后來隨著 HTML5 的崛起,來自 Safari 的 Canvas 逐漸得到了廣泛支持,加上 Apple 在 iOS 中明確不支持 Flash,使得 Flash 的技術前景開始黯淡,

于是百度商業前端團隊就嘗試基于 Canvas 來開發圖表庫 ECharts,比起 SVG/VML,Canvas 雖然除錯麻煩,但在大量資料點下性能更好,且早期開發者很快的補齊了大量常用圖表,加上中文檔案的優勢,ECharts 很快在國內流行起來,它至今依然是國內最火的圖表庫,

2017 年陸奇加入百度后大力推廣開源,ECharts 也在 2018 年進入 Apache 范訓器,從此ECharts開始在國外受到關注,
第三章 系統需求分析
系統的需求分析作為系統設計、系統實作的基礎內容,要求本論文與系統的
用戶的進行調研作業,掌握對系統的功能與性能需求方面的體系知識,并且需要
本論文把這些知識進行細化、分解,建立系統作業檔案,此項作業被視為系統實
施階段的推理內容,涉及學生成績管理作業的實際問題與系統功能、性能,目的
在于使本論文加強對系統了解,然后付出實際作業,并把掌握的需求由書面的方
式體現出來,來輔助系統的研發作業,下面將從業務流程調研與分析,系統功能
需求分析,系統解決方案的提出與分析與系統非功能需求四個方面進行系統需求
分析,

3.1 業務流程調研及分析

2019年在武漢爆發的新型冠狀病毒肺炎(國家衛健委簡稱NCP)傳播迅猛,已被世界衛生組織(WHO)定為“國際關注的突發公共衛生事件”,對疫情的控制,自1月24日武漢宣布封城之后,各個省市也陸續通過啟動啟動重大突發公共衛生事件一級回應來控制人口流動;同時,各省市醫療隊伍馳援武漢,武漢的防控措施也急速加強;但全國疫情,特別是湖北省的狀況依然讓人揪心,公眾非常關心疫情的發展趨勢,期待“拐點”的出現;疫情防控部門希望不斷總結經驗教訓,評估現有措施的有效性,該疫情的發展成為了涉及到我國政治經濟民生的一件大事,
  
  此次的病毒到底如何從武漢向外傳播?不同省市疫情的發展呈現怎樣的差別?封城、社區化隔離等一系列措施對級訓疾病傳播起到了多大的作用;更為重要的是,拐點何時出現?
  
我們的報告首先從已有資料的可視化來展示疫情傳播特點,然后通過建立傳染病動力學模型,評估疫情防控措施,提出建議并預警,同時預測疫情疾病走勢,給疫情防控決策和大眾行為作為參考,
圖 3.1  業務流程
圖 3.1 業務流程

3.2 系統功能需求分析

3.2.1 系統安全需求

基于資料安全和保密需要,設定大屏密碼登錄保護;參觀人員必須輸入管理員賬號才能進行訪問,
圖片 3.2.1 系統安全需求

圖片 3.2.1 系統安全需求

3.2.2 用戶角色定義

通過對與系統的訪問,用戶可以查看后臺資料,啟動爬蟲,修改表格資料,以及訪問疫情大資料看板,
圖片 3.2.2用戶角色定義

圖片 3.2.2用戶角色定義

3.3 解決方案的提出與分析

首先,需要先簡單澄清下資料可視化的基本概念,資料可視化,實質上是把一些概要資訊(資料、關鍵內容),并結合動靜態的影像視頻等形式進行展示,從而清晰傳遞核心資訊,較為注重視覺層面的觸達,

所以我們需要在資料之中挖掘一些重要的價值資訊,并以一個可觀的方式呈現,而“重要”的定義是十分明顯的,核心資料、用戶感興趣、有決策意義,都可稱之為重要,
根據馬斯洛五層次需求理論,那么資料可視化在其中屬于什么層次的需求?受疫情影響,生命安全成了最重要的社會需求,那么滿足大眾對這方面的廣泛需求,推出這樣的資料可視化產品是十分有必要,滿足用戶對疫情情況、資訊資訊、醫療資訊等方面的獲取,從而保障自己基本的需求,初始,丁香醫生率先推出一個H5的可視化頁面,匯總披露病例資料,隨后,一些大廠也開始陸續推出,包括頭條、騰訊等等,

而為什么大家都紛紛推出這樣的資料服務,從戰略層來說:一是做好企業責任,滿足用戶的知情需求;其二是滿足自己的平臺用戶,并吸引流量,這都是拉新、促活的寶貴方式,而展示的資訊,主要包括每日的新增、累計病例數,各地區的病例分布,以及疫情新聞、醫學知識等方面的內容,
價值

用戶:主要滿足3類用戶:大眾用戶、政企用戶和患者用戶,其中主要是前2者,大眾用戶是指像我們普遍受此前疫情影響生活、作業等方面的大眾群體,政企用戶是指政府和企業機構,同樣受此次疫情影響,對機構的運作肯定也是有影響的,他們需要基于此做合適的決策,保障企業和員工的安全,患者用戶是指受此次疫情傳播切身影響到的用戶,包括確診、疑似、接觸、被動隔離等,這類用戶對醫學資訊的獲取會更為迫切,
需求:面對3類不同的用戶,主要是滿足2大類需求,分布是資訊資訊和醫療資訊的獲取,其中資訊資訊包括疫情資訊、政府資訊、權威報道等,醫療資訊包括醫學知識、醫院資訊、醫學服務等,
而接下來,也將依據用戶體驗五要素中的范圍層、框架層、表現層,分別對這個疫情資料可視化的產品服務進行分析,
范圍層的定義是決定這樣的產品服務需要提供什么范圍內的功能服務,什么是不做的,以及要做的資料指標,哪些是關鍵的,哪些是次要的,所以我們可以羅列一下這樣資料可視化產品,基于用戶的需求是需要準備什么樣的資料指標,
從中可以看出,大致可以劃分兩類關鍵資料:一個是病例的資料,一個是輔助性的資料,我們需要從中挑出其適合展示同時也是用戶需要關心的資料,

通常做這種可視化產品,總結性的資料是十分關鍵的,而基于用戶的關注點,每日新增、累計,就是其中的關鍵,

另外,基于“時間”和“地區”,代表了資料的“屬性”,而屬性則反應了這個資料可以以什么樣的特點進行展現,而“時間”和“地區”是,最適合以資料趨勢和資料分布的兩種主要資料可視化表達形式,
框架層的定義是指根據要做的功能范圍,應該確定如何正確布局和設計,可以簡單理解為PPT的排版一樣,以什么樣的方式來排列展現這些元素,
從資料指標來看,確診、疑似、治愈、死亡這4個是關鍵指標,而累計要較新增重要些,
從時間和地域上看,中國整體資料、各省市資料、全球各國資料這3類為關鍵指標,而由于目標用戶主要為國內廣大用戶,那么按照優先級排序應以全國到各省市,再到全球各國,這樣的順序排列,
大致的布局是已經清晰了,那么接下來就需要基于資料型別采用合理的可視化展示形式,

前面也提過,由于是時間和地區下的各類資料,基于這樣的屬性,是可以做趨勢、地域、串列等分布的展示方式,支持趨勢的圖形則主要為折線、柱狀圖,支持地域分布型別則為地圖,而串列則為常規的類報表方式等,

其中,由于時間跨度較長和地區明細較多,如果使用柱狀圖,則會顯得橫軸較長,所以在有限的手機螢屏尺寸下,是不適宜展示的,

趨勢:由于時間跨度較長和地區明細較多,如果使用柱狀圖,則會顯得橫軸較長,所以在有限的手機螢屏尺寸下,是不適宜展示的,
地圖:地圖的可視化有很多,比如像基礎的echats組件,就支持各類2D、3D圖形,但是在這里我們需要考慮的是,用戶主要打開的應用設備是手機,那么手機的設備性能一定程度上限制了可視化的效果呈現,先忽略開發成本,過于酷炫的效果,會導致頁面加載、渲染十分久,這在體驗上十分不劃算的,所以在這里,更傾向于采用粗一些的2D省級行政地圖形式,開發周期短,且滿足最基本需求,

3.4 系統非功能性需求

一. 安全需求
需要有登錄模塊,防止用戶因為操作失誤而出現資料庫誤刪,所以需要設計登錄模塊,只有管理員賬戶才可以登陸后臺
二. 資料管理需求
選擇資料,需確保資料的準確性、穩定性和易讀性;一個理想的可視化設計流程,需要經歷“資料指標的范圍篩選、頁面的布局抉擇、可視化的視覺設計“等關鍵步驟,
三. 美觀需求
資料可視化的布局本質上就是講好一個“故事”,所以是故事就要有先后順序、遞進關系;資料可視化的核心,是需要明確展示的目的和主題,同時需要分清主要和次要關鍵資訊;
四. 可擴展需求
資料的內涵和屬性確定了可適用的展示方式,比如地理資訊適用使用地圖,占比分布適宜使用餅狀圖等;進行可視化設計前,需要了解主要用戶使用的設備型別,以及開發的主程式,切勿過于追求視覺效果,畢竟設備性能之間、APP和手機網頁之間,都是有較大的性能差別的;

五. 資料需求
視覺是資料可視化的一大利器,善用有利于合理化的展示,其中圖表的設計、色彩的搭配至關重要,資料的羅列展示要整齊劃一,一般遵循從大到小、從外到里的原則,每個元素組件,兼顧資料及資料之間背后的邏輯、關聯關系;

第四章 系統設計

4.1 系統技術架構設計

4.1.1 總體架構

作為當前主流的系統開發模式–B/S 模式,此模塊中的業務層被劃分為:客戶層、表示層、業務邏輯層以及資料層,
B/S 模式(Browser / Server 模式)的突出特點在于,在不安裝系統軟體的情況下,用戶通過系統就能夠實作相應的辦公操作,而實作的前提是需要在客戶端安裝 web 瀏覽器,這樣的有效結合具備了系統的運行條件,從而能夠大大的簡化客戶端的作業負擔,能夠有效提升系統的運轉速度,
綜上所述,本文的系統則采用了分層的設計模式對系統進行設計,下圖
即為系統的總體架構圖設計,
客戶層:即為需要安裝 Web 瀏覽器的客戶端位置,用戶在該層實作各自的功
表示層:即是為疫情實時監控系統為用戶提供疫情資料監控的功能操作后顯示出來的操作界面,系統用戶可以在該層的操作界面中輸入要查詢管
理疫情資訊以及相關的內容,能夠實作對疫情資訊的錄入、維護以
及資訊的查詢操作等管理功能,
業務邏輯層與資料層:該層主要負責提供資料資訊的交換以及共享功能,能夠對不同資料格式以及資訊實作共享和交換,
在這里插入圖片描述

4.1.2 軟體邏輯結構

本文的系統在軟體邏輯架構的設計作業上采用的是輕量級 flask 框架,該框架是基于 MVC 模式的一種架構圖 4-2 為本文系統的軟體邏輯架構示意圖,
在 flask 框架技術中,wsgi 具有控制器的功能,而 werkzeug則是用來充當系統的控制模型的角色,具體實作的程序為:當用戶提出操作請求之后,第一步會由 flask服務器負責接收用戶發出的操作請求的資訊,在將
此資訊請求傳送到控制器 wsgi 中,wsgi 來負責接收操作指令,
然后從資料庫 My SQL 中找到的對應資訊,之后再將資料訪問結果回傳給jiajie渲染的視圖呈現給用戶,

在這里插入圖片描述

4.2 系統功能結構設計

疫情實時監控管理系統中,從系統用戶操作需求的角度,本論文可以將系統的功能劃分為四大子系統,它們分別是登錄系統、爬蟲系統、資料連接系統和展示系統,下面本文給出了系統的功能架構所示,
登錄系統:Flask-Login 和其他 Flask 組件并沒有太大區別,有必要開始之前了解下用戶登錄的步驟:
1 登錄:用戶提供登錄憑證(如用戶名和密碼)提交給服務器
2 建立會話:服務器驗證用戶提供的憑證,如果通過驗證,則建立會話( Session ),并回傳給用戶一個會話號( Session id )
3 驗證:用戶在后續的互動中提供會話號,服務器將根據會話號( Session id )確定用戶是否有效
4 登出:當用戶不再與服務器互動時,注銷與服務器建立的會話
依據以上步驟,我們設計一個應用場景,作為實作:

提供一個主頁,需要登錄才能訪問
如果沒有登錄,跳轉到登錄頁面,登錄成功再跳回
登錄成功后,可以點擊登出退出登錄
在登錄頁面提供注冊連接,點擊后跳轉到注冊頁面
注冊完成后,跳轉到登錄頁面
爬蟲系統:爬取騰訊疫情資料,并且對資料進行資料的清洗和結構化處理
展示系統:用于從資料庫中調取資料,按照一定的資料結構采用echarts在web端進行資料的展示
書記庫連接系統:對資料庫進行連接,并且對于資料庫的增刪改查操作進行封裝,并且在web端進行集成系結,

4.2.1 爬蟲功能模塊設計

Selenium是一個用電腦模擬人操作瀏覽器網頁,可以實作自動化爬蟲,
瀏覽器為Firefox,驅動為geckodriver.( 需要把瀏覽器驅動放入系統路徑中,或者直接告知selenuim的驅動路徑)
爬取的url地址:
url1 = “https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5”
url2 = “https://view.inews.qq.com/g2/getOnsInfo?name=disease_other”
這兩個地址就是騰訊新聞網的資料介面,已經存盤json資料型別,打開網址就可以發現網站的鍵值對資料格式,這里采用selenium來模擬瀏覽器爬取網頁,再把保存下來的資料進行格式化清理,保存至MySQL資料庫對應的表格里,對于今日熱搜資料也是一樣模擬瀏覽器進行打開網頁,但是和上面不同的地方在于資料并不是可以直接拿來用的json格式資料,而是需要我們用xpath來選擇我們需要的資料,再把資料保存在MySQL表中,
4.2.2 資料庫連接模塊設計
Python連接資料庫用pymysql連接mysql資料庫,首先需要匯入pymysql模塊,
查詢操作:
在這里插入圖片描述

插入操作:
在這里插入圖片描述

更新操作:
在這里插入圖片描述

洗掉操作:
在這里插入圖片描述

4.2.3 登錄模塊設計

     存在用戶登錄的情況,不存在用戶需要完成注冊才能登錄,注冊功能和登錄很類似,頁面上多了密碼確認欄位,并且需要驗證兩次輸入的密碼是否一致,后臺邏輯是:如果用戶不存在,且通過檢驗,將用戶資料保存到 USERS 串列中,跳轉到 login 頁面,

在這里插入圖片描述

實體化方法接受一個用戶記錄,即 USERS 串列中的一個元素,用來初始化成員變數
get_id 方法回傳用戶實體的 ID,這是必須實作的,不然 Flask-Login 將無法判斷用戶是否被驗證
get 是個靜態方法,即可以通過類之間呼叫,是為了在獲取驗證后的用戶實體時用的,必須接受引數 ID,回傳 ID 所以對應的用戶實體
verify_password 方法接受一個明文密碼,與用戶實體中的密碼做校驗,將被用在用戶驗證的判斷邏輯中

4.2.4 展示模塊設計

展示模塊分為前后端,前端界面由和html+js+css寫成,后端加入業務邏輯代碼,由flask分發路由,由工具類連接資料庫并提取資料展示到前端界面,具體前端界面細節設計如下圖:
在這里插入圖片描述

4.2.5 后臺模塊設計

后臺分為前后端,其中前端采用layui框架快速構建后臺系統,后端則是使用flask分發路由進行業務邏輯設計,具體設計如圖:
在這里插入圖片描述

4.3 資料庫設計

這一部分內容的設計一般是在對系統進行概念的設計作業中,將用戶的視角
中的資料資訊以一種邏輯的形式表現出來,而主要表現形式是通過 E-R 圖來展現
的,它包含了是三個部分:即物體、屬性以及它們之間的關系

4.3.1 主要E—R圖

在這里插入圖片描述

4.3.2 主要資料庫表

在疫情可視化系統中,包含了許多張表,本論文從中選擇四張表,用 sys_user來保存管理員登陸賬戶,用details表來保存疫情資料細節表,用history表來保存歷史疫情資料,用hotsearch表來保存今日熱搜資料,
1. sys_user表:在此表中,對登錄用戶的管理員賬號進行存盤,此類資訊的欄位名,型別,代碼和長度,見下表4-1sys_user表:
在這里插入圖片描述
在這里插入圖片描述

表4-1sys_user
序號 欄位的名稱 代碼 型別 字符長度
1 管理員編號 id int auto_increment
2 管理員名稱 username char 20
3 管理員密碼 password char 20

2. details表:在此表中,對疫情資料的細節存盤,此類資訊的欄位名,型別,代碼和長度,見下表4-2 details表:
表4-2 details
在這里插入圖片描述
在這里插入圖片描述

序號 欄位的名稱 代碼 型別 字符長度
1 資料編號 id Int(part of primary key) auto_increment
2 省 Province Varchar 15
3 市 City varchar 15
4 累計確診 Confirm Int
5 新增確診 Confirm_add Int
6 累計治愈 Heal Int
7 累計死亡 Dead Int
8 資料最后更新時間 Updata_time datatime

3. history表:在此表中,對歷史疫情資料進行存盤,此類資訊的欄位名,型別,代碼和長度,見下表4-3 history表:
在這里插入圖片描述

表4-3 history
序號 欄位的名稱 代碼 型別 字符長度
1 日期 ds datetime primary
2 累計確診 Confirm Int
3 當日新增確診 Confirm_add Int
4 剩余疑似 Suspect int
5 當日新增疑似 Suspect_add Int
6 累計治愈 Heal Int
7 當日新增治愈 Heal_add Int
8 累計死亡 Dead Int
9 當日新增死亡 Dead_add int
在這里插入圖片描述

4. hotsearch表:在此表中,對今日疫情熱搜進行存盤,此類資訊的欄位名,型別,代碼和長度,見下表4-4 hotsearch表:
在這里插入圖片描述

表4-4 hotsearch
序號 欄位的名稱 代碼 型別 字符長度
1 資料編號 id Int(part of primary key) auto_increment
2 日期 dt datetime
3 描述 Content varchar 255

在這里插入圖片描述

第五章 系統實作

完成了系統的設計作業之后,本章節將以此為基礎,將完成系統實作的內容,
本章節采用程式流程圖、代碼和螢屏截圖的方式,對學生成績管理系統的主要功
能的實作程序進行描述,在介紹的內容中,主要內容為系統主要功能模塊實作的
程序,還有系統開發環境與運行環境的說明,

5.1 系統運行環境

本系統采用 B/S 結構作為系統開發模式,系統軟體邏輯結構設計采用 flask框架技術實作 MVC 的設計模式,開發工具選用 pycharm工具,開發語言為 python語言,后臺資料庫選用易用,快速和健壯的 My Sql 資料庫管理系統,資料庫軟體為datagrip,WEB 應用服務器選用輕巧靈活的 flask,服務器作業系統采用 Windows 11,瀏覽器采用火狐瀏覽器,selenium驅動為火狐驅動,前端展示為echarts展示.

5.2 主要功能實作

在這里插入圖片描述

5.2.1 爬蟲功能實作

第三方模塊
1.json 主要功能:處理介面資料
2.requests 主要功能:獲取介面資料
3.pandas 主要功能:將資料保存為csv
4.datetime 主要功能:檔案保存時間
5.pyecahrts 主要功能:資料可視化制作地圖等 版本1.7.0
6.flask 主要功能:web展示

5.2.2 登錄模塊實作

在這里插入圖片描述在這里插入圖片描述

5.2.3 展示模塊實作

Flask是由python實作的一個web微框架,讓我們可以使用Python語言快速實作一個網站或Web服務,
在這里插入圖片描述

5.2.4 后臺模塊實作

在這里插入圖片描述

(4)后臺資料表

在這里插入圖片描述
在這里插入圖片描述

第六章 系統測驗

在本章節的內容中,本論文將通過黑盒強測驗方法,即為功強能測驗法,通過測
試強來檢測系統的功能的正確性,具體將介紹的內容涉及系統測驗方案與目標,部
分功能模塊與性能方面的測驗內容

6.1 測驗方案與測驗目標

該系統采用黑盒強測驗方法,黑盒測驗也稱功強能測驗,通過測驗來檢測每個功能是否都能正常使用,測驗在運行程式實施測驗作業,僅僅檢測程式功能是否滿足系統目標的要求可以正常進行操作,程式能否可以適當地獲取輸入數鋸而產生符合要求的輸出資料,并且保強持外部的資料(如資料庫中的資料或檔案)的整體性,“黑盒”法即是輸入資料進行測驗,將全部的需要的強輸入都作為測驗情況的條件,就能以強該種測驗方式查出程式馮中全部的錯誤
系統測驗分為功能測驗和性能測驗,功能測驗抽取幾個主要模塊去進行功能
測驗;性能測驗采用 loadRunner 工具對系統與服務器進行性能測驗,

6.2 系統功能測驗

6.2.1 登錄功能測驗

功能描述 系統登錄
用例目的 驗證改模塊可以正常從資料表中驗證用戶,實作登錄
前提條件 正確輸入登錄資訊
錄入/動作 期望的輸出/相應 實際情況 測驗結果評價
輸入正確的用戶名和密碼 登陸成功并跳轉到前端展示頁面 登陸成功并跳轉到前端展示頁面 功能正常
輸入錯誤的用戶名密碼 提示輸入的資訊有誤 提示輸入的資訊有誤 功能正常
在這里插入圖片描述

6.2.2 資料庫連接功能測驗

功能描述 資料庫連接功能
用例目的 驗證改模塊可以正常從資料表中顯示資訊,添加,修改,查詢
前提條件 正確登錄進入后臺管理頁面
錄入/動作 期望的輸出/相應 實際情況 測驗結果評價
進入前端頁面 各個表格可以正常顯示資料 表格可以顯示資料 功能正常
進入后臺頁面并查詢表格 表格資訊可以顯示 表格分頁展示 功能正常
進入后臺頁面并修改表格 表格資料發生變化 可以修改表格資料 功能正常
在這里插入圖片描述 在這里插入圖片描述

6.2.3 爬蟲功能測驗

在這里插入圖片描述

功能描述 爬蟲功能模塊
用例目的 驗證改模塊可以網路爬取資料并存盤在資料庫之中
前提條件 正確登錄進入后臺管理頁面
錄入/動作 期望的輸出/相應 實際情況 測驗結果評價
進入后臺界面點擊“啟動爬蟲” 爬蟲正常啟動 等待一段時間顯示啟動成功 功能正常
進入后臺頁面并查詢表格 表格資訊可以顯示 圖中表格資訊得到了更新 功能正常
洗掉資料表并重新啟動爬蟲 資料表從無到有 各個表格都重新展示資料 功能正常

6.2.4 資料展示功能測驗

功能描述 資料展示功能測驗
用例目的 驗證改模塊可以從資料庫提取資料并在前端界面展示
前提條件 正確登錄進入后臺管理頁面
錄入/動作 期望的輸出/相應 實際情況 測驗結果評價
進入后臺界面點擊“啟動爬蟲” 爬蟲正常啟動 等待一段時間顯示啟動成功 功能正常
進入前臺頁面 資料得到重繪 時間在跳轉,詞云圖有資料,疫情地圖和折線圖資料都得到了展示 功能正常
洗掉資料表并重新啟動爬蟲 資料表從無到有 可以看到前端界面的表格重新加載 功能正常在這里插入圖片描述

6.3 測驗結論

在系統的功能測驗中,本論文從主要功能模塊中抽出了三個模塊進行測驗,
包括登錄模塊、資料庫鏈接模塊,資料展示模塊和爬蟲模塊的測驗,
之后,該系統可以正常運行,達到了預期的要求,

第七章 總結與展望

7.1 總結

還有很多知識我們都不懂,比如有點糊里糊涂的感覺,看來,課本的知識還是不夠的,我們應該擴展自己的課外知識,多多閱讀課外的相關知識,這樣才能對flask、MySQL、Intellij IDEA、Python、Echarts更加熟悉, 在此我們要謝謝幫助我們解決難題的同學們,沒有他們的解答和熱心幫助,我們很難完成這個課設,如今科技發展迅速,而Java作為一門計算機語言類的重要課程,要學好python 是必然的,我們堅信,只要有興趣,就能學好,我們會培養好自己對Java的興趣,而且繼續保持下去,為以后的路做好鋪墊,
經過一個月的努力,疫情實時監控系統的基本功能已經實作,雖然時間很短暫,但卻是對幾年學習中理論知識和實踐相結合的一次綜合檢驗,通過這次畢業設計,收到了比以往理論課程還要大的收益,雖然由于時間倉促及團隊能力有限,系統還有很多不盡人意的地方:比如說界面不夠美觀;有些功能還不夠完善和強大;代碼的重用性不夠高;一些細節的問題還沒有解決,這些都需要平時經驗的積累和對技術的熟練掌握,希望在以后的作業學習中能有進一步的提高,
當然因團隊能力與時間的限制,系統的一些功能還存在一些不足,有待改進與完善,最后在整個程序中得到了指導老師和同學們的許多幫助,使我們順利的完成了這個系統,在這里,我們表示衷心的感謝!

7.2 展望

和python相比,老牌語言C和C++有許多細節需要我們自己處理,在處理不當的情況下會產生程式崩潰和其他很難解決的問題,Java雖說解決了前者的許多缺點,但相比之下代碼更加冗長,寫起來也有許多限制, python簡潔的語法可以讓我們寫出比靜態語言更短的程式,它的設計極大的增強了代碼的可讀性,這就可以讓我們初學者學習和記憶更加容易,也更容易修改,我希望學習這門課后可以自己用python這一語言撰寫爬蟲,爬取B站上我喜歡的UP主的視頻,這次專案設計開發為今后的學習和作業產生了積極的意義,由于還是初學者,在專案設計中還有欠缺和考慮不周的地方,

致謝

時光飛逝,一個月的學習即將劃上圓滿的句號,回憶逝去的學習光陰,
心中的感激之情溢于言表,我能夠順利的完成此階段的學習任務,與
老師、學友和朋友的關心與支持是分不開的,也離不開學校各部門的
作業人員和老師的指導與幫助,借此機會,向所有幫
助過我的人道聲真誠的感謝!
老師的嚴謹的治學風格以及豐富的學識,給我留下了深刻的印象;
老師那的高尚師德及良好的生活態度,將是我的力量源泉,
在以后的生活道路上,
也將繼續激勵著自己克服生活及學習中的困難,
此外,還要感謝我的父母,還有給我關心和支持的親人,正是他們的幫助和
支持,使我有毅力、信心完成學業,祝你們平安、健康,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/350959.html

標籤:python

上一篇:虛擬環境下的spyder安裝

下一篇:Python一小時快速入門

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more