Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Novy_textovy_dokument_2

.txt
Скачиваний:
2
Добавлен:
18.10.2022
Размер:
10.39 Кб
Скачать
using System;
using System.Collections.Generic;

namespace Laba3
{
enum Colors { white, red, yellow, blue,black }
enum Bodytype { Car, Bus, Truck }
enum Passenger { Yes, No }

abstract class AVehicle
{
protected int lisensePlateNumber;
protected string hasPassenger;
protected string Color;
protected string VehicleBodyType;
abstract public string GetBodyType();
abstract public int GetSpeed();
abstract public string GetColor();
abstract public string HasPassenger();
abstract public int GetLisensePlateNumber();
}
class Bus : AVehicle
{
public override string GetBodyType()
{

VehicleBodyType = Bodytype.Bus.ToString();
return $"{VehicleBodyType}";
}

public override string GetColor()
{
var enumLength = Enum.GetNames(typeof(Colors)).Length;
var randomElement = (Colors)new Random().Next(enumLength);
Color = randomElement.ToString();
return $"{Color}";
}
public override string HasPassenger()
{
var enumLength = Enum.GetNames(typeof(Passenger)).Length;
var randomElement = (Passenger)new Random().Next(enumLength);
hasPassenger = randomElement.ToString();
return $"{hasPassenger}";

}
public override int GetLisensePlateNumber()
{
Random r1 = new Random();
lisensePlateNumber = r1.Next(100, 1000);
return lisensePlateNumber;

}

public override int GetSpeed()
{
Random random = new Random();
return random.Next(80, 111);
}

public override string ToString()
{
if (GetSpeed() > 110)
{
return $"Тип кузова: {base.VehicleBodyType} \nНомер транспорта: {lisensePlateNumber} \nЦвет автомобиля: {GetColor()} \nСкорость: {GetSpeed()} \nПассажир: {HasPassenger()}\nПревышение скорости";
}
else
{
return $"Тип кузова: {base.VehicleBodyType} \nНомер транспорта: {lisensePlateNumber} \nЦвет автомобиля: {GetColor()} \nСкорость: {GetSpeed()} \nПассажир: {HasPassenger()}";
}
}
}
class Car : AVehicle
{

public override string GetBodyType()
{

VehicleBodyType = Bodytype.Car.ToString();
return $"{VehicleBodyType}";
}

public override string GetColor()
{
var enumLength = Enum.GetNames(typeof(Colors)).Length;
var randomElement = (Colors)new Random().Next(enumLength);
Color = randomElement.ToString();
return $"{Color}";
}
public override string HasPassenger()
{
var enumLength = Enum.GetNames(typeof(Passenger)).Length;
var randomElement = (Passenger)new Random().Next(enumLength);
hasPassenger = randomElement.ToString();
return $"{hasPassenger}";

}
public override int GetLisensePlateNumber()
{
Random r1 = new Random();

lisensePlateNumber = r1.Next(100, 1000);
return lisensePlateNumber;

}

public override int GetSpeed()
{
Random random = new Random();
return random.Next(90, 151);
}
public override string ToString()
{
if (GetSpeed() > 110)
{
return $"Тип кузова: {base.VehicleBodyType} \nНомер транспорта: {lisensePlateNumber} \nЦвет автомобиля: {GetColor()} \nСкорость: {GetSpeed()} \nПассажир: {HasPassenger()}\nПревышение скорости";
}
else
{
return $"Тип кузова: {base.VehicleBodyType} \nНомер транспорта: {lisensePlateNumber} \nЦвет автомобиля: {GetColor()} \nСкорость: {GetSpeed()} \nПассажир: {HasPassenger()}";
}
}
}
class Truck : AVehicle
{
public override string GetBodyType()
{

VehicleBodyType = Bodytype.Truck.ToString();
return $"{VehicleBodyType}";
}

public override string GetColor()
{
var enumLength = Enum.GetNames(typeof(Colors)).Length;
var randomElement = (Colors)new Random().Next(enumLength);
Color = randomElement.ToString();
return $"{Color}";
}
public override string HasPassenger()
{
var enumLength = Enum.GetNames(typeof(Passenger)).Length;
var randomElement = (Passenger)new Random().Next(enumLength);
hasPassenger = randomElement.ToString();
return $"{hasPassenger}";

}
public override int GetLisensePlateNumber()
{
Random r1 = new Random();
lisensePlateNumber = r1.Next(100, 1000);
return lisensePlateNumber;

}
public override int GetSpeed()
{
Random random = new Random();
return random.Next(80, 101);
}
public override string ToString()
{
if (GetSpeed() > 110)
{
return $"Тип кузова: {base.VehicleBodyType} \nНомер транспорта: {lisensePlateNumber} \nЦвет автомобиля: {GetColor()} \nСкорость: {GetSpeed()} \nПассажир: {HasPassenger()}\nПревышение скорости";
}
else
{
return $"Тип кузова: {base.VehicleBodyType} \nНомер транспорта: {lisensePlateNumber} \nЦвет автомобиля: {GetColor()} \nСкорость: {GetSpeed()} \nПассажир: {HasPassenger()}";
}
}
}
class CheckPoint
{
private CheckPointStatistics statistics = new CheckPointStatistics();
public List<int> stolenNumbers { get; set; }


public void RegisterCar(AVehicle vehicle)
{
if (vehicle.GetBodyType() == "Car")
statistics.CarsCount += 1;

if (vehicle.GetBodyType() == "Bus")
statistics.BusesCount++;

if (vehicle.GetBodyType() == "Truck")
statistics.TrucksCount++;

if (vehicle.GetSpeed() > 110)
statistics.SpeedLimitBreakersCount += 1;

if (this.stolenNumbers.Contains(vehicle.GetLisensePlateNumber()))
{
Console.WriteLine("Перехват!!!!");
statistics.CarJackersCount++;
}


statistics.SumSpeed += vehicle.GetSpeed();
}

public CheckPointStatistics GetCheckPointStatistics()
{
return statistics;
}

}
class CheckPointStatistics
{
public double CarsCount;
public double BusesCount;
public double TrucksCount;
public int SpeedLimitBreakersCount;
public int CarJackersCount;
public double SumSpeed;
public override string ToString()

{

return $"Общее количество машин: {CarsCount + BusesCount + TrucksCount}\nЛегковых: {CarsCount}\nАвтобусов: {BusesCount}\nГрузовых: {TrucksCount}\nНарушителей скоростного режима: {SpeedLimitBreakersCount}\nУгонщиков поймано: {CarJackersCount} \nСредняя скорость потока: {SumSpeed / (CarsCount + BusesCount + TrucksCount)}";
}
}
class Program
{
static void Main(string[] args)
{
CheckPoint checkPoint = new CheckPoint();
checkPoint.stolenNumbers = new System.Collections.Generic.List<int>(new int[] { 111, 222, 333, 444, 555 });

Random r1 = new Random();
Random rnd = new Random();
while (!Console.KeyAvailable)
{

int caseSwitch = r1.Next(1, 4);
switch (caseSwitch)
{

case 1:
Bus bus = new Bus();
checkPoint.RegisterCar(bus);
Console.WriteLine(bus);
Console.WriteLine("_________________");
System.Threading.Thread.Sleep(rnd.Next(500, 5000));
break;
case 2:
Car car = new Car();
checkPoint.RegisterCar(car);
Console.WriteLine(car);
Console.WriteLine("_________________");
System.Threading.Thread.Sleep(rnd.Next(500, 5000));
break;
case 3:
Truck truck = new Truck();
checkPoint.RegisterCar(truck);
Console.WriteLine(truck);
Console.WriteLine("_________________");
System.Threading.Thread.Sleep(rnd.Next(500, 5000));
break;

}

}
if (Console.KeyAvailable)
{
Console.WriteLine(checkPoint.GetCheckPointStatistics());

}
}
}
}
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]