软工作业--结对编程

软工作业 结对编程
作业要求 结对编程
作业目标 实现一个自动生成小学四则运算题目的命令行程序
队伍成员 3118005421邱泽滨,3118005418卢敏聪

运行说明

本作业运行主要在网页上进行
作业生成
答案对比

Github地址

https://github.com/LDY1065/softwareEngineering

PSP表

PSP 各个阶段 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 40
Estimate 估计这个任务需要多少时间 20 25
Development 开发 700 850
Analysis 需求分析(包括学习新技术) 40 40
Design Spec 生成设计文档 30 25
Design Review 设计复审 30 30
Coding Standard 代码规范(为目前的开发制定合适的规范) 40 55
Design 具体设计 40 50
Coding 具体编码 210 300
Code Review 代码复审 90 100
Test 测试(自我测试,修改代码,提交修改) 60 75
Reporting 报告 40 45
Test Repor 测试报告 30 25
Size Measurement 计算工作量 10 10
Postmortem&Process Improvement Plan 事后总结, 并提出过程改进计划 20 20
合计 1390 1670

效能分析

总概况

内存占用


CPU占用



各项目占用

设计实现

项目框架

项目结构

项目中的类 作用
checkAnswerController 接收请求,调用service中方法生成比对结果
newTestController 接收请求,调用service中方法生成题目
checkAnswerService 比对答案服务类
newTestService 生成题目服务类
testFileProperties 路径配置类
fraction 分数处理类
FouroperationsApplication 启动类

类之间的关系




代码说明

生成测试

public String newTest(int number,int resultLimit) {
        List<String> subjects=new ArrayList<>();
        List<String> answers=new ArrayList<>();
        for (int i = 0; i < number; i++) {
            switch (random.nextInt(20)%5){
                case 0:
                    newAdd(subjects,answers,resultLimit,i+1);
                    break;
                case 1:
                    newSubtraction(subjects,answers,resultLimit,i+1);
                    break;
                case 2:
                    newMultiplication(subjects,answers,resultLimit,i+1);
                    break;
                case 3:
                    newDivision(subjects,answers,resultLimit,i+1);
                    break;
                case 4:
                    newFractional(subjects,answers,resultLimit,i+1);
                    break;
                default:
                    break;
            }
        }
        String testFileName=testFileProperties.getTestDir()+UUID.randomUUID().toString().substring(0,10)+".txt";
        String answerFileName=testFileProperties.getTestDir()+UUID.randomUUID().toString().substring(0,10)+".txt";
        File testFile=new File(testFileName);
        File answerFile=new File(answerFileName);
        try{
            if(!testFile.exists()&&!answerFile.exists()){
                testFile.createNewFile();
                answerFile.createNewFile();
            }
            FileWriter testFileWriter=new FileWriter(testFile);
            FileWriter answerFileWriter=new FileWriter(answerFile);
            for (String subject : subjects) {
                testFileWriter.append(subject);
                testFileWriter.flush();
            }
            for (String answer : answers) {
                answerFileWriter.append(answer);
                answerFileWriter.flush();
            }
            testFileWriter.close();
            answerFileWriter.close();
            String zipName = compress(testFile, answerFile);
            return zipName;
        }catch (IOException e){
            e.printStackTrace();
        }
        return null;
    }

调用random方法生成随机数对5求模,生成加法、减法、乘法、除法以及分数运算。写入题目文件和答案文件,压缩为zip后返回前端

关键函数流程图

测试运行

输入空值


输入非数字值

生成100以内的10000道题目

比对答案

项目小结

得失总结

在合作完成项目时,应该注重一下代码注释的重要性,有了注释才可以让对方更快捷明白对方所写代码的内容。
在工作过程中应该加强双方之间的沟通
进行多种测试有助于完善代码

结对感想及闪光点

成员 感想
邱泽滨 在这次作业中对于结对编程感触挺大,多一个人有利于互补,弥补一下自己的不足,而且队友有时的突发奇想也是可以填充项目的需求,同时也可以发现双方的不足,队友java基础稍弱,编程能力有待加强,希望他有更大的进步、
卢敏聪 结对编程有助于互补互助,两个人一起思考能充分的理解题目,对需求作充足的分析。这次我的队友有这较强的编程能力,对问题的思考有深度、广度,并且在做作业的过程的对我有着很大的帮助。在他的帮助下,我也发现了很多自己对于编程的不足之处,对于需求总是停留在最表面的层次,有很多问题都忽略了不考虑。我在各方面都有待加强。
posted @ 2020-10-13 00:22  卢敏聪  阅读(92)  评论(0编辑  收藏  举报