Heim >Backend-Entwicklung >PHP-Tutorial >有哪位高手做过预约挂号医生排班的程序,给个思路

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

WBOY
WBOYOriginal
2016-06-13 12:03:392918Durchsuche

有谁做过预约挂号医生排班的程序,给个思路。
个一个在线预约挂号,在医生排排班的时候,可以自定义每个时间段可以预约的人数,当然时间段也可以自定义,我这里时间段是一个小时的,比如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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn