实现个人项目时,由于我当时的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的小初高数学学习软件的更多相关文章

  1. 结对编程——带UI的小初高数学学习软件

    一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...

  2. 带UI的小初高数学学习软件—艰难地用C++(QT库)实现的过程

    从互相了解对方的代码思路然后确定用C++编写,到用win32写界面时变得摇摆不定的考虑着要不要改变语言,再到用QT写完界面后发现短信接口一般都不提供C++,最后到QT打包出来的可执行文件在别的设备上无 ...

  3. 带UI的小初高数学学习软件

    结对编程项目总结   一.项目需求分析与功能总结 (1)用户注册功能 用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册. (2)设置密码功能 密码6-10位,必须含大小写字母和数 ...

  4. 带UI 的小初高数学学习系统 —结对编程项目总结

    一. 项目综述 本系统是基于QT Creator 4.3.0开发环境,开发语言C++,能够实现用户注册,发送短信验证码,用户登陆,用户选择题目类型和数量,显示用户本次答题基本功能.支持对用户账号查重, ...

  5. HNU_小初高数学学习软件_功能说明

    结对编程项目主要功能: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-1 ...

  6. 结对编程项目总结 by:陈宏伟&刘益

    结对编程项目在欢快的国庆假期中也顺利结束了.从最初拿到结对编程项目的思考,再到一步一步实现,中间经历了一个漫长的过程.在我和队友的多次协商下,最终我们还是选择使用基于python来实现这一次结对编程项 ...

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

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

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

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

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

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

随机推荐

  1. 【每天一题】LeetCode 0067. 二进制求和

    开源地址:https://github.com/jiauzhang/algorithms 题目描述 * https://leetcode-cn.com/problems/add-binary * 给定 ...

  2. 一起学Vue之模板语法

    概述 Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTM ...

  3. 如何给div、p添加onload事件?

    前提 其实只有 <body>.<frame>.<iframe>.<img>.<link>.<script>.<style& ...

  4. 菜鸟刷面试题(四、Spring/Spring MVC/Spring Boot/Spring Cloud篇)

    目录: 为什么要使用 spring? 解释一下什么是 aop? 解释一下什么是 ioc? spring 有哪些主要模块? spring 常用的注入方式有哪些? spring 中的 bean 是线程安全 ...

  5. python爬虫学习心得:中国大学排名(附代码)

    今天下午花时间学习了python爬虫的中国大学排名实例,颇有心得,于是在博客园与各位分享 首先直接搬代码: import requests from bs4 import BeautifulSoup ...

  6. BearerToken之JWT的介绍

    Bearer认证 HTTP提供了一套标准的身份验证框架:服务器可以用来针对客户端的请求发送质询(challenge),客户端根据质询提供身份验证凭证.质询与应答的工作流程如下:服务器端向客户端返回40 ...

  7. 基于webpack实现多html页面开发框架七 引入第三方库如jquery

    一.解决什么问题 1.如何引入第三方库,如jquery等 二.引入jquery方法 1.下载jquery.min.js放到assets/lib下面 2.安装copy-webpack-plugin,将已 ...

  8. JS---part2课程介绍+part1复习

    part1复习 JavaScript分三个部分: 1. ECMAScript标准----JS基本的语法 2. DOM:Document Object Model 文档对象模型 3. BOM:浏览器对象 ...

  9. 使用Python轻松批量压缩图片

    在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...

  10. zhy2_rehat6_mysql02 - 5.7主从搭建.txt

    1.0------------锁库: mysql>FLUSH TABLES WITH READ LOCK; 这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读.一般都是用在数据库联机备 ...