第三次作业

Github项目地址:https://github.com/shenyaxin/WordCount.git

作业链接:https://www.cnblogs.com/793181431q/p/10647323.html

1.结对项目PSP编写

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30

 30

· stimate

· 估计这个任务需要多少时间

 400

 500

Development

开发

 200

 300

· Analysis

· 需求分析 (包括学习新技术)

 100

 150

· Design Spec

· 生成设计文档

 30

 30

· Design Review

· 设计复审 (和同事审核设计文档)

 30

 30

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 30

 30

· Design

· 具体设计

 40

 40

· Coding

· 具体编码

 200

 200

· Code Review

· 代码复审

 30

30

· Test

· 测试(自我测试,修改代码,提交修改)

 30

 30

Reporting

报告

 60

 60

· Test Report

· 测试报告

 30

 30

· Size Measurement

· 计算工作量

 10

 10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 10

 10

 

合计

 1230

 1480

结对过程:在各种因素的考虑下,我与室友一起进行结对编程,原本我们预估的所需时间并不长,但是在进行编程的过程中我们发现因为对于C#一些类运用的不熟练导致我们延长了时间,尤其是学习新内容与编码的过程。最后的成品经由我们删改规范,勉强达到我们心中的预期。                     

 

 

解题思路:

一.基本功能

题目的要求中基本功能分为三类,首先是统计字符数,根据作业内容提示,我们考虑使用正则表达式,即Regex类来进行字符数统计,同时考虑到了空格,水平制表符,换行符均算字符。

二.统计文件的单词总数与词频

设计代码时我们使用搜索引擎参考了一部分文件内容排序代码,发现了C#的字典类Dictionary是一种良好的单词排序方式,通过遍历可以迅速有效的分辨出根据题目要求划分的单词并计算出单词个数。词频的处理也采用了Dictionary字典类,同时还有冒泡排序来计算出出现频率最高的单词。

三.扩展新功能

扩展新功能时因为对于词组的要求,我们改进了主函数文件输入的方法,在词组统计以及用户自定义词组长度问题上,我们使用了字典类和正则表达式一起使用的方法,并且与基础功能只需要读入文件相比,还加入了输出文件功能。

3. 设计

3.1结构设计

功能类:主函数类(Program类)。接口类(Word类,Cipin类,Danci类,Shuchu类,Cizu类)

 

 

 

3.2流程图

 

 4. 代码说明

4.1基本功能模块

统计字符数:使用正则表达式

 

 

4.2统计单词:使用Dictionary字典类

 

 4.3统计词频

4.4运行截图

 

5. 测试过程

5.1代码互审

在代码互审过程中,首先发现在判断字符个数时出现了遗漏,没有将空格等也算入字符计算。

其次是在文件名的输入,以及扩展新功能时与新功能链接使用的问题上,从一开始简单的输入文件名到我们加入了循环。

行数判断后来才加入循环,使空白行不算入行数。

5.2建立单元测试

 

 测试设计:输入实例进入类的测试中,调用类的方法功能,得出结果,与正确数量使用Assrt类进行比较,若结果相等则测试成功。使用多种实例可以保证测试正确性。

5.3 统计字符数类测试

 

 

5.4统计单词与词频类测试

 

 5.5效能分析

 

 

Main函数占用率最大。

6.代码规范链接

https://blog.youkuaiyun.com/qq_31606375/article/details/77783328

7. 总结

本次结对项目中,我们第一次体会到了结对编程的感受,从各方面来说,确实是1+1>2的,我们从设计开始,就从思路上进行了互补,而各人拥有各人擅长的特点,在另一个人不熟悉的领域进行补充,比如说我与我的室友在进行字符统计时对于正则表达式的运用各有各的看法,最后我们进行综合选择了一个最优方案,这在我们进行词频统计运用字典类时也有同样的经历。进行编码时,可能是我们对结对编程的概念理解还不够深,一开始我们选择各自编写,最后发现费时费力。于是我们换了一种思路,一人编写,另一人提供思路与设计,并且封装与测试也一同设计和进行。本次结对编程让我充分理解了书本上的理念,让我收获良多。

转载于:https://www.cnblogs.com/wyj1208/p/10652284.html

基于html+python+Apriori 算法、SVD(奇异值分解)的电影推荐算法+源码+项目文档+算法解析+数据集,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 电影推荐算法:Apriori 算法、SVD(奇异值分解)推荐算法 电影、用户可视化 电影、用户管理 数据统计 SVD 推荐 根据电影打分进行推荐 使用 svd 模型计算用户对未评分的电影打分,返回前 n 个打分最高的电影作为推荐结果 n = 30 for now 使用相似电影进行推荐 根据用户最喜欢的前 K 部电影,分别计算这 K 部电影的相似电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now 根据相似用户进行推荐 获取相似用户 K 个,分别取这 K 个用户的最喜爱电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now Redis 使用 Redis 做页面访问次数统计 缓存相似电影 在使用相似电影推荐的方式时,每次请求大概需要 6.6s(需要遍历计算与所有电影的相似度)。 将相似电影存储至 redis 中(仅存储 movie_id,拿到 movie_id 后还是从 mysql 中获取电影详细信息), 时间缩短至:93ms。 十部电影,每部存 top 5 similar movie 登录了 1-6 user并使用了推荐系统,redis 中新增了 50 部电影的 similar movie,也就是说,系统只为 6 为用户计算了共 60 部电影的相似度,其中就有10 部重复电影。 热点电影重复度还是比较高的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值