结对编程项目在欢快的国庆假期中也顺利结束了。从最初拿到结对编程项目的思考,再到一步一步实现,中间经历了一个漫长的过程。在我和队友的多次协商下,最终我们还是选择使用基于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. 学习笔记—HTML基础标签

    HTML的概念 概念: HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 ( ...

  2. Bootstrap3级联多选下拉框

    <!DOCTYPE html> <html> <head> <title>Bootstrap3级联多选下拉框</title> <met ...

  3. iOS----------时间戳与NSDate

    1:时间戳转NSDate NSString *timeStamp =@"1545965436"; NSDate *date = [NSDate dateWithTimeInterv ...

  4. windows一机多装mysql,5.5+版本,8.0.11版本

      00.安装第一个mysql,压缩版或者安装版,过程省略,目录如下: 运行中输入“regedit” 进入后,找到      HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont ...

  5. c/c++ 动态库与静态库的制作和使用

    静态库的用法 静态库的文件名 libxxx.a -->对应windows的.lib文件 做静态库的命令: ar rcs libxxx.a file1.o file2.o file.o 使用静态库 ...

  6. pytest进阶之xunit fixture

    前言 今天我们再说一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学应该知道我们在初始化环境和销毁工作时,unittest使用的是setUp,tearD ...

  7. June 30th. 2018, Week 26th. Saturday

    Curiosity is the wick in the candle of learning. 如果学习是一根蜡烛,那好奇心就是烛芯. From William Arthur Ward. Pleas ...

  8. JAVA_OPTS设置

    AVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量. JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k" -se ...

  9. Spring 对Controller异常的统一处理

    对于Controller的异常处理,分为两种,一种是对已知的异常处理,一种是未知的异常处理 1.定义自定义异常类 /** * @author hzc * */ public class UserNot ...

  10. spark 机器学习基础 数据类型

    spark的机器学习库,包含常见的学习算法和工具如分类.回归.聚类.协同过滤.降维等使用算法时都需要指定相应的数据集,下面为大家介绍常用的spark ml 数据类型.1.本地向量(Local Vect ...