項目 | 內容 |
---|---|
做業所屬課程 | 西北師範大學軟件工程 |
做業的要求 | 實驗四軟件工程結對項目 |
課程學習目標 | 熟悉軟件開發總體流程,提高自身能力 |
本次做業的意義 | 第一次體驗一個完整的工程 |
點評博客(點評連接),點評內容以下:html
你的博文結構總體思路很清晰,博文內容簡單明瞭,博文結構中的總體思路和PSP中「任務內容」列的思路一致。從需求分析到測試總結,每一個環節都用文字或者圖標的形式給出了整個項目較爲完整的思路。經過分析你的PSP,在PSP中「計劃共完成須要的時間」與「實際完成須要的時間」仍是有必定的差距。在生成文檔等這樣的任務中實際花費的時間就比計劃花費的時間少,這說明你在編寫文檔的方面仍是頗有優點的,而在編碼這樣的任務中實際和計劃的時間就相差有點大,這說明你的編碼能力還有待提升。
你的代碼結構清楚,在實現題目要求的功能時有一個欠缺的地方是:當你輸入一個該文本中沒有的單詞時,系統不會有任何提示而是繼續顯示菜單欄進行功能選擇。除此以外,我發現咱們在柱狀圖的實現上都有必定欠缺,我相信通過咱們的結對合做必定能夠改進這個問題的!git點評心得:github
在結對以前經過閱讀對方的博客內容以及運行對方項目的代碼能夠學習到不少東西。能夠學習對方好的優秀的編碼習慣,能夠提高自身的編碼能力。編程
a.實驗二的功能
b.完善實驗2中的統計圖功能
c.統計該文本行數及字符數
d.各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms)
e.可處理任意用戶導入的任意英文文本
f.人機交互界面要求GUI界面
g.統計文本中除冠詞、代詞、介詞以外的高頻詞
h.統計前10個兩個單詞組成的詞組頻率學習
a.統計圖功能測試
public void paint(Graphics g) { int Width = getWidth(); int Height = getHeight(); int leftMargin = 20;//柱形圖左邊界 int topMargin = 50;//柱形圖上邊界 Graphics2D g2 = (Graphics2D) g; int ruler = Height-topMargin; int rulerStep = ruler/20;//將當前的高度平分爲20個單位 g2.setColor(Color.PINK);//繪製白色背景 g2.fillRect(0, 0, Width, Height);//繪製矩形圖 g2.setColor(Color.BLACK); g.setColor(Color.gray); for(int i=0;i<=100;i+=5){//繪製灰色橫線 g2.drawLine(5, topMargin+rulerStep*i, Width, topMargin+rulerStep*i);//繪製灰色橫線 } for(int i=0;i<rulerStep;i++){ g2.drawString((35000-2000*i)+"個", 8, topMargin+rulerStep*i);//繪製Y軸上的數據 } g2.setColor(Color.black); 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++; } }
b.統計文本行數及字符數功能編碼
lineWordCount.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { if (event.getSource()==lineWordCount) { try { FileName(map); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } JOptionPane.showMessageDialog(null,"Lines:"+rowNumber+"\n"+"WordsNumber:"+wordNumber+"\n"+"Time:"+time+"ms","Result",JOptionPane.INFORMATION_MESSAGE); } } });
c.按字典順序排列設計
/**按字典順序排序*/ 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()); } }
a.可視界面測試截圖
b.實驗2功能測試截圖
輸出前N個高頻詞
統計高頻詞
將結果寫入文件
c.統計圖測試截圖
統計高頻詞
d.統計文本行數及字符數測試截圖
3d
在開始結對編程項目以前,咱們先一塊兒學習了何爲結對編程,以便雙方可以在這次結對項目中把握好本身的角色。在這以後,咱們閱讀了對方的代碼,並對對方的編碼習慣和編碼能力進行了必定的瞭解。通過雙方討論,咱們約定了必定的代碼規範。結合咱們自身的編碼能力,咱們對PSP的計劃部分進行了認真的規劃,但在實施過程當中,咱們解決問題的辦法是一塊兒討論解決辦法,並對某一功能分別擔任設計、編碼和測試和複審的角色。在此次結對項目的合做中我體會到了合做溝通的重要性,雙方對於問題的解決要進行及時有效的溝通便能事半功倍!代碼規範
psp | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 20 | 15 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 20 | 20 |
Development | 開發 | 200 | 230 |
Analysis | 需求分析 | 15 | 10 |
Design Spec | 生成設計文檔 | 30 | 25 |
Design Review | 設計複審 | 10 | 10 |
Coding Standard | 代碼規範 | 20 | 15 |
Design | 具體設計 | 20 | 15 |
Coding | 具體編碼 | 150 | 200 |
Code Review | 代碼複審 | 20 | 15 |
Test | 測試 | 10 | 15 |
Reporting | 報告 | 30 | 25 |
Size Measurement | 計算工做量 | 5 | 3 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 10 | 1 |