一、github地址:https://github.com/Jasminejiamei/homework-wc

二、PSP

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

三、解题思路

刚开始看到题目,以为一定要用c语言或者java才可以实现一个.exe的工具,后来认真看才知道是模仿实现它的功能以及扩充即可,不限定语言。我比较熟的编程语言是JavaScript,但是浏览器中的JavaScript是没有文件操作的能力的, 而Node中的JavaScript具有文件处理系统的,对于读取文件这样的操作是很简便的,于是我决定用node.js,开发环境为:Visual Studio Code。

1. 如何用node去读取文件,如何读取用户在终端输入的命令行,其中统计的逻辑相对比较容易实现,于是通过学习node.js的fs文件系统,以及`process.argv` (获取命令行指令操作)的相关内容,找到了解决的思路。

2. 在node的包装工具npm的使用中,package.json文件是用于定义整个包的属性的,在测试的时候发现命令行自定义不了,在了解了其相关配置之后,添加了一个新的配置, {"bin":{"homework":"./index.js"}},正是因为缺少了这个配置,导致homework命令词无法被识别。

3. 对于用户输入-s命令呢,如果输入的信息不规范怎么办?

如果是对于-s命令输入不规范,则会返回相关能正确输入的信息给用户,例如:

如果命令是系统本来不是自定义的,则不作处理,返回“没有该指令”;

4. 处理一个文件的信息统计容易实现,如何递归处理一个文件夹的内容呢,开始想得很复杂,但其实最终解决的方法很简单,做个是否为文件夹的判断之后,如果为文件夹,直接调用fileDisplay()递归即可。

5. 用node的语法不是十分熟悉,在完成高级功能的时候,不知道通过什么方式去打开一个界面,想到的第一种方案是写一个前端的界面,用node的搭建一个小型的后台,写接口,前端请求数据,后台返回即可,最后也是用这种方案实现的。

四、设计实现过程

1.项目基本功能与拓展功能的系统流程图

2.图形界面

用node写出了一个简单的http服务器,再写一个html文件请求数据即可,用homeworkWc -x  filename 运行即可自动打开一个html图形界面

五、测试

测试的文件内容:

file.txt

test.doc

测试基础指令:

1. homeworkWc -l filename

2. homeworkWc -w filename

3.homeworkWc -c filename

拓展要求指令:

1. homeworkWc -s -l/-w/-c  file

错误输入时:

正确输入时:

2.  homeworkWc -a  filename

测试高级功能的指令:

打开页面:

点击按钮后:

 六、总结

  在做此项目的过程中我熟悉了一门我想深入学习的语言,并且用这门语言完成了这个作业要求的功能,以后还要多尝试。同时从软件开发的角度来看,在这个项目的练习中体验了软件的需求分析,设计,开发和测试等过程,同时也更能体会一个产品可能他要实现的功能并不难,但是在开发的角度却要考虑很多。在实现这个项目的过程中遇到bug的时候有点心浮气躁,希望能够改掉这个不好的习惯,冷静分析问题,用更好的方案解决问题。

wc项目(node.js实现)的更多相关文章

  1. WC 个人项目 ( node.js 实现 )

    基于 node.js 的 wordCounter 个人项目 GitHub 项目地址:https://github.com/KofeChen/node.js-WordCounter 实现功能: 能够匹配 ...

  2. 个人项目WC.exe Node.js+electron实现

    前言 实现语言:Javascript 编译工具:webstorm GitHub:https://github.com/NPjuan/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本 ...

  3. Node.js 从零开发 web server博客项目[express重构博客项目]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  4. Node.js 从零开发 web server博客项目[数据存储]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  5. Node.js 从零开发 web server博客项目[koa2重构博客项目]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  6. Node.js 从零开发 web server博客项目[安全]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  7. Node.js 从零开发 web server博客项目[日志]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  8. Node.js 从零开发 web server博客项目[登录]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  9. Node.js 从零开发 web server博客项目[接口]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  10. Node.js 从零开发 web server博客项目[项目介绍]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

随机推荐

  1. impdp中的DISABLE_ARCHIVE_LOGGING参数测试

    impdp中的DISABLE_ARCHIVE_LOGGING参数测试 发表于 2017 年 04 月 08 日 由 惜分飞 联系:手机/微信(+86 13429648788) QQ(107644445 ...

  2. MySQL 部署分布式架构 MyCAT (四)

    分片(水平拆分) 2.取模分片(mod-long) cd /data/mycat/conf cp schema.xml schema.xml.rang-long vi schema.xml <? ...

  3. 渗透测试之wep无线网络破解

    WEP 无线网络破解 WEP(无线等效协议)于 1999 年诞生,并且是用于无线网络的最古老的安全标准.在 2003 年,WEP 被 WPA 以及之后被 WPA2 取代.由于可以使用更加安全的协议,W ...

  4. Python—函数进阶篇

    lambda表达式(匿名函数表达式) 作用:创建一个匿名函数对象.同def类似,但不提供函数名. 语法:lambda [形参1,形参2,...] : 表达式 语法说明 lambda 只是一个表达式,它 ...

  5. 渗透测试学习 十、 MSsql注入下

    大纲:MySQL介绍及操作 MySQL注入原理 MySQL注入其他操作 一.MySQL介绍及操作 介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle ...

  6. 解决vue+springboot前后端分离项目,前端跨域访问sessionID不一致导致的session为null问题

    问题: 前端跨域访问后端接口, 在浏览器的安全策略下默认是不携带cookie的, 所以每次请求都开启了一次新的会话. 在后台打印sessionID我们会发现, 每次请求的sessionID都是不同的, ...

  7. JAVA中this和super用法

    参考网上资料和自行理解总结java中this和super中各自用法及其差异 <一>. this的用法 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对 ...

  8. 数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))

    有t1 和 t2 两个表,表中的数据和字段如下: 执行 如下SQL语句: update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t ...

  9. table表格属性

  10. Selenium WebDriver 中鼠标事件(全)

    Selenium WebDriver 中鼠标事件(全) 鼠标点击操作  鼠标点击事件有以下几种类型:  清单 1. 鼠标左键点击   Actions action = new Actions(driv ...