項目 | 內容 |
---|---|
這個做業屬於哪一個課程 | http://www.cnblogs.com/nwnu-daizh/ |
這個做業的要求在哪裏 | http://www.javashuo.com/article/p-bjcswxqf-ma.html |
課程學習目標 | 熟悉軟件開發總體流程,提高自身能力 |
本次做業在哪一個具體方面幫助咱們實現目標 | 第一次體驗一個完整的工程 |
對項目博文做業進行閱讀並進行評論,評論要點包括:博文結構、博文內容、博文結構與PSP中「任務內容」列的關係、PSP中「計劃共完成須要的時間」與「實際完成須要的時間」兩列數據的差別化分析與緣由探究。
克隆結對方項目源碼到本地機器,閱讀並測試運行代碼,結合運行結果評論程序代碼,評論要點包括:軟件結構、代碼規範、功能實現、人機交互等。
嘗試利用github中的Fork、Clone、Push、Pull request、Merge pull request對結對方倉庫中的源碼進行合做修改。html
項目 | 內容 |
---|---|
點評博客地址 | http://www.javashuo.com/article/p-kqhmcvay-q.html |
GitHub源碼地址 | https://github.com/Hanyy2019/test2 |
點評內容 | 在讀完你的博文後,首先在博文排版方面,你的結構清晰,內容明瞭,而且使用了博文簡要內容信息表,這點作的很不錯,值得我學習。在博文結構方面,模塊化的劃分讓人讀起來很舒服。在博文內容方面,你作的是英文文本詞頻統計,根據老師所給的要求,你基本實現了查詢指定單詞,查詢前K個高頻單詞,將全部單詞按字典順序輸出到文本中。可是,在繪製柱狀圖方面,你能夠再學習學習,這部分其實很簡單。博文結構與PSP中「任務內容」列的關係:你的博文結構和PSP任務內容列的關係比較緊密,基本按照PSP任務內容列的順序編寫了博文. PSP中「計劃共完成須要的時間」與「實際完成須要的時間」兩列數據的差別化分析與緣由探究:經過對比博文中計劃完成時間和實際完成時間,發現實際完成時間比計劃完成時間超出不少,看到你在下面總結了本身在PSP過程當中的困難,主要在於編程能力不強,在開發過程當中花費了較多的時間。其餘的流程花費時間基本和計劃時間差異不大,可是也超出了一些時間,多是因爲初次按照PSP流程進行軟件開發,因此對時間的把握不充分。最後我在GitHub上下載了你的源碼,編譯運行後,和博文內容貼合,代碼比較規範,基本實現了老師所要求的功能,可是柱狀圖部分沒有實現。 |
點評心得 | 經過閱讀點評別人的博文,我瞭解到了別人在編寫代碼和博文的優勢,好比結構化的設計,以及圖片大小的調整。 |
(1)實驗2要求的功能;git
(2)單詞頻數可視化柱狀圖要求是如下樣式:
(3)統計該文本行數及字符數;github
(4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);編程
(5)可處理任意用戶導入的任意英文文本;模塊化
(6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);學習
(7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;測試
(8)附加分功能:統計前10個兩個單詞組成的詞組頻率。編碼
實驗2要求的功能;設計
繪製單詞頻數可視化柱狀圖;3d
統計該文本行數及字符數;
各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
可處理任意用戶導入的任意英文文本;
人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
柱狀圖的實現
public void paint(Graphics g) { int Width = getWidth(); int Height = getHeight(); int leftMargin = 50;//柱形圖左邊界 int topMargin = 50;//柱形圖上邊界 Graphics2D g2 = (Graphics2D) g; int ruler = Height-topMargin; int rulerStep = ruler/20;//將當前的高度平分爲20個單位 g2.setColor(Color.WHITE);//繪製白色背景 g2.fillRect(0, 0, Width, Height);//繪製矩形圖 g2.setColor(Color.LIGHT_GRAY); for(int i=0;i<rulerStep;i++){ g2.drawString((30000-1500*i)+"個", 8, topMargin+rulerStep*i);//繪製Y軸上的數據 } g2.setColor(Color.darkGray); int m=0; for (Entry<String, Integer> entry : map.entrySet()) { int value =entry.getValue(); int step = (m+1)*40;//設置每隔柱形圖的水平間隔爲40 g2.fillRoundRect(leftMargin+step*2,Height-value/50-5, 40, value, 40, 10);//繪製每一個柱狀條 g2.drawString(entry.getKey(), leftMargin+step*2, Height-value/50-5); //標識每一個柱狀條 m++; } }
輸出到文件
Map<String,Integer> Map = new LinkedHashMap<String, Integer>(); /**按字典順序排序*/ void Sort(Map<String, Integer> map) { Set<Entry<String,Integer>> m= map.entrySet(); LinkedList<Entry<String, Integer>> List = new LinkedList<Entry<String,Integer>>(m); Collections.sort(List, new Comparator<Entry<String,Integer>>() { public int compare(Entry<String, Integer> a, Entry<String, Integer> b) { return a.getKey().compareTo(b.getKey()); } }); for (Entry<String,Integer> entry: List) { Map.put(entry.getKey(), entry.getValue()); } } /**寫入文件*/ void PrintToF(Map<String, Integer> map)throws IOException { long start = System.currentTimeMillis(); Sort(map); File file = new File("result.txt"); FileWriter f = new FileWriter(file.getAbsoluteFile()); for (Entry<String,Integer> w: Map.entrySet()) { f.write(w.getKey() + "/" + w.getValue()+" "); } f.close(); JOptionPane.showConfirmDialog(null,"所用時間:"+(System.currentTimeMillis() - start)+"ms","結果",JOptionPane.DEFAULT_OPTION); }
主頁面
高頻詞
柱狀圖顯示
單詞、行數
生成result文件
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 8 | 12 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 8 | 10 |
Development | 開發 | 120 | 150 |
Analysis | 需求分析 (包括學習新技術) | 10 | 15 |
Design Spec | 生成設計文檔 | 5 | 5 |
Design Review | 設計複審 (和同事審覈設計文檔) | 10 | 10 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 10 | 10 |
Design | 具體設計 | 20 | 25 |
Coding | 具體編碼 | 120 | 150 |
Code Review | 代碼複審 | 20 | 30 |
Test | 測試(自我測試,修改代碼,提交修改) | 10 | 20 |
Reporting | 報告 | 20 | 20 |
Test Report | 測試報告 | 10 | 10 |
Size Measurement | 計算工做量 | 10 | 15 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 15 | 30 |
我認爲兩人合做真的可以帶來1+1>2的效果,首先一我的總有累的時候,這時候出錯的機率就會大大增長,而結對編程就避免了這種低級錯誤。