Description&Requirement:

  http://www.cnblogs.com/jiel/p/3978727.html

项目时间估计

  理解项目要求:      1h

  构建项目逻辑:      1h

  查阅相关资料:      1h

  编写&调试程序:      6h

  样例测试&功能完善:    2h

  项目效率分析:      1h

  项目优化:        2h

  总结&提交:        2h

项目实际完成时间

  实际完成时间三天,真是佩服自己的效率,题目意思不难理解,实现也起来也不难,各个部分的算法想好应该怎么实现,但是对于完全陌生的C#只能写一写就去Google一下相关的写法,查找资料用了相当长的时间。写完代码以后Debug没有用多长时间,有一个小错误很快就发现了。但是后来题目关于排序的意思理解有点问题,又重新查资料修改。然后再测试样例上的时间比较多,测试数据按照我对题目的理解应该是能输出正确结果的。

开发过程

  开发过程其实不能算充满艰辛,因为以前面向对象课的时候写过类似的统计词频的题,知道大概的算法实现,但因为对C#语言的不了解,查相关函数及其用法时用了相当长的时间,不过对于正在拼命学英语的我来说多读读英文文档还是比较有好处的。

  关于算法实现,我是用一个dictionary来存储单词,Dictionary<string,<int,string>>(StringComparer.OrdinalIgnoreCase),第一个string是用于判断符合条件的word是否已经出现过,第二个string是用来存放出现过的单词的最小ASCII码的单词。

  整个过程就是在指定目录中寻找后缀满足条件(.txt,.cpp,.h,.cs)的文件,读取内容,将内容按规则分割成字符串数组parts,遍历parts,若满足<word>条件(简单模式)、<word word>(-e2模式)或<word word word>(-e3模式)就按规则存入字典dictionary中。全部读取完后,按照模式方式输出在当前exe所在目录下的12061154Joy.txt中。

性能分析

跑了Visual Studio2012 的安装包,大概5.7G,不过只有5858个样本还跑了90+s,真是慢的可以;不过后来跑就只有30+s了,我也不知道是怎么回事。

由图可以看出,独占样本较多的函数主要是Match和Split函数,因为程序运行过程中不断的在分割文件内容和匹配word。

函数非独占样本比例和独占样本比例:

函数使用率细节:

测试样例

1,"123file file123 file File FiLe"

这个“123file”并不符合<word>的要求,但是刚开始我的正则表达式竟然匹配成功了。因为表达式里没有指出三个字母是在word开头,所以出现了错误。

这里的“file”单词单个输出应该是“FiLe”,因为它的ASCII码最小。

期望&输出结果:

2,“In your pattern you group elements with round brackets”

检测“-e2”模式下两个word组合在一起

期望&输出结果:

3,“In your-=pattern  you@ ^&group eleme$nts with round brackets”

两或三个word匹配时的限制条件:只能有一个空格符

期望&输出结果:

4,“

txt file
tXt File
tXT file
TxT fiLe

How Are You?
how old are you
hOw oLd aRe yOu
HoW arE YOu?

除大小写外相同的单词之间的匹配和排序问题,所有排序都是按照ASCII码顺序排列

期望&输出结果:

5,测试空目录

输出空白txt

期望&输出结果:

6,测试不存在的目录

控制台输出“Directory is not exsiting!!”

7,测试错误模式指令

控制台输出“Command is wrong!!Please check again!”

8,测试.txt & .cpp & .h & .cs 文件中夹杂了其他类型的文件

只输出了这四种文件里面的内容

9,“

E:\Let's study!\创意论文\2013
E:\Let's study!\计算机操作\网页制作
E:\Let's study!\编译原理\编译PPT
E:\Let's study!\计算机操作\网页制作\网页\Templates
E:\Let's study!\编译原理
E:\Let's study!\计算机操作\ppt\PPT音影素材

对非字母数字的符号及中文的检测

期望&输出结果:

9,“

how are you

how Are you

fine thank you and YOU
fine Thank you And you
fine thank YOU and

小伙伴的测试样例,还好是对的

期望&输出结果:

10,“

between a letter followed bya point comma.

Still it should be included in the result.

期望&输出结果:

我学到的

  这次的作业又让我被学会了一门语言——C#,和学习面向对象课的时候一样,也是被学会了Java。这次还好有的选择,对于指针的恐惧让我选择了和Java相似的C#,还好语言之间有非常多的相似性,但是一些函数的用法比如Dictionary,list.Sort实在是不甚熟悉,只有每碰到一个问题时就Google一下,也让我在读文档的过程中学到了不少的东西。

  结果固然重要,但是学习的过程更重要,在学习函数用法时了解了许多,读下来那么多词的英文文档我都佩服死自己了;熬夜码代码却乐在其中,有些东西不只因为是任务才努力去完成,主要是希望能够收获一些,让自己前进一些。What I have learnt in the process is much greater than just getting the result.

  

Individual Project - Word frequency program——12061154Joy的更多相关文章

  1. Individual Project - Word frequency program by HJB

    using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;us ...

  2. Limeng:Individual Project: Word frequency program -BUAA Advanced Software Engineering

    11061190-李孟 Implement a console application to tally the frequency of words under a directory (2 mod ...

  3. Individual Project - Word frequency program - Multi Thread And Optimization

    作业说明详见:http://www.cnblogs.com/jiel/p/3978727.html 一.开始写代码前的规划: 1.尝试用C#来写,之前没有学过C#,所以打算先花1天的时间学习C# 2. ...

  4. SoftwareEngineering Individual Project - Word frequency program

    说实话前面c#实在没怎么学过.这次写起来感觉非常陌生,就连怎么引用名空间都忘记了.在经过恶补后还是慢慢地适应了. 1.项目预计用时: 构建并写出大概的数据结构,程序框架及模块: 30min 实现文件夹 ...

  5. Individual Project - Word frequency program

    1.项目预计用时 -计划学习C#和百度一些用法的时间:5小时 -项目本身打算写两个类,一个是遍历搜索文件夹的,另外一个用来统计单词.计划用时:5小时 2.项目实际用时 学习C#以及正则表达式的用法:3 ...

  6. Record for Individual Project ( Word frequency program )

    1.  预计时间 ● 对问题总体的理解.规划:10 min ● 设计编写程序:5 h ● 调试: 分模块-40 min; 总体-40min ● 测试(性能分析).改进:1 h 2.  实际用时 ● 对 ...

  7. THE First Individual Project - Word frequency program

    第一次写博客,这次也是本学期写到第一个程序. 老师要求网址:http://www.cnblogs.com/jiel/p/3311400.html#2777556 一.项目预计时间 一开始想使用不熟悉的 ...

  8. Individual Project - Word frequency program-11061171-MaoYu

    BUAA Advanced Software Engineering Project:  Individual Project - Word frequency program Ryan Mao (毛 ...

  9. Project: Individual Project - Word frequency program----11061192zmx

    Description & Requirements http://www.cnblogs.com/jiel/p/3311400.html 项目时间估计 理解项目要求: 1小时 构建项目逻辑: ...

随机推荐

  1. .NET MVC 后台接受base64的上传图片

    #region 配合前端的多张图片上传 #region 上传图片方法 /// <summary> /// 接口方法 /// </summary> /// <param n ...

  2. Python基础知识:if语句

    1.模拟网站确保用户名是否重复的方式,无视大小写,用到函数lower() #检查用户名是否重复 current_users=['admin','alex','lebran','kaobi','Jame ...

  3. Kibana中的Coordinate Map地图报索引错误的问题

    今天做地图定位展示,展示的是ApacheWeb服务器的访问日志文件中的来源IP.但是中间出现了报错环节,说是索引不能匹配到geo_point类型,实在是不懂这是在说什么,后来在网站找了方法就解决了.主 ...

  4. Leviticus

    The head is empty and empty. Just practicing English will not have any effect. The best effect is to ...

  5. 【Beta阶段】测试报告

    兼容性测试   功能 描述 效果 Chrome浏览器 FireFox浏览器 IE浏览器 搜狗浏览器 主页实用小工具按钮 跳转到实用小工具首页 跳转到实用小工具首页 ü ü ü ü 鼠标移动到逐差法计算 ...

  6. Axios发送请求时params和data的区别

    在使用axios时,注意到配置选项中包含params和data两者,以为他们是相同的,实则不然. 因为params是添加到url的请求字符串中的,用于get请求. 而data是添加到请求体(body) ...

  7. sahrepoint 上传到文档库

    sharepoint学习笔记汇总 http://blog.csdn.net/qq873113580/article/details/20390149         /// <summary&g ...

  8. centos7下安装docker(11容器操作总结)

    这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs:还学习了对容器的资 ...

  9. Coprime (单色三角形+莫比乌斯反演(数论容斥))

    这道题,先说一下单色三角形吧,推荐一篇noip的论文<国家集训队2003论文集许智磊> 链接:https://wenku.baidu.com/view/e87725c52cc58bd631 ...

  10. 第一行代码 -3-2 软件也要拼脸蛋-UI界面-更强大的滚动条-RecyclerView

    简述教程:https://www.jianshu.com/p/4fc6164e4709 一 基础准备 1 添加RecyclerView控件引用库文件 2 总布局添加RecyclerView控件 3 R ...