郵便番号と住所の入力

7桁の郵便番号を調べれば住所の先頭部分が解かりますが、これを利用して住所を入力します。
また郵便番号が解からないとき、住所の一部をキーワードにして郵便番号を調べます。
郵便番号表は 住所郵便番号のダウンロードサービス からダウンロードできます。
ファイル形式は CSV(可変長データ)で、表ソフト(エクセルなど)に読み込むのですが、TEXT 形式でタイプされているので EDITOR で表示したり、プログラムで検索する場合にも利用できます。

前田稔(Maeda Minoru)の超初心者のプログラム入門

郵便番号表

住所の入力処理で郵便番号がわからないことが良くあります。
コンピュータの入力処理で、郵便番号がわからないからと言って、郵便番号台帳を探し回るのでは話になりません。
また逆に郵便番号から「住所の最初の部分」を検索して入力することもできます。
この機能はタイプが苦手な人に取って助けとなり、また住所の入力エラーを防ぐ意味からも組み込みたいものです。
今回は「住所から郵便番号を調べる」方法と「郵便番号から住所を調べる」方法をプログラムします。


郵便番号から住所を検索

このプログラムでは、郵便番号と住所が検索できるのは大阪府だけに限定します。
  1. 都道府県の入力には Combo Box を使用します。
    Combo Box に表示する都道府県のテーブルです。
    Combo Box の詳細は Combo Box から選択して Edit Box で表示する を参照して下さい。
        LPCTSTR tbl_3[]=
        { "北海道", "青森県", "岩手県", "宮城県", "秋田県",
          "山形県", "福島県", "茨城県", "栃木県", "群馬県",
          "埼玉県", "千葉県", "東京都", "神奈川県", "新潟県",
          "富山県", "石川県", "福井県", "山梨県", "長野県",
          "岐阜県", "静岡県", "愛知県", "三重県", "滋賀県",
          "京都府", "大阪府", "兵庫県", "奈良県", "和歌山県",
          "鳥取県", "島根県", "岡山県", "広島県", "山口県",
          "徳島県", "香川県", "愛媛県", "高知県", "福岡県",
          "佐賀県", "長崎県", "熊本県", "大分県", "宮崎県",
          "鹿児島県", "沖縄県",
        };
        
  2. 郵便番号の EditBox には Number を設定して数字以外の入力を禁止します。
  3. 住所の入力には「全角」を郵便番号には「半角」を設定します。
  4. プログラムを開始すると「郵便番号-1」にフォーカスを設定します。
  5. 7桁の郵便番号を入力して「住所検索」ボタンをクリックすると郵便番号ファイルを検索します。
    検索は strstr() 関数を使うと一発です。
  6. 郵便番号が見つからなかったときは、エラーボックスにメッセージを表示して下さい。
  7. 郵便番号が見つかったときの処理です。


住所から郵便番号を検索

このプログラムでは、郵便番号と住所が検索できるのは大阪府だけに限定します。
  1. 「住所-1」に検索キーをタイプして「〒検索」ボタンをクリックすると検索された住所一覧を ListBox に表示します。
  2. ListBox から該当する行を選択して「OK」ボタンが押されたときの処理です。
  3. 「キャンセル」ボタンが押されたときは、そのままの状態で住所の入力画面に戻ります。


郵便番号ファイル

次の表は、このプログラムで使用したホームページからダウンロードした郵便番号と住所のデータです。
データサイズは、大阪府だけで「155K バイト」あります。
5340000,大阪府,大阪市都島区,以下に掲載がない場合,0,0,0,0
5340026,大阪府,大阪市都島区,網島町,0,0,0,0
5340013,大阪府,大阪市都島区,内代町,0,0,1,0
5340025,大阪府,大阪市都島区,片町,0,0,1,0
5340001,大阪府,大阪市都島区,毛馬町,0,0,1,0
5340015,大阪府,大阪市都島区,善源寺町,0,0,1,0
5340002,大阪府,大阪市都島区,大東町,0,0,1,0
5340011,大阪府,大阪市都島区,高倉町,0,0,1,0
5340016,大阪府,大阪市都島区,友渕町,0,0,1,0
5340027,大阪府,大阪市都島区,中野町,0,0,1,0
5340024,大阪府,大阪市都島区,東野田町,0,0,1,0
5340022,大阪府,大阪市都島区,都島中通,0,0,1,0
5340021,大阪府,大阪市都島区,都島本通,0,0,1,0
5340023,大阪府,大阪市都島区,都島南通,0,0,1,0
5340014,大阪府,大阪市都島区,都島北通,0,0,1,0
5340012,大阪府,大阪市都島区,御幸町,0,0,1,0
5530000,大阪府,大阪市福島区,以下に掲載がない場合,0,0,0,0
5530001,大阪府,大阪市福島区,海老江,0,0,1,0
5530007,大阪府,大阪市福島区,大開,0,0,1,0
5530002,大阪府,大阪市福島区,鷺洲,0,0,1,0
5530004,大阪府,大阪市福島区,玉川,0,0,1,0
5530005,大阪府,大阪市福島区,野田,0,0,1,0
5530003,大阪府,大阪市福島区,福島,0,0,1,0
5530006,大阪府,大阪市福島区,吉野,0,0,1,0
5540000,大阪府,大阪市此花区,以下に掲載がない場合,0,0,0,0
5540011,大阪府,大阪市此花区,朝日,0,0,1,0
5540032,大阪府,大阪市此花区,梅町,0,0,1,0
5540022,大阪府,大阪市此花区,春日出中,0,0,1,0
5540023,大阪府,大阪市此花区,春日出南,0,0,1,0
5540021,大阪府,大阪市此花区,春日出北,0,0,1,0
5540031,大阪府,大阪市此花区,桜島,0,0,1,0
5540014,大阪府,大阪市此花区,四貫島,0,0,1,0
5540024,大阪府,大阪市此花区,島屋,0,0,1,0
5540001,大阪府,大阪市此花区,高見,0,0,1,0
5540052,大阪府,大阪市此花区,常吉,0,0,1,0
5540002,大阪府,大阪市此花区,伝法,0,0,1,0
5540051,大阪府,大阪市此花区,酉島,0,0,1,0
5540012,大阪府,大阪市此花区,西九条,0,0,1,0
5540013,大阪府,大阪市此花区,梅香,0,0,1,0
5540033,大阪府,大阪市此花区,北港,0,0,1,0
5540041,大阪府,大阪市此花区,北港白津,0,0,1,0
5540042,大阪府,大阪市此花区,北港緑地,0,0,1,0
5500000,大阪府,大阪市西区,以下に掲載がない場合,0,0,0,0
5500026,大阪府,大阪市西区,安治川,0,0,1,0
5500011,大阪府,大阪市西区,阿波座,0,0,1,0
5500012,大阪府,大阪市西区,立売堀,0,0,1,0
5500004,大阪府,大阪市西区,靱本町,0,0,1,0
5500002,大阪府,大阪市西区,江戸堀,0,0,1,0
5500006,大阪府,大阪市西区,江之子島,0,0,1,0
5500021,大阪府,大阪市西区,川口,0,0,1,0
5500014,大阪府,大阪市西区,北堀江,0,0,1,0
5500003,大阪府,大阪市西区,京町堀,0,0,1,0
5500027,大阪府,大阪市西区,九条,0,0,1,0
5500025,大阪府,大阪市西区,九条南,0,0,1,0
5500024,大阪府,大阪市西区,境川,0,0,1,0
        以下同様の記述が続きます。

超初心者のプログラム入門(Win32API C++)