首页 > 代码库 > 软件工程作业--词频统计

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

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

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