当前位置: 首页 > news >正文

第一次个人编程任务

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477
这个作业的目标 实现一个论文查重程序
我的github https://github.com/wjx4300/3223004300

一、PSP表格(包括预估与实际耗时)

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
· Estimate · 估计这个任务需要多少时间 30 30
Development 开发
· Analysis · 需求分析 30 30
· Design Spec · 生成设计文档 40 50
· Design Review · 设计复审 30 20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 20 30
· Design · 具体设计 60 60
· Coding · 具体编码 180 240
· Code Review · 代码复审 60 60
· Test · 测试 (自我测试,修改代码,提交修改) 120 120
Reporting 报告
· Test Report · 测试报告 60 60
· Size Measurement · 计算工作量 30 30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30
· 合计 690 760

二、函数模块接口的设计和实现

2.1函数模块

各模块主函数名称 函数功能 耗时(分钟)
readFile 文件读取 15
preprocessText 文本预处理 50
calculateSimilarity 相似度计算主方法 60
getTermFrequency 词频向量构建 45
cosineSimilarity 余弦相似度计算 60
main 调用各函数 10

2.2程序主流程

数据流程

2.3函数模块关系架构

函数模块关系

2.4主要模块函数设计实现

2.4.1文本处理模块

文本处理

2.4.2构建文章词频向量

构建词频向量

2.4.3余弦相似度计算

余弦相似度计算

三、单元测试展示

3.1文本处理测试函数

public void testPreprocessText() {String text = "今天是星期天,天气晴,今天晚上我要去看电影。";List<String> words = checker.preprocessText(text);
//        System.out.println("原始文本:" + text);
//        System.out.println("处理后词语:" + words);// 预期结果:去除停用词和标点后的词语列表String[] expected = {"今天", "星期天", "天气", "晴","晚上", "要","去","看", "电影"};assertArrayEquals(expected, words.toArray(new String[0]));}

构造思路

  • 包含停用词("是"、"我"),验证停用词过滤效果
  • 包含标点符号(","、"。"),验证特殊字符去除效果
  • 预期结果明确对应处理后的有效词汇,确保分词准确性

3.2相似度计算测试

@Testpublic void testCalculateSimilarity_Identical() {String text1 = "今天是星期天,天气晴,今天晚上我要去看电影。";String text2 = "今天是星期天,天气晴,今天晚上我要去看电影。";double similarity = checker.calculateSimilarity(text1, text2);assertEquals(1.0, similarity, 0.01);}@Testpublic void testCalculateSimilarity_Similar() {String text1 = "今天是星期天,天气晴,今天晚上我要去看电影。";String text2 = "今天是周天,天气晴朗,我晚上要去看电影。";double similarity = checker.calculateSimilarity(text1, text2);// 预期相似度应该较高,在0.7以上assertTrue(similarity > 0.7);}@Testpublic void testCalculateSimilarity_Different() {String text1 = "今天是星期天,天气晴,今天晚上我要去看电影。";String text2 = "明天会下雨,我计划待在家里读书。";double similarity = checker.calculateSimilarity(text1, text2);// 预期相似度应该较低,在0.3以下assertTrue(similarity < 0.3);}@Testpublic void testCalculateSimilarity_EmptyText1() {String text1 = "";String text2 = "今天是周天,天气晴朗,我晚上要去看电影。";double similarity = checker.calculateSimilarity(text1, text2);assertEquals(0.0, similarity, 0.01);}@Testpublic void testCalculateSimilarity_EmptyText2() {String text1 = "今天是星期天,天气晴,今天晚上我要去看电影。";String text2 = "";double similarity = checker.calculateSimilarity(text1, text2);assertEquals(0.0, similarity, 0.01);}@Testpublic void testCalculateSimilarity_BothEmpty() {String text1 = "";String text2 = "";double similarity = checker.calculateSimilarity(text1, text2);assertEquals(0.0, similarity, 0.01);}

构造思路

  • 测试两个完全相同文本,相似度应为1,确保核心算法无基础偏差
  • 测试两个相似文本,验考察对语义相似性的识别能力
  • 测试两个完全不同的文本,验证算法区分差异的能力
  • 测试三种空文本情况,确保边界值处理正确

3.3测试覆盖率图

测试覆盖率图

  • 指令覆盖率 85%、分支覆盖率 88%

四、计算模块部分异常处理说明

4.1文件不存在异常

  • 设计目标:当程序尝试读取的文件不存在时,抛出此异常,用于明确告知用户 “指定路径的文件找不到”
  • 错误场景:用户传入的原文文件路径或抄袭版文件路径指向的文件不存在
@Test(expected = IOException.class)public void testReadFile_InvalidPath() throws IOException {checker.readFile("invalid/path/file.txt");}

4.2兜底异常处理

  • 设计目标:作为兜底的异常捕获,处理程序运行过程中可能出现的其他未明确分类的异常
  • 错误场景:比如在预处理文本时,传入的文本为null,导致后续调用text.length()等方法时抛出NullPointerException
@Test(expected = NullPointerException.class)public void testPreprocessText_NullInput() {checker.preprocessText(null);}
http://www.sczhlp.com/news/129811/

相关文章:

  • 概率期望总结
  • redis实现秒杀下单的业务逻辑
  • 做网站要学的东西江西省住房和城乡建设网站
  • 世界上做的最好的前端网站网站搜索引擎
  • 微网站制作电话提供网络推广服务
  • 赤峰网站开发校园网站建设申请报告
  • 房产网有哪些网站wordpress后台更新等待响应
  • 帮人做任务的网站郑州短视频拍摄制作
  • 做网站服务器配置应该怎么选wordpress 经典主题
  • 2025年9月23日 - 20243867孙堃2405
  • ps怎么排版规划设计网站网站建设公司行情
  • 单页网站排名4.请简述网站建设流程的过程
  • wed网站开发是什么wordpress 主机服务主题
  • 给网站做缓存网站选择理由描述
  • 上海网站搭建百度实景360度地图
  • 2025.9.23——1橙1绿
  • 网站刷流量对网站有影响吗建站哪个便宜
  • 《硬件知识汇总》学习笔记
  • 免费综合网站注册申请今天31个省新增最新消息
  • 中文小说网站建设与维护直播app制作公司
  • 网站功能模块建设有模板了怎么建设网站
  • 北京企业网站怎么建设网站宣传的好处
  • 自己电脑做网站主机网站的建设公司
  • 建设事业单位网站多少钱阿里做外贸的网站
  • 校园网站建设说明书怎么做好市场宣传和推广
  • 军队信息化建设网站域名注册商是什么意思
  • 北京网站建设laitang沈阳比较有名的工装公司
  • 2025.9.23
  • 软件工程学习日志2025.9.23
  • 在百度上做网站推广怎么弄discuz 与Wordpress