教師が質問と回答 A、B、C、D などを入力し、それが完了すると実際のテスト プログラムとなる jar ファイルを作成する、私の学校用のプログラムを作成するというアイデアを思いつきました。これで、教師からのすべてのデータが収集されるまでのプログラムの作成方法はわかりましたが、その後の進め方がわかりません。私の考えでは、教師の jar は、準備ができている「テスト jar」の例と同じフォルダーにあり (変数に他の質問と回答が保存されています)、教師の準備が整ったら、jar は単に「テスト jar の変数を編集し、その後、「テスト jar」を学生に渡すことができましたが、jar ファイルのコードを別の jar から編集する方法がわかりません。どうすればこれにアプローチできますか?前もって感謝します!
3 に答える
基本的に、jar は単なる Zip ファイルです。
Java は、
java.util.zip
パッケージ。
コードは次のようになります。
ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream(zipFileName));
// Add a zip entry to the output stream
outStream.putNextEntry(new ZipEntry(myEntryName));
// add data to your entry by writing to outStream
......
......
//Close zip entry and file streams
outStream.closeEntry();
そして完全な例。
カスタマイズ可能な質問と回答でクイズを作成しようとしている場合は、テキスト ファイルを使用してオプションを保存することをお勧めします (質問と回答、および多肢選択式のような質問の種類、または valie を入力するか、いずれかを選択します)。
ファイルの形式については、xml を使用するか、単純に java.util.Properties を使用して、そのストアとロードを使用してファイルに保存できます。
プロパティは、「totalNumberQuestions」、「question1」、「questionType1」、「question1option1」などにすることができます
メイン プログラムで、ファイルを探します。
プログラムの意味と同じフォルダーに「data.txt」と呼ばれる引数が見つからないか、ない場合: File f = new File("data.txt"); if(f.exists()){ //入力ストリームを読み取る
jar getClassLoader().getResourseAsStream 内のクラス ローダーからの else (java.lang.Class で実際の関数名を検索)
このようにして、ユーザーは 2 番目の jar を使用して data.txt を作成し、それを質問をするメインの jar と一緒にパックするか、単に同じフォルダーに保持するか、プログラムの起動時にパラメーターとして渡すことができます。
jar コマンドを使用して jar を再パックできます。
jar ufMv quiz.jar data.txt
jar を使用して新しい zip を作成するには:
jar cvfM quiz.jar data.txt yourPackage.*.class
質問と回答のデータベースを作成したほうがよいでしょう。教師のプログラムはデータベースに書き込み、子供のプログラムはデータベースを読み取ります。