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

结对编程项目总结

时间:2019-09-27 19:32:07      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:c++   必须   input   内容   class   三角函数   set   高中   复用   

项目需求

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

用户:

小学、初中和高中学生。

功能:

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

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

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

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

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

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

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

 

个人项目复用

  经分析,这次结对编程项目由于题目形式改为选择而不是个人项目中的填空,这也就意味着若是沿用个人项目中的随机出题逻辑,我们需要算出随机生成的算式的正确结果,加减乘除还好说,根式运算、三角函数运算一头包,  而且若要以根式的形式表示结果极为麻烦,最终我们决定舍弃个人项目中的随机出题,以题库抽题的方式实现出题。

  短信验证码我们选择了阿里云,最后发现阿里云没有给c++的SDK模版,若用c++直接访问服务器太麻烦,加上个人项目中的核心代码以弃用,果断转java。

  就算完全换了一种语言,个人项目仍有可取之处,如类的结构,类之间的调用逻辑等,都可以从c++移植到java。

  技术图片
  技术图片 

 

总结

  这次项目使用了UI与BLL的两层架构,由于没有使用数据库(需要连服务器,不方便验收),且数据访问量较小,故没有建立DAL层来专门读写数据。这让UI与BLL的开发可以并行进行,一人进行UI设计,一人进行业务逻辑设计,极大提高了开发效率,同时方便了debug,双方模块的测试可独立进行,测试无误后再整合,减小了出错概率。同时,若是最后发现功能有遗漏,添加起来也更加方便。这次的结对编程项目对我来说可谓获益匪浅。

 

 

经验、教训

  1. 合法输入的控制应该交给UI的输入框控件,而不应该直接对文本提取String再判断。
    继承PlainDocument类
    技术图片
    class NumberTextField extends PlainDocument {
        public NumberTextField() {
            super();
        }
    
        public void insertString(int offset, String str, AttributeSet attr)
                throws javax.swing.text.BadLocationException {
            if (str == null) {
                return;
            }
    
            char[] s = str.toCharArray();
            int length = 0;
            // 过滤非数字
            for (int i = 0; i < s.length; i++) {
                if ((s[i] >= ‘0‘) && (s[i] <= ‘9‘)) {
                    s[length++] = s[i];
                }
                // 插入内容
                super.insertString(offset, new String(s, 0, length), attr);
            }
        }
    }
    View Code

    再用调用setDocument函数

    textField.setDocument(new NumberTextField());

     

  2. 读文件时不要直接用FileReader,而用InputStreamReader并指定编码格式

    InputStreamReader problem_fr = new InputStreamReader(new FileInputStream(problem_path),"UTF-8");
    InputStreamReader answer_fr = new InputStreamReader(new FileInputStream(answer_path),"UTF-8");

    不用

    FileReader problem_fr = new FileReader(problem_path);
    FileReader answer_fr = new FileReader(answer_path);

结对编程项目总结

标签:c++   必须   input   内容   class   三角函数   set   高中   复用   

原文地址:https://www.cnblogs.com/sorvon/p/11599668.html

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