码迷,mamicode.com
首页 > 其他好文 > 详细

四则运算结对作业

时间:2018-04-10 10:57:25      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:ima   ack   分享图片   .com   span   tin   提取   web   web服务   

1、代码地址:https://git.coding.net/sixtyseven/Twinning.git

2、PSP表格

PSP

任务内容

计划共完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

30

30

 Estimate

估计这个任务需要多少时间,并规划大致工作步骤

10

12

Development

开发

1234

3375

Analysis

需求分析 (包括学习新技术)

60

240

Design Spec

生成设计文档

0

0

Design Review

设计复审 (和同事审核设计文档)

0

0

Coding Standard

代码规范 (为目前的开发制定合适的规范)

7

10

Design

具体设计

80

260

Coding

具体编码

800

1800

Code Review

代码复审

40

240

Test

测试(自我测试,修改代码,提交修改)

80

140

Reporting

报告

90

240

Test Report

测试报告

25

190

Size Measurement

计算工作量

10

15

Postmortem & Process Improvement Plan

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

40

240

3、Information Hiding

       信息隐藏是软件的首要技术使命中格外重要的一种启发式方法,因为它强调的就是隐藏复杂度。信息隐藏有着独特的启发力,它能够激发出有效的设计方案。信息隐藏同样有助于设计类的公开接口。代码模块应该采用定义良好的接口来封装,这些模块的内部结构应该是程序员的私有财产,外部是不可见的。

Interface Design

设计接口 design interface是传统的后勤保障的一种要素也是一种后勤功能。

接口要符合rest、命名要规范优雅、单一性、扩展性。

接口命名规范:命名以英文或者英文缩写并以驼峰命名法命名

                         返回字段中表示同一个含义的字段在不同接口中命名尽量一致

Loose Coupling

松耦合的基本概念是:允许改变或者当问题发生在“电线的一端时”来避免影响到其他的端点。也就是说,改变或者供应者或者服务的问题不能影响到用户----或者用户的问题不应影响到供应者或者服务。作为提供松耦合的必备基本要素,Web服务管理代理经常使用在用户和供应者之间。

4、计算模块接口的设计与实现过程

共四个类:Background类、Fraction类、Integer类、MyWindows类。

Background类:testNum 题目数量、question 储存题目的数组、result 储存答案的数组

Fraction类:qstr储存题目的字符串、astr 储存答案的字符串

Integer类:qstr储存题目的字符串、astr 储存答案的字符串

MyWindows类:testNum 题目数量、question 储存题目的数组、result 储存答案的数组、rightNum 文件读出的正确数量、errorNum 文件读出的错误数量、rightNum2 本次正确数量、errorNum2  本次错误数量、answers 储存用户的回答

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

6、计算模块部分单元测试展示

7、计算模块部分异常处理说明

public void History() {
        
        try {
            reader = new BufferedReader(new FileReader(new File("history.txt")));
            rightNum = reader.readLine();
            errorNum = reader.readLine();
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        labRight.setText("历史正确量:"+ rightNum );  
        labError.setText("历史错误量:"+ errorNum );          
    }
        
    @Override
    public void actionPerformed(ActionEvent e) {
        
    }

}
btnSubmit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                timer.stop();
                for (int i = 0; i < Background.testNum; i++) {
                    answers[i]=tfdAnswer[i].getText();  // 提取用户的答案
                    if(result[i].equals(answers[i])){
                        labCheck[i].setText("right");
                        rightNum2++;
                    }
                    else{
                        labCheck[i].setText("wrong");
                        errorNum2++;
                        wrong.add(new Integer(i+1).toString());
                    }                    
                }
                
                rightNum2 = rightNum2 +Integer.parseInt(rightNum);
                errorNum2 = errorNum2 +Integer.parseInt(errorNum);                
                Integer a = new Integer(rightNum2);
                Integer b = new Integer(errorNum2);
                
                try {
                    writer = new BufferedWriter(new FileWriter(new File("history.txt")));
                    writer.write(a.toString());
                    writer.newLine();
                    writer.write(b.toString());
                    writer.newLine();
                    writer.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                                                
            }
        });
                    
    }

 

8、界面模块的详细设计过程

try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Exception e) {
            e.printStackTrace();
        }
        background = new Background();
        background.createTest();
        questions = background.getQuestions();
        result = background.getResult();

        jpMain = new JPanel();
        jpMain.setLayout(null);
        
        labRight = new JLabel();
        labRight.setBounds(300, 0, 100, 50);
        jpMain.add(labRight);        
        
        labError = new JLabel();
        labError.setBounds(400, 0, 100, 50);
        jpMain.add(labError);        
        
        History();
        
        labTime = new JLabel();
        labTime.setFont(new Font("Consolas", 0, 20));
        labTime.setBounds(100, 0, 120, 50);
        jpMain.add(labTime);    
        now.setHours(0);
        now.setMinutes(0);
        now.setSeconds(0);
        final Timer timer = new Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Date now2 = new Date(now.getTime() + 1000);
                now = now2;
                SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
                labTime.setText(formatter.format(now));
            }
        });
for (int i = 0; i < Background.testNum; i++) {
            jpQuestions[i] = new JPanel();
            jpQuestions[i].setLayout(null);
            
            labQuestions[i] = new JLabel(questions[i], JLabel.CENTER);
            labQuestions[i].setFont(new Font("Consolas", 0, 20));
            jpQuestions[i].add(labQuestions[i]);
            labQuestions[i].setBounds(0, 0, 200, 25);
            
            tfdAnswer[i] = new JTextField(8);
            tfdAnswer[i].setFont(new Font("Consolas", 0, 20));
            jpQuestions[i].add(tfdAnswer[i]);
            tfdAnswer[i].setBounds(380, 0, 60, 30);
                                    
            labCheck[i] = new JLabel("", JLabel.CENTER); 
            labCheck[i].setFont(new Font("Consolas", 0, 16));
            jpQuestions[i].add(labCheck[i]);
            labCheck[i].setBounds(440, 0, 60, 25);
                        
            jpTest.add(jpQuestions[i]);
        }

9、界面模块与计算模块的对接

10、描述结对的过程

技术分享图片

 

11、结对编程

优点:知识共享,协同合作、思维开阔、互相督促、学习促进。

缺点:对于队友擅长的领域了解不多的话,容易产生设计分歧。

           沟通不到位,考虑不全面两个人的设计,容易失败,这次本来的设计是网页版,后来发现在交互和服务器上出现很大问题,不得已废弃,浪费了时间和精力。

           需要大量的交流,但是因为非职业原因,时间不好统一。

个人评价:

杨思琦:优点:善于学习,想法独到,沟通耐心,流程规划完善

            缺点:时间规划不完善、有点拖延

刘士齐(我):

            优点:比较有时间观念,善于总结问题,乐于沟通

            缺点:对于项目方向有点佛系,喜欢纠结于不必要的细节,浪费时间,对于此次作业所使用语言基础太薄弱,因此进行的很吃力。

四则运算结对作业

标签:ima   ack   分享图片   .com   span   tin   提取   web   web服务   

原文地址:https://www.cnblogs.com/liushiqi67/p/8776089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!