码迷,mamicode.com
首页 > 其他好文 > 详细

个人项目wordcount

时间:2020-03-23 09:31:49      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:repo   是什么   提交   RoCE   相关   ext   有一个   代码规范   main   

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

标签:repo   是什么   提交   RoCE   相关   ext   有一个   代码规范   main   

原文地址:https://www.cnblogs.com/inimble/p/12549838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!