薬剤師のプログラミング備忘録

変人薬剤師の独り言

ランダムに出題をするプログラム

忙しさの合間を縫ってdatabaseの方を充実させるはずが、国家試験を見ているうちに出題システムを作る方が楽しくなってしまっていました。

 

正誤の照合が上手くいかないので、いろいろとテストしていますが、自動的に問題を出題させるのはそれほど難しくありません。

まず、

<form action="" method="post"

<input type='submit' value='出題' />

</form>

で出題ボタン作ります。クリック後の転送先は同じページにしています。

特に理由もありませんが、基本的に私は同一ページで全ての動作を終わらせるようにしています。

 

この際に、inputにhiddenを加えて、何らかのpostを組み込みます。

このpostが存在することによって、出題をクリックしたことを認識して、問題をランダムに表示させています。postが無ければ問題は表示されません=初回にページを開いた際には問題は表示されません。

 

問題は、databaseから取得しています。

先に作成した自動出題プログラムとは別に、問題自体をまるごとdatabaseに登録しています。(前回のものは、医薬品名を登録することによって、出題形式、つまり文章そのものを自動で作成していました)

まず、特定の数だけ数字を並べて、その後ランダムに数字を入れ替えします。

//1から5までの数字を並べる

$array_num = range(1,5);

//前述の数字をランダムに並び替える

$s_ar_num = shuffle($array_num);

擬似的に非重複性の乱数を生成することによって、"11245"というような数字の重複を防ぎます。

これをforループで指定回数databaseから問題文を取得します。

 for ($i = 0; $i < 5; $i++){

mysql_queryなど~

$question_data;

echo $question_data['question']."<br>";

}

という感じです。

その後、inputのsubmitで回答を押すと正誤判定ができるようにしていますが、少し行き詰まっています。

同一問題を表示しようとすると、再度ランダムに表示する判定が起きてしまうのは回避できましたが、その問題自体をdatabaseと照合し、問題の正誤判定を行わせるのが目標です。

 

薬剤師とはミスがあってはならないのでトライ・アンド・エラーはなかなかできない仕事ですが、プログラミングは常に試行錯誤と失敗の連続です。

あくまで趣味の範疇なので仕事と異なるという前提ですが、何度でも失敗できるということは精神的なストレスが少なくてよいですね。

 

テスト中:問題自動生成プログラム