5月30日進捗
駄目ダメです。全く進まん。できたと思ったらちゃんと動かない。
検索画面の書籍名あるいは著作者のところで固まる(ターミナルが操作を受け付けなくなり、VScode自体は動く)デバッグのやり方がよくわからないので、明日はそちらの環境を整えるか、自力で調べて解決する。これじゃあいかん!
記録のために全文載せておく。
# frozen_string_literal: true
require 'date'
require 'pry'
class BookInfo
def initialize(title, author, page, publish_date)
@title = title
@author = author
@page = page
@publish_date = publish_date
end
attr_accessor :title, :author, :page, :publish_date
def to_s
"#{@title}, #{@author}, #{@page}, #{@publish_date}"
end
def toFormattedString(sep = "\n")
"書籍名:#{@title}#{sep}著者名:#{@author}#{sep}ページ数:#{@page}#{sep}出版日:#{@publish_date}#{sep}"
end
end
class BookInfoManager
def initialize
@book_infos = {}
end
def setUp
end
def searchBookInfo
print "\n"
print 'キー'
print gets.chomp
print '書籍名:'
book_info.title = gets.chomp.to_s
binding.pry
print '著者名:'
book_info.author = gets.chomp
print 'ページ数:'
book_info.page = gets.chomp.to_i
print '発刊年:'
year = gets.chomp.to_i
print '発刊月:'
month = gets.chomp.to_i
print '発刊日:'
day = gets.chomp.to_i
book_info.publish_date = Date.new(year, month, day)
@book_infos[key] = book_info
search = book_info
@book_infos.each do |key, info|
search_flag = 1 # 検索条件と一致しているか
input_check = 0 # 検索条件が未入力か
if search.title != ''
search_flag = 0 if search.title =~ /[^"#{info.title}"]/
else
input_check += 1
end
if search.author != ''
search_flag = 0 if search.author != info.author
else
input_check += 1
end
if search.page != 0
search_flag = 0 if search.page != info.page
else
input_check += 1
end
search_flag = 0 if search.pdate != info.pdate
else
input_check += 1
end
# 比較が全て一致した蔵書データをハッシュに格納する
# 検索条件が全て未入力の場合は格納しない
found_book[key] = info if search_flag == 1 && input_check < 4
end
puts "\n------------------------------"
if !found_book.empty?
# 比較が全て一致した蔵書データを表示する
found_book.each do |info|
print info.toFormattedString
puts "\n------------------------------"
end
else
print '条件に一致する蔵書はありません'
puts "\n------------------------------"
end
end
def addBookInfo
book_info = BookInfo.new('', '', 0, Date.new)
print "\n"
print 'キー'
print gets.chomp
print '書籍名:'
book_info.title = gets.chomp.to_s
print '著者名:'
book_info.author = gets.chomp.to_s
print 'ページ数:'
book_info.page = gets.chomp.to_i
print '発刊年:'
year = gets.chomp.to_i
print '発刊月:'
month = gets.chomp.to_i
print '発刊日:'
day = gets.chomp.to_i
book_info.publish_date = Date.new(year, month, day)
@book_infos[key] = book_info
end
def listAllBookInfos
puts "\n---------------------"
@book_infos.each do |info|
print info.toFormattedString
puts "\n---------------------"
end
end
def run
loop do
print "
1.蔵書データの登録
2.蔵書データの表示
3.蔵書データの検索
9.終了
番号を選んでください(1,2,9)"
num = gets.chomp
if num == '1'
elsif num == '2'
listAllBookInfos
elsif num == '3'
searchBookInfo
elsif num == '9'
break
end
end
end
end
book_info_manager = BookInfoManager.new
book_info_manager.setUp
book_info_manager.run