个人项目:WC

一、项目地址

  https://github.com/AceWong1024/Wordcounter

二、PSP表格、

PSP1.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 20 

 25

· Estimate

· 估计这个任务需要多少时间

 20

 20

Development

开发

 1200

 1500+

· Analysis

· 需求分析 (包括学习新技术)

 120

 120

· Design Spec

· 生成设计文档

 30

 30

· Design Review

· 设计复审 (和同事审核设计文档)

 0

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 60

60 

· Design

· 具体设计

 400

300 

· Coding

· 具体编码

600 

 800

· Code Review

· 代码复审

 200

 400

· Test

· 测试(自我测试,修改代码,提交修改)

 60 

 60

Reporting

报告

 60

 80

· Test Report

· 测试报告

 30  

 30

· Size Measurement

· 计算工作量

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30

 30

合计

 1700

1900

三、解题思路

  拿到题目后,基本功能都大概能想到如何去写。但是,里面涉及的一些系统编程的内容还有项目管理文件的使用由于太久没有使用,在编码的时候需要不停地搜索相关的内容进行回顾。

  大致思路如下,程序先根据输入参数进行功能的选择:

  -c 返回文件 file.c 的字符数

  -w 返回文件 file.c 的词的数目  

  -l   返回文件 file.c 的行数  

  -s   递归处理目录下符合条件的文件。

  -a   返回更复杂的数据(代码行 / 空行 / 注释行)。

  -x 打开图形界面。

  前五个功能均能包装成工具方法,而最后一个图形界面功能可以利用图形界面调用前面几个功能的工具,这样的安排就能最大程度解耦。

  因此,根据上述大致思路,需要的技术大致如下:

  1、C++面向对象

  2、Linux系统编程

  3、QT

四、设计实现过程

  鉴于我个人文字表达能力并不好,因此整个程序设计过程大致通过以下程序流程图展现。

  

   程序主体根据输入参数选择所需的工具函数,然后获取结果后按需输出。

五、功能截图

  

  统计字符数

  

   统计单词数

  

   统计行数

  

   复杂功能

  

   图形界面功能

  

   

   

   

 六、项目测试

  空文件
  只有一个字符的文件
  只有一个词的文件
  只有一行的文件
  一个典型的源文件

  五种文件均没有报错。

七、项目小结

  经过本次项目,我重新回顾了一下linux系统编程和QT的相关知识,同时也学会了从0到1实现一个程序,从预估、设计、编码、开发、测试、文档等流程中锻炼自己。

并且,在作业当中使用了github的方法来提交作业。第一锻炼了养成做电子笔记的习惯,第二也有了写博客的概念,同时也增强了自己代码能力外的其他学习能力。

原文地址:https://www.cnblogs.com/acewong/p/11587946.html