1、在文章开头给出结对同学的博客链接、本作业博客的链接、你所Fork的同名仓库的Github项目地址(2分)
张聪:https://www.cnblogs.com/zzccc/p/11768640.html
池九锡(本作业):https://www.cnblogs.com/juicy33/p/11768590.html
Github地址:https://github.com/Juicy33/13h2o
队友:https://github.com/zzccc777/031702515/
2、给出具体分工(2分)
池九锡:负责前端和美工
张聪:负责后端
3、给出PSP表格(2分)
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 50 |
Estimate | 估计这个任务需要多少时间 | 60 | 50 |
Development | 开发 | 3600 | 4500 |
Analysis | 需求分析 (包括学习新技术) | 420 | 540 |
Design Spec | 生成设计文档 | 60 | 60 |
Design Review | 设计复审 | 30 | 40 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
Design | 具体设计 | 360 | 400 |
Coding | 具体编码 | 1440 | 2000 |
Code Review | 代码复审 | 60 | 90 |
Test | 测试(自我测试,修改代码,提交修改) | 1200 | 1400 |
Reporting | 报告 | 140 | 180 |
Test Report | 测试报告 | 60 | 80 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 80 |
合计 | 3800 | 4780 |
4、解题思路描述与设计实现说明(15分)
网络接口的使用(3分)
ajax内使用post请求:
$.ajax({ type: "POST", dataType: "json", url: "http://api.revth.com/auth/register2",
data: JSON.stringify(reg_data), //提交的数据
contentType: "application/json;charset-UTF-8"。
代码组织与内部实现设计(类图)(6分)
ui:login.html``register.html``result.html``rank.html``found.html``play.html``record.html
ai:按牌面数字大小排序-->比较花色,牌型-->判断各各牌型的函数-->主函数调用生成三组墩牌。
说明算法的关键与关键实现部分流程图(6分)
参数是数组,返回值为包含该牌型的所有组合
判断在该组合下于剩下的牌组中
选择牌型最最好的函数
从牌组中删去组合的函数
5、关键代码解释(3分)
贴出你认为重要的/有价值的代码片段,并解释(3分)
function changeData(data){
var pai=new Array();
var num=0;
for(var i=0;;){
if(data[i+1]=='A')data[i+1]='>';
if(data[i+1]=='J')data[i+1]=";";
if(data[i+1]=='Q')data[i+1]='<';
if(data[i+1]=='K')data[i+1]='=';
for(var j=0;j<4;j++){
if(data[i]=="$"&&data[i+1]=='1'&&data[i+2]=='0'){
pai[num]=32;
num+=1;
i+=4;
break;
}else if(data[i]=="&"&&data[i+1]=='1'&&data[i+2]=='0'){
pai[num]=33;
num+=1;
i+=4;
break;
}else if(data[i]=="*"&&data[i+1]=='1'&&data[i+2]=='0'){
pai[num]=34;
num+=1;
i+=4;
break;
}else if(data[i]=="#"&&data[i+1]=='1'&&data[i+2]=='0'){
pai[num]=35;
num+=1;
i+=4;
break;
}else if(data[i]=="$"){
if(data[i+1]=='A')pai[num]=48;
else if(data[i+1]=='J')pai[num]=36;
else if(data[i+1]=='Q')pai[num]=40;
else if(data[i+1]=='K')pai[num]=44;
else pai[num]=(data[i+1]-2-'0')*4;
num+=1;
i+=3;
break;
}else if(data[i]=="&"){
if(data[i+1]=='A')pai[num]=49;
else if(data[i+1]=='J')pai[num]=37;
else if(data[i+1]=='Q')pai[num]=41;
else if(data[i+1]=='K')pai[num]=45;
else pai[num]=(data[i+1]-2-'0')*4+1;
num+=1;
i+=3;
break;
}else if(data[i]=="*"){
if(data[i+1]=='A')pai[num]=50;
else if(data[i+1]=='J')pai[num]=38;
else if(data[i+1]=='Q')pai[num]=42;
else if(data[i+1]=='K')pai[num]=46;
else pai[num]=(data[i+1]-2-'0')*4+2;
num+=1;
i+=3;
break;
}else if(data[i]=="#"){
if(data[i+1]=='A')pai[num]=51;
else if(data[i+1]=='J')pai[num]=39;
else if(data[i+1]=='Q')pai[num]=43;
else if(data[i+1]=='K')pai[num]=47;
else pai[num]=(data[i+1]-2-'0')*4+3;
num+=1;
i+=3;
break;
}
}
if(num==13)break;
}
return pai;
所有函数的判别基础,接下来的步骤都会用到它。
6、性能分析与改进(6分)
描述你改进的思路(5分)
在html5中整合进了后端代码,虽然方便衔接和打包,但是运行起来速度受到了影响,性能分析也不便进行。。
如果有时间可能还是会进行前后端分离,另外前端的文件架构相当松散(打包完了也看不见就是了
展示性能分析图和程序中消耗最大的函数(1分)
无法使用jprofiler,那么就光明正大的摸鱼。
7、单元测试(5分)
展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路public static void
for (int i = 0; i < 10; i++){
List<Card> tempCards = new ArrayList<>();
List<Card> cards = new ArrayList<>();
tempCards.addAll(allCards);
for (int j = 0; j < 13; j++){
Card card = tempCards.get(random.nextInt(52 - j));
cards.add(card);
tempCards.remove(card);
}
String cardStr = "";
for (int j = 0; j < 13; j++){
Card card = cards.get(j);
cardStr += card.toString();
if (j < 12)
cardStr += " ";
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("id",0);
jsonObject.put("card",cardStr);
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(cardController.card2(jsonObject.toString()));;
}
}
随机构造了13张牌进行分析,打印出结果观察。
8、遇到的代码模块异常或结对困难及解决方法(8分)
问题描述(2分)
- 代码模块异常:谷歌连接API的时候会拦截非同ip的跨域请求。
结对困难:没有!配合完美无瑕天衣无缝浑然天成!
做过哪些尝试(2分)
- stackoverflow上一顿翻。
- 问了多位大佬。
是否解决(2分)
- 已通过禁用谷歌的安全机制解决。
有何收获(2分)
- api的使用方法
- 前端的架构
- electron框架的使用方法
9、评价你的队友(4分)
聪哥是什么神仙宝藏男孩啊!爱了爱了!我360度原地旋转爆炸排卵!(聪哥:口区
10、学习进度条(2分)
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 0 | 0 | 7.6 | 7.6 | Axure9的使用 |
2 | 200 | 200 | 22 | 29.6 | 决定开发框架和架构 |
3 | 996 | 1196 | 21 | 50.6 | 学习electron,coding |
4 | 400 | 1596 | 28 | 78.6 | debug |