Foxtable(狐表)用户栏目专家坐堂 → 想做一个排位表


  共有14963人关注过本帖树形打印复制链接

主题:想做一个排位表

美女呀,离线,留言给我吧!
采菊东篱下
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
想做一个排位表  发帖心情 Post By:2020/4/9 21:29:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛.foxdb
 
  密码:888888
窗口按钮事件里已用文字注识了我想实现的效果,我想了很久,代码写得非常乱,涉及的问题太多了,还是请教一下老师吧,谢谢。

[此贴子已经被作者于2020/4/9 21:32:38编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/9 21:45:00 [显示全部帖子]

  当比赛积分表中没有窗口表头上对应的棋赛名称记录时,安对阵表格式要求对基本信息表中对应的棋赛名称,随机生成不安编号顺序的坐号,这是首轮比赛的代码。
  下轮比赛先判断如果基本信息表中的棋赛名称等于对阵表表头上的棋赛名称,并且基本信息表中的退赛场次序号列标明退赛场序号(如以4,5,6,表示第4,5,6场不参赛,此号不参与这几场赛随机排坐),根据后台比赛积分表统计指定棋赛名称选手们的上轮止累计积分,曾交战对手累计积分,并安此由高分到低分排序,如两项积分都相等的人数大于2,分数相等部分人在有选择情况下尽量避免和曾对战过的人交手(即排除重复编号),然后随机生成分数与之对应的坐位.


[此贴子已经被作者于2020/4/9 22:03:13编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/9 21:57:00 [显示全部帖子]

对阵表是排位表,安排桌号的,比赛积分表是记录表,把对阵表里各场比赛的当前积分记录至此,下一场比赛时对阵表中的上轮止累计积分、曾交战对手累计积分都是根据比赛积分表中的积分统计的,上轮止累计积分统计的是自己的成绩,曾交战对手累计积分统计的是同棋赛、与自己交手对手的积分。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/9 22:08:00 [显示全部帖子]

弄懂这个复杂代码可举一反三应用到企业管理中的人员排班上。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/10 0:30:00 [显示全部帖子]

以下是引用有点蓝在2020/4/9 23:01:00的发言:
搞不定。另请高明吧,找个数学好的算法高手
算法并不高深,对阵表上的当前局成绩是比赛后输进去的,比赛积分表上的积分就是把对阵表上的成绩安编号对应的基本信息表上的姓名保存到哪的,没有什么深奥,主要是代码我不会写,来一段段拆分,慢慢来:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200409230850.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:1111.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2222.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3333.png
图片点击可在新窗口打开查看


当比赛积分表中没有对阵表表头上的棋赛名称记录时,安对阵表格式要求对基本信息表中对应的棋赛名称,随机生成不安编号顺序的坐号.
DataTables("对阵表").StopRedraw()'停止对窗口上table控件绑定的表格绘制
DataTables("对阵表").DataRows.Clear'清空窗口上table控件绑定的表格数据
Dim bsrq As WinForm.DateTimePicker = e.Form.Controls("rq")'定义窗口上的日期控件
Dim qsmc As WinForm.DropDownBox = e.Form.Controls("棋赛名称")'定义窗口上的棋赛名称控件
Dim di1 As String = qsmc.Value'定义窗口上的棋赛名称变量为字符型
Dim m As WinForm.TextBox = e.Form.Controls("第几轮")'定义窗口上的第几轮控件
Dim di2 As Integer = m.Value'定义窗口上的第几轮变量为整数型
Dim di3 As Date = bsrq.Value'定义窗口上的日期变量为日期型
'以上为定义窗口上的控件和变量,要不要这样定义,请指正。
Dim dr As DataRow =  DataTables("比赛积分").SQLfind("棋赛名称 = '" & di1 & "' And 第几轮比赛 = '" & di2 & "'")'定义dr为当比赛积分表上的棋赛名称和第几轮比赛等于窗口控件上的棋赛名称和第几轮比赛上的行
Dim di4 As Integer = dr("桌号") = 0'定义di4为符合上面条件的行对应的桌号变量
'下面是根据基本信息表上的棋赛名称等于窗口控件上的棋赛名称,姓名不为空,身份列为参赛人,安桌号顺序生成以人数个数不安顺序随机生成编号,编号对应基本信息表上对应的姓名、编号,就是他应坐的桌号。
If dr Is Nothing Then
    di1 = qsmc.Value
    di2 = 1
    Dim ls As Integer = DataTables("基本信息").SQLGetValues("棋赛名称|姓名|身份", "棋赛名称 = '" & di1 & "' And 姓名 is not null and 身份 = '参赛人'").Count
    Dim ids1,ids2 As New List(of Integer) '用于存储洗牌前后的位置
    For i As Integer = 0 To ls -1 '准备初始的牌
        ids1.add(i)
    Next
    For i As Integer = 0 To ls - 1 '开始洗牌
        Dim idx As Integer = ids1(rand.Next(0,ids1.count))
        ids2.Add(idx)
        ids1.Remove(idx)
        Dim n = 2
        If ls > = n Then
            Dim ls1 As new List(Of String)
            Do While ls1.count < n
                Dim a = Rand.Next(0, ls)
                If ls1.Contains(a) = False Then
                    ls1.add(ids2(a))
                End If
            Loop
            di4 = di4 + 1
            dr("红方_编号") = ls1(0)
            dr("黑方_编号") = ls1(1)
        End If
    Next
Else

[此贴子已经被作者于2020/4/10 9:36:10编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/10 0:31:00 [显示全部帖子]

请教这段代码这样写对不对?

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/10 9:50:00 [显示全部帖子]

不用生成了,我看出不对了,dr是比赛积分表上的行变量,生成的数带不到对阵表上,所以还要定义对阵表上的行变量,对阵表上的数据生成后带进比赛积分表的。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/10 10:08:00 [显示全部帖子]

DataTables("对阵表").DataRows.Clear'清空窗口上table控件绑定的表格数据
Dim bsrq As WinForm.DateTimePicker = e.Form.Controls("rq")'定义窗口上的日期控件
Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称")'定义窗口上的棋赛名称控件
Dim di1 As String = qsmc.Value'定义窗口上的棋赛名称变量为字符型
Dim m As WinForm.TextBox = e.Form.Controls("第几轮")'定义窗口上的第几轮控件
Dim di2 As Integer = m.Value'定义窗口上的第几轮变量为整数型
Dim di3 As Date = bsrq.Value'定义窗口上的日期变量为日期型
'以上为定义窗口上的控件和变量,要不要这样定义,请指正。
Dim ds As DataRow =  DataTables("对阵表").SQLfind("棋赛名称 = '" & di1 & "' And 第几轮比赛 = '" & di2 & "'")'定义ds为对阵表上的棋赛名称和第几轮比赛等于窗口控件上的棋赛名称和第几轮比赛上的行
Dim dr As DataRow =  DataTables("比赛积分").SQLfind("棋赛名称 = '" & di1 & "'")'定义dr为当比赛积分表上的棋赛名称和第几轮比赛等于窗口控件上的棋赛名称和第几轮比赛上的行
Dim di4 As Integer = ds("桌号") = 0'定义di4为符合上面条件的行对应的桌号变量
'下面是根据基本信息表上的棋赛名称等于窗口控件上的棋赛名称,姓名不为空,身份列为参赛人,安桌号顺序生成以人数个数不安顺序随机生成编号,编号对应基本信息表上对应的姓名、编号,就是他应坐的桌号。
If dr Is Nothing Then
    di1 = qsmc.Value
    di2 = 1
    Dim ls As Integer = DataTables("基本信息").SQLGetValues("棋赛名称|姓名|身份", "棋赛名称 = '" & di1 & "' And 姓名 is not null and 身份 = '参赛人'").Count
    Dim ids1,ids2 As New List(of Integer) '用于存储洗牌前后的位置
    For i As Integer = 0 To ls -1 '准备初始的牌
        ids1.add(i)
    Next
    For i As Integer = 0 To ls - 1 '开始洗牌
        Dim idx As Integer = ids1(rand.Next(0,ids1.count))
        ids2.Add(idx)
        ids1.Remove(idx)
        Dim n = 2
        If ls > = n Then
            Dim ls1 As new List(Of String)
            Do While ls1.count < n
                Dim a = Rand.Next(0, ls)
                If ls1.Contains(a) = False Then
                    ls1.add(ids2(a))
                End If
            Loop
            di4 = di4 + 1
            ds("红方_编号") = ls1(0)
            ds("黑方_编号") = ls1(1)
        End If
    Next
Else

[此贴子已经被作者于2020/4/10 11:07:56编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/10 10:27:00 [显示全部帖子]

测试了上面这段代码,提示错误,什么意思?

图片点击可在新窗口打开查看此主题相关图片如下:4444.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛.foxdb

密码:888888

[此贴子已经被作者于2020/4/10 10:44:38编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/10 11:21:00 [显示全部帖子]

对阵表未执行按钮事件前就是空表,通过人数个数无序随机生成后生成编号,表事件根据编号引用姓名,空行不能这样定义那应怎写?

 回到顶部
总数 79 1 2 3 4 5 6 7 8 下一页