mirror of
				https://github.com/ASDjonok/OOP_IO-2x_2023.git
				synced 2025-11-04 00:29:24 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			226 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
import java.util.ArrayList;
 | 
						|
import java.util.List;
 | 
						|
import java.util.Scanner;
 | 
						|
import java.util.Comparator;
 | 
						|
 | 
						|
class ToyRoom {
 | 
						|
 | 
						|
    public static void variant() {
 | 
						|
        int C13 = 2430 % 13;
 | 
						|
        System.out.println("\n            ---------------------------------------------------------------------------------------------------------------------");
 | 
						|
        System.out.println("                          C13 = " + C13 + ", So, the task is:  Prepare the toy room for children of different age groups.");
 | 
						|
        System.out.println("            ---------------------------------------------------------------------------------------------------------------------");
 | 
						|
    }
 | 
						|
 | 
						|
    private List<Toy> toys;
 | 
						|
 | 
						|
    public ToyRoom() {
 | 
						|
        this.toys = new ArrayList<>();
 | 
						|
    }
 | 
						|
 | 
						|
    public void addToy(Toy toy) {
 | 
						|
        toys.add(toy);
 | 
						|
    }
 | 
						|
 | 
						|
    public void displayToys() {
 | 
						|
        System.out.println(" -------------------------------------------------------");
 | 
						|
        System.out.printf(" | %-20s | %-10s | %-15s |\n", "Name", "Price ($)", "Age Group");
 | 
						|
        System.out.println(" |----------------------|------------|-----------------|");
 | 
						|
        for (Toy toy : toys) {
 | 
						|
            System.out.printf(" | %-20s | %-10.2f | %-15s |\n", toy.name, toy.price, toy.ageGroup);
 | 
						|
        }
 | 
						|
        System.out.println(" -------------------------------------------------------");
 | 
						|
    }
 | 
						|
 | 
						|
    public void sortToys(boolean ascending) {
 | 
						|
        if (ascending) {
 | 
						|
            toys.sort(Comparator.comparingDouble(Toy::getPrice));
 | 
						|
        } else {
 | 
						|
            toys.sort(Comparator.comparingDouble(Toy::getPrice).reversed());
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public List<Toy> findToysByPriceRange(double minPrice, double maxPrice) {
 | 
						|
        List<Toy> foundToys = new ArrayList<>();
 | 
						|
        for (Toy toy : toys) {
 | 
						|
            if (toy.getPrice() >= minPrice && toy.getPrice() <= maxPrice) {
 | 
						|
                foundToys.add(toy);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return foundToys;
 | 
						|
    }
 | 
						|
 | 
						|
    public void findToysByName(String name) {
 | 
						|
        List<Toy> foundToys = new ArrayList<>();
 | 
						|
        for (Toy toy : toys) {
 | 
						|
            if (toy.name.toLowerCase().contains(name.toLowerCase())) {
 | 
						|
                foundToys.add(toy);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        if (!foundToys.isEmpty()) {
 | 
						|
            System.out.println("\n Toys with matching name \"" + name + "\":");
 | 
						|
            System.out.println(" -------------------------------------------------------");
 | 
						|
            System.out.printf(" | %-20s | %-10s | %-15s |\n", "Name", "Price ($)", "Age Group");
 | 
						|
            System.out.println(" |----------------------|------------|-----------------|");
 | 
						|
            for (Toy toy : foundToys) {
 | 
						|
                System.out.printf(" | %-20s | %-10.2f | %-15s |\n", toy.name, toy.price, toy.ageGroup);
 | 
						|
            }
 | 
						|
            System.out.println(" -------------------------------------------------------");
 | 
						|
        } else {
 | 
						|
            System.out.println(" No toys found with a matching name.");
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
abstract class Toy {
 | 
						|
    protected String name;
 | 
						|
    protected double price;
 | 
						|
    protected String ageGroup;
 | 
						|
 | 
						|
    public Toy(String name, double price, String ageGroup) {
 | 
						|
        this.name = name;
 | 
						|
        this.price = price;
 | 
						|
        this.ageGroup = ageGroup;
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public double getPrice() {
 | 
						|
        return price;
 | 
						|
    }
 | 
						|
 | 
						|
    @Override
 | 
						|
    public String toString() {
 | 
						|
        return name + " - $" + price + ageGroup;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class Car extends Toy {
 | 
						|
    public Car(String name, double price, String ageGroup) {
 | 
						|
        super(name, price, ageGroup);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class Doll extends Toy {
 | 
						|
    public Doll(String name, double price, String ageGroup) {
 | 
						|
        super(name, price, ageGroup);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class Ball extends Toy {
 | 
						|
    public Ball(String name, double price, String ageGroup) {
 | 
						|
        super(name, price, ageGroup);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class Cube extends Toy {
 | 
						|
    public Cube(String name, double price, String ageGroup) {
 | 
						|
        super(name, price, ageGroup);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
public class Lab6 {
 | 
						|
    public static void main(String[] args) {
 | 
						|
        ToyRoom toyRoom = new ToyRoom();
 | 
						|
        ToyRoom.variant();
 | 
						|
 | 
						|
        toyRoom.addToy(new Car("Small car 'Mcqueen'", 10.0, "1-3 years"));
 | 
						|
        toyRoom.addToy(new Car("Small Car 'Audi'", 12.0, "1-3 years"));
 | 
						|
        toyRoom.addToy(new Car("Medium Yellow Car", 15.0, "3-6 years"));
 | 
						|
        toyRoom.addToy(new Car("Medium Blue Car", 18.0, "3-6 years"));
 | 
						|
        toyRoom.addToy(new Car("Car on R/C", 30.0, "6-10 years"));
 | 
						|
        toyRoom.addToy(new Doll("Doll that can talk", 25.0, "1-3 years"));
 | 
						|
        toyRoom.addToy(new Doll("Doll 'Barbie'", 10.0, "3-6 years"));
 | 
						|
        toyRoom.addToy(new Doll("Bear Teddy", 14.5, "6-12 months"));
 | 
						|
        toyRoom.addToy(new Ball("Yellow Ball", 5.0, "6-12 months"));
 | 
						|
        toyRoom.addToy(new Ball("Big Blue Ball", 7.0, "1-3 years"));
 | 
						|
        toyRoom.addToy(new Ball("Football Ball", 12.5, "6-10 years"));
 | 
						|
        toyRoom.addToy(new Cube("Cubes with pictures", 6.5, "6-12 months"));
 | 
						|
        toyRoom.addToy(new Cube("Cubes with letters", 9.0, "3-6 years"));
 | 
						|
        toyRoom.addToy(new Cube("Rubik's Cube", 14.0, "6-10 years"));
 | 
						|
 | 
						|
        boolean exit = false;
 | 
						|
        Scanner scanner = new Scanner(System.in);
 | 
						|
 | 
						|
        while (!exit) {
 | 
						|
            System.out.println("\n Select an option:");
 | 
						|
            System.out.println("  1 - Display all toys;");
 | 
						|
            System.out.println("  2 - Find toy by price range;");
 | 
						|
            System.out.println("  3 - Sort toys by price;");
 | 
						|
            System.out.println("  4 - Find a toy by name;");
 | 
						|
            System.out.println("  Q - Quit;\n");
 | 
						|
 | 
						|
            String option = scanner.nextLine();
 | 
						|
 | 
						|
            switch (option.toLowerCase()) {
 | 
						|
                case "1":
 | 
						|
                    System.out.println(" Toys in the Toy Room:");
 | 
						|
                    toyRoom.displayToys();
 | 
						|
                    break;
 | 
						|
                case "2":
 | 
						|
                    System.out.print(" Enter the minimum price for the toy: ");
 | 
						|
                    double minPrice = scanner.nextDouble();
 | 
						|
                    scanner.nextLine();
 | 
						|
 | 
						|
                    System.out.print(" Enter the maximum price for the toy: ");
 | 
						|
                    double maxPrice;
 | 
						|
                    do {
 | 
						|
                        maxPrice = scanner.nextDouble();
 | 
						|
                        scanner.nextLine();
 | 
						|
 | 
						|
                        if (minPrice >= maxPrice) {
 | 
						|
                            System.out.println(" Error: The minimum price must be less than the maximum price. Please try again.");
 | 
						|
                            System.out.print(" Enter the maximum price for the toy: ");
 | 
						|
                        }
 | 
						|
                    } while (minPrice >= maxPrice);
 | 
						|
 | 
						|
                    List<Toy> foundToys = toyRoom.findToysByPriceRange(minPrice, maxPrice);
 | 
						|
                    if (!foundToys.isEmpty()) {
 | 
						|
                        System.out.println("\n Found toys within the price range:");
 | 
						|
                        System.out.println(" -------------------------------------------------------");
 | 
						|
                        System.out.printf(" | %-20s | %-10s | %-15s |\n", "Name", "Price ($)", "Age Group");
 | 
						|
                        System.out.println(" |----------------------|------------|-----------------|");
 | 
						|
                        for (Toy toy : foundToys) {
 | 
						|
                            System.out.printf(" | %-20s | %-10.2f | %-15s |\n", toy.name, toy.price, toy.ageGroup);
 | 
						|
                        }
 | 
						|
                        System.out.println(" -------------------------------------------------------");
 | 
						|
                    } else {
 | 
						|
                        System.out.println("\n No toys found within the price range.");
 | 
						|
                    }
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "3":
 | 
						|
                    System.out.println(" Choose the sorting order:");
 | 
						|
                    System.out.println("  A - Ascending");
 | 
						|
                    System.out.println("  D - Descending");
 | 
						|
                    String sortOrder = scanner.nextLine();
 | 
						|
 | 
						|
                    boolean ascending = true;
 | 
						|
                    if (sortOrder.equalsIgnoreCase("D")) {
 | 
						|
                        ascending = false;
 | 
						|
                    }
 | 
						|
 | 
						|
                    toyRoom.sortToys(ascending);
 | 
						|
                    System.out.println("\n Toys in the Toy Room after sorting:");
 | 
						|
                    toyRoom.displayToys();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "4":
 | 
						|
                    System.out.print(" Enter the toy name: ");
 | 
						|
                    String toyName = scanner.nextLine();
 | 
						|
 | 
						|
                    toyRoom.findToysByName(toyName);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "q":
 | 
						|
                    exit = true;
 | 
						|
                    System.out.println(" Program exited. Thank you!");
 | 
						|
                    break;
 | 
						|
                default:
 | 
						|
                    System.out.println(" Invalid option. Please try again.");
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |