关于软件工程第一次项目的一些感想

  在奋斗了24+小时之后,终于完成了软件工程第一次项目。中间有很多曲折,也收获了很多经验。

  预计完成时间:复习C++(一小时);构思(半小时);编码(四小时);调试(二小时);其他(半小时)。合计(八小时)。

  实际完成时间:复习C++(两小时);构思(半小时);编码(三小时);调试(五小时+);优化(三小时)。合计(十三小时+)。

  首先是审题方面。

这个要求里面最需要注意的有三点:

1、单词的构成,前三个必须是字母,后面可以接任意多的字母或数字,其他字符均视为分隔符。

2、忽略大小写

3、123file里的file不能算为一个单词,所以在用正则表达式的时候需要特别注意。

  其次是软件的初步构思。

这里我思考了如下几点

1、首先是语言的选择,C++和C#。这两种语言我都没有系统的用过,暑假的时候自学过C#,上学期也阅读过《C++编程思想》,但最终还是选择了与C语言相近的C++。

2、其次是面向过程还是面向对象。这个程序有三个部分,但三个部分不会同时运行,而是根据命令行参数输入的不同来决定运行哪一个部分。所以我选择了面向对象的程序设计。将程序的三个部分分别写入三个类,根据命令行输入的不同来new相应的对象。这样设计程序相对条理清晰,也减少了出错的几率。

注:这三个部分其实有很多功能是一样的,可以考虑将类划分开来,合并相同的部分,减少代码重复,减轻编码工作量。(不过我还没这样做,实在是没精力修改了)

3、再者是文件的扫描。之前使用java语言的时候,有文件类可以直接用,相当方便。但是当我开始写程序的时候发现c++并没有这样的类,所以经过各种百度和询问同学,使用了_finddata_t这个强大的结构体。(虽然我还没完全弄明白这个结构体的功能)这样一来就可以递归文件目录进行文件扫描。

4、然后是单词读入。大致分为两种方法,一种是逐个字符读入,另一种是读入全部字符然后进行分析。我个人倾向于后者,因为这样批量处理效率高,代码简洁。

5、最后是结果存储的数据结构。一种是线性表,一种是二叉树。但程序涉及查找有无相同元素,所以二叉树会节省很多时间。

下面是程序测试结果,我先测试了vs的安装目录。

性能分析如下:

由于我没有使用哈希表,所以程序效率并不太高,但也还能接受。

编码过程中遇到的问题:

1、初始化的问题,任何对象在使用之前最好初始化,避免程序崩溃。

2、建立二叉树的问题。这个问题我不止一次犯过。(应该好好反思)就是递归建立的时候,新建立的节点没有接到树根上。所以导致程序崩溃。

3、关于程序效率的问题。最开始我用的vector来存的数据,在测试数据量较大时,耗时明显过长。后来改为用二叉树存储,效率明显提升。

学到了什么:

1、编程之前对程序应有整体的构想。

2、应养成良好的编程习惯,降低代码出错率。

3、应在数据结构和算法上对程序进行优化。

时间: 2024-10-13 20:54:51

关于软件工程第一次项目的一些感想的相关文章

软件工程第一次作业补充

软件工程第一次作业的补充 对于作业"在一周之内快速看完<构建之法>,列出你不懂的5-10个问题". 作业要求有: (1)在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 (2)列出一些事例或资料,支持你的提问 (3)说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾? 例如:我看了这一段文字 (引用文字),有这个问题 (提出问题):我查了资料,有这些说法

对于软件工程整个项目的自我感受

软件工程是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.整个软件开发过程分为问题定义->可行性研究->需求分析->概要设计->详细设计->编码->测试->运行维护计算机软件等步骤(摘自百度知道). 软件工程的学习,是一块大项目,具体通过项目的制作实现,通过项目学习该门课程也是老师给我们的任务. 就目前的学习情况来看,软件工程在项目开发前的准备,开发时的设计和开发后的维护,都是一套需要一起考虑到的,所以,软件工程不单单是一个软件制作,更是软件设计

【目标】我的软件工程实践项目

1.这次的软件工程实践项目是要我们开发移动应用的软件,而我本人对于Android较感兴趣,所以对到最后能学习到的能力的预期当然是: · 有能力独自开发能稳定运行功能简单的应用,比如教务处查成绩软件等: · 懂得如何团队协作,想要开发功能稳定,强大的软件,单干肯定不行,所以要积累团队协作的经验: · 当然,如果有能力,能顺便了解下IOS或微信的开发自然最好. 2.而对课程的期望:希望老师能先给我们规划好大概的学习方向,让我们知道从哪开始入手学习,学习哪个方向的知识,不至于走太多歪路.当然,学习过程

集美大学网络1413第八次作业(团队四)-- 第一次项目冲刺(Alpha版本)成绩

首先非常抱歉,刚休完假,凌晨才回来,导致这么晚发布成绩,以后旅行可以考虑带点轻便点的笔记本~ O(∩_∩)O 第一次项目冲刺结束了,可以看出来,有的团队做的很棒,也有的团队组合不是很理想,导致进度一直落后. 1. 团队就是团队,组合失败成功都是经验,希望能对大家以后工作有所启发. 2. 要有良好的时间观念,这次迟交都是0分,看着我都觉得可惜. 3. 大家后来回复评论都会积极些,请继续保持. 4. 请大家对自己的产品负责,可以善始善终! 反思: 1. 博客评论不太及时,以后会尽量及时点评~ 题目:

团队作业4——第一次项目冲刺(Alpha版本)

1.团队作业4--第一次项目冲刺(Alpha版本)-第一篇 2.团队作业4--第一次项目冲刺(Alpha版本)-第二篇 3.团队作业4--第一次项目冲刺(Alpha版本)-第三篇 原文地址:https://www.cnblogs.com/daleag/p/8284758.html

现代软件工程团队项目贝塔阶段_开发日志_2018.01.15-2018.01.19

现代软件工程团队项目贝塔阶段_开发日志_2018.01.15-2018.01.19 2018.01.15 已完成: 1.版本上线 1.1上线操作步骤 1.1.1将网站整体文件夹拷贝到keqi1 1.1.2修改microDefinition.php的数据库名和根目录名 1.1.3修改注册界面发送验证码后直接填充功能 1.1.4修改del的主id的class为hide 1.1.5重新运行根目录的111.php(消除红点,也就是消除服务器返回的多余字符) 1.2修复上线过程中遇到的bug  1.2.1

[个人博客作业Week7]软件工程团队项目感想与反思

在阅读了推荐阅读的材料之后,我想了很多东西.最终还是决定,以团队项目的经历为主线,叙述我关于软件工程的一些思考与体会. 凤凰涅槃,浴火重生 如果要我来概况这几周团队项目的经历的话,那么句话是我所能想到的最贴切的一个表述.从最初的雄心壮志,到中间的困顿不堪,再到目前如重生一般的喜悦,我们整个团队经历了太多太多. 重造轮子 轮子,在软件行业中经常指那些设计好的,用于处理常见功能的库.框架或者可重用的代码.而重造轮子则是说,在已经有可用的“轮子”的情况下,自己重新实现一个自己的“轮子”.有些人经常说,

软件工程团队项目第一次Sprint评审

第一组:9-652 作品:炸弹人 评价:已经完成了界面的设计和基本功能,游戏已初具雏形.这款游戏可玩性很强,是个很不错的项目.但是对游戏并没有进行深入开发,不能持续的吸引玩家的兴趣,容易引起玩家的厌倦感.应该适当的增加一些新颖的玩法,比如像炸弹的爆炸的范围,闯关的难度的设计,或者多人对战等等.总之,对于这款作品还是非常期待的. 第二组:hzsy 作品:图文转换 评价:这款作品的实用性非常强,很符合我们日常生活中的需要.但是在演示的过程中,我只看到了软件的页面,并没有看到软件实现了哪些具体的功能.

软件工程团队项目第一次Spring评审会

今天在课上演示了在第一个冲刺周期内的成果,我们在这个周期内简单的完成了一个成绩查询系统. 该系统由四个界面组成 第一个界面:登录界面,但有一个缺点用户名和密码是固定的 第二个是主界面 第三个是数据界面:可以查看数据库内所有数据 第四个界面:成绩查询界面 在该程序中我们创建了数据库,并能够引用,储存数据,查询修改添加删除, 查询是能够用分值区间来查询,还可以用成绩等级(A.B.C.D)查询 不足之处: 没有容错,没有班级,没有课程之分,成绩输入还依靠手动输入,应该提高等级,可以导入,扫描 在下一阶