个人项目:WC(Node.js+Web端实现)

本项目GitHub地址:https://github.com/sherlockHSY/WC

一、项目要求

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

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

  具体功能要求:

    程序处理用户需求的模式为:wc.exe [parameter] [file_name]

    基本功能列表:

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

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

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

    扩展功能:

      -s 递归处理目录下符合条件的文件。
      -a 返回更复杂的数据(代码行 / 空行 / 注释行)。

    高级功能:

      -x 这个参数单独使用。用户可图形化选取界面,选取文件展示文件信息。

二、PSP表格

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划 4030
· Estimate· 估计这个任务需要多少时间 30 25
Development开发 790710
· Analysis· 需求分析20 20
· Design Spec· 生成设计文档 40 30
· Design Review· 设计复审  30 30
· Coding Standard· 代码规范 30 40
· Design· 具体设计 80 100
· Coding· 具体编码(查找文档) 470 370
· Code Review· 代码复审 60 50
· Test· 测试(自我测试,修改代码,提交修改) 60 80
Reporting报告120120
· Test Report· 测试报告 60 80
· Size Measurement· 计算工作量 30 50
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划 30 30
 合计 950 960

三、解题思路

  拿到这个题目后,首先理解项目需求,大致是统计文件中的数据,需要统计包括字符数、行数、单词数、代码行、注释行、空行等结果。会涉及到文件的读写操作。经考虑后,决定用Node.js实现。图形界面直接使用web页面。

  1. 开发准备

   实现语言:Node.js

   IDE:VSCode

  2.需求分析:

   (1)基础功能:首先是命令行指令与参数的获取。利用yargs模块读取命令的输入,判断指令类型,以及对指令和参数进行验证,确保输入是否合法。然后执行相应的逻辑处理。使用原生fs模块创建文件IO流,利用readline模块逐行读取文件内容,再结合正则表达式实现对文件字符数、行数、单词数的统计

   (2)进阶功能:实质上是在基础功能上的一些拓展,写个递归函数增加对文件夹的递归处理,以及正则匹配出通配符(* ?),在对文件搜索时加以判断。-a 命令中的复杂查找,结合正则匹配即可实现统计。

   (3)高级功能:图形化界面的实现。由于Node.js语言本身作为一门新起的后端语言,本身就服务于web端,所以图形界面直接用web实现,只要命令行输入命令,调用Node的子进程实现自动打开浏览器窗口运行。web页面采用html,css,js实现。

四、设计实现

  流程图

  

  1. index.js作为程序主入口,获取命令行输入的指令和参数后,校验指令输入是否合法,做出相应处理,相当于Controll层。

  2. handleCommand.js将对各个指令的逻辑处理过程高度封装对应函数,并通过export暴露出模块,相当于Service层,对数据的深层处理。供Controll层调用

  3. webView.js实现对web层的处理。通过开启http server监听页面请求,并主动触发自动打开web页面,渲染index.html(相当于View层)。

五、测试

  单元测试

  1.测试基础指令

          测试文件 1.c

   

   测试结果:

     

  2.测试进阶指令  测试递归读取文件夹下的文件,并统计复杂数据

         测试文件夹 testDir

         

    测试结果:

     

  3.测试高级指令

     

   4. 通配符测试

   测试通配符 * :

     

     测试通配符 ? :

          

六、总结     

  本项目采用Node.js+web是我的一次尝试,使用web的初衷是想要与传统的GUI不一样。这个项目的开发,我第一次一个人实现一个完整的流程,从需求分析、设计、开发到测试,学习到了软件工程的很多思想和知识,把项目的本身功能点实现是一方面,项目的测试也是非常重要的一部分。在实际开发中,模块的构建和整体框架的搭建也十分重要。我也认识到只有把各个方面都尽可能的做好,才能使程序具有更好的健壮性。

转载于:https://www.cnblogs.com/sherlocksy/p/11588216.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值