日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

201621123053 张雨阳软工作业2

發布時間:2025/3/18 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 201621123053 张雨阳软工作业2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.碼云項目地址

https://gitee.com/milan_kaka/2018_soft_work/tree/master

2.PSP表格

PSP2.1個人開發流程預估耗費時間(分鐘)實際耗費時間(分鐘)
Planning計劃3050
· Estimate明確需求和其他相關因素,估計每個階段的時間成本2040
Development開發300780
· Analysis需求分析 (包括學習新技術)60120
· Design Spec生成設計文檔3060
· Design Review設計復審3060
· Coding Standard代碼規范1520
· Design具體設計120150
· Coding具體編碼180200
· Code Review代碼復審3040
· Test測試(自我測試,修改代碼,提交修改)100120
Reporting報告6060
·測試報告30100
·計算工作量2020
·并提出過程改進計劃2020

3.解題思路描述

題目要求實現一個統計程序,它能正確統計程序文件中的字符數、單詞數、行數,以及還具備其他擴展功能,并能夠快速地處理多個文件。思路如下

  • 以字符串形式讀入文件數據,統計字符串的字符數。由于要求中空格,水平制表符,換行符,均算字符,所以對原始數據不需要做修改。(字符數)
  • 通過分隔符(空格,換行等),再將一個大的字符串分成小的字符串,存放在數組中。根據單詞構成,統計數組中滿足相應條件的元素個數。(單詞數)
  • 通過換行符將大字符串分割,放入數組中。計算數組大小。(行數)
  • 拓展功能
  • 4.設計實現過程

    建三個類,分別是WordCounter類(統計方法),FileDeal(文件處理)和Main(主函數)。

    WordCounter類中主要方法如下

  • public int getCharCount() //統計字符個數,按ASCⅡ碼來統計
  • public int getWordCount() // 統計單詞總數
  • public Map getWordFreq() // 統計單詞個數
  • public int getLineCount() // 統計有效行數
  • FileDeal類中主要方法如下

  • public String FileToString(String path) throws IOException // 讀取文件數據并轉化成字符串
  • public void WriteToFile(String str) throws IOException // 將結果寫入文件
  • Main函數主調用前面兩個類的方法,實現程序功能。

    5.代碼說明

    (1). 統計字符個數 public int getCharCount()

    public int getCharCount() //統計字符個數,按ASCⅡ碼來統計 {char a;for (int i = 0; i < text.length(); i++) {a = text.charAt(i);if (a >= 48 && a <= 57 ||a >= 65 && a <= 90 ||a >= 97 && a <= 122) {charNum++;}}return charNum; }

    將text中的字符單獨取出放到a中,若a中字符符合規范,則charnum+1,否則繼續遍歷text直到結束。

    (2). 統計單詞總數 public int getWordCount()

    public int getWordCount() // 統計單詞總數(注意單詞是以4個英文字母開頭,跟上字母數字符號,單詞以分隔符分割,不區分大小寫。){String t = text;String[] Word = t.split("\\s"); // 對字符串進行分詞操作(注意\\s)for (int i = 0; i < Word.length; i++) {if (Word[i].length() < 4) { // 判斷長度是否大于等于4continue;} else {int flag = 1; // 判斷字符串的前四位是否是英文字母char a;for (int j = 0; j < 4; j++) {a = Word[i].charAt(j);if (!(a >= 'A' && a <= 'Z' || a >= 'a' && a <= 'z')) {flag = 0;}}if (flag == 1) {wordCount++;}}}return wordCount;}

    先將text進行分詞操作。用到split("\s")方法。再判斷字符串是否符合單詞要求(單詞:以4個英文字母開頭,跟上字母數字符號,單詞以分隔符分割,不區分大小寫。) 如果符合,wordCount+1,否則繼續遍歷直到結束。

    (3). 統計單詞個數 public Map getWordFreq()

    public Map getWordFreq() // 統計單詞個數{wordFreq = new HashMap<String, Integer>();String t = text;String[] Word = t.split("\\s"); for (int i = 0; i < Word.length; i++) {if (Word[i].length() < 4) { continue;} else {int flag = 1; char a;for (int j = 0; j < 4; j++) {a = Word[i].charAt(j);if (!(a >= 'A' && a <= 'Z' || a >= 'a' && a <= 'z')) {flag = 0;}}if (flag == 1) {Word[i] = Word[i].trim().toLowerCase(); // 將字符串轉化為小寫if (wordFreq.get(Word[i]) == null) { // 判斷之前Map中是否出現過該字符串wordFreq.put(Word[i], 1);} elsewordFreq.put(Word[i], wordFreq.get(Word[i]) + 1);}}}return wordFreq;}

    開始的操作和上一個方法相似,找出符合單詞描述的字符串,存放到Map中,若沒存過就記為1,若存過+1。

    (4). 統計有效行數 public int getLineCount()

    public int getLineCount() { // 統計有效行數String[] line = text.split("\r\n");=for (int i = 0; i < line.length; i++) { if (line[i].trim().length() == 0)continue;LineCount = LineCount + 1;}return LineCount;}

    以行為單位分割text,之后檢驗是否有只含空格或換行的無效行。若不是無效行+1。

    6.單元測試

    對于單元測試還是沒有完全的理解。不知道怎么去編寫測試代碼。在詢問和借鑒了別的同學后還是有問題。

    7.效能分析


    JProfiler安裝后全英文有些看不懂。。

    8.實驗總結

  • 這次是第一個軟件工程的實踐作業,在構思和實際寫代碼上遇到了很多的困難。主要是自己Java掌握的不夠完善。詢問了很多同學,自己也查詢了很多資料最后勉強完成了這個程序。自己Java方面問題主要是沒有面向對象的思想以及Map等類運用的不夠好。總是希望可以回避復雜的數據結構從而導致了自己浪費了很多的時間。
  • 關于軟件工程的單元測試與性能分析,自己掌握的確實很差。單元測試代碼不知道怎么去實現。參考了同學的代碼也無法正確的進行。而效能分析的軟件更是無從下手。自己課后還得繼續的鉆研才能更好的學習這門課程。
  • 轉載于:https://www.cnblogs.com/ACmilan1899kaka/p/9664229.html

    總結

    以上是生活随笔為你收集整理的201621123053 张雨阳软工作业2的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。