欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-18 17:57:16
...
有谁做过预约挂号医生排班的程序,给个思路。
个一个在线预约挂号,在医生排排班的时候,可以自定义每个时间段可以预约的人数,当然时间段也可以自定义,我这里时间段是一个小时的,比如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
有哪位高手做过预约挂号医生排班的程序,给个思路

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频