标签: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,双方模块的测试可独立进行,测试无误后再整合,减小了出错概率。同时,若是最后发现功能有遗漏,添加起来也更加方便。这次的结对编程项目对我来说可谓获益匪浅。
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); } } }
再用调用setDocument函数
textField.setDocument(new NumberTextField());
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