链接
张雨同学博客链接
宋娟同学博客链接
GitHub仓库链接
具体分工
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 60 | 80 |
Estimate | 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 1000 | 1100 |
Analysis | 需求分析 (包括学习新技术) | 500 | 550 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审 | 15 | 15 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
Design | 具体设计 | 300 | 350 |
Coding | 具体编码 | 600 | 800 |
Code Review | 代码复审 | 120 | 180 |
Test | 测试(自我测试,修改代码,提交修改) | 180 | 120 |
Reporting | 报告 | 30 | 30 |
Test Repor | 测试报告 | 100 | 30 |
Size Measurement | 计算工作量 | 5 | 5 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 30 |
合计 | 2950 | 3255 |
解题思路描述与设计实现说明
网络接口的使用
主要是参考python中requests库的post请求
例如调用登录的接口:
conn = http.client.HTTPSConnection("api.shisanshui.rtxux.xyz") payload = json1_idmm headers = {'content-type': "application/json"} conn.request("POST", "/auth/login", payload, headers) res = conn.getresponse() data = res.read()
代码组织与内部实现设计
算法的关键与关键实现部分流程图
根据各个牌型的权值计算每一墩的得分(以后墩为例)
if cards_order[type_old[2]] < cards_order[type_new[2]]: if type_new[2] == '同花顺': profit += 5 elif type_new[2] == "炸弹": profit += 4 else: profit += 1 elif cards_order[type_old[2]] > cards_order[type_new[2]]: if type_new[2] == '同花顺': profit -= 5 elif type_new[2] == "炸弹": profit -= 4 else: profit -= 1 else: res = 0 card1 = cards_type(old['xiadun']) card2 = cards_type(new['xiadun']) if card1[0] == '两对': if card1[1] in [['2', '3'], ['3', '4'], ['4', '5'], ['5', '6'], ['6', '7'], ['7', '8'], ['8', '9'], ['9', '10'], ['10', 'J'], ['J', 'Q'], ['Q', 'K'], ['K', 'J']]: if card2[1] in [['2', '3'], ['3', '4'], ['4', '5'], ['5', '6'], ['6', '7'], ['7', '8'], ['8', '9'], ['9', '10'], ['10', 'J'], ['J', 'Q'], ['Q', 'K'], ['K', 'J']]: res1 = cards_cmp(card1[1], card2[1]) if res1 == 0: res = cards_cmp(card2[2], card1[2]) else: res = res1 else: res = -1 else: if card1[1] == card2[1]: res = cards_cmp(card2[2], card1[2]) else: res = cards_cmp(card1[1], card2[1]) elif card1[0] == '三条' or card1[0] == '葫芦' or card1[0] == '炸弹': if card1[1] == card2[1]: res = cards_cmp(card2[2], card1[2]) else: res = cards_cmp(card1[1], card2[1]) else: res = cards_cmp(old['xiadun'], new['xiadun']) #res = cards_cmp(old['xiadun'], new['xiadun']) if res > 0: if type_new[1] == '同花顺': profit += 10 elif type_new[1] == "炸弹": profit += 8 elif type_new[1] == "葫芦": profit += 2 else: profit += 1 elif res < 0: if type_new[1] == '同花顺': profit -= 10 elif type_new[1] == "炸弹": profit -= 8 elif type_new[1] == "葫芦": profit -= 2 else: profit -= 1
关键代码解释
性能分析与改进
单元测试
Github的代码签入记录
遇到的代码模块异常或结对困难及解决方法
问题描述
1、对前端开发几乎是一无所知
2、不知道如何调用技术助教给的接口,后来看到如何完成python中requests库的post请求的教程,再加上大佬的指导一步一步完成做过的尝试
请教大佬,然后听大佬说PyQt5比较好做ui,就通过看b站上面的PyQt5实战速成视频,来完成一些,然后实操中遇到问题就看CSDN上的大佬解答的是否解决
基本解决有何收获
软工实践真的是一门十分考验学习能力的科目,遇到困难的时候疯狂百度,疯狂问大佬,疯狂看教程,基本学会了PyQt5和pyinstaller的使用,以及对接口的请求和调用也多了一层理解
评价我的队友
- 值得学习的地方:我队友做事特别认真,而且学习能力也很强,初次接触PyQt能做到这样,很棒
- 需要改进的地方:哈哈哈可能下次应该早点开始做,就不用后面几天这样赶了,
国庆有点快乐
学习进度条
第N周 | 新增代码(行) | 累积代码(行) | 本周学习耗时(小时) | 累积学习耗时(小时) | 重要成长 |
1 | 0 | 0 | 10 | 10 | 第一次认识了Axure RP,并学习使用 |
2 | 200 | 200 | 8 | 18 | 讨论并分工,开始思考算法思路和实现方法 |
3 | 0 | 0 | 20 | 38 | 学习了PyQt5的使用,对UI的设计和实现有了更深的了解 |
4 | 0 | 0 | 40 | 78 | 学习了如何用pyinstaller进行打包,并对代码进行改进 |