开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1175|回复: 26
收起左侧

[已解决] 求一个关于花名轮流组合的例子

 关闭 [复制链接]
结帖率:95% (402/421)
发表于 2025-3-11 18:07:56 | 显示全部楼层 |阅读模式   内蒙古自治区乌海市
5精币
如何实现这样的组合?编辑框里有多行花名(例如7行,每行为一个花名),要求将全部人数进行分成按变量定义人数(假如分成4组),每组人数也是变量定义人数(例如:第一组2人、第二组2人、第三组2人,第四组1人),每周四轮流一遍(例如从周期为设定的开始日期2025.3.3日周四到结束日期2025.11.26),并按日期进行按行分别插入到高级表格里,求例子

补充内容 (2025-3-11 18:09):
http://www.chacuo.net/uploads/ch ... 8b67fdbb91fbfd0.jpg

最佳答案

查看完整内容

只改了数字1

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (3/3)

签到天数: 21 天

发表于 2025-3-11 18:07:57 | 显示全部楼层   陕西省西安市
test.e (960.47 KB, 下载次数: 1)

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:95% (402/421)

签到天数: 21 天

 楼主| 发表于 2025-3-11 18:53:56 | 显示全部楼层   内蒙古自治区乌海市
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 21 天

发表于 2025-3-11 19:07:43 | 显示全部楼层   陕西省西安市
去定制区定制吧
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 21 天

发表于 2025-3-11 19:32:25 | 显示全部楼层   陕西省西安市
test.e (961.66 KB, 下载次数: 2)
回复

使用道具 举报

结帖率:95% (402/421)

签到天数: 21 天

 楼主| 发表于 2025-3-11 21:09:53 | 显示全部楼层   内蒙古自治区乌海市
鱼老板 发表于 2025-3-11 19:32
补充内容 (2025-3-11 19:32):
没问题直接结算。下次这种需求你还是多弄点精币吧 ...

非常感谢老师帮助,技术和理解能力不错,能不能增加2个选择框(按日一次、按每周比如周四一次),当选择了按日时就按日轮流组合,当选择了每周四一次的话就是现在这样子的,期待老师,另外能不能弄成高级表格的?
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 21 天

发表于 2025-3-11 21:20:14 | 显示全部楼层   陕西省西安市
wh1234567 发表于 2025-3-11 21:09
非常感谢老师帮助,技术和理解能力不错,能不能增加2个选择框(按日一次、按每周比如周四一次),当选择 ...

按日  就是把增减时间那里做一下修改  现在是每次加一周  你改成一天就可以了  不会的看提示

高级表格你自己做替换就行了   没啥问题麻烦直接结算

补充内容 (2025-3-11 21:23):
这是答疑的   你的需求达成了   增加新的功能就再开新帖    如果要不停增加需求  可以隔壁定制区或者看我签名
回复

使用道具 举报

结帖率:95% (402/421)

签到天数: 21 天

 楼主| 发表于 2025-3-11 21:26:53 | 显示全部楼层   内蒙古自治区乌海市
鱼老板 发表于 2025-3-11 21:20
按日  就是把增减时间那里做一下修改  现在是每次加一周  你改成一天就可以了  不会的看提示

高级表格你 ...

呵呵呵,老师帮修改一下吧,一会采纳,因为现在采纳后没法在本帖回复了
回复

使用道具 举报

结帖率:0% (0/1)

签到天数: 1 天

发表于 2025-3-11 21:32:45 | 显示全部楼层   上海市上海市
[color=rgba(0, 0, 0, 0.9)]以下是使用易语言实现分组排班系统的完整解决方案,包含详细注释和代码示例:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
花名数组文本型0 
分组数据文本型0"0"  ' 二维数组存储分组结果
周四日期数组日期时间型0 

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
' 初始化高级表格
高级表格1.置列数 (2)
高级表格1.置行数 (1)
高级表格1.置表头 ("日期|值班人员")
' 设置示例数据
编辑框1.内容 = “玫瑰”#换行符“百合”#换行符“郁金香”#换行符“向日葵”#换行符“兰花”#换行符“菊花”#换行符“梅花”
子程序名返回值类型公开备 注
_按钮_生成_被单击  
变量名类 型静态数组备 注
开始日期日期时间型 
结束日期日期时间型 
分组人数整数型0
总人数整数型 
' 步骤1:获取输入参数
开始日期 = 到日期 (“2025-03-03”)
结束日期 = 到日期 (“2025-11-26”)
分组人数 = { 2, 2, 2, 1 }  ' 可改为从界面输入
' 步骤2:处理花名数据
花名数组 = 分割文本 (编辑框1.内容, #换行符, )
总人数 = 取数组成员数 (花名数组)
' 验证分组人数总和
如果真 (数组求和 (分组人数) ≠ 总人数)
信息框 (“分组人数总和与总人数不符!”, #错误图标, )
返回

' 步骤3:执行分组
分组处理 ()
' 步骤4:生成周四日期列表
生成周四日期数组 (开始日期, 结束日期)
' 步骤5:填充表格
填充排班表 ()
子程序名返回值类型公开备 注
分组处理  
变量名类 型静态数组备 注
i整数型 
当前索引整数型 
组号整数型 
当前索引 = 1
重定义数组 (分组数据, 假, 0)
计次循环首 (取数组成员数 (分组人数), 组号)
' 为每组创建子数组
重定义数组 (分组数据 [组号], 真, 分组人数 [组号])

计次循环首 (分组人数 [组号], i)
如果真 (当前索引 > 总人数)
跳出循环 ()

分组数据 [组号] [i] = 花名数组 [当前索引]
当前索引 = 当前索引 + 1
计次循环尾 ()
计次循环尾 ()
子程序名返回值类型公开备 注
生成周四日期数组  
参数名类 型参考可空数组备 注
开始日期日期时间型
结束日期日期时间型
变量名类 型静态数组备 注
当前日期日期时间型 
重定义数组 (周四日期数组, 假, 0)
当前日期 = 开始日期
判断循环首 (当前日期 ≤ 结束日期)
如果真 (取星期几 (当前日期) = 4)  ' 星期四=4
加入成员 (周四日期数组, 当前日期)
当前日期 = 增加时间 (当前日期, #日, 1)
判断循环尾 ()
' 如果开始日期不是周四,从第一个周四开始
如果真 (取数组成员数 (周四日期数组) = 0)
当前日期 = 开始日期
判断循环首 ()
当前日期 = 增加时间 (当前日期, #日, 1)
如果真 (取星期几 (当前日期) = 4)
加入成员 (周四日期数组, 当前日期)
跳出循环 ()

判断循环尾 ()

子程序名返回值类型公开备 注
填充排班表  
变量名类 型静态数组备 注
当前行整数型 
组号整数型 
i整数型 
高级表格1.清空 ()
高级表格1.置列数 (2)
高级表格1.置行数 (1)
高级表格1.置表头 ("日期|值班人员")
计次循环首 (取数组成员数 (周四日期数组), i)
组号 ( (i - 1)取数组成员数 (分组数据)) + 1  ' 循环使用分组

' 插入新行
高级表格1.插入行 ()
当前行 = 高级表格1.行数
高级表格1.置数据 (当前行, 0, 到文本 (周四日期数组 [i]))

' 合并显示分组人员
计次循环首 (取数组成员数 (分组数据 [组号]), j)
如果真 (j = 1)
高级表格1.置数据 (当前行, 1, 分组数据 [组号] [j])
高级表格1.置数据 (当前行, 1, 高级表格1.取数据 (当前行, 1)“、” + 分组数据 [组号] [j])

计次循环尾 ()
计次循环尾 ()
' 自动调整列宽
高级表格1.自动调整列宽 (0)
高级表格1.自动调整列宽 (1)
子程序名返回值类型公开备 注
数组求和  
参数名类 型参考可空数组备 注
数组整数型
变量名类 型静态数组备 注
整数型 
i整数型 
计次循环首 (取数组成员数 (数组), i)
和 = 和 + 数组 [i]
计次循环尾 ()
返回 ()


i支持库列表   支持库注释   
iext扩展界面支持库一
spec特殊功能支持库

#
实现原理说明:​数据结构设计:
花名数组:存储从编辑框读取的花名列表
分组数据:二维数组,第一维表示组号,第二维存储该组成员
周四日期数组:存储所有需要排班的周四日期


​关键算法:分组算法:根据预设的每组人数,按顺序分配花名到不同组
​日期生成算法:遍历开始到结束日期,筛选所有周四
​循环排班算法:使用取模运算实现分组循环 组号 = ((i-1) % 组数) + 1


​界面交互:
使用高级表格展示排班结果
第一列为日期,第二列为该天值班人员(多人用顿号分隔)


使用说明:​
在编辑框输入花名(每行一个)
在代码中修改分组人数数组(当前为{2,2,2,1})
点击生成按钮,查看排班结果


扩展功能建议:​
增加分组人数输入界面
添加导出Excel功能
实现节假日的自动跳过
添加分组校验提示功能
#
日期处理细节:​
  
' 获取下一个周四的优化算法
子程序名返回值类型公开备 注
获取下一个周四  
参数名类 型参考可空数组备 注
当前日期日期时间型
变量名类 型静态数组备 注
间隔天数整数型 
间隔天数 (4 - 取星期几 (当前日期)) % 7
间隔天数 = 选择 (间隔天数 ≥ 0, 间隔天数, 间隔天数 + 7)
返回 (增加时间 (当前日期, #日, 间隔天数))


#
高级表格优化技巧:​
  
' 设置表格样式
高级表格1.置列宽 (0, 100)  ' 日期列宽度
高级表格1.置对齐方式 (0, 0, 2, 高级表格1.行数, 1, #表格对齐方式_居中 )
' 添加斑马线效果
计次循环首 (高级表格1.行数, i)
如果真 (i % 2 = 0)
高级表格1.置背景颜色 (i, 0, #白色 )
高级表格1.置背景颜色 (i, 0, #浅 **)

计次循环尾 ()


[color=rgba(0, 0, 0, 0.9)]#该方案可实现动态分组排班需求,通过调整分组人数和日期范围,可适应不同场景的排班需求,楼主参考在!

回复

使用道具 举报

结帖率:95% (402/421)

签到天数: 21 天

 楼主| 发表于 2025-3-11 21:56:20 | 显示全部楼层   内蒙古自治区乌海市
阿狸阿狸 发表于 2025-3-11 21:32
以下是使用易语言实现分组排班系统的完整解决方案,包含详细注释和代码示例:
[e=1].版本 2
.支持库 iext

老师辛苦了,我这里一复制就乱了,可以上传文件吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表