最初の従業員を格納しますが、別の従業員を追加しようとすると、追加の従業員を表示できません。以下は従業員の記録を表示する方法です。助けてくれてありがとう!ルビクラスメソッドは、追加のユーザ入力を配列にプッシュすることができません
Employeeクラス
class Employee
attr_accessor :employee, :role, :location
def initialize(employee, role, location)
@employee = employee
@role = role
@location = location
end
def employee_change(new_emp)
@employee = new_emp
end
def role_change(new_role)
@role = new_role
end.
def location_change(new_loc)
@location = new_loc
end
end
メインメニュー
def main_menu
puts "Welcome to the Employee Portal"
puts "Please select an option below: "
puts "---------------------"
puts "1. Create New Employee Record."
puts "2. View an existing record."
puts "3. Modify an existing record."
puts "4. Exit Portal"
option = gets.chomp.to_i
if option == 1
create_record
main_menu
elsif option == 2
view_record
elsif option == 3
modify
elsif option == 4
puts "Thank you for using the Employee Portal"
exit
else
puts "Not a valid option. Please try again."
main_menu
system("clear")
end
end
新入社員(メインメニューからオプション1)を作成します
def create_record
puts "Create New Employee Record, click 'Enter' to begin"
puts "Enter Employee Information: "
employee = gets.chomp.capitalize
puts "Enter Employee's Role: "
role = gets.chomp.capitalize
puts "Enter Employee's Current Work Location: "
location = gets.chomp.capitalize
puts "\n"
new_record = Employee.new(employee, role, location)
@record.push(new_record)
puts "New Employee Record has been created."
puts "Name: #{employee}"
puts "Role: #{role}"
puts "Location: #{location}"
system("clear")
main_menu
end
ビュー従業員(メインメニューからオプション2)
def view_record
puts "Enter Employee Name to view record: "
name = gets.chomp.capitalize
system("clear")
@record.each do |a|
if a.employee == name
puts "\n"
puts "Employee Information "
puts "--------------------"
puts " Name : #{a.employee}"
puts " Role(s) : #{a.role}"
puts " Location(s) : #{a.location}"
puts " Type 'Exit' to return to the Main Menu "
else
puts "That is not a valid entry, please try again."
view_record
main_menu
end
end
end
変更従業員(メインメニューからオプション3)
def modify
system("clear")
puts "Enter employee name to modify existing record: "
name = gets.chomp.capitalize
@record.each do |r|
if r.employee == name
puts "Employee found."
puts "Select an option to modify."
puts "-----------------------------------"
puts "1.) Modify employee's name."
puts "2.) Modify employee's role."
puts "3.) Modify employee's location."
puts "4.) Return to Main Menu"
puts "\n"
option = gets.chomp.to_i
if option == 1
change_employee
elsif option == 2
change_role
elsif option == 3
change_location
elsif option == 4
main_menu
else
puts "Invalid selection. Please try again."
modify
end
end
end
end
変更従業員(修正からオプション1)
def change_employee
puts "Enter new employee name: "
new_emp = gets.chomp.capitalize
@record.each do |r|
if r.employee == employee
r.employee_change(new_emp)
puts "#{r.employee} has been updated to #{r.employee}"
end
end
end
Cハンゲの従業員の役割(修正からオプション2)
def change_role
puts "What is #{r.employee}\'s new role?: "
new_role = gets.chomp.capitalize
@record.each do |r|
if r.employee == employee
r.role_change(new_role)
puts "#{r.employee}\'s new role is #{r.role}"
end
end
end
変更従業員の場所(修正からオプション3)
def change_location
puts "What is #{r.employee}\'s new location?: "
new_loc = gets.chomp.capitalize
@record.each do |r|
if r.employee == employee
r.location_change(new_loc)
puts "#{r.employee} has been transfer to new location, #{r.location}."
end
end
end
プログラムの実行
@record = []
system("clear")
main_menu
これは答えではなく、提案です。通常、ルビスタイルでは、より明確であるという理由だけで、 '@ record'ではなく' @ records'を配列/リストに指定します。ほとんどの開発者は@recordを見て、「単一のデータベースレコード」と考えます。 – whodini9
実際にはどうなりますか?それがうまくいかないことをどのように知っていますか?配列に、あなたが思うものが含まれていることを確認しましたか? –
何が起こっているのかを「できない」と言わなければならない場合は、おそらく問題を十分にはっきりさせていないでしょう。コードが物理的にあなたが何かをやることを妨げていましたか?特定のアクションを実行しようとすると、マウスがあなたを噛んでいますか?アプリケーションがクラッシュしますか? ;) – coreyward