结对编程项目复盘:带UI的小初高数学学习软件
实现个人项目时,由于我当时的Java GUI编程基础还比较薄弱,所以我选择通过命令行实现,并将编程开发的重点放到了算法效率上去。没能设计出用户体验更佳的UI成为了我在个人项目阶段最大的遗憾。
在这次结对编程项目时,有幸能和擅长图形化编程的志豪同学结为队友。他在SIT项目中所学习到的GUI编程方法与我在CCF与ACM训练中积累到的一些算法经验相得益彰,所以在编程项目已经结束的现在,我认为并相信,我们都学到了很多。
经过讨论,我们在一开始便将项目分为四个部分:短信验证码功能实现、UI界面实现、出题功能的实现、题目正确答案的计算与四个选项的给定。本着“越是陌生的领域越是惊喜无穷”的想法,我选择开发UI界面并探索短信验证码的相关SDK,志豪实现出题、给定正确答案、设置错误项算法。在开发过程中,我们互相帮助,他帮助我解决了很多图形化编程上的问题,我也提出了一些算法建议。我们约定了统一的代码风格与接口,将彼此实现的类进行整合,最终完成了项目。

我想先具体说说我实现的那一部分。由于我在GUI编程方面并没有足够的经验,所以在一开始遇到的问题还是比较多的。志豪同学帮助我理解了一些基本组件的用法(如Button与JButton的区别、Jlabel文字的格式设置方法、文本输入框与密码输入框的添加方法、使用Jlabel设置图片的方法、设置背景图片的方法),再结合可视化编程的思想,通过不断调试,我慢慢实现了预期效果。志豪提供了一些宝贵的建议,比如账号信息应本地保存或服务器保存,这样便可以登录之前注册的账号,也使得注册更有意义。我认真听取了他提供的建议,实现了相应功能,我们的项目就这样在彼此的交流之中不断完善。

我认为短信验证码功能的实现同样是一个重点。我通过自己的公众号申请了短信签名,并借助腾讯云提供的SDK实现了短信验证码功能。当我学习到短信正文模板、短信服务API这些概念,并意识到短信验证码本质上本机程序生成的一段随机码而API按模板发送到指定地址时,我内心是小有成就的。这意味着我可以去探索腾讯云、百度云等提供的其他API,先前只是听说而从未真正实现过的人工智能算法似乎离我更近了一步。

志豪的那一部分实现了出题功能与选项生成功能,由于算法逻辑上比较复杂,需要处理的情况比较多,所以他下了不少功夫。令我十分钦佩的一点是,当我们在讨论在做题页面实现题目依次显示的功能时,志豪提出通过链表高效实现,为了进一步有所提高,他没有使用Java提供的容器,而是像初学数据结构一样,从最底层(结点类)开始实现了一个高效的链表。这种“Stay hungry,Stay foolish”的态度非常值得学习。
测试的时候发现了一些美中不足的地方,比如生成的三个错误选项均为保留了两位小数的double类型,在取值上与正确答案接近。所以在当正确答案显然应该为整数时,其余三个选项同样为整数更为合适。志豪进一步完善了三角函数与平方根的计算方法,我们再一起改进了选项查重方法,经过多次调试,我们最终完成了结对编程项目。

感谢志豪一直的认真、负责、有耐心。这次结对编程很好地锻炼了我们的合作能力,我也受益于此,从志豪这儿学到了很多。结对编程项目结束,团队项目GO!
结对编程项目复盘:带UI的小初高数学学习软件的更多相关文章
- 结对编程——带UI的小初高数学学习软件
一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...
- 带UI的小初高数学学习软件—艰难地用C++(QT库)实现的过程
从互相了解对方的代码思路然后确定用C++编写,到用win32写界面时变得摇摆不定的考虑着要不要改变语言,再到用QT写完界面后发现短信接口一般都不提供C++,最后到QT打包出来的可执行文件在别的设备上无 ...
- 带UI的小初高数学学习软件
结对编程项目总结 一.项目需求分析与功能总结 (1)用户注册功能 用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册. (2)设置密码功能 密码6-10位,必须含大小写字母和数 ...
- 带UI 的小初高数学学习系统 —结对编程项目总结
一. 项目综述 本系统是基于QT Creator 4.3.0开发环境,开发语言C++,能够实现用户注册,发送短信验证码,用户登陆,用户选择题目类型和数量,显示用户本次答题基本功能.支持对用户账号查重, ...
- HNU_小初高数学学习软件_功能说明
结对编程项目主要功能: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-1 ...
- 结对编程项目总结 by:陈宏伟&刘益
结对编程项目在欢快的国庆假期中也顺利结束了.从最初拿到结对编程项目的思考,再到一步一步实现,中间经历了一个漫长的过程.在我和队友的多次协商下,最终我们还是选择使用基于python来实现这一次结对编程项 ...
- 结对编程项目总结(core2组)
结对编程项目总结(core2组) 作业---四则运算(Core 第二组) ----by 吴雪晴 PB16061514 齐天杨 PB16060706 一.项目简介 项目的任务为制作一个给(貌似是?) ...
- 这就是小学生也会用的四则计算练习APP吗?- by软工结对编程项目作业
结对编程项目 软件工程 这就是链接 作业要求 这就是链接 作业目标 熟悉在未结对情况下如何结对开发项目 Github与合作者 合作者(学号): 区德明:318005422 虚左以待 Github链接: ...
- 20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
20175324王陈峤宇 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...
随机推荐
- 【并发编程】Java并发编程传送门
本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. [并发编程系列博客传送门](https://www.cnblogs.com/54 ...
- 知识图谱推理与实践(3) -- jena自定义builtin
在第2篇里,介绍了jena的The general purpose rule engine(通用规则引擎)及其使用,本篇继续探究,如何自定义builtin. builtin介绍 先回顾builtin为 ...
- JS---part5 课程介绍 & part4 复习
part5 课程介绍 另一个定时器 第一个定时器的小案例----练习 封装动画函数----------匀速的动画函数,过渡到=======>缓动的动画函数 简单的轮播图 左右焦点的轮播图 无缝连 ...
- 数据库学习笔记day01+day02
--表示系统时间select sysdate from dual --表是关系型数据库的基本结构--表是二维的,由行和列组成--行称为记录,列称为字段 --创建第一张表create table hw( ...
- 去除TextView设置lineSpacingExtra后,最后一行多出的空白
转载请标明出处:https://www.cnblogs.com/tangZH/p/11985745.html 有些手机中,给TextView设置lineSpacingExtra后会出现最后一行的文字也 ...
- oop面向对象【类与对象、封装、构造方法】
今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...
- 面试连环炮系列(二):你们的项目Redis做了集群部署吗
你们的项目Redis做了集群部署吗? 我们有大量数据需要缓存,而单实例的容量毕竟是有限的,于是做了Redis集群部署. 采取的方案是什么,Codis还是Redis Cluster,为什么要选择这个方案 ...
- Kafka实战(七) - 优雅地部署 Kafka 集群
既然是集群,必然有多个Kafka节点,只有单节点构成的Kafka伪集群只能用于日常测试,不可能满足线上生产需求. 真正的线上环境需要考量各种因素,结合自身的业务需求而制定.看一些考虑因素(以下顺序,可 ...
- ASP.NET MVC5基础 - Global.asax详解
简介 作用 Global.asax的处理事件 实例说明 总结 简介 Global.asax是一个文本文件,它提供全局可用代码.这些代码包括应用程序的事件处理程序以及会话事件.方法和静态变量.有时该文件 ...
- HeadFirst设计模式<2>
HeadFirst设计模式<2> 1 装饰者模式 星巴克咖啡 饮料 总结 如果说策略模式是通过组合实现弹性,那么装饰者模式就是通过继承来实现,在实现的同时,客户基本感觉不到使用了装饰者模式 ...