注册 登录
编程论坛 ASP技术论坛

领导给了一个难题,我该怎么解决?<已解决>

cbtxgt 发布于 2008-08-28 21:27, 1088 次点击
请教各位:
安排四个人,每周一到周五轮流值班,如下
一 二 三 四 五 六 日 一 二 三 四 五 六 日 一。。。
A B C D A     B C D A B     C。。。
这个怎么办?
〈方法在11楼〉

[[it] 本帖最后由 cbtxgt 于 2008-8-29 11:48 编辑 [/it]]
13 回复
#2
hmhz2008-08-28 23:25
程序代码:

<%
abc=split("A|B|C|D|A|B|C|D","|")
%>
<table border="1" width="50%" cellspacing="0" cellpadding="0" style="border-collapse:collapse;" bordercolor="#C0C0C0">
<tr align="center">
<td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td><td>日</td>
</tr>
<%for i=0 to 3%>
<tr align="center">
<%for j=0 to 6%>
<td><%if j<5 then%><%=abc(j+i)%><%else%>&nbsp;<%end if%></td>
<%next%>
</tr>
<%next%>
</table>
#3
cbtxgt2008-08-29 08:51
谢谢版主的热心解答
版主给出的是一个表格,怪我没有把意思说明白,我的意思是利用数据库查询,周一到周五按照要求从四个人中轮流选一个出来值班,周六和周日不安排,并在网页是实时显示出值班人的名字来。以前是五个人好办,现在变成了四个人,我就整不来了,希望各位帮我一下!
再次感谢!
#4
dxformat2008-08-29 09:23
用循环嘛
#5
hmhz2008-08-29 09:29
无论你是显示哪一个人出来,你都必须先把所有人的名字都取出来然后按照顺序编排
因为必须要循环才能在规定时间显示某人

不是到某个时间才去读取某人的名字,这样程序是无法知道要读取哪个人的名字
再说这样也不科学

数据库控制,可以在一个表单里这样填写
张华|曹飞|黄健|赵言
这样也方便顺序之间的更换
如果写成一个用户添加成一个ID的话,以后更换循序就麻烦了,因为程序如果做到在某时间读取某人的名字必须按照某个规律来,比如按照ID的循序排,很麻烦的,你还必须知道某用户的ID号是多少

反正总而言之,只有按照我那样编排才是最方便,最直接的
#6
cbtxgt2008-08-29 09:49
我是一个刚刚入门的,不能领会版主的意思,只想在一天中只显示出一个人的名字,比如今天是周一,就只显示出A的名字来,怎么解决?谢谢!能不能给我一个完整的代码啊?

[[it] 本帖最后由 cbtxgt 于 2008-8-29 09:51 编辑 [/it]]
#7
2008-08-29 10:13
应该是对比天数后,天数差取模

如从2008-08-08开始的

<%
dim a(3),d,s
a(0)="a"
a(1)="b"
a(2)="c"
a(3)="d"

d="2008-08-20"
s=datediff("d",d,date())

s= (s - (s \ 7) * 2) mod 4

response.write a(s)

%>

[[it] 本帖最后由 BOSS级菜鸟 于 2008-8-29 10:16 编辑 [/it]]
#8
cbtxgt2008-08-29 11:07
谢谢楼上给出的建议,可是结果是每天都有一个人啊,我的要求是每周六和周日不安排。
#9
2008-08-29 11:16
我没安排啊,这二天减出去了。
#10
2008-08-29 11:21
如果不是从星期一开始排的,就要把星期几的差数加上S.

双休日显示的是错的,但没关系,没人上班,1-5是对的就行了,你可以加个星期几的判断,让双休日不显示就行了。

[[it] 本帖最后由 BOSS级菜鸟 于 2008-8-29 11:29 编辑 [/it]]
#11
cbtxgt2008-08-29 11:31
非常谢谢楼上的朋友,用你的我试了一下,周六也有,我加了一个条件:
<%
dim a(3),d,s,wk
a(0)="a"
a(1)="b"
a(2)="c"
a(3)="d"
wk=(weekday(now()))
d="2008-08-25"
s=datediff("d",d,date())
if (wk>1 and wk<7) then
s= (s - (s \ 7) * 2) mod 4

response.write a(s)
end if
%>
调整了一下时间进行验证,8.25为a,8.26为b,8.27为c,8.28为d,8.29为a,8.30,8.31没有显示,9.1日为b,看来是成功了,再次感谢你!
顺便问一下,如果人数有改变,结果会不会有变化?

[[it] 本帖最后由 cbtxgt 于 2008-8-29 11:39 编辑 [/it]]
#12
Msconfighyy2008-08-29 13:42
看着蒙
#13
2008-08-29 14:10
注意d的日期要是星期一,因为是从星期一开始的,

人数有变化只用改数组就行了,如下

s= (s - (s \ 7) * 2) mod (ubound(a,1) + 1)
#14
yms1232008-08-29 20:29
VB有取得当前日期是星期几的函数Weekday
这个函数需要一个日期变量作参数比如取得当前日期是星期几
Response.Write Weekday(date())
1