第三次软件工程作业(结对项目)
四则运算
组员 | 学号 |
---|---|
张杰晖 | 3119009475 |
蒙逸文 | 3119009468 |
1.Github地址
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 10 |
Estimate | 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 30 | 30 |
Analysis | 需求分析 (包括学习新技术) | 200 | 250 |
Design Spec | 生成设计文档 | 10 | 10 |
Design Review | 设计复审(和同事审核设计文档) | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 60 | 80 |
Coding | 具体编码 | 360 | 375 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 45 |
Reporting | 报告 | 50 | 40 |
Test Repor | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 5 | 5 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 10 |
Sum up | 合计 | 820 | 900 |
3.设计思路
这次的作业我和我的合作人经过探讨后决定使用Java作为编程语言,第一是因为Java作为去年的一门必修课是我们两个人都有一定基础的编程语言,在合作是会比较容易沟通,其他可供使用的编程语言我们两个都不太擅长,虽然可以现学,但是对于结对项目而言意味着二人的合作会变得更难。
我们这次所做的整个ood设计总体上是一个注册登录,2位数加减乘除自动出题,手动做题,记录做题记录并保存到数据库的工程。通过命令行输入,通过面向流程编码控制流程,OOD方式保存数据,将用户,做题记录作为对象。
注册登录用面向对象方式,将new好的User调用dao的insert方法,mybatis保存数据库,我们操作的都是已经抽象好的对象。
自动出题采用随机数,加随机数对应的操作符,最后构造成做题记录对象,并且每个做题记录持有用户的关联,可以区分各个不同登录用户的历史记录。
4.程序演示
用户名我们将他设为Luke,为了严谨起见我们将设置较为复杂的字母和数字相互交错的字符作为密码:ab546831
以下截图为注册用户全过程:
这就是注册好后的结果:
但是由于之前实验已经做了5次用户测试,因此此次实验的用户id为6。
接下来我们将开始做做题测试:
这次我们共做了5道题目,其中前3道题做对,后三道题故意做错。
通过选择我们可以查看其中用户的做题记录:
当然也可以在数据库中看到相应的记录:
我们一共创建了两个账户,由此我们可以通过user的name或者id查询到相应的用户
当然,我们不止可以查询到相对应的用户,我们还可以查看各个用户的所有的做题的记录
当然,每个用户都有着独有的id和密码,要是用户名或者密码输入错误便会弹出警告
由于我们需要将new好的User调用dao的insert方法,mybatis保存数据库。
以下则是我们expdao和userdao的代码:
Expdao:
package com.ood.mapper;
import com.ood.entity.ExpModel;
import java.util.List;
public interface ExpDao {
void insertOne(ExpModel exp);
List<ExpModel> selectByUserId(ExpModel exp);
}
Userdao:
package com.ood.mapper;
import com.ood.entity.UserModel;
public interface UserDao {
UserModel selectOneByUserNameAndPwd(UserModel user);
void insertOne(UserModel user);
}
还有些重要代码如:
Expmodel:
package com.ood.entity;
public class ExpModel {
private int id;
private int first;
private int second;
private int operate;
private String result;
private int userId;
private String right;
public ExpModel() {
}
public String getRight() {
return right;
}
public void setRight(String right) {
this.right = right;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getFirst() {
return first;
}
public void setFirst(int first) {
this.first = first;
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
this.second = second;
}
public int getOperate() {
return operate;
}
public void setOperate(int operate) {
this.operate = operate;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
}
Usermodel;
package com.ood.entity;
public class UserModel {
private int id;
private String userName;
private String userPwd;
public UserModel() {
}
public UserModel(int id, String userName, String userPwd) {
this.id = id;
this.userName = userName;
this.userPwd = userPwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
5.结对总结
对我们两个人来说,结对项目比个人项目有意思得多,与一个人单干相比,两个人能通过分配任务也会让整个程序设计的过程变得简单,并且在写完代码后的Debug过程中,搭档也能更快的找出你代码中的问题。总之,这次结对任务的过程还是很愉快的,让我们更期待之后的小组合作项目。