.net 值班表 不回圈 有五個人{A,B,C,D,E} 一人值班一天, A只要到星期一值班,其他四個人除了星期一以外每天回圈值班,回圈一年
uj5u.com熱心網友回復:
有點難度





uj5u.com熱心網友回復:
List<string> users = new List<string> { "B", "C", "D", "E" };List<string> usersTemp = new List<string>();
Random rd = new Random();
for (int i = 0; i < 365; i++)
{
DateTime date = DateTime.Now.AddDays(i);
int day = (int)date.DayOfWeek;
if (day == 1)
{
// A值班
}
else if (day > 1 && day < 6)
{
if (usersTemp.Count == 0)
{
usersTemp.AddRange(users);
}
// 取亂數
int n = rd.Next(0, usersTemp.Count - 1);
// 獲取值班人
string user = usersTemp[n];
// 移除已經排版的
usersTemp.RemoveAt(n);
}
}
uj5u.com熱心網友回復:
既然上限定為一年 所以 資料量并不大直接生成365天資料 的陣列 移除周一 進行排班 在合并 通過時間排序
搞定
uj5u.com熱心網友回復:
public static void aa(){
List<string> users = new List<string> { "B", "C", "D", "E" };
List<string> usersTemp = new List<string>();
List<string>valueList=new List<string>();
bool isOne = true;
for (int i = 0; i < 365; i++)
{
DateTime date = DateTime.Now.AddDays(i);
int day = (int)date.DayOfWeek;
if (day == 1)
{
// A值班
usersTemp.Add("a");
//第一次之后把陣列的第一個值放到最后面
if (!isOne)
{
string value = users[0];
users.RemoveAt(0);
users.Add(value);
}
}
else if (day > 1 && day < 6)
{
isOne = false;
string value = users[0];
usersTemp.Add(users[day - 2]);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/92034.html
標籤:C#
