个人项目作业 解题思路描述 设计实现过程 改进的思路 代码说明 时间记录 经过 Code Quality Analysis 工具的分析

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

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

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

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

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

设计实现过程

代码包括三个主要函数:

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

两个结构体:

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

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

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

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

三个函数顺序执行;

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

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

设计一些用例测试中间结果和最终结果
个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

改进的思路

性能分析图:

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

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

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

代码说明

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

通过公式求A,B,C;

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

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

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析

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

时间记录

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 工具的分析

个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析
个人项目作业
解题思路描述
设计实现过程
改进的思路
代码说明
时间记录
经过 Code Quality Analysis 工具的分析