改程序应该怎么设计?
程序的效果是,,在数据库中有一个姓名字段,,在前台,网页上,显示今天值班的人名,,当第2天的8:30以后,显示下一个人命,这样循环下去,当几天以后人名都显示完了,,再显示第一个人名,程序应该怎么样设计,还有数据库应该怎么样设计比较好呢?等回复~~ 问题点数:0、回复次数:18Top
1 楼wflaugh(闪)回复于 2004-08-03 07:17:34 得分 0
?Top
2 楼ycc2008(皮皮)回复于 2004-08-03 07:36:33 得分 0
有个时间字段,记录每个人的值日时间,每天的8:30的时候与数据库里的时间字段比较,得到人名Top
3 楼wflaugh(闪)回复于 2004-08-04 19:17:56 得分 0
好象这个方法不行吧Top
4 楼lay993132001(林生)回复于 2004-08-04 19:26:38 得分 0
分配给每个人具体的值班时间。。Top
5 楼fantasydog(百里怜雪)回复于 2004-08-04 20:03:47 得分 0
做一个数组,name[size],size为人数。
比较时间和初始日期,
8:30前:currentName = name[(nowDay-1-startDay)%size]
8:30后:currentName = name[(nowDay-startDay)%size]
或者你也可以做一个循环链表,显示当前节点的人名。每天8:30时触发一个事件,将节点向后移一位Top
6 楼lzyang(梁祝)回复于 2004-08-04 20:34:04 得分 0
不用想太多,当打开该网页时根据服务器具体时间判断应该显示哪个人名即可。Top
7 楼softchao(小款※人生就像大便, 往往努力了半天却只迸出几个屁 )回复于 2004-08-04 21:08:06 得分 0
根据服务器具体日期和时间判断应该显示哪个人名即可
Top
8 楼softchao(小款※人生就像大便, 往往努力了半天却只迸出几个屁 )回复于 2004-08-04 21:13:38 得分 0
当然方法有很多的 你也可以在数据库里面这样处理
一个星期 七个人 一个人一个ID 每执行一次后显示ID+1的人名
也就是每天8:30执行一次 也可以给没间隔多长时间换个人名
EG:
--WAITFOR
--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee
--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employeeTop
9 楼tnt8csdn2000(琥珀雨田)回复于 2004-08-04 22:24:40 得分 0
业务逻辑应该留在业务层,不应该在数据库中判断。当ID+1没有数据的时候选择ID=1的。Top
10 楼wy_rover(wy_rover)回复于 2004-08-05 02:15:21 得分 0
table 值班日期表 tablTable1
--------
ID
BeginTime
EndTime
UserID
-------------------
table 人员信息表 tblUser
-------------------
UserID
UserName
DateTime dt = System.DateTime.Now;
把dt传入到sql中,
SELECT UserName FROM tblUser WHERE tblUser.UserID = tblTable1.UserID AND dt > BeginTime AND dt < EndTimeTop
11 楼wy_rover(wy_rover)回复于 2004-08-05 02:16:30 得分 0
dt > Table1.BeginTime AND dt < Table1.EndTimeTop
12 楼wflaugh(闪)回复于 2004-08-21 15:26:06 得分 0
还有没有更好的方法?请大家帮帮忙~~Top
13 楼wflaugh(闪)回复于 2004-08-21 15:38:38 得分 0
因为人员数还有可能增加,,还有就是怎么样用程序控制每天的固定一个时间触发一个事件?我用c#语言的~~谢谢回复Top
14 楼fantasydog(百里怜雪)回复于 2004-08-21 22:47:39 得分 0
System.Timers timer=new System.Timers.Timer();
timer.Elapsed += new System.Timers.ElapsedEventHandler(YourFunction);
timer.Interval = 24*60*60*1000;
timer.start();
Top
15 楼wflaugh(闪)回复于 2004-08-22 00:55:25 得分 0
fantasydog(百里怜雪) :
System.Timers timer=new System.Timers.Timer();
timer.Elapsed += new System.Timers.ElapsedEventHandler(YourFunction);
timer.Interval = 24*60*60*1000;
timer.start();
这段代码是从什么时候开始触发呢?起始时间应该怎么设置呢?比如,我想每天的8:30自动刷新一边数据库~~谢谢你的回复!Top
16 楼gaolin(木木)回复于 2004-08-24 14:10:41 得分 0
很简单,就是在数据库里面添加一个从1开始逐步递增的id字段和一个标志字段,之日的姓名的标志设置为真,到了下个值日时间段去查询数据库,找到上次值日的姓名(通过标志位状态查找),如果在该姓名的id上增加一位,然后输入增加一位id的姓名即可,如果到了最大后再返回到id位1处从头开始Top
17 楼fantasydog(百里怜雪)回复于 2004-08-24 15:40:21 得分 0
你可以在某一天的8:30起动这个程序阿,然后它每24小时自动执行一次。
或者:
System.DateTime now = System.DateTime.Now.AddDays(1);
System.DateTime dt = new DateTime(now.Year,now.Month,now.Day,15,50,0,0);
System.TimeSpan timeSpan =dt-System.DateTime.Now;
System.TimeSpan ts = new TimeSpan(1,0,0,0,0);
if(timeSpan.Days>0)
timeSpan = timeSpan.Subtract(ts);
System.Threading.Thread.Sleep(timeSpan);
timer.start();Top
18 楼fantasydog(百里怜雪)回复于 2004-08-24 15:41:06 得分 0
错了,第二行那个参数15和50改成8和30Top




