wc项目(node.js实现)
一、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实现)的更多相关文章
- WC 个人项目 ( node.js 实现 )
基于 node.js 的 wordCounter 个人项目 GitHub 项目地址:https://github.com/KofeChen/node.js-WordCounter 实现功能: 能够匹配 ...
- 个人项目WC.exe Node.js+electron实现
前言 实现语言:Javascript 编译工具:webstorm GitHub:https://github.com/NPjuan/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本 ...
- Node.js 从零开发 web server博客项目[express重构博客项目]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[数据存储]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[koa2重构博客项目]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[安全]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[日志]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[登录]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[接口]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- Node.js 从零开发 web server博客项目[项目介绍]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
随机推荐
- shell中的fg 命令
fg(前台执行) frontground bg(后台执行) background & daemon 总结: 一般命令在前台执行(fg),执行完毕后,控制返回给用户. 在命令后面加上&, ...
- ORA-01555 When Max Query Length Is Less Than Undo Retention, small or 0 Seconds (Doc ID 1131474.1)
ORA-01555 When Max Query Length Is Less Than Undo Retention, small or 0 Seconds (Doc ID 1131474.1) A ...
- Windows 10 路由表管理
基本管理命令: route print route命令基本格式: ROUTE [-f] [-p] [-|-] command [destination] [MASK netmask] [gateway ...
- emacs 帮助相关命令
emacs 帮助相关命令 如下表: No. 键盘操作 键盘操作对应的函数 回答的问题 01 ctrl-h c describe-key-briefly 这个按键组合将运行哪个函数 02 ctrl-h ...
- Python入门基础学习(函数)
Python基础学习笔记(三) 函数的概念: 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用 函数的使用包含两个步骤: 1.定义函数 --封装独立的功能 2.调用函数 --享受 ...
- /usr/lib/python2.7/subprocess.py", line 1239, in _execute_child
Traceback (most recent call last):File "/home/eping/bin/repo", line 685, in main(sys.argv[ ...
- 忘记IBM服务器的登录IP
问题描述: 一台服务器安装了winserver2003系统,经过漫长的加电启动,能进入到win2003的登录界面,提示ctrl+alt+del登录界面,但是发现键盘失灵了,无法键入ctrl+alt+d ...
- day46_9_5前端(3)
一.调节长宽. 在css中可以对块级标签设置长和宽,但是对行内标签无效,其属性如下: 1.height:80px 高度. 2.width:80px 宽度. 二.字体属性. 设置一个标签中的字体.比如黑 ...
- NOIP201310华容道
题目描述 Description 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时 ...
- DRF--介绍和安装
前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高.这种应用模式比较适合纯网页应用,但是当后端对接 ...