情况是这样的:共分四个班,但是三班倒,早、中、晚,其中早班和同一天的晚班是同一个人上,上完晚班可以休息2天半,例如:早班:张三
中班:李四
晚班:张三次日的早班:李四
次日的中班:赵五
次日的晚班:李四第三天的早班:赵五
第三天的中班:王六
第三天的晚班:赵五第四天的早班:王六
第四天的中班:张三
第四天的晚班:王六第五天的早班:张三
要求能够输入起始日期和结束日期自动生成排班表,想了几天都不知道该如何做,请大家给个思路,谢谢!
中班:李四
晚班:张三次日的早班:李四
次日的中班:赵五
次日的晚班:李四第三天的早班:赵五
第三天的中班:王六
第三天的晚班:赵五第四天的早班:王六
第四天的中班:张三
第四天的晚班:王六第五天的早班:张三
要求能够输入起始日期和结束日期自动生成排班表,想了几天都不知道该如何做,请大家给个思路,谢谢!
解决方案 »
- 求cxGrid的一些用法
- 难道不适合Delphi三层开发?欢迎大家讨论,拍砖
- 如何在一张图片上添加别人看不见的标志,同时在其它的图片编辑器里面编辑后还能保存下来?
- 【紧急求助】这条分页查询SQL有错吗?
- 郁闷的问题,进来提意见的就有分!
- 帮帮我啊 我急死了 [Error] Cuboid.pas(77): Statement expected but 'PROCEDURE' found [Fatal Error] Shape.pas(28): Could not compil
- 请问TValueListEditor::RestoreCurrentRow()如何使用?
- 请问要在RichEdit里实现关键字高亮度显示应如何做呢?
- ERP系统的维护和服务费是怎么算的?
- 公司想做一个图书管理系统作为产品,请各位给点意见
- 关于 DELPHI 问题 继续学有前途吗? 信任提问
- dll 调用这个checkuser 的窗体退出时报地址引用错误。
你先安排前4天的顺序,就像你举的例子:
早班:张三
中班:李四
晚班:张三 次日的早班:李四
次日的中班:赵五
次日的晚班:李四 第三天的早班:赵五
第三天的中班:王六
第三天的晚班:赵五 第四天的早班:王六
第四天的中班:张三
第四天的晚班:王六 然后按组刚才的样子分一下组,例如:
第1组: 早班:张三
中班:李四
晚班:张三 第2 组: 早班:李四
中班:赵五
晚班:李四
第3组:
早班:赵五
中班:王六
晚班:赵五
第4组
早班:王六
中班:张三
晚班:王六 然后我们就可以,按照9月1号第1组,9月2号第2组,9月3号第3组,9月4号第4组,9月5号第1组......依次类推就可以了
当然用程序的话可以这样:
例如我们输入了起始日期是9月1号,结束日期是9月21号,并且在窗口中有一个memo控件,那么
anow:=strtodate('2007-9-1');
athen:=strtodate('2007-9-21');
for i:=0 to DaysBetween(anow,athen) do
begin
str:=datetostr(anow+1)+':'+#10#13;
case i mod 4 of
0:str:=str+' 早班:张三'+#10#13+'中班:李四'+#10#13+'晚班:张三';
1:str:=str+'早班:李四'+#10#13+'中班:赵五'+#10#13+' 晚班:李四 ';
2:str:=str+'早班:赵五'+#10#13+'中班:王六'+#10#13+'晚班:赵五';
3:str:=str+'早班:王六'+#10#13+'中班:张三'+#10#13+'晚班:王六 ';
end;
memo1.lines.add(str);
end;好了,加分吧!
在窗口上加一个memo控件memo1,两个DateTimePicker控件,一个测试按钮,在测试按钮双击事件中添加如下代码即可:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,DateUtils, ComCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
str:string;
begin
for i:=0 to DaysBetween(self.DateTimePicker1.Date,self.DateTimePicker2.Date) do
begin
str:=datetostr(self.DateTimePicker1.Date+i)+ ': '+#10#13;
case i mod 4 of
0:str:=str+ ' 早班:张三 '+#10#13+ '中班:李四 '+#10#13+ '晚班:张三 ';
1:str:=str+ '早班:李四 '+#10#13+ '中班:赵五 '+#10#13+ ' 晚班:李四 ';
2:str:=str+ '早班:赵五 '+#10#13+ '中班:王六 '+#10#13+ '晚班:赵五 ';
3:str:=str+ '早班:王六 '+#10#13+ '中班:张三 '+#10#13+ '晚班:王六 ';
end;
memo1.lines.add(str);
end; end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,DateUtils, ComCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure madegroup(a,b,c,d:string);
private
{ Private declarations }
group1,group2,group3,group4:string;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.madegroup(a,b,c,d:string);
begin
group1:='早班:'+a+' 中班:'+b+' 晚班:'+a;
group2:='早班:'+b+' 中班:'+c+' 晚班:'+b;
group3:='早班:'+c+' 中班:'+d+' 晚班:'+c;
group4:='早班:'+d+' 中班:'+a+' 晚班:'+d;
end;procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
str:string;
begin
memo1.Clear;
madegroup('张三','李四','赵五','王六');
for i:=0 to DaysBetween(self.DateTimePicker1.Date,self.DateTimePicker2.Date) do
begin
str:=datetostr(self.DateTimePicker1.Date+i)+ ': '+#10#13;
case i mod 4 of
0:str:=str+ group1;
1:str:=str+ group2;
2:str:=str+ group3;
3:str:=str+ group4;
end;
memo1.lines.add(str);
end; end;end.