个人项目wordcount
1.Github项目地址:https://github.com/inimble/wordcount.git
2.估算耗费的时间(如右表)
|
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
|
Planning |
计划 |
30 |
10 |
|
· Estimate |
· 估计这个任务需要多少时间 |
10 |
5 |
|
Development |
开发 |
60 |
30 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
20 |
40 |
|
· Design Spec |
· 生成设计文档 |
10 |
20 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
10 |
10 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
|
· Design |
· 具体设计 |
30 |
20 |
|
· Coding |
· 具体编码 |
240 |
180 |
|
· Code Review |
· 代码复审 |
10 |
20 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
300 |
|
Reporting |
报告 |
30 |
30 |
|
· Test Report |
· 测试报告 |
10 |
10 |
|
· Size Measurement |
· 计算工作量 |
10 |
10 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
30 |
|
合计 |
600 |
725 |
3.解题思路
刚开始看到这道题目的时候,对我个人而言不会的知识点还是挺多的,其中有两点比较主要。第一个是不知道如何用c++打开并读取一个文件,主要是通过百度查找,找到了fopen函数,然后在用visual stdio编译的时候,出现了用fopen不安全的情况,于是又学习了fopen_s函数。然后又查到了与读取文件相关的逐个读取fgetc。第二个看到题目中要求程序处理用户需求的模式为:wc.exe [parameter] [file_name]时不知道是什么,百度之后发现是主函数参数的相关知识,于是便进行了学习。其他基本都能根据以前的知识完成。所以在拿到题目后对这两个方面进行了学习,然后就正式开始了项目的开发。
4.设计实现过程
实现这道题目我运用了两种方法,这里只介绍我上传的这种。拿到题目后,由于我个人的习惯,先讲项目分为了WC.h、WC.cpp和main.cpp三个部分,然后对于基础部分,我分为了三个函数进行实现,分别用于计算字符数、单词数以及行数,每个函数都比较简单。这三个函数属于并列关系,分别实现一种功能。最终我的程序由这三个函数及主函数构成。
5.代码说明
在三个功能函数中,我认为头两个是比较关键的,因为两个都有特殊的点。

这是第一个函数,用于实现字符数的计算。首先用fgetc函数对输入进来的文件进行逐个读取,然后把除了空格的字符全部加上。这个函数特殊在,由于转义字符不应该算在内,而txt文件换行的转义字符为\r\n,结束的转义字符为\0,所以有了return后面的公式,是为了减去这些不必要的字符。

这是第二个函数,也是运用逐个读取,而这个函数特殊的点是由于fgetc返回的值是整型,所以在进行比较的时候需要用到ascii表转换。
6.测试运行
用于测试的文件(如下图):text.txt

测试字符个数的结果:

测试单词个数的结果:

测试行数的结果:

输入错误示例:
1.命令错误

2.无该文件

7.实际耗费的时间(如上表)
8.项目小结
虽然这次只完成了基础部分,但是却花费了我相当长的时间,这说明了我学习的内容还太少,更关键的是,学过的内容不够细致,很多由于细节而导致的bug花费了我非常的时间。其中有一个我花了三个小时才找出来的细节,我认为以后非常需要注意,在三个功能函数中,都有这样一个判断语句是(c = fgetc(str)) != EOF,而我一开始编程的时候是这么写的c = fgetc(str) != EOF,由于!=号的优先程度大于=号,所以会先进行后半部分的计算,这导致了我的结果一直出错,我总是认为优先级这个知识点很简单,所以经常被我忽视,但在实际编程中确是非常关键,这点引起了我的反思,其实每个知识点都是非常重要的,需要我们去留心和记忆,只有把这些简单,基础的知识点掌握到倒背如流,才有可能进行下一步的提升。这次个人项目对我来说收获颇多,感慨良多。让我戒骄戒躁,扎实学习。所以我还是很感谢这次个人项目的。
个人项目wordcount的更多相关文章
- 个人项目WordCount(C++/QT)
个人项目WordCount(C++/QT) GitHub项目地址:https://github.com/Nova-cjp/Word-Count 百度云链接:https://pan.baidu.com/ ...
- 结对项目-WordCount
结对作业: 成员:201631062115(me),201631062613(partner) 代码地址:https://gitee.com/ackary/WordCount 作业的链接地址:http ...
- 系统分析与设计结对项目——WordCount
结对项目完成WordCount 合作者:201631062507 201631062526(学号) 代码地址:https://gitee.com/WordCountMC/WordCountTeam ...
- 个人项目WordCount基础功能
码云地址:https://gitee.com/stedylan/WordCount 1.PSP表格: PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 10 1 ...
- MapReduce第一个项目 WordCount
参考自林子雨大数据教学: http://dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/ 创建一个文件夹:放入一个文本文件:填 ...
- 个人项目-wordcount
源代码上传到github的网址为:https://github.com/fancy-dawning/hello-world.git. wc.exe是一个常见的工具,它能统计文本文件的字符数,单词数和行 ...
- 软工项目WordCount
1.Github项目地址:https://github.com/JameMo/WordCount-for-C 2.在程序的各个模块的开发上耗费的时间: PSP2.1 Personal S ...
- WordCount by Java
WordCount by Java 软测第二周作业 该项目github地址如下: https://github.com/YuQiao0303/WordCount 一.概述 项目WordCount的需求 ...
- hadoop第一个例子WordCount
hadoop查看自己空间 http://127.0.0.1:50070/dfshealth.jsp import java.io.IOException; import java.util.Strin ...
随机推荐
- logging日志基础示例
import logging logger = logging.getLogger() # 获取日志对象 logfile = 'test.log' hdlr = logging.FileHandler ...
- PHP 5 echo 和 print 语句
PHP 5 echo 和 print 语句 在 PHP 中有两个基本的输出方式: echo 和 print. 本章节中我们会详细讨论两个语句的用法,并在实例中演示如何使用 echo 和 print. ...
- 4.15 省选模拟赛 编码 trie树 前缀和优化建图 2-sat
好题 np. 对于20分 显然可以爆搜. 对于50分 可以发现每个字符串上的问号要么是0,要么是1.考虑枚举一个字符串当前是0还是1 这会和其他字符串产生矛盾. 所以容易 发现这是一个2-sat问题. ...
- 4.9 省选模拟赛 生成树求和 变元矩阵树定理 生成函数 iDFT 插值法
有同学在loj上找到了加强版 所以这道题是可以交的.LINK:生成树求和 加强版 对于30分 爆搜 可实际上我爆搜只过了25分 有同学使用按秩合并并茶几的及时剪枝通过了30分. const int M ...
- C#与网络相关的两个监听的事件
今天遇到一个问题,当网络连接有问题的时候设计软件向用户发送通知,查了资料发现了两个相关的事件分享一下. 一.System.Net.NetworkInformation命名空间下的NetworkChan ...
- Latex—参考文献
在写文章的最后最让我头疼的就是参考文献的问题了.网上的资料也有很多,这里整合了很多资料得出了一个用bib文件的方法. 1. 显示确定参考文献(一句没什么用的废话). 2. 利用谷歌学术(镜像),如 ...
- Spark中直接操作HDFS
Spark作为一个基于内存的大数据计算框架,可以和hadoop生态的资源调度器和分布式文件存储系统无缝融合.Spark可以直接操作存储在HDFS上面的数据: 通过Hadoop方式操作已经存在的文件目录 ...
- Spark初探
Apache Spark是一个针对大规模数据的快速.统一处理引擎. One stack rule them all 1-Stream Processing :spark Streaming 2-Ad- ...
- SpringCloud服务注册中心
SpringCloud服务注册中心 Spring Cloud 是一系列框架的有序集合,如服务注册发现.配置中心.消息总线.负载均衡.断路器等,都可以用 Spring Boot 的开发风格做到一键启动和 ...
- 用Python绘制一套“会跳舞”的动态图形给你看看
在读技术博客的过程中,我们会发现那些能够把知识.成果讲透的博主很多都会做动态图表.他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法. 看这优美的舞姿 很多人学 ...