Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






з навчальної дисципліни

Звіт з учбово-обчислювальної

Практики

з навчальної дисципліни

«Основи програмування»

 

 

Студента (ки) __1__ курсу

Антонець С.В.
(прізвище, ім’я та по-батькові)

 

напрям підготовки «Механіка»
  (напрям підготовки)
спеціальність 6.040202 «Механіка»
  (шифр і назва спеціальності)
     

 

Керівник асистент Скрипник Т.Ю.
(вчене звання, науковий ступінь, посада, прізвище та ініціали, підпис)

 

Оцінка  
Дата захисту  

 

м. Одеса – 2012 р.

 

 

Вариант №18

Задание:

Описать класс самолет, содержащий следующие закрытые поля:

- название пункта назначения

- шестизначный номер рейса

- время отправления

- предусмотреть свойства для получения состояния объекта.

Описать класс аэропорт, содержащий закрытый массив самолетов. Обеспечить следующие возможности:

- вывод информации о самолете по номеру рейса с помощью индекса

- вывод информации о самолетах, отправляющихся в течение часа после введенного с клавиатуры времени

- вывод информации о самолетах, отправляющихся в заданный пункт назначения

перегруженную операцию сравнения, выполняющую сравнения времени отправления двух самолетов.

Информация должна быть отсортирована по времени отправления. Написать программу, демонстрирующую все разработанные элементы класса!

Алгоритм:

 

Создаем класс «Samolet»

public class Samolet

 

В классе имеется 4 члена закрытого типа:

 

Private string punkt;

Private string nomer;

Private double minut;

Private double chas;

 

 

Далее в классе имеются функции - члены (методы доступа):

Методы Get, Set нужны для возращения или установки значений закрытым переменным-членам.

 

Public void SetPunkt(string a)

Public void SetNomer(string a)

Public void SetVremy(double a, double b)

Public string GetPunkt()

Public string GetNomer()

Public double GetVremyC()

Public double GetVremyM()

 

 

В классе так же имеется 2 конструктора:

1-й конструктор без входящих параметров, в нем задаем начальные значения переменным

 

publicSamolet()

{

punkt = "Киев";

nomer = "32145N";

chas = 21;

minut = 30;

}

2-й конструктор с входящими параметрами

 

publicSamolet(string p, string n, double c, double m)

{

punkt = p;

nomer = n;

chas = c;

minut = m;

}

}

 

 

Далее создаем класс Aeroport, который будет наследником класса Samolet

 

classAeroport:Samolet

 

Класс имеет такие методы:

 

1. Функция «RaschetVrem» выводит на экран рейсы, которые отправляются в течение часа, либо отправляются в данный момент. Метод ничего не возвращает, в качестве параметров принимает массив аэропортов, часы, минуты и кол-во отправляемых поездов.

 

Public void RaschetVrem(Aeroport[] S, doublech, double min, int n)

 

 

2. Функция «PoiskPunkta» осуществляет поиск пункта заданного пользователем, функция ничего не возвращает, в качестве параметров принимает массив аэропортов, пункт назначения и кол-во отправляемых поездов. В цикле проходимся от нулевого до последнего элемента, если пункт найден, выводим на экран, в противном случае выводим на экран, что заданной информации не существует!

Public void PoiskPunkta(Aeroport[] S, string pun, int n)

 

3. В классе имеется перегруженная функция " Vremy», выполняющая сравнения времени отправления двух самолетов. Методы возвращают true или false, в качестве параметров 1-я функция принимает массив аэропортов, индекс самолета, минуты

 

Public bool Vremy(Aeroport[] S, int i, double min)

Вторая функция в качестве параметров принимает массив аэропортов, индекс самолета и минуты

 

Public bool Vremy(Aeroport[] S, int i)

 

Далее идет class Program

 

В нем есть 2 метода:

  1. Статическая функция Menu, которая будет пользовательским меню, параметров не принимает, и ничего не возвращает!
  2. Статическая функция Punkt, проверяет корректность ввода пользователем, в качестве параметров принимает строку, метод возвращает true или false в зависимости от результата!

 

Функция Main()

Пользователю предоставляется меню, в зависимости от выбора пункта польз, вводит данные либо завершает работу программы.

 

Console.WriteLine("Меню ввода");

Console.WriteLine();

Console.WriteLine("1- ввести начальные данные:");

Console.WriteLine("2- выход");

Console.Write("======>");

 

Если выбран пункт 1, польз. вводит данные, которые проверяются в процессе их ввода, заполнение данных происходит в цикле

 

Console.WriteLine("Введите количество отправляемых самолетов:");

Console.WriteLine("Введите пункт назначения:");

Console.WriteLine("Введите шестизначный номер самолета:");

Console.WriteLine("Введите время отправления");

Console.WriteLine("Часы:");

Console.WriteLine("Минуты:");

 

 

Если выбран пункт 2, то выходим из программы!

Далее вызываем еще одно меню, где пользователь работает с введенными им данными

 

Console.WriteLine(" Меню просмотра информации");

Console.WriteLine();

Console.WriteLine("1- поиск по индексу самолета");

Console.WriteLine("2- задать время и получить информацию о рейсах, которые будут отправлятся в течении часа");

Console.WriteLine("3- поиск по пункту назначения");

Console.WriteLine("4- просмотр всех рейсов");

Console.WriteLine("5- выход");

Console.Write("====>");

 

Если выбран пункт 1, программа осуществляет поиск по заданному пользователем индексу

Если выбран пункт 2, польз. задает удобное ему время, программа выводит все возможные рейсы, которые отправляются в течение часа, иначе в противном случае ничего не выводит

Если выбран пункт 3, программа осуществляет поиск по заданному пользователем пункту назначения, если найден с таким именем - данные выводятся, в противном случае вывод сообщения о том, что нет указанного пункта!

Если выбран пункт 4, на экран выводятся все возможные рейсы, отсортированы по времени

Если выбран пункт 5, завершение работы программы!

 

Код программы:

using System;

using System.Collections.Generic;

using System.Text;

 

namespace Practise1

{

class Samolet

{

private string punkt;

private string nomer;

private double minut;

private double chas;

public void SetPunkt(string a)

{

punkt = a;

}

public void SetNomer(string a)

{

nomer = a;

}

public void SetMinutu(double b)

{

minut = b;

 

}

public void SetChas(double a)

{

chas = a;

}

public string GetPunkt()

{

return punkt;

}

public string GetNomer()

{

return nomer;

}

public double GetVremyC()

{

return chas;

}

public double GetVremyM()

{

return minut;

}

public Samolet()

{

punkt = "Киев";

nomer = "32145N";

chas = 21;

minut = 34;

}

public Samolet(string p, string n, double c, double m)

{

punkt = p;

nomer = n;

chas = c;

minut = m;

}

}

class Aeroport: Samolet

{

 

public void RaschetVrem(Aeroport[] S, double ch, double min, int n)

{

for (int i = 0; i < n; i++)

{

if (((S[i].GetVremyC()) == ch))

{

if (S[i].GetVremyM() == min)

{

Console.WriteLine("В данный момент отправляется рейс:");

Console.WriteLine("{0}\t{1}\t{2}:{3} ", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

}

}

 

if (((S[i].GetVremyC()) == ch))

{

double x = min - S[i].GetVremyM();

if (x > 0)

{

Console.WriteLine("Самолет будет отправлен за {0} минут до Вашего отправления:", x);

Console.WriteLine("{0}\t{1}\t{2}:{3} ", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

 

}

}

if (S[i].GetVremyC() == ch)

{

double x = S[i].GetVremyM() - min;

if (x > 0)

{

Console.WriteLine("Самолет будет отправлен через {0} минут после Вашего желаемого отправления ", x);

Console.WriteLine("{0}\t{1}\t{2}:{3} ", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

}

 

 

}

if (((S[i].GetVremyC()) - ch) == 1)

{

double z = 60 - S[i].GetVremyM(); double z1 = min;

double s = z + z1;

if (s < 60)

{

Console.WriteLine("Самолет будет отправлен за {0} минут до Вашего отправления ", s);

Console.WriteLine("{0}\t{1}\t{2}:{3} ", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

}

if (s == 60)

{

Console.WriteLine("Самолет будет отправлен через час после Вашего желаемого отправления");

Console.WriteLine("{0}\t{1}\t{2}:{3} ", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

}

}

if ((ch - (S[i].GetVremyC())) == 1)

{

double z = 60 - S[i].GetVremyM(); double z1 = min; double s = z + z1;

if (s < 60)

{

Console.WriteLine("Самолет будет отправлен через {0} минут после Вашего отправления ", s);

Console.WriteLine("{0}\t{1}\t{2}:{3} ", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

}

if (s == 60)

{

Console.WriteLine("Самолет будет отправлен за час до Вашего отправления ");

Console.WriteLine("{0}\t{1}\t{2}:{3} ", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

}

 

}

}

}

 

public void PoiskPunkta(Aeroport[] S, string pun, int n)

{

bool fl = false;

for (int i = 0; i < n; i++)

{

if (S[i].GetPunkt() == pun)

{

fl = true;

Console.WriteLine("Данные:{0}\t{1}\t{2}:{3}", S[i].GetPunkt(), S[i].GetNomer(), S[i].GetVremyC(), S[i].GetVremyM());

}

}

if (fl == false)

Console.WriteLine("Заданного пункта не существует!");

 

}

public bool Vremy(Aeroport[] S, int i, int min)

{

bool fl = false;

 

if (S[i].GetVremyC() < S[i + 1].GetVremyC())

fl = true;

return fl;

}

public bool Vremy(Aeroport[] S, int i)

{

bool fl = false;

 

if (S[i].GetVremyM() < S[i + 1].GetVremyM())

fl = true;

return fl;

 

}

}

class Program

{

static void Menu()

{

Console.WriteLine(" Меню просмотра информации");

Console.WriteLine();

Console.WriteLine("1- поиск по индексу самолета");

Console.WriteLine("2- задать время и получить информацию о рейсах, которые будут отправлятся в течении часа");

Console.WriteLine("3- поиск по пункту назначения");

Console.WriteLine("4- просмотр всех рейсов");

Console.WriteLine("5- выход");

Console.Write("====>");

}

static bool Punkt(string a)

{

int g = 0;

bool o = false;

for (int i = 0; i < a.Length; i++)

{

if (Char.IsDigit(a[i]))

{

}

else

{

g++;

}

}

if (g == a.Length)

o = true;

return o;

}

 

 

static void Main(string[] args)

{

Console.WriteLine("Меню ввода");

Console.WriteLine();

Console.WriteLine("1- ввести начальные данные:");

Console.WriteLine("2- выход");

Console.Write("======>");

int vvod = Convert.ToInt32(Console.ReadLine());

Console.Clear();

Aeroport Lev = new Aeroport();

if (vvod == 2)

{

return;

}

if (vvod == 1)

 

Console.WriteLine("Введите количество отправляемых самолетов:");

int n = int.Parse(Console.ReadLine());

int ii = 0; bool otv;

Aeroport[] Sam = new Aeroport[n];

while (ii < n)

{

for (int i = 0; i < n; i++)

{

Sam[i] = new Aeroport();

while (true)

{

Console.WriteLine("Введите пункт назначения:");

string a = Console.ReadLine();

otv = Punkt(a);

if (otv == true)

{

Sam[i].SetPunkt(a);

break;

}

else

{

Console.WriteLine("В названии пункта назначения цифр быть не должно!");

}

}

while (true)

{

Console.WriteLine("Введите шестизначный номер самолета:");

string b = Convert.ToString(Console.ReadLine());

if (b.Length == 6)

{

Sam[i].SetNomer(b);

break;

}

else

{

Console.WriteLine("Номер рейса должен состоять из 6 знаков!");

}

}

Console.WriteLine("Введите время отправления");

while (true)

{

Console.WriteLine("Часы:");

double c = Convert.ToDouble(Console.ReadLine());

if (c >= 0 & c <= 24)

{

Sam[i].SetChas(c);

break;

}

else

{

Console.WriteLine("Возможно Вы ошиблись при вводе!");

}

}

while (true)

{

Console.WriteLine("Минуты:");

double d = Convert.ToDouble(Console.ReadLine());

if (d >= 0 & d < 60)

{

Sam[i].SetMinutu(d);

break;

}

else

{

Console.WriteLine("Вы ошиблись при вводе!");

}

}

ii++;

}

}

Console.Clear();

while (true)

{

Menu();

char c = Convert.ToChar(Console.ReadLine());

switch (c)

{

case '1':

{

while (true)

{

Console.WriteLine("Введите индекс самолета номер рейса которого нужно вывести:");

int e = Convert.ToInt32(Console.ReadLine());

if (e >= 0 & e <= n - 1)

{

Console.WriteLine("Номер рейса у самолета {0}:{1}", e, Sam[e].GetNomer());

break;

}

else

{

Console.WriteLine("Заданного индекса не существует!");

}

}

break;

}

case '2':

{

Console.WriteLine("Введите интересующее Вас время отправления");

while (true)

{

Console.WriteLine("Часы");

double A = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Минуты");

double B = Convert.ToDouble(Console.ReadLine());

if ((A >= 0 & A <= 24) & (B >= 0 & B < 60))

{

Lev.RaschetVrem(Sam, A, B, n);

break;

}

else

{

Console.WriteLine("Вы ошиблись при вводе времени!Пожалуйста повторите!");

}

}

break;

}

case '3':

{

while (true)

{

Console.WriteLine("Введите интересующий вас пункт назначения:");

string pun = Console.ReadLine();

otv = Punkt(pun);

if (otv == true)

{

Lev.PoiskPunkta(Sam, pun, n);

break;

}

else

{

Console.WriteLine("В названии пункта назначения цифр нет!");

}

}

Aeroport k;

for (int j = 0; j < n - 1; j++)

{

for (int i = 0; i < n - j - 1; i++)

{

int B = 0;

if (Lev.Vremy(Sam, i, B))

{

k = Sam[i];

Sam[i] = Sam[i + 1];

Sam[i + 1] = k;

if (Sam[i].GetVremyC() == Sam[i + 1].GetVremyC())

 

if (Lev.Vremy(Sam, i))

{

k = Sam[i];

Sam[i] = Sam[i + 1];

Sam[i + 1] = k;

 

}

}

 

}

}

break;

}

case '4':

{

Console.WriteLine("Список отправляемых рейсов:");

for (int i = 0; i < n; i++)

Console.WriteLine("{0}\t{1}\t{2}:{3}", Sam[i].GetPunkt(), Sam[i].GetNomer(), Sam[i].GetVremyC(), Sam[i].GetVremyM());

break;

}

case '5':

 

default:

return;

}

}

}

}

}

 

<== предыдущая лекция | следующая лекция ==>
 | Проверка накладной и заполнение соответствующих ее граф


Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных