zoukankan      html  css  js  c++  java
  • 关于软件工程第一次项目的一些感想

      在奋斗了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、应在数据结构和算法上对程序进行优化。

  • 相关阅读:
    记录一下自己的洛谷的题解
    初学java 学生管理系统——v0002版本
    初学java 学生管理系统——v0001版本
    Redis守护进程作用+数据类型
    java实现发送短信验证码
    Kali入侵入门版笔记!!!
    2020实现ssh公网外联和外网远程穿透以及内网穿透防火墙
    监控键盘和鼠标记录内容和截屏,更新版本2.0,增加了Linux服务端!!!
    Git管理软件开发项目入门版
    2020年Windows下开机自动执行最强
  • 原文地址:https://www.cnblogs.com/ahahahahahaha/p/3991804.html
Copyright © 2011-2022 走看看