201971010246-王孜睿 实验二 个人项目—《{0-1}背包问题》项目报告

项目 内容
班级博客链接 课程班级
这个作业的要求链接 作业要求
我的课程学习目标 1.使用Github进行项目托管。
2.掌握Github发布软件项目的操作方法。
3.掌握个人软件项目的开发步骤。
这个作业在哪些方面帮助我实现学习目标 深入学习0/1背包问题的算法,掌握PSP流程
项目Github的仓库链接地址 仓库地址

任务一

作业点评链接:

任务二

阅读《构建之法》掌握PSP流程

  • 通过第一章了解了什么是软件工程,了解到了软件的特殊性,如复杂性、不可见性、易变性、服从性、非连续性。也了解到了软件工程是把系统的、有序的、可量化的方法应 用到软件的开发、运营和维护上的过程。
    而在阅读了第二章之后学习到了单元测试、回归测试、效能分析、个人软件开发流程(PSP)的一些基本概念和技术。本次任务需主要学习PSP。

  • PSP是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。

PSP展示

PSP2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 10 8
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 8
Development 开发 650 826
Analysis 需求分析 (包括学习新技术) 30 55
Design Spec 生成设计文档 10 10
Design Review 设计复审 (和同事审核设计文档) 5 5
Coding Standard 代码规范 (为目前的开发制定合适的规范) 5 6
Design 具体设计 50 50
Coding 具体编码 300 350
Code Review 代码复审 100 100
Test 测试(自我测试,修改代码,提交修改) 100 150
Reporting 报告 50 50
Test Report 测试报告 10 10
Size Measurement 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结 ,并提出过程改进计划 30 30

任务三

需求分析

  • 本次任务内容为解决{0-1}背包问题。按照题目要求,由于第三项价值为前两项总和且重量小于其他两项之和,且要保证装入背包的价值最大,就需要计算出每三个项集中性价比最高的,在不超过背包容量的情况下装入。

功能设计

  • 基本功能需要可正确读入实验数据文件
  • 需要能以画出任意一组{0-1}KP数据以重量为横轴、价值为纵轴的数据散点图
  • 能够对一组{0-1}KP数据按项集第三项的价值:重量比进行非递增排序
  • 用户能够自主选择动态规划算法、回溯算法求解指定D{0-1} KP数据的最优解和求解时间(以秒为单位)
  • 任意一组{0-1} KP数据的最优解、求解时间和解向量可保存为txt文件或导出EXCEL文件

设计实现

  • 使用python的matplotlib库实现绘图

  • 使用getline进行数据的读取

  • 使用数组进行数据的相关处理

  • 使用sorted函数进行数据排序

  • 使用文件处理相关函数、方法进行数据输出

部分代码

  • 读取文件
data=open("D:\data.txt",'w+')
print("文件如下")
print("KPdata.txt")
tex="KPdata.txt"
n=int(input("输入组号:"))
m=n*8
s=n*8+2
t=n*8-2
profit=linecache.getline(tex,m)
list1 = profit.split(',')
weight=linecache.getline(tex,s)
list2 = weight.split(',')
list1.pop()
list2.pop()
  • 散点图与降序排列
weight=list4 
profit=list3 
plt.figure(figsize=(10, 10), dpi=100)
plt.scatter(weight,profit)
plt.show()

for (a,b) in zip(list3,list4):
    num=a/b
    lit.append(num)
lit= [round(i,3) for i in lit]
#print(lit)
lit1=sorted(lit,reverse=True)




print("降序",lit1)
print("\n",numb)

实验总结

任务一中,在互评中互相学习,通过学习他人良好的编写习惯,完善自己的博客及代码书写规范以及为用户提供良好的视觉效果;任务二中,学习了PSP流程,创建PSP,了解自己的欠缺之处,提高效率。任务三中,在系统的软件开发要求下让我感到自己的不足,体会到了与以往写程序的不同模式,深刻意识到还需多加学习。

任务四

  • 完成任务三的程序开发,将项目源码的完整工程文件提交到你注册Github账号的项目仓库中。
  • 仓库链接请见博客开头
posted @ 2022-03-21 16:07  一周八休  阅读(52)  评论(2编辑  收藏  举报