软件工程作业--词频统计

预计用时:
在刚接到这个作业的时候,根据上学期的经验,我预计完成这份作业需要的时间为:查找资料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)其他方面,每写一个有难度的程序,都是对耐心的极大锻炼,我们会不断的遇到问题,不断的调试,又遇到新的问题,接着调试、测试,直到自己不在发现错误,这一点可以极大地锻炼我们的耐心,对以后各方面的发展都有极大的益处。

posted @ 2014-09-24 10:56  hochean  阅读(412)  评论(1编辑  收藏  举报