zoukankan      html  css  js  c++  java
  • 第二次结对编程作业

    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
  • 相关阅读:
    图论:带花树算法-一般图最大匹配
    图论&数学:最小平均值环
    图论:朱刘算法
    图论&动态规划:虚树
    图论:动态点分治
    图论:平面图的对偶图
    图论:DFS序
    打开页面时,所有节点展开(ztree)
    Vue 常用记录
    Vue v-if and v-for
  • 原文地址:https://www.cnblogs.com/zzccc/p/11768640.html
Copyright © 2011-2022 走看看