团队做业之四则运算GUI展现

1、项目Coding.net原码仓库地址:https://git.coding.net/caoying/Teamwork.git前端

 

队员:java

卢琪:2016011986git

曹滢:2016012102web

2、PSP表格之时间规划算法

PSP编程

任务内容小程序

计划时间(min后端

Planning网络

计划架构

30

Estimate

估计这个任务须要多少时间,并规划大体工做步骤

 

30

Development

开发

2880

Analysis

需求分析

30

Design Spec

生成文档

40

Design Review

设计复审

20

Coding Standard

代码规范

10

Design

具体设计

40

Coding

具体编码

2000

Code Review

代码复审

30

Test

测试

30

Reporting

报告

180

Test Report

测试报告

30

Size Measurement

计算工做量

20

Postmortem & Process Improvement Plan

过后总结,并提出过程改进计划

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3、接口设计介绍

Information Hiding, Interface Design, Loose Coupling

信息隐藏(Information Hiding)

信息隐藏是指在设计和肯定模块时,使得一个模块内包含的特定信息(过程或数据),对于不须要这些信息的其余模块来讲,是不可访问的。

接口设计(Interface Design)

接口泛指实体把本身提供给外界的一种抽象化物(能够为另外一实体),用以由内部操做分离出外部沟通方法,使其能被内部修改而不影响外界其余实体与其交互的方式。

松耦合(Loose Coupling)

松耦合系统一般是基于消息的系统,此时客户端和远程服务并不知道对方是如何实现的。客户端和服务之间的通信由消息的架构支配。只要消息符合协商的架构,则客户端或服务的实现就能够根据须要进行更改,而没必要担忧会破坏对方。

4、计算模块接口的设计及实现(独立完成)

1.类和函数的组成及关系

咱们设计了一些函数,例如生成只含加减号的四则运算还有包括加减乘除的四则运算,还能够控制括号的有无,生成题目的时候就有对这些函数的调用

2.函数流程图

4.算法的关键及独到之处

咱们的独到之处是界面模块简洁、功能齐全,算法易懂易理解。

5、计算模块接口的性能改进

1.性能改进思路及时间花费

    为确保软件知足或超过设计的指望值,有必要分析应用程序的性能以发现潜在的问题。这个过程被称为“性能分析”。它包括检查应用程序以确保每一个组件有效地工做,并根据设计密切注视处理器的使用、网络和系统服务、存储和输入/输出(I/O)。

    在运行代码的性能分析中,咱们发现资源回收不彻底。通过各类调试,咱们发现是输入输出流的关系,因此咱们关闭输出流、修改了代码。整个过程花费了接近三个小时。

2.性能分析图展现及程序中消耗最大函数

展现图:

 

程序中消耗最大的函数无疑是包含过程最多、工程量最大的函数Calculate。

6、单元测试展现(展现出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试获得的测试覆盖率截图,发表在博客中。只须要测试命令行部分,且该部分覆盖率到90%以上。)

1.单元测试代码及函数

单元测试的代码:(这里就以算分这个类为例,其他测试相似)

public class CoreTest extends TestCase {
 
    public void testNewExpSome() {
        Core.newExpSome(true, 50, 1, 3);
    }
 
    public void testNewExpAll() {
        Core.newExpAll(false, 50, 1, 3);
    }
 
    public void testDivideExactly() {
        Core.divideExactly(48, 8,5);
    }
 
}

单元测试的函数:(这里就以算分这个类为例,其他测试相似)

2.构造测试数据的思路

    咱们的思路是从要测试的对象出发:首先,咱们有一个生成加减乘除类、有一个能够计算式子并返回结果的类、有一个判断优先级的类;接下来咱们就要对它们测试。其次咱们还有GUI窗口,所以也要进行测试。

3.测试覆盖率截图

在同窗的帮助下,使得咱们团队的测试覆盖率达到了97%。以下图

7、异常处理说明(详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景)

1.输入数判断是否超范围

    这里用try——catch方法来捕获异常:

try {
    n = Integer.parseInt(n.getText());
    if (n<0 || n > 10000) {
        n.setText("n不在范围内,需重输");
        return;
    }
    flag0 = 1;
} catch (Exception a) {
    n.setText("n异常,需重输");
}

2.文件处理异常

   这里一样用try——catch方法来捕获异常:

try {
  Ffile = new PrintStream("result.txt");
   System.setOut(Ffile);
 } catch (Exception e) {
  System.out.println("文件生成错误");
 }

8、界面设计过程(详细介绍界面模块是如何设计的,并写一些必要的代码说明解释实现过程)(独立完成)

1.设计思路

   咱们要设计各个界面的GUI,就要弄清楚分几个界面、各个界面要包含哪些组件、要实现什么具体的功能。因此咱们根据分析,有这些:首页GUI设计,分为两块,出题和作题、出题界面GUI的设计、答题界面GUI的设计及文件上传界面GUI的设计。

2.实现过程

首页界面GUI代码:

static class Hello extends JPanel {
        JLabel title = new JLabel("欢迎来到四则运算小程序!");
        JLabel l = new JLabel();
        JButton timu = new JButton("生成题目");
        JButton finish = new JButton("完成题目");

出题界面GUI代码:

static class InMakeExp extends JPanel{
        JLabel timunum = new JLabel("题目数量");
        JLabel timulower = new JLabel("数值的下界范围");
        JLabel timuupper = new JLabel("数值的上界范围");
        JLabel most = new JLabel("运算符最多个数");
        JCheckBox chenchu = new JCheckBox("乘除法",false);
        JCheckBox bracket = new JCheckBox("括号",false);
        JButton ok = new JButton("提交");<br>               
        JTextField num = new JTextField(10); <br>                
        JTextField lower = new JTextField(10); <br>               
        JTextField upper = new JTextField(10); <br>                
        JTextField most_ = new JTextField(10);

答题界面GUI代码:

timu = new JLabel("题目:");
    timu.setSize(100, 40);
    timu.setLocation(650, 100);
    l.add(timu);
    timu.setVisible(false);
 
    daan = new JLabel("答案:");
    daan.setSize(100, 40);
    daan.setLocation(650, 160);
    l.add(la22);
    daan.setVisible(false);
 
    question = new JTextArea();
    question.setSize(150, 30);
    question.setLocation(700, 100);
    l.add(question);
    question.setVisible(false);
 
    answer = new JTextArea();
    answer.setSize(70, 30);
    answer.setLocation(700, 160);
    l.add(answer);
    answer.setVisible(false);
 
    tijiao= new JButton("提交");
    tijiao.addActionListener(this);
    tijiao.setSize(70, 30);
    tijiao.setLocation(780, 160);
    tijiao.setFont(new Font("Dialog", 1, 14));
    l.add(next);
    tijiao.setVisible(false);
}

文件上传界面GUI代码:

shangchuan= new JButton("上传文件");
shangchuan.addActionListener(this);
shangchuan.setFont(new Font("Dialog", 1, 18));
shangchuan.setSize(120, 30);
shangchuan.setLocation(515, 140);
l.add(upload);

9、界面模块与计算模块的对接(详细地描述UI模块的设计与两个模块的对接,并截图实现的功能)(独立完成)

1.对接描述

    咱们GUI界面与计算模块的对接是经过获取参数,调用方法来实现的。出题时,将题目写入文件,而后文件下载到本地。作题时,上传题目后,将题目和答案封装到result集合中。

2.功能截图

首页:

出题界面:

 

答题界面:

文件上传截图:

生成题目截图:

作题判断结果:

10、结对过程描述及合照

和曹滢同窗结对打代码是一件使人开心的事,虽然咱们俩对java都不是特别了解,可是咱们互相陪伴互相鼓舞,也是完成了这份做业。请教了室友吕晓真同窗,原本我和曹滢同窗准备作先后台网页版的,可是请教过周围一些同窗,发现咱们俩都比较倾向于前端,然后端代码不是很熟悉,没法作到与前台紧密结合,也很抱歉曹滢同窗已经完成一份前台样式代码了,因此咱们改战GUI。

合照:

图左是我,图右是曹滢同窗~

11、结对编程的优缺点(同时指出结对的每个人的优势和缺点在哪里 (至少三个优势和一个缺点))

结对编程的优势:1.两我的有商有量,能够各自分担项目的一半;

                2.两我的互相学习,能够相互鼓励增长彼此信心;

                3.两我的更有动力,能够促进各自写代码的效率。

结对编程的缺点:1.两我的商量可能会出现意见有分歧;

                2.两我的分开完成项目的一部分,可能会致使事倍功半,好比咱们以前作web项目却中途进行不下去了;

                3.两我的之中有一个更厉害的,那么另外一人可能会产生依赖、付出也较少。

个人队友曹滢同窗的优势:1.为人和蔼,易沟通;2.前端技术掌握的好,善于学习;3.作事认真负责   缺点:对后端java不是特别熟悉

个人优势:1.易于沟通;2.认真学习;3.虚心请教。 缺点:对技术方面掌握的很差;缺少耐心;有时候碰到困难会不知道怎样解决

12、总结与反思

经过此次的结对项目,让我清晰地体会到本身的不足,还有不少地方欠缺,但愿在从此的学习中可以有所提高!

 

PSP

任务内容

实际完成时间(min

Planning

计划

60

Estimate

估计这个任务须要多少时间,并规划大体工做步骤

 

60

Development

开发

3000

Analysis

需求分析

30

Design Spec

生成文档

60

Design Review

设计复审

30

Coding Standard

代码规范

20

Design

具体设计

50

Coding

具体编码

2100

Code Review

代码复审

40

Test

测试

50

Reporting

报告

185

Test Report

测试报告

35

Size Measurement

计算工做量

30

Postmortem & Process Improvement Plan

过后总结,并提出过程改进计划

 

40

相关文章
相关标签/搜索