国内第一个为线下桥牌比赛系统提供平台服务的系统
桥牌比赛微服务
一、主要功能
- 比赛管理(创建比赛、修改比赛、上传成绩、编排对阵表)
- 计算单副得分
- 队式赛计算成绩(每轮次)
- 双人赛计算成绩(每副牌)
- 成绩管理(每轮次成绩查询、总成绩查询)
- 桥牌资料库
二、接口设计
数据库设计:
数据库名称: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 (东西队号)
-
计算单副得分:
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:??? }
- 队式赛计算得分 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);
}
}
}

浙公网安备 33010602011771号