1)操做可行性
操做可行性是指系統的操做方式在這個用戶組織內行得通嗎?本次開發只是簡單的一個詞頻統計,不須要太大的人力或是資源。
2) 經濟可行性
經濟可行性是從經濟的角度分析系統的規劃方案有無實現的可能性和開發的價值。本系統是自主開發的,用於本身的做業設計,因此不考慮資金上的流動,故而不存在經濟不可行得問題。
3) 技術可行性
技術上的可行性要考慮未來採用的硬件和軟件技術可否知足用戶提出的要求。目前,使用eclipse軟件徹底能夠,因此,也不存在技術可行性的問題。java
根據實驗二可知,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。其基本需求以下:git
1)現統計詞彙數目
2)查找指定詞彙
3)查找高頻單詞
4)實現字典排序github
操做系統 | Widnows 7 |
開發工具 | Eclipse |
JDK | 1.8 |
流程圖設計 | 迅捷流程圖製做軟件 |
該程序共有三個類
1)包含主函數main的主類:Main.java
2)單詞詞頻統計和高頻詞統計的功能類: Wordcount.java,對用戶輸入的單詞進行處理,查詢單詞出現的次數。
3)排序功能類:WordEntity.java,對整個文本文件進行降序或者排序。
詞頻統計編程
try { BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line = null; TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); while((line=reader.readLine())!=null){ line = line.toLowerCase(); String str[] = line.split("\\s+"); for(int i = 0; i<str.length; i++){ String word = str[i].trim(); if(tm.containsKey(word)){ tm.put(word, tm.get(word)+1); }else{ tm.put(word, 1); } } } //輸出咱們想要的字符串格式 System.out.println("按字典序輸出爲:"); Iterator<Entry<String, Integer>> iterator=tm.entrySet().iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }
高頻統計app
try { BufferedReader br = new BufferedReader(new FileReader(fileName)); String s; StringBuffer sb = new StringBuffer(); while ((s = br.readLine()) != null) { sb.append(s); } Map<String,Integer> map = new HashMap<String, Integer>(); StringTokenizer st = new StringTokenizer(sb.toString(),",.! \n"); while (st.hasMoreTokens()) { String letter = st.nextToken().trim(); int count; if (!map.containsKey(letter)) { count = 1; } else { count = map.get(letter).intValue() + 1; } map.put(letter,count); } Set<WordEntity> set = new TreeSet<WordEntity>(); for (String key : map.keySet()) { set.add(new WordEntity(key,map.get(key))); } System.out.println("本文中出現頻率最高的單詞爲:");
for(int i=0;i<rulerStep;i++){ g2.drawString((400-20*i)+"個", 8, topMargin+rulerStep*i);//繪製Y軸上的數據 } g2.setColor(Color.PINK); int m=0; for(int i = 0;i<st.length;i++){ int value = tm.get(st[i]); int step = (m+1)*40;//設置每隔柱形圖的水平間隔爲40 g2.fillRoundRect(leftMargin+step*2,Height-value, 40, value, 40, 10);//繪製每一個柱狀條 g2.drawString(st[i], leftMargin+step*2, Height-value-5); //標識每一個柱狀條 m++; }*/
可是因爲本人能力有限,以前對圖形化的設計方面不太瞭解,最後結果沒能呈現出來。
開始運行
eclipse
統計頻率,並按字典排序輸出
編程語言
統計出現頻率次數最高
函數
查找單詞功能
工具
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
Planning | 計劃 | 15 | 10 |
Estimate | 估計這個任務須要的時間,並規劃大體工做步驟 | 15 | 10 |
Development | 開發 | 180 | 220 |
Analysis | 需求分析(包括學習新技術) | 6 | 8 |
Design Spec | 生成設計文檔 | 30 | 20 |
Design Review | 設計複審 | 15 | 10 |
Coding Standard | 代碼規範(爲目前的開發製做合適的規範) | 3 | 3 |
Design | 具體設計 | 10 | 10 |
Coding | 具體編碼 | 50 | 60 |
Code Review | 代碼複審 | 5 | 8 |
Test | 測試(自我測試、修改代碼,提交修改) | 8 | 6 |
Reporting | 報告 | 9 | 8 |
Test Report | 測試報告 | 1 | 2 |
Size Measurement | 過後總結,並提出過程改進計劃 | 5 | 5 |
本身雖然以前編寫過程序,也編寫過一些小項目,可是,由於時間久了不動手致使在這次編程中 出現了不少問題,不少方面都出現了許許多多的問題。致使本身又回過頭從新去學習,花費了大量 的時間。可是,因爲本身的編程能力有限,柱形圖的功能未能實現。 |
該項目倉庫地址學習