---
# System prepended metadata

title: 練習問題　業務仕様書

---

# 練習問題　業務仕様書

## 1. 概要
ショッピングサイトのように、商品と個数を送信すると、金額／送料有無が分かる簡易システムを構築する。

![](https://infotechfactory.biz/img/javaweb/4-4.png)

### 追加要件
入力後は、購入金額、送料有無だけでなく、商品名を表示させること。

__表示イメージ__

```
商品：ボールペン
購入金額：600円
送料は無料です。
```

また、入力個数は、選択ではなく、任意で入力できるようにすること。
ただし、数字以外の入力は認めない（テキストボックスからカーソルアウトした時点で、適切でない場合はエラーとすること）。エラーは個数の下に以下の通り表示させる。

__入力違反時のエラーメッセージ__
『個数は半角数字で入力してください。』

未入力チェックはHTML標準「required」でチェックすること。

上記チェックは、サーバ側でもバリデーションチェックすること。

## 2. データベース設計

データベースは、以下の通りに定義すること

* DB名：ONL_SHOP
* TBL名：PRODUCT
* テーブル定義：以下の通り

|項目名|DTL_CD|DTL_NM|PRICE|
|---|---|---|---|
|日本語名|商品コード|商品名|価格|
|型|CHAR(4)|VARCHAR(5)|INT(11)|
|その他|PK,NN|NN|NN|

> * PK: PRIMARY KEY
> * NN: NOT NULL

また、テーブルにはあらかじめ、以下の商品情報を格納しておく。

|DTL_CD|DTL_NM|PRICE|
|---|------- | -------- |
|CD01|鉛筆|60|
|CD02|ボールペン|120|
|CD03|消しゴム|80|
|CD04|定規|150|

## 3. 処理の大まかな流れ

1. ユーザはプルダウンから商品を選択し、個数を入力する。
2. 「購入」を押下すると、商品コードと個数がサーバにPOST送信される。
3. 商品コードをデータベースに問い合わせ、商品名と金額を取得する。
4. 金額✕個数で購入金額を算出する。
5. 商品、購入金額を表示させる。このとき、購入金額が500円以上の場合は「送料は無料です。」、500円に満たない場合は「送料は別途かかります。」と表示する。

## 4. 必要資源　（ファイル名は任意で決めてください）

__フロントエンド__
* 商品選択ページ用HTML
* 合計金額表示用HTML
* 個数入力判定用JavaScript

__バックエンド__
* Controller用Java
* Service用Java
* Repository用Java
* 商品選択ページからの値受取用のFormクラス
* SQL結果取得用のEntityクラス