• 结对编程项目总结


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

    用户:

    小学、初中和高中学生。

    本次结对编程的功能要求是:

    1、 实现登录和注册,使用手机短信验证

    2、 用户在登录状态下可以修改密码

    3、 用户通过选择题目类型(小学、初中、高中)和题目的数量来生成试卷。

    4、 试题不能重复出现

    5、 试卷做完后需要显示最终得分

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

    我们实现了上述需求,并增加了:

    1、 注册时判断账户是否已存在,存在则询问是否忘记密码,通过手机短信重置密码

    2、 获取验证码的按钮设置了连续按下间隔180秒...

    3、 做题时,每个题目都有一个按钮与之对应,可以通过各个按钮跳转到对应题目。

    4、 交卷时,如果题目没做完所有题目直接提交会有提示。

    5、 题目做完后,显示分数和做对、做错、没做的题号,可以查看自己哪里做错了。

    UI的设计:

           最初我们模仿百度的登录界面、学校机考的做题界面做。两个人分别做两个界面,发现模块太多,java swing也用的不熟练,然后两个人做的风格不统一。最终选择了一个MAC风格的java swing主题。

     

    逻辑

    整个项目的设计是基于上次的个人项目做的。很多功能(比如注册登录、修改密码、产生题目、账号信息和题库信息的读取)都是可以直接拿来用的。因为之前的项目是用的JAVA写的,这次也就直接用JAVA来写GUI。

    一开始的界面是登录界面,登录界面有注册和忘记密码两个按钮,用户可以通过这两个按钮进入 注册重置密码 界面。

     

    注册的短信服务我使用的阿里云的短信服务,直接调用他们的API即可

    在注册界面我对获取验证码设置了180s的连按间隔,思路借鉴各大平台的注册系统。

    注册时判断账户是否存在

    在忘记密码和修改密码时,我复用了RESET_PASS 函数和修改密码的界面,它们除了title几乎是一模一样的功能。

    表达式求值

    运用了逆波兰表达式的算法,参考了网上大牛的源码,写了一个求表达式的函数。

    做题界面

    最重要的做题界面,我们先从题库中取出对应数量对应难度的题目,放在一个ArrayList中,对每一个题目都求出它的正确答案。

    我们设计了一个Option的数据结构,它保存每个题目的四个选项,用户选择的选项和题目的正确选项。

    然后遍历ArrayList,利用rand生成所有题目的三个错误选项,并随机的分配答案对应的选项,记录正确答案的选项是哪一个。

    在用户按下ABCD四个按钮进行选择时,我们将属性user_choose设成对应的值,在用户提交试卷(提示试卷未完成)后,生成对应的分数,并将做错的题目和没做的题目标记出来。

    经验教训:

    我们在之前的项目中,大部分逻辑处理的函数都是可以直接拿过来使用的,这样可以少写很多代码。在GUI的开发中,前人已经给我们留下了模板,我们只用修改这些控件的一些属性,以及完成我们的监听函数即可。在界面实现时,别人的界面是很有参考价值的,我们完成这个结对编程的过程中,参考了百度、腾讯、哔哩哔哩等注册登录的界面,参考了学校高数机考、马原机考、以及科目一科目四的做题界面,最终融合成了我们自己的风格。

    在代码的实现中,选择合适的数据结构是很重要的,选择合适的数据结构能让代码逻辑更加清晰、代码不容易出bug、维护也更加容易。

  • 相关阅读:
    [Sdoi2016]征途
    何时会发生db file sequential read等待事件?
    oracle分布式事务总结
    db file scattered read 等待事件
    db file sequential read (数据文件顺序读取)
    INDEX_JOIN
    Oracle优化器介绍
    GC Buffer Busy Waits处理(转载)
    Oracle V$SESSION详解
    Oracle锁表(转载)
  • 原文地址:https://www.cnblogs.com/plllll/p/11600962.html
Copyright © 2020-2023  润新知