怠惰な人の勉強記録

個人的な勉強の記録を残します。

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
    @book_infos['Yamada2005'= BookInfo.new('実践アジャイル''山田正樹'248Date.new(2005125))

    @book_infos['Ooba2006'= BookInfo.new('入門LEGO''大庭進一郎'164Date.new(20061223))
  end

  def searchBookInfo
    book_info = BookInfo.new(''''0nil)

    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(yearmonthday)

    @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
      if !search.pdate.nil?
        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(''''0Date.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(yearmonthday)

    @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