结对编程1 黄睿(201421123069)周迪(201421123089)

 黄睿 201421123069 周迪 201421123089

coding.net 地址:https://coding.net/u/H1159650478/p/sizeyunsuanjiaqiang/git



1.a. 需求分析:

(1)实现GUI界面;
 (2)实现历史题目对错的统计;
 (3)实现用户答题题总共花费的时间。

   b. 程序设计:

            

            

  c. 代码展示:
   number这个类主要用于数字的设定,定义分子分母,如果是初级运算则分母直接为1,反之分子分母随机生成并生成为高级运算

class number{
int numerator;
int denominator;
number(int a,int b){
this.denominator=b;
this.numerator=a;
}
number(){

}
public void setNumeratorAndDenominator() {
    this.denominator=(int)(Math.random()*10) +1;
    this.numerator=(int)(Math.random()*10)%this.denominator;
}
public void setNumerator(){
    this.numerator=(int)(Math.random()*10);
}
}

  基于上次的作业进行的加减乘除运算

number add(){
    int numD,num1N,num2N;
    int MaxGys=MaxGys(num1.denominator,num2.denominator);
    numD=num1.denominator*num2.denominator/MaxGys;
    num1N=numD/num1.denominator*num1.numerator;
    num2N=numD/num2.denominator*num2.numerator;
    number result=new number();
    result.denominator=numD;
    result.numerator=num1N+num2N;
    result=simplification(result);
    return result;
}

  这些代码就是在做GUI界面了,我们设置了panel1~panel6来设定每一步的页面设计

public class test extends JFrame implements ActionListener{
testExerciseCreater pMaker=new testExerciseCreater();
JTextArea area1=new JTextArea(1,10);
JTextArea area2=new JTextArea(1,10);
JPanel panel=new JPanel();
JPanel panel1=new JPanel();
JPanel panel2=new JPanel();
JPanel panel3=new JPanel();
JPanel panel4=new JPanel();
JPanel panel5=new JPanel();
JPanel panel6=new JPanel();
JLabel label=new JLabel("请问你要做几道题目?");
JLabel label1=new JLabel("初级 or 高级?");
JLabel label2=new JLabel();
JLabel label3=new JLabel();
JLabel label4=new JLabel();
JLabel label5=new JLabel();
JButton button =new JButton("确定");
JButton button1 =new JButton("初级");
JButton button2 =new JButton("高级");
JButton button3 =new JButton("下一步");
JButton button4 =new JButton("提交");
JButton button5 =new JButton("重返");
int trueCount=0;
String questNum;
int easyOrDifficult,i=1;
long startTime;
long endTime;
public test(){
super("简单四则运算");
area1.setText("");
area2.setText("");
button.setActionCommand("确定");
button.addActionListener(this);
button1.setActionCommand("初级");
button1.addActionListener(this);
button2.setActionCommand("高级");
button2.addActionListener(this);
button3.setActionCommand("下一步");
button3.addActionListener(this);
button4.setActionCommand("提交");
button4.addActionListener(this);
button5.setActionCommand("重返");
button5.addActionListener(this);
panel1.add(label);
panel1.add(area1);
panel1.add(button);
getContentPane().add(panel);
panel.add(panel1);
panel2.add(label1);
panel2.add(button1);
panel2.add(button2);
panel3.add(label2);
panel3.add(area2);
panel3.add(button4);
panel4.add(label3);
panel4.add(button3);
panel5.add(label4);
panel6.add(label5);
panel6.add(button5);
this.pack();
}
@Override

  这里我们在D盘建立了一个count.txt文本,使它最初的正确和错误题目数都为0,然后运行一次就统计一次并更新

File file=new File("D:/count.txt");
BufferedReader reader=null;
try {
reader=new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String i=null;
String i1=null;
try {
i=reader.readLine();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
i1=reader.readLine();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
PrintWriter writer=null;
try {
writer =new PrintWriter(new FileOutputStream(file));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
writer.println((Integer.parseInt(i)+trueCount));
writer.println((Integer.parseInt(i1)+(Integer.parseInt(questNum)-trueCount)));
writer.flush();
try {
reader=new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
i=reader.readLine();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
i1=reader.readLine();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} 

这些代码前半部分是最后界面输出的正确数、错误数、耗时、总正确数和总错误数;
后半部分就是循环出题的一个体现,如果选择2道题,做完一道之后返回到panel2重新做第二题。

 label4.setText("正确:"+trueCount
                    +" 错误:"+(Integer.parseInt(questNum)-trueCount)
                    +" 耗时: "+((endTime-startTime)/1000)
                    +" s"
                    +" 总计正确: "+i
                    +" 总计错误: "+i1);
            panel.remove(panel4);
            panel.add(panel5);
            panel.revalidate();
            panel.repaint();
         }
     }
     if(e.getActionCommand().equals("提交")){
         if(area2.getText().equals(pMaker.resultStr)){
            label3.setText("正确");
            trueCount++;
            area2.setText("");
            pMaker=new testExerciseCreater();
            pMaker.creatExecercise(easyOrDifficult);
            label2.setText(pMaker.quesStr);
            panel.remove(panel3);
            panel.add(panel4);
            panel.revalidate();
            panel.repaint();
         }
         else{
            label3.setText("错误,正确答案是: "+pMaker.resultStr);
            pMaker=new testExerciseCreater();
            area2.setText("");
            pMaker.creatExecercise(easyOrDifficult);
            label2.setText(pMaker.quesStr);
            panel.remove(panel3);
            panel.add(panel4);
            panel.revalidate();
            panel.repaint();
         }
     }
     if(e.getActionCommand().equals("reenter")){
         area1.setText("");
         panel.remove(panel6);
         panel.add(panel1);

         panel.revalidate();
         panel.repaint();
     }
 }

 d. 程序运行:

 初始界面:

   

 选择界面:

   

 选择初级计算:

 

 

 选择高级计算:

   

   

  e. 小结感受:这次编程作业用到了以前只接触了一点点的图形界面,刚开始加功能进去觉得还可以,没有非常困难,但当做完功能之后请教别人图形界面如何起步时被告知最好先写GUI,然后就有点崩溃了。然后由于我上次的编程有点简单,所以就用了搭档的上一次作业,我们通过查看以前的书本,百度和请教大神,最后结对作业也完成了,但我们也发现自己还有很多不足需要补救,最明显的就是对于GUI就是小白这方面。对于1+1是否大于2,我们小组而言答案是肯定的,虽然对于老师给出的互换角色的方法没有非常适应,但我们还是觉得比自己一个人强很多,以后也会更好的去适应。最后感谢给予我们帮助的大神和老师们。

2.结对照骗:

              

3.PSP:

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 5 6
· Estimate 估计这个任务需要多少时间 7 6
Development 开发 80 77
· Analysis 需求分析 (包括学习新技术) 3 5
· Design Spec 生成设计文档 5 6
· Design Review 设计复审 5 9
· Coding Standard 代码规范 4 3
· Design 具体设计 23 24
· Coding 具体编码 35 30
· Code Review 代码复审 7 9
· Test 测试(自我测试,修改代码,提交修改) 15 25
Reporting 报告 10 7
· 测试报告 5 4
· 计算工作量 5 4
· 并提出过程改进计划 2 3

时间: 03-13

结对编程1 黄睿(201421123069)周迪(201421123089)的相关文章

结对编程2——单元测试

 周迪 201421123089    黄睿 201421123069  coding.net 地址:http://git.oschina.net/hr2324/SoftEngHW 1.我们的代码要使它的利用率大大提高,所以我们要通过单元测试进一步完善代码,发现细小的错误.于是这次就用JUnit进行了简单四则运算的单元测试. a.需求分析:(1)在上次的基础上将计算模块单独创建一个类: (2)针对计算类做单元测试: (3)主要做整数和真分数的加减乘除: (4) 增量式开发,用git命令提交到co

第五周任务以及结对编程

转眼已经第三周了.这周主要内容有下: 1.完成自己没完成的任务. 2.结对编程. 3.PSP. 4.站立会议(待开). 5.燃尽图. 具体任务如下: 这次结对编程我是和高鑫同学进行结对,在对构建之法这本书的学习中,我了解到结对编程是极限编程中的一种方式,对两个人的提高,对整个程序,对整个项目,都有很大的帮助. 在这次编程当中,我们以完成“增加习题本”这个项目为编程目的进行编程.由于高鑫同学C语言很强,但是没有做过前端任务,所以由我担任“驾驶员”,高鑫作为“领航员”.在这次结对的过程 中,我学习到

结对编程1 —— 基于GUI和Swing的四则运算题目生成器

结对编程1 -- 基于GUI和Swing的四则运算题目生成器 合作伙伴 201421123089 周迪 201421123069 黄睿 代码地址:https://git.coding.net/H1159650478/sizeyunsuanjiaqiang.git 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功能.一定价值的程序.在下面

软件工程------结对编程第二次

这一周我(1551426)还是继续和我们组的成员(1551419)两人一起结对编程,除此之外,我们还设计了数据库的,总共三个关系模式 room(roomtype,dailyprice,deposit) roominfo(roomnumber,roomtype,isfree) guest(id, startday,phonenumber,roomnumber,name,sex,stayday) 起初我们把room和guest 放在了一起,后来发现数据的冗余以后马上换成三个关系表. 这是我们的关系图

软工第二次实验——结对编程

1丶小组成员 卫瑞亮 1500802122 王玉卿 1500802099 2.代码链接 https://coding.net/u/qq1062718477/p/SE_task/git/commits/master/ 3.软件界面 4.结对编程照片 5.心得体会 到今天接触结对编程差不多两周了,对于结对编程有了更加深刻地理解,通过结对编程,我们可以及时的发现并解决后面可能会出现的问题,并且还能提升我们与别 人进行交流的能力,与人沟通对我们来说也是极为重要的,同时,结对编程使我们频繁进行交流,而且要

结对编程2—— 单元测试

结对伙伴:201421123048,201421123036 coding.net 地址:https://git.coding.net/YJh_/PairProject_2.git a. 需求分析:测试上有哪些详细的需求? 1.把计算模块提取出来,单独创建一个类2.通过单元测试代码,测试加法是否能正确工作3.通过单元测试代码,测试加减乘除功能4.通过单元测试代码,测试计算类对于各种参数的支持 输入是有错误的,例如 "1 ++ 2" 在数值范围是 -1000 .. 1000 的时候,传进

结对编程之四则运算

学习进度条 点滴成就 学习时间 新编写代码行数 博客量(篇) 学习知识点 第一周 2h 0 0 了解软件工程 第二周 3h 0 1 项目开题 第三周 5h 0 1 需求文档.用例图 第四周 8h 100 1 结对编程 第五周 12h 120 0 软件工程 第六周 15h 200 0 编译原理.软件工程详细设计 第七周 20h 100 1 软件测试 1. 结对编程对象:范心莲 2013110410 对方博客地址:http://www.cnblogs.com/FancyLian/ 双方贡献比例: 1

软件工程第二次作业—结对编程

一. 作业要求 两人组成一队,进行结对编程. 从第一次软件工程作业中选出一人的作业作为这次作业的基础. 设计一个图形界面(GUI)的四则运算应用程序,可以是PC桌面的图形界面程序.网页程序或者手机程序. 设计的应用程序可以完成加法.减法.乘法.除法运算. 应用程序可以完成真分数的四则运算. 例如:1/2 + 1/3 = 5/6 例如:1/5 + 3/10 = 1/2(而不是5/10) 例如:1'1/3 - 2/3 = 2/3 (是1'1/3而不是4/3,注意:" ' "为1'1/3整数

结对编程1-四则运算

结对编程1-四则运算 代码地址: https://coding.net/u/q596926716/p/dfs/git/upload/master/ 结对伙伴:黄子敬 一.题目要求 将第一次作业中的四则运算程序做成GUi界面的形式展示出来,要求在下面的功能需求中实现两个: 1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算. 2.有计时功能,能显示用户开始答题后的消耗时间. 3.界面支持中文简体/中文繁体/英语,用户可以选择一种 二.需求分析: 1.除了整数的