结对编程(70,73)

题目描述

我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。

需求分析

1:记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
2:有计时功能,能显示用户开始答题后的消耗时间。
3:界面支持中文简体/中文繁体/英语,用户可以选择一种。

结对分工

天生(队友):
           1:有计时功能,能显示用户开始答题后的消耗时间。
           2:界面支持中文简体/中文繁体/英语,用户可以选择一种。

毕川(本人):
           1:建构四则运算式的题库。(网上找的题库,然后自己用算法计算出题目的结果)
           2:记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

思维导图

1:中缀表达式转后缀表达式

1110276-20170314222521807-1136060980.png

2:后缀表达式求值

1110276-20170314222628557-1705812550.png

代码展示

void inFix_postFix(string inFix, string &postFix) //中缀表达式转化成后缀表达式
{
    int len_in = inFix.size();
    int k = 0;
    stack<char>Q;

    for (int i = 0; i < len_in; i++)
    {

        if (inFix[i] >= '0' && inFix[i] <= '9')  //遇到数字直接输出到postFix中
        {
            while (inFix[i] >= '0' && inFix[i] <= '9')
            {
                postFix += inFix[i];
                i++;
            }
            i--;
            postFix += ' ';
        }
        else if (inFix[i] == '(')    //遇到左括号直接入栈
        {
            Q.push(inFix[i]);
        }
        else if (inFix[i] == ')')  //遇到右括号,将栈中的元素全部输出到postFix中,直到遇见左括号
        {
            while (Q.top() != '(')
            {
                postFix += Q.top();
                Q.pop();
            }
            Q.pop();
        }
        else                             //遇到运算符
        {
            if (Q.empty() == true || Q.top() == '(' || Precedence(inFix[i], Q.top()) == false)  //如果栈为空,或栈顶元素为左括号,或inFix中的运算符比栈顶的元素的级别高的话,则直接入栈
            {
                Q.push(inFix[i]);
            }
            else
            {
                while (Q.empty() != true && Q.top() != '(' && Precedence(inFix[i], Q.top()) == true)//栈中的元素不为空且栈顶不是右括号且输入的运算符比栈顶的元素的优先级低,弹出
                {
                    postFix += Q.top();    //将出栈元素放到后缀表达式的数组中
                    Q.pop();
                }
                Q.push(inFix[i]);//弹出之后再把输入元素入栈
            }
        }
    }
    while (!Q.empty())   //把栈中剩下的元素全部放到后缀表达式的数组中
    {
        postFix += Q.top();
        Q.pop();
    }
}

算法说明

实现了四则混合运算,可以计算分数和整数的混合运算(带小括号的)。
对于分数的处理,是使用了两个栈,分子和分母栈。

代码规范

变量命名的规则:以变量的功能命名,使用完整的英文描述,采用驼峰命名法。
函数传参过程中尽量采用形式传值
花括号“{}”不允许省略,即使只有一段代码。
使用括号“()”来强调运算符优先级。
记得格式化代码,eclipse里面Ctrl+Shilft+F
注释代码段,注释逻辑选择!

小结感受

1:与队友第二次合作,但是这次的合作没有那么顺利,因为队友用的技术我不会,所以只用了负责后端的算法和记录用户的对错总数。

2:结对编程中,代码的规范还是挺重要的!

3:结对编程,大家各有擅长的地方,可以加快开发的速度,所以1+1是大于2的。

程序链接

程序链接

码云链接

PSP(Personal Software Process)表格

PSP2.1Personal Software Process StagesTime (%) Senior StudentTime (%)
Planning计划
· Estimate估计这个任务需要多少时间
Development开发64
· Analysis需求分析 (包括学习新技术)0.50.2
· Design Spec生成设计文档0.30.2
· Design Review设计复审00
· Coding Standard代码规范0.20.1
· Design具体设计
· Coding具体编码
· Code Review代码复审0.50.6
· Test测试(自我测试,修改代码,提交修改)11
Reporting报告23
·Test Report测试报告00
· Size Measurement计算工作量
·Postmortem & Process Improvement Plan并提出过程改进计划

代码的共同提交记录

1110276-20170315073448182-522086939.png

合作照片

1110276-20170314224946854-790618972.jpg

转载于:https://www.cnblogs.com/Smile-BCZ/p/6541438.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值