Wc.exe

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

githud地址:https://github.com/Coothen/practice.git

一、PSP表-预估耗时

PSP2.1 Personal Software Process Stages 预估耗时(分钟)
Planning 计划 60
· Estimate · 估计这个任务需要多少时间 60
Development 开发 840
· Analysis · 需求分析 (包括学习新技术) 60
· Design Spec · 生成设计文档 30
· Design Review · 设计复审 (和同事审核设计文档) 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30
· Design · 具体设计 30
· Coding · 具体编码 480
· Code Review · 代码复审 60
· Test · 测试(自我测试,修改代码,提交修改) 120
Reporting 报告 100
· Test Report · 测试报告 60
· Size Measurement · 计算工作量 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30
合计   1000

二、解题思路

  • 先去GitHub或CSDN博客上面找类似的源程序,比较其他语言,我对C语言较熟悉,所以找了几份用C编程的源程序,并在编译器上运行测试效果。

  • 选择一份具备基本功能的源代码开始分析,并尝试根据其思路自己编辑。

  • 基本功能实现后,开始尝试实现拓展功能。

  • 拓展功能实现后,开始测试并修改代码。

三、设计实现过程

  • 先写两个功能函数

    void file_error(){};文件打开错误

    void c_w_lCount(int wc_char,int wc_word,int wc_line,FILE *fp){};实现字符,单词,行数的计数

  • 再写主函数

四、代码说明

//文件打开错误函数
  void file_error(){  
printf("打开有误!\n");
printf("请按enter键继续....");
_getch();
exit(0);
}
//字符数,单词数,行数计算
  void c_w_lCount(int wc_char,int wc_word,int wc_line,FILE *fp){//单词,字符,行数计算函数
char *c;
while (1){
char ch;
ch = fgetc(fp);//fgetc():从FP中 返回一个字符
if (ch >= 'A'&&ch <= 'z'){
putchar(ch);//终端输出一个字符
wc_char++;}
else if (ch == ' '){
  putchar(ch);
wc_word++;}
else if (ch == '\n'){
putchar(ch);
wc_word++;
wc_line++;}
else if (ch==EOF){
break;}
_getch();
printf("\n该文件中字符数有 %d个。\n", wc_char);
printf("该文件中单词数有 %d个。\n", wc_word);
printf("该文件中行数有 %d行。\n", wc_line);
printf("请输入统计方式如(-c\-w\-l):");//输入“-c"显示字符数 ,输入“-l"显示行数,输入“-w"显示单词数
gets(c);
if (strcmp(c, "-c") == 0){
printf("该文件中字符数有 %d个。\n",wc_char);}
else if (strcmp(c, "-w") == 0){
printf("该文件中单词数有 %d个。\n",wc_word);}
else if (strcmp(c, "-l") == 0){
printf("该文件中行数有 %d行。\n",wc_line);}
exit(0);}

五、测试运行

基本功能:

文件打开错误提示

实现文件字符数,单词数,行数的计算。

输入-w/-c/-l,相对应输出字符数,单词数和行数。

统计字符数:

统计单词数:

统计行数:

六、PSP表-实际耗时

PSP2.1 Personal Software Process Stages 实际耗时(分钟)  
Planning 计划 50  
· Estimate · 估计这个任务需要多少时间 50  
Development 开发 680  
· Analysis · 需求分析 (包括学习新技术) 90  
· Design Spec · 生成设计文档 20  
· Design Review · 设计复审 (和同事审核设计文档) 20  
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10  
· Design · 具体设计 60  
· Coding · 具体编码 240  
· Code Review · 代码复审 120  
· Test · 测试(自我测试,修改代码,提交修改) 120  
Reporting 报告 90  
· Test Report · 测试报告 60  
· Size Measurement · 计算工作量 10  
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20  
合计   820  

七、总结

遇到的问题:

  1. 时间过于紧迫。拿到题目,虽然题目并不是很难,但对于缺乏实践的我来说,是一个挑战,我从来没试过在这么短的时间内写一个小程序。

  2. 之前未接触过GitHub,在GItHub使用上面花费了较长时间。

  3. 开始的时间较晚,到后面发现很多问题,但是来不及修改。

改进及建议:学习用JAVA语言编写程序,此次用C语言编写程序,运行界面为编译器的运行窗口,并未自己制作视图界面。

收获:

  1. 知道独自开发一个小程序的基本步骤,学会使用预估耗时和实际耗时进行对比,从而提高自己的效率。

  2. 意识到自己C语言和JAVA语言的薄弱,应利用大三时间复习巩固,并多实践。

  3. 学会使用GitHub。

软工作业-Wc的更多相关文章

  1. 软工作业-wc(Python实现)

    GitHub地址:GitHub PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划  30  40 · Esti ...

  2. 软工作业-----Alpha版本第一周小结

            软工作业-----Alpha版本第一周小结   Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...

  3. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  4. 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业

    概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...

  5. BUAA2020软工作业——提问回顾与个人总结

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...

  6. 软工作业No.3--团队作业:甜美女孩出击!

    队名:甜美女孩 队员包括: 姓名 学号 身份 曾祎祺 3216005211 队长 邓画月 3216005212 队员 何颖琪 3216005213 队员 梁沛诗 3216005214 队员 梁子君 3 ...

  7. 软工作业No.1。Java实现WC.exe

    网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...

  8. 软工作业1—java实现wc.exe

    github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c     //返回文件 file.c 的字符数 ...

  9. 软工作业1:wc.exe项目开发(java)

    Github地址:https://github.com/Zzhaomin/learngit 项目相关要求 : wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...

随机推荐

  1. Android学习六---OpenCV for android samples

    搭建好OpenCV4Android环境后,就要着手开发自己的应用了.对于一个没有OpenCV基础的人来开发OpenCV应用确实有点难度,不过我们可以从samples里学起,结合javadoc和万能的网 ...

  2. less本地环境输出hello-world

    在学任何东西之前, 我就是有个习惯, 先搞定这个东西最最简单的使用方法. 然后在 深入学习, 毫无疑问hello-world一直是那么简单. 准备环境 较新版的高级浏览器. WAMP环境. less. ...

  3. go——基本构成要素

    Go的语言符号又称为词法元素,共包括5类内容: 标识符(identifier) 关键字(keyword) 字面量(literal) 分隔符(delimiter) 操作符(operator)它们可以组成 ...

  4. java要注意的问题3

    十七.使用正则 正则表达式的结构摘录如下(来源: Oracle官网) 字符 x 字符x / 反斜杠 /0n 8进制值为0n的字符(0<=n<=7) /0nn   /0mnn 8进制值为0m ...

  5. angularjs中directive声明scope对象的用法

    总的来说用法 分三种: >1: scope: false  --> 继承父域,实现 双向数据绑定 示例代码 可自测: <!DOCTYPE html> <html lang ...

  6. C# Winform DataGrid 绑定List<> Or ObservableCollection<> 类型无法自动刷新问题

    当DataGrid通过绑定List<> Or ObservableCollection<> 类型数据,通过INofityPropertyChanged接口通知数据改变进行刷新无 ...

  7. winform + INotifyPropertyChanged + IDataErrorInfo + ErrorProvider实现自动验证功能

    一个简单的Demo.百度下载链接:http://pan.baidu.com/s/1sj4oM2h 话不多说,上代码. 1.实体类定义: class Student : INotifyPropertyC ...

  8. 【Flask】Flask Session操作

    ### session:1. session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,session是一个思路.一个 ...

  9. Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.

    tesseract的一个操作问题,简单记录 类似坑尽量少踩 运行 .\tesseract.exe .\1356445914_9857.jpg tstimg  报错如下:Please make sure ...

  10. 20145235李涛《网络对抗》逆向及Bof基础

    上学期实验楼上做过这个实验 直接修改程序机器指令,改变程序执行流程 首先进行反汇编   我们所要修改的是,程序从foo返回,本来要返回到80484ba,而我们要把80484ba修改为getshell的 ...