结对项目作业
https://git.coding.net/yfxxf/JD.git
|
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
|
Planning |
计划 |
25 |
35 |
|
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
25 |
35 |
|
Development |
开发 |
285 |
290 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
65 |
125 |
|
· Design |
· 具体设计 |
35 |
50 |
|
· Coding |
· 具体编码 |
125 |
153 |
|
· Code Review |
· 代码复审 |
25 |
20 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
55 |
40 |
|
Reporting |
报告 |
80 |
182 |
|
· Test Report |
· 测试报告 |
20 |
20 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
65 |
162 |

static private String createFormula()
{
int digital, sign = 0;
char symbol = 0;
String formula = "";
digital = (int)(Math.random()*20);
formula = formula + digital;
for(int i=0; i<sumOfOperator; i++)
{
if(sign >= 2 || !haveMulityAndDivid) //没有乘除的话只生成+ -
sign = (int)(Math.random()*2);
else sign = (int)(Math.random()*4);
if(sign == 0) {
symbol = '+';
digital = (int)(Math.random()*maxNum+minNum);
}
else if(sign == 1) {
symbol = '-';
digital = (int)(Math.random()*digital+minNum); //减去上一个digital
}
else if(sign == 2) {
symbol = '*';
digital = (int)(Math.random()*(100/(digital+1))+1);
}
else if(sign == 3) {
symbol = '÷';
for(int j=2; j<=digital; j++)
if(digital%j == 0) {
digital = j;
break;
}
}
formula = formula + symbol + digital;
}
return formula;
}
1、随机生成算式第一个数
2、依次确定(生成)五个运算符以及第二个数字
(1)sign用于避免出现连续的“乘”、“除”运算(原理:sign随机确定运算符,sign的上一个值>=2时,后面生成的运算符只有“+”、“-”)
(2)为避免出现负数,当sign为“-”时,后一个数的生成范围为“比上一个数小”
(3)当sign为“×”时,为避免出现大雨100的结果,第二个数的生成范围为[0,100/上一个数]
(4)当sign为“÷”时,为保证不出现分数,第二个数为 [2~第一个数] 这个范围内找“第一个数的因数”生成
3、实现字符串拼接
import static org.junit.Assert.*;
import java.io.IOException;
import org.junit.Test;
public class LibTest {
@Test
public void testLib() {
Lib lib = new Lib();
}
@Test
public void testSetOps() {
Lib.setOps(3);
Lib.setOps(5);
}
@Test
public void testSetOpLevel() {
Lib.setOpLevel(true);
Lib.setOpLevel(false);
}
@Test
public void testSetNum() {
Lib.setNum(5, 50);
Lib.setNum(1, 100);
}
@Test
public void testSetSum() {
Lib.setSum(15);
}
@Test
public void testPrintFormula() {
Lib.setSum(5);
Lib.setOps(5);
Lib.setNum(1, 100);
Lib.setOpLevel(true);
try {
Lib.printFormula(15);
Lib.printFormula();
}
catch(IOException ioe) {
ioe.printStackTrace();
}
}
}

在命令行测试中,对用户输入的命令即其参数进行判断:
1. 当输入的不是应有命令时,对用户做出提醒,输入正确的命令,列出合法命令
2.当用户输入的参数错误时,对用户做出提醒,并解释各个参数的写法及各个命令的含义
3.对于合法的命令和参数,对参数进行检查,看是否符合要求:不能出现负数题数,负数符号数,下界不能大于上界等。
public GUI() {
Color color = new Color(200,200,200);
Font font = new Font("SansSerif",Font.BOLD,13);
Font font2 = new Font("SansSerif",Font.CENTER_BASELINE,28);
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(6,2));
JLabel NOQ= new JLabel(" 需要的题目数量" +"(1~10000):");
NOQ.setFont(font);
p1.add(NOQ);
p1.add(sum);
JLabel RON = new JLabel(" 题目的数值范围(下界1~100):");
RON.setFont(font);
p1.add(RON);
p1.add(min);
p1.add(new JLabel(" 题目的数值范围(上界50~1000):"));
p1.add(max);
JLabel NOO = new JLabel(" 题目中最多存在运算符数量:");
NOO.setFont(font);
p1.add(NOO);
p1.add(ops);
JLabel isMul = new JLabel(" 题目中是否有乘除法:");
isMul.setFont(font);
p1.add(isMul);
p1.add(b2);
b2.setBackground(new Color (200,200,200));
p1.setFont(font);
JPanel p2 = new JPanel();
Cre.addActionListener(new ButtonListener());
Cre.setFont(font);
Cre.setBackground(new Color(250,250,250));
p2.add(Cre,BorderLayout.WEST);
add(p1,BorderLayout.CENTER);
JLabel title = new JLabel("四则运算题目生成系统");
title.setFont(font2);
JPanel p3 = new JPanel();
p3.add(title,BorderLayout.CENTER);
add(p3,BorderLayout.NORTH);
add(p2,BorderLayout.SOUTH);
setBackground(Color.cyan);
p1.setBackground(new Color(200,200,200));
p2.setBackground(new Color (200,200,200));
p3.setBackground(new Color (200,200,200));
}
利用GUI中类似网格的布局方式,六行两列布局,文字和输入框相对应
简陋的不行的界面……但是同时也还算简洁
2相对而言工作量小,更容易干活细致
3可以互相讨论,各自陈明利害
缺点
1有些时候意见不统一,容易互相耽误
2做工节奏不一致,需要时间磨合



浙公网安备 33010602011771号