201671030125+词频统计软件项目报告
| 這個作業屬于哪個課程? | 2016級計算機科學與工程學院軟件工程(西北師范大學) |
| 這個作業的要求在哪里? | 實驗二 軟件工程個人項目 |
| 我在這個課程的目標是? | 按時完成老師給的任務,復習JAVA相關知識,掌握軟件項目個人開發流程,掌握Github上發布軟件項目的操作方法 |
| Github相關代碼 | 鏈接 |
需求分析
按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。軟件基本功能要求如下:
-程序可讀入任意英文文本文件,該文件中英文詞數大于等于1個。-程序需要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。-指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。-高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。-統計該文本所有單詞數量及詞頻數,并能將單詞及詞頻數按字典順序輸出到文件result.txt。功能設計
1.輸入要讀取的文件,選擇你想進行的功能
2.選擇1:顯示查找的單詞詞頻,單詞間用“/”隔開
3.選擇2:輸出詞頻最高的前N個單詞,按降序輸出
4.選擇3:按字典順序輸出單詞及詞頻到result.txt
5.選擇0:退出
設計實現
一共分為兩個類,一個主函數Main,一個負責排序的sort類。
Main類中main函數實現讀取文件、計算詞頻及顯示菜單,word函數實現顯示輸入需要查詢的單詞并輸出單詞出現次數和柱狀圖。print函數實現調用sort類中的降序排列方法輸出前n個出現頻率最大的單詞及次數。Write函數實現調用sort類中的按字典順序方法將單詞及出現次數輸出到result.txt文件中。
sort類中實現排序的功能,按照選項進行降序排列或者字典順序排列。
程序流程圖:
測試運行
4個選項運行結果顯示:
按字典順序排列輸出到文檔:
代碼片段
BufferedReader a = new BufferedReader(new FileReader(src));//計算詞頻Map<String, Integer> map = new TreeMap<String, Integer>();String value= a.readLine();while (value!= null) {String[] words = value.split("[^a-zA-Z]"); //處理標點符號for (int i = 0; i < words.length; i++) { String key = words[i].toLowerCase(); //大寫轉換小寫if (key.length() > 0) {if (!map.containsKey(key)) {map.put(key, 1);} else { int k = map.get(key)+1;// 如果不是第一次出現,就把k值++map.put(key, k);}}} value = a.readLine();}總結:你設計的程序如何實現軟件設計的“模塊化”原則。
模塊化程序設計即模塊化設計,屬于計算機編程,簡單地說就是程序的編寫不是開始就逐條錄入計算機語句和指令,而是首先用主程序、子程序、子過程等框架把軟件的主要結構和流程描述出來,并定義和調試好各個框架之間的輸入、輸出鏈接關系。模塊化設計是綠色設計方法之一,它已經從理念轉變為較成熟的設計方法。將綠色設計思想與模塊化設計方法結合起來,可以同時滿足產品的功能屬性和環境屬性,一方面可以縮短產品研發與制造周期,增加產品系列,提高產品質量,快速應對市場變化;另一方面,可以減少或消除對環境的不利影響,方便重用、升級、維修和產品廢棄后的拆卸、回收和處理。
其基本思想是將一個大的程序按功能分解成為一些功能單一、結構清晰、接口簡單、容易理解的功能模塊。在本次項目中要實現的功能大致有四個:排序、計算詞頻輸出相應單詞的次數及柱狀圖、降序輸出詞頻最高的前N個單詞及次數、按字典順序輸出到文檔。若一開始就逐條錄入計算機語句和指令,沒有劃分模塊,后面很容易程序錯亂。所以我按照功能分為四個模塊,定義好之間的連接關系,分別實現后整合起來就方便得多。后續要添加刪除功能也不會牽扯太多。
展示PSP
| Planning | 計劃 | 15 | 10 |
| Estimate | 規劃工作步驟 | 10 | 7 |
| Development | 開發 | 120 | 150 |
| Analysis | 需求分析 | 10 | 15 |
| Design Spec | 生成文檔 | 5 | 10 |
| Design Review | 設計復審 | 10 | 5 |
| Coding Standard | 代碼規范 | 20 | 15 |
| Design | 具體設計 | 15 | 20 |
| Coding | 具體編碼 | 120 | 240 |
| Code Review | 代碼復審 | 10 | 5 |
| Test | 測試 | 20 | 40 |
| Reporting | 報告 | 30 | 30 |
| Test Report | 測試報告 | 5 | 7 |
| Size Measurement | 計算報告量 | 5 | 2 |
| Postmortem & Process Improvement Plan | 事后總結 | 8 | 5 |
在實施這次項目的過程中,實際完成和我的預期設想相差還是挺大的,具體編碼花費了預期兩倍的時間,還是因為對JAVA語言掌握不熟練,上機練習不夠,這點在后續實驗中會努力改善。這次試驗我還掌握軟件項目個人開發流程,以及Github上發布軟件項目的操作方法。感覺還是團隊合作開發項目比較好,遇到問題和不懂的地方可以幾個人互相探討商量完成,可以省下很多時間在項目的優化和完善上。
轉載于:https://www.cnblogs.com/zj-0408/p/10546873.html
總結
以上是生活随笔為你收集整理的201671030125+词频统计软件项目报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: next_permutation(sta
- 下一篇: ElasticSearch优化系列三:机