課程 | 軟件工程 |
---|---|
要求 | 個人項目作業 |
題目 | 論文查重系統 |
GitHub 鏈接:https://github.com/EmmaZoeLeft/3218004633.git
要求規范
輸入輸出采用文件輸入輸出。按照傳遞命令行參數的方式提供文件的位置,從指定的位置讀取文件,並向指定的文件輸出答案。
- 從命令行參數給出:論文原文的文件的絕對路徑。
- 從命令行參數給出:抄襲版論文的文件的絕對路徑。
- 從命令行參數給出:輸出的答案文件的絕對路徑。
示例:java -jar main.jar C:\tests\org.txt C:\tests\org_add.txt C:\tests\ans.txt
注意:答案文件中輸出的答案為浮點型,精確到小數點后兩位
環境
Eclipse 2020 + JDK 1.8
具體實現
-
結巴分詞:使用了 HFUTUtils 工具程序集合中的結巴分詞jar包來處理文本,分詞后去除了常見停用詞
-
最小編輯距離:最小編輯距離,是指兩個字串之間,由一個轉成另一個所需最小的編輯操作次數。編輯操作包含:插入、刪除和替換三種操作。
類及接口
- Main.java:主類,調用以下類
- textSplit.java:分詞
- EditDistance.java:最小編輯距離算法
- io.java:讀寫類
- NullTextException.java:空文本異常拋出
單元測試
eclipse 自帶的 JUnit5
- 逐個文本測試
orig_0.8_add.txt測試結果
orig_0.8_del.txt測試結果
orig_0.8_dis_1.txt測試結果
orig_0.8_dis_10.txt測試結果
orig_0.8_dis_15.txt測試結果
- 一次多個文本測試
不斷遞歸迭代會堆棧異常,故不可連續查重多個文本,應采用動態規划完成。
MainTest.java測試結果
性能測試
Main.java的性能測試
不存在程序內存泄漏嚴重的情況
5秒內給出了答案
占用的內存未超過2048MB


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