「情報システムの概要」

新教科「情報」現職教員等講習会資料

平成1381日(水)

gbb60166@gmail.com

目的

情報システムを開発するために必要となる設計の重要性について理解すると共に,設計に関する基本的な知識や技術を習得し,システム開発者として実際に活用する能力と態度を身に付ける。

 

内容

情報システムを開発するにはコンピュータに関する知識だけではなく,問題を発見したり,発見した問題をどのように解決するかという手順・アルゴリズムを正確に理解する能力が求められる。

しかし実際に運用してみないと発見されない問題も多いことも事実である。そのためシステム開発者はトータル・コーディネータとして,システムの保守・点検にあたることが求められる。

本講座では実際に実務で使用されている学校給食栄養計算ソフトを例に取り,「システム設計」「コーディング」「テスト」「ドキュメント・ヘルプファイルの作成」「アーカイブの作成」「配布」「バッチファイルの使用」「セキュリティ」「著作権」「アルゴリズム」等について説明する。

さらに Excel VBA (Visual Basic for Applications) を使用して,簡単なシステム開発を行う。

 

目標

 

テキスト60,61ページに掲載されている「郵便料金システム」を作成する。

 

ユーザーフォームを作るためにはVisual Basic Editor(VBE)を使用します。VBEを呼び出すためのボタンをメニューバーに表示することにしましょう。

 メニューバー上にマウスカーソルを持っていき右クリックします。すると表示することができる項目の一覧が表示されるので「Visual Basic」にチェックを付けます。

*

するとコマンドバーが表示されます。

をクリックすると「Visual Basic Editor」が表示されます。

ユーザーフォームを作成するにはをクリックします。

 

ユーザーフォーム上に「Label」「CommandButton」などを配置して「Caption」をわかりやすい名前に変更します。

 

コントロール名

Caption

備考

対応するコントロール

Label1

郵便物の重量を入力してください

 

Textbox1

TextBox1

 

郵便物重量

 

Label2

グラム

 

 

Frame1

形式

 

OptionButton1, OptionButton2

OptionButton1

定型

 

Frame1

OptionButton2

定形外

 

Frame1

CheckBox1

速達

 

 

CommandButton1

計算

 

 

CommandButton2

閉じる

 

 

 

「書式」「整列」,「同じサイズを揃える」「間隔を均等にする」などを使い整形する。

「プロパティウィンドウ」の数値を直接書き換えても良い。

[Ctrl]を押しながらクリックをしていくと不連続なものを選択できる

[Shift]を押しながら,最初と最後のものをクリックすると連続したものを選択出来る

[Ctrl]を押しながらコントロールをドラッグするとコントロールのコピーが作成できる


 ユーザーフォームを表示

 コードの表示

 

ユーザーフォームを閉じるコードを書く

Private Sub CommandButton2_Click()

    Unload Me

End Sub

 

VBEボタンをクリックすると作成したフォームが表示されます

郵便1st.xls

 

TextBox1の初期値として「100」を設定するした方が良い。ユーザーに「数値」を入力するのだということを印象づけられる。

 

→プロパティウィンドウを使い,「Value」を「100」にする。

 

ユーザーフォームが表示されたとき「OptionButton1」に黒丸が付いた状態にしたい。

→プロパティウィンドウを使い,「Value」を「True」にする。

 

手始めに,定形外の料金が表示されるようにしたい。次のコードを記入する。

※「半角スペース+_(アンダースコア)」は,「次の行の続く」という意味です。

 

Private Sub CommandButton1_Click()

 

    Dim 料金 As Integer

   

    Select Case TextBox1

    Case 0 To 50

        料金 = 120

    Case 50 To 75

        料金 = 140

    Case 75 To 100

        料金 = 160

    Case 100 To 150

        料金 = 200

    Case 150 To 200

        料金 = 240

    Case 200 To 250

        料金 = 270

    Case 250 To 500

        料金 = 390

    Case 500 To 750

        料金 = 580

    Case 750 To 1000

        料金 = 700

    Case 1000 To 2000

        料金 = 950

    Case 2000 To 3000

        料金 = 1150

    Case 3000 To 4000

        料金 = 1350

    End Select

 

    MsgBox "料金は" & 料金 & "円です。", _

        Title:="郵便料金", Buttons:=vbInformation

End Sub

郵便2.xls

「重量が0または負の数字の場合」「重量の入力がない場合」はエラーメッセージを表示する。

Private Sub CommandButton1_Click() の中に,次のコードを追加

 

    If TextBox1 <= 0 Or TextBox1 = Empty Then

        MsgBox "重量を入力して下さい", Title:="エラー"

        Exit Sub

    End If

 

■「重量が4kgを超える場合」もエラーメッセージを表示する。

Private Sub CommandButton1_Click() の中に,次のコードを追加

 

    If TextBox1 > 4000 Then

        MsgBox "通常郵便では扱えません", Title:="エラー"

        Exit Sub

    End If

 

TextBox1には数値しか入力しないので,日本語入力は出来ないようにしたい。

→「IMEMode」を「fmIMEModedisable」にする

郵便3.xls

速達料金の加算を計算する

Private Sub CommandButton1_Click() の中に,次のコードを追加

 

    If CheckBox1 = True Then

        Select Case TextBox1

        Case 0 To 250

            料金 = 料金 + 270

        Case 250 To 1000

            料金 = 料金 + 370

        Case 1000 To 4000

            料金 = 料金 + 630

        End Select

    End If

 

重量が50gを超えるにもかかわらず,「定型(50gまで)」に黒丸が付いていたら,警告を発して「定形外」に黒丸を付け替える。

Private Sub CommandButton1_Click() の中に,次のコードを追加

 

    If OptionButton1 = True And TextBox1 > 50 Then

        MsgBox "定型料金では出せません。「定型外」に変更して計算します。", _

            Buttons:=vbCritical, Title:="警告"

        OptionButton2 = True

    End If

郵便4.xls

 

重量が50g以下のとき,「定型」「定型外」の処理を追加する。

Private Sub CommandButton1_Click() の中に,次のコードを追加

 

    Case 0 To 25

        If OptionButton1 = True Then

            料金 = 80

        ElseIf OptionButton2 = True Then

            MsgBox prompt:="定型料金で済む可能性もありますが,このまま計算します。", _

                Buttons:=vbInformation, Title:="問い合わせ"

            料金 = 120

        End If

    Case 25 To 50

        If OptionButton1 = True Then

            料金 = 90

        ElseIf OptionButton2 = True Then

            MsgBox prompt:="定型料金で済む可能性もありますが,このまま計算します。", _

                Buttons:=vbInformation, Title:="問い合わせ"

            料金 = 120

        End If

 

システムのテスト

 

 料金のところに「10」「200」「5000」「-120」「365」「777」「100-25」「---400」「2000/8/1」「dog

 形式のところに「定型(50gまで)」「定形外」

 速達のところのチェックを「付ける」「付けない」

 

といったデータを片っ端から入力し,料金が正しく計算されているかテストせよ。

また,表示されるメッセージは妥当なものかどうか検討して,改善案を提案せよ。

その他の気づきを,どんなに些細なことでも良いので述べよ。

 

実際にシステム開発をしている者から見ると,このシステムには致命的な欠陥 がある。それは何であるか。

 

受講者への課題

 

数値を入力するのに,わざわざキーボードまで手を伸ばすのが面倒くさい。

そこで「スピンボタン(SpinButton)」というコントロールを追加して,マウスだけで重量を入力出来るようにしたい。どのようなコードを書けば良いのか調べて,完成させよ。

 

このためには「VBE」の「ヘルプ(H)」をクリックして,「SpinButton」というキーワードで調べていくことである。

 

 

備考…「マクロの記録」について

 

実際にシステム開発をしようとすると,どのようなコードを書けば良いのか分からないことが多い。その場合は「マクロの記録」を使用すると良い。

の中からをクリックする。すると

というダイアログが開くので,「OK」をクリックする。すると,それ以後のExcelでの操作がすべて記録される。終了したいときは

の中の「■」をクリックすると良い。Visual Basic Editor を開くと,記録したコードが見られる。

 

Sub Macro1()

'

' Macro1 Macro

' マクロ記録日 : 2001/7/25  ユーザー名 :

'

 

'

    Range("A1:B6").Select

    Selection.Copy

    Sheets("Sheet2").Select

    Range("B7").Select

    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, _

        SkipBlanks:=False, Transpose:=False

End Sub

 

 もし意味の分からない単語があれば,その単語のスペルの中にカーソルの「|」を持っていき,「F1」キーを押すと,その単語についてのヘルプファイルが表示される。(ただし「Visual Basic ヘルプファイル」が追加インストールされていることが必要である。「Visual Basic ヘルプファイル」は標準インストールではインストールされない。)

 

 「マクロの記録を使いこなすこと」は,「ヘルプファイルで調べること」と並んでVBAをマスターする最大の早道である。(それでも数年間はかかる覚悟で臨むこと。学問に王道はないのである…。)

 

 

 

 


 [1]郵便料金が改定されてしまうと,ソースコードを書き直さなければならないことである。

 変更される可能性がある箇所は独立させることが望ましい。