• 结对项目总结现代软件工程


    首先分析一下在个人项目中我们两个算法的区别,主要的生成题目中的算法,本次结对项目中要复用的也是这部分。

    算法一:

      用C++编写,使用vector<string>数据结构,采用插入的方式生成括号和一些运算符,算法过程如下。

        先随机一个数插入vector首,再随机出运算符个数,采用循环依次生成运算符、数字,这样就产生了小学题目。

        初中题目为在小学题目基础上插入括号,先插入左括号,遍历已经生成小学题目的vector,因为左括号可以插入数字和其他左括号前,所以

        当遍历到数字和左括号是就随机判断是否要插入括号。

        同理^0.5和^2只能在数字和右括号后,继续插入^0.5和^2,这样就生成了初中题目,高中题目也类似,在初中题目的基础上再加入三角函数。

    算法二:

      用C++编写,采用数组顺序插入(string末尾append)生成题目。

        先建一个数组,用不用数字代表不同符号(运算符和数字),在数组中随机生成这些代表,在根据这个数组生成相应的符号append到string中。

    两种算法在结对项目中分析:

      由于要求生成每道题目的结果,如果采用算法二,由于全是字符串,拆分有点复杂,如每一个数字是一位还是两位都要判断并进行转换,而且根号

      和平方运算符以及三角函数作为一个字符串的转换比较复杂。而算法一中这些运算符都是作为一个整体,比较容易处理并计算结果,所以我们决定

      复用算法一。

    结对项目需求分析:

      三个关键需求:客户端界面、短信验证登录功能以及给出每题参考答案并评分。

      如果继续用C++编写,就要自学QT,工作量较大,而且短信验证接口大都不支持C++,所以我们决定放弃C++,重新改用java写,但实际上

      由于我们做个人项目时封装较好,同样的函数和class从C++中拷入java中运行完全没有问题,这部分关键代码的复用就减少了我们的很多工作。

      

      1,客户端界面我们采用java中swing组件和awt中的事件处理

      2,短信接口采用阿里云的短信API

      3,对于每道题目答案的计算也是本次项目的难点,我们自己也想过一些方法,比如多括号式子,可以遍历题目从最内层最左边括号递归计算。

        后来在网上也找了一些方法,最后我们采用后缀表达式的方法来计算题目答案。参考文章:

        https://blog.csdn.net/qq_36763635/article/details/72627601

    项目总结:

      通过看对方的代码,和自己的对比能发现同一个问题的不同解决思路,也能感觉出每个人不同的编程风格,比如虽然都是用C++编写,但有些

      人喜欢像C语言一样采用面向过程的写法,而有些人则喜欢采用完全面向对象的方式,以及代码中代码命名方式,构造函数的写法等每个人都会

      大同小异。发现除了大量写代码,看他人的代码也是一种很好的学习方法。

      还有这次结对编程更对的还是自学能力的体现,比如短信的使用一开始就有很多人出现很多问题,但是通过自己看文档看博客自己摸索,解决

      了很多问题,也学到了很多新东西。

  • 相关阅读:
    vim 编辑器
    用得到到的超方便软件
    关于 lua table表
    python 写入文件形式
    ifconfig中lo、eth0、br0、wlan0接口
    CPU:chip、core 和 processor 的关系
    lua 匹配空白符
    排序,查找(借鉴某大神的想法)
    sublime 快捷键
    获取进程的名称
  • 原文地址:https://www.cnblogs.com/Davidhwj/p/9751756.html
Copyright © 2020-2023  润新知