Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Работа со stream Api в курсе объектно-ориентированного программирования

Автор:   •  Ноябрь 24, 2022  •  Лабораторная работа  •  5,658 Слов (23 Страниц)  •  106 Просмотры

Страница 1 из 23

Министерство образования Республики Беларусь

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОТЕХНИКИ

Факультет компьютерного проектирования

Кафедра проектирования информационно-компьютерных систем

ОТЧЁТ

По лабораторной работе №12

на тему

Stream API

по дисциплине «ООПиП»

Выполнил студент:                                                        Бобров Д.С.

Проверил:                                                                        Куприянов Н.И.

Минск 2022

Вариант 1. Мобильная связь. Определить иерархию тарифов мобильной компании. Создать список тарифов компании. Подсчитать общую численность клиентов. Исходя из темы варианта задания лабораторной работы №1 и исходного кода по этой лабораторной необходимо:

  • Используя Stream API, необходимо добавить функции фильтрации по разным критериям. Также необходимо реализовать возможность использования нескольких фильтров сразу. Если были применены фильтры, то программа продолжает работу с отфильтрованными данными

Класс main()

import java.util.ArrayList;
import
java.util.InputMismatchException;
import
java.util.Objects;
import
java.util.Scanner;
import
java.util.stream.Collectors;
import
java.util.stream.Stream;

public class
Main {

   
private static boolean filterByAge = false;
   private static boolean
filterByRates = false;

   private static int
choiceFilterByRates = 1;
   private static int
choiceFilterByAge = 1;



   public static void
main(String[] args) {
       System.
out.println("Welcome!");

       
String[] options = {"1- Show_all_rates", "2- Connecting a new subscriber", "3- Show_all_users", "4- Output the number of users", "5- filter by age", "6- filter by rates", "0- Exit",};


       
ArrayList<Users> usersList = new ArrayList<>();
       
ArrayList<Users> usersListSavedAll = new ArrayList<>();

       
ArrayList<Rates> rates = new ArrayList<>();
       
rates.add(new Rates("Premium", "unlimited", 10, "25 megabytes per second", 1000, "Free music, free TV, freezing for 6 months", 500));
       
rates.add(new Rates("Standart", "10gb", 5, "15 megabytes per second", 350, "Freezing for 3 months", 300));
       
rates.add(new Rates("Minimum", "3gb", 2, "10 megabytes per second", 150, "Freezing for 1 months", 150));


       
Scanner scanner = new Scanner(System.in);// класс Scanner подключается к источнику данных: System.in  для ввода данных из консоли
       
int option = 1;
       while
(option != 0) {
           
printMenu(options);
           try
{
               option = scanner.nextInt()
;
               switch
(option) {
                   
case 1:
                       
Show_all_rates(rates);
                       break;
                   case
2:
                       
Connect_new_ubscriber(scanner, usersList, usersListSavedAll);
                       break;
                   case
3:
                       
Show_all_users(usersList);
                       break;
                   case
4:
                       
CounterUsers(usersList);
                       break;
                   case
5:
                       usersList =
filtrationByAge(usersList);
                       break;
                   case
6:
                       usersList =
filtrationByRates(usersList);
                       break;
                   case
7:
                       usersList =
cancelingFiltering(usersList, usersListSavedAll);
                       break;
                   case
0:
                       
exit();
               
}
           }
catch (InputMismatchException e) {
               System.
out.println("Enter correct value!");
               
scanner.nextLine();
           
}
       }
   }

   
public static void printMenu(String[] options) {
       
// Оператор for-each перебирает все элементы массива(option - элемент массива)
       
for (String option : options) {
           System.
out.println(option);
       
}
       System.
out.print("Choose your option : ");
   
}

   
//Показ всех тарифов

   
public static void Show_all_rates(ArrayList<Rates> rates) {
       rates.stream().forEach(n -> System.
out.println(n));
   
}

   
;

 
/*public static void Show_all_rates(ArrayList<Rates> rates) {
       for (Rates rate : rates)
       {
           System.out.println(rate.toString());
       }
   }*/


   //Подключение нового пользователя
   
public static void Connect_new_ubscriber(Scanner scanner, ArrayList<Users> usersList, ArrayList<Users> usersArrayListSaved) {
       System.
out.println("Connecting a new subscriber ");
       
System.out.println(" Enter family ");
       
String surename = scanner.next();
       
System.out.println(" Enter name ");
       
String name = scanner.next();
       
System.out.println(" Enter patronymic ");
       
String patronymic = scanner.next();
       
System.out.println(" Enter age ");
       int
age = scanner.nextInt();
       
String rate = chooseRate(scanner);
       
Users user = new Users(surename, name, patronymic, age, rate);
       
usersList.add(user);
       
usersArrayListSaved.add(user);
       
System.out.println("User is added");
   
}


   
//Счётчик количества пользователей
   
public static void CounterUsers(ArrayList<Users> userList) {

       
int counter = 0;
       
CountUsers count;
       
count = (a, b) -> (a + b);
     
/* for (int i = 0; i < userList.size(); i++) {
           counter=count.usersCount(counter,1);
       }*/
       
int i = 0;
       while
(i < userList.size()) {
           counter = count.usersCount(counter
, 1);
           
i++;
           
System.out.println(i);
       
}
       System.
out.println("Total Users: " + counter);
   
}


   
//Выбор тарифного плана
   
public static String chooseRate(Scanner scanner) {

       System.
out.println("Choose rate:");
       
System.out.println("1 - Premium\n" + "2 - Standart\n" + "3 - Minimum");
       while
(true) {
           
try {
               
int choose = scanner.nextInt();
               if
(choose > 3 || choose < 1) {
                   
continue;
               
}
               
if (choose == 1) {
                   
return "Premium";
               
} else if (choose == 2) {
                   
return "Standard";
               
} else {
                   
return "Minimum";
               
}
           }
catch (InputMismatchException e) {
               System.
out.println("Enter correct value!");
           
}
       }
   }


   
//Показ всех пользователей
   
public static void Show_all_users(ArrayList<Users> usersList) {
       
for (Users user : usersList) {
           System.
out.println(user.toString());
       
}
       
int count = usersList.toArray().length;
       
System.out.println("total users: " + count);
   
}

   
//Организация выхода из программы
   
private static void exit() {
       System.
out.println("***Goodbye! Come to us soon!***");
       
System.exit(0);
   
}


   
//фильтрация по возрасту
   
public static ArrayList<Users> filtrationByAge(ArrayList<Users> usersArrayList) {
       System.
out.println("1 - Young age(18-44)" + "   2 - Middle age(45-59)" + "   3 - Old age(60-74)" + "   4 - Senile age(75-90)" + "   5 - Centenarians(90+)");
       
Scanner scanner = new Scanner(System.in);
       try
{
           
choiceFilterByAge = scanner.nextInt();
           
Stream<Users> stream = usersArrayList.stream();
           
ArrayList<?> list = null;
           switch
(choiceFilterByAge) {
               
case 1:
                   list = (ArrayList<?>) stream.filter(x -> x.getAge() >
17 && x.getAge() < 45).collect(Collectors.toList());
                   break;
               case
2:
                   list = (ArrayList<?>) stream.filter(x -> x.getAge() >
44 && x.getAge() < 60).collect(Collectors.toList());
                   break;
               case
3:
                   list = (ArrayList<?>) stream.filter(x -> x.getAge() >
59 && x.getAge() < 75).collect(Collectors.toList());
                   break;
               case
4:
                   list = (ArrayList<?>) stream.filter(x -> x.getAge() >
74 && x.getAge() < 91).collect(Collectors.toList());
                   break;
               case
5:
                   list = (ArrayList<?>) stream.filter(x -> x.getAge() >
90).collect(Collectors.toList());
                   break;
           
}
           list.forEach(x -> System.
out.println(x.toString()));
           
usersArrayList = (ArrayList<Users>) list;
           
System.out.println(usersArrayList);
       
} catch (InputMismatchException e) {
           System.
out.println("Enter correct value!");
           
scanner.nextLine();
       
}
       
filterByAge = true;
       return
usersArrayList;
   
}


   
//Фильтрация по тарифу
   
public static ArrayList<Users> filtrationByRates(ArrayList<Users> usersArrayList) {
       System.
out.println("1 - Premium users" + "   2 - Standard Users" + "   3 - Minimum Users");
       
Scanner scanner = new Scanner(System.in);
       try
{
           
choiceFilterByRates = scanner.nextInt();
           
Stream<Users> stream = usersArrayList.stream();
           
ArrayList<?> list = null;
           switch
(choiceFilterByRates) {
               
case 1:
                   list = (ArrayList<?>) stream.filter(x -> Objects.
equals(x.getRate(), "Premium")).collect(Collectors.toList());
                   break;
               case
2:
                   list = (ArrayList<?>) stream.filter(x -> Objects.
equals(x.getRate(), "Standard")).collect(Collectors.toList());
                   break;
               case
3:
                   list = (ArrayList<?>) stream.filter(x -> Objects.
equals(x.getRate(), "Minimum")).collect(Collectors.toList());
                   break;
           
}
           list.forEach(x -> System.
out.println(x.toString()));

           
usersArrayList = (ArrayList<Users>) list;
           
System.out.println(usersArrayList);
       
} catch (InputMismatchException e) {
           System.
out.println("Enter correct value!");
           
scanner.nextLine();
       
}

       
filterByRates = true;
       return
usersArrayList;
   
}


   
//Отмена фильтрации
   
public static ArrayList<Users> cancelingFiltering(ArrayList<Users> usersArrayList, ArrayList<Users> usersArrayListSavedAll) {
       System.
out.println("1 - cancel all filters" + "   2 - cancel age filtering" + "   3 - cancel rates filtering");
       
Scanner scanner = new Scanner(System.in);
       int
choise = 1;
       try
{
           choise = scanner.nextInt()
;
           switch
(choise) {
               
case 1:
                   
//отменить все фильтры
                   
usersArrayList = usersArrayListSavedAll;
                   
System.out.println(usersArrayList);
               case
2:
                   
//отменить фильтрацию по возрасту
                   
if (filterByAge)
                   {
                       
if (filterByRates)
                       {
                           
switch (choiceFilterByRates) {
                               
case 1:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> Objects.
equals(x.getRate(), "Premium")).collect(Collectors.toList());
                                   break;
                               case
2:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> Objects.
equals(x.getRate(), "Standard")).collect(Collectors.toList());
                                   break;
                               case
3:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> Objects.
equals(x.getRate(), "Minimum")).collect(Collectors.toList());
                                   break;
                           
}
                       }
                       
else
                       
{
                           usersArrayList = usersArrayListSavedAll
;
                       
}
                       
filterByAge = false;
                   
}

                   
break;
               case
3:
                   
//отменить фильтрацию по тарифу;
                   
if (filterByRates)
                   {
                       
if (filterByAge)
                       {
                           
switch (choiceFilterByAge) {
                               
case 1:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> x.getAge() >
17 && x.getAge() < 45).collect(Collectors.toList());
                                   break;
                               case
2:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> x.getAge() >
44 && x.getAge() < 60).collect(Collectors.toList());

                                   break;
                               case
3:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> x.getAge() >
59 && x.getAge() < 75).collect(Collectors.toList());
                                   break;
                               case
4:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> x.getAge() >
74 && x.getAge() < 91).collect(Collectors.toList());
                                   break;
                               case
5:
                                   usersArrayList = (ArrayList<Users>) usersArrayListSavedAll.stream().filter(x -> x.getAge() >
90).collect(Collectors.toList());
                                   break;
                           
}
                       }
                       
else
                       
{
                           usersArrayList = usersArrayListSavedAll
;
                       
}
                       
filterByRates = false;
                   
}
                   
break;
           
}

       }
catch (InputMismatchException e) {
           System.
out.println("Enter correct value!");
           
scanner.nextLine();
       
}
       
return usersArrayList;
   
}
}

...

Скачать:   txt (19.2 Kb)   pdf (157.5 Kb)   docx (20.5 Kb)  
Продолжить читать еще 22 страниц(ы) »
Доступно только на Essays.club