/
J33K77
/
cdg_ruby
Обзор
Документация
Войти
/
J33K77
/
cdg_ruby
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Student_collection.rb
147 строк
4 KB
J33K77
lab3 updated
12 май 2026, 18:16
12 май 2026, 18:16
a8827f6
Код
Авторство
О чём код?
require_relative 'student' class StudentCollection def initialize @students = [] @students_by_group = Hash.new { |hash, key| hash[key] = [] } end def create_student puts "Введите данные студента" name = get_valid_name age = get_valid_age gender = get_valid_gender group = get_valid_group email = get_valid_email skills = get_skills student = Student.new( name: name, age: age, gender: gender, group: group, email: email, skills: skills ) add_student(student) student end def add_student(student) @students << student @students_by_group[student.group] << student end def print_all_students puts puts "СПИСОК СТУДЕНТОВ:" puts @students_by_group.each do |group, group_students| puts "Группа: #{group}" puts group_students.each_with_index do |student, index| puts "Номер студента: #{index + 1}" puts student.to_s puts end end end private def get_valid_name loop do print "Введите имя: " name = gets.chomp temp_student = Student.new(name: name, age: 1, gender: :male, group: "temp", email: "test@test.com") if temp_student.valid_name? return name else puts "Некорректное имя. Имя должно содержать только буквы и пробелы." end end end def get_valid_age loop do print "Введите возраст: " age_input = gets.chomp age = age_input.to_i temp_student = Student.new(name: "Test", age: age, gender: :male, group: "temp", email: "test@test.com") if temp_student.valid_age? && age_input.match?(/^\d+$/) return age else puts "Некорректный возраст. Возраст должен быть положительным целым числом от #{Student::MIN_AGE} до #{Student::MAX_AGE}." end end end def get_valid_gender loop do print "Введите пол (м/ж): " gender_input = gets.chomp.downcase gender = gender_input == "м" ? :male : :female temp_student = Student.new(name: "Test", age: 1, gender: gender, group: "temp", email: "test@test.com") if temp_student.valid_gender? return gender else puts "Некорректный пол. Введите 'м' для мужского или 'ж' для женского." end end end def get_valid_group loop do print "Введите группу: " group = gets.chomp temp_student = Student.new(name: "Test", age: 1, gender: :male, group: group, email: "test@test.com") if temp_student.valid_group? return group else puts "Некорректная группа. Группа не может быть пустой." end end end def get_valid_email loop do print "Введите email: " email = gets.chomp temp_student = Student.new(name: "Test", age: 1, gender: :male, group: "temp", email: email) if temp_student.valid_email? return email else puts "Некорректный email. Введите корректный адрес электронной почты." end end end def get_skills skills = {} puts "Введите навыки студента (для завершения оставьте пустым):" loop do print "Навык: " skill_name = gets.chomp break if skill_name.empty? print "Уровень владения: " skill_level = gets.chomp break if skill_level.empty? skills[skill_name.to_sym] = skill_level end skills end end