Ragic 部落格
企業電子化的專家 Ragic 教你如何利用各種軟體、
雲端服務讓公司快速升級!
加入 Ragic 企業電子化的行列!
雲端工作術
各類應用示範
案例故事
逃離惡夢
關於 Ragic
Facebook X YouTube
雲端資料庫
部落格
關於Ragic
雲端工作術
各類應用示範
案例故事
逃離惡夢
關於 Ragic

自己做「圖書館借還系統」(免寫程式/能管會員/查書況/自動算逾期金)

作者:Lillian Huang

說明:本篇教學文中製作出來的「借還書系統」現在已經可以在 Ragic 應用商店中直接安裝囉!可以到功能捷徑 > 應用商店 > 生活應用 > 找到「借還書系統」範本直接安裝,相關說明請參考這篇文章

談到「圖書館」這個詞,我以前想到的,多半是大廳挑高、仰之彌高,藏書量動輒幾十萬,好多年沒踏進去的那種學校 / 政府圖書館。

不過後來我發現,其實很多社區、基金會、學校班級,甚至企業,都有自己的圖書館 / 圖書室 / 共用書庫,依照組織成員的需求,供給最適當的知識養份。

讓我發現這件事的,就是 Ragic 的客戶:我們發現很多人用 Ragic 管理書籍(Ragic 實在非常適合掃 ISBN 條碼查詢已建檔書目清單),甚至用 Ragic 設計組織專用書庫的借還紀錄管理系統。

Ragic 的確很適合做這樣的「共用書庫」管理系統,畢竟,這樣的書庫通常不想花大錢買專門管理的借還書系統,也不需要過於複雜的功能,此時用 Ragic 這種零程式基礎就可以自學設計的資料庫工具,DIY 打造一個符合自家組織需求的簡單系統,就蠻適合的。

利用 Ragic 你可以自己設計出來的功能,數一數就有:

① 依據自己的需求建立書籍資料庫,紀錄所有書本資料、借閱狀況、存放位置、備註資訊(教學點此

② 為已建檔的書籍建立條碼(教學點此

③ 建立線上借書單,連結書籍資料庫的書籍資料、只顯示可借閱書籍(教學點此

④ 建立「借閱紀錄」獨立表單(教學點此

⑤ 建立線上還書單,連結借出的書籍資料(教學點此

⑥ 建立「跨表單更新借閱狀態」按鈕,自動更新書本借閱狀況(教學點此

⑦ 在「借閱紀錄」上增加後續還書紀錄(教學點此

⑧ 顯示每本書的借閱紀錄(教學點此

⑨ 如果書本逾期未還,可標註已逾期、計算逾期天數、計算逾期罰金(教學點此

⑩ 顯示會員的借閱紀錄(教學點此

為了節省新手用戶摸索設計的時間,我設計了一個「示範用資料庫」,把上述 Ragic 可以做到的功能放在裡面,你可以點以下連結查看:

點此進入借還書系統示範資料庫

接下來,我就會利用這個範例資料庫,大概示範一下這些功能怎麼設計出來。

要說明的是:Ragic 最大特點就是彈性、可以由你自己決定設計,因此你實際試用時,完全不需要把你不需要的功能硬塞進資料庫裡。建議你可以在讀完文章中的設計方法後,依照自己的需求,決定要設計哪些功能、不要設計哪些功能。

例如:假設你不需要逾期管理功能、不需要完整紀錄會員資訊,那就可以不要設計對應的欄位、表單,以及連結關係;而流程設計上,你也可以依照使用習慣、操作頻率等考量,決定要自動化更新資料,還是手動輸入資料。

因為功能並不是「越多越好」(功能多有時代表複雜、維護難度提高)、流程也不是全部都要自動化才方便,重點是依據組織目前的使用需求,做出自己覺得最合適的調配。我們相信,你可以用 Ragic 找到更適合自己的方式,做出專屬於你的書庫管理系統。

① 建立書籍資料庫與「藏書細目」

怎麼幫書建檔呢?最簡單的設計方式是你可以建立一張 Ragic 表單,建立包括 ISBN、書名、作者等資訊的欄位,然後一筆筆建立或匯入資料;我們也有現成的書籍管理快速範本:

可以一鍵快速套用後,修改成你要的樣子。

如果書庫的書很多,你也可以先利用市面上一些掃條碼即可建檔的 app 來建檔後,再把表單匯入 Ragic 之後調整成你要的樣子,這部分的教學,可以參考我們的這篇文章:用 Ragic 打造專屬於你的書籍資料庫

不過,在建立書籍資料庫時,要先注意一件事:書庫中的藏書,是每樣書都只有獨一無二的一本(小型書庫可能會如此),還是像大型圖書館那樣,每本書都館藏好多冊呢?

每個 ISBN 只收一本書的情況

如果每個書都只收藏獨一無二的一本,舉例來說, ISBN 碼為「9789866525391」的「自由之夏」你的圖書館就只有這一本,借出去就沒了,那麼你只要在前面設計的以 ISBN 碼為獨特值欄位的書籍資料庫表單,增加一些用以記錄「借閱狀態」的欄位,例如「目前借閱狀態」、「上次借出(到期日)」等資訊,就可以了。希望明確記錄到逾期天數等資訊的話,還可以增加「可借天數」、「今天」、「是否逾期未還」等欄位來套用公式自動帶出資訊。

這樣設計出來的表單就像這樣,一個 ISBN 碼一筆資料(這是列表頁的畫面,列表頁與表單頁的說明請參考這裡

每個 ISBN 不只一本書:需要另建「藏書細目」

如果你的圖書館會放著三本一模一樣、 ISBN 碼都是「9789867480729」的「圍城」,那在借還書時就會需要進一步區分是借了哪本、還了哪本,才不會在逾期未歸時找不到跟誰要。此時,你就會需要在既有、一個 ISBN 一筆資料的「書籍資料庫」之外,另外建立一個「一本藏書 = 一筆資料」的「藏書細目」表單,像這樣

在這張表單中,由於 ISBN 不再能當作辨識不同書本的獨特編號(同一個 ISBN 可能有多本書),我們會需要幫書本另外製作編號,最簡單的方式就是建立一個「藏書編號」欄位並讓它自動產生流水號。另外,由於借閱書籍會以藏書為單位,因此借閱狀態也要記錄在這張藏書細目表單中。

建立「書籍資料庫」與「藏書細目」的連結

由於大家通常還是希望檢視同一個 ISBN 編碼的書,借出了幾本、還有幾本可以借,因此建議如果是需要建立「藏書細目」的狀況,可以直接建立兩張表單:「書籍資料庫」與「藏書細目」,然後在它們之間建立連結,讓資料管理更有結構更方便。

具體的步驟上,你可以先建立「書籍資料庫」表單、接著建立「藏書細目」表單,並且設定「藏書細目」表單中的 ISBN 欄位連結與載入自書籍資料庫,然後可以在「書籍資料庫」表單中利用「顯示從其他表單的連結」這個功能顯示出所有相關藏書與借閱狀態,進而套用各種公式讓「書籍資料庫」裡顯示各藏書細目的狀況:

這樣就可以一方面清楚區分每本藏書的狀態,另一方面也清楚個別 ISBN 書號書籍的狀況了。有需要的話,還可以建立「存放位置」與「備註」等欄位。

(為了方便說明,後面我們示範建立借還書流程時,大多會以「藏書細目」的模式來示範,讀者視需求代換即可喔!)

② 為已建檔書籍製作 ISBN / 書籍編號條碼

還記得過去我們在圖書館借書、還書的經驗嗎?可能是到借還書櫃台把要借/要還的書交給圖書館員,接著圖書館員「嗶!嗶!嗶!」掃書籍條碼完成借還程序,也有可能是我們到自助機器自己刷條碼來完成這個流程。

如果希望你經手掌管的小書庫也能有類似的便利,不需要每本書都逐一輸入編號的話,那麼就必須先確保你的每本書都有可以刷的「書籍條碼」。

因為「條碼」這東西在資料管理上最大的用處,就是用來簡化手動輸入的流程(關於條碼的運作機制,可以參考這篇文章的詳細解說),以櫃檯結帳、借還書的運用來說,最大的功用是讓操作資訊系統的人在拿到商品/書本之後,不用麻煩地找到代表那個商品/書本的獨一無二的身份編號來輸入進資訊系統,只需要刷一下儲存著這組「身份編號」的條碼圖就可以。因此,我們在這裡要幫書本製作的條碼,就應該是這本書獨一無二的身份編碼。

這裡,我們一樣需要將「書庫裡一個 ISBN 碼只有一本書」的狀況,跟「書庫裡一個 ISBN 碼有多本藏書,需要建立藏書細目」的狀況區分開來。

假如你的書庫裡,一個 ISBN 碼只有一本書的話,就像前面所說的,在這個書庫裡「ISBN碼」就可以是這本書獨一無二的「身份編碼」。由於很多書本身就會在封面或封底印製 ISBN 碼的條碼,這種情況等於你需要用的書籍條碼已經有人幫你建好,可以省下製作條碼的步驟了。

但假如是「書庫裡一個 ISBN 碼有多本藏書,需要建立藏書細目」的狀況,那麼如同前面的討論, ISBN 碼沒辦法有效區分出同個書庫裡的不同書,我們已經另外建立了「藏書編號」來當書本的獨特值編號,此時如果你想要在借還書時使用到條碼,就要另外製作「藏書編號條碼」才行。

你可以很簡單的新建一個「藏書編號條碼」欄位,套用公式令其值 = 藏書編號欄位,同時將欄位種類選為「條碼」,這欄位就會自己秀出條碼圖了:

可以利用標籤產生器的功能製作條碼標籤,並印出來貼在對應的書本上。

③ 建立線上借書單

基本上,我們幫藏書建檔之後,有人要來書庫借書的時候,在查閱書本狀態就比傳統紙本或 Excel 管理來得輕鬆多了,可以利用資料庫的各種搜尋與篩選功能來找想要的書,例如在有人詢問書庫裡是否有特定書的時候,在全文檢索或欄位標頭搜尋;有人來借書時,可以在全文檢索欄或藏書編號/ISBN 欄位篩選框掃藏書編號或 ISBN 條碼來查詢書本資料並手動修改借閱狀態。

如果要進一步減少手動管理資料的步驟、確實記錄每一筆借閱資訊,可以建立一張線上「借書單」,每次借書填單即可。

「借書單」的設計邏輯跟辦公設備租借單很類似,一般而言就是建立一個單據流水號欄位、建立一個可能包含「建立日期」預設值日期欄位來記錄執行此流程的日期,然後利用連結與載入功能自動帶入已經建檔的相關資料(書籍資料或藏書細目資料)。

以「一個 ISBN 碼有多本藏書」的例子來說,借書單可以設計成這樣(點此查看表單網址):

可以看到我們在示範表單上建立了「借書單號」流水號欄位、套用預設值的「借書日期」欄位、借書人欄位,並且利用子表格來記錄借書細項,連結「藏書編號」欄位,載入相關資訊:「藏書編號+書名」、館藏地、可借天數。

有需要的話,可以在子表格套用公式讓借書單細目的每一筆資料上都自動算出到期日、自動帶出借書人名字。

借書時,負責填寫借書單的人只要填上借書人名字、輸入藏書編號或直接把游標移到藏書編號條碼欄位,掃藏書編號的條碼圖,就可以自動填寫編號並且帶入相關載入欄位的資訊了,可以一次處理多本借閱書籍。

如果是「一個 ISBN 碼有一本藏書」的情況,借書單可以像這樣(點此查看表單網址):

表單設計基本原則不變,只是連結與載入的來源改變,因此可以直接掃 ISBN 條碼來帶入書本資料。

你可以在表單上添加更多設定來讓借書流程更方便。首先,由於借書時,其實並不是所有書庫裡的書都可以借,只有還沒被借出的書可以借,因此你可以在連結與載入上添加動態篩選的設定,這樣「已借出」的書就不會出現在選單上,選擇起來比較方便:

有需要的話你也可以在子表格的連結與載入的設定中套用子表格連選,以便連續掃條碼。

在借書單上記錄好要出借的書之後,你還可以設計一個動作按鈕來自動更新「藏書細目」上的書本狀態,不用逐一手動連過去修改狀態,這部分我們放在後面這個段落說明。

④ 另外建立「借閱紀錄」表單

有了「借書單」,每次誰在哪天借了什麼書,就都會有紀錄可循,不過因為這些借閱紀錄都在「借書單」的子表格裡,有時候不是那麼一目瞭然,要做一些進階的操作(例如在藏書細目表單顯示這本書過去的所有借閱紀錄)也比較不便,因此我們可以透過 Ragic 子表格產生新表單這個功能,將借書單的借閱紀錄變成一張獨立的新表單,例如這樣

選擇「借書單號」為連結欄位,同時,為了讓借閱紀錄表單有自己的獨特值欄位,建議在借書單的子表格上就像上圖一樣放一個「借書編號」的子表格欄位,這種細項編號的常見做法,是先建立一個隱藏起來的子表格欄位「項次」並套用預設值 $SEQ(這個欄位就會自動依序產生子表格項次 1,2,3...),然後在「借書編號」欄位套用字串公式令其等於「借書單號-序號」,就可以取得一個一目瞭然的獨立編碼了。

要注意的是,透過子表格產生新表單產生的「借閱紀錄」欄位,和原本的借書單子表格欄位值是連動的,其中一方修改,另一方也會跟著變動。

⑤ 建立線上還書單

為什麼需要特別建立一張「還書單」呢?首先,如果是一般辦公設備的租借,經常是批次租借、批次歸還,例如開會借了麥克風、投影機、線材三項設備,可能租借時填寫一張租借單(包含三個項目),還設備時直接找出原本的租借單,並在上面註記「已歸還」即可,並不需要另外設計一張歸還單。

但借書的狀況可能不同,在我們的經驗裡,借還書似乎比較常遇到「同一批借出的書本,需要拆單分批歸還」的情況。例如我上禮拜一到書庫借了 A, B, C 三本書,建立了第一張借書單單號 001;禮拜二我又來借了 D, E 兩本書,又建立了第二張借書單單號 002。一個禮拜後我先把 A, D 看完了要先還,此時我如果要分別找到兩張借書單、分別註記,其實就有點麻煩。

此時,我們可以另外建立一張「還書單」,先利用連結與載入的功能找出借閱紀錄(=借書單子表格資料)中我們需要的資料,帶入還書單中。這樣,之後只要再進一步設計相對的「更新狀態」按鈕,就可以利用還書單中的資訊,一次把所有要還的書新的借閱狀態(已歸還)更新到對應的表單中,不需要東找西找了。

簡單的版本例如這樣:

(動作按鈕的部分,我們一樣會在接下來這個段落再統一說明)

⑥ 建立各種「更新借閱狀態」按鈕

管理租借資訊時,如果每次物品的租借狀態改變,就需要一一手動修改資料的話,會不太方便,此時,建立一個自動化更新借閱狀態的動作按鈕會省事得多。由於我們會需要依照「借書單」「還書單」的資訊來更新其他表單(「藏書細目」以及「借閱紀錄」)的借閱狀態,Ragic 的更新其他表單欄位值動作按鈕就是最好的選擇,以下分別說明借書、還書時可以怎麼設計。

「執行借書」動作按鈕,自動更新相關資訊

首先整理一下需求:我們列在借書單子表格的每一本藏書,在正式確認借出後,都應該將「藏書細目」的借閱狀態更新為「已借出」,可以的話同步顯示一些必要的相關資訊(例如借出日、到期日、借書人等),以利後續追蹤。

這邊要注意的是:由於「更新別張表單欄位值」這個功能一定需要根據來源表單的「某個欄位值」來做,目前不能指定某個特定的值,因此在做設定之前,我們必須在來源表單——借書單上,先新增對應的「借閱狀態」欄位,預填上欄位值,以便之後可以更新到「藏書細目」表單。

因此,可以在借書單的子表格中,新增了一個名為「更新借閱狀態」的欄位,預設值設為「已借出」,並將此欄位設為唯讀的隱藏欄位(以免誤改或混淆),就可以做出如下的設定:

系統會自動根據「借書單」上借閱細項,更新「藏書細目/書籍資料庫」表單上對應的書本資訊,把它們的「借閱狀態」欄位更新成「已借出」。同時,系統會自動新增一個『「執行借書」執行時間』欄位,這是設定動作按鈕時,系統自動產生用來記錄實際上按按鈕日期/時間的欄位,有助於確認你有沒有確實按了按鈕、也避免一時忘了自己有按按鈕而重複更新的情形。

還書單:「更新藏書狀態」動作按鈕

還書時,我們也可以用一樣的邏輯,設計對應的按鈕來更新:

不過,目前還書單示範表單上我們設計的動作按鈕要比這個複雜一點點:我們還設計了另一個用來更新「借閱紀錄」表單欄位值的動作按鈕「更新借還紀錄」,將「更新藏書狀態」、「更新借還紀錄」合併成一個「執行還書」按鈕並且將「更新藏書狀態」、「更新借還紀錄」按鈕隱藏,只顯示「執行還書」合併按鈕。

接下來,在示範如何在藏書資料中顯示借閱紀錄時,我將說明示範表單中另外設計一個「更新借還紀錄」動作按鈕的原因。

⑦ 在「借閱紀錄」表單上增加「還書資訊」(借還紀錄)

前面我們利用子表格產生新表單的功能,做出了「借閱紀錄」表單,可以很方便搜尋所有從以前到現在的借書紀錄,但這裡沒有這些借書紀錄的詳細「下落」:哪些借出的書已經歸還了?哪些已經逾期了還流落在外?

我們雖然可以用跟借書單類似的邏輯,在還書單上利用子表格產生新表單的功能產生「還書紀錄」但這樣產生出來的資料,就只會有已經歸還的書,借出之後還「下落不明」的書不會出現在這裡,資訊仍然是散落、不好追蹤的。

為了讓一本書從借到還的完整經歷可以呈現在同一張表單中,我們可以再一次利用「更新別張表單欄位值」的功能,首先在「借閱紀錄」表單上增加一些記錄還書狀態的欄位(例如還書日期、還書編號等),然後設定新的按鈕,在還書時,可以一併利用這個按鈕把還書相關資訊更新到借閱紀錄中,讓它成為更完整的「借還紀錄」。

例如這樣新增還書資訊欄位:

從還書單更新:

這邊要注意的是:「借還紀錄」表單中利用「子表格產生新表單」建立欄位,和後來新增的還書資訊相關欄位有一個不同:前者和「借書單」子表格欄位值會連動,後者不會,只會在我們從還書單執行動作按鈕時被動更新資訊。

註:這裡與「逾期管理」相關的欄位設計我們在後段這裡有說明。

⑧ 在藏書資料中顯示借閱紀錄

雖然我們已經在藏書細目表單中記錄了借閱狀態(並隨著借還書而更新),也另外有完整的借還紀錄表單可以查看,但我們有時候還是希望在查某本書的時候,可以看到它最近的借還史、知道它現在在誰的手上,這時利用顯示從其他表單的連結功能就可以輕鬆達到目的,把跟這本書相關的借還紀錄顯示在表單中:

⑨ 逾期管理

如果你需要在藏書細目中一眼看出哪些書逾期未歸、是誰拖了很久沒還以便進一步催收,或是如果你們進一步還有逾期的罰則(逾期罰金、逾期罰幾天不能借書),需要在有人還書的時候結算出罰金的話,可以利用日期欄位公式運算、搭配條件公式和 TODAYTZ() 公式來做到。以下是幾種可行的方法。

「藏書細目」中的逾期資訊管理

以上圖的範例表單來說,由於借書時,我們會透過借書單動作按鈕更新「目前借閱狀態」以及「借出到期日」欄位值(借書單中有先行套用公式計算到期日),此時只要新增「今天」(套用 TODAYTZ() 公式搭配每日公式重算)以及「是否逾期」欄位,套用圖上的公式即可隨時更新是否逾期的資訊了。

公式可以依據你的實際情況變化,例如你表單上的欄位是「上次借出日期」的話,也可以根據「上次借出日期」+「可借天數」算出到期日。

要注意的是:如果你像範例表單這樣,透過動作按鈕更新的欄位是同張表單其他公式欄位的參照值的話,要確認你的動作按鈕設定時,有在「進階設定」中勾選「重新計算目的表單的公式」,這樣才能正確觸發公式。

用「條件式格式」醒目標註需要注意的資訊

你也可以利用條件式格式來醒目提示逾期資訊,例如範例表單中做了如下設定,讓書本外借逾期時,不只醒目提示逾期的事實,還標出是哪一筆借閱狀態是「元兇」:

「還書單」中的逾期資訊管理

還書時,如果需要馬上看出哪本書逾期了、逾期多少天,可以像還書單範例表單這樣在還書的細項上新增幾個子表格欄位,套公式來計算出是否逾期、逾期天數:

當場計算罰金

如果有規定每逾期一天罰多少的話,在「逾期一天罰金」的地方填上每日罰金,再套用公式就能算出罰款。同理,如果規定是「每逾期一天罰不能借書一天」,一樣可以結算出要罰幾天。規定如果有變,只要相應修改公式內容即可。

有需要的話,你還可以新增一些記錄是否支付罰金的打勾選項欄位,進一步管控罰款進度。

⑩ 在會員資料中顯示借閱紀錄

如果你需要詳細紀錄每一個借書人的借閱紀錄,那麼你可以設計一張「會員」表單來記錄這些會員的基本資訊,把借書單、還書單上「借書人」的欄位設成連結與載入自會員資料,接著就可以用類似「在藏書細目自動顯示相關借閱紀錄」的方法,利用「顯示從其他表單的連結」功能,在會員資料表上自動顯示相關的借閱紀錄:

如果你的書庫借閱人全部都是資料庫中的使用者,你也可以將「借書人」欄位設成選擇使用者欄位。

小提醒:先做初步設計、測試流程後再逐步增加功能,讓你更順利!

講到這裡,用 Ragic 可以設計出來的「圖書館借還系統」功能我們大致說明完了!在講解過程中,你或許有發現,很多表單欄位、連結關係、功能的設計是環環相扣的,例如為了要達成某個按鈕的目的,必須先在其他地方新增欄位,或是為了讓「會員資料」自動顯示借閱紀錄,要先在借閱紀錄中連結會員資料表單等等。

不過,別被我們前面的「火力展示」嚇到了!這其實不代表用 Ragic 做表單設計「一開始」就要考量那麼多東西,把自己搞死。Ragic 的好處就是:它可以隨時由你自己調整、擴充,不需要跟工程師漫長溝通、開需求、等人寫程式,讓資料庫設計變成一個真正動態的過程,而不是花老半天、弄一堆功能出來之後,才發現沒有使用者買單的窘境。

你可以先設計出一個最簡單、最基礎的架構,用使用者的角度測試 run 過一輪,請實際使用的人給點意見,看看哪裡想要調整、修改之後,再慢慢把「錦上添花」的自動化流程、自動顯示相關資訊等功能一步步加上去。

這樣,初學時就不會太複雜、太難以入手,也不會辛苦弄了很久之後,還是覺得流程不是你要的。以這邊借還書的例子來說,你可以先做初步的設計,包括先將書籍建檔,建立簡單的借書單、還書單,手動更新資料一陣子之後,看看哪些流程可以優先加入,再一步一步加到設計中,不用「一步登天」。

設計雛形、測試、重新反推與調整設計:動態的過程不但可以讓你起步順利,也可以確保這個系統是真正符合你需求的。來試試吧!設計過程遇到任何問題,你都可以來信 support@ragic.com 詢問。

部落格背後使用 Ragic! : 最強大的 No Code 企業電子化工具
    把資料放在Excel上不只是拖累團隊的行政效率,他也很容易出錯並且無法進行任何內控。
    當您的團隊成長時,使用Excel管理資料就會越來越痛苦。
    建立你們的第一個雲端資料庫!

    馬上註冊
    免費試用 Ragic!

    用 Google 帳號註冊

    立即科技 Ragic, Inc.
    02-7728-8692
    info@ragic.com
    台北市中正區南昌路二段81號9樓