| 課程 | 軟件工程 |
|---|---|
| 要求 | 個人項目作業 |
| 題目 | 論文查重系統 |
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 |





