• 软件工程个人项目的一些总结(完整版)


    11061176王洛书

    我的项目总结分为估计用时、实际用时、大致思路、debug和性能优化、测试用例、感想六大块。

    一、项目开始之前估计用时

    阅读题目 1小时

    复习C++ 4小时

    思考解题方法 1小时

    写代码3小时

    DEBUG 3小时

    性能优化  2小时

    总结 1-2小时

    共15-16个小时

    二、实际用时

    阅读题目  1个小时

    折腾VS2012  好久

    看C++相关内容  2小时

    思考解题方法+写代码 6小时

    DEBUG  6小时+5小时=11小时

    性能优化  5小时

    总结  2小时

    共27个小时

      总体来说debug速度慢的原因还是对C++语法不熟悉,平时用的较少,这次个人项目算是恶补一些知识。

    三、我的思路

     

    1、从指定文件夹里读取所有.txt、.cs、.cpp、.h的文件的绝对路径,放在list.txt里。使用system((dir XXX /b /s > list.txt).c_str())的原理。


    2、用Wcounter批量处理list.txt里的文件,统计词频

    3、关于Wcouter的原理。。打开一个文件,进行分词(分词标志是所有非数字非字母的东西……)
    确定是不是单词;是,则记录进字典;不是则抛弃。
    要注意扩展模式和普通模式的区别。

    4、处理完所有文件后,用sort将单词排序后输出。

    5、开始debug

    四、debug和代码优化

    4.1我的最初始版本

    (第一次因为时间紧迫测试用例只用了小文件。。当时自己电脑VS2012还未下载成功,所以在同学电脑里测试。。她的VS是中文版的)

     

    这是我的最初始版本,有几个漏洞。

    4.2中间版本

    在这个版本里,我就初始版本进行了一些改进。

    在第一次交作业的时候,我没有看清楚题目要求,漏考虑了目录可以是递归的情况,使用了DIR /B/AA来遍历所有文件。

    第二次,我使用了DIR  /b/s,直接可以遍历目标文件夹下所有的文件。

    这个版本也让我发现了我的一个Bug,我的小程序在使用小文件测试程序无误后,我又使用了同学间广为流传的21M测试文件进行程序性能测试,却意外发现程序的运行有问题。

    下面是这个版本的性能测试图。。

    4.3终结版

    在中间版的基础上经历了大概数个小时的痛苦debug之后,发现我处理list.txt里面的所有txt、cs、cpp、h文件名上有问题。

    在读取文件名打开对应文件时,我使用了fin>>lines,逐词读取。

    这种读取方式有个弊端,当文件名里有空格时,便不能正确读取,会被系统误认为分词。

    我改了一行代码,改用getline(fin,lines)读取文件名,bug迎刃而解。

    release模式下跑同学间流行的某21M测试文档的性能测试图。大家release模式下测试该文档的用时在几秒-20分钟不等,我的时间大概在5s-12s之间,可见我的程序总体效率还算比较高。

     

    特别要注意的是

    在文件读取上还有陷阱……

    在发邮件问过罗老师之后,罗老师说要求程序能够处理command arguments是类似C: est和C: est的情况。因为我用system读取文件,我在最后的文件读入的时候又加入了一个判断。

    int len=strlen(argv[argc - 1]);
    if(argv[argc-1][len-1]!= ' \ ' )
    s=s+"\";

    五、测试例子

    1、普通的文件

    2、文件递归测试

    3、windows2007,windows98,Windows之类的

    4、asd,321aaafd,fga31等不合法的

    5、多种文件格式的

    6、空文件夹

    7、空文件

    8、带中文内容的

    9、带中文路径的

    10、文件名里有空格的

    11、特别大的文件,测试性能(同学给的21M和132M的文件)

    12、同学的测试文件

    六、收获和感想

    用了很长时间完成这次作业,确实提高了自己对C++,尤其是文件处理方面的一些理解。

    也在Debug中收获了很多痛苦和知识,增强了自己对DEBUG的信心。

     最后,非常感谢这次个人项目进行中帮助我的同学和老师。

  • 相关阅读:
    在cnBlogs上使用MarsEdit发blog
    如何将netbeans生成的项目文件打包发布到其他的Tomcat服务器上?
    Android activity中单击返回键或home键彻底退出应用
    C语言基础之自增自减运算符及注意事项
    [给自己扫盲]名词解释——LAMP、MEAN、Web应用框架等
    第一个Mac程序——倒计时v1&v2
    iOS开发 Swift开发数独游戏(二)数独题目的生成
    解决ADT大量出现"Unexpected value from nativeGetEnabledTags: 0"的问题
    C语言基础之指针
    [给自己扫盲]Node.js 究竟是什么?
  • 原文地址:https://www.cnblogs.com/lucile-w/p/3327773.html
Copyright © 2020-2023  润新知