「情報システムの概要」
新教科「情報」現職教員等講習会資料
平成13年8月1日(水)
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をマスターする最大の早道である。(それでも数年間はかかる覚悟で臨むこと。学問に王道はないのである…。)