按周循环排班, 员工人数及每日值班人数可自定义.

class Schedule {

public $dayNumArr; // 每周中各天的值班人数,从周日(索引为0)到周六(索引为6)为一个循环周

public $employeeCount; // 定义员工人数

private $currEmployeeNum = 1; // 当前员工编号

/**

*

* @param unknown $employeeCount

* @param unknown $dayNumArr

*        每周各天所需人数的数组

*/

function __construct($employeeCount, $dayNumArr) {

$this->employeeCount = $employeeCount;

$this->dayNumArr = $dayNumArr;

}

/**

* 获得当天值班的员工名单

* @param unknown $day 星期

*/

function getEmployees($day) {

$result = "";

for($i = 1; $i <= $this->dayNumArr [$day]; $i ++) {

$result = $result . " ; " . $this->getAEmloyee ();

}

return $result;

}

/**

* 从员工队列里\数据库中取出一个

* @return string

*/

function getAEmloyee() {

if ($this->currEmployeeNum > $this->employeeCount) {

$this->currEmployeeNum = 1;

}

$result = "员工" . $this->currEmployeeNum;

$this->currEmployeeNum ++;

return $result;

}

/**

* 生成某月值班表

* @param unknown $month

* @param number $year

* @return string

*/

function monthChange($month, $year = 2014) {

// 某月的天数

$days = cal_days_in_month ( CAL_GREGORIAN, $month, $year );

// 一周中的一天,初始化为当月第一天的星期起始数

$aWeekDay = intval ( date ( "w", strtotime ( date ( "Y-n-1" ) ) ) );

$schedule = "";

for($i = 1; $i <= $days; $i ++) {

if ($aWeekDay == 6) {

$aWeekDay = 0;

} else {

$aWeekDay ++;

}

$employee = $this->getEmployees ( $aWeekDay );

$str = sprintf("%d-%s-%d(星期%s),值班员工:%s", $year, $month, $i, $this->weekFormat ($aWeekDay), $employee);

$schedule = $schedule . "\n" . $str;

}

return $schedule;

}

/**

* 把0-6装换为星期的日-六

* @param unknown $index

* @return string

*/

function weekFormat($index) {

switch ($index) {

case 0 :

$xingqi = "日";

break;

case 1 :

$xingqi = "一";

break;

case 2 :

$xingqi = "二";

break;

case 3 :

$xingqi = "三";

break;

case 4 :

$xingqi = "四";

break;

case 5 :

$xingqi = "五";

break;

case 6 :

$xingqi = "六";

break;

default :

echo "获取不到星期,有错误!";

}

return $xingqi;

}

}

运行实例:

$weekArr = array (

0 => 0,

1 => 1,

2 => 1,

3 => 1,

4 => 1,

5 => 1,

6 => 2

);

$employeeCount = 13;

$currEmployee = 1; // 从第1个员工开始

$s = new Schedule ( 13, $weekArr );

echo $s->monthChange ( 11, 2014 );

排班结果:

2014-11-1(星期日),值班员工:

2014-11-2(星期一),值班员工: ; 员工1

2014-11-3(星期二),值班员工: ; 员工2

2014-11-4(星期三),值班员工: ; 员工3

2014-11-5(星期四),值班员工: ; 员工4

2014-11-6(星期五),值班员工: ; 员工5

2014-11-7(星期六),值班员工: ; 员工6 ; 员工7

2014-11-8(星期日),值班员工:

2014-11-9(星期一),值班员工: ; 员工8

。。。

mysql设置值班表_简单的员工轮换值班表相关推荐

  1. excel合并多个工作表_简单快速多个Excel表合并成一个Excel表

    在工作中经常遇到需要把多个电子表合成一个电子表的情况,比如回收的多份调查表格,多个班级成绩合成全校成绩等问题.用传统的方法复制.粘贴耗时费力,还容易出错. 这些表格的特点是每个表格结构一致,需要按一定 ...

  2. mysql员工管理系统_简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    java java8 java开发 简单的员工管理系统(Mysql+jdbc+Servlet+JSP) 员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用my ...

  3. mysql设置索引长度_修改Mysql索引长度限制

    mysql 索引过长1071-max key length is 767 byte 问题 create table: Specified key was too long; max key lengt ...

  4. mysql账目表_数据库1(数据库、表及表数据、SQL语句)

    01数据库概念 A: 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来, 用户可以对数据库中的数据进行增加,修改,删除及查询操作. B: 什么是数据库管理 ...

  5. mysql为什么要分库_我们为什么要分库分表

    当一张表的数据达到几千万时,查询一次所花的时间会变长.这时候,如果有联合查询的话,可能会卡死在那儿,甚至把系统给拖垮. 而分库分表的目的就在于此:减小数据库的负担,提高数据库的效率,缩短查询时间.另外 ...

  6. mysql设置success信息_【原创】MySQL Cluster安装部署(Success)

    参考:http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html 安装要求 安装环境:centos6.3(X64) 软件名称 :mysq ...

  7. mysql 设置数据库只读_如何设置mysql数据库为只读

    直奔主题,mysql设置为只读后,无法增删改. 设置命令: mysql>set global read_only=1;    #1是只读,0是读写 mysql> show global v ...

  8. mysql 备份数据库结账_简单的结账功能(可用于各种结账)

    只要消费就要进行结账,自己写的结账功能. 这个也是要连接数据进行修改的,比如购买了东西,写入了数据库,结账结束后,自然要把数据库进行清空,将结账的钱写入数据库,进行保存. 和上一个随笔相连,同样做一个 ...

  9. mysql语句创建学生表_用sql语句创建学生表的方法是什么

    用sql语句创建学生表的方法是什么 发布时间:2020-08-25 11:53:33 来源:亿速云 阅读:123 作者:小新 小编给大家分享一下用sql语句创建学生表的方法是什么,希望大家阅读完这篇文 ...

最新文章

  1. 1.11 多异常捕获
  2. Codeforces 1323 div2题解ABC
  3. 计算机标准符合,计算机专利申请要符合哪些标准
  4. Codeforces Round #604 (Div. 2) E. Beautiful Mirrors 期望dp
  5. C代码的运行速度总是比Java快,对吧? 错误!
  6. ASP.NET常用代码
  7. 混沌思维模型实战课:如何发现击穿破局点的单一要素?
  8. PLSQL_数据泵导入导出数据Impdp/ Expdp(概念)
  9. linux 做磁盘配额
  10. mysql group by cube_group by、grouping sets、with rollup、with cube方法
  11. 推荐几款好用的MySQL开源客户端,建议收藏
  12. 聊聊量子计算机那些事
  13. excel教程自学网_企业Office办公软件自学视频教程word/excel/ppt 2003 2013 2016全套
  14. vue-pdf查看pdf文件及打印乱码问题处理
  15. 计算机网络 之 局域网
  16. 【Android面试题】准备、hr面试问题总结
  17. Verilog 实现千兆网UDP协议 基于88E1111--板级验证--增加ARP
  18. 新生活、新成长、新认知
  19. 移动软件开发-设计app首页
  20. windows 下安装软件乱码

热门文章

  1. ODBC方式与OCI方式对比
  2. MySQL ORDER BY 使用自定义排序顺序
  3. 解决黑马智慧物业管理系统项目搭建问题
  4. Windows应用商店保留Windows 7特色
  5. 数值越界mysql_Mysql数据读取越界问题
  6. 普通开普勒式望远镜光学设计1-初始结构设计选型与物镜像差校正
  7. 算法系统下的外卖平台:饿了么可选多等5分钟,美团无差别8分钟
  8. PHP 门面设计模式
  9. 今日金融词汇--- 股权质押
  10. 基于JAVA在线考试系统设计与实现 开题报告