[討論] 醫院的排隊叫號機怎麼設計比較好
看板Soft_Job (軟體人)作者empireisme (empireisme)時間1年前 (2023/06/06 01:24)推噓40(40推 0噓 177→)留言217則, 45人參與討論串1/2 (看更多)
如題
這不是作業,也不是我公司的工作(小弟在數位廣告業當碼農,在台北扣完勞健保大概快四萬QQ)
是剛好有一次去醫院看病的時候想到,醫院的排隊叫號機
好像剛好可以是一個小system design的題目 ?
(小弟非本科年資快兩年,但平常幾乎都在CRUD跟設計TABLE還有接第三方API,所以以下內容
沒意外應該會有很多不太對的地方,希望可以海涵QQ)
就我的理解,醫院的排隊叫號機有以下規則
1.首先是可以線上掛號(checkInOnline),這邊很簡單,反正就是先掛號的優先看病,我這邊為了簡化先不考慮
現場掛號這件事,也假設只有一間醫院,以及一個門診,門診也沒有其他
2.可以過號(skipNumber),也就是現場叫號(callNumber)的時候,如果病人不在,那麼就把他
跳掉,直到他又現場註冊(checkInAgain),重新插入健保卡的時候,排隊叫號機才會
每看三個線上掛號的病人就去看現場註冊的病人,當然當現場線上掛號的病人時,排隊叫號機
就會一直去叫被過號的病人
上面就是我粗淺的規則
然後下面是我的思路:
我決定用物件來區分行為,因為事情好像沒有很複雜所以不引入Interface
我決定區分兩個class分別是 Patient 和 Hospital
Patient有兩個函數分別是
1.checkInOnline
2.checkInAgain (要有基本的防呆,只有被過號了,才能現場註冊,另外看過醫生的話,也不能再次註冊)
這兩個函數都argument都是 Hospital物件
Hospital我一開始有想到優先佇列,只是後來覺得好像直接設成兩個Queue事情好像
比較簡單?
我決定Hosptital要有這幾個Member
int skipNumber=3;
int skipNumberNow=0;
Queue<Patient> normalQueue= new LinkedList<>();
Queue<Patient> skipQueue= new LinkedList<>();
並且要有下面兩個函數
1.callNumber()
2.skipNumber()
說了這麼多,這是我的github,我覺得我真的code寫得很亂很爛
https://reurl.cc/nDEYG8
懶得看github的人
我直接貼code
https://imgur.com/jKRcBmK


我這邊為了各種防呆,宣告了一堆 flag
感覺程式碼沒有寫的很好
想請問各位先進,有沒有甚麼可以改善的方法,或是思路
謝謝各位年薪三百萬
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.13.10 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1685985884.A.451.html
→
06/06 01:47,
1年前
, 1F
06/06 01:47, 1F
→
06/06 01:47,
1年前
, 2F
06/06 01:47, 2F
推
06/06 01:57,
1年前
, 3F
06/06 01:57, 3F
推
06/06 02:31,
1年前
, 4F
06/06 02:31, 4F
推
06/06 02:34,
1年前
, 5F
06/06 02:34, 5F
→
06/06 02:34,
1年前
, 6F
06/06 02:34, 6F
→
06/06 02:34,
1年前
, 7F
06/06 02:34, 7F
推
06/06 02:58,
1年前
, 8F
06/06 02:58, 8F
→
06/06 02:58,
1年前
, 9F
06/06 02:58, 9F
→
06/06 02:59,
1年前
, 10F
06/06 02:59, 10F
→
06/06 02:59,
1年前
, 11F
06/06 02:59, 11F
→
06/06 03:00,
1年前
, 12F
06/06 03:00, 12F
→
06/06 03:01,
1年前
, 13F
06/06 03:01, 13F
→
06/06 03:01,
1年前
, 14F
06/06 03:01, 14F
推
06/06 03:05,
1年前
, 15F
06/06 03:05, 15F
→
06/06 03:05,
1年前
, 16F
06/06 03:05, 16F
→
06/06 03:05,
1年前
, 17F
06/06 03:05, 17F
→
06/06 08:03,
1年前
, 18F
06/06 08:03, 18F
→
06/06 08:09,
1年前
, 19F
06/06 08:09, 19F
推
06/06 08:14,
1年前
, 20F
06/06 08:14, 20F
→
06/06 08:14,
1年前
, 21F
06/06 08:14, 21F
→
06/06 08:14,
1年前
, 22F
06/06 08:14, 22F
→
06/06 08:14,
1年前
, 23F
06/06 08:14, 23F
→
06/06 08:14,
1年前
, 24F
06/06 08:14, 24F
推
06/06 08:27,
1年前
, 25F
06/06 08:27, 25F
→
06/06 08:27,
1年前
, 26F
06/06 08:27, 26F
→
06/06 08:27,
1年前
, 27F
06/06 08:27, 27F
→
06/06 08:27,
1年前
, 28F
06/06 08:27, 28F
→
06/06 08:29,
1年前
, 29F
06/06 08:29, 29F
這樣會有share resource的問題嗎
還是我想太多了
你的pq 是怎麼決定順序的阿
推
06/06 08:41,
1年前
, 30F
06/06 08:41, 30F
→
06/06 08:42,
1年前
, 31F
06/06 08:42, 31F
推
06/06 09:08,
1年前
, 32F
06/06 09:08, 32F
→
06/06 09:39,
1年前
, 33F
06/06 09:39, 33F
→
06/06 09:39,
1年前
, 34F
06/06 09:39, 34F
推
06/06 09:40,
1年前
, 35F
06/06 09:40, 35F
→
06/06 09:48,
1年前
, 36F
06/06 09:48, 36F
→
06/06 09:57,
1年前
, 37F
06/06 09:57, 37F
→
06/06 09:57,
1年前
, 38F
06/06 09:57, 38F
還有 139 則推文
還有 2 段內文
→
06/07 23:42,
1年前
, 178F
06/07 23:42, 178F
→
06/08 01:19,
1年前
, 179F
06/08 01:19, 179F
→
06/08 01:19,
1年前
, 180F
06/08 01:19, 180F
→
06/08 01:19,
1年前
, 181F
06/08 01:19, 181F
→
06/08 01:19,
1年前
, 182F
06/08 01:19, 182F
→
06/08 01:23,
1年前
, 183F
06/08 01:23, 183F
→
06/08 01:23,
1年前
, 184F
06/08 01:23, 184F
→
06/08 01:23,
1年前
, 185F
06/08 01:23, 185F
→
06/08 01:23,
1年前
, 186F
06/08 01:23, 186F
→
06/08 01:24,
1年前
, 187F
06/08 01:24, 187F
→
06/08 01:26,
1年前
, 188F
06/08 01:26, 188F
→
06/08 01:27,
1年前
, 189F
06/08 01:27, 189F
→
06/08 01:28,
1年前
, 190F
06/08 01:28, 190F
→
06/08 01:29,
1年前
, 191F
06/08 01:29, 191F
→
06/08 01:29,
1年前
, 192F
06/08 01:29, 192F
→
06/08 01:30,
1年前
, 193F
06/08 01:30, 193F
→
06/08 01:33,
1年前
, 194F
06/08 01:33, 194F
→
06/08 01:33,
1年前
, 195F
06/08 01:33, 195F
→
06/08 01:33,
1年前
, 196F
06/08 01:33, 196F
→
06/08 01:33,
1年前
, 197F
06/08 01:33, 197F
→
06/08 01:34,
1年前
, 198F
06/08 01:34, 198F
→
06/08 01:38,
1年前
, 199F
06/08 01:38, 199F
→
06/08 01:40,
1年前
, 200F
06/08 01:40, 200F
→
06/08 01:45,
1年前
, 201F
06/08 01:45, 201F
→
06/08 01:45,
1年前
, 202F
06/08 01:45, 202F
→
06/08 01:49,
1年前
, 203F
06/08 01:49, 203F
→
06/08 02:02,
1年前
, 204F
06/08 02:02, 204F
→
06/08 02:02,
1年前
, 205F
06/08 02:02, 205F
→
06/08 09:06,
1年前
, 206F
06/08 09:06, 206F
推
06/08 23:25,
1年前
, 207F
06/08 23:25, 207F
→
06/08 23:25,
1年前
, 208F
06/08 23:25, 208F
→
06/08 23:25,
1年前
, 209F
06/08 23:25, 209F
→
06/08 23:25,
1年前
, 210F
06/08 23:25, 210F
推
06/09 16:08,
1年前
, 211F
06/09 16:08, 211F
→
06/10 00:55,
1年前
, 212F
06/10 00:55, 212F
→
06/10 15:23,
1年前
, 213F
06/10 15:23, 213F
→
06/10 15:23,
1年前
, 214F
06/10 15:23, 214F
→
06/11 23:18,
1年前
, 215F
06/11 23:18, 215F
→
06/12 10:03,
1年前
, 216F
06/12 10:03, 216F
→
06/12 10:06,
1年前
, 217F
06/12 10:06, 217F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
Soft_Job 近期熱門文章
39
123
PTT職涯區 即時熱門文章