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