结对编程项目复盘:带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!

原文地址:https://www.cnblogs.com/hnu2017/p/11605183.html

时间: 2024-08-07 04:11:53

结对编程项目复盘:带UI的小初高数学学习软件的相关文章

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

用户: 小学.初中和高中学生. 功能: 1.用户注册功能. 2.登录,修改密码 3.在线做题,评分 经验总结 这次的结对编程并没有实现对个人项目的复用,经过对结对编程需求的分析发现个人项目的出题逻辑完全不能用于小初高数学学习软件, 因为在个人项目中的出题逻辑是几乎是采用的完全随机,在结对编程项目中这种逻辑是行不通的,没有办法采用答案,而且在个人项目中我们 都是采用的面向过程的方法,同时我们的个人项目结构也有点混乱,导致了复用的难度很大.所以我们完全重新写了代码,实现了登录/注测, 修改密码,选择

结对编程项目:带UI的小初高数学学习软件总结

需要实现的功能: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-10位,必须含大小写字母和数字.用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功: 3.密码设置成功后,跳转到选择界面,界面显示小学.初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量: 4.用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题

结对编程之带UI的小初高数学学习软件

功能要求: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-10位,必须含大小写字母和数字.用户在登录状态下可修改密码,输入正确的          原密码,再输入两次相同的新密码后修改密码成功: 3.密码设置成功后,跳转到选择界面,界面显示小学.初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量: 4.用户输入题目数量后,生成一张试卷(同一张卷子不能

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

因为和队友在写个人项目时使用的都是C++语言,所以在结对编程时使用Qt平台创建图形化界面.结对编程的工作量还是很大的,感觉近一周的大部分时间和精力都花在项目上,脑子里都是代码orz. 看到结对编程的项目需求后,我们对接下来的要做的事情有了一定的计划.首先是熟悉开发环境,因为是我们都是第一次做图形化界面,选择了Qt作为开发工具.一开始对于Qt都是没有接触过完全一头雾水的状态.所以我们决定先花一天的时间学习Qt的一些基本操作和了解相关的内容.当大概了解清楚Qt的操作和实现一些简单的功能操作之后,我们

带UI的小初高数学学习软件-与张凯翔同学共同完成结对编程

这次的结对编程是要我们在个人项目的基础上,经过合作和创新,来完成一个带UI界面的出卷答题系统,综合分析题目,这次的项目共有几个难点: 第一,实现UI界面:第二,通过调用短信服务来进行注册:第三,这次登录的账号都要经过注册,这意味这我们需要使用数据库来储存每一个登录或注册的账号,或者使用文件流从txt文件读取:第四,这次不仅需要出题,还要生成四个答案,就是说要负责出题和做题: 经过我们两个人的讨论,我们决定凭借张凯翔同学已经在个人项目实现UI界面的优势,直接使用JAVA语言进行开发,由张凯翔进行U

结对编程-带UI的小初高数学学习软件-分析总结

开发环境选择的是VS2015,使用Win32 API进行开发.我主要负责软件UI的设计和实现,队友负责算式的计算,最后一起实现短信验证码的发送功能,再进行整合. 代码复用的主要部分是生成题目的部分. UI界面的实现: 并没有使用 已经将已经将Windows界面程序的创建过程完全封装的Qt或者MFC进行实现,而是比较底层的使用Win32 API 手动创建窗口以及各种需要用到的窗口控件和手写消息处理函数.怎样做的坏处很明显,就是会导致巨大的代码量以及长久的开发周期,但对于理解Windows窗口程序的

带UI的小初高数学学习软件---结对编程分析

优点: 1.编程风格统一,函数命名符合规则,函数与变量便于分辨,也很容易从命名懂得其实际意义.代码注释简洁,重点突出. 2.将代码分类三部分,分别实现登录及类型初始化,生成试卷,用户信息类,层次清楚明白,便于修改.各个函数分工明晰.代码的封装性较好. 3.存储生成试卷时还按照类型进行了分类,使结果更为清晰明白. 4.利用文件读入做了题目的重复检测. 缺点: 1.功能实现不完整,未完成对括号的添加. 2.生成题目时运算值可能不够严谨,未对此进行合理性检测. 总结: 对方的代码有很多值得学习的地方.

结对编程——带UI的小初高数学出题软件

>>>功能要求 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-10位,必须含大小写字母和数字.用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功: 3.密码设置成功后,跳转到选择界面,界面显示小学.初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量: 4.用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题

结对编程项目——收获及感想

结对编程项目-带UI的小初高数学学习软件 一.项目需求 用户: 小学.初中和高中学生. 功能: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-10位,必须含大小写字母和数字: 3.密码设置成功后,跳转到选择界面,界面显示小学.初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量: 4.用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目),界面显