第三次作业

一.本次作业的GITHUP地址

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

 

 

 

 

 

 

 

 

 

 

二.PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
Estimate 估计这个任务需要多少时间 20 20
Development 开发 600 710
Analysis 需求分析 (包括学习新技术) 50 40
Design Spec 生成设计文档 30 20
Design Review 设计复审 (和同事审核设计文档) 20 30
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 15
Design 具体设计 30 45
Coding 具体编码 360 300
Code Review 代码复审 60 50
Test 测试(自我测试,修改代码,提交修改) 30 30
Reporting 报告 90 70
Test Report 测试报告 40 30
Size Measurement 计算工作量 30 30
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 10
  合计 710 800

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三.解题思路

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

 

四.关键代码说明

1.统计字符数

 第三次作业_第1张图片

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

 

2.统计单词个数

第三次作业_第2张图片

 

第三次作业_第3张图片

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

 

3.统计有效行数

第三次作业_第4张图片

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

 

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

第三次作业_第5张图片

第三次作业_第6张图片

第三次作业_第7张图片

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

 

五.运行效果

1.单元测试效果

第三次作业_第8张图片

 

2.效能运行

第三次作业_第9张图片

 

第三次作业_第10张图片

 

3.项目运行效果

第三次作业_第11张图片

第三次作业_第12张图片

六.代码规范

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

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

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

4.一行只写一个语句。

七.结对编程总结

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

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

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

你可能感兴趣的:(第三次作业)