(57)【要約】【課題】ユーザに負担をかけることなく、予約の登録確率を向上させ、施設を有効に利用可能とする。【解決手段】ＣＰＵ１８は、新規の予約（既存の予約データの編集も含む）が入ると、その都度、予約台帳データベース１６の予約台帳ファイルから既存の予約データを読み出し、新規の予約データを加えた既存の予約データを所定の並び替え条件（利用開始予定日（昇順）、利用期間（降順）、予約ＩＤ（昇順）の優先順で）に従って並び替え、並び替えた予約データを１つずつ、部屋（ベッド）に順次新たに割り当て、予約データの予約状況を最適化し、割り当てた予約情報で予約台帳データベース１６の予約台帳ファイルを更新する。【選択図】図１
2019082772.tif 000002
【特許請求の範囲】
【請求項１】
複数の利用施設に対する予約を管理する予約管理システムであって、
前記複数の利用施設のうち、少なくとも１つの利用施設に対する、少なくとも利用開始予定日と利用終了予定日とを含む既存の予約情報を含む予約台帳ファイルを記憶する記憶手段と、
新規の予約情報を受け付けると、前記記憶手段に記憶されている前記予約台帳ファイルから前記既存の予約情報を読み出し、前記新規の予約情報と前記既存の予約情報とを含む予約情報を、所定の並び替え条件に基づいて並び替える並び替え手段と、
前記並び替え手段で並び替えられた前記予約情報を、それぞれの前記利用開始予定日及び前記利用終了予定日に基づいて、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てる割り当て手段と、
前記割り当て手段によって前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てられた前記予約情報によって、前記記憶手段に保持されている前記予約台帳ファイルを更新する更新手段と、
を備えることを特徴とする予約管理システム。
【請求項２】
前記予約情報は、
前記複数の利用施設のうち、特定の利用施設を指定する指定情報を更に含み、
前記並び替え手段は、
前記指定情報を含む前記予約情報を優先的に前記所定の並び替え条件に基づいて並び替えた後、前記指定情報を含まない前記予約情報を前記所定の並び替え条件で並び替え、
前記割り当て手段は、
前記並び替え手段で並び替えられた、前記指定情報を含む前記予約情報を、前記指定情報で指定された前記特定の利用施設の空き期間に優先的に割り当てた後、前記指定情報を含まない前記予約情報を、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てる、ことを特徴とする請求項１に記載の予約管理システム。
【請求項３】
前記割り当て手段は、
前記並び替え手段で並び替えられた前記予約情報のうち、ある予約情報の前記利用開始予定日と他の予約情報の前記利用終了予定日とが重複している場合に、前記他の予約情報の前記利用終了予定日を割り当て可能な空き期間とし、前記ある予約情報の前記利用終了予定日が他の予約情報の前記利用開始予定日とが重複している場合に、前記他の予約情報の前記利用開始予定日を割り当て可能な空き期間として、前記並び替え手段で並び替えられた前記予約情報を、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てる、ことを特徴とする請求項１に記載の予約管理システム。
【請求項４】
前記予約情報は、
前記複数の利用施設のうち、特定の利用施設を指定する指定情報を更に含み、
前記並び替え手段は、
前記指定情報を含む前記予約情報を優先的に前記所定の並び替え条件に基づいて並び替えた後、前記指定情報を含まない前記予約情報を前記所定の並び替え条件で並び替え、
前記割り当て手段は、
前記並び替え手段で並び替えられた、前記指定情報を含む前記予約情報を、前記指定情報で指定された特定の利用施設の空き期間に優先的に割り当てた後、
前記並び替え手段で並び替えられた前記予約情報のうち、ある予約情報の前記利用開始予定日と他の予約情報の前記利用終了予定日とが重複している場合に、前記他の予約情報の前記利用終了予定日を割り当て可能な空き期間とし、前記ある予約情報の前記利用終了予定日が他の予約情報の前記利用開始予定日とが重複している場合に、前記他の予約情報の前記利用開始予定日を割り当て可能な空き期間として、前記指定情報を含まない前記予約情報を、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てる、ことを特徴とする請求項１に記載の予約管理システム。
【請求項５】
前記予約情報は、
予約された順番を示す予約ＩＤを更に含み、
前記所定の並び替え条件は、
前記利用開始予定日（昇順）、前記利用開始予定日と前記利用終了予定日との差分である利用期間（降順）、前記予約ＩＤ（昇順）の優先順である、ことを特徴とする請求項１乃至４のいずれか一つに記載の予約管理システム。
【請求項６】
前記並び替え手段は、
前記並び替え手段で並び替えられた順番で、前記予約情報を、前記利用開始予定日及び前記利用終了予定日に基づいて、前記複数の利用施設に順番にその空き期間に割り当てる、ことを特徴とする請求項１乃至５のいずれか一つに記載の予約管理システム。
【請求項７】
複数の利用施設に対する予約を管理する予約管理方法であって、
前記複数の利用施設のうち、少なくとも１つの利用施設に対する、少なくとも利用開始予定日と利用終了予定日とを含む既存の予約情報を予約台帳ファイルとして記憶するステップと、
新規の予約情報を受け付けると、前記新規の予約情報と前記既存の予約情報とを含む予約情報を、所定の並び替え条件に基づいて並び替えるステップと、
前記並び替えられた前記予約情報を、それぞれの前記利用開始予定日及び前記利用終了予定日に基づいて、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てるステップと、
前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てられた前記新規の予約情報及び前記既存の予約情報で、前記予約台帳ファイルを更新するステップと、
を含むことを特徴とする予約管理方法。
【請求項８】
複数の利用施設に対する予約を管理する予約管理システムのコンピュータを、
前記複数の利用施設のうち、少なくとも１つの利用施設に対する、少なくとも利用開始予定日と利用終了予定日とを含む既存の予約情報を含む予約台帳ファイルを記憶する記憶機能、
新規の予約情報を受け付けると、前記予約台帳ファイルから前記既存の予約情報を読み出し、前記新規の予約情報と前記既存の予約情報とを含む予約情報を、所定の並び替え条件に基づいて並び替える並び替え機能、
前記並び替えられた前記予約情報を、それぞれの前記利用開始予定日及び前記利用終了予定日に基づいて、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てる割り当て機能、
前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てられた前記予約情報によって、前記予約台帳ファイルを更新する更新機能、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予約管理システム、予約管理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、ホテルや、介護施設など、特に宿泊を伴うサービスを提供する施設においては、手書きの台帳や、表計算ソフトウェアで予約状況を管理したり、予約状況をコンピュータなどの予約システムで管理したりしている（例えば特許文献１参照）。このような予約システムでは、予約自体は部屋（又はベッド）の空き状況を把握するために用いられており、新規予約やキャンセルが入ると、その都度、人がどうするのかを考えて予約システムに登録していた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２６０３２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術による予約管理システムでは、新規の予約が入ったり、既存の予約に変更があったりした際に、予約状況を変更することで新規の予約や、変更された予約が登録できるような場合であっても、作業が煩雑で、時間がかかるために、キャンセル待ちにしたり、予約を断ってしまうという問題があった。
【０００５】
そこで本発明は、ユーザに負担をかけることなく、予約の登録確率を向上させ、施設を有効に利用可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る予約管理システムは、複数の利用施設に対する予約を管理する予約管理システムであって、前記複数の利用施設のうち、少なくとも１つの利用施設に対する、少なくとも利用開始予定日と利用終了予定日とを含む既存の予約情報を含む予約台帳ファイルを記憶する記憶手段と、新規の予約情報を受け付けると、前記記憶手段に記憶されている前記予約台帳ファイルから前記既存の予約情報を読み出し、前記新規の予約情報と前記既存の予約情報とを含む予約情報を、所定の並び替え条件に基づいて並び替える並び替え手段と、前記並び替え手段で並び替えられた前記予約情報を、それぞれの前記利用開始予定日及び前記利用終了予定日に基づいて、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てる割り当て手段と、前記割り当て手段によって前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てられた前記予約情報によって、前記記憶手段に保持されている前記予約台帳ファイルを更新する更新手段と、を備えることを特徴とする。
【０００７】
この発明に係る予約管理方法は、複数の利用施設に対する予約を管理する予約管理方法であって、前記複数の利用施設のうち、少なくとも１つの利用施設に対する、少なくとも利用開始予定日と利用終了予定日とを含む既存の予約情報を予約台帳ファイルとして記憶するステップと、新規の予約情報を受け付けると、前記新規の予約情報と前記既存の予約情報とを含む予約情報を、所定の並び替え条件に基づいて並び替えるステップと、前記並び替えられた前記予約情報を、それぞれの前記利用開始予定日及び前記利用終了予定日に基づいて、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てるステップと、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てられた前記新規の予約情報及び前記既存の予約情報で、前記保持手段に保持されている前記予約台帳ファイルを更新するステップと、を含むことを特徴とする。
【０００８】
この発明に係るプログラムは、複数の利用施設に対する予約を管理する予約管理システムのコンピュータを、前記複数の利用施設のうち、少なくとも１つの利用施設に対する、少なくとも利用開始予定日と利用終了予定日とを含む既存の予約情報を含む予約台帳ファイルを記憶する記憶機能、新規の予約情報を受け付けると、前記予約台帳ファイルから前記既存の予約情報を読み出し、前記新規の予約情報と前記既存の予約情報とを含む予約情報を、所定の並び替え条件に基づいて並び替える並び替え機能、前記並び替えられた前記予約情報を、それぞれの前記利用開始予定日及び前記利用終了予定日に基づいて、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てる割り当て機能、前記複数の利用施設のいずれか１つの利用施設の空き期間に割り当てられた前記予約情報によって、前記予約台帳ファイルを更新する更新機能、として機能させることを特徴とする。
【発明の効果】
【０００９】
この発明によれば、ユーザに負担をかけることなく、予約の登録確率を向上させ、施設を有効に利用することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態による予約管理システム１０の構成を示すブロック図である。
【図２】本実施形態による予約管理システム１０の予約台帳画面２０の一例を示す模式図である。
【図３】本実施形態による予約管理システム１０の登録・編集・削除画面５０の一例を示す模式図である。
【図４】本発明の第１実施例による予約管理システム１０の動作を説明するためのフローチャートである。
【図５】本発明の第１実施例による予約管理システム１０の動作を説明するためのフローチャートである。
【図６】本発明の第１実施例による予約管理システム１０の動作を説明するためのフローチャートである。
【図７】本発明の第１実施例による予約管理システム１０の動作を説明するためのフローチャートである。
【図８】本第１実施例による予約管理システム１０の動作を説明するための概念図である。
【図９】本第１実施例による予約管理システム１０の動作を説明するための概念図である。
【図１０】本第１実施例による予約管理システム１０の動作を説明するための概念図である。
【図１１】本第１実施例による予約管理システム１０の動作を説明するための概念図である。
【図１２】本発明の第２実施例による予約管理システム１０の動作を説明するためのフローチャートである。
【図１３】本第２実施例による予約管理システム１０の動作を説明するための概念図である。
【図１４】本第２実施例による予約管理システム１０の動作を説明するための概念図である。
【図１５】本第２実施例による予約管理システム１０の動作を説明するための概念図である。
【図１６】本第２実施例による予約管理システム１０の動作を説明するための概念図である。
【図１７】本発明の第３実施例による予約管理システム１０の動作を説明するためのフローチャートである。
【図１８】本第３実施例による予約管理システム１０の動作を説明するための概念図である。
【図１９】本第３実施例による予約管理システム１０の動作を説明するための概念図である。
【図２０】本第３実施例による予約管理システム１０の動作を説明するための概念図である。
【図２１】本第４実施例による予約管理システム１０の動作を説明するための概念図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１２】
なお、以下の説明においては、宿泊を伴うサービスを提供する施設としては、前述したように、ホテル・旅館等の宿泊施設や、入院設備付き病院の病棟などを含む。
【００１３】
図１は、本発明の実施形態による予約管理システム１０の構成を示すブロック図である。図１において、予約管理システム１０は、中央演算処理装置やメモリ等を搭載した情報処理装置（スタンドアロンコンピュータや、携帯型のコンピュータ、タブレット、スマートフォンなど）からなる。予約管理システム１０は、ＲＯＭ１２、ＲＡＭ１３、表示部１４、操作部１５、予約台帳データベース１６、外部記録媒体１７、及びＣＰＵ１８を備えている。
【００１４】
ＲＯＭ１２は、後述するＣＰＵ１８により実行されるプログラム（ＯＳや、アプリケーションプログラム等）や動作等に必要とされる各種パラメータなどを記憶している。ＲＡＭ１３は、後述するＣＰＵ１８がプログラムを実行した際の一時的なデータや、各種アプリケーションプログラム、アプリケーションの実行に必要な各種パラメータなどを記憶する。特に、本実施形態では、ＲＡＭ１３は、後述する予約台帳データベース１６の予約台帳ファイルから読み出した既存の予約データを所定の並び替え条件に従って並び替えたり、並び替えた予約データを部屋（ベッド）に割り当てる割り当て処理を実行したりする際にワーキング領域として用いられる。
【００１５】
表示部１４（提示手段）は、液晶表示器や有機ＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ）表示器などからなり、特定の機能やアプリケーションなどに紐付けられているアイコンや、アプリケーション画面（予約台帳画面）、各種の情報などを表示する。操作部（タッチパネル、タッチパッド）１５は、指やスタイラス（ペン）などの直接接触、あるいは、近接を検出する。なお、操作部１５には、ポインティングデバイスや、電源ボタン、音量ボタンなどの機械的なスイッチ類などが含まれてもよい。
【００１６】
予約台帳データベース（記憶手段）１６は、予約台帳ファイルを保持する。予約台帳ファイルは、既存の予約データを保持するファイルであり、予約ＩＤ、部屋ＩＤ（ベッドＩＤ）、入所予定日、入所予定時刻、退所予定日、退所予定時刻、（部屋指定又はベッド指定）を１レコードとして複数まとめたものである。予約ＩＤは、予約を受け付けた順に自動的に割り当てられる識別情報である。部屋ＩＤ（ベッドＩＤ）は、当該施設で利用可能な部屋（ベッド）に割り振られる識別情報である。なお、部屋単位で予約を受け付ける場合には、部屋ＩＤを用いる。入所予定日は、施設に入る（チェックインする）予定日であり、入所予定時刻は、施設に入る（チェックインする）予定時刻である。また、退所予定日は、施設から出る（チェックアウトする）予定日であり、退所予定時刻は、施設から出る（チェックアウトする）予定時刻である。また、部屋指定（ベッド指定）は、利用者が所望する部屋（ベッド）を指定した予約であるか否かを示す情報である。なお、部屋指定（ベッド指定）は、利用する施設の事情に応じて選択的に提供されるサービスの一つであり必須ではない。
【００１７】
外部記録媒体１７は、着脱可能なメモリカード（例えば、ＳＤカードなど）からなり、各種データを記録する。当該外部記録媒体１７は、例えば、上記ＲＡＭ１３に代えて、予約台帳データベース１６の予約台帳ファイルから読み出した既存の予約データを所定の並び替え条件に従って並び替えたり、並び替えた予約データを部屋（ベッド）に割り当てる割り当て処理を実行したりする際にワーキング領域として用いられるようにしてもよい。あるいは、予約台帳データベース１６に保存されている予約台帳ファイルをバックアップするために用いられてもよい。
【００１８】
ＣＰＵ１８は、上述したＲＯＭ１２に記憶されているプログラム（ＯＳ、アプリケーションプログラム）を実行することで各部の動作を制御する。特に、本実施形態では、ＣＰＵ１８は、新規の予約（既存の予約データの編集も含む）が入ると、その都度、上述した予約台帳データベース１６の予約台帳ファイルから既存の予約データを読み出し、新規の予約データを加えた既存の予約データを所定の並び替え条件に従って並び替え（並び替え手段）、並び替えた予約データを１つずつ、部屋（ベッド）に順次新たに割り当て（割り当て手段）、予約データの予約状況を最適化し、割り当てた予約情報で予約台帳ファイルを更新する（更新手段）。
【００１９】
つまり、新規の予約が入る度に、部屋（ベッド）に空き期間が生じないように予約を順次埋めていく作業を行うことで、従来であれば一見すると新規の予約が登録できないと思われる場合であっても、新規の予約を登録することが可能となる。
【００２０】
また、ＣＰＵ１８は、後述する予約台帳画面や、登録・編集・削除画面、確認ダイアログ、エラー表示画面、メッセージダイアログなどを表示部１４に表示する処理を実行する。
【００２１】
なお、予約管理システム１０は、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）や、ＷｉＦｉ（登録商標）などを用いて、外部機器（ネットワーク上のサーバ等）との間で各種情報を送受信する通信手段を備えていてもよい。あるいは、演算機能や情報処理機能をネットワーク上のサーバで構築し、ネットワークに接続される各種情報機器（パーソナルコンピュータや、ノート型パーソナルコンピュータ、ブック型パーソナルコンピュータ、タブレットなど）からサーバにアクセスすることで予約管理システム１０を実現してもよい。
【００２２】
図２は、本実施形態による予約管理システム１０の予約台帳画面２０の一例を示す模式図である。図２において、予約台帳画面２０は、一画面上に約１か月分の予約データを表示する。なお、グループ、部屋数（ベッド数）は事前に登録されている。
【００２３】
予約台帳画面２０は、台帳ヘッダ２１とグループカレンダー２２とから構成されている。台帳ヘッダ２１は、今日ボタン３１、前月ボタン３２、次月ボタン３３、年月日表示３４、凡例３５、及び統計情報３６から構成されている。
【００２４】
今日ボタン３１は、ユーザ操作によるボタン押下で、当日を含む月のカレンダーを表示するためのボタンである。前月ボタン３２は、ユーザ操作によるボタン押下で、表示月の前月のカレンダーを表示するためのボタンである。次月ボタン３３は、ユーザ操作によるボタン押下で、表示月の次月のカレンダーを表示するためのボタンである。年月日表示３４には、表示されているカレンダーの年月が表示される。凡例３５は、カレンダーの凡例が表示される。凡例としては、予約、仮押さえ、キャンセル待ち、太字：新規が設定される。
【００２５】
統計情報３６には、カレンダー表示月の事業所の実績数値が表示される。実績数値としては、左から順に、実績、入所、退所、滞在中、夜間滞在、被せ日数、空き日数、稼働率が表示される。実績（実績数）は、入所数＋退所数＋滞在中数であり、入所（入所数）は、表示月の入所の数であり、退所（退所数）は、表示月の退所の数であり、滞在中（滞在中数）は、表示月の利用者が滞在中であった数である。また、夜間滞在（夜間滞在数）は、０時をまたいで滞在している利用者の数であり、被せ日数は、入所と退所が同時にあった数であり、空き日数は、部屋が空いていた数であり、稼働率は、実績数÷（日数×部屋数）（少数２位まで％表示）である。これら集計は全て表示月の１日〜月末までの値である。
【００２６】
図示の例では、２０１７年９月の実績として、左から順に、実績：３２５、入所：１０３、退所：１０７、滞在中：１１５、夜間滞在：１１５、被せ日数：１０８、空き日数：１２、稼働率：１０８．３３％となっている。統計情報３６は、すべて太字で表示される。
【００２７】
グループカレンダー２２は、カレンダー４１、空室４２、予約カレンダー４３、実績４４、及びキャンセル待ち４５から構成されている。
【００２８】
カレンダー４１には、上段に月を表示が表示され、下段に日と曜日が表示される。日と曜日は、改行して表示され、曜日は、()付で一文字表示され、土曜：青字、日曜祝日：赤字で表示され、当日は、背景色が黄色に表示される。また、カレンダー４１には、表示月の前後３日分も表示される。
【００２９】
空室４２には、日毎の空室数（空ベッド数）が表示される。より具体的には、予約登録で空室０の場合には、マスの背景を濃いピンクで表示し（９月２日、３日、８日〜１１日、１３日、１５日〜１８日、２０日〜２４日、２６日、２９日、３０日）、キャンセル待ちを含めて空室０の場合には、マスの背景をグレーで表示し（９月２５日、２７日）、空室があと１室の場合には、マスの背景を黄色で表示する（９月５日〜７日、１２日、１４日、１９日、２８日）。表示月には、数値のみを表示し、前後３日には、数値を表示しない。
【００３０】
予約カレンダー４３には、表示月の予約情報４６が表示される。１列目には、部屋ＩＤ（ベッドＩＤ）が表示される。本実施形態では、１〜２５を用意しており、末尾４と９を欠番とする。図示の例では、部屋ＩＤ（ベッドＩＤ）として上から順に１、２、３、５、６、７、８、１０、１１、１２が表示されている。予約情報４６は、最大１０行まで表示され、１０行以上ある場合には、ユーザ操作に応じて、１０行ごとに空室４２と予約カレンダー４３を更新して表示するようになっている。
【００３１】
予約情報４６は、個別の予約情報として滞在期間に応じた長さの帯で表示される。帯には、予約情報として、予約者の氏名が表示される。また、後述する部屋指定（ベッド指定）の場合には、ピンのアイコンが表示される。フォントは、１泊２日の場合に漢字２文字が表示されるサイズとする。また、通常の予約は、背景を薄い橙で表示し、仮押さえは、背景を薄い緑（図示では左上から右下への斜線）で表示し、キャンセル待ちは背景を薄いグレーで表示し、選択中のマスは背景を濃い橙（図示では右上から左下への斜線）で表示する。
【００３２】
ここで、仮押さえとは、予約を確定していないが、仮に予約を入れた状態として押さえておく予約である。また、キャンセル待ちは、予約を受け付けたが、空室（空ベッド）が現時点でないため、キャンセルがあった場合に優先的に割り当てるために待機状態とした予約である。
【００３３】
実績４４には、日毎の実績数値が太字で表示される。表示月の前３日については、数値を表示せず、表示月の後３日については数値を表示せず、マスを結合して合計数を表示するようになっている。
【００３４】
キャンセル待ち４５には、キャンセル待ちとして、キャンセル待ちになった予約情報の帯が表示される。表示内容は、予約情報４６と同じである。キャンセル待ちの予約情報の背景は、薄いグレーであるが、予約の削除や期間変更により、キャンセル待ち予約の受入が可能になった場合には、背景の色を変えるようになっている。
【００３５】
図３は、本実施形態による予約管理システム１０の登録・編集・削除画面５０の一例を示す模式図である。登録・編集・削除画面５０は、新規の予約データの入力、既存の予約データの編集、既存の予約データの削除のいずれかの作業時に表示される。
【００３６】
登録・編集・削除画面５０は、部屋、氏名、電話番号、入所日時、入所日の食事の要不要、入所日の送迎の要不要、退所日時、退所日の食事の要不要、退所日の送迎の要不要、新規の有無、仮押さえの有無、コメントからなる予約情報を入力するための欄と、予約情報の登録・編集・削除をキャンセルするためのキャンセルボタン、予約情報を登録するための登録ボタン、及び予約情報を削除するための削除ボタンとからなる。
【００３７】
予約台帳画面２０において、ユーザが、グループカレンダー２２のカレンダー４１における日付、空室４２、又は予約カレンダー４３の予約が入っていないマスをクリックすると、新規登録として、登録・編集・削除画面５０がモーダル表示される。ユーザが、登録・編集・削除画面５０から予約情報を入力した後、登録ボタンを押下すると、後述処理が実行され、いずれかの部屋（ベッド）に割り当て可能であれば、グループカレンダー２２（すなわち、予約台帳）に登録され、割り当て不可であれば、キャンセル待ちとして登録される。
【００３８】
また、予約台帳画面２０において、ユーザが、グループカレンダー２２の既に入っている予約情報の帯をクリックすると、編集として、登録・編集・削除画面５０がモーダル表示される。この場合、登録・編集・削除画面５０の各項目には、既定値としてクリックした帯の予約情報が表示される。ユーザが、登録・編集・削除画面５０から予約情報を編集した後、登録ボタンを押下すると、後述処理が実行され、いずれかの部屋（ベッド）に割り当て可能であれば、グループカレンダー２２（すなわち、予約台帳）に登録され、割り当て不可であれば、キャンセル待ちとして登録される。また、ユーザが、登録・編集・削除画面５０から削除ボタンを押下すると、クリックした帯の予約情報が削除される。
【００３９】
以下、本発明による予約管理システム１０の動作を説明する。本発明では、所定の並び替え条件に従って並び替えて、並び替えた予約情報を１つずつ部屋（ベッド）の空き期間に順番に割り当てることによって予約状況を最適化する際の手法として、第１のパターン〜第４のパターンを提案し、第１のパターン〜第４のパターンのそれぞれを第１実施例〜第４実施例として説明する。
【００４０】
（第１実施例：第１のパターン）
第１実施例は、最も基本的なパターンであって、所定の並び替え条件に従って予約データを並び替えて、並び替えた予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てることによって予約状況を最適化する際に、新規の予約データの入所予定日、入所期間と部屋（ベッド）の空き期間とに基づいて、予約データ（ｉ）が部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に割り当て可能である場合に、新規の予約データをその部屋（ベッド）に割り当てる例である。
【００４１】
図４乃至図７は、本発明の第１実施例による予約管理システム１０の動作を説明するためのフローチャートである。また、図８乃至図１１は、本第１実施例による予約管理システム１０の動作を説明するための概念図である。なお、以下では、説明を簡単にするために、部屋ＩＤ（ベッドＩＤ）について、末尾４と９を欠番とせず、連番として説明する。
【００４２】
まず、予約管理システム１０において、ＣＰＵ１８は、予約台帳データベース１６から予約台帳ファイルを読み出して、予約台帳画面２０を表示部１４に表示する（ステップＳ１０）。次に、ＣＰＵ１８は、ユーザによって、グループカレンダー２２のカレンダー４１における日付、空室４２、又は予約カレンダー４３の予約が入っていないマスがクリックされたか、すなわち新規予約が指示されたか否かを判断する（ステップＳ１２）。ここで、新規予約を行うべく、ユーザが予約台帳画面２０のグループカレンダー２２のカレンダー４１における日付、空室４２、又は予約カレンダー４３の予約が入っていないマスをクリックした場合には（ステップＳ１２のＹＥＳ）、ＣＰＵ１８は、新規登録として、登録・編集・削除画面５０をモーダル表示する（ステップＳ１４）。
【００４３】
ユーザが、登録・編集・削除画面５０から予約情報を入力した後、登録ボタンを押下すると、ＣＰＵ１８は、入所予定日から翌日以降の予約であるか否かを判断する（ステップＳ１６）。そして、翌日以降の予約である場合には（ステップＳ１６のＹＥＳ）、ＣＰＵ１８は、予約台帳データベース１６の予約台帳ファイルから、処理翌日以降（翌日を含む）の全予約データ（以下、複数の予約データを予約データ群という）を読み出す（ステップＳ１８）。
【００４４】
ここで、図８には、元々の予約データ群と新規の予約データとが示されている。元々の予約データ群は、予約ＩＤ「１０１」〜「１２４」のように、予約ＩＤ順（昇順）で並んでいる。また、予約ＩＤ「１２５」が新規の予約データを示す。新規の予約データは、まだ予約台帳に登録されていないので、部屋ＩＤ（ベッドＩＤ）が未定となっている。新規の予約データの入所予定日が「８月３日」であるので、元々の予約データ群から、入所予定日が「８月３日」以降の予約データが読み出されることになる。
【００４５】
次に、新規の予約データを含む予約データ群を、並び替え条件（入所予定日時（昇順）、入所期間（降順）、予約ＩＤ（昇順）の優先順）で並び替える（ステップＳ２０）。ここで、図９には、入所予定日時（昇順）、入所期間（降順）、予約ＩＤ（昇順）の優先順に並び替えられた新規の予約データを含む予約データ群が示されている。この場合、新規の予約データ（予約ＩＤ「１２５」）の入所予定日が「８月３日」で、入所期間が９日間と最も長いので最上位となり、その後に既存の予約データが上記優先順に従って並び替えられることになる。
【００４６】
次に、ＣＰＵ１８は、変数ｉ＝０、ｊ＝０とする（ステップＳ２２）。変数ｉは、予約データをカウントするための変数であり、変数ｊは、部屋（ベッド）をカウントするための変数である。次に、ＣＰＵ１８は、変数ｉを１つインクリメントし（ステップＳ２４）、変数ｊを１つインクリメントする（ステップＳ２６）。
【００４７】
次に、ＣＰＵ１８は、並び替えた予約データ（ｉ）を部屋ＩＤ（ベッドＩＤ）（ｊ）に割り当て可能であるか確認する（ステップＳ２８）。すなわち、予約データ（ｉ）の入所予定日、入所期間に基づいて、部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に当該予約が割り当て可能であるか否か確認する。
【００４８】
次に、ＣＰＵ１８は、予約データ（ｉ）の入所予定日、入所期間と、部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間とに基づいて、予約データ（ｉ）が、部屋ＩＤ（ｊ）（ベッドＩＤ）の空き期間に割り当て可能であるか否かを判断する（ステップＳ３０）。なお、本第１実施例では、ある利用者の入所予定日が他の利用者の退所予定日と重複しても、ある利用者の入所予定時刻が他の利用者の退所予定時刻と重複しない場合、あるいは、ある利用者の退所予定日が他の利用者の入所予定日と重複しても、ある利用者の退所予定時刻と他の利用者の入所予定時刻が重複しない場合には、割り当て可能であると判断する。一方、ある利用者の入所予定日が他の利用者の退所予定日と重複し、かつある利用者の入所予定時刻が他の利用者の退所予定時刻と重複した場合、あるいは、ある利用者の退所予定日が他の利用者の入所予定日と重複し、かつある利用者の退所予定時刻と他の利用者の入所予定時刻が重複した場合には、割り当て不可能であると判断する。そして、予約データ（ｉ）が、部屋ＩＤ（ｊ）（ベッドＩＤ）の空き期間に割り当て可能でない場合には（ステップＳ３０のＮＯ）、ＣＰＵ１８は、変数ｊがＭａｘであるか否かを判断する（ステップＳ３４）。
【００４９】
ここで、Ｍａｘは、当該施設で利用可能な部屋（ベッド）の最大数である。そして、変数ｊがＭａｘでない場合、すなわち予約データ（ｉ）に対して、全ての部屋ＩＤ（ベッドＩＤ）（ｊ）で割り当て可能であるか否かを確認していない場合には（ステップＳ３４のＮＯ）、ＣＰＵ１８は、ステップＳ２６に戻り、上述した処理を繰り返す。
【００５０】
すなわち、変数ｊを１つずつインクリメントして部屋ＩＤ（ベッドＩＤ）（ｊ）を１つずつ変えながら予約データ（ｉ）が割り当て可能であるかを確認する。以下、予約データ（ｉ）が、部屋ＩＤ（ｊ）（ベッドＩＤ）の空き期間に割り当て可能になるか、変数ｊがＭａｘになるまで繰り返す。
【００５１】
そして、上述した処理において、つまり部屋ＩＤ（ｊ）（ベッドＩＤ）を１つずつ変えながら予約データ（ｉ）が割り当て可能であるか確認する過程において、予約データ（ｉ）が部屋ＩＤ（ｊ）（ベッドＩＤ）の空き期間に割り当て可能である場合には（ステップＳ３０のＹＥＳ）、ＣＰＵ１８は、予約データ（ｉ）を、その部屋ＩＤ（ｊ）（ベッドＩＤ）に割り当てる（ステップＳ３２）。
【００５２】
次に、予約データ（ｉ）が割り当てられた後、ＣＰＵ１８は、変数ｉがｎとなったか否かを判断する（ステップＳ４２）。ここで、ｎは、並び替えた予約データの総数である。そして、変数ｉがｎに達していない場合、すなわち全ての並び替えた予約データに対する割り当て処理が終了していない場合には（ステップＳ４２のＮＯ）、ステップＳ２４に戻り、上述した処理を繰り返す。
【００５３】
すなわち、並び替えた予約データ（ｉ）を１つずつ順に部屋ＩＤ（ベッドＩＤ）（ｊ）順に割り当て可能であるか否かを確認し、予約データ（ｉ）が部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に割り当て可能であれば、その部屋（ベッド）に予約データを割り当てていく。
【００５４】
そして、変数ｉがｎになった場合、すなわち、全ての並び替えた予約データに対する割り当て処理が終了した場合には（ステップＳ４２のＹＥＳ）、ＣＰＵ１８は、予約台帳ファイルに並び替えた結果を反映（更新）し、ステップＳ１０に戻る。
【００５５】
図１０（ａ）には、上述した割り当て処理を実行する前の予約データ群の予約状況が示されており、図１０（ｂ）は、上述した割り当て処理を実行した後の予約データ群の予約状況が示されている。図１０（ａ）に示す予約状況を見て分かるように、入所予定日「８月３日」〜退所予定日「８月１１日」、８泊９日の入所期間を有する新規の予約データ（予約ＩＤ：１２５）が入る余地はない。以下、上記割り当て処理の過程を、図１０（ｂ）を参照して説明する。
【００５６】
新規の予約データは、８月２日に受け付けたものであり、割り当て処理も８月２日（探索当日）となる。したがって、新規の予約データは、翌日以降の予約となるので、予約ＩＤ「１０１」、「１１１」、「１０８」、及び「１０６］の予約データについては翌日以降の予約でないので割り当て対象から除外される（固定）。つまり、これらの予約データは、既に利用者が入所して利用しているため、部屋（ベッド）を移動することができないためである。
【００５７】
この状態で、まず、図９に示す並び替え後の予約データ群の最上位に位置する予約ＩＤ「１２５］の予約データ、すなわち新規の予約データが部屋ＩＤ（ベッドＩＤ）「１」から順に割り当て可能であるか確認する。部屋ＩＤ（ベッドＩＤ）「１」は、８月４日以降であれば空いている。予約ＩＤ「１２５］の新規の予約データは、入所予定日「８月３日」〜退所予定日「８月１１日」であるので、８月３日に入所できない部屋ＩＤ（ベッドＩＤ）「１」には割り当てられない。
【００５８】
次に、部屋ＩＤ（ベッドＩＤ）「２」の空き期間を確認すると、８月３日以降が空いているので、新規の予約データを割り当て可能であると判断する。ゆえに、予約ＩＤ「１２５］の新規の予約データは、部屋ＩＤ（ベッドＩＤ）「２」の８月３日〜８月１１日に割り当てられる。
【００５９】
次に、図９に示す並び替え後の予約データ群の上から２番目に位置する予約ＩＤ「１０９］の予約データの入所予定日、入所期間に基づいて、部屋ＩＤ（ベッドＩＤ）「１」から順に空き期間に割り当て可能であるか確認する。予約ＩＤ「１０９］の予約データは、入所予定日「８月３日」〜退所予定日「８月５日」であるので、８月３日に入所できない部屋ＩＤ（ベッドＩＤ）「１」には割り当てられない。
【００６０】
次に、部屋ＩＤ（ベッドＩＤ）「２」の空き期間を確認すると、既に新規の予約データ（予約ＩＤ「１２５」）が割り当てられているので、部屋ＩＤ（ベッドＩＤ）「２」には割り当てられない。同様にして、部屋ＩＤ（ベッドＩＤ）「３」も８月４日からしか空いていないので割り当てられない。次に、部屋ＩＤ（ベッドＩＤ）「４」の空き期間を確認すると、８月３日以降が空いているので、予約データ（予約ＩＤ「１０９］）を割り当て可能であると判断する。ゆえに、予約データ（予約ＩＤ「１０９］）は、部屋ＩＤ（ベッドＩＤ）「４」の８月３日〜８月５日に割り当てられる。
【００６１】
以下、同様にして、図９に示す並び替え後の予約データ群の上から１つずつ順に、部屋ＩＤ（ベッドＩＤ）「１」から順に割り当て可能であるか確認し、予約データを部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能であったら、その部屋ＩＤ（ベッドＩＤ）に予約データを割り当てるということを繰り返す。このように、本第１実施例では、部屋（ベッド）の空き期間を可能な限り断片化させないように、空き期間を詰めるようにして予約データを割り当てることにより、予約状況を最適化している。そして、全ての並び替え後の予約データが部屋ＩＤ（ベッドＩＤ）に割り当てられると、予約台帳ファイルに並び替えた結果を反映（更新）する。
【００６２】
この結果、図１１に示すように、新たに最適化された予約台帳においては、予約ＩＤ「１０１」、「１０４」、「１０６」、「１０８」、「１０９」、「１１１」、「１２１」に割り当てられる部屋ＩＤ（ベッドＩＤ）は変更されず、太い枠線で示すように、予約ＩＤ「１０２」、「１０３」、「１０５」、「１０７」、「１１０」、「１１２」〜「１２０」、「１２２」〜「１２５」に割り当てられる部屋ＩＤ（ベッドＩＤ）が変更されることになる。
【００６３】
一方、上述した割り当て処理において、予約データ（ｉ）が部屋ＩＤ（ｊ）（ベッドＩＤ）の空き期間に割り当てることができず（ステップＳ３０のＮＯ）、かつ、変数ｊがＭａｘとなった場合、すなわち予約データ（ｉ）が、どの部屋ＩＤ（ベッドＩＤ）（ｊ）にも割り当てることができなかった場合には（ステップＳ３４のＹＥＳ）、ＣＰＵ１８は、現在の予約データ（ｉ）が新規の予約データであるか否かを判断する（ステップＳ３６）。そして、割り当てることができなかった予約データ（ｉ）が新規の予約データである場合には（ステップＳ３６のＹＥＳ）、ＣＰＵ１８は、その予約データ（ｉ）をキャンセル待ち（図２のキャンセル待ち４５を参照）として予約台帳ファイルに登録する（ステップＳ３８）。
【００６４】
キャンセル待ちの予約データは、既に確定していた予約がキャンセルされたり、上述した割り当て処理によって予約状況が変更されたりして、キャンセル待ちが割り当て可能となった場合に、その旨が表示される。施設担当者は、キャンセル待ちの予約を通常の予約として登録することを確定させる。このとき、割り当て可能なキャンセル待ちが複数存在する場合は、予約ＩＤ順に自動的に決定するのではなく、施設の従業員が指定するようになっている。
【００６５】
次に、ＣＰＵ１８は、キャンセル待ちとして登録する確認ダイアログを表示部１４に表示し（ステップＳ４０）、変数ｉがｎとなったか否かを判断する（ステップＳ４２）。ここで、ｎは、並び替えた予約データの全数である。そして、変数ｉがｎでない場合、すなわち並び替えた全ての予約データに対する割り当て処理が終了していない場合には（ステップＳ４２のＮＯ）、ステップＳ２４に戻り、次の予約データに対して、上述した処理を繰り返す。一方、変数ｉがｎになった場合、すなわち、並び替えた全ての予約データに対する割り当て処理が終了した場合には（ステップＳ４２のＹＥＳ）、ＣＰＵ１８は、並び替えた結果を予約台帳ファイルに反映し（ステップＳ４４）、その後、ステップＳ１０に戻る。
【００６６】
一方、どの部屋ＩＤ（ベッドＩＤ）にも割り当てることができなかった予約データ（ｉ）が既存の予約データであった場合には（ステップＳ３６のＮＯ）、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ４６）、当該処理を終了する。すなわち、全ての部屋ＩＤ（ベッドＩＤ）で登録できなかった予約データ（ｉ）が既存の予約データであった場合には、既に予約を確定した予約データをキャンセル待ちとするのは不合理であるので、これまでの割り当て処理の結果を予約台帳に反映させずに（新規の予約データを割り当てることなく）、当該処理を終了する。
【００６７】
また、上述したステップＳ１６において、登録・編集・削除画面５０から入力された新規の予約が翌日以降でない場合、すなわち当日の予約であった場合には（ステップＳ１６のＮＯ）、ＣＰＵ１８は、既に当日の０：０１に確定した予約台帳を参照し、新規の予約データが空いている部屋ＩＤ（ベッドＩＤ）に登録可能か確認する（図６のステップＳ５０）。そして、ＣＰＵ１８は、新規の予約データの入所期間と、当日空いている部屋ＩＤ（ベッドＩＤ）の空き期間とに基づいて、新規の予約データが当日空いている部屋ＩＤ（ベッドＩＤ）に割り当て可能であるか否かを判断する（ステップＳ５２）。そして、新規の予約データが当日空いている部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能である場合には（ステップＳ５２のＹＥＳ）、ＣＰＵ１８は、新規の予約データを、その当日空いている部屋ＩＤ（ベッドＩＤ）に割り当てる（ステップＳ５４）。そして、ＣＰＵ１８は、予約台帳ファイルに割り当てた結果を反映し（ステップＳ５６）、その後、ステップＳ１０に戻る。
【００６８】
一方、新規の予約データが当日空いている部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能でない場合には（ステップＳ５２のＮＯ）、ＣＰＵ１８は、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ５８）、当該処理を終了する。
【００６９】
また、上述したステップＳ１２において、ユーザによって新規予約が指示されなかった場合、すなわち予約台帳画面２０において、ユーザが、グループカレンダー２２の既に入っている予約情報の帯をクリックした場合には（ステップＳ１２のＮＯ）、ＣＰＵ１８は、登録・編集・削除画面５０をモーダル表示する（図７のステップＳ６２）。この場合、登録・編集・削除画面５０の各項目には、既定値としてクリックした帯の予約情報が表示される。
【００７０】
ユーザが、登録・編集・削除画面５０から予約情報を編集した後、登録ボタンを押下すると、ＣＰＵ１８は、入所日時から翌日以降の予約であるか否かを判断する（ステップＳ６６）。そして、翌日以降の予約である場合には（ステップＳ６６のＹＥＳ）、ＣＰＵ１８は、予約台帳データベース１６の予約台帳ファイルから、編集された予約データの編集前のデータを除外して、処理翌日以降（翌日を含む）の全予約データを読み出す（ステップＳ６８）。次に、ＣＰＵ１８は、読み出した全予約データに編集した予約データを追加する（ステップＳ７０）。その後、上述したステップＳ２０に進み、編集した予約データを追加した全予約データを、入所予定日時(昇順)、入所期間(降順)、予約ＩＤ(昇順)の優先順で並び替え、上述した割り当て処理を実行する。
【００７１】
すなわち、並び替え後の予約データ群の上から１つずつ順に、部屋ＩＤ（ベッドＩＤ）「１」から順に割り当て可能であるか確認し、予約データが部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能であったら、その部屋ＩＤ（ベッドＩＤ）に予約データを割り当てることを繰り返していく。そして、全ての並び替え後の予約データが部屋ＩＤ（ベッドＩＤ）に割り当てられると、予約台帳ファイルに並び替えた結果を反映（更新）する。
【００７２】
一方、上述した割り当て処理において、編集した予約データがどの部屋ＩＤ（ベッドＩＤ）にも割り当てることができなかった場合には、ＣＰＵ１８は、その編集した予約データをキャンセル待ち（図２のキャンセル待ち４５を参照）として予約台帳ファイルに登録する。また、編集した予約データ以外の既存の予約データがどの部屋ＩＤ（ベッドＩＤ）にも割り当てることができなかった場合には、編集した予約データが受け入れ不可能である旨の警告を表示部１４に表示し、これまでの割り当て処理の結果を予約台帳に反映させずに、当該処理を終了する。
【００７３】
また、編集した予約データが翌日以降でない場合、すなわち当日であった場合には（ステップＳ６６のＮＯ）、上述した図６のステップＳ５０に進み、ＣＰＵ１８は、編集された予約データ（当日）が、当日空いている部屋ＩＤ（ベッドＩＤ）に割り当て可能であるか確認する。そして、編集された予約データが部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能である場合には、編集された予約データを、その当日空いている部屋ＩＤ（ベッドＩＤ）に割り当て、予約台帳ファイルに割り当てた結果を反映する。
【００７４】
一方、編集された予約データが部屋ＩＤ（ｊ）（ベッドＩＤ）の空き期間に割り当てることができない場合には、ＣＰＵ１８は、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ５６）、当該処理を終了する。
【００７５】
上述した第１実施例によれば、新規の予約や、予約の編集を受け付ける度に、所定の並び替え条件に従って予約データを並び替えて、並び替えた予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てることによって、部屋（ベッド）の空き期間を断片化させないように、空き期間を詰めるようにして予約データを割り当てることにより、予約状況を最適化するようにしたので、ユーザに負担をかけることなく、予約の登録確率を向上させ、施設を有効に利用することができる。
【００７６】
（第２実施例：第２のパターン）
本第２実施例は、所定の並び替え条件に従って並び替えて、並び替えた予約情報を１つずつ部屋（ベッド）の空き期間に順番に割り当てることによって予約状況を最適化する際に、利用者が部屋（ベッド）を指定することを想定した例である。したがって、第２実施例では、割り当て処理は、部屋（ベッド）の指定状況を考慮して実行される。なお、部屋（ベッド）を指定するか否かは利用者の選択事項である。
【００７７】
図１２（ａ）、（ｂ）は、本発明の第２実施例による予約管理システム１０の動作を説明するためのフローチャートである。なお、図１２（ａ）、（ｂ）において、第１実施例と同じステップについては省略し、異なるステップのみ示している。また、図１３乃至図１６は、本第２実施例による予約管理システム１０の動作を説明するための概念図である。
【００７８】
まず、予約管理システム１０において、予約台帳画面２０が表示部１４に表示されている状態で、ユーザによって新規予約が指示され、登録・編集・削除画面５０から予約情報を入力した後、登録ボタンが押下されると、ＣＰＵ１８は、入所予定日から翌日以降の予約であるか否かを判断する（ステップＳ１０〜ステップＳ１６）。そして、翌日以降の予約である場合には（ステップＳ１６のＹＥＳ）、ＣＰＵ１８は、予約台帳データベース１６の予約台帳ファイルから、処理翌日以降（翌日を含む）の全予約データ（以下、複数の予約データを予約データ群という）を読み出す（ステップＳ１８）。
【００７９】
次に、ＣＰＵ１８は、読み出した予約データ群のうち、部屋指定（ベッド指定）ありの予約データを、所定の並び替え条件（入所予定日時(昇順)、入所期間(降順)、予約ＩＤ（昇順）の優先順）で並び替える（ステップＳ８２）。なお、新規の予約データが部屋指定（ベッド指定）ありの場合には、新規の予約データも上記部屋指定（ベッド指定）ありの予約データ群に加えて並び替えを実行する。
【００８０】
次に、ＣＰＵ１８は、読み出した予約データ群のうち、部屋指定（ベッド指定）なしの予約データを入所予定日時(昇順)、入所期間(降順)、予約ＩＤ（昇順）の優先順で並び替える（ステップＳ８４）。なお、新規の予約データが部屋指定（ベッド指定）なしである場合には、新規の予約データも上記部屋指定（ベッド指定）なしの予約データ群に加えて並び替えを実行する。
【００８１】
ここで、図１３には、元々の予約データ群と新規の予約データとが示されている。元々の予約データ群は、予約ＩＤ「１０１」〜「１２４」のように、予約ＩＤ順（昇順）で並んでいる。また、予約ＩＤ「１２５」が新規の予約データを示す。そして、予約ＩＤ「１０１」−「１０４」、「１０６」−「１１２」、「１１５」、「１１６」、「１１８」、「１２０」、「１２１」、「１２３」の予約データ、及び予約ＩＤ「１２５」の新規の予約データが部屋指定（ベッド指定）あり、その他の予約ＩＤ「１０５」、「１１３」、「１１４」、「１１７」、「１１９」、「１２２」、「１２４」の予約データが部屋指定（ベッド指定）なしである。
【００８２】
図１４には、並び替え条件（入所予定日時（昇順）、入所期間（降順）、予約ＩＤ（昇順）の優先順）で並び替えられた新規の予約データを含む予約データ群が示されている。新規の予約データ（予約ＩＤ：１２５）の入所予定日が「８月４日」であるので、元々の予約データ群から、入所予定日が「８月３日」以降の予約データが読み出されることになる。この場合、優先順位の高い上側に、部屋指定（ベッド指定）ありの予約データが上記並び替え条件に従って並び替えられ、その下側に予約データが部屋指定（ベッド指定）なしの予約データが上記並び替え条件に従って並び替えられることになる。
【００８３】
次に、ＣＰＵ１８は、変数ｉ＝０、ｊ＝０とし、変数ｉ、ｊを１つインクリメントし（ステップＳ２２〜Ｓ２６）、まず、予約データ（ｉ）が部屋指定（ベッド指定）であるか否かを判断する（ステップＳ９０）。そして、予約データ（ｉ）が部屋指定（ベッド指定）である場合には（ステップＳ９０のＹＥＳ）、部屋（ベッド）を移動することができないので、予約データ（ｉ）を指定されている部屋ＩＤ（ベッドＩＤ）に割り当てる（ステップＳ９４）。
【００８４】
つまり、図１４に示す予約ＩＤ「１０２」−「１０４」、「１０７」−「１１０」、「１１２」、「１１５」、「１１６」、「１１８」、「１２０」、「１２１」、「１２３」の予約データ、及び予約ＩＤ「１２５」の新規の予約データについては、部屋指定（ベッド指定）ありなので、順番に、それぞれが指定する部屋ＩＤ（ベッドＩＤ）に順番に割り当てられていく。
【００８５】
一方、予約データ（ｉ）が部屋指定（ベッド指定）でない場合には（ステップＳ９０のＮＯ）、図５のステップＳ２８に進み、前述した第１実施例と同様に、並び替えた予約データ（ｉ）を１つずつ順に部屋ＩＤ（ベッドＩＤ）（ｊ）順に割り当て可能であるか否かを確認し、予約データ（ｉ）が部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に割り当て可能であれば、その部屋（ベッド）に予約データを割り当てていく（ステップＳ２８〜Ｓ４２）。
【００８６】
図１５（ａ）には、上述した割り当て処理を実行する前の予約データ群の予約状況が示されており、図１５（ｂ）は、本第２実施例による割り当て処理を実行した後の予約データ群の予約状況が示されている。斜線のマスは、部屋指定（ベッド指定）の予約データである。図１５（ａ）に示す予約状況を見て分かるように、入所予定日「８月４日」〜退所予定日「８月８日」、４泊５日の入所期間を有する新規の予約データ（予約ＩＤ：１２５）が入る余地はない。以下、上記割り当て処理の過程を、図１５（ｂ）を参照して説明する。
【００８７】
新規の予約データは、８月２日に受け付けたものであり、割り当て処理も８月２日（探索当日）となる。したがって、新規の予約データは、翌日以降の予約となるので、予約ＩＤ「１０１」、「１１１」、「１０８」、及び「１０６］の予約データについては翌日以降の予約でないので割り当て対象から除外される（固定）。つまり、これらの予約データは、既に利用者が入所して利用しているため、部屋指定（ベッド指定）であるなしにかかわらず、部屋（ベッド）を移動することができない。
【００８８】
この状態で、まず、図１４に示す並び替え後の予約データ群の最上位に位置する予約ＩＤ「１０９」の予約データから１つずつ、それぞれが指定する部屋ＩＤ（ベッドＩＤ）に順番に割り当てられていく。このとき、予約ＩＤ「１２５］の予約データ、すなわち新規の予約データについては、部屋ＩＤ（ベッドＩＤ）「１」を指定しているので、部屋ＩＤ（ベッドＩＤ）「１」の空き期間を確認する。この時点では、部屋ＩＤ（ベッドＩＤ）「１」は、８月４日以降、８月１１日まで空いているので、新規の予約データを割り当て可能であると判断する。ゆえに、予約ＩＤ「１２５］の新規の予約データは、部屋ＩＤ（ベッドＩＤ）「１」の８月４日〜８月８日に割り当てられる。
【００８９】
なお、この時点で、新規の予約データが指定している部屋ＩＤ（ベッドＩＤ）「１」に空きがない場合には、前述した第１実施例と同様に、ＣＰＵ１８は、その予約データ（ｉ）をキャンセル待ち（図２のキャンセル待ち４５を参照）として予約台帳ファイルに登録する（ステップＳ３８）。
【００９０】
また、新規の予約データを割り当てたことで、新規の予約データより優先順位が低い、部屋指定（ベッド指定）している既存の予約データを割り当てることができなくなる場合がある。この場合には、前述した第１実施例と同様に、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ４６）、それまでの割り当て処理の結果を予約台帳に反映させずに（新規の予約データを割り当てることなく）、当該処理を終了する。
【００９１】
なお、上述したように、部屋指定（ベッド指定）している既存の予約データが、指定される部屋ＩＤ（ベッドＩＤ）に優先的に割り当てられることになる。したがって、新規の予約データ（部屋指定（ベッド指定）あり）は、部屋指定（ベッド指定）している既存の予約データが割り当てられた後の、残りの空き期間に対して割り当て可能であるか確認される。ゆえに、図１４に示す例では、新規の予約データは、上記並び替え条件に従って並び替えられることで上から４番目に位置しているが、部屋指定（ベッド指定）している既存の予約データを割り当てた後に、残りの空き期間に新規の予約データ（部屋指定（ベッド指定）あり）が割り当て可能であるか確認しても同様の結果となる。したがって、新規の予約データ（部屋指定（ベッド指定）あり）を、既存の予約データ（部屋指定（ベッド指定）あり）に加えて並び替えを行うのではなく、既存の予約データ（部屋指定（ベッド指定）あり）の並び替えが終了した後、当該並び替えられた既存の予約データ（部屋指定（ベッド指定）あり）の最後に、新規の予約データ（部屋指定（ベッド指定）あり）を加えて、上述した並び替え処理を実行するようにしてもよい。
【００９２】
次に、図１４に示す並び替え後の予約データ群のうち、部屋指定（ベッド指定）なしの予約データについては、前述した第１実施例と同様に、部屋ＩＤ（ベッドＩＤ）「１」から順に割り当て可能であるか確認し、予約データを部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能であったら、その部屋ＩＤ（ベッドＩＤ）に予約データを割り当てるということを繰り返す。
【００９３】
また、この場合も、既存の予約データを割り当てできなくなった場合には、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ４６）、それまでの割り当て処理の結果を予約台帳に反映させずに（新規の予約データを割り当てることなく）、当該処理を終了する。そして、全ての並び替え後の予約データが部屋ＩＤ（ベッドＩＤ）に割り当てられると、予約台帳ファイルに並び替えた結果を反映（更新）する。
【００９４】
この結果、図１６に太い枠線で示すように、新たに最適化された予約台帳において、部屋指定（ベッド指定）なしの、予約ＩＤ「１０５」、「１１３」、「１１４」、「１１７」、「１１９」、「１２２」、「１２４」に割り当てられる部屋ＩＤ（ベッドＩＤ）が変更されることになる。
【００９５】
本第２実施例によれば、新規の予約や、予約の編集を受け付ける度に、所定の並び替え条件に従って予約データを並び替える際に、部屋指定（ベッド指定）する予約情報を優先的に所定の並び替え条件に従って並び替えた後、部屋指定（ベッド指定）しない予約情報を所定の並び替え条件に従って並び替え、部屋指定（ベッド指定）する予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てた後、部屋指定（ベッド指定）しない予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てることによって、部屋指定（ベッド指定）を優先しつつ、部屋（ベッド）の空き期間を断片化させないように、空き期間を詰めるようにして予約データを割り当てることにより、予約状況を最適化するようにしたので、ユーザに負担をかけることなく、予約の登録確率を向上させ、施設を有効に利用することができる。
【００９６】
（第３実施例：第３のパターン）
本第３実施例は、所定の並び替え条件に従って並び替えて、並び替えた予約情報を１つずつ部屋（ベッド）の空き期間に順番に割り当てることによって予約状況を最適化する際に、ある利用者の入所日時が他の利用者の退所日時と重複する場合、あるいは、ある利用者の退所日時が他の利用者の入所日時と重複する場合であっても、施設の利用状況によっては、予約を割り当て可能であることを想定した例である。つまり、ある利用者の入所日時が他の利用者の退所日時と重複する場合、あるいは、ある利用者の退所日時が他の利用者の入所日時と重複する場合であっても、利用者による部屋（ベッド）の使用が重複しないように、入所予定者と退所予定者のいずれか、又は、両者を他の部屋に移動させて退所予定者がチェックアウトするまでの時間を過ごさせるようなサービス提供を行っている施設を想定している。
【００９７】
本発明では、ある利用者の入所日時が他の利用者の退所日時と重複する場合、あるいは、ある利用者の退所日時が他の利用者の入所日時と重複する場合であっても、予約を割り当て可能であることを「被せあり」としている。したがって、第３実施例では、利用者の入所日時及び退所日時と他の利用者の入所日時及び退所日時とが重複する場合であっても予約の割り当てが可能である「被せあり」として予約状況を最適化する例である。
【００９８】
図１７は、本発明の第３実施例による予約管理システム１０の動作を説明するためのフローチャートである。なお、図１７において、前述した第１実施例と同じステップについては省略し、異なるステップのみ示している。また、図１８及び図２０は、本第３実施例による予約管理システム１０の動作を説明するための概念図である。
【００９９】
まず、予約管理システム１０において、予約台帳画面２０が表示部１４に表示されている状態で、ユーザによって新規予約が指示され、登録・編集・削除画面５０から予約情報を入力した後、登録ボタンが押下されると、ＣＰＵ１８は、入所予定日から翌日以降の予約であるか否かを判断する（ステップＳ１０〜ステップＳ１６）。そして、翌日以降の予約である場合には（ステップＳ１６のＹＥＳ）、ＣＰＵ１８は、予約台帳データベース１６の予約台帳ファイルから、処理翌日以降（翌日を含む）の全予約データ（以下、複数の予約データを予約データ群という）を読み出し（ステップＳ１８）、新規の予約データを含む予約データ群を、並び替え条件（入所予定日時（昇順）、入所期間（降順）、予約ＩＤ（昇順）の優先順）で並び替える（ステップＳ２０）。
【０１００】
ここで、本第３実施形態では、まず、予約データ（ｉ）の入所期間を部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に確保できる否かを判断する（ステップＳ１００）。そして、予約データ（ｉ）の入所期間を部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に確保できる場合には（ステップＳ１００のＹＥＳ）、図５のステップＳ３２に進み、ＣＰＵ１８は、予約データ（ｉ）を、その部屋ＩＤ（ｊ）（ベッドＩＤ）に割り当てる（ステップＳ３２）。
【０１０１】
一方、予約データ（ｉ）の入所期間を部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に確保できない場合には（ステップＳ１００のＮＯ）、部屋ＩＤ（ベッドＩＤ）（ｊ）において、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日であり、かつ予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日であるか否かを判断する（ステップＳ１０２）。
【０１０２】
そして、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日であり、かつ予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日である場合には（ステップＳ１０２のＹＥＳ）、部屋ＩＤ（ベッドＩＤ）（ｊ）において、予約データの入所予定日（初日）と他の予約データの退所予定日に「被せあり」を適用するとともに、予約データ（ｉ）の退所予定日（最終日）と他の予約データの入所予定日に「被せあり」を適用する。
【０１０３】
図１８（ａ）には、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日であり、かつ予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日である状況を示している。例えば、予約データ（Ｃ）の入所予定日（８月３日）が他の予約データ（Ａ）の退所予定日（８月３日）であり、かつ予約データ（Ｃ）の退所予定日（８月５日）が他の予約データ（Ｂ）の入所予定日（８月５日）である場合に、他の予約データ（Ａ）の退所予定日（８月３日）と予約データ（Ｃ）の入所予定日（８月３日）を「被せあり」として割り当て可能とし、予約データ（Ｃ）の退所予定日（８月５日）と他の予約データ（Ｂ）の入所予定日（８月５日）を「被せあり」として割り当て可能とすることで、８月３日〜８月５日が完全な空き期間でなくても、８月３日〜８月５日を入所期間とする予約データ（Ｃ）を割り当てることが可能となる。なお、図１８（ａ）〜（ｃ）では、予約データを表す帯の始端と終端を、日付の半分だけを埋めるように記すことで「被せあり」であることを表している。
【０１０４】
一方、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日であり、かつ予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日でない場合には（ステップＳ１０２のＮＯ）、部屋ＩＤ（ベッドＩＤ）（ｊ）において、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日で、かつ退所日が空いているか否かを判断する（ステップＳ１０４）。
【０１０５】
そして、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日で、かつ退所日が空いている場合には（ステップＳ１０４のＹＥＳ）、部屋ＩＤ（ベッドＩＤ）（ｊ）において、予約データ（ｉ）の入所予定日（初日）と他の予約データの退所予定日に「被せあり」を適用する。このように、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日と重複した場合であっても、「被せあり」を適用することで、予約データ（ｉ）を部屋ＩＤ（ベッドＩＤ）（ｊ）に割り当てることが可能となる。
【０１０６】
図１８（ｂ）には、予約データ（Ｃ）の入所予定日（初日）が他の予約データ（Ａ）の退所予定日である状況を示している。例えば、予約データ（Ｃ）の入所予定日（８月３日）が他の予約データ（Ａ）の退所予定日（８月３日）である場合に、他の予約データ（Ａ）の退所予定日（８月３日）と予約データ（Ｃ）の入所予定日（８月３日）を「被せあり」として割り当て可能とすることで、８月３日〜８月５日が完全な空き期間でなくても、８月３日〜８月５日を入所期間とする予約データ（Ｃ）を割り当てることが可能となる。
【０１０７】
また、予約データ（ｉ）の入所予定日（初日）が他の予約データの退所予定日で、かつ退所日が空いていない場合には（ステップＳ１０４のＮＯ）、部屋ＩＤ（ベッドＩＤ）（ｊ）において、予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日で、かつ入所日が空いているか否かを判断する（ステップＳ１０６）。
【０１０８】
そして、予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日で、かつ入所日が空いている場合には（ステップＳ１０６のＹＥＳ）、部屋ＩＤ（ベッドＩＤ）（ｊ）において、予約データ（ｉ）の退所予定日（最終日）と他の予約データの入所予定日に「被せあり」を適用する。このように、予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日と重複した場合であっても、「被せあり」を適用することで、予約データ（ｉ）を部屋ＩＤ（ベッドＩＤ）（ｊ）に割り当てることが可能となる。
【０１０９】
図１８（ｃ）には、予約データ（Ｃ）の退所予定日（最終日）が他の予約データ（Ｂ）の入所予定日である状況を示している。例えば、予約データ（Ｃ）の退所予定日（８月５日）が他の予約データ（Ｂ）の入所予定日（８月５日）である場合に、予約データ（Ｃ）の退所予定日（８月５日）と他の予約データ（Ｂ）の入所予定日（８月５日）を「被せあり」として割り当て可能とすることで、８月３日〜８月５日が完全な空き期間でなくても、８月３日〜８月５日を入所期間とする予約データ（Ｃ）を割り当てることが可能となる。
【０１１０】
以降、ＣＰＵ１８は、変数ｉ、ｊを１つインクリメントしながら（ステップＳ２２〜Ｓ２６）、前述した第１実施例と同様に、並び替えた予約データ（ｉ）を１つずつ順に部屋ＩＤ（ベッドＩＤ）（ｊ）順に割り当て可能であるか否かを確認し、利用者の入所日時及び退所日時と他の利用者の入所日時及び退所日時とが重複する場合であっても、「被せあり」として、予約データ（ｉ）が部屋ＩＤ（ベッドＩＤ）（ｊ）の空き期間に割り当て可能であれば、その部屋（ベッド）に予約データを割り当てていく（ステップＳ２８〜Ｓ４２）。
【０１１１】
一方、予約データ（ｉ）の退所予定日（最終日）が他の予約データの入所予定日で、かつ入所日が空いていない場合には（ステップＳ１０６のＮＯ）、予約データ（ｉ）を部屋ＩＤ（ベッドＩＤ）（ｊ）に割り当てることができないので、前述した第１実施例と同様に、ＣＰＵ１８は、その予約データ（ｉ）をキャンセル待ち（図２のキャンセル待ち４５を参照）として予約台帳ファイルに登録する（ステップＳ３８）。
【０１１２】
また、新規の予約データを割り当てたことで、新規の予約データより優先順位が低い、既存の予約データを割り当てできなくなる場合がある。この場合には、前述した第１実施例と同様に、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ４６）、それまでの割り当て処理の結果を予約台帳に反映させずに（新規の予約データを割り当てることなく）、当該処理を終了する。
【０１１３】
ここで、図１９には、並び替え条件（入所予定日時（昇順）、入所期間（降順）、予約ＩＤ（昇順）の優先順）で並び替えられた新規の予約データを含む予約データ群が示されている。この場合、入所予定日「８月４日」〜退所予定日「８月１１日」、７泊８日の入所期間を有する新規の予約データ（予約ＩＤ：１２５）の入所期間が８日間と最も長いので最上位となり、その後に既存の予約データが上記並び替え条件に従って並び替えられることになる。
【０１１４】
図２０（ａ）には、上述した割り当て処理を実行する前の予約データ群の予約状況が示されており、図２０（ｂ）は、本第３実施例による割り当て処理を実行した後の予約データ群の予約状況が示されている。図２０（ａ）に示す予約状況を見て分かるように、入所予定日「８月４日」〜退所予定日「８月１１日」、７泊８日の入所期間を有する新規の予約データ（予約ＩＤ：１２５）が入る余地はない。
【０１１５】
新規の予約データは、８月２日に受け付けたものであり、割り当て処理も８月２日（探索当日）となる。したがって、新規の予約データは、翌日以降の予約となるので、予約ＩＤ「１０１」、「１１１」、「１０８」、及び「１０６］の予約データについては翌日以降の予約でないので割り当て対象から除外される（固定）。つまり、これらの予約データは、既に利用者が入所して利用しているため、部屋指定（ベッド指定）であるなしにかかわらず、部屋（ベッド）を移動することができないためである。
【０１１６】
この状態で、まず、図１９に示す並び替え後の予約データ群の最上位に位置する予約ＩＤ「１０９」の予約データから１つずつ、部屋ＩＤ（ベッドＩＤ）に順番に割り当てられていく。予約ＩＤ「１０９」の予約データは、入所予定日「８月３日」〜退所予定日「８月５日」である。一方、部屋ＩＤ（ベッドＩＤ）「１」は、８月２日〜８月３日に予約ＩＤ「１０１」の予約データが既に割り当てられている。したがって、予約ＩＤ「１０１」の退所予定日と予約ＩＤ「１０９」の入所予定日が重複するので、前述した第１実施例では、部屋ＩＤ（ベッドＩＤ）「１」には、予約ＩＤ「１０９」の予約データを割り当てることができない。
【０１１７】
これに対して、本第３実施例では、ある予約データの入所予定日と他の予約データの退所予定日とが重複していても、「被せあり」が適用されているので、予約ＩＤ「１０９」の予約データを部屋ＩＤ（ベッドＩＤ）「１」に割り当てることが可能であると判断する。ゆえに、予約ＩＤ「１０９］の予約データは、部屋ＩＤ（ベッドＩＤ）「１」の８月３日〜８月５日に割り当てられる。
【０１１８】
次に、図１９に示す並び替え後の予約データ群の予約ＩＤ「１０２」の予約データが、部屋ＩＤ（ベッドＩＤ）「２」に割り当てられ、予約ＩＤ「１０４」の予約データが、部屋ＩＤ（ベッドＩＤ）「３」に割り当てられる。
【０１１９】
そして、入所予定日「８月４日」〜退所予定日「８月１１日」である予約ＩＤ「１２５」の新規の予約データについては、部屋ＩＤ（ベッドＩＤ）「２」に割り当て可能であるか確認される。部屋ＩＤ（ベッドＩＤ）「２」には、８月３日〜８月４日に予約ＩＤ「１０２」の予約データが既に割り当てられている。つまり、予約ＩＤ「１０２」の退所予定日と予約ＩＤ「１２５」の入所予定日が重複している。しかしながら、本第３実施例では、「被せあり」が適用されるので、予約ＩＤ「１２５」の新規の予約データを部屋ＩＤ（ベッドＩＤ）「２」に割り当てることが可能であると判断する。ゆえに、予約ＩＤ「１２５］の新規の予約データは、部屋ＩＤ（ベッドＩＤ）「２」の８月４日〜８月１１日に割り当てられる。
【０１２０】
以下、同様にして、図１９に示す並び替え後の予約データ群の上から１つずつ順に、部屋ＩＤ（ベッドＩＤ）「１」から順に割り当て可能であるか確認し、「被せあり」を適用しつつ、予約データを部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能であったら、その部屋ＩＤ（ベッドＩＤ）に予約データを割り当てるということを繰り返していく。そして、全ての並び替え後の予約データが部屋ＩＤ（ベッドＩＤ）に割り当てられると、予約台帳ファイルに並び替えた結果を反映（更新）する。
【０１２１】
一方、上述した割り当て処理の過程おいて、新規の予約データを割り当てることができない場合には、その新規の予約データをキャンセル待ち（図２のキャンセル待ち４５を参照）として予約台帳ファイルに登録する（ステップＳ３８）。
【０１２２】
また、新規の予約データを割り当てたことで、新規の予約データより優先順位が低い、既存の予約データを割り当てることができない合には、前述した第１実施例と同様に、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ４６）、それまでの割り当て処理の結果を予約台帳に反映させずに（新規の予約データを割り当てることなく）、当該処理を終了する。
【０１２３】
本第３実施例によれば、新規の予約や、予約の編集を受け付ける度に、所定の並び替え条件に従って予約データを並び替えた後、予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てる際に、ある予約情報の利用開始予定日と他の予約情報の利用終了予定日とが重複している場合に、他の予約情報の利用終了予定日を割り当て可能な空き期間とし、ある予約情報の利用終了予定日が他の予約情報の利用開始予定日とが重複している場合に、他の予約情報の利用開始予定日を割り当て可能な空き期間として、並び替えられた予約情報を１つずつ部屋（ベッド）の空き期間に順番に割り当てるようにしたので、空き期間を効率的に確保することができる。また、部屋（ベッド）の空き期間を断片化させないように、空き期間を詰めるようにして予約データを割り当てることで、予約状況を最適化するようにしたので、ユーザに負担をかけることなく、予約の登録確率を向上させ、施設を有効に利用することができる。
【０１２４】
（第４実施例：第４のパターン）
本第４実施例は、上述した第２実施例による「部屋（ベッド）指定あり」と第３実施例による「被せあり」とを組み合わせたものである。したがって、本第４実施例による予約管理システム１０の動作は、上述した第１実施例の図４乃至図７に示すフローチャートと、第２実施例の図１２（ａ）、（ｂ）に示すフローチャート、第３実施例の図１７に示すフローチャートを組みあせたものであるので図を省略する。
【０１２５】
図２１は、本第４実施例による予約管理システム１０の動作を説明するための概念図である。なお、本第４実施例において、並び替え条件（入所予定日時（昇順）、入所期間（降順）、予約ＩＤ（昇順）の優先順）で並び替えられた新規の予約データを含む予約データ群は、第２実施例の図１４と同じであるとする。
【０１２６】
すなわち、新規の予約データ（予約ＩＤ：１２５）の入所予定日が「８月４日」であるので、入所予定日が「８月３日」以降の予約データが読み出され、部屋指定（ベッド指定）ありの予約データが上記並び替え条件に従って並び替えられ、その下側に予約データが部屋指定（ベッド指定）なしの予約データが上記並び替え条件に従って並び替えられることになる。
【０１２７】
まず、第２実施例と同様に、部屋（ベッド指定）ありの予約データが順番に部屋（ベッド）に割り当てられていく。部屋（ベッド指定）ありであるので、図２１（ａ）、（ｂ）に示すように、部屋（ベッド指定）の移動はなく、元々の部屋（ベッド指定）に割り当てられることになる。
【０１２８】
このとき、予約ＩＤ「１２５］の予約データ、すなわち新規の予約データについては、部屋ＩＤ（ベッドＩＤ）「１」を指定しているので、部屋ＩＤ（ベッドＩＤ）「１」の空き期間を確認する。部屋ＩＤ（ベッドＩＤ）「１」には、図２１（ａ）、（ｂ）に示すように、８月２日〜８月３日に予約ＩＤ「１０１」の予約データが既に割り当てられている。つまり、予約ＩＤ「１０１」の退所予定日と予約ＩＤ「１２５」の入所予定日が重複している。
【０１２９】
前述した第１、第２実施例のように「被せあり」が適用されない場合には、例えば、予約ＩＤ「１０１」の退所予定日と予約ＩＤ「１０９」の入所予定日が重複し、かつ予約ＩＤ「１０１」の退所予定時刻と予約ＩＤ「１０９」の入所予定時刻が重複すれば、部屋ＩＤ（ベッドＩＤ）「１」には、予約ＩＤ「１０９」の予約データを割り当てることができない。これに対して、本第４実施例では、上述した第３実施形態と同様に「被せあり」が適用されるので、異なる利用者の退所予定日と入所予定日が同日で、かつそれぞれの退所予定時刻と入所予定時刻が重複していても割り当てることが可能である。ゆえに、予約ＩＤ「１２５」の新規の予約データを部屋ＩＤ（ベッドＩＤ）「１」に割り当てることが可能であると判断する。ゆえに、図２１（ｂ）に示すように、予約ＩＤ「１２５］の新規の予約データは、部屋ＩＤ（ベッドＩＤ）「１」の８月３日〜８月１１日に割り当てられる。
【０１３０】
次に、並び替え後の予約データ群のうち、部屋指定（ベッド指定）なしの予約データについては、前述した第３実施例と同様に、部屋ＩＤ（ベッドＩＤ）「１」から順に割り当て可能であるか確認し、予約データを部屋ＩＤ（ベッドＩＤ）の空き期間に割り当て可能であったら、図２１（ｂ）に示すように、その部屋ＩＤ（ベッドＩＤ）に予約データを割り当てるということを繰り返す。図２１（ｂ）に示す予約ＩＤ「１０５」、「１１３」、「１１４」、「１１９」、「１２２」、「１１７」及び「１２４」がこれに相当する。
【０１３１】
また、この場合も、既存の予約データを割り当てできなくなった場合には、新規の予約データが受け入れ不可能である旨の警告を表示部１４に表示し（ステップＳ４６）、それまでの割り当て処理の結果を予約台帳に反映させずに（新規の予約データを割り当てることなく）、当該処理を終了する。そして、全ての並び替え後の予約データが部屋ＩＤ（ベッドＩＤ）に割り当てられると、予約台帳ファイルに並び替えた結果を反映（更新）する。
【０１３２】
本第４実施例によれば、新規の予約や、予約の編集を受け付ける度に、所定の並び替え条件に従って予約データを並び替える際に、部屋指定（ベッド指定）する予約情報を優先的に所定の並び替え条件に従って並び替えた後、部屋指定（ベッド指定）しない予約情報を所定の並び替え条件に従って並び替え、部屋指定（ベッド指定）する予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てた後、部屋指定（ベッド指定）しない予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てるとともに、予約データを１つずつ部屋（ベッド）の空き期間に順番に割り当てる割り当ての際に、ある予約情報の利用開始予定日と他の予約情報の利用終了予定日とが重複している場合に、他の予約情報の利用終了予定日を割り当て可能な空き期間とし、ある予約情報の利用終了予定日が他の予約情報の利用開始予定日とが重複し、かつ予約情報の退所予定時刻と他の予約情報の入所予定時刻が重複していている場合であっても、他の予約情報の利用開始予定日を割り当て可能な空き期間としたので、部屋指定（ベッド指定）を優先させつつ、空き期間を効率的に確保することができる。また、部屋（ベッド）の空き期間を断片化させないように、空き期間を詰めるようにして予約データを割り当てることで予約状況を最適化するようにしたので、ユーザに負担をかけることなく、予約の登録確率を向上させ、施設を有効に利用することができる。
【符号の説明】
【０１３３】
１０  予約管理システム
１２  ＲＯＭ
１３  ＲＡＭ
１４  表示部
１５  操作部（タッチパネル）
１６  予約台帳データベース
１７  外部記録媒体
２０  予約台帳画面
５０  登録・編集・削除画面
【図１】
2019082772.tif 000003
【図２】
2019082772.tif 000004
【図３】
2019082772.tif 000005
【図４】
2019082772.tif 000006
【図５】
2019082772.tif 000007
【図６】
2019082772.tif 000008
【図７】
2019082772.tif 000009
【図８】
2019082772.tif 000010
【図９】
2019082772.tif 000011
【図１０】
2019082772.tif 000012
【図１１】
2019082772.tif 000013
【図１２】
2019082772.tif 000014
【図１３】
2019082772.tif 000015
【図１４】
2019082772.tif 000016
【図１５】
2019082772.tif 000017
【図１６】
2019082772.tif 000018
【図１７】
2019082772.tif 000019
【図１８】
2019082772.tif 000020
【図１９】
2019082772.tif 000021
【図２０】
2019082772.tif 000022
【図２１】
2019082772.tif 000023