zoukankan      html  css  js  c++  java
  • 软件工程作业--词频统计

    预计用时:
    在刚接到这个作业的时候,根据上学期的经验,我预计完成这份作业需要的时间为:查找资料1小时,学习c#基础知识2小时,写代码4小时,调试测试1小时
    实际用时:
    但是,当我真正开始写这份作业之后,才意识到这次的作业远比我想象预计中的复杂,于是,等做完作业之后,我的实际用时是:查找资料2小时,学习c#基础知识2小时,写代码6小时……调试测试之类的2小时,再加上研究性能测试写测试用例用的2小时,总共完成这份作业用了14小时。。。
    改进性能:
    改进性能一直贯穿在我写程序的每个部分,其中比较重要的几点如下:
    1)存储单词的时候,原本写的是按其在文件中的出现次序依次存进链表里,全部存储完之后,再对其全部排序。这个排序方法用时太长,后来思考之后,我改成了边存储边排序,每加入一个单词,其数量肯定为1,直接加在链表末尾即可,如果是给已存在的单词增加数量,则对该单词调整位置,使整个链表一直按照按此的出现次数排序,之后再将个数为一的单词按照ASCII码值进行排序,改进这个部分用时20分钟;
    2)在取前十个连续两个单词以及连续三个单词的时候,本来是对链表里的所有元素进行从大到小的排序,然后取前十位,改进性能之后,是将链表里的前十个元素先存进一个十元素的数组,之后先对这十个元素排序,然后遍历链表中的其余所有元素,若个数大于数组中任一元素的个数,则将数组此位置后的元素依次后移并替换当前位置单词,改进这个部分大约用时20分钟。

    性能测试图:

    十个测试用例:

    1)空文件夹

    测试结果如下:

    所有单词:
    前十组连续两个的单词:
    (不足10个)
    前十组连续三个的单词:
    (不足10个)

    2)123helper helper123 helper123 helper123 123helper

    测试结果如下:

    所有单词:
    helper123:3
    前十组连续两个的单词:
    helper123 helper123:2
    (不足10个)
    前十组连续三个的单词:
    helper123 helper123 helper123:1
    (不足10个)

    3)helper123 HELPER123 HELPer123

    测试结果如下:

    所有单词:
    HELPER123:3
    前十组连续两个的单词:
    HELPER123 HELPer123:2
    (不足10个)
    前十组连续三个的单词:
    helper123 HELPER123 HELPer123:1
    (不足10个)

    4)

    we come to this 56 city.play together#$^%&*( happy
    hgfshfoe

    测试结果如下:

    所有单词:
    city:1
    come:1
    happy:1
    hgfshfoe:1
    play:1
    this:1
    together:1
    前十组连续两个的单词:
    play together:1
    (不足10个)
    前十组连续三个的单词:
    (不足10个)

    5)文件名字为test5.h.mp3,文件内容包含正常单词

    测试结果为

    所有单词:
    前十组连续两个的单词:
    (不足10个)
    前十组连续三个的单词:
    (不足10个)

    6)文件名字为test6.doc,文件内容包含正常单词

    测试结果为

    所有单词:
    前十组连续两个的单词:
    (不足10个)
    前十组连续三个的单词:
    (不足10个)

    7)文件夹两层嵌套,包含三个文件,每个文件内容都是The Board Meeting had come to an end. 

    测试结果:

    所有单词:
    Board:3
    come:3
    end:3
    had:3
    Meeting:3
    The:3
    前十组连续两个的单词:
    Board Meeting:3
    had come:3
    Meeting had:3
    The Board:3
    (不足10个)
    前十组连续三个的单词:
    Board Meeting had:3
    Meeting had come:3
    The Board Meeting:3
    (不足10个)

    8)有一个空文件夹还有一个txt,txt内容为

    aaa aaa aaa aaa aaa
    bbb bbb bbb bbb bbb
    ZZZ ZZZ ZZZ ZZZ ZZZ
    YYY YYY YYY YYY YYY

    测试结果:

    所有单词:
    aaa:5)
    bbb:5)
    YYY:5)
    ZZZ:5)
    前十组连续两个的单词:
    aaa aaa:4
    bbb bbb:4
    YYY YYY:4
    ZZZ ZZZ:4
    (不足10个)
    前十组连续三个的单词:
    aaa aaa aaa:3
    bbb bbb bbb:3
    YYY YYY YYY:3
    ZZZ ZZZ ZZZ:3
    (不足10个)

    9)

    AAA BBB bbb
    ccc ccc ccc

    测试结果:

    所有单词:
    ccc:3
    BBB:2
    AAA:1
    前十组连续两个的单词:
    ccc ccc:2
    AAA BBB:1
    BBB bbb:1
    (不足10个)
    前十组连续三个的单词:
    AAA BBB bbb:1
    ccc ccc ccc:1
    (不足10个)

    10)

    此文件夹里包含一个无后缀文件,一个.mp3文件,这两个文件中都有正常单词,还有一个.h文件,内容为一篇英文文章

    测试结果中不包含前两个文件的内容,只包含英文文章中出现过的单词

    所有单词:
    The:25
    His:20
    Her:13
    was:13
    And:12
    Giovanni:12
    She:11
    Beatrice:9
    That:9
    You:7
    But:6
    flowers:6
    from:6
    hand:5
    him:5
    man:5
    not:5
    about:4
    Baglioni:4
    garden:4
    had:4
    like:4
    looked:4
    One:4
    Professor:4
    purple:4
    They:4
    this:4
    with:4
    breath:3
    face:3
    for:3
    heart:3
    little:3
    old:3
    perfume:3
    poison:3
    Rappaccini:3
    reached:3
    your:3
    away:2
    beautiful:2
    bottle:2
    came:2
    could:2
    covered:2
    cried:2
    daughter:2
    Don:2
    down:2
    even:2
    felt:2
    hands:2
    how:2
    last:2
    life:2
    morning:2
    off:2
    pain:2
    plant:2
    put:2
    said:2
    see:2
    small:2
    sweet:2
    those:2
    time:2
    told:2
    too:2
    wanted:2
    when:2
    will:2
    wrong:2
    young:2
    air:1
    all:1
    around:1
    asked:1
    asleep:1
    baby:1
    because:1
    bed:1
    began:1
    believe:1
    blood:1
    break:1
    bright:1
    caught:1
    child:1
    classes:1
    clear:1
    combed:1
    come:1
    continued:1
    daily:1
    day:1
    dear:1
    destroy:1
    did:1
    Doctor:1
    doubts:1
    drink:1
    ever:1
    every:1
    eyes:1
    family:1
    father:1
    fell:1
    Finally:1
    fine:1
    fingers:1
    fire:1
    forgot:1
    four:1
    friend:1
    full:1
    gave:1
    girl:1
    Give:1
    given:1
    glow:1
    God:1
    grabbed:1
    great:1
    hair:1
    handsome:1
    has:1
    hat:1
    have:1
    healthy:1
    help:1
    helping:1
    hers:1
    Hiding:1
    himself:1
    hold:1
    holds:1
    home:1
    house:1
    innocent:1
    into:1
    kiss:1
    knife:1
    large:1
    late:1
    later:1
    leave:1
    left:1
    let:1
    loved:1
    mark:1
    may:1
    medicine:1
    meet:1
    meeting:1
    mirror:1
    month:1
    more:1
    most:1
    much:1
    must:1
    near:1
    nearly:1
    never:1
    night:1
    nothing:1
    noticed:1
    noticing:1
    older:1
    out:1
    own:1
    particularly:1
    planning:1
    pleased:1
    powerful:1
    pulled:1
    ran:1
    realized:1
    room:1
    sat:1
    save:1
    saw:1
    scream:1
    several:1
    silver:1
    slowly:1
    smell:1
    something:1
    sparkled:1
    spent:1
    spirit:1
    spoke:1
    standing:1
    stay:1
    stop:1
    strength:1
    stronger:1
    succeed:1
    sure:1
    table:1
    take:1
    talked:1
    talking:1
    than:1
    thank:1
    Then:1
    There:1
    thinking:1
    though:1
    through:1
    thumb:1
    took:1
    touch:1
    university:1
    very:1
    visited:1
    walked:1
    warm:1
    wasn:1
    water:1
    weeks:1
    went:1
    were:1
    what:1
    While:1
    woke:1
    wonderful:1
    words:1
    worried:1
    worry:1
    would:1
    yet:1

    前十组连续两个的单词:
    Professor Baglioni:4
    And his:3
    from the:3
    his hand:3
    his heart:3
    purple flowers:3
    the garden:3
    away from:2
    Beatrice was:2
    could not:2
    前十组连续三个的单词:
    She told him:2
    the old man:2
    the purple flowers:2
    The young man:2
    about his home:1
    about how sweet:1
    about the pain:1
    air around her:1
    all her strength:1
    and beautiful Beatrice:1

    我学到了什么?

    1)知识方面,我学到了很多c#的基础语法知识,以及写这个程序所涉及到的其他c#知识,比如说文件的读写,集合的使用等;

    2)能力方面,程序员每写一个程序就是对自身能力的一次锻炼,因此我得到了锻炼,更熟悉了vs2012的使用;

    3)其他方面,每写一个有难度的程序,都是对耐心的极大锻炼,我们会不断的遇到问题,不断的调试,又遇到新的问题,接着调试、测试,直到自己不在发现错误,这一点可以极大地锻炼我们的耐心,对以后各方面的发展都有极大的益处。

  • 相关阅读:
    oracle一次删除多张表
    JS学习之动态加载script和style样式
    JS动态引入js、CSS动态创建script/link/style标签
    js设置全局变量ajax中赋值
    java获取程序执行时间
    echarts学习总结(二):一个页面存在多个echarts图形,图形自适应窗口大小
    Codeforces Round #188 (Div. 1) B. Ants 暴力
    Codeforces Round #188 (Div. 2) C. Perfect Pair 数学
    Codeforces Round #188 (Div. 2) B. Strings of Power 水题
    Codeforces Round #188 (Div. 2) A. Even Odds 水题
  • 原文地址:https://www.cnblogs.com/hochean/p/3990153.html
Copyright © 2011-2022 走看看