结对编程项目复盘:带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程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...
随机推荐
- 如何优雅地关闭worker进程?
之前我们讲解 Nginx 命令行的时候,可以看到 Nginx 停止有两种方式,分别是 nginx -s quit 和 nginx -s stop,其中 stop 是指立即停止 Nginx,而 quit ...
- [ASP.NET Core 3框架揭秘] 依赖注入[10]:与第三方依赖注入框架的适配
.NET Core具有一个承载(Hosting)系统,承载需要在后台长时间运行的服务,一个ASP.NET Core应用仅仅是该系统承载的一种服务而已.承载系统总是采用依赖注入的方式来消费它在服务承载过 ...
- [译]C# 7系列,Part 2: Async Main 异步Main方法
原文:https://blogs.msdn.microsoft.com/mazhou/2017/05/30/c-7-series-part-2-async-main/ 你大概知道,C#语言可以构建两种 ...
- 一起学Vue之样式绑定
在前端开发中,设置元素的 class 列表和内联样式是基本要求.本文主要讲解Vue开发中,样式列表和内联样式的绑定,仅供学习分享使用,如果有不足之处,还请指正. 概述 Vue操作元素的 class 列 ...
- Spring Boot 设置项目名后静态文件相对路径问题
出现问题的原因 server.servlet.context-path=testDemospring.mvc.static-path-pattern=/static/**定义项目名和静态资源路径后发现 ...
- 避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为
避免 C# TreeView NodeMouseDoubleClick 双击事件的节点错位的错误行为 在使用WinForm标准的TreeView控件的过程中,添加了如下类似的节点 parentNode ...
- 删除列表中重复元素以及求list中元素个数
Python 去除列表中重复的元素 来自比较容易记忆的是用内置的set l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2 还 ...
- css实现内容不相同的左右两个div等高
问题提出 现在有两个div左右排列,但是两个div的内容不相同,如何设置两个div的css做到在两个div等高排列呢? 下面是网上找的3种实现方法,觉得很有代表性,所以索性收藏起来. 方法一 通过父元 ...
- 用Python写算法题--洛谷P1149 火柴棒等式
题目 题目来源 P1149 火柴棒等式,https://www.luogu.org/problem/P1149 题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式? ...
- PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。
直接贴代码吧 PHP版本5.6.38 mysql版本5.0 //连接数据库 $mysql_server_name = "*.*.*.*"; $mysql_username=&quo ...