.net 值班表 不循环  有五个人{A,B,C,D,E} 一人值班一天,  A只要到星期一值班,其他四个人除了星期一以外每天循环值班,循环一年

解决方案 »

  1.   

    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);
                    }
                }
      

  2.   

     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]);
                        
                    }
                }
            }