国内第一个为线下桥牌比赛系统提供平台服务的系统

桥牌比赛微服务

一、主要功能

  1. 比赛管理(创建比赛、修改比赛、上传成绩、编排对阵表)
  2. 计算单副得分
  3. 队式赛计算成绩(每轮次)
  4. 双人赛计算成绩(每副牌)
  5. 成绩管理(每轮次成绩查询、总成绩查询)
  6. 桥牌资料库

二、接口设计

数据库设计:
数据库名称:YFbridge
数据表说明:  YF_match  (比赛表)
            YF_match_team (比赛队伍表)
            YF_match_formation (比赛对阵表)
            YF_match_score (比赛成绩表)
            YF_match_totlescore(比赛成绩总表)
表结构说明:
    YF_match:
        id  (主键)
        YF_match_name   string 20   (比赛名称)
        YF_match_addr   string 40   (比赛地点)  
        YF_match_date1  string 10   (开室时间)
        YF_match_date2  string 10   (结束时间)
        YF_match_type   string 10   (比赛类型:团体赛,双人赛)
        YF_match_round  int         (比赛轮次)
        YF_match_desc   string max  (比赛简介)
        YF_match_seat   int         (比赛桌数)
        YF_match_key    string  8   (比赛密码)
        YF_match_manager    string 20   (比赛管理人)
        YF_match_managerpassword    string 8    (比赛管理密码)
        YF_match_flag   int         (比赛标志:0-正常:缺省,1-取消) 

    YF_match_team:
        id  (主键)
        YF_match_id     long    (比赛id)
        YF_match_name   string 20   (比赛名称)
        YF_match_team_id    int     (队伍编号)
        YF_match_team_name  string  20  (队伍名称)
        YF_match_team_captain   string 20   (队长名称)
        YF_match_team_captainid string  10  (队长会员号)
        YF_match_team_items string 400  (队员信息,json格式转化,包括[itemname:,itemid])

    YF_match_formation:
        id  (主键)
        YF_match_id     long    (比赛id)
        YF_match_name   string 20   (比赛名称)
        YF_match_type   string 10   (比赛类型:团体赛,双人赛)
        YF_match_round  int     (比赛轮次)
        YF_match_seat   int     (桌号)
        YF_match_SN     int     (南北队号)
        YF_match_EW     int     (东西队号)
  1. 计算单副得分:

    https://www.hgsbrg.club/brgserver/ComputeScore; 获取方式post; data:{ Matchid:xxxx, MatchTurn:???, MatchSeatNumber:???, SNteamid:???, EWteamid:???, CardNumber:???, Position:xxx, ExponentNumber:???, Double:XXX, Result:???, Record:??? }; 返回值:result={ Matchid:xxx, MatchTurn:???, SNScore:???, RecordFlag:??? }

  2. 队式赛计算得分 https://www.hgsbrg.club/brgserver/ComputeTeamScore; 获取方式post; data:{ Matchid:xxxx, MatchTurn:???, MatchSeatNumber:???, SNteamid:???, EWteamid:???, CardNumber:???, Position:xxx, ExponentNumber:???, Double:XXX, Result:???, Record:??? }; 返回值:result={ Matchid:xxx, MatchTurn:???, SNScore:???, RecordFlag:??? }

3、队伍编排

    void save(int c[],sum){}  //把数组c保存到数据,得到对阵表

    bool check_seat(int i,int j){} //检查队伍i与队伍j是否对阵过,是返回true,否则返回false

    int  team_seat(int a[],int b[],int c[], int n,int sum)
    //对队列a[]中未编排的队伍进行编排,其中b[i]=0 表示队伍i还未编排,否则表示队伍i已经编排;
    //c[]表示以编排的队伍对阵线性表,其中c[2i]与c[2i+1]对阵,还未编排队伍数量
    //如果能编排,返回1,存储第一个对阵表,如不能编排返回0
    {
        if(n==0) 
            return(1);
        if(n==1)
            {
                for(int i=0;i<sum;i++)
                {
                    if(b[i]==0)
                        {
                            c[sum]=i;
                            b[i]=1;
                            return(1);
                        }
                }
            }
        for(int i=0;i<sum;i++)
        {
            if(b[i]==0)
            {   for(int j=i+1;j<sum;j++)
                {                       
                    if(check(i,j)==false)
                        {   b[i]=1,b[j]=1,c[n-1]=i,c[n]=j;
                            if( team_seat(a,b,c,n-2,sum)==1)
                                { save(c,sum); return(1);}
                            else
                                { 
                                    b[j]=0;
                                }
                        }
                }
                return(0);
            }
        }
    }
posted @ 2022-04-21 17:26  安顺小意思  阅读(115)  评论(0)    收藏  举报