第二次结对编程作业 一、链接 二、具体分工 三、PSP表格 四、解题思路描述与设计实现说明 五、关键代码解释 六、性能分析与改进 七、单元测试 八、Github的代码签入记录 九、遇到的代码模块异常或结对困难及解决方法 十、评价你的队友 十一、学习进度条

组队成员:031702630吴友昆,031702616 林涛

结对同学的博客链接
本作业博客的链接
Github仓库

二、具体分工

  • 林涛:UI、接口
  • 吴友坤:AI

三、PSP表格

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

四、解题思路描述与设计实现说明

1.网络接口的使用:

2.代码组织与内部实现设计

第二次结对编程作业
一、链接
二、具体分工
三、PSP表格
四、解题思路描述与设计实现说明
五、关键代码解释
六、性能分析与改进
七、单元测试
八、Github的代码签入记录
九、遇到的代码模块异常或结对困难及解决方法
十、评价你的队友
十一、学习进度条

3.算法的关键与关键实现部分流程图

  • 算法思路:
    先用两个列表,一个列表存放列表形式的牌组,如["&3, $2 ,*3 ,&2, #2"],另一个列表存放数字列表,记录每张牌出现的频率,之后按照牌型的大小分配rank点数,用来保证分墩准确性。
    之后用递归列出所有553牌型,再筛选出牌型不符合规范的组合后,记录牌型权值和最大组合牌组,遍历完所有递归后,挑出最大值输出。

  • 流程图:
    第二次结对编程作业
一、链接
二、具体分工
三、PSP表格
四、解题思路描述与设计实现说明
五、关键代码解释
六、性能分析与改进
七、单元测试
八、Github的代码签入记录
九、遇到的代码模块异常或结对困难及解决方法
十、评价你的队友
十一、学习进度条

五、关键代码解释

  • 后端使用flask框架接收前端信息
from flask import Flask
from flask import request
from flask_cors import CORS
import json
app = Flask(__name__)
@app.route('/test')
def test():
    global list_3,list_51,list_52,card_list,card_list_str
    data = request.get_json()
    card_str = data["card"]
    card_list_str=card_str.split(' ')
    init_card()

六、性能分析与改进

第二次结对编程作业
一、链接
二、具体分工
三、PSP表格
四、解题思路描述与设计实现说明
五、关键代码解释
六、性能分析与改进
七、单元测试
八、Github的代码签入记录
九、遇到的代码模块异常或结对困难及解决方法
十、评价你的队友
十一、学习进度条

七、单元测试

  • 测试例子
poker: $5 #2 #10 &7 $8 *8 &4 $Q &2 *10 #K #9 $6
{
 "id": 61597,
 "card": [
  "&4 #K *8",
  "&2 $Q #10 #2 *10",
  "$5 &7 $8 #9 $6"
 ]
}

poker: $J &4 *7 &7 *K $3 *Q *2 $10 &8 $2 &5 #K
{
 "id": 61527,
 "card": [
  "$2 $10 *2",
  "*Q *7 &7 &8 &5",
  "$J &4 *K $3 #K"
 ]
}

poker: #7 &3 $4 #6 &4 $2 *6 &8 *3 #Q &2 #2 *10
{
 "id": 61616,
 "card": [
  "*10 &4 $4",
  "*6 &8 #Q #6 #7",
  "&3 $2 *3 &2 #2"
 ]
}

八、Github的代码签入记录

第二次结对编程作业
一、链接
二、具体分工
三、PSP表格
四、解题思路描述与设计实现说明
五、关键代码解释
六、性能分析与改进
七、单元测试
八、Github的代码签入记录
九、遇到的代码模块异常或结对困难及解决方法
十、评价你的队友
十一、学习进度条

九、遇到的代码模块异常或结对困难及解决方法

前端:

  • 困难:不知如何实现接口。

  • 解决方法:学习js。

  • 困难:页面板块设计不好看。

  • 解决方法:审美问题。

后端:

  • 困难:算法结构混乱,调试起来繁琐
    解决方法:重构部分函数,聚合功能函数

十、评价你的队友

  • 林涛:自学能力强,很好地完成任务,算法思维不错。
  • 吴友昆:做得不错,对接也弄得挺好,有责任心,肯肝。

十一、学习进度条

第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
1 0 0 14 14 学习了Axure Rp9
2 400 400 20 34 学习了HTML、CSS
3 1000 1400 30 64 学习了Javascript