zoukankan      html  css  js  c++  java
  • 软件工程个人项目--Word frequency program

    (一)工程设计时间预计

    1.代码编写:2小时

      (1)文件夹的遍历以及筛选;

      (2)文件夹的读取,以及对读取字符的操作;

      (3)所得结果排序,以及文件输出。

    2.程序调试:1小时

      (1)编写数据。

      (2)测试以及调试。

    3.预计总时间:3小时

    (二)工程所用实际时间

    1.代码编写:4小时

      (1)文件夹的遍历以及筛选;

      (2)文件夹的读取,以及对读取字符的操作;

      (3)所得结果排序,以及文件输出。

    2.程序调试:3小时

      (1)编写数据。

      (2)测试以及调试。

    实际所用总时间:7小时

    (三)关于实际时间比预计时间长的分析

    在这一过程中对于文件的递归遍历始终无法做到,最终只能用cmd命令在windows环境下dir这个指令和列出文件目录有关

    (四)程序部分代码
    遍历文件
    void Init(int argc,char *argv[]){
        string baseDir,command;
        baseDir=argv[argc-1];
        if (baseDir[baseDir.length()-1]!='\') 
            baseDir+='\';
        command="dir "+baseDir+"*.txt "+baseDir+"*.cpp "+baseDir+"*.h "+baseDir+"*.cs"+" /S"+" /B > result.txt";
        system(command.c_str());
        return;
    }

         模式选择

    for(i=0;i<(*count);i++){
                                if(argc==2){                     //模式一
                                    for(k=0;w[i].danci[k]!=''&&str[k]!='';k++)
                                        if(w[i].danci[k]!=str[k] && w[i].danci[k]+'A'-'a'!=str[k] && w[i].danci[k]!=str[k]+'A'-'a')
                                            break;
                                    if(w[i].danci[k]==''&&str[k]==''){
                                        flag1=1;
                                        w[i].times++;
                                        if(w[i].danci[0]>str[0])
                                            strcpy_s(w[i].danci,str);
                                        break;
                                    }
                                }
                                else if(argc==3){                //模式二
                                    int m,n;
                                    for(m=strlen(w[i].danci)-1;m>=0;m--)
                                        if(w[i].danci[m]>='a'&&w[i].danci[m]<='z' || w[i].danci[m]>='A' &&w[i].danci[m]<='Z')
                                            break;
                                    for(n=strlen(str)-1;n>=0;n--)
                                        if(str[n]>='a'&&str[n]<='z' || str[n]>='A'&&str[n]<='Z')
                                            break;
                                    if(m!=n)
                                        break;
                                    else{
                                        for(k=0;k<=m;k++)
                                            if(w[i].danci[k]!=str[k] && w[i].danci[k]+'A'-'a'!=str[k] && w[i].danci[k]!=str[k]+'A'-'a')
                                                break;
                                        if(k=m+1){
                                            flag1=1;
                                            w[i].times++;
                                            if(strcmp(w[i].danci,str)>0)
                                                strcpy_s(w[i].danci,str);
                                            break;
    
                                        }
                                    }
                                }
                            }

    (五)代码分析

    1.分析报告

    (六)所使用的测试用例

    测试空文件夹

    测试有相同单词的文件

    测试有文件中包含文件的文件

    测试有不符合后缀的文件

    测试-e中数字不同,单词相同的文件

    测试-e中大小写不同的文件

    测试字母+数字+字母+数字的文件

    (七)感想

    这次的编程与预计差别非常大,让我了解了很多自己不懂得知识。通过网上搜索和查阅《c++prime》这本书让我了解了很多。

    
    
    
    
    

  • 相关阅读:
    GPU 版 TensorFlow failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
    Python -- 值转换为字符串的两种机制
    Python
    vim中注释多行python代码
    HTTP协议状态码详解(HTTP Status Code)
    关于Python报错:SyntaxError: Non-ASCII character 'xe5' in file的解决方法
    Linux如何查看进程、杀死进程、启动进程等常用命令
    vim 如何设置显示行号和缩进
    一、报错
    二、极光推送
  • 原文地址:https://www.cnblogs.com/jun1022/p/3337993.html
Copyright © 2011-2022 走看看