[更新日]1998.11.06
問15 内部設計に関する次の記述を読んで、設問1,2に答えよ。
全国に営業所をもつ企業において,本社倉庫から各営業所に商品を 配送するトラックの運転手の割当てを行うサブシステムを設計する。 このサブシステムの概要と,運転手の割当て方針は,次のとおりである。
〔運転手割当てサブシステムの概要〕
(1) 月末に,配送計画ファイルを受け取り,翌月の運転手の割当てを行って, 月間運転手割当てファイルを作成する。
(2) 配送計画ファイル及び月間運転手割当てファイルのレコード様式は, 次のとおりである。
配送計画ファイルのレコード様式
配送先
営業所
コード
出庫日
トラック
台数
月間運転手割当てファイルのレコード様式
運転手
人数
(n)
番号 1
…
番号 n
配送計画ファイルは,“配送先営業所コード”の昇順に整列されている。
一つの“配送先営業所コード”について,同一の“出庫日”のレコードが複数件存在することはない。
月間運転手割当てファイルは,“出庫日”の昇順に整列する。
(3) 営業所によって配送に要する日数は異なる。配送は,月をまたがることがある。
(4) 各トラックは,1 回に 1 営業所だけに商品を配送する。1 営業所に配送するために複数台のトラックが必要になることがある。
(5) トラック 1 台に 1 名の運転手が乗り込む。
(6) 割り当てる運転手が不足することはない。
(7) 割当てを行うとき,運転手レコードの配列及び営業所レコードの配列を使用する。各配列の要素は,次のとおりである。
運転手レコードの配列の要素
{運転手番号,最終戻り月日,翌月休日数,翌月通算乗車回数}
営業所レコードの配列の要素
{営業所コード,配送に必要な日数}
運転手レコードの配列には,初期値としてすべての運転手の“運転手番号”が設定されている。
営業所レコードの配列には,初期値としてすべての営業所の“営業所コード”及び“配送に必要な日数”が設定されている。
(8) 翌月の日数はデータとして与えられる。これを基にして運転手レコードの“翌月休日数”の初期値が決まる。
〔運転手の割当て方針〕
(1) 各運転手の 1 か月間の休日数が,できるだけ均等になるようにする。
(2) 各運転手の 1 か月間の配送に出る回数が,できるだけ均等になるようにする。
(3) 運転手を割り当てるとき,(1) の方針が (2) の方針に優先する。
(4) 運転手は,配送から戻ってきた翌日は必ず休日となる。また,配送が割り当てられなかった日も休日となる。
設問1 運転手を割り当てるとき,前月割り当てたときに得られた運転手ごとのあるデータが必要となることが分かった。このデータを“ T ファイル”という名のファイルに記録しておき,次回の割当て時に読み込むことにした。運転手番号のほかに,“ T ファイル”に記録すべきデータを,解答群の中から選べ。
解答群
ア 最終出庫日 イ 最終配送先営業所コード ウ 最終戻り月日
エ 翌月休日数 オ 翌月通算乗車回数
設問2 運転手割当てサブシステムの処理モジュール (1) 〜 (3) の処理の内容は,次のとおりである。 に入れる正しい答えを,解答群の中から選べ。解答は,重複して選んでもよい。
〔運転手割当てサブシステムの各処理モジュールの処理内容〕
(1) 配送計画ファイルを“ ”の昇順に整列する。
(2) T ファイルを読み込み,運転手レコードの配列に初期値を設定する。
(3) 整列した配送計画ファイルを 1 レコードずつ読み込み,〜 の処理を配送計画ファイルが終了するまで繰り返す。
第 1 キーを“ ”の降順,第 2 キーを“ ”の昇順として,運転手レコードの配列を整列する。
運転手レコードの配列の先頭から,“最終戻り月日”が“ ”よりも 2 日以上前のレコードを探し,トラック台数分の運転手を割り当てる。
割り当てた運転手について,営業所レコードの配列を参照して,戻ってくる月日を算出し,“最終戻り月日”を更新するとともに,“翌月休日数”を減らし,“翌月通算乗車回数”を増やす。
割り当てた結果を月間運転手割当てファイルに出力する。
ア 運転手番号 イ 月末 ウ 最終戻り月日
エ 出庫日 オ トラック台数 カ 配送先営業所コード
キ 配送に必要な日数 ク 翌月休日数 ケ 翌月通算乗車回数