软件工程——结对作业(Second)


一、题目要求


我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
  能够自动生成四则运算练习题
  可以定制题目数量
  用户可以选择运算符
  用户设置最大数(如十以内、百以内等)
  用户选择是否有括号、是否有小数
  用户选择输出方式(如输出到文件、打印机等)
  最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)


二、角色分配


驾驶员:张凡,主要负责编写代码、测试功能和后期修改。
领航员:田玉斌,主要负责代码审查及测试用例的设计,并辅助驾驶员完成部分功能。 
代码托管地址:https://git.dev.tencent.com/dtid_8eb12391536726e4/sizeyunsuan.git

表达式生成函数,个人认为是比较难的地方,要考虑括号的问题

def writeF(slist,num,hb):#生成算术表达式
    global j,k
    s=''
    if hb>100:#符号数为3
        if j==1 and k==0:
            s = '%s %s (%s %s %s) %s %s = ' % (f(num[0]), slist[0],
            f(num[1]),slist[1], f(num[2]), slist[2], f(num[3]))
        elif j==1 and k==1:
            s = '%s %s (%s %s (%s %s %s)) = ' % (f(num[0]), slist[0],
            f(num[1]),slist[1], f(num[2]), slist[2], f(num[3]))
        elif j==0 and k==1:
            s = '%s %s (%s %s %s %s %s) = ' % (f(num[0]), slist[0],
            f(num[1]),slist[1], f(num[2]), slist[2], f(num[3]))
        if hb == 112 or hb ==212:          
            s = '(%s %s %s %s %s) %s %s = ' % (f(num[0]), slist[0],
            f(num[1]),slist[1], f(num[2]), slist[2], f(num[3]))
        elif hb == 121 or hb ==122:
            s = '(%s %s %s) %s %s %s %s = ' % (f(num[0]), slist[0],
            f(num[1]),slist[1], f(num[2]), slist[2], f(num[3]))
        else:
            s = '%s %s %s %s %s %s %s = ' % (f(num[0]), slist[0],
            f(num[1]),slist[1], f(num[2]), slist[2], f(num[3]))
    elif hb>10:#符号数为2
        if j==1 :
            s = '%s %s (%s %s %s) = ' % (f(num[0]), slist[0],
            f(num[1]), slist[1], f(num[2]))
        if hb == 12:
            s = '(%s %s %s)%s %s = ' % (f(num[0]), slist[0],
            f(num[1]), slist[1], f(num[2]))
        else:
            s = '%s %s %s %s %s = ' % (f(num[0]), slist[0],
            f(num[1]), slist[1], f(num[2]))
    else :#符号数为1
        s ='%s %s %s = ' % (f(num[0]),slist[0],f(num[1]))
    return s

运算器页面

生成的题目和答案存于文件


三、总结


这次编程是第一次用自己的知识来编写,虽然题目难度不是很大,但是图形界面方面知识欠缺,之后会花时间来研究,在以后的作业或其他项目做得更好

原文地址:https://www.cnblogs.com/fanshen/p/10812640.html