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. SVN与Git比较的优缺点差异

    目录: SVN与Git比较(一)集中式vs分布式 SVN与Git比较(二)版本库与工作区 SVN与Git比较(三)全局版本号和全球版本号 SVN与Git比较(四)部分检出 SVN与Git比较(五)更新 ...

  2. .NET Core tasks.json 简介

    1.执行命令:dotnet> dotnet new console -o myApp 2.tasks.json文件配置: { "version": "2.0.0&q ...

  3. 第3章 Git使用人门

    [初识Github] 首先让我们大家一起喊一句“Hello Github”.YEAH!就是这样. Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理 ...

  4. parallels Desktop解决无法压缩硬盘的问题

    使用pd12新建的win7虚拟机仅仅使用了四十个G,但在本地硬盘中的体现却是占用了一百左右:尝试压缩提示: 无法编辑硬盘属性,因为该硬盘有一个或多个快照. 该硬盘属于某一带有一个或多个快照的虚拟机.请 ...

  5. Python作业第一课

    零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~ Python作业第一课1)登陆,三次输入锁定,下次不允许登陆2)设计一个三级菜单,菜单内容可自行定义, ...

  6. VRS的GPS/BDS双系统网元固定存在的问题

    问题如下:部分网元固定卫星数少于2个. 另外:北方xinkong的网元组网也存在问题

  7. 在VUE应用中配置ESLint(代码检查)

    eslint配置方式 注释配置:使用js注释来直接嵌入ESLint配置信息到一个文件里 配置文件:使用一个js文件,JSON或者YAML文件来给整个目录和它的子目录指定配置信息.这些配置可以写在一个文 ...

  8. ROS教程4 ROS自定义srv类型及使用

    创建srv文件 在上一节单独为自定义的消息和服务的包 test_msgs 里面 创建 srv文件夹 进入创建 testsrv.srv 文件 ,内容为: (srv文件和msg文件类似,唯一不同的是它包含 ...

  9. leetcode 338. Counting Bits,剑指offer二进制中1的个数

    leetcode是求当前所有数的二进制中1的个数,剑指offer上是求某一个数二进制中1的个数 https://www.cnblogs.com/grandyang/p/5294255.html 第三种 ...

  10. appbar导航

    import 'package:flutter/material.dart';import 'dart:ui'; void main()=>runApp(MyApp()); class MyAp ...