第三次作业

本文介绍了一个WordCount项目的实现过程,包括需求分析、设计、编码、测试等阶段,并详细解释了统计字符数、单词数及词频的具体算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.本次作业的GITHUP地址

 GIT地址 https://github.com/kubaiyi/WordCount
 GIT用户名 kubaiyi
 结对伙伴博客地址 https://www.cnblogs.com/Nauthiz/
 博客地址 https://www.cnblogs.com/singqp/
 作业链接 第三次作业结对编程

 

 

 

 

 

 

 

 

 

 

二.PSP表格

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划2020
Estimate估计这个任务需要多少时间2020
Development开发600710
Analysis需求分析 (包括学习新技术)5040
Design Spec生成设计文档3020
Design Review设计复审 (和同事审核设计文档)2030
Coding Standard代码规范 (为目前的开发制定合适的规范)2015
Design具体设计3045
Coding具体编码360300
Code Review代码复审6050
Test测试(自我测试,修改代码,提交修改)3030
Reporting报告9070
Test Report测试报告4030
Size Measurement计算工作量3030
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划2010
 合计710800

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三.解题思路

 题目要求是对txt文件中的内容进行各种统计,于是首先应该读取文件内容并存入一个字符串对象中,之后再对这个字符串进行一系列操作,最终得出统计结果。读取文件可能会遇到异常,所以在进行读取文件时必须使用try catch语句来防止异常导致的程序中断。对于统计字符数,很简单,不必详细说明,只需注意是否有汉字字符;针对单词个数,则要用字符串数组来解决,首先应将数组全部初始化为空字符串,再将符合条i间的单词存入数组,而最终数组中有多少个非空字符串即表示有多少个单词;对于统计行数,则比统计字符数跟为简单,仅统计字符串中有多少个换行符即可;之后的统计单词的词频和字典序排序,则需要对原字符串数组进行遍历,并破坏其中的相同单词的存储方式,之后用Dictionary类进行字符串数组的排序,最终输出单词和它的词频。

 

四.关键代码说明

1.统计字符数

 

函数接受一个字符串对象content,该对象内存有文件中的内容,之后遍历该字符串,通过if找出有多少个汉字字符,每找到一个汉字字符,num就加1(num初始化为0),之后输出统计的字符数结果。(之所以要再减1是因为该字符串比源文件内容多了一个换行符,所以要减1)

 

2.统计单词个数

 

函数接收一个字符串对象content,该对象内有文件内容,之后定立两个字符串数组temp和str并都初始化为空字符串。为了方便统计,把原字符串的字母全部转化为小写字母,之后定义一个int类的num对象用于计数,首先遍历一遍字符串,判断字符是否是小写字母或者数字,若是则存入temp数组中(num作为下标),直到读取到非字母数字字符。若读取到非字母数字字符,则判断该字符串的前四位中是否有数字,若有则将该字符串初始化后再次进行循环,若无,则num加1。之后将temp数组的内容传给str数组,遍历str数组,若存在相同的单词,则num减1,并初始化其中的一个字符串。最终遍历完后的num值即为单词个数。

 

3.统计有效行数

函数接收一个字符串对象conten,该对象有文件内容。因为要统计行数,而每行内容的最后必定有一个换行符,所以仅需遍历有多少个换行符即可得出答案。

 

4.统计单词的词频和按字典序输出

函数接收一个字符串数组temp,这个字符串组数存有文件中的所有单词。定义一个字符串数组str,将temp数组的内容全部传入str,之后遍历str数组,每次每次大遍历将int类的t对象初始化为1,然后判断是否有相同的单词,若有,则t加1且后面相同的单词初始化为空字符串,而每次遍历到空字符串时就直接continue,每次大循环结束时将单词和t传入Dictionary类的对象。之后通过一行语句进行字典序排序。最终再遍历这个排序后的dicSort即可得到答案

 

五.运行效果

1.单元测试效果

 

2.效能运行

 

 

3.项目运行效果

六.代码规范

1.对函数的命名使用该函数功能的英文缩写,并使用驼峰命名法。

2.变量的名称直接使用英语表示。

3.中间过渡变量统一为temp,循环变量用i,j,k...

4.一行只写一个语句。

七.结对编程总结

我和结对伙伴是室友,所以共同讨论和相处的时间较多,并且直接使用一台电脑进行编程,减少了不必要的麻烦。其中比较简单的部分,统计字符个数和统计行数由室友编写,我在一旁审查。其余部分由我独立完成

其中用到的一些之前没有使用过的函数由双方共同查询资料所得。两人在编写代码之前前先将代码的架构讨论清楚,需要哪些函数,方法,需要定义哪些变量等,两个人一起商量时比一人能考虑到更多东西。同时一

人写,一人看,很容易就检差出了一些笔误,逻辑漏洞等问题。

转载于:https://www.cnblogs.com/singqp/p/10657654.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值