结对编程项目在欢快的国庆假期中也顺利结束了。从最初拿到结对编程项目的思考,再到一步一步实现,中间经历了一个漫长的过程。在我和队友的多次协商下,最终我们还是选择使用基于python来实现这一次结对编程项目,并且最终选择了以eric6 + pyqt5 +Anaconda3以及pycharm混搭的开发环境来实现了此次带UI的中小学生题目生成系统。

设计实现:

  关于此次结对项目,我和队友总结了一下,主要分为两个方面,UI加上后台的实现,我们也进行了明确的分工,我去实现UI界面,队友实现后台系统,后期再根据我每个页面提供给队友的接口,把UI和后台实现进行整合。在实现的过程中,我们也遇到了很多困难,然后我们也对此分别进行了总结。

UI的实现:

  起初最开始拿到结对编程项目的需求的时候,先是冷静分析了一波,UI的实现具体需要哪些页面,页面与页面之间的关系是什么,怎么去实现页面之间的相互跳转。起初分析完后,最开始是用的python自带的tkinter模块进行每一个界面的设计,但当设计第一个界面的时候,便出现了问题,关于label控件在背景图片上的显示问题,尝试了很多方法,画布,背景图片和label控件的组合方法或者分开来按照顺序贴图,但是设计出来都达不到自己预期所想要的效果。最终还是放弃了tkinter,选择了功能更为强大的pyqt5,加上以前学习UI所搭建好的eric6和Anconda3,最终实现了所想要的效果。

后台的实现:

  因为队友最初的个人项目是用C++来写的,但是我们决定整个项目基于python来实现之后,队友还是选择了重新把C++代码改成了python代码,并且在以前所遇到的出题的出现的问题上进行了优化,还多加实现了项目所需要的其他功能,比如题目的计算,短信验证,统计成绩等等。尤其是在对题目进行计算的时候我们遇到了些许困难,队友最开始的时候想的是使用队列这一结构对题目答案进行计算,先只考虑小学的情况,用一个队列来保存算式里面的运算数,用另一个队列来保存算式里的运算符,定义括号长度从2开始递增,然后先对算式进行遍历,将括号长度为2包含的两个操作数放入到队列1里,然后将其中的运算符放入队列2里,依次类推,最终将所有运算数和操作符全部放完,再每次从队列1中取出两个元素,并从队列2中取出一个操作符,然后进行计算,将得到的值重新放入到队列1的队尾,一直循环,直到队列2为空,队列1里所得到的数值便是最后的计算结果。对于初中生和高中生来说,只需要先将加入的某数的平方开方或者三角函数替换为具体数值,再复用小学计算的方法便能实现。但最后还是有点小bug,最终我们根据查找资料,然后运用的python里面的自带的eval()函数进行计算,最终能算出具体的数值。

组合的实现:
  在进行UI开发的时候,采用的思想是页面与逻辑的分离,每一个UI都有一个UI界面的py文件和一个具体控件逻辑行为实现的py文件,而控件逻辑行为实现的文件,恰好为我们后台代码与UI界面的结合提供了一个很好的接口,我们只需要将我们后台具体实现的某个页面所需要的代码糅合进槽函数中,便能实现后台与UI界面的完美融合。

成果展示:

结对编程的经验教训:

  通过这次项目,我们深切体会到了结对编程的利弊。两个人一起做项目可以相互监督,互相促进,当遇到难点的时候还能共同研究讨论,以尽快解决问题,在这个过程中,整体的效率有了较为明显的提高。但是不同的人总有不同的想法,当意见产生分歧的时候就很糟糕,整个项目也会停滞不前,这个时候沟通就很重要,要综合两个人的想法,争取找到最好的解决办法,所以结对编程也是一个相互磨合的过程。总的来说,结对编程还是很有益处,我们能从对方身上学到很多东西,也有了合作完成项目的意识,是一个很好的经历。 

结对编程项目总结 by:陈宏伟&刘益的更多相关文章

  1. 结对编程项目——四则运算vs版

    结对编程项目--四则运算vs版 1)小伙伴信息:        学号:130201238 赵莹        博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...

  2. 20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175324王陈峤宇 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...

  3. 结对编程项目——C语言实现WordCount Web化

    结对编程项目 代码地址 201631062219,201631011410 gitee项目地址:https://gitee.com/xxlznb/pair_programming 作业地址:https ...

  4. 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...

  5. 20175311胡济栋 2018-2019-2《Java程序设计》结对编程项目-四则运算 第二周 阶段性总结

    20175311胡济栋 2018-2019-2<Java程序设计>结对编程项目-四则运算 第二周 阶段性总结 需求分析 这是利用栈来设计一个计算器的第二阶段总结. 自动生成四则运算的题目( ...

  6. 结对编程项目总结(core2组)

    结对编程项目总结(core2组) 作业---四则运算(Core 第二组)   ----by 吴雪晴 PB16061514 齐天杨 PB16060706 一.项目简介 项目的任务为制作一个给(貌似是?) ...

  7. 结对编程项目复盘:带UI的小初高数学学习软件

    实现个人项目时,由于我当时的Java GUI编程基础还比较薄弱,所以我选择通过命令行实现,并将编程开发的重点放到了算法效率上去.没能设计出用户体验更佳的UI成为了我在个人项目阶段最大的遗憾. 在这次结 ...

  8. 结对编程项目报告--四则运算CORE

    <!doctype html> sw_lab2.mdhtml {overflow-x: initial !important;}#write, body { height: auto; } ...

  9. 这就是小学生也会用的四则计算练习APP吗?- by软工结对编程项目作业

    结对编程项目 软件工程 这就是链接 作业要求 这就是链接 作业目标 熟悉在未结对情况下如何结对开发项目 Github与合作者 合作者(学号): 区德明:318005422 虚左以待 Github链接: ...

随机推荐

  1. 面向对象OOP概念描述

    面向对象三大特征:封装,继承,多态 封装就是把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法 继承就是在已经存在的类的定义作为基础,建立新的技术.新定义的类可以添加新的数据或功能,也可以 ...

  2. 浅谈java线程池实现

    再进入主题之前,我们先了解几个概念,对读源码有所帮助,对于线程池的运行状态,有4个级别,分别是RUNNING,SHUTING,STOP,TIDING,TERMINATED 解释如下: The runS ...

  3. 瑞芯微RKnanC芯片处理器介绍

    RKnanC是一种低成本.低功耗.高效率的数字多媒体芯片,它是基于ARM的低功耗处理器结构和硬件加速器.它是专为便携式音频产品应用,如MP3播放器等. RKnanC可以支持各种音频标准的解码,如MP3 ...

  4. css 选择器基础

    有时在看别人代码时,看到一长串的选择器经常有点懵,今天来夯实一下基础 选择器有: 1.标签选择器 :就是HTML 中的标签 如<p> <h1> <body>等 2. ...

  5. git使用笔记1:结合Github远程仓库管理项目

    git是一个十分好用的版本控制工具,我们经常在本地使用git进行项目开发,Git 并不像 SVN 那样有个中心服务器,如果想要通过 Git 分享你的代码或者与其他开发人员合作,就需要将数据放到一台其他 ...

  6. windows下gitbash安装教程

    下载安装 1.从git官网下载一个git安装包,官网下载地址http://www.git-scm.com/download/ 2.双击安装程序,进入欢迎界面点击[Next >] 3.阅读协议,点 ...

  7. python3 购物车

    今天干了啥?喂了喂龟,看了看鱼... 然后就是学习了两个模块:sys模块和os模块,突然觉得python真的好,只要英语学的好,看代码超级舒服的说,嗯,我要好好学英语,今天背了几个啥,唉.写完博客再背 ...

  8. [LeetCode] 26. 删除排序数组中的重复项

    题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 题目描述: 给定一个排序数组,你需要在原地删除重复 ...

  9. vscode创建net core控制台程序

    vscode近来深受的开发人员的喜爱.在下的前端同事们也纷纷使用vscode.在下就想了我等后端程序员也可以用vscode写C#代码.毕竟是从宇宙第一IDE  ----Visual Studio衍生的 ...

  10. 跟我一起学opencv 第二课之图像的掩膜操作

    1.掩膜(mask)概念 用选定的图像,图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程.用于覆盖的特定图像或物体称为掩模或模板.光学图像处理中,掩模可以足胶片,滤光片等 ...