1. 程式人生 > >結對第2次作業

結對第2次作業

blog char bee 代碼規範 soft cto face per ram

作業博客鏈接

隊友博客鏈接

分工:

隊友:爬蟲、博客


ME:C++、查找相關資料

PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 20 30
? Estimate ? 估計這個任務需要多少時間 20 30
Development 開發 900 1500
? Analysis ? 需求分析 (包括學習新技術) 40 60
? Design Spec ? 生成設計文檔 20 30
? Design Review ? 設計復審 20 15
? Coding Standard ? 代碼規範 (為目前的開發制定合適的規範) 20 30
? Design ? 具體設計 70 130
? Coding ? 具體編碼 400 700
? Code Review ? 代碼復審 40 40
? Test ? 測試(自我測試,修改代碼,提交修改) 30 30
Reporting 報告 60 60
? Test Repor ? 測試報告 30 20
? Size Measurement ? 計算工作量 15 20
? Postmortem & Process Improvement Plan ? 事後總結, 並提出過程改進計劃 40 60
. 合計 825 1255

解題思路描述與設計實現說明

新增功能:

1.爬取網頁論文信息

使用Python爬取網頁的信息,用正則式匹配論文標題和摘要的代碼,爬取相關信息至result.txt

2.自定義輸入輸出文件

int main(int argc, const char* argv[])
for (int i = 1; i < argc; i++)

輸入文件前面有-i,輸出文件前面有-o所以只要在循環分別判斷-i,-o即可實現自定義輸入輸出文件。

3.加權重的詞頻統計

將Title和Abstract分別放入兩個map(存放單詞和出現次數)中,在統計時對提取的單詞就可按不同的權重計算放入一個新的map(存放單詞和權重值)當中。

4.詞組詞頻統計

查找符合的詞組,采用雙重循環方式,在外圍循環中找到符合的單詞,在內從循環查找出符合的詞組。題目要求不能跨越title和abstract,所以就分開識別統計。

5.自定義詞頻統計輸出

 int main(int argc, const char* argv[])
  for (int i = 1; i < argc; i++)

在循環中判斷是否出現-n,用一個循環將已經排好順序的單詞輸出即可

6.多參數的混合使用

  int main(int argc, const char* argv[])
 for (int i = 1; i < argc; i++)
在循環中判斷出現相應的參數是做相應的操作,未出現則采用默認輸出方式
 

舊功能:

1.字符數統計

2.單詞數統計

3.有效行數統計

4.單詞出現頻率統計

  • 爬蟲使用
    使用Python爬蟲爬取網頁信息

部分爬取結果

 0
Title: Embodied Question Answering
Abstract: We present a new AI task -- Embodied ...
1
Title: Learning by Asking Questions
Abstract: We introduce an interactive learning framework ...
2
Title: Finding Tiny Faces in the Wild With Generative Adversarial Network
Abstract: Face detection techniques have been developed for ...
3
Title: Learning Face Age Progression: A Pyramid Architecture of GANs
Abstract: The two underlying requirements of face age progress...
  • 代碼組織與內部實現設計(類圖)
  • 說明算法的關鍵與關鍵實現部分流程圖

關鍵代碼解釋

 int main(int argc, const char* argv[])
{

    for (int i = 1; i < argc; i++)
    {
        ifstream file;
        if (argv[i] == "-i")
        {
            file.open(argv[i], ios::in);
            if (!file) {
                cout << "無法打開文件\n";
                return -1;
            }
            file.close();
            string mInputFileName = argv[i];
            int sum = CountChar(mInputFileName);
            int wordnum = CountWordnumber();
            int lines = CountLines(mInputFileName);
            TenFrequency();
        }
        if (argv[i] == "-o")
        {
           ofstream out(argv[i+1]);
           out << "characters: " << sum << endl;
           out << "words: " << wordnum << endl;
          out << "lines: " << lines << endl;
          int size = 10;
           if (word.size() < 10) 
             {
                size = word.size();
             }
           vector<pair<string, int>>::iterator vit;
           for (vit = word.begin(); vit != word.begin() + size; vit++) 
            {
              out << "<"<<vit->first <<">:"<< " " <<  
              }
            out.close();
        }
    
    
    
    
    
}

自定義輸入輸出文件,設置參數實現自定義輸入輸出文件。

性能分析與改進

  • 描述你改進的思路
  • 展示性能分析圖和程序中消耗最大的函數

單元測試

  • 部分單元測試代碼
  • 測試的函數
  • 構造測試數據的思路

Github的代碼簽入記錄

遇到的代碼模塊異常或結對困難及解決方法

問題描述 做過哪些嘗試 是否解決 有何收獲
經常會理不清解題思路,思路會比較混亂 和隊友相互溝通,尋求隊友和同學的建議 適當解決了 解決問題前還是要先分析好問題理清思路
與隊友時間對不上 明確分工,分開同時進行 解決 不管與時間能否對上,都應該要明確分工,需要商討的部分在有限的重疊時間時討論。
還是基礎的問題... 查閱相關的博客以及文章 不能說解決了吧... 依然是好吃力啊T T

評價你的隊友

  • 值得學習的地方
    樂於學習新知識,相對我來說會比較主動,學習能力比較強,做事效率高
  • 需要改進的地方
    和我一樣會有點拖延癥.相對於其他人來說,和我一樣基礎不是很好.

學習進度條

第N周 新增代碼(行) 累計代碼(行) 本周學習耗時(小時) 累計學習耗時(小時) 重要成長
1 338 338 32 32 理清思路,學習多參數混合使用
2 94 432 12 44 對之前的代碼做補充,學習《構建之法》
3 354 786 31 75 求助隊友,解決了一些我不懂的問題

結對第2次作業