一. 项目成员
冯鸣 201521123122 http://www.cnblogs.com/fenm/
罗骏 201521123121 http://www.cnblogs.com/toonaive/
项目开发的码云地址:https://gitee.com/fenm/jieduibiancheng
二.需求分析
针对现有代码的改进分析:
1.修改了一些程序功能上的bug。在重复点击确认键是,计算的正确率有误。
2.对界面进行了改进
新开发功能的分析:
1.增加了关于整数的乘方运算符
三.程序设计
关于整个程序的流程设计如图:
单元测试
码云项目上传
代码覆盖率
四.代码展示
!已经是修改之后的代码了
计时器
private class MyRunable implements Runnable{
private int hour = 0;
private int min = 0;
private int sec = 0;
private NumberFormat format = NumberFormat.getInstance();
private String nextSecond(){
++sec;
if(sec == 60) {
++min;
sec = 0;
}
if(min == 60) {
++hour;
min = 0;
}
return currentTime();
}
private String currentTime(){
return format.format(hour)+":"+format.format(min)+":"+format.format(sec);
}
关于整数的四则运算+乘方运算
public main()//计算四则运算并输出
{
new Thread(myTimeRunable).start();
int n = 0;
MainFrame ma= new MainFrame();
int m = (int)(Math.random()*n+1);//随机整数题目和分数题目的题量
try{
//调用初始化方法
jbInit();
}
catch(Exception exception){
exception.printStackTrace();
}
try{
n= Integer.parseInt(ma.number);
}catch(NumberFormatException e){
//利用消息对话框提示输入失败
JOptionPane.showMessageDialog(this,"输入错误!请重新输入");
}
for(int j=0;j<(n-m);j++){//整数题目
String ans;
int an;
int op=(int)(Math.random()*5+1);//随机选择计算符
int num1=(int)(Math.random()*10+1);//随机两个整数
int num2=(int)(Math.random()*10+1);
if(op==1){//加法
Question.add(num1+"+"+num2+"=");
Answer.add(num1+num2+"");
}
if(op==2){//减法,防止出现负数
if(num1>num2){
Question.add(num1+"-"+num2+"=");
Answer.add(num1-num2+"");
}
else{
Question.add(num2+"-"+num1+"=");
Answer.add(num2-num1+"");
}
}
if(op==3){//乘法
Question.add(num1+"*"+num2+"=");
Answer.add(num1*num2+"");
}
if(op==4){//除法
Question.add(num1+"÷"+num2+"=");
if(num1%num2==0){
Answer.add(num1/num2+"");
}else{
int num3=GCD(num1,num2);
num1=num1/num3;
num2=num2/num3;
String a = num1+"/"+num2;
Answer.add(a+"");
}
}
if(op==5) {//乘方
Question.add(num1+"^"+num2+"=");
Answer.add(Math.pow(num1,num2)+"");
}
}
关于分数的运算
for(int j=0;j<m;j++){//分数题目
Scanner in = new Scanner(System.in);//真分数的计算
int op=(int)(Math.random()*4+1);
int[] f1 =createFraction();
int[] f2 =createFraction();
int j1=GCD(f1[0],f1[1]);
f1[0]=f1[0]/j1;//化简分数
f1[1]=f1[1]/j1;
j1=GCD(f2[0],f2[1]);
f2[0]=f2[0]/j1;
f2[1]=f2[1]/j1;
int gbs = LCM(f1[1],f2[1]);
if(op==1){//加法
Question.add("("+f1[0]+"/"+f1[1]+")+("+f2[0]+"/"+f2[1]+")=");
int num1=f1[0]*f2[1]+f2[0]*f1[1];
int num2=f1[1]*f2[1];
int num3=GCD(num1,num2);
num1=num1/num3;
num2=num2/num3;
String a=new String();
if(num1==num2)
{
a="1";
}
else
{
a=num1+"/"+num2;
}
Answer.add(a+"");
}
if(op==2){//减法
int num1=f1[0]*f2[1]-f2[0]*f1[1];
if(num1>0){ //防止出现负数
Question.add("("+f1[0]+"/"+f1[1]+")-("+f2[0]+"/"+f2[1]+")=");
int num2=f1[1]*f2[1];
String a=new String();
if(num1==0)
{
a="0";
}
else
{
int num3=Math.abs(GCD(num1,num2));
num1=num1/num3;
num2=num2/num3;
if(num1==num2)
{
a="1";
}
else
{
a=num1+"/"+num2;
}
}
Answer.add(a+"");
}else{
Question.add("("+f2[0]+"/"+f2[1]+")-("+f1[0]+"/"+f1[1]+")=");
int num11=f2[0]*f1[1]-f1[0]*f2[1];
int num2=f1[1]*f2[1];
String a=new String();
if(num11==0)
{
a="0";
}
else
{
int num3=Math.abs(GCD(num11,num2));
num11=num11/num3;
num2=num2/num3;
if(num11==num2)
{
a="1";
}
else
{
a=num11+"/"+num2;
}
}
Answer.add(a+"");
}
}
if(op==3){//乘法
Question.add("("+f1[0]+"/"+f1[1]+")*("+f2[0]+"/"+f2[1]+")=");
int num1= f1[0]*f2[0];
int num2 = f1[1]*f2[1];
int num3=GCD(num1,num2);
String a=new String();
num1= num1/num3;
num2 = num2/num3;
if(num1==num2)
{
a="1";
}
else
{
a=num1+"/"+num2;
}
Answer.add(a+"");
}
if(op==4){//除法
Question.add("("+f1[0]+"/"+f1[1]+")÷("+f2[0]+"/"+f2[1]+")=");
int num1= f1[0]*f2[1];
int num2 = f1[1]*f2[0];
int num3=GCD(num1,num2);
String a=new String();
num1= num1/num3;
num2 = num2/num3;
if(num1==num2)
{
a="1";
}
else
{
a=num1+"/"+num2;
}
Answer.add(a+"");
}
}
关于系统界面
public class Welcome extends JFrame implements ActionListener{
private static MainFrame dl;
private static JButton b1,b2,b3,b4;
static JFrame j1=new JFrame();
public Welcome(){
dl=new MainFrame();
JLabel l1=new JLabel("欢迎来到四则运算系统");
l1.setBounds(70, 40, 150, 40);
b1=new JButton("进入系统");
b2=new JButton("退出");
b1.setBounds(30, 120, 100, 20);
b2.setBounds(150, 120, 100, 20);
j1.setLayout(null);
b1.addActionListener(this);
b2.addActionListener(this);
j1.add(l1);
j1.add(b1);
j1.add(b2);
j1.setTitle("欢迎界面");
j1.setSize(300, 200);
j1.setLocationRelativeTo(null);
j1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j1.setVisible(true);
}
public static void main(String[] args)
{
Welcome h=new Welcome();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{
j1.dispose();
dl.setVisible(true);
}
//点击“系统”菜单下的“退出”菜单项
if(e.getSource()==b2)
{
System.exit(0);
}
}
五. 程序运行
六. psp
七. 小结感受
通过这次结对编程,深深感受到了1+1>2 的效果,俗话说,三个臭皮匠胜过一个诸葛亮,团队的力量比起个人来说还是大很多的,两个人一起编程,可以相互监督, 互相激励,避免懈怠情绪的出现,而且两人互相交流,商讨实现方式,遇到问题时,能够做到互补,大大提高了写代码的效率。