Snippets

cia_rana 「文化祭で人数と来ている方々を記録するコード」のリファクタリング

Created by cia_rana last modified
# http://qiita.com/Thenagao72/items/312b9eb9c78329825502

class Person
  attr_accessor :name, :occupation
end

class Questionnaire
  def initialize
    @people = []
    @occupation_table = { 1 => "校内生",
                          2 => "保護者",
                          3 => "受験生",
                          4 => "受験生の保護者",
                          5 => "その他" }
    @occupation_table.default = "その他"
  end
  
  def input
    person = Person.new

    puts "名前を入力してください"
    person.name = gets.chomp
    
    puts "あなたは次のうち、どのような方ですか?(数字で入力してください)"
    @occupation_table.each do |key, value|
      puts "[#{key}]#{value}"
    end
    person.occupation = @occupation_table[gets.to_i]
    
    @people << person
    
    puts "入力ありがとうございました"
  end

  def show_all_people
    puts "-------------------------"
    puts "| No | 名前 | 層 |"
    puts "-------------------------"
    @people.each.with_index(1) do |person, index|
      puts "| %d | %s | %s |" % [index, person.name, person.occupation]
    end
    puts "-------------------------"
    puts "#{@people.size}名来場者が来ました"
  end
end

questionnaire = Questionnaire.new

loop do
  puts "あなたは初めてこれを入力しますか?(数字で入力してください)"
  puts "[1]初めて入力"
  puts "[2]もう入力した"
  
  case gets.to_i
  when 1
    puts "入力に移ります"
    questionnaire.input
  when 2
    puts "ご利用ありがとうございました"
  when 72
    questionnaire.show_all_people
  when 404
    puts "記録を終了します"
    # ここでquestionnaireの値をCSVなどに保存すると後で何かの役に立つかも...
  else
    puts "無効な数値です"
  end
end

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.