軟工第五次作業
一、博客鏈接以及Github項目地址
王錦揚的博客地址
何家健的博客鏈接
Github項目地址
具體分工
王錦揚負責解決方法思路的提供,何家健負責具體設計的實現
PSP表格
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 600分鐘 | 900分鐘 |
· Estimate | · 估計這個任務需要多少時間 | 600分鐘 | 900分鐘 |
Development | 開發 | 600分鐘 | 2040分鐘 |
· Analysis | · 需求分析 (包括學習新技術) | 30分鐘 | 50分鐘 |
· Design Spec | · 生成設計文檔 | 10分鐘 | 20分鐘 |
· Design Review | · 設計復審 | 20分鐘 | 40分鐘 |
· Coding Standard | · 代碼規範 (為目前的開發制定合適的規範) | 10分鐘 | 10分鐘 |
· Design | · 具體設計 | 140分鐘 | 200分鐘 |
· Coding | · 具體編碼 | 300分鐘 | 400分鐘 |
· Code Review | · 代碼復審 | 60分鐘 | 120分鐘 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 30分鐘 | 60分鐘 |
Reporting | 報告 | 120分鐘 | 240分鐘 |
· Test Repor | · 測試報告 | 60分鐘 | 120分鐘 |
· Size Measurement | · 計算工作量 | 30分鐘 | 60分鐘 |
· Postmortem & Process Improvement Plan | · 事後總結, 並提出過程改進計劃 | 30分鐘 | 60分鐘 |
合計 | 1320分鐘 | 2880分鐘 |
解題思路描述與設計實現說明
1.爬蟲使用
本次作業中論文的爬取我們是用爬蟲工具“後羿采集器”來從網頁上爬取論文題目以及摘要,下圖是爬取論文信息的過程
但是爬取下來之後,雖然可以導出為txt,但是卻會是不符合要求的,實例如下:
所以後來就直接導出為excle:
經過手動排版,最後轉換為符合條件的txt形式。
代碼組織與內部實現設計
說明算法的關鍵與關鍵實現部分流程圖
此用來判斷哪一些單詞可以構成詞組
···
if (mm == true)
{
for (i = num - linewordsize; i < num; i++)
{
if (num - i >= m)
{
if (word[i].flag1 == 1)
{
string temp = word[i].content;
for (j = 1; j <= m - 1; j++)
{
if (word[i + j].flag1 == 1)
word[i].content = word[i].content + " " + word[i + j].content;
else if (word[i + j].flag1 == 0)
{
i = i + j; word[i].content = temp; break;
}
if (j == m - 1) word[i].flag1 = 2;
}
}
}
else break;
}
}
···
附加題設計與展示
無
關鍵代碼解釋
if (mm == true)
{
for (i = num - linewordsize; i < num; i++)
{
if (num - i >= m)
{
if (word[i].flag1 == 1)//判斷是否為合法單詞
{
string temp = word[i].content;
for (j = 1; j <= m - 1; j++)
{
if (word[i + j].flag1 == 1)//如果為合法單詞就拼成詞組
word[i].content = word[i].content + " " + word[i + j].content;
else if (word[i + j].flag1 == 0)//如果不是合法單詞就break,繼續遍歷
{
i = i + j; word[i].content = temp; break;
}
if (j == m - 1) word[i].flag1 = 2;//如果構成合法詞組,對詞組的第一個合法單詞做上標記
}
}
}
else break;
}
}
性能分析與改進
描述你改進的思路
用數組儲存單詞難以判斷需要多少空間,導致有可能在測試樣例巨大的情況下,導致系統的奔潰,而且運行速度回受到極大的影響,用鏈表可能會好一點
展示性能分析圖和程序中消耗最大的函數
消耗最大的還是main函數
單元測試
//判斷不同情況下的不同權值
if (linewordsize >= 1)
{
linenumber++;
}
if (d.find("title: ") != string::npos)
{
count = count - 7;
}
if (d.find("abstract: ") != string::npos)
{
count = count - 10;
}
if (d[0] >= 48 && d[0] <= 57) { count = count - d.size()-1;}
if ((d[0] >= 48 && d[0] <= 57) && (linenumber >= 2)) { count = count - 2; }
貼出Github的代碼簽入記錄
遇到的代碼模塊異常或結對困難及解決方法
問題描述
最先是數組的問題,一遇到文章多的情況基本上就會奔潰,然後是如何判斷詞組
做過哪些嘗試
想改為鏈表,但因為代碼比較混亂所以最終只是改變了算法的結構,判斷詞組用了遍歷的方法跟布爾參數同時使用
是否解決
均已解決
有何收獲
多做思考,多做嘗試
評價你的隊友
值得學習的地方
很會刻苦,願意花很多時間在作業上面,對自己的不足會很快意識到並及時解決
需要改進的地方
並沒有
學習進度條
第N周 | 新增代碼(行) | 累計代碼(行) | 本周學習耗時(小時 ) | 累計學習耗時(小時) | 重要成長 |
---|---|---|---|---|---|
1 | 0 | 0 | 18.5 | 18.5 | 熟悉Axure的使用方法、對軟件的原型設計有了更深刻的理解 |
2 | 286 | 286 | 48 | 66.5 | 學會了爬蟲工具的使用,對C++string等類的功能有了更深的認識 |
... |
軟工第五次作業