第一次個人編程作業


https://github.com/031902518/031902518

一、PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鍾) 實際耗時(分鍾)
Planning 計划 30 50
· Estimate · 估計這個任務需要多少時間 400 600
Development 開發 60 180
· Analysis · 需求分析 (包括學習新技術) 30 20
· Design Spec · 生成設計文檔 10 10
· Design Review · 設計復審 10 10
· Coding Standard · 代碼規范 (為目前的開發制定合適的規范) 10 10
· Design · 具體設計 30 70
· Coding · 具體編碼 240 360
· Code Review · 代碼復審 40 50
· Test · 測試(自我測試,修改代碼,提交修改) 20 30
Reporting 報告 30 50
· Test Repor · 測試報告 30 60
· Size Measurement · 計算工作量 20 25
· Postmortem & Process Improvement Plan · 事后總結, 並提出過程改進計划 30 100
· 合計 990 1625

二、計算模塊接口

  • (3.1)計算模塊接口的設計與實現過程。
    因為本人比較笨,不是很會用什么高級的算法,只是用最簡單的遍歷一遍,沒有用到類和函數(主要是我覺得我這個想法沒什么技術含量,思想過於簡單,用不上構造類和函數,也只能實現最基本的查詢,但是main里的思想就是:首先把待檢測文件讀入,在讀入一個一個的敏感詞,然后每個字每個字一個一個的對比,如果是中文就判斷中文的條件,如果是英文就按照英文的語句執行,最后用一個total來記錄敏感詞的個數,但並不能都檢測出來(比如拆分和拼音首字母都不行)),主要思想就是遍歷,把org文件一行一行讀入然后和他們敏感詞比較,如果找到就輸出。並且又有中英文之分。如果是中文就判斷中間是否有可能進行一些偽裝,在敏感詞中插入除字母、數字、換行的若干字符仍屬於敏感詞,會在判斷出來。但是因為本人能力有限並不能實現:諧音替換、拼音替代、拼音首字母替代以及中文文本中還存在少部分較難檢測變形如繁體、拆分偏旁部首(只考慮左右結構),不存在變形后再拆開偏旁部首的情況。
  • (3.2)計算模塊接口部分的性能改進。

從以上圖片可以看出,占據主要時間的是執行程序,然后是輸入輸出的IO時間,因為給定一個黑名單詞匯文件和待檢測文件,要求在答案文件中輸出檢測出敏感詞匯的數量並按出現輸出行號,敏感詞詞匯及對應檢測出的文本。所以要反復讀入作比較,還有就是文件系統因為要頻繁的讀入敏感詞,搜索到后還要輸出,所以也是在預計范圍內。因為有很多循環的關系所以個人感覺會超時間,主要思想就是遍歷,把org文件一行一行讀入然后和他們敏感詞比較,如果找到就輸出,不是很會用什么高級的算法,只是用最簡單的遍歷一遍,反復的讀取文件也花了很多時間,本來是想用些方法來改進一下自己的程序,但是后來上網一查發現以自己目前的能力沒有辦法實現

  • (3.3)計算模塊部分單元測試展示。

  • (3.4)計算模塊部分異常處理說明。
  1. infile2.open(ors);//用來打開文檔
    if (!infile2) { cout << "org fail!" << endl; }
    如果待測試文檔打開失敗則輸出org fail
    infile1.open(wos);//用來打開敏感詞
    if (!infile1) { cout << "words fail!" << endl; }
    如果待測試敏感詞文檔打開失敗則輸出words fail

2.我的電腦筆記本默認是ANXI,所以設計的時候就用Visual Studio 2019 的ANXI寫的,后來要求必須用UTF-8導致輸出了大量錯誤,如下圖,后來在測試組同學們的幫助下,在代碼中加了一個locale china("zh_CN.UTF-8");才對的,同時,先學習了fstream等知識,掌握基本的讀寫文件流,這里也要先感謝一下測試組同學的大力幫助

3.老師說的很對很對:讀清題目很重要、很重要、很重要(重要的事情說三遍),我就是因為沒考慮到敏感詞的出現先后問題,所以后來又小改了一下一開始想用string存放文件中的一行數據,后來發現string兩個單位存儲一個字,輸出時比較困難,甚至輸出的時候容易難以區分漢字和英文的區別,后來上網上看到了wstring,感覺很是好用,又學到了新的知識。wstring可以實現一個單元兩個字節,這樣子比較漢字的時候就方便多了

三、心得

1.因為本人比較菜,所以每天熬夜打代碼,雖然沒能實現全部要求,但是我已經把自己能夠做到的都做了,已經不后悔了。
2.讀清題目很重要,我就是因為沒考慮到敏感詞的出現先后問題,所以后來又小改了一下。
3.對github的應用更加明白
4.測試txt文件的讀寫功能時,發現中文的亂碼現象,上網查后,發現txt文件默認用utf-8編碼,而Windows控制台默認用ANSI編碼,故控制台會出現中文的亂碼
5.用c++寫,先學習了fstream等知識,掌握基本的讀寫文件流
6..編寫函數,輸入為文章的一行和一個敏感詞;遍歷該行,找到敏感詞即輸出
7.將結果打印,在目標位置生成txt文件;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM