个人项目-wc
个人项目-WC (C语言)
一、Github地址:https://github.com/Lin-J-F/WC
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 240 | 400 |
Development | 开发 | 120 | 160 |
· Analysis | · 需求分析 | 30 | 45 |
· Design Spec | · 生成设计文档 | 40 | 50 |
· Design Review | · 设计复审 | 40 | 60 |
· Coding Standard | · 代码规范 | 20 | 30 |
· Design | · 具体设计 | 60 | 60 |
· Coding | · 具体编码 | 160 | 300 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 60 |
Reporting | 报告 | 120 | 130 |
· Test Report | · 测试报告 | 60 | 50 |
· Size Measurement | · 计算工作量 | 20 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 40 | 40 |
合计 | 1070 | 1475 |
三、解题思路
1、拿到项目,我首先确定我想要用的语言,因为我对C语言的熟悉程度比JAVA高,所以我先思考了一下如何用C语言来写。对比发现C语言上手比较简单,并且已经有了部分思路,就确定用C来写。
2、首先确定整体框架,确定用C语言写后,决定直接把-w、-l、-c 的统计方法写出来,然后直接在主程序中调用方法,来实现这三个功能。(后面在写 -a 的时候,发现自己将统计空白行、代码行和注释行的代码写在同一个方法里面的时候,互相之间条件的影响导致里面存在BUG,修复后还是不能正确统计三个数据,所以后来重新写 -a 的代码,将三种方法分开,使他们的条件不会互相影响,然后在主程序中,触发了 --a 的条件后,直接调用三种方法各自计算自己的数据)。
3、由于对文件操作函数不是很熟悉,所以我又花了大概40分钟上网查了C语言文件操作函数的相关资料。
4、在做图形界面的时候找不到很好的方法来解决,加上时间上稍微有点赶,就鸽了这个内容。(做了一大半发现后面要弄图形界面,没有看好要求,用JAVA做图形界面简单多了)
四、设计实验过程
1、一开始先将基本需求写出来,写了统计字符、单词和行数的三个函数出来,然后用主函数main 调用这三个函数,将所要求的结果值返回到主程序中。
2、根据要求写拓展功能,返回更复杂的数据。跟第三大点提到的一样,一开始写了一个Complex的函数。来直接求那三组数据,后面因为各自条件的影响,无法解决导致不能求出正确的数据,后面将Complex函数分成三个函数,然后在主函数中,收到“-a”的条件时,直接调用这三个函数,将结果值返回到主函数。
五、测试运行
测试不存在文件:
测试空文件:
测试只有一个词的文件:
测试只有一行的文件:
测试一个典型的源文件:
主函数:
int main(){
char in[2], file[10];
while(1){
printf("请用户输入命令: WC exe -");
scanf("%s",&in);
if(in[0]=='c'){
printf("请输入文件名:");
scanf("%s",&file) ;
int count=0;
count=Count(file);
printf("文件的字符数为: %d\n",count);
continue;
}
if(in[0]=='w'){
printf("请输入文件名:");
scanf("%s",&file) ;
int world=0;
world=World(file);
printf("文件单词数为: %d\n",world);
continue;
}
if(in[0]=='l'){
printf("请输入文件名:");
scanf("%s",&file) ;
int line=0;
line=Line(file);
printf("文件行数为: %d\n",line);
continue;
}
if(in[0]=='a'){
printf("请输入文件名:");
scanf("%s",&file) ;
int blank,code,explain,line;
blank=Blank(file),line=Line(file) ,explain=Explain(file);
printf("空白行数为: %d\n",blank);
printf("代码行数为: %d\n",line-blank);
printf("注释行数为: %d\n",explain);
continue;
}
}
getchar();
system("pause");
}
六、项目总结:
1、对C语言相关知识点遗忘得有点厉害,查找资料的时间花得有点多,但是经过这次的作业,又捡回了C语言的相关知识。
2、做项目之前要仔细看所给出的要求,根据需求选择更好的语言,然后整理好自己的思路,再慢慢通过代码实现,不要想着一蹴而就。
3、写代码的时候逻辑不够严谨,而且容易顾此失彼,因为某些改动导致程序出错,后来发现改动的地方在前面相应位置没有改动。
4、好好利用PSP,调整自己在整个工程中相应板块所用的时间,不要再不重要的地方放过多的时间。
个人项目-wc的更多相关文章
- 实践简单的项目WC
#include<iostream> #include<fstream> #include<string> #include<Windows.h> us ...
- 个人项目——wc源程序特征统计
这一次要做的项目是wc——统计程序文件特征的命令行程序. 根据需求需求得到的模式为:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需 ...
- 实现项目WC
软件的需求分析 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 - ...
- 个人项目-WC(C/C++ 兼容Linux和Windows)
一.Github地址 https://github.com/S-TRAVELER/WC 实现的功能: 支持 -c 支持 -w 支持 -l 支持 -s 支持 -a 图形界面 多参数(文件名或通配符表达式 ...
- 个人项目-WC (java实现)
一.Github地址:https://github.com/734635746/WC 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...
- 个人项目-WC(Java实现)
一.Github项目地址: https://github.com/kestrelcjx/-WC-Java- 二.PSP表格 PSP2.1 Personal Software Process Stage ...
- 个人项目 wc(java实现)
一.Github网址: https://github.com/Clarazhangbw/Wc.exe 二.PSP表 PSP2.1 Personal Software Process Stages 预估 ...
- 个人项目WC(Python实现)
一.GitHub地址 https://github.com/hoka-17/WC 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际 ...
- 个人项目—WC
一,Github地址:https://github.com/mushan520/WC.git 二.PSP表格: PSP2.1 Personal Software Process Stages 预估耗 ...
随机推荐
- logrotate日志管理工具与split文件切割命令
概述 logrotate是一个Linux系统默认安装了的日志文件管理工具,用来把旧文件轮转.压缩.删除,并且创建新的日志文件.我们可以根据日志文件的大小.天数等来转储,便于对日志文件管理. logro ...
- wal2json java jdbc 试用
上边有介绍过使用命令行模式的wal2json扩展使用,以下是一个jdbc 集成的试用(pg jdbc 驱动天然支持复制) 环境准备 pg(包含wal2json扩展)docker-compose 文件 ...
- 2.第一个Vue程序
1.IDEA中安装Vue.js插件 2.建立项目以及html文件 1.创建一个 HTML 文件 2.引入 Vue.js <script src="https://cdn.jsdeliv ...
- 部署ComsenzDiscuz BBS论坛系统
1.准备环节 [root@localhost ~]# unzip ComsenzDiscuz-DiscuzX-master.zip //解包 [root@localhost ~]# cd Discuz ...
- [LeetCode] 839. Similar String Groups 相似字符串组
Two strings X and Y are similar if we can swap two letters (in different positions) of X, so that it ...
- 第04组 团队Git现场编程实战
组员职责分工 组员 分工 林涛(组长) 分配任务.整理数据.写博客 童圣滔 UI界面制作 林红莲 UI界面制作 潘雨佳 测评出福州最受欢迎的商圈 于瀚翔 测评出福州最受欢迎的商圈 覃鸿浩 测评出福州人 ...
- loj 2135 「ZJOI2015」幻想乡战略游戏 - 动态点分治
题目传送门 传送门 题目大意 给定一棵树,初始点权都为0,要求支持: 修改点权 询问带权重心 询问带权重心就在点分树上跑一下就行了.(枚举跳哪个子树更优) 剩下都是基础点分治. 学了一下11-dime ...
- Ubuntu 获取内核源码树
输入:apt-cache search linux-source //查看内核版本 输入:apt-get install linux-source-3.0.0 //获取对应版本的内核,默认安装在/us ...
- 万亿数据下Hadoop的核心竞争力
1.前言 在大数据时代,Hadoop有着得天独厚的优势.然而,每个企业的技术储备和需求特点不同,他们希望从海量的客户数据中挖掘真正的商业价值,像Google.Facebook.Twitter等这样的企 ...
- python运维开发常用模块(5)文件目录对比模块filecmp
1.filecmp模块介绍 当我们进行代码审计或校验备份结果时,往往需要检查原始与目 标目录的文件一致性,Python的标准库已经自带了满足此需求的模块 filecmp.filecmp可以实现文件.目 ...