【写在前面】这次是复用个人项目进行结对编程,其实主要复用的就是凌老板的出题部分和我的文件读写部分,其余部分都是新学的。在这次编程中也涨了很多知识,其中最最最让人哭笑不得的就是:两个人用了不一样的编辑器,凌老板用的IDEA,我用的eclipse,虽说都是java,但是最后写出来的项目导致不能直接导入,百度了很多奈何本人太菜,所以最后只能让凌老板用eclipse编写程序。所以说,以后编写程序的时候最好要用同一个编辑器,要不然就会出现莫名其妙的报错。

还是先说一下结对编程的项目需求,这样大家好知道我们是干啥的,话不多说,正文开始:

一、项目需求

用户:

小学、初中和高中学生。

功能:

1、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;

2、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;

3、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;

4、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;

5、最后一题提交后,界面显示分数,分数根据答对的百分比计算;

6、用户在分数界面可选择退出或继续做题;

小初高数学题目要求见个人项目。

二、任务分工

本次任务,我们没有像许多同学分为了前端和后端,因为考虑到以后人才都是比较全方面的,所以我们是按功能点分的,这样两个人就都可以掌握前端和后端的知识。

李晓彤:功能点1、2、3

凌嘉文:功能点4、5、6

其中我认为难点就是:功能点1中手机注册码以及功能点4中要计算正确答案的算法。

三、具体结果&实现讲解

1.软件操作流程图

2.登录界面

 实现原理:可以看到在账号后面的内容框里是灰色的,这里的效果就是如果框内没有内容,那么就会显示默认的提示文字,如果框内有内容或者是鼠标点击了,那么提示文字就会消失。这里注意登录和找回密码都要判断是否存在该用户,故要有个专门的txt文件存储用户名和密码。

容易忽视的点有:1.找回密码时用户不存在:找回密码的时候容易想到直接给用户密码,但是如果用户不存在就GG了,所以一定要考虑用户不存在的情况。

3.注册界面

实现原理:这里可以看到,框内灰色的实现和登陆界面的内容框内灰色文字的实现原理相同,都是用了继承FocusListener后来修改一系列的参数。然后重点来了,这里的“请输入正确的验证码”是采用了多线程编程,这样可以实时显示用户输入的结果是否正确。这样也可以省去检测按钮和减少用户操作,提升体验感。这块背后的算法是利用了阿里云的短信验证功能。这块浪费的时间最多,各种调试和bug修改,这里需要注意的一点就是:

阿里云的这里,一定填的是你申请的模板号码,而不是具体模板内容。就因为这点,改了两天bug,后来是用阿里云在线生成代码后才发现自己这里错误的(他会提示模板不合法)。

容易忽视的点:注册过的用户不能重复注册,还有就是要注意多线程编程,以及阿里云短信验证。这个阿里云的具体操作有百度链接,我就不过多赘述。

4、设置密码:

实现原理:还是采用了多线程编程,才能让提示框中红色字内容实时显示

 容易忽视的点:多线程编程中一定要初始化框内的内容,不然回报空指针错误,而且在run中也一定要先判断框中有没有东西。

5、选择难度

实现原理:由于是用的可视化编程,所以也没什么可以注意的地方,就是背景图片一定要在最下层,别的没什么要注意的了。

容易忽视的点:无。

6.修改密码

实现原理:还是多线程编程,没的说。

 容易忽视的点:

1.这里要做一个判断,就是他输入的新密码一定只能包含大小写字母和数字。

2. 红框未消失的时候点击下一步无效。

7.选择数量

实现原理:这里没有用多线程编程,因为后续报错以及String类型转成int类型判断数量是否合法,还有输入的是否是数字。各种报错让我最后弃用了多线程编程。他刚开始框内会显示10作为默认的出题数量,但是同样的,如果红框不消失的话开始做题按钮也是无效的。

容易忽视的点:输入的不一定就只是数字,还有可能是各种字符和空格,这里就只能输入数字,多一个空格也不行。

8.出题

实现原理:这里主要就是计算问题以及随机出结果,这个随机出的结果不能和正确结果相同。上一题按到最前面时要出现“已经到第一题了”的提示。这个计算的算法是这样实现的:

把一个式子最多有五个操作数,那么先从括号算起,一遍遍遍历这个式子,先处理三角函数,然后处理根号和平方,之后是乘除,最后才是加减。也就是先算每一个项的数,再扩大这个项的范围(这里只是将项的特征做了改变,因为有五个操作数,所以操作数特征从左到右分别为1~5)。这里项的概念借助了凌老板的个人项目中有关计算的部分。

容易忽视的点(改bug的时候发现的):

1.不能记住上一题的结果

2.上一题至最前面时没有提示

3.重新出题后,会把上次做题的结果记住,而不是清空重来。

4.算式太长显示不了-----计算最长能显示的算式,然后判断如果算式长度超过了,则重新生成算式。

5.结果太长,一个项显示不了--------把4个项从占一行变成了每行一项。

9.得分

实现原理:因为有上一题的功能,所以就要记录每一个选项,最后算得分,而不是一边选一边算。最后把分数强制转化为int类型就可以了。

容易忽视的点(改bug的时候发现的):分数如果不转化为int类型,可能导致显示不完全。

四、代码可能出现的问题

1.发送短信不成功:那你可能要联系管理员:李晓彤,告诉她欠费了要交钱了。

2.存储新注册的用户信息,要根据你上次操作user.txt的光标所处位置,所以他有可能是连在上一个用户的后面,也有可能是另起一行,这就可能导致改密码的时候出现不成功的bug。

五、思考与总结

这次编程可谓是用时很长,而且克服了种种艰难。总之就是:受益匪浅,膜拜凌老板的算法,以及佩服自己能改完一个又一个的bug。从这次编码中领悟到一个道理:coding不是最重要的,thinking才是!bug复bug,bug何其多!

记java的那些编辑器的故事之凌嘉文+李晓彤-结对编程的更多相关文章

  1. 转!!Java代码规范、格式化和checkstyle检查配置文档

    为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...

  2. Java代码规范、格式化和checkstyle检查配置文档

    http://www.blogjava.net/amigoxie/archive/2014/05/31/414287.html 文件下载: http://files.cnblogs.com/files ...

  3. 20175226 2018-2019-2《java程序设计》结对编程-四则运算(第一周-阶段总结)

    结对编程-四则运算(第一周-阶段总结) 需求分析 实现一个四则运算程序,要求: 自动随机生成小学四则运算题目(加,减,乘,除) 支持整数.真分数且支持多项式 能够利用栈的思想,将中缀转换为后缀表达式 ...

  4. 20175305张天钰Java结对编程四则运算(二)

    Java结对编程四则运算(二) 一.题目描述及要求 Git提交粒度不要太粗,建议一个文件/一个类/一个函数/一个功能/一个bug修复都进行提交,不能一天提交一次,更不能一周一次,参考Commit Me ...

  5. 20175305张天钰Java结对编程四则运算

    Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...

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

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

  7. 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...

  8. 2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算

    2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算 经过第一阶段的学习,同学们已经熟悉了这门语言基本的用法.在一次又一次对着电脑编写并提交代码,进行练习的时候,有没有觉 ...

  9. 20175312 2018-2019-2 《Java程序设计》结对编程练习_四则运算(第二周:整体性总结)

    20175312 2018-2019-2 <Java程序设计>结对编程练习_四则运算(第二周:整体性总结) 结对对象与其博客链接 20175309 刘雨恒:https://www.cnbl ...

随机推荐

  1. java输出txt文件到桌面

    private static void outputTxt(String ExportFailStudentMsg){ FileSystemView fsv = FileSystemView.getF ...

  2. 微信小程序搭建mpvue+vant+flyio

    导语 上一篇文章微信小程序搭建mpvue+vant已经介绍了如何搭起mpvue项目及引入vant,本篇文章继续在它的基础上,引入flyio,并做一些封装,目的是为了在小程序发起请求. 这时读者会有些疑 ...

  3. CF1216E Numerical Sequence

    题目链接 问题分析 奇奇怪怪的题... 首先思路达成一致,从大到小一步一步确定位置. 我们一边分析,一边讲算法. 1121231234123451234561234567123456781234567 ...

  4. 2、dubbo基础知识

    1.简介 2.dubbo架构 3.dubbo环境搭建 注意:cmd命令都是在bin目录的地址栏直接输入 xxx.cmd 4.配置dubbo-admin 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: ...

  5. Inter IPP & Opencv + codeblocks 在centos 环境下的配置

    一.先安装codeblocks wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noar ...

  6. 「前端」尚妆 UI 组件库工程实践(weex vue)

    本文来自尚妆前端团队南洋 发表于尚妆github博客,欢迎订阅! 前言 尚妆大前端团队使用 weex 进行三端统一开发有一段时间了,截止本文发表「达人店」APP大部分页面都已经用 weex 进行了重构 ...

  7. 【黑马JavaSE】1_1_11_IDEA、12_方法、13_重载

    文章目录 1_1_11_01开发工具IntelliJ IDEA 1.3 创建包.查看包的目录结构 1.5 字体设置(File->Settings->Editor->Font) 1.6 ...

  8. Appium+Robotframework实现iOS应用的自动化测试

    Appium+Robotframework实现iOS应用的自动化测试 连接地址: 地址:https://blog.csdn.net/wd168/article/month/2016/06 1.http ...

  9. System.Runtime.CompilerServices.Unsafe

    System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Un ...

  10. spark streaming 4: DStreamGraph JobScheduler

    DStreamGraph有点像简洁版的DAG scheduler,负责根据某个时间间隔生成一序列JobSet,以及按照依赖关系序列化.这个类的inputStream和outputStream是最重要的 ...