湖南大学结对编程项目总结
湖南大学结对编程项目总结
田佳禾 201926010122
结对编程项目:带UI的小初高数学学习软件
本次结对编程作业中我与张博锐组队完成创新课程结对项目。对需求文档进行分析后,我们选择使用java swing实现一个符合要求的桌面应用。
分工上我主要负责出题并且给出答案,查询和存储用户密码和账号的部分,其余的前端设计和大部分的业务逻辑均由我的队友张博锐来完成。由于我对前端使用的Java swing没有了解,在此只分析后端的代码。
如何复用个人项目实现结对编程项目
对于个人项目的出题部分的改进:
考虑到出题部分的小初高对应要求与上一次个人项目的要求一致,在出题部分,我们决定使用并改进个人项目的代码。
要使得题目可以生成答案,需要对现有代码进行改进,使得其中出现的算式可以较简单计算出结果。
对于小学部分的题目,可以直接使用栈的四则运算的算法,所以出题逻辑无需修改;
对于初中部分的题目,我们规定根号下的数字,经过开根号化简后,一定可以化简为n或者n√2或者n√3的形式,其中n为整数,这样规定后的数字简便易于运算。
对于高中部分的题目,我们规定三角函数的角度值,必须在{0,30,45,60,90}之中。
另外需要说明的是,初高中的题目都包含+-*/和√²,但不包含括号,否则会出现如(√2+√3)/(√3+√2+1)这种无法笔算出答案的题目。
基于这个,我们实现了
对于个人项目的用户登陆部分的改进:
考虑到用户登录部分需求的与上一次个人项目的要求一致,在用户部分,我们决定使用并改进个人项目的代码。
User中包含:
public String name;
public String password;
public static String nowUserName;
String nowUserName 用于记录当前用户的用户名。
在User中,我们经过讨论,又实现了一些支持本次账号相关需求的方法:
public static User checkExist(String name, String password) {
/*
*传入用户输入的用户名和密码,检查用户和密码是否正确
*正确则返回该用户的实例,否则返回null
*/
}
public static Boolean signUpPassword(String password1, String password2) {
/*
*用于检测两次输入密码是否一致
*若一致,则设置为当前用户的新密码,并返回true
*若不一致则返回false
*/
}
public static Boolean checkPasswordForm(String str) {
/*
*用于检测传入的密码是否符合规范
*若符合则返回true
*若不符合则返回false
*/
}
public static Boolean checkPrePassword(String str) t {
/*
*用于检测输入的密码是否是当前账户的密码,传入密码
*若符合则返回true
*若不符合则返回false
*/
}
public static Boolean addUser(String name, String password) {
/*
*用于添加用户,传入用户名和密码,查看是否用户名是否已经被注册
*若未被注册则添加用户,返回true
*若已被注册则返回false
*/
}
结对编程的经验、教训
本次结对编程,我们尝试实现了一个带UI的小初高数学学习软件,由于经验不足,在实现本次实验要求的过程中,我们遇到挑战。尤其在生成题目正确答案的部分,我们进行了对以往算法知识的应用,最后实现了生成题目、答案和混淆项的功能。但是在用户登陆注册部分,仍留有一个遗憾:在最初规划时候,我们对数据库的知识了解不足,没有决定使用数据库来存储用户数据,导致如软件使用起来有些繁琐。