Maison >développement back-end >tutoriel php >有哪位高手做过预约挂号医生排班的程序,给个思路

有哪位高手做过预约挂号医生排班的程序,给个思路

WBOY
WBOYoriginal
2016-06-13 12:03:392918parcourir

有谁做过预约挂号医生排班的程序,给个思路。
个一个在线预约挂号,在医生排排班的时候,可以自定义每个时间段可以预约的人数,当然时间段也可以自定义,我这里时间段是一个小时的,比如8:00-9:00.......17:00-18:00,一天8个小时分为8个时间段。排班时间是星期一到星期日。哪位给个具体思路,谢谢了。
------解决方案--------------------
首先用一個數組記錄時間段及每個時間段最多可以預約的人數,或者用數據表也可以。
例如每個時間段只能預約20個人。
$t = array(
     array('08:00', '09:00', 20),
      ....
     .....
     array('17:00', '18:00', 20),
);

然後,用一張表記錄預約人數,大概字段如下
id        自增
mid    用戶id 或什麼唯一身份驗證的東西,或email也可以,用來檢查是否重複預約用。
date   日期
t          時間段標識,用數組標識也可
num  預約人數

當有用戶要預約,先判斷是否在允許預約時間段內,如果是,再判斷,該時間段內是否已經預約滿,如未滿則增加一條記錄。

例如有一個用戶在8:00-9:00 這個時間段預約,可以這樣判斷。
select num from table where date='2014-06-10' and t=0;

如返回的num小於 20,則insert。

如果要加上取消預約功能,可以也設一個取消預約限期,起碼在9:00前10分鐘不能取消,這樣較好。大概思路是這樣。




------解决方案--------------------
如果星期一和星期日等的可以預約時間不同,那$t這個數組則再分多一層做星期的key。如果是這樣建議做成數據表,方便管理。

$t = array(
   'MON' => array(
     array('08:00', '09:00', 20),
      ....
     .....
     array('17:00', '18:00', 20),
  ),
  'TUE' => array(

  )
);
------解决方案--------------------
既然复杂就用数据表来做,方便管理

数据表结构如下:

doctor 表,记录医生信息
doctor_id 医生id   PK
name      医生名称

timeline 表,记录每个医生每天每个时段的能预约的信息,这个需要每隔一段时间做一次新增和删除,新增加新日期预约时间,删除过期的.星期没有用了,因为直接用日期来定比较好。
tid        timeline id         PK
doctor_id  医生id              FK
date       日期
quota      允许预约的人数
starttime  时段开始语          例8:00
endtime    时段结束            例9:00
status     该时段是否允许预约  0 否 1允许

order 预约表,记录用户预约的情况
order_id   预约id PK
userid     用户id -> 会员系统这个你自己想 FK
tid        预约了的时段id                 FK
addtime    预约时间

流程:
首先先输入doctor 和 timeline 数据,如下

共有两个医生
doctor_id name
1         d1
2         d2

在2014-06-11这天的班表,doctor1别8个时间段全满,doctor2 则只有6个时间段需要工作
tid doctor_id  date        quota starttime endtime status
1       1       2014-06-11   10     08:00    09:00     1
2       1       2014-06-11   10     09:00    10:00     1
3       1       2014-06-11   10     10:00    11:00     1
4       1       2014-06-11   12     11:00    12:00     1
5       1       2014-06-11   12     14:00    15:00     1
6       1       2014-06-11   8        15:00    16:00     1
7       1       2014-06-11   10     16:00    17:00     1
8       1       2014-06-11   5        17:00    18:00     1
9       2       2014-06-11   10      08:00    09:00     1
10     2       2014-06-11   10      09:00    10:00     1
11     2       2014-06-11   10     10:00    11:00     1

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn