SE Class's Individual Project--12061161 赵梓皓
1. 项目预计的用时
其实刚开始以为这个项目不难写,因为上学期oo课程上用java写过类似的程序(貌似还比这个复杂)。觉得主要的难点在于学习c++语言。
总的项目被分为大概3个部分。
其一,文件遍历。由于刚开始学习c++ 所以计划用时较长,2-3小时
其二,字频统计。整个程序的kernel,是程序正确性和效率的关键点,需要认真写。计划3.5小时+。Ps(学习正则表达式,+1小时)
其三,排序输出。程序的结尾,也是最简单的阶段。1小时。
最后,就是整个程序的调试,修正bug,提高算法效率等。时间不定。
2. 项目实际用时
总的来说,总的时间和估计时间差不多。但是,由于时间不是连续的,所以很难统计。
还是错误估计了c++入门所需要的时间。比如找到文件的遍历所用的库就很麻烦,看api学习语法也花费了很长时间。这一部分占据了项目时间的5成以上。
做完程序,感觉程序的难点(花费时间最多的)是学习而不是编程。程序看似很复杂,其实用正则表达式思路就很清晰,代码量也很小。编程的难度(逻辑的复杂度)也不大。
In conclusion:9小时整块时间(但是有时候吃吃零食,发发呆把这些加上大概13小时囧——这是病,得治求推荐好的医院!!)
3. 项目的表现和性能的分析
这个部分要感谢天神和张大神,他们给了我很多启发,也使我对自己的程序有了一丢丢的自信。。。(错了就不给分的设置真坑爹,不得不吐槽,完全不合理啊,最起码也要按测试点给分啊。谁的程序一点bug都没有,满满的不满 = =)。
咳咳,吐槽好像多了点,回到正题。第一次用vs,对各种功能不熟悉,看到分析真心觉得高大上啊。可惜就是看不太懂,努力学习。
第一次测试的test文档很短,就不断出现

第一次吓死我了,还以为程序错了,喝一口水冷静下。
经过询问同学and 分析,可能cpu执行时间太短,来不及分析数据。后来,分析了 2014年6月英语六级真题及答案(高大上有木有)
得到结果1:

结果2

两张图对一个数据分析,差别有点大啊。不仅是cpu时间,而且占用百分比也不一样。不知道为什么。能不能找到一个合理的函数来在一定程度上量化呢。。。?这里需要好好思考下
附上其他测试图
函数调用过程

函数独占样本

最后,感觉自己的程序提高空间还很大,可惜没有时间了。希望下次赶紧治好拖延症。(绝对不会因为自己耽误小组作业。。。我发四)
程序改进的想法(来不及实现):
1.普通模式,e2,e3其实很多代码是重复的我,完全可以规约成一个函数,这里严重拖慢了效率。
2.输出排序是用了选择排序,原因是一直没有搞懂c++的sort机智,排序老出错,没办法只能写一个简单的,所以这里也浪费了很多的时间。明天去问问丁大神。
3.Map容器不好根据key值分析,所以申请了list来保存,这里浪费了很多的空间,如果有更好的方法,这里的可提高空间很大。
4.其他细节,如变量的使用,有的申请了但没有用。
4. 项目的测试样例
1.测试代码对单词的识别能力
输入:a aa aaa aa1 1aa 1aaa aaa1aaa abb%*&^^*&^)(ss a **_)(*_(*(__*sasas
输出:<aaa>:1
<aaa1aaa>:1
<abb>:1
<sasas>:1
Correct
2.测试代码合并大小写的功能
输入:apple apple2 Apple APPLE app APP ios ioS
输出:<APPLE>:3
<APP>:2
<ioS>:2
<apple2>:1
Correct
3.测试排序能力
输入:apple appl apple a1pple aPP
输出
<apple>:2
<aPP>:1
<appl>:1
Correct
4.测试6级真题
输入:

输出:

没有办法确定自己的正误,但是按照自己的想法,基本应该没错。
5.测试多层目录
测试了自己的工程文件
输出:

目测正确。
6.测试六级英语的2-word 和3-word
2-word 结果如下

3-word

测试到这里,真想说:妈妈再也不用担心我的英语了(哈哈 没吃药。。)
7.空目录
正确
5. 收获和体会
发现其实语言是相通的,在学校应该更多的关注于基础理论和实践能力,不要想着java现在很火,我去学java。过两天又去学swift。语言都是大同小异的,有了好的计算机基础能力,学习语言是很快的。编程的重点不是语言,而是怎么驾驭语言。是思想,或者说是组织“语言”的能力。
多与大家交流是很能促进进步的。刚开始自己再看语法和api文档,找了很久都摸不着头脑,然后没办法,去问大神。在和大神交流的过程中学习是很快的,大神也给我介绍了map容器。大大降低了编程复杂度。闻道有先后,别人身上总有值得学习的东西,交流是很好的学习平台。
工具的重要性。以前写代码都在vc 6.0的平台上。Vc 6.0 bug多,而且ui设计的很不好,功能也少。第一次用vs就有很大的收获。比如词法分析,自动补全,提示等等。磨刀不误砍柴工,好的工具确实能够事半功倍。
优化的重要性。以前总觉得代码写完就好,自己很少注意优化,尤其是细节方面的优化。但有时候,改动一下,代码的时间效率就会发生很大的变化。尤其是对循环内部的改动,效果也是惊人的。
写完了,睡觉 呼呼呼~~~~
SE Class's Individual Project--12061161 赵梓皓的更多相关文章
- Note: SE Class's Individual Project
虽然第一个Project还有点小问题需要修改,但是大体已经差不多了,先把blog记在这里,算是开博第一篇吧! 1.项目预计的用时 本来看到这个题的时候想的并不多,但是看了老师的要求才觉得如此麻烦ORZ ...
- Individual Project - Word frequency program-11061171-MaoYu
BUAA Advanced Software Engineering Project: Individual Project - Word frequency program Ryan Mao (毛 ...
- Individual Project Records
At the midnight of September 20, I finished my individual projcet -- a word frequency program. You c ...
- 《软件工程》individual project开发小记(一)
今天周四没有想去上的课,早八点到中午11点半,下午吃完饭后稍微完善了一下,目前代码可以在dev c++和vs2012上正常运行,性能分析我看资料上一大坨,考虑到目前状态不太好,脑袋转不动了,决定先放一 ...
- SoftwareEngineering Individual Project - Word frequency program
说实话前面c#实在没怎么学过.这次写起来感觉非常陌生,就连怎么引用名空间都忘记了.在经过恶补后还是慢慢地适应了. 1.项目预计用时: 构建并写出大概的数据结构,程序框架及模块: 30min 实现文件夹 ...
- Individual Project - Word frequency program
1.项目预计用时 -计划学习C#和百度一些用法的时间:5小时 -项目本身打算写两个类,一个是遍历搜索文件夹的,另外一个用来统计单词.计划用时:5小时 2.项目实际用时 学习C#以及正则表达式的用法:3 ...
- Individual Project - Word frequency program - Multi Thread And Optimization
作业说明详见:http://www.cnblogs.com/jiel/p/3978727.html 一.开始写代码前的规划: 1.尝试用C#来写,之前没有学过C#,所以打算先花1天的时间学习C# 2. ...
- 1415-2个人项目Individual Project
作业要求: 个人独立完成,实践PSP相关知识. 时 间: 两周. (本来截止4月30日,考虑到刚迁移平台,延缓至5月7日) 实践目标: Github基本源代码控制方法 利用Junit4进行程序模块的测 ...
- Project: Individual Project - Word frequency program----11061192zmx
Description & Requirements http://www.cnblogs.com/jiel/p/3311400.html 项目时间估计 理解项目要求: 1小时 构建项目逻辑: ...
随机推荐
- [HDFS_add_2] SecondaryNameNode 滚动 NameNode 数据流程
0. 说明 在 将 SecondaryNameNode 配置到 s105 节点上 的基础上进行 SecondaryNameNode 滚动 NameNode 数据流程 分析 1. SecondaryNa ...
- Windows结构化异常处理浅析
近期一直被一个问题所困扰,就是写出来的程序老是出现无故崩溃,有的地方自己知道可能有问题,但是有的地方又根本没办法知道有什么问题.更苦逼的事情是,我们的程序是需要7x24服务客户,虽然不需要实时精准零差 ...
- 3.1Python数据处理篇之Numpy系列(一)---ndarray对象的属性与numpy的数据类型
目录 目录 (一)简单的数组创建 1.numpy的介绍: 2.numpy的数组对象ndarray: 3.np.array(list/tuple)创建数组: (二)ndarray对象的属性 1.五个常用 ...
- Python作业第一课
零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~ Python作业第一课1)登陆,三次输入锁定,下次不允许登陆2)设计一个三级菜单,菜单内容可自行定义, ...
- PyQt5--TextDrag
# -*- coding:utf-8 -*- ''' Created on Sep 21, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...
- swift语言混编--语言交互的接口
FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the ...
- Spring Boot中Web应用的统一异常处理
我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来 ...
- WIN10 + VS 2013 配置Opencv2.4.1.3 32位
VS2013 配置Opencv2.4.1.3 32位 系统变量 Path: F:\2biancheng_tool\Opencv2413\opencv\build\x86\vc12\bin 用户变 ...
- es3的语法来模拟es5的bind方法
// 简单版 Function.prototype.bind = function(context) { var self = this; return function() { self.apply ...
- ESP8266开发综合篇(LUA开发-视频教程总揽)
为了解决基础教程简单入门但不实用,项目方案非常实用但比较难的问题,开始推出8266开发综合篇 综合篇涉及到AT,LUA,SDK,LUA(sdk)开发,LUA和SDK开发会同步进行,后期再整理AT指令的 ...