---
# System prepended metadata

title: 6月08日

---

# 6月08日
## 今日の目標
- 工数計算 2H **終了**
- ガントチャート作成 2H **終了**
- 要件定義 3H
    - ユースケース **終了**
    - ユースケース図 **終了**

### 工数数
24工数

### 要件定義書
図書館貸し出しシステム
**一次開発必須**
【機能要件】
- 資料検索 100
    - 一覧表示、詳細表示（会員は検索不可）
- 資料貸し出し 200
    - 貸出履歴（借りている資料のページ）
    - 資料IDで貸し出し
- 資料返却 400
    - まあ返却できればええやろ
    - 会員情報から削除

【会員機能要件】
- 会員ログイン・ログアウト 500
- 登録情報の編集 500
    - メールアドレス、住所、氏名、電話番号の編集
- カート機能(貸し出し制限) 600
    - 貸し出し希望図書のカートイン、チェックアウト機能

【管理機能要件】
- 資料管理 100
    - 一覧表示、詳細表示、追加、変更、削除
    - 資料ID管理
- 会員管理 500
    - メールアドレスで管理
- 管理者ログイン・ログアウト 500

**一次開発推奨**
- 資料予約
- 延滞者対応


### ユースケース記述
    テンプレート
    ユースケースID	UC101	
    ユースケース名	会員登録をする	
    概要	新規会員としてシステムに登録する	
    アクター	会員	
    事前条件	会員メニューにアクセスできる	
    事後条件	会員登録される	
    基本系列
    1.	メニューから「会員登録」を選択すると、このユースケースが開始される
    2.	システムは会員情報を入力する画面を表示する
    3.	アクターは登録する会員の名前、住所、電話番号、メールアドレス、生年月日を入力し、「確認画面へ」ボタンを押す
    4.	システムは登録情報の確認画面を表示する
    5.	アクターは「登録する」ボタンを押す
    6.	システムは会員を登録してランダムなパスワードを発行し、会員登録完了画面を表示する

    代替系列
    なし

    例外系列
    E-1：　アクターが次の入力チェック条件を満たさずに「確認画面へ」ボタンを押した
    	「名前」は必須、50文字以下
    	「住所」は必須、200文字以下
    	「電話番号」は必須、20文字以下
    	「メールアドレス」は、50文字以下、メールアドレスとして正しいフォーマットであること、同じメールアドレスが登録されていないこと
    1.	システムは、入力が正しくない旨を伝えるメッセージとともに、会員情報入力画面を再表示する

    備考
    なし

#### UC103
ユースケースID	UC103	
ユースケース名	会員検索	
概要	管理者として会員の検索を行う
アクター	管理者
事前条件	管理者メニューにアクセスできる	
事後条件	会員を検索できる
基本系列
1.	メニューから「会員検索」を選択すると、このユースケースが開始される
2.	システムは検索したい会員IDの入力を要求する
3.	アクターは検索したい会員IDを入力する
4.	アクターは「検索」ボタンを押す
5.	システムは入力された会員IDから該当の会員情報を検索し表形式で表示する

代替系列
なし

例外系列
E-1：　アクターが次の入力チェック条件を満たさずに「検索」ボタンを押した
    会員IDが数値以外の入力を行った
1.	システムは、入力が正しくない旨を伝えるメッセージとともに、会員検索画面を再表示する

E-2：　アクターが次の入力チェック条件を満たさずに「検索」ボタンを押した
    会員IDから会員が検索できなかった
1.	システムは、会員IDから会員情報が検索できないメッセージとともに、会員検索画面を再表示する

備考
なし

#### UC104
ユースケースID	UC104
ユースケース名	会員登録情報の編集
概要	管理者として会員の検索を行う
アクター	会員、管理者
事前条件	会員メニューまたは管理者メニューにアクセスできる	
事後条件	会員情報を編集できる
基本系列
1.	メニューから「会員情報編集」を選択するとこのユースケースが開始される
2.	システムは会員情報の編集画面を表示する
3.	アクターは編集したい部分の内容を入力し「更新」ボタンを押す
5.	システムは入力された内容をデータベースに登録し、更新完了画面を表示する

代替系列
なし

例外系列
E-1：　アクターが次の入力チェック条件を満たさずに「更新」ボタンを押した
        「名前」は必須、50文字以下
    	「住所」は必須、200文字以下
    	「電話番号」は必須、20文字以下
    	「メールアドレス」は、50文字以下、メールアドレスとして正しいフォーマットであること、同じメールアドレスが登録されていないこと

1.	システムは、入力が正しくない旨を伝えるメッセージとともに、会員情報更新画面を再表示する

備考
なし

#### UC201
ユースケースID	UC201	
ユースケース名	資料の貸し出し申請	
概要	管理者に資料の貸し出しを申請する	
アクター	会員	
事前条件	会員メニューにアクセスできる	
事後条件	会員登録される	
基本系列
1.	メニューから「貸出申請」を選択すると、このユースケースが開始される
2.	会員は借りたい資料を検索し、該当図書を選択する
3.	貸出申請を行う

代替系列
なし

例外系列
E-1：　会員が借りたい図書が既に借りられていた、もしくは貸し出し不可の状態だった
1.	システムは、該当図書を貸し出せないことを示す画面を表示する

備考
なし

#### UC202
ユースケースID	UC２0２
ユースケース名	資料の返却申請
概要	管理者に資料の返却を申請する
アクター	会員
事前条件	会員メニューにアクセスできる
事後条件	会員登録される
基本系列
1.	メニューから「返却申請」を選択すると、このユースケースが開始される
2.	システムは会員情報を入力する画面を表示する
3.	システムは既に登録された情報をもとに確認画面を表示し、本人確認を行う
4.	会員は登録情報があっていることを確認し、承認を行う
5.	会員メニューが表示され、借りていた本の一覧が表示される
6.	借りていた本の中で返却したい本を個別もしくは一括選択し、返却申請を行う

代替系列
なし

例外系列
E-1：　アクターが次の入力チェック条件を満たさずに「確認画面へ」ボタンを押した
	入力された「パスワード」が事前登録されたものを合致していない（パスワードは8文字以上24文字以下、英字・数字・記号の1文字以上を使用している）
1.	システムは、入力が正しくない旨を伝えるメッセージとともに、会員情報入力画面を再表示する

備考
なし


#### UC203
ユースケースID	UC203	
ユースケース名	資料の検索	
概要	図書館が貯蔵している資料を検索できる	
アクター	会員、管理者	
事前条件	会員または管理者としてログインしている
事後条件	資料について、あるいは資料の貸し出し情報など表示	
基本系列
1.	会員あるいは管理者としてのログインを確認している
2.	会員でのログインか、管理者としてのログインかを確認する
3.	検索条件にクエリを記入する
4.	クエリに基づき、データベースに資料情報を問い合わせる
5.	管理者でのログインであるならば、書籍の名前、author、publisher、出版年、だれが借りているかなどを表示する
6.	会員でのログインであるならば、書籍の名前、author、publisher、出版年、貸し出されているかなどを表示する

代替系列
なし

例外系列
E-1：　ログインをしていない場合
* ログインをしていない旨を表示し、トップページに誘導される

E-2：　クエリに何も記入されていない場合
* 全権表示

備考
なし


#### UC204
ユースケースID	UC204	
ユースケース名	資料の追加、変更、削除	
概要	図書館が貯蔵している資料の情報を操作できる	
アクター	管理者	
事前条件	管理者としてログインしている
事後条件	資料情報が更新される	
基本系列
1.	管理者としてのログインを確認している
2.	資料の追加、変更、削除を選択するページを表示する
3.	資料の追加の場合
    * 資料の追加を選択する
    * 資料の追加画面を表示する
    * 管理者が資料の情報を記入し、登録ボタンを押す
    * 資料情報がデータベースに追加される
    * 資料が追加されましたと表示される
4.	資料の変更の場合
    * 資料の変更を選択する
    * 資料の一覧が表示された
    * 管理者は検索あるいは追跡で、変更すべき資料を探し出し選択する
    * 変更画面を表示する
    * 管理者は資料の情報を変更する
    * データベースの資料情報がupdateが行われる
    * 資料が変更されましたと表示される
5.	資料の削除の場合
    * 資料の削除を選択する
    * 資料の一覧が表示された
    * 管理者は検索あるいは追跡で、削除すべき資料を探し出し選択する
    * 対象書籍を削除するボタンを表示する
    * 本当に削除するか確認するボタンが表示される
    * 管理者は本当に削除するを押す
    * データベースの資料情報がdeleteされる
    * 資料が削除されましたと表示される

代替系列
なし

例外系列
E-1：　ログインをしていない場合
* ログインをしていない旨を表示し、トップページに誘導される

E-2：　クエリに何も記入されていない場合
* 全件表示

備考
なし


### 用語辞典
随時追加

|用語名|意味|同義語|
| -------- | -------- | -------- |
|blessing software |　Blessing ：恩恵、天恵、祝福、祈り,Software ：ソフトウェア |IKD|
|管理者|システムを管理する人。登録されている会員情報および教科書情報を管理することができる|システム管理者|
|会員|システムの利用者。会員は会員登録することでシステムを使用することができる|利用者|
|会員ID|会員を管理するための番号|会員番号|


### データベース
**会員情報**
テーブル情報
第一次正規化
- 会員情報
- 管理者情報
- 資料情報

第二次正規化
- 会員情報
    - user_id
    - user_family_name
    - user_name
    - user_postal
    - user_address
    - user_tel
    - user_email
    - user_birthday
    - user_password
    - user_role

- 管理者情報
    - admin_id
    - admin_family_name
    - admin_name
    - admin_postal
    - admin_address
    - admin_tel
    - admin_email
    - admin_birthday
    - admin_password
    - 
    
- 資料情報
    - book_id
    - book_title
    - book_publisher
    - book_author
    - book_num
    - book_rental_flag
    - book_rental_date

ここをデータベースのテーブル設計書みたいな形で書いていくとある程度はできると思います。ER図も
ログインに用いるデータと会員の個人情報のセキュリティ性が問題視する場合データベースサーバーを分割する必要があります。

第三次正規化(笑)
- 会員情報
    - user_id (PK)
    - user_family_name
    - user_name
    - user_postal
    - user_address
    - user_tel
    - user_email
    - user_birthday
    - user_password

- 管理者情報
    - admin_id (PK)
    - admin_name
    - admin_email
    - admin_password
    - admin_role

- 資料情報
    - book_id (PK)
    - book_title
    - book_publisher_id (FK)
    - book_author_id (FK)
    - book_isbn
    - book_rental_flag
    - book_reserved_flag
   
- 出版社情報
    - publisher_id (PK)
    - publisher_name
    - publisher_address

- 著者情報
    - author_id (PK)
    - author_name
    - author_age

中間テーブル
Multi Column Attribute対策
https://qiita.com/ramuneru/items/db43589551dd0c00fef9
https://qiita.com/morikuma709/items/9fde633db9171b36a068
ここら辺を見てください
- 貸し出し情報
    - rental_id (PK)
    - user_id (FK)
    - book_id (FK)
    - book_rental_date

## クラス図
Flaskではモデルしかない
データベースのモデル部分　ER図のようなもの
