第二次结对编程作业

1、在文章开头给出结对同学的博客链接、本作业博客的链接、你所Fork的同名仓库的Github项目地址(2分)

王瑞卿
关文涛
Github

2、给出具体分工(2分)

关文涛:AI出牌代码的实现,接口的实现

王瑞卿:前端UI界面的实现

3、给出PSP表格(2分)

我想知道谁真的一边打代码一边摁着一个计时器= =

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

4、解题思路描述与设计实现说明(15分)

网络接口的使用(3分)

使用python3,其中的requests库(因为之前第一次个人编程用的就是requests),通过Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档requests库进行学习,进一步学习了如何通过Python进行HTTP请求(GET & POST

代码组织与内部实现设计(类图)(6分)

附上一张Structure:

struct.png

PS:这么一点点的代码(Python)写个劳社子的类,我认为用函数封装好了即可,函数封装好形成接口更有利于直接调用,降低耦合度

def register():#注册
def register2():#注册绑定
def login():#登陆
def logout(token):#注销
def bind_num(token):#绑定学号
def check_token(token):#登陆验证
def history_list(token):#历史列表
def rank():#排行榜
def get_cards(token):#开启牌局
def deliver_cards(cards_dict, token):#出牌
def transfer(cards_dict):#分牌
def check_cmp():#批量测试判牌函数
#下面一堆判牌函数和测试函数列出,不啰嗦了
def Tonghuashun()
def Tonghua()
def Shunzi()
def Zhadan()
def Santiao5()
def Hulu()
def Erdui()
def Dui()
def TonghuashunCheck()
def TonghuaCheck()
def ShunziCheck()
def ZhadanCheck()
def Santiao5Check()
def HuluCheck()
def ErduiCheck()
def DuiCheck()

说明算法的关键与关键实现部分流程图(6分)

都很关键,具体看GitHub代码,我相信我的代码非常清晰易读,关键部分均有注释,诸君可以10分钟内浏览完毕。

丢上一个极为简易的流程图:

shisan.jpg

5、关键代码解释(3分)

贴出你认为重要的/有价值的代码片段,并解释(3分)

都很关键。

已在代码注释中解释了。

6、性能分析与改进(6分)

描述你改进的思路(5分)

没什么好改进的

transfer()函数运算是常数级别,不超过10000

requests库的改进已经超出我的能力范围

展示性能分析图和程序中消耗最大的函数(1分)

anlysis.jpg

消耗最大的函数是request.post(),没办法,摊手QAQ。

7、单元测试(5分)

  • 展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路

  • 测试函数

    def check_cmp():
        print('同花顺')
        TonghuashunCheck()
        print('同花')
        TonghuaCheck()
        print('顺子')
        ShunziCheck()
        print('炸弹')
        ZhadanCheck()
        print('三条')
        Santiao5Check()
        print('葫芦')
        HuluCheck()
        print('二对')
        ErduiCheck()
        print('一对')
        DuiCheck()
    

    细分测试函数:

    def ShunziCheck():
        Shunzilist = [(1, 9), (2, 8), (3, 10), (0, 7), (0, 11)]
        NotShunzilist = [(0, 9), (0, 1), (0, 10), (0, 7), (0, 11)]
        print(Shunzi(Shunzilist))
        print(Shunzi(NotShunzilist))
    
    
    
    def TonghuaCheck():
        Tonghualist = [(0, 9), (0, 8), (0, 10), (0, 7), (0, 11)]
        NotTonghualist = [(0, 9), (0, 1), (1, 10), (0, 7), (0, 11)]
        print(Tonghua(Tonghualist))
        print(Tonghua(NotTonghualist))
    
    
    
    
    def TonghuashunCheck():
        Tonghuashunlist = [(0, 9), (0, 8), (0, 10), (0, 7), (0, 11)]
        NotTonghuashunlist = [(0, 9), (0, 1), (0, 10), (0, 7), (0, 11)]
        print(Tonghuashun(Tonghuashunlist))
        print(Tonghuashun(NotTonghuashunlist))
    
    
    
    def ZhadanCheck():
        Zhadanlist = [(0, 1), (1, 1), (2, 1), (3, 1), (2, 11)]
        NotZhadanlist = [(0, 1), (1, 1), (2, 1), (3, 11), (2, 11)]
        print(Zhadan(Zhadanlist))
        print(Zhadan(NotZhadanlist))
    
    
    def Santiao5Check():
        Santiao5list = [(0, 1), (1, 1), (2, 1), (3, 5), (2, 11)]
        NotSantiao5list = [(0, 1), (1, 2), (2, 1), (3, 5), (2, 11)]
        print(Santiao5(Santiao5list))
        print(Zhadan(NotSantiao5list))
    
    
    
    def HuluCheck():
        Hululist = [(0, 1), (1, 1), (2, 1), (3, 5), (2, 5)]
        NotHululist = [(0, 1), (1, 1), (2, 1), (3, 6), (2, 5)]
        print(Hulu(Hululist))
        print(Hulu(NotHululist))
    
    
    
    def ErduiCheck():
        Erduilist = [(0, 1), (1, 1), (2, 2), (3, 2), (2, 5)]
        NotErduilist = [(0, 1), (1, 1), (2, 2), (3, 6), (2, 5)]
        print(Erdui(Erduilist))
        print(Erdui(NotErduilist))
    
    
    def DuiCheck():
        Duilist = [(0, 1), (1, 1), (2, 2), (3, 6), (2, 5)]
        NotDuilist = [(0, 11), (1, 1), (2, 2), (3, 6), (2, 5)]
        print(Dui(Duilist))
        print(Dui(NotDuilist))
    

    就构造一下满足和不满足的情况看看返回值对不对即可

8、贴出Github的代码签入记录(1分)

  • 请合理记录commit信息

commit均有合理签入信息

commit.jpg

9、遇到的代码模块异常或结对困难及解决方法(8分)

  • 问题描述(2分)

    不能查看历史纪录

  • 做过哪些尝试(2分)

    修改header,auth,data等等

  • 是否解决(2分)

    已解决

  • 有何收获(2分)

    对HTTP GET请求更熟悉了

10、评价你的队友(4分)

  • 值得学习的地方(2分)

    能提出很好的意见, 督促我要抓紧时间。

  • 需要改进的地方(2分)

    空闲时间可以多学一些知识。

11、学习进度条(2分)

第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
9 553 553 20 不知道 都很重要
原文地址:https://www.cnblogs.com/passguan/p/11764192.html