码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-10-10 17:07:07      阅读:24      评论:0      收藏:0      [点我收藏+]

标签:需要   交流   处理   知识   增加用户   任务   密码   springmvc   意义   

要求

在个人项目的基础上,和结对伙伴合作,增加图形化界面。增加用户注册和登录功能,并可在登录状态下修改密码。用户在分数界面可选择退出或继续做题。题目生成要求与个人项目相同。

具体实现

我的搭档小梁的个人项目也是用Java编写的,因此理所当然地使用Java作为基本语言。在桌面应用和网站的选择上,我们选择写网站挑战自己。这是一个从未接触过的方向,因此我们需要从头学习很多新的知识。前三天先去查找资料,初步了解、学习做本地网站的知识,后来进行分工,小梁负责前端,我负责后端的编写。

网站逻辑

本网站使用了简单的txt文件对用户名和密码进行存储。将网站部署在Tomcat本地默认ROOT文件夹下,利用SpringMVC增加注解进行页面之间的逻辑转换和前后端交互,利用jQuery和Ajax实现异步通信,提升网站运行体验。前端界面以jsp形式结合了html、css和js代码。最终实现登录界面和整体风格如下图所示,点击相应按钮界面之间会跳转。
| 技术图片

| 技术图片

技术图片

| 技术图片

|
验证码的短信发送使用了阿里云的短信服务,将官方文档提供的接口接入自己的代码文件中即可运行发送验证码到手机上。部分简单的网页跳转和条件判断在前端完成,涉及到比较复杂的逻辑如题目生成则交由后端完成后传送至前端展示。

题目生成

题目生成在我与搭档的讨论下,决定对之前的代码进行重构。总体思路相同,这次使用中缀表达式转后缀表达式的方法解决题目生成过程中可能出现的一系列问题(感谢沈伟峰提供的思路和帮助)。中缀表达式是我们最常见的表达式,也是人理解最容易的表达式,形如(a+b)*c-(d-e)/f,但是这样的表达式计算机却不容易处理。将其转化为后缀表达式如ab+c*de-f/-,即可通过栈对表达式进行处理。从左往右遍历,将数字入栈,遇到运算符则从栈中取出需要的值进行计算,将计算的结果继续入栈。最后栈里只剩一个数字就是结果。

那么如何将中缀表达式转化为后缀表达式?同样的准备一个栈,将符号入栈,遇到数字则直接输出,接下来的符号根据优先级进行出入栈的判断。遇到左括号直接入栈,右括号则将直至左括号位置的栈中所有符号弹出即可。

此处还需要注意几个小地方。一是操作数的个数和操作符的个数的关系是差1,可以根据题目要求进行控制;二是处理高中难度的sin、cos、tan当作具体的数处理,即将cos60°这样的运算直接转化为0.5的结果进行计算;三是一元运算符的优先级设置为最高;四是括号的处理,由于操作数较少,这里直接用了二重循环判断括号的位置并对其是否有意义进行了判断,从而保证了括号的随机性和正确性。

经验与教训

  1. 结对编程更需要两个人的交流与沟通,能够及时地提出问题、解决问题能够很有利地节省程序编写的时间。
  2. 互相鼓励,互相支持,偶尔需要商业互吹!给对方充分的信任,相信对方能够解决遇到的问题,给自己一个“惊喜”。
  3. 目标相同、步调一致。磨刀不误砍柴工,对于一些先导知识,要留出一定时间进行学习。
  4. 敢于挑战自己,挑战一些看似不可能的东西。有勇气迈出第一步,往往是成功的开始。
  5. 清晰的项目结构有助于更好地构建代码逻辑。

技术图片

经过这次结对编程,我终于有机会对网站有了初步的理解,能够明白上述或主流或过时的技术的基本用法并进行实际运用,是一次非常难得的机会。我很感谢我的搭档,是她给了我很多支持和鼓励,并且非常出色地完成了前端的工作,让我感到很惊喜!我们的交流很顺畅,对项目的时间把握也很到位。接下来我希望自己能够继续学习,将这个网站部署到阿里云服务器上,让更多的人能够访问它。继续完善它,使它的功能更完善。对于团队编程也更有信心了,我和我的队友一定能出色地完成任务。

本项目作为一个合作的、较完整的项目,将陆续整理为博客发布在个人博客里。

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

标签:需要   交流   处理   知识   增加用户   任务   密码   springmvc   意义   

原文地址:https://www.cnblogs.com/hnuhzy/p/13789630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!