LoginSignup
1
0

More than 3 years have passed since last update.

書庫アプリケーション作成

Posted at

課題

以下の仕様を満たすアプリケーションを作成。実装の際、注意の下に記載されている雛形を使用してください。

仕様

プログラムの実行を行うと、
・ [0]を選択した場合は、本の著者、タイトル、価格を入力させ、保存する。
・ [1]を選択した場合は、保存された本の番号とタイトルを出力、選択できるようにする。 表示した番号を選択された場合は、選択された本の著者、タイトル、価格を出力する。
・ [2]を選択した場合は、アプリケーションを終了する。

必要な知識

gets と chomp
to_i
ハッシュ
配列と配列演算子(<<)
実引数と仮引数
eachメソッド

雛形

def register_book
  # 本の著者、タイトル、価格をユーザーに入力させ、保存する
  puts '著者を入力してください'
  puts 'タイトルを入力してください'
  puts '価格を入力してください'

  book = { author: author, title: title, price: price }

end

def show_books(books)
  puts "見たい番号を入力してください"
  # 保存された本の一覧を出力する
end

def show_detail
  # 選択された本の詳細な情報(著者、タイトル、価格)を出力する
  puts "著者 #{book[:author]}"
  puts "タイトル #{book[:title]}"
  puts "価格 #{book[:price]}円"
end


while true do
  puts "番号を入力してください"
  puts "0: 本を登録する"
  puts "1: 本の一覧を見る"
  puts "2: 終了する"
  case gets.to_i
  when 0
    # 本の登録を行う
  when 1
    # 保存された本の一覧を出力する
  when 2
    exit
  else
    puts '無効な値です'
  end
end
追加修正プログラム
def register_book(books) #1
  puts '著者を入力してください'
  author = gets.chomp
  puts 'タイトルを入力してください'
  title = gets.chomp
  puts '価格を入力してください'
  price = gets.to_i
  book = { author: author, title: title, price: price }
  books << book
end

def show_books(books) #2
  puts "見たい番号を入力してください"
  index = 1
  books.each do |book|
    puts "#{index}: #{book[:title]}"
    index += 1
  end
  input = gets.to_i
  show_detail(books[input - 1])
end

def show_detail(book) #3
  puts "著者 #{book[:author]}"
  puts "タイトル #{book[:title]}"
  puts "価格 #{book[:price]}円"
end

books = []
while true do
  puts "番号を入力してください"
  puts "0: 本を登録する"
  puts "1: 本の一覧を見る"
  puts "2: 終了する"
  case gets.to_i
  when 0
   register_book(books)
  when 1
    show_books(books)
  when 2
    exit
  else
    puts '無効な値です'
  end
end

コードの内容

register_bookメソッド
このメソッドで処理したい内容は下記の通りです。

・本の著者、タイトル、価格をユーザーに入力させ、指定の変数に保存する
・保存した値をハッシュとして変数bookに格納する
・仮引数であり、配列であるbooksにbookの値を追加する

コード1
def register_book(books)
  puts '著者を入力してください'
  author = gets.chomp
  puts 'タイトルを入力してください'
  title = gets.chomp
  puts '価格を入力してください'
  price = gets.to_i
  book = { author: author, title: title, price: price }
  books << book
end

show_books メソッド

このメソッドで処理したい内容は下記の通りです。
・booksに保存されている情報のタイトルを表示する(ユーザーが選択できるように、本の一覧番号も一緒に表示させる)
・ユーザーが選択した番号の情報を出力する

コード2
def show_books(books)
  puts "見たい番号を入力してください"
  index = 1
  books.each do |book|
    puts "#{index}: #{book[:title]}"
    index += 1
  end
  input = gets.to_i
  show_detail(books[input - 1])
end

show_detail メソッド

このメソッドで処理したい内容は下記の通りです。
著者、タイトル、価格をハッシュから取り出し表示する

コード3
def show_detail(book)
  puts "著者 #{book[:author]}"
  puts "タイトル #{book[:title]}"
  puts "価格 #{book[:price]}円"
end
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0