注册 登录
编程论坛 VB6论坛

VB值班软件程序

事业男儿 发布于 2018-05-08 03:49, 2511 次点击
张某、刘某、王某在同一天不同时段工作,一周转一次班,比如做了早班就转到夜班,做了夜班的就转到中班,做了中班的就转到早班。3班倒的班次是这样定义的,早班:8:00-16:00 中班:16:00-0:00 夜班:0:00-8:00 ,需要软件任何时候判断这三个人在做什么。比如8:00-16:00期间就显示 张某在上班,王某刘某在休息。每三周就循环一次。排班如下图
只有本站会员才能查看附件,请 登录
6 回复
#2
xzlxzlxzl2018-05-08 07:40
记一个起始日期和姓名顺序就可以了,数据库都不需要,使用日期计算函数,实现起来很简单的。
#3
事业男儿2018-05-08 08:23
回复 2楼 xzlxzlxzl
xzlxzlxzl版主 麻烦你写个代码!

我下面这个只是执行了顺序循环,要实现每周换个班,循环3周 底周才是第一周的表 还要判断某个时段谁在干啥,有点难,开始想到用VB读取本周是第今年第19周,来判断,那个好像还要难一点。
Option Explicit

Private Sub Form_Load()
Dim startDate
Dim nowDate
Dim interval As Long
Dim dutyMan As Integer
Dim order(0 To 2) As String
order(0) = "【张某】"
order(1) = "【王某】"
order(2) = "【刘某】"
startDate = DateSerial(2018, 5, 8)
nowDate = Date
interval = nowDate - startDate
dutyMan = interval Mod 3
Label1.Caption = "今天是" & Date & ",该" & order(dutyMan) & "值班"

[此贴子已经被作者于2018-5-8 08:37编辑过]

#4
wds12018-05-08 17:05
Private Sub Command1_Click()
  startDate = CDate("2018-5-8") '早中晚 张刘王
  Enddate = CDate(InputBox("请输入日期(yyyy-mm-dd):", "输入框"))
  temp = Abs(Enddate - startDate) '于标准日期相差的天数
  bz = (temp \ 7) Mod 3 '求周数
  Select Case bz
  Case 0
    Debug.Print Enddate & "【早班:张某】" & "【中班:刘某】" & "【晚班:王某】"
  Case 1
    Debug.Print Enddate & "【早班:刘某】" & "【中班:王某】" & "【晚班:张某】"
  Case 2
    Debug.Print Enddate & "【早班:王某】" & "【中班:张某】" & "【晚班:刘某】"
  End Select
 End Sub
#5
ZHRXJR2018-05-08 19:01
我认为比较简单,使用几个数组、几个变量将解决问题了。
只有本站会员才能查看附件,请 登录

这个是排了52个星期的结果。
源程序在附件中。
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2018-5-8 19:29编辑过]

#6
事业男儿2018-05-09 09:17
实在是太感谢了,谢谢所有支持关心我的老师们!
#7
q5520852012021-06-28 00:27
回复 5楼 ZHRXJR
那如果有指定休假的怎么排班呢
1