Лабораторная работа №3_1. Исходный код



Исходный код класса Main

import java.text.DecimalFormat;
import java.util.Random;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
   String info =
       "Лабораторная работа№3.1\n"+
       "Вариант3\n"+
       "Соколов Евгений Александрович\n"+
       "Условие:Предметная область «Начисление заработной платы».\n"+
       "Есть предприятие в нём несколько групп сотрудников, инженеры, рабочие, менеджеры по продажам.\n"+
       "Программа должна отражать начисление зарплат для всех выше перечисленных категорий сотрудников, следующим образом:\n"+
       "для инженеров зарплата начисляется как оклад плюс премия если она есть, для рабочих в зависимости от отработанных часов,\n"+
       "сверхурочные часы оплачиваются в двойном размере, для менеджеров по продажам, оклад плюс бонусы за каждую совершённую сделку.";
   System.out.println(info);
   DecimalFormat f = new DecimalFormat("0.00");
   Random r = new Random();
   Scanner scanner = new Scanner(System.in);

   while (true) {
       System.out.println("==================");
       int startEngineerSalary = r.nextInt(100000);
       Engineer engineer = new Engineer(startEngineerSalary);
       int startWorkerSalaryPerHour = r.nextInt(1000);
       int startWorkerGeneralHour = r.nextInt(100);
       Worker worker = new Worker(startWorkerSalaryPerHour, startWorkerGeneralHour);
       int startManagerSalary = r.nextInt(50000);
       int startManagerBonusPerSale = r.nextInt(1000);
       Manager manager = new Manager(startManagerSalary, startManagerBonusPerSale);
       int inputEngineerBonus = r.nextInt(10000);
       double engineerSalary = engineer.payroll(inputEngineerBonus);

       int inputWorkerHour = r.nextInt(100);
       double workerSalary = worker.payroll(51);

       int inputManagerSales = r.nextInt(20);
       double managerSalary = manager.payroll(4);

       System.out.println("Зарплата инженера с бонусом 2500: " + f.format(inputEngineerBonus) + " is " + f.format(engineerSalary) + " руб.");
       System.out.println("Зарплата для работника с 3 дополнительными часами: " + f.format(workerSalary) + " руб.");
       System.out.println("Зарплата менеджера с 4 продажами: " + inputManagerSales + " продажи " + f.format(managerSalary) + " руб.");

       System.out.println("Повторить? да/нет");
       if (scanner.nextLine().equals("нет")) {
           return;
       }
   }
}
}

 

Исходный код класса Employee

public abstract class Employee {
double salary;
abstract double payroll(double value);
}

 

Исходный код класса Engineer

public class Engineer extends Employee {


public Engineer(double salary) {
   this.salary = salary;
}
@Override
double payroll(double bonus) {
   return salary + bonus;
}
}

Исходный код класса Manager

public class Manager extends Employee {

double bonusPerSale;

public Manager(double salary, double bonusPerSale) {
   this.salary = salary;
   this.bonusPerSale = bonusPerSale;
}
@Override
double payroll(double saleCount) {
   return salary + saleCount * bonusPerSale;
}
}

Исходный код класса Worker

public class Worker extends Employee {
private double generalHours;

public Worker(double salaryPerHour, double generalHours) {
   salary = salaryPerHour;
   this.generalHours = generalHours;
}
@Override
double payroll(double hours) {
   if (hours > generalHours) {
       return (hours - generalHours) * salary * 2 + generalHours * salary;
   } else {
       return hours * salary;
   }
}
}

Приложение А4

Лабораторная работа №3_2. Исходный код

Исходный код класса Main

import javafx.geometry.Point2D;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
   String info=
       "Лабораторная работа№3.2\n"+
       "вариант3\n"+
       "Соколов Евгений Александрович\n"+
       "Условие:Создать класс окружность, член класса - R.\n"+
       "Предусмотреть в классе методы вычисления и вывода сведений о фигуре – площади, длины окружности.\n"+
       "Создать производный класс – круглый прямой цилиндр с высотой h, добавить в класс метод определения объема фигуры,\n"+
       "перегрузить методы расчета площади и вывода сведений о фигуре.\n"+
       "Написать программу, демонстрирующую работу с классом: дано N окружностей и M цилиндров,\n"+
       "найти окружность максимальной площади и средний объем цилиндров.";
   System.out.println(info);

   DecimalFormat f = new DecimalFormat("0.00");

   Scanner scanner = new Scanner(System.in);

   while (true) {

       System.out.print("Введите число четырехугольников: ");
       int N = scanner.nextInt();

       List<Quadrangle> quadrangles = new ArrayList<>();
       for (int i = 0; i < N; i++) { //ввод 4угольнтков
          
System.out.println((i + 1) + " четырехугольник");

           System.out.print("Левая верхняя точка: ");
           Point2D leftTop = getPoint();

           System.out.print("Левая нижняя точка: ");
           Point2D leftBottom = getPoint();

           System.out.print("Правая верхняя точка: ");
           Point2D rightTop = getPoint();

           System.out.print("Правая нижняя точка: ");
           Point2D rightBottom = getPoint();

           Quadrangle quadrangle = new Quadrangle(leftTop, leftBottom, rightTop, rightBottom);
           quadrangles.add(quadrangle);
       }

       System.out.print("Введите колличество квадратов: ");
       int M = scanner.nextInt();
       scanner.nextLine();

       List<Square> squares = new ArrayList<>();
       for (int i = 0; i < M; i++) {   //ввод квадратов
          
System.out.println((i + 1) + " квадрат");

           System.out.print("Левая верхняя точка: ");
           Point2D leftTop = getPoint();

           System.out.print("Левая нижняя точка: ");
           Point2D leftBottom = getPoint();

           System.out.print("Правая верхняя точка: ");
           Point2D rightTop = getPoint();

           System.out.print("Правая нижняя точка: ");
           Point2D rightBottom = getPoint();

           Square square = new Square(leftTop, leftBottom, rightTop, rightBottom);
           squares.add(square);
       }

       if (!quadrangles.isEmpty()) {

           double perimeters = 0;
           double areas = 0;
           for (Quadrangle quadrangle : quadrangles) { // общие периметр и площадь
              
perimeters += quadrangle.getPerimeter();
               areas += quadrangle.getArea();
           }
           double averagePerimeter = perimeters / quadrangles.size(); // средний перимтр
          
double averageArea = areas / quadrangles.size(); // средняя площадь

           System.out.println("Средний периметр " + f.format(averagePerimeter));
           System.out.println("Средняя площадь " + f.format(averageArea));
       } else {
           System.out.println("Список четырехугольников пуст");
       }

       if (!squares.isEmpty()) {
           // поиск наименьшего квадрата[по площади]
          
Square minSquare = squares.get(0);// первый элемент в списке
          
for (Square square : squares) {
               if (minSquare.getArea() > square.getArea()) {
                   minSquare = square;
               }
           }

           System.out.println("Минимальный квадрат1");
           minSquare.info();
       } else {
           System.out.println("Список квадратов пуст");
       }

       System.out.println("Повторить? да/нет");
       if (scanner.nextLine().equals("нет")) {
           return;
       }
   }
}

public static Point2D getPoint() {   // вынес в функцию получения координат с консоли, т.к. дуюлировать код для каждой точки перебор
  
Scanner scanner = new Scanner(System.in); // создает сканер
  
System.out.print("x = ");
   double x = scanner.nextDouble(); // ввод координаты x
  
System.out.print("y = ");
   double y = scanner.nextDouble(); // ввод координаты y
  
return new Point2D(x, y); // создает точку по полученным координатам и возвращает ее.
}
}

 

Исходный код класса Quadrangle

import javafx.geometry.Point2D;

import java.text.DecimalFormat;

public class Quadrangle { // четырех угольник
private Point2D leftTop; //левая верхняя точка
private Point2D leftBottom; // правая нижняя
private Point2D rightTop;
private Point2D rightBottom;

public Quadrangle(Point2D leftTop, Point2D leftBottom, Point2D rightTop, Point2D rightBottom) { // получает координаты
  
this.leftTop = leftTop;
   this.leftBottom = leftBottom;
   this.rightTop = rightTop;
   this.rightBottom = rightBottom;
}

public double getWidth() {
   return Math.abs(leftTop.getX() - rightTop.getX());
} // ширина

public double getHeight() {
   return Math.abs(leftTop.getY() - leftBottom.getY());
} // высота

public double getPerimeter() {
   return 2 * getWidth() + 2 * getHeight();
} // периметр

public double getArea() {
   return getHeight() * getWidth();
} // площадь

public double getFirstDiagonal() { // длина 1 диагонали
  
double x = rightBottom.getX() - leftTop.getX();
   double y = rightBottom.getY() - leftTop.getY();
   return Math.sqrt(x * x + y * y);
}

public double getSecondDiagonal() { // длина 2 диагонали
  
double x = leftBottom.getX() - rightTop.getX();
   double y = leftBottom.getY() - rightTop.getY();
   return Math.sqrt(x * x + y * y);
}

public void info() {
   DecimalFormat f = new DecimalFormat("0.00");
   System.out.println("Ширина " + f.format(getWidth()));
   System.out.println("Высота " + f.format(getHeight()));
   System.out.println("Периметр " + f.format(getPerimeter()));
   System.out.println("Площадь " + f.format(getArea()));
}
}

Исходный код класса Square

import javafx.geometry.Point2D;

public class Square extends Quadrangle {

public Square(Point2D leftTop, Point2D leftBottom, Point2D rightTop, Point2D rightBottom) {
   super(leftTop, leftBottom, rightTop, rightBottom);
}

public boolean isSquare() {
   return getWidth() == getHeight() && getFirstDiagonal() == getSecondDiagonal();
}
}

 

Приложение А5


Дата добавления: 2018-11-24; просмотров: 354; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!