zoukankan      html  css  js  c++  java
  • 个人项目作业

    项目 内容
    这个作业属于哪个课程 班级博客
    这个作业的要求在哪里 作业要求
    我在这个课程的目标是 学好并应用好软件工程
    这个作业在哪个具体方面帮助我实现目标 学习个人软件开发流程
    作业正文 如下

    github地址:https://github.com/pyb19991125/Experiment.git

    解题思路描述

    拿到题目后,以为是求在一定范围内的交点个数,采用分治的思想,随机挑选一条直线将平面分开,将所有直线分为左边的直线(未与这条直线相交)、右边的直线(未与这条直线相交)、中间的直线(与这条直线相交),然后分别递归调用左边和右边,再计算中间直线分别和左右直线相交的交点个数,加上中间直线自己相交的交点个数。

    后来发现题目看错了,因为时间原因,直接采用两两搜索的方法,每两条不平行的直线算出交点,最后将这些交点去重,输出交点个数。

    设计实现过程

    代码包括三个主要函数:

    两个结构体:

    input_and_deal函数读取输入文件内容,将直线变为Ax+By+C=0(使用y=kx+b可能会导致斜率无穷大);

    add_point函数:每两条直线相比较,如果不平行,计算出交点坐标,放入向量中;

    point_number函数:将相同的交点去重,因为是double类型,使用abs(x1-x2)<eps进行高精度的比较;

    三个函数顺序执行;

    单元测试测试这三个主要函数和求两个数最大公因数的函数,测试中间结果和最终结果:
    (没有设计对边界的用例,只考虑了一般情况下的测试,测试不够细致)
    单独测试求两个数最大公因数的函数

    设计一些用例测试中间结果和最终结果

    改进的思路

    性能分析图:

    在改进程序性能上花费时间30分钟;

    最大消耗函数为point_number()函数,计算不同交点个数;改进思路,求不同交点个数先快排后去重。

    代码说明

    通过公式求A,B,C;

    这段代码用于求不平行直线的交点坐标,因为有可能A或B等于0,需要分别讨论;

    比较交点坐标,记录不同的交点个数。

    时间记录

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 30 30
    · Estimate · 估计这个任务需要多少时间 2
    Development 开发
    · Analysis · 需求分析 (包括学习新技术) 200 150
    · Design Spec · 生成设计文档 30 20
    · Design Review · 设计复审 (和同事审核设计文档)
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 20
    · Design · 具体设计 100 400
    · Coding · 具体编码 200 300
    · Code Review · 代码复审 100 60
    · Test · 测试(自我测试,修改代码,提交修改) 60 100
    Reporting 报告
    · Test Report · 测试报告 30 30
    · Size Measurement · 计算工作量 30 20
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30
    合计 842 1160

    因为看错了需求,以为交点必须在范围内才算,重新设计,写代码,所以和预估的时间差别很大。

    经过 Code Quality Analysis 工具的分析


  • 相关阅读:
    C#中方法的分类、定义、调用(3)
    C#中的输入和输出与类和对象(2)
    .net中的数据类型与数据转换(1)
    android第二章控件2
    android第二章控件1
    安卓 第一章
    二进制文件的读写与小结
    字符流
    File类与字节流
    字节流
  • 原文地址:https://www.cnblogs.com/pyb1999/p/12457744.html
Copyright © 2011-2022 走看看