10
金沢工業高等専門学校(グローバル情報工学科) 評価課題 コンピュータ演習 III 藤澤武 2014/07/11 ver 0.9 前回からの課題である GUI 版のじゃんけんアプリに加えて、GUI 版の問い合わせアプ リ、JSP]版の問い合わせ WEB アプリを夏期休業中の課題とします。8 27 日中に指 定された内容で提出すること。

夏期休業中の評価課題(Javaプログラミング演習)

Embed Size (px)

Citation preview

Page 1: 夏期休業中の評価課題(Javaプログラミング演習)

金沢工業高等専門学校(グローバル情報工学科)

評価課題 コンピュータ演習 III

藤澤武

2014/07/11

ver 0.9

前回からの課題である GUI版のじゃんけんアプリに加えて、GUI版の問い合わせアプリ、JSP]版の問い合わせWEBアプリを夏期休業中の課題とします。8月 27日中に指定された内容で提出すること。

Page 2: 夏期休業中の評価課題(Javaプログラミング演習)

改版履歴 版数 日付 内容 0.1 H26/07/03 初版作成 0.2.1 H26/07/03 JSP版の外部仕様を一部変更

- データのファイルをダウンロード可能にした 0.9 H26/07/11 WEBアプリにおけるファイル保存のサンプルコードを追加 目次

改版履歴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

目次 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

GUI 版じゃんけんプログラム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

問い合わせアプリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 要求定義 ...................................................................................................................... 3 共通の機能概要 ........................................................................................................... 3 入力項目 .................................................................................................................. 3 ファイル仕様 ........................................................................................................... 3

GUI版お問い合わせアプリ ........................................................................................ 4 要求定義 .................................................................................................................. 4 外部仕様 .................................................................................................................. 4 内部仕様 .................................................................................................................. 6

JSP版お問い合わせWEBアプリ .............................................................................. 7 要求定義 .................................................................................................................. 7 外部仕様 .................................................................................................................. 7 内部仕様 .................................................................................................................. 8

Page 3: 夏期休業中の評価課題(Javaプログラミング演習)

はじめに 本ドキュメントは「コンピュータ演習Ⅲ」の評価課題に関するドキュメントである. 課題プログラム 1. GUI版じゃんけんプログラム 2. 問い合わせアプリ( なお,本評価課題は夏休みの宿題を兼ねる. スケジュール 8月27日(13週前) 全課題のソースファイルと実行形式の jarファイルを提出

ソースコードの解説ドキュメントの作成 8月28日(13週後) 受け入れテスト 9月 4日(14週前) 理解度評価 9月 5日(14週後) 理解度評価 受け入れテスト:他人がつくったプログラムを評価する 理解度評価: 詳細未定 注意事項 その1:この間にインターンシップがある学生については対応を考えるが,

ソースコードの解説ドキュメントはインターンシップ前までに提出して

おくこと! その2:夏休み期間は2FのG科の実験室を自習室として使用して良い.

参考資料なども置いておくので自発的に利用すること.家に情報や環境が

無いから作業できなかったなどの言い訳は通らない. GUI版じゃんけんプログラム 教科書P267 リスト4.13 を参考にじゃんけんプログラムを作成して提出する. 提出先は夏期休業中の宿題と同じ.

Page 4: 夏期休業中の評価課題(Javaプログラミング演習)

問い合わせアプリ 指定の期日までに、課題のプログラムを作成し提出すること。なお、プログラムと作成し

たプログラムの理解度を総合的に判断して課題の評価を行う。 要求定義

学生の情報と問い合わせ内容をファイルに保存する GUI 版の Java アプリと、JSP 版のWEBアプリ、この二つを作成する。 共通の機能概要

GUI版と JSP版に共通する仕様を以下に示す。個別の仕様は各アプリの仕様説明の章で個別に説明を行う。 入力項目

入力項目は以下とする。 1. 学科名 2. 学年 3. 学籍番号 4. 名列番号 5. 氏名 6. 問い合わせ内容

ファイル仕様

問い合わせ内容以外は、一行ずつ「項目名:値」のフォーマットで保存し、問い合わせ内

容は「項目名:」で改行し、その後に値を保存する 例

学科:電気電子工学科 学年:5年 学籍番号: 0010101 名列番号:11 氏名: 山田太郎 問い合わせ内容: 同姓同名の人がおおいです。 なぜでしょうか?

Page 5: 夏期休業中の評価課題(Javaプログラミング演習)

GUI版お問い合わせアプリ

GUI 版は、3 種類(レベル)の学生情報の入力方法がある.この中から選択して作ること。レベルに応じて評価点が異なる。最低でもレベル 1が完成していないと合格点(50点)に達することはない 注:各レベルのGUIを実装したプログラムを Share フォルダーに用意してあるので,動作を確認してから開発に着手すること. レベル3まで実現できた場合はボーナスポイントを付与する 要求定義

外部仕様

項目を入力するエリアがあり,「保存」ボタンを押すと,保存先を指定するためのウインド

ウが表示され,ファイルを指定したら入力された値がファイルに保存される ファイル指定画面

Page 6: 夏期休業中の評価課題(Javaプログラミング演習)

入力項目画面仕様 レベル 1:学科はリストから選択する.問い合わせ内容はスクロール可能なテキストエリア,それ以外の項目はテキストフィールドで実現

レベル2:学年をラジオボタンで選択,それ以外はレベル1と同じ

レベル 3:名列番号をスピナーで実現,それ以外はレベル2と同じ

Page 7: 夏期休業中の評価課題(Javaプログラミング演習)

内部仕様

Shareフォルダーにある,JavaDocを参照すること

Page 8: 夏期休業中の評価課題(Javaプログラミング演習)

JSP版お問い合わせWEBアプリ

要求定義

GUI 版との大きな違いは入力項目を確認する画面があることと,ファイルをダウンロードできることである。 外部仕様

画面遷移

※:ShareフォルダーにプロトタイプにHTMLファイルが保存してあるので参考にすること.

���

���

����

����

���

�#2*���

��

��:7?;� ���!� ���!�

��� B��

��� 4��

���� 1234�

���� @@�

��� �� �

�#2*���

��.%0)$A�

��3��(-&,'#�

�1� ���

����(0(+�

?:45</86>=?9"?�

Page 9: 夏期休業中の評価課題(Javaプログラミング演習)

入力方式 学科 リストから学科を一つ選択する 学年 ラジオボタンで選択させる 学籍番号 テキスト入力 名列番号 リストから数字をひとつ選択する(1〜40) 氏名 テキスト入力 問い合わせ内容 テキストエリアに入力.複数行入力が可能とする ファイルの保存先とダウンロード ファイルは、WEBの公開エリアに保存する。登録完了を知らせる画面には入力されたデータが保存されたファイルをダウンロードするために,ファイルのURLへのリンクが張っ

てある. ファイルの保存先は 公開エリアの「data」フォルダーとする.たとえば WEBアプリのパスが http://localhost:8080/summer_homework/ とすると,データファイルは http://localhost:8080/sumer_homework/data/{ファイル名} でアクセスできる. ファイル名の自動生成 同時に複数の人がこのサービスを利用する場合,データを保存するファイルの名前が同じ

だと,最後に実行した人のデータだけがファイルに保存されることになり,他の人のデー

タは消えてしまう. これを防ぐ必要がある.完全では無いがファイル名をミリ秒までを含めた保存時の時刻

を含めることで,ユーザごとに異なる名前でファイルが作成されるようにする. 内部仕様

1. ミリ秒までふくめた現時刻を求めるサンプルコード import java.util.*;

import java.text.*;

class Test {

public static void main(String[] args) {

Date date1 = new Date();

SimpleDateFormat sdf1 = new SimpleDateFormat("yyMMddHHmmSS");

String s = sdf1.format(date1) ;

System.out.println(s);

}

}

Page 10: 夏期休業中の評価課題(Javaプログラミング演習)

2. ファイルをWEBアプリから保存するサンプルコード

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<%@ page import="java.io.*,java.util.Date" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html><head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head><body>

<%

String app_path = application.getRealPath("/data");

String file_path = app_path + "/" + "data_file.txt";

BufferedWriter bw = null;

try{

File f = new File(file_path);

FileOutputStream fs = new FileOutputStream(f);

// 出力するファイルの文字コードを強制的に”UTF−8”に変更するために,

//OutputStreamWriter をつかう

OutputStreamWriter os = new OutputStreamWriter(fs, "UTF-8");

bw = new BufferedWriter(os);

String cr = System.getProperty("line.separator");

bw.write("保存すべきデータ at " + new Date());

bw.flush();

}catch(Exception e){

e.printStackTrace();

}finally{

try{

bw.close();

}catch(Exception e2){ e2.printStackTrace(); }

}

%>

<h1><a href="data/data_file.txt">保存したファイルへのリンク</a></h1>

</body>

</html>