ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
з навчальної дисципліниЗвіт з учбово-обчислювальної Практики з навчальної дисципліни «Основи програмування»
Студента (ки) __1__ курсу
м. Одеса – 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 метода:
Функция 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; } } } } }
Не нашли, что искали? Воспользуйтесь поиском:
|