結對作業第二次


目錄

作業基本信息

這個作業屬於哪個課程 2021春軟件工程實踐|S班 (福州大學)
這個作業要求在哪里 結對第二次作業
結對學號 221801333,221801235
這個作業的目標 頂會熱詞統計的實現
其他參考文獻 CSDN

,

GitHub

PSP表格和效能分析

PSP2.1 Personal Software Process Stages 預估耗時(分鍾) 實際耗時(分鍾)
Planning 計划 20 20
  • Estimate
  • 估計這個任務需要多少時間
  • 20 20
    Development 開發 3105 3125
  • Analysis
  • 需求分析(包括學習新技術)
  • 30 45
  • Design Spec
  • 生成設計文檔
  • 20 20
  • Design Review
  • 設計復審
  • 25 20
  • Coding Standard
  • 代碼規范(為目前的開發制定合適的規范)
  • 10 10
  • Design
  • 具體設計
  • 60 50
  • Coding
  • 具體編碼
  • 2880 2950
  • Coding Review
  • 代碼復審
  • 20 10
  • Test
  • 測試(自我測試,修改代碼,提交修改)
  • 60 20
    Reporting 報告 90 100
  • Test Repor
  • 測試報告
  • 30 30
  • Size Measurement
  • 計算工作量
  • 30 30
  • Postmortem & Process Improvement Plan
  • 事后總結,並提出過程改進計划
  • 30 40
    合計 3215 3245

    git倉庫鏈接和代碼規范鏈接

    GitHub
    代碼規范

    項目部署訪問鏈接

    功能未完成

    成品展示

    功能1:對已爬取的論文列表進行操作

    • 可對論文列表進行刪除:論文列表分頁,可直接對論文進行刪除
    • 可對論文列表進行查詢詳細信息:對論文列表模糊查詢,根據查詢內容對論文關鍵詞、摘要、發布時間等全部信息進行查詢,可根據發表日期對論文列表進行排序

    功能2:分析已爬取到的論文信息,提取top10個熱門領域或熱門研究方向

    • 形成如關鍵詞圖譜之類直觀的查看方式,點擊某個關鍵詞可展現相關的論文:關鍵詞圖譜以環形圖展示,簡潔明了,便於了解數據
    • 可對多年間、不同頂會的熱詞呈現熱度走勢對比,以動圖的形式呈現(這里將范疇限定在計算機視覺的三大頂會CVPR、ICCV、ECCV內)

    結對討論過程描述

    由於線上有時候不能及時溝通,因此我們大部分時間都為線下討論,截圖較少,因此文字總結我們的線下討論:

    • 討論前后端實現方式:由於我們學習方向都偏前端,235同學擅長前端vue的使用負責前端,333同學運用之前學習的PHP知識負責后端。
    • 數據表的討論:討論了用戶表的字段
    • 數據交互:討論如何實現vue和PHP的數據傳輸,共同討論實踐解決跨域問題,數據庫報錯問題,溝通前后端數據的傳輸方式和所用數據
    • 圖表討論:對圖表的使用進行討論,確定餅狀圖表示十大熱門領域所占比例,柱狀圖表明熱度走勢
    • 部署討論:由於都不擅長部署,討論決定GIF作為備用方法

    設計實現過程

    在確定vue和PHP來實現之后,333同學負責后端,235同學負責前端,以下是我們前端和后端的實現過程

    功能 前端 后端
    顯示論文列表 1.將傳入后端的搜索內容置為空,后端將傳輸所有論文
    2.獲取后端傳輸數據
    3.實現分頁處理
    4.通過設置控件事顯示的論文列表可根據發表日期進行排序
    5.設置論文列表顯示簡要信息,點擊后查看該論文摘要
    1.通過php遍歷存放論文json文件的文件夾,解析json文件數據
    2.對jsonString進行處理,使關鍵字去掉雙引號和大括號,以分號分隔
    3.對發布日期進行處理,因為原本的Date數據被轉化為jsonString后月份為英文,無法在轉成Date,因此通過月份數字轉化存入字符串中
    4.將處理好數據存入數據表
    5.鏈接數據庫,獲得前端傳輸的搜索內容,運用MySQL語句對論文表所有數據模糊搜索
    6.獲得符合條件的數據,將其傳到前端
    搜索功能 1.將控件獲得的搜索內容傳入后端
    2.從后端接受返回的論文信息,分頁顯示
    1.鏈接數據庫,獲得前端傳輸的搜索內容,運用MySQL語句對論文表所有數據模糊搜索
    2.獲得符合條件的數據,將其傳到前端
    刪除功能 通過控件獲得當前被刪除的論文信息,將該論文信息傳入后端 鏈接數據庫,獲得前端傳輸的論文,運用MySQL語句對論文表該論文信息進行刪除
    關鍵詞圖譜 1.學習后使用vchart進行圖表的使用
    2.獲取后端傳來的分析結果
    3.將數據放入餅狀圖中
    4.對餅狀圖進行跳轉,點擊關鍵詞后跳轉到默認該關鍵詞為搜索內容的搜索界面
    1.鏈接數據庫,獲得論文表內容
    2.遍歷論文表,保存當前論文的標題、發布時間信息
    3.對論文表內容中的關鍵詞使用分號分隔,將關鍵詞分隔后獲得的array遍歷,將之前保存的論文信息和array中的關鍵詞插入關鍵詞表
    4.設置關鍵詞表字段num初值為1,對關鍵詞表的關鍵詞字段重復出現次數進行count(*)統計,次數設置為total,以關鍵詞group,以total排序,limit 10.
    5.將十個最多的關鍵詞及其總數傳給前端
    熱度走勢 1.使用柱狀圖
    2.將后端傳輸的十組數據進行設置,使其柱狀圖變化
    1.對已知的十大關鍵詞進行不同發布時間年份統計
    2.將數據傳輸給前端
    論文表 abstract MeetingAndYear keyword releaseTime name link
    關鍵詞表 keyword name num releaseTime

    代碼說明

    生成論文表

    通過php遍歷存放論文json文件的文件夾,解析json文件數據

    $dir = "ECCV/";
    if (is_dir($dir)){
    if ($dh = opendir($dir)){
    while (($file = readdir($dh)) !== false){
      if($file!='.'&& $file!='..'){
        $path="ECCV/".$file;
        $json_string = file_get_contents($path); 
        $data = json_decode($json_string, true);// 用參數true把JSON字符串強制轉成PHP數組 
        $datas = array();//保存處理好的信息
        $i=0;
        foreach($data as $list=>$things)
    

    對jsonString進行處理,對被轉化為array的關鍵字進行處理去掉雙引號和大括號,以分號分隔

    if(is_array($things)){
    $str='';
    foreach ($things as $key => $value) 
    {
    $str .=$value.';'; 
    }
    $datas[$i]=$str;
    }
    

    對發布日期進行處理,因為原本的Date數據被轉化為jsonString后月份為英文,無法在轉成Date,因此通過月份數字轉化存入字符串中

    $find = array("January","February","March","April","May","June","July","August","September","October","November","December" );
    $rep = array("01","02","03","04","05","06","07","08","09","10","11","12");
    $number=str_ireplace($find, $rep, $things);
    $day=substr($number,0,2);//取得年份 
    $month=substr($number,3,2);//取得月份 
    $year=substr($number,6,4);//取得幾號 
    $number = $year.'-'.$month.'-'.$day; 
    $datas[$i]=$number;
    

    生成關鍵字表

    遍歷論文表,保存當前論文的標題、發布時間信息

    $name=$row["name"];
    $releaseTime=$row["releaseTime"];</pre>
    對論文表內容中的關鍵詞使用分號分隔,將關鍵詞分隔后獲得的array遍歷,將之前保存的論文信息和array中的關鍵詞插入關鍵詞表
    <pre>$matches = explode(';', $row["keyword"]);
    $matches= array_filter($matches);
    foreach($matches as $list=>$things){
    $mysqli->query("insert into keyword values('".$things."','".$name."','1','".$releaseTime."')"); 
    }
    

    熱門關鍵詞

    設置關鍵詞表字段num初值為1,對關鍵詞表的關鍵詞字段重復出現次數進行count(*)統計,次數設置為total,以關鍵詞group,以total排序,limit 10.

    $mysqli->query("select keyword,sum(num) as total from keyword group by keyword order by total DESC limit 10");
    

    對已知的十大關鍵詞進行不同發布時間年份統計

    $mysqli->query("select * from keyword where releaseTime like '%".$year[0]."%' and keyword = '".$things."'");
    

    心路歷程和收獲

    • UI設計經驗不足,echart導入失敗,圖表實現遇到困難
      • 使用vchart代替
    • 不知道如何實現json文件批量導入,並形成表
      • 嘗試了導入工具,但由於軟件限制,一次性只能導入20個json文件,只能選擇放棄這個方法
      • 使用代碼實現,在不斷百度,不斷嘗試不同方法后依然無法實現。選擇求助已完成該功能的小組,詢問實現流程后編寫代碼,不斷調試,不斷發現新的問題,終於在一次次的失敗中成功創建
    • 在前后端交互時出現跨域問題,兩個人都束手無策
      • 235同學在之前的團隊作業中遇到類似問題,在不斷修改語句,總結經驗后終於找到了解決方法,並第一時間記錄筆記,為之后的代碼實踐積累經驗
    • 前后端交互問題,兩個人對前后端交互的不太了解
      • 在溝通雙方數據設置,共同檢查語句是否出錯,探討報錯原因,一點一點解決困擾我們的交互問題
    • 部署問題
      • 我們選擇在最后完成這一步功能,如果未能實現部署,將使用演示的方式,面對來不及完成的功能,只能優先確保其他功能的實現
    上述內容都是我們這次作業所經歷的,既有遇到困難無法解決的着急和挫敗,也有通過努力克服困難的喜悅,更重要的是兩個人相互幫助,相互鼓勵,為一點一點實現的作業感到高興。同時,我們也在這次作業中不斷鞏固自己所學的知識,將遇到的問題轉化為新的知識吸收,為之后的實踐積累經驗。

    評價結對隊友

    • 221801235同學對221801333同學的評價
      • 她的學習能力很強,遇到問題總能很快解決,認真嚴謹,經常會有很不錯的想法,遇到技術問題也非常耐心,是一個很好的隊友和伙伴。
    • 221801333同學對221801235同學的評價
      • 她是一個很好的伙伴,她對vue的熟練賬務極大地促進了結對作業的完成進度,對遇到的問題會搜索解決方法后,耐心地不斷嘗試,同時總結經驗,在不斷嘗試中找到解決方法,和她合作可以使我進步。


    免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM