wc.exe指令(C++)

https://github.com/kielingpao/wc

项目相关要求

wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。

实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
具体功能要求:
程序处理用户需求的模式为:

wc.exe [parameter] [file_name]

基本功能列表:

wc.exe -c file.txt     //返回文件 file.txt 的字符数

wc.exe -w file.txt    //返回文件 file.txt 的词的数目

wc.exe -l file.txt     //返回文件 file.txt 的行数

解题思路

实现部分:

1.首先统计字符等的功能,只需要用fopen打开读取文件就基本搞定了,剩下就是遍历文件,什么数据都有了,这个函数也能实现绝对路径相对路径。

2.递归文件,只需要调用windows api即可,以前操作过,找找以前的笔记管理系统代码即可。具体就是用api函数返回当前目录记录在一个string对象(记录当前目录)中,之后对目录的操作都可以通过操作这个string对象进行,和用另一个api函数找到文件夹句柄这两个windows api配合,再使用递归的代码写法在该目录下进行递归遍历即可。

3.图形界面,使用easyX库即可。

4.要通过命令行运行,输入指令而不是通过“用户交互”来进行程序,所以程序用使用命令行参数的main函数。

测试部分:

1.需要考虑到各种文件字符、各种输入的情况,保证程序的鲁棒性。

2.要创建空字符文件、只有一个字符、空行、只有一行等的文件来进行测试。

设计实现过程

只要DOS命令行运行了wc.exe命令,就进入一个while(1)死循环里,不断检测判断匹配那几个命令,若匹配不到,就break退出死循环同时退出wc.exe程序,返回dos操作系统。

遇到的困难及解决方法

1.暑假没打代码,编译器莫名其妙消失了,解决办法:重新下载编译器,重新设置环境变量。

2.换了个新的编译器,现在使用cl编译器,环境变量等等设置有点不顺手,解决办法:多打代码。

3.关于递归文件。解决办法:以前做过笔记管理系统递归遍历、删除指定目录下所有文件,思路是调用几个windows API,那份代码当初几乎没有注释,几千行,晕。还是重写好了。这个也正在做,目前还有bug。

4.关于图形界面,以前做过C语言下调用别人的库完成图形界面,IDE莫名其妙都没了,那个库也忘记在哪了,代码也已经不存在了。解决办法:在学C++的图形界面。

5.目前只完成基本功能。解决办法:很认真地完成,也是严格按照基本功能的描述来做。

关键代码or设计说明

所有操作都在dos命令行下操作即可。不用IDE,只用记事本写代码,用命令行编译运行即可。

在命令行使用wc.exe指令完成对当前目录的任意文件进行统计。

可以与dos的命令配合,例如CD、type指令这些通通都可以使用,wc.exe(或wc)已然成为DOS命令行下一个指令。

测试运行

wc.exe指令(C++)

PSP

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

一小时

一小时

· Estimate

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

一周

一周

Development

开发

3h

3h

· Analysis

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

2d

2d

· Design Spec

· 生成设计文档

3h

3h

· Design Review

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

1h

1h

· Coding Standard

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

2h

2h

· Design

· 具体设计

5h

5h

· Coding

· 具体编码

4h

4h

· Code Review

· 代码复审

1h

1h

· Test

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

2h

2h

Reporting

报告

1h

1h

· Test Report

· 测试报告

1h

1h

· Size Measurement

· 计算工作量

20min

20min

· Postmortem & Process Improvement Plan

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

30min

30min

合计

 

项目小结

太久没有打代码了,好多好多命令都忘记了,而且换了cl,似乎还有很多东西可以挖掘,刚好趁这个机会复习下,路还长。

上一篇:引擎设计跟踪(九.14.2f) 最近更新: OpenGL ES & tools


下一篇:Linux 上从 MySQL 迁移到 MariaDB 的简单步骤