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的更多相关文章

  1. 个人项目WordCount(C++/QT)

    个人项目WordCount(C++/QT) GitHub项目地址:https://github.com/Nova-cjp/Word-Count 百度云链接:https://pan.baidu.com/ ...

  2. 结对项目-WordCount

    结对作业: 成员:201631062115(me),201631062613(partner) 代码地址:https://gitee.com/ackary/WordCount 作业的链接地址:http ...

  3. 系统分析与设计结对项目——WordCount

    结对项目完成WordCount 合作者:201631062507  201631062526(学号) 代码地址:https://gitee.com/WordCountMC/WordCountTeam ...

  4. 个人项目WordCount基础功能

    码云地址:https://gitee.com/stedylan/WordCount 1.PSP表格: PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 10 1 ...

  5. MapReduce第一个项目 WordCount

    参考自林子雨大数据教学:     http://dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/ 创建一个文件夹:放入一个文本文件:填 ...

  6. 个人项目-wordcount

    源代码上传到github的网址为:https://github.com/fancy-dawning/hello-world.git. wc.exe是一个常见的工具,它能统计文本文件的字符数,单词数和行 ...

  7. 软工项目WordCount

    1.Github项目地址:https://github.com/JameMo/WordCount-for-C        2.在程序的各个模块的开发上耗费的时间: PSP2.1 Personal S ...

  8. WordCount by Java

    WordCount by Java 软测第二周作业 该项目github地址如下: https://github.com/YuQiao0303/WordCount 一.概述 项目WordCount的需求 ...

  9. hadoop第一个例子WordCount

    hadoop查看自己空间 http://127.0.0.1:50070/dfshealth.jsp import java.io.IOException; import java.util.Strin ...

随机推荐

  1. 数据库层级关系转换为树结构的json

    原文链接:https://blog.csdn.net/Tonysdyp/article/details/80987959 首先是数据库设计: 通过查询数据库,将全局数据作为一个ArrayList< ...

  2. jquery判断radio是否选中

    微交易-实体系统 微交易-虚拟系统   <div class="system"> <div class="systemt"> <l ...

  3. Pandas 复习2

    import pandas as pd import numpy as np food_info = pd.read_csv('food_info.csv') 1.处理缺失值(可使用平均数,众数填充) ...

  4. 解Bug之路-Nginx 502 Bad Gateway

    解Bug之路-Nginx 502 Bad Gateway 前言 事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻.当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在 ...

  5. async和await的使用总结 ~ 竟然一直用错了c#中的async和await的使用。。

    对于c#中的async和await的使用,没想到我一直竟然都有一个错误.. ..还是总结太少,这里记录下. 这里以做早餐为例 流程如下: 倒一杯咖啡. 加热平底锅,然后煎两个鸡蛋. 煎三片培根. 烤两 ...

  6. springMVC 与 html RESTful 解决方案

    若前端为html 而非jsp  且 拦截如下 <servlet-mapping> <servlet-name>springMVC</servlet-name> &l ...

  7. 一文学会MySQL的explain工具

    开篇说明 (1) 本文将细致介绍MySQL的explain工具,是下一篇<一文读懂MySQL的索引机制及查询优化>的准备篇. (2) 本文主要基于MySQL5.7版本(https://de ...

  8. PHP+Redis链表解决高并发下商品超卖问题

    目录 实现原理 实现步骤 上一篇文章聊了一下使用Redis事务来解决高并发商品超卖问题,今天我们来聊一下使用Redis链表来解决高并发商品超卖问题. 实现原理 使用redis链表来做,因为pop操作是 ...

  9. 在Spring Boot中动态实现定时任务配置

    原文路径:https://zhuanlan.zhihu.com/p/79644891 在日常的项目开发中,往往会涉及到一些需要做到定时执行的代码,例如自动将超过24小时的未付款的单改为取消状态,自动将 ...

  10. python字符串和数字的基本运算符

    python字符穿的4种表达方式 name='张三' name="张三" name='''张三''' name="""张三""&q ...