Главная страница
Навигация по странице:

  • Листинг Б2 – Файл « EditAirport . cs »

  • Курсовая аэропорт. Разработка базы данных гражданских авиалиний


    Скачать 0.93 Mb.
    НазваниеРазработка базы данных гражданских авиалиний
    АнкорКурсовая аэропорт
    Дата07.12.2021
    Размер0.93 Mb.
    Формат файлаdoc
    Имя файлаcourse_project_airport.doc
    ТипПояснительная записка
    #295596
    страница10 из 10
    1   2   3   4   5   6   7   8   9   10

    ПРИЛОЖЕНИЕ Б
    Фрагменты листинга




    Листинг Б1Файл «Airport.cs»

    using System;

    using System.Collections.Generic;
    namespace Airport

    {

    // Тип рейса с точки зрения аэропорта

    public enum FlightType

    {

    Depart, // Отправка

    Arrival, // Прибытие

    Transit // Транзит

    }
    // Класс мест

    public enum TravelClass

    {

    FirstClass, // Первый класс

    BusinessClass, // Бизнесс класс

    ComfortClass, // Комфорт класс

    EconomyClass // Эконом класс

    }
    // Класс "Аэропорт"

    [Serializable]

    public class Airport

    {

    private String Name; // Название аэропорта

    private String Address; // Адрес аэропорта
    // Конструкторы

    public Airport()

    {

    Name = "XXXX";

    Address = "XXXX";

    }

    public Airport(String Name, String Address)

    {

    this.Name = Name;

    this.Address = Address;

    }
    // Свойства

    public String AirportName

    {

    get

    {

    return Name;

    }

    set

    {

    if (value.Length > 0 && value.Length < 64)

    Name = value;

    else

    throw new ArgumentOutOfRangeException("Name", "Название аэропорта должно быть длиной не более 64 символов и не пустым");

    }

    }

    public String AirportAddress

    {

    get

    {

    return Address;

    }

    set

    {

    if (value.Length > 0 && value.Length < 128)

    Address = value;

    else

    throw new ArgumentOutOfRangeException("Address", "Адрес аэропорта должен быть длиной не более 128 символов и не пустым");

    }

    }

    }
    // Абстрактный класс "Человек"

    [Serializable]

    public abstract class Human

    {

    protected String FullName; // Полное имя формате "Фамилия Имя Отчество"
    // Конструкторы

    public Human()

    {

    FullName = "XXXX";

    }

    public Human(String FullName)

    {

    this.FullName = FullName;

    }

    public Human(String Surname, String Name, String Patronymic)

    {

    FullName = Surname + " " + Name + " " + Patronymic;

    }
    // Свойства

    public String HumanFullName

    {

    get

    {

    return FullName;

    }

    set

    {

    if (value.Length > 0 && value.Length < 64)

    FullName = value;

    else

    throw new ArgumentOutOfRangeException("FullName", "Полное имя человека должно быть длиной не более 64 символов и не пустым");

    }

    }

    }
    // Абстрактный класс "Член команды"

    [Serializable]

    public abstract class Crew : Human

    {

    protected String PhoneNumber; // Контактный номер телефона

    protected String HomeAddress; // Домашний адрес
    // Конструкторы

    public Crew() : base()

    {

    PhoneNumber = "+X-XXX-XXX-XXXX";

    HomeAddress = "XXXX";

    }

    public Crew(String FullName, String PhoneNumber, String HomeAddress) : base(FullName)

    {

    this.PhoneNumber = PhoneNumber;

    this.HomeAddress = HomeAddress;

    }

    public Crew(String Surname, String Name, String Patronymic, String PhoneNumber, String HomeAddress) : base(Surname, Name, Patronymic)

    {

    this.PhoneNumber = PhoneNumber;

    this.HomeAddress = HomeAddress;

    }
    // Свойства

    public String CrewPhoneNumber

    {

    get

    {

    return PhoneNumber;

    }

    set

    {

    if (value.Length > 0 && value.Length < 16)

    PhoneNumber = value;

    else

    throw new ArgumentOutOfRangeException("PhoneNumber", "Номер телефона должен быть длиной не более 16 символов и не пустым");

    }

    }

    public String CrewHomeAddress

    {

    get

    {

    return HomeAddress;

    }

    set

    {

    if (value.Length > 0 && value.Length < 128)

    HomeAddress = value;

    else

    throw new ArgumentOutOfRangeException("HomeAddress", "Домашний адрес должен быть длиной не более 128 символов и не пустым");

    }

    }

    }
    // Класс "Пассажир"

    [Serializable]

    public class Passenger : Human

    {

    private Int32 Age; // Возраст
    // Конструкторы

    public Passenger() : base()

    {

    Age = 199;

    }

    public Passenger(String FullName, Int32 Age) : base(FullName)

    {

    this.Age = Age;

    }

    public Passenger(String Surname, String Name, String Patronymic, Int32 Age) : base(Surname, Name, Patronymic)

    {

    this.Age = Age;

    }
    // Свойства

    public Int32 PassengerAge

    {

    get

    {

    return Age;

    }

    set

    {

    if (value >= 0 && value < 200)

    Age = value;

    else

    throw new ArgumentOutOfRangeException("Age", "Возраст пассажира должен быть не отрицательным и менее 200");

    }

    }

    }
    // Класс "Пилот"

    [Serializable]

    public class Pilot : Crew

    {

    private String LicenseNumber; // Номер лицензии
    // Конструкторы

    public Pilot() : base()

    {

    LicenseNumber = "XXXXXXXXXXXX";

    }

    public Pilot(String FullName, String PhoneNumber, String HomeAddress, String LicenseNumber) : base(FullName, PhoneNumber, HomeAddress)

    {

    this.LicenseNumber = LicenseNumber;

    }

    public Pilot(String Surname, String Name, String Patronymic, String PhoneNumber, String HomeAddress, String LicenseNumber) : base(Surname, Name, Patronymic, PhoneNumber, HomeAddress)

    {

    this.LicenseNumber = LicenseNumber;

    }
    // Свойства

    public String PilotLicenseNumber

    {

    get

    {

    return LicenseNumber;

    }

    set

    {

    if (value.Length > 0 && value.Length < 16)

    LicenseNumber = value;

    else

    throw new ArgumentOutOfRangeException("LicenseNumber", "Номер лицензии должен быть длиной не более 16 символов и не пустым");

    }

    }

    }
    // Класс "Самолет"

    [Serializable]

    public class Aircraft

    {

    private Pilot СhiefPilot; // Первый пилот

    private String Model; // Модель самолета

    private String SerialNumber; // Номер самолета

    private Int32 Seats; // Количество мест в самолете
    // Конструкторы

    public Aircraft()

    {

    СhiefPilot = new Pilot();

    Model = "XXXX";

    SerialNumber = "XXXXX";

    Seats = 0;

    }

    public Aircraft(Pilot СhiefPilot, String Model, String SerialNumber, Int32 Seats)

    {

    this.СhiefPilot = СhiefPilot;

    this.Model = Model;

    this.SerialNumber = SerialNumber;

    this.Seats = Seats;

    }
    // Свойства

    public Pilot AircraftСhiefPilot

    {

    get

    {

    return СhiefPilot;

    }

    set

    {

    if (value != null)

    СhiefPilot = value;

    else

    СhiefPilot = new Pilot();

    }

    }

    public String AircraftModel

    {

    get

    {

    return Model;

    }

    set

    {

    if (value.Length > 0 && value.Length < 16)

    Model = value;

    else

    throw new ArgumentOutOfRangeException("Model", "Модель самолета должна быть длиной не более 16 символов и не пустым");

    }

    }

    public String AircraftSerialNumber

    {

    get

    {

    return SerialNumber;

    }

    set

    {

    if (value.Length > 0 && value.Length < 16)

    SerialNumber = value;

    else

    throw new ArgumentOutOfRangeException("SerialNumber", "Номер самолета должен быть длиной не более 16 символов и не пустым");

    }

    }

    public Int32 AircraftSeats

    {

    get

    {

    return Seats;

    }

    set

    {

    if (value >= 0 && value < 1000)

    Seats = value;

    else

    throw new ArgumentOutOfRangeException("Seats", "Количетво мест в самолете должно быть не отрицательным и менее 1000");

    }

    }

    }
    // Класс "Билет"

    [Serializable]

    public class Ticket

    {

    private Passenger Passenger; // Пассажир

    private Int32 Seat; // Место

    private Double Price; // Цена
    // Конструкторы

    public Ticket()

    {

    Seat = 0;

    Price = 0.0;

    Passenger = new Passenger();

    }

    public Ticket(Int32 Seat, Double Price, Passenger Passenger)

    {

    this.Seat = Seat;

    this.Price = Price;

    this.Passenger = Passenger;

    }
    // Свойства

    public Passenger TicketPassenger

    {

    get

    {

    return Passenger;

    }

    set

    {

    if (value != null)

    Passenger = value;

    else

    Passenger = new Passenger();

    }

    }

    public Int32 TicketSeat

    {

    get

    {

    return Seat;

    }

    set

    {

    if (value >= 0 && value < 1000)

    Seat = value;

    else

    throw new ArgumentOutOfRangeException("Seat", "Номер места в самолете должен быть не отрицательным и менее 1000");

    }

    }

    public Double TicketPrice

    {

    get

    {

    return Price;

    }

    set

    {

    if (value >= 0.0 && value < Double.MaxValue)

    Price = value;

    else

    throw new ArgumentOutOfRangeException("Price", "Цена билета должна быть не отрицательной и менее " + Convert.ToString(Double.MaxValue));

    }

    }

    }
    // Класс "Рейс"

    [Serializable]

    public class Flight : ICloneable

    {

    private FlightType Type; // Тип рейса

    private String Number; // Номер рейса

    private DateTime DepartureTime; // Дата/время отправления из текущего аэропорта

    private DateTime ArrivalTime; // Дата/время прибытия в место назначения

    private Airport DeparturePoint; // Место отправления рейса

    private Airport ArrivalPoint; // Место назначения рейса

    private Aircraft Plane; // Самолет назначенный на данный рейс

    private List Tickets; // Билеты на самолет
    // Конструкторы

    public Flight()

    {

    Type = FlightType.Transit;

    Number = "XXXX";

    DepartureTime = DateTime.Now;

    ArrivalTime = DateTime.Now;

    DeparturePoint = new Airport();

    ArrivalPoint = new Airport();

    Plane = new Aircraft();

    Tickets = new List();

    }
    // Свойства

    public FlightType FlightType

    {

    get

    {

    return Type;

    }

    set

    {

    Type = value;

    }

    }

    public String FlightNumber

    {

    get

    {

    return Number;

    }

    set

    {

    if (value.Length > 0 && value.Length < 16)

    Number = value;

    else

    throw new ArgumentOutOfRangeException("FlightNumber", "Номер рейса должен быть длиной не более 16 символов и не пустым");

    }

    }

    public DateTime FlightDepartureTime

    {

    get

    {

    return DepartureTime;

    }

    set

    {

    DepartureTime = value;

    }

    }

    public DateTime FlightArrivalTime

    {

    get

    {

    return ArrivalTime;

    }

    set

    {

    ArrivalTime = value;

    }

    }

    public Airport FlightDeparturePoint

    {

    get

    {

    return DeparturePoint;

    }

    set

    {

    if (value != null)

    DeparturePoint = value;

    else

    DeparturePoint = new Airport();

    }

    }

    public Airport FlightArrivalPoint

    {

    get

    {

    return ArrivalPoint;

    }

    set

    {

    if (value != null)

    ArrivalPoint = value;

    else

    ArrivalPoint = new Airport();

    }

    }

    public Aircraft FlightPlane

    {

    get

    {

    return Plane;

    }

    set

    {

    if (value != null)

    Plane = value;

    else

    Plane = new Aircraft();

    }

    }

    public List FlightTickets

    {

    get

    {

    return Tickets;

    }

    set

    {

    if (value != null)

    Tickets = value;

    else

    Tickets = new List();

    }

    }
    // Методы для работы с билетами

    // Посчитать цену билета в зависимости от класса места

    private Double calculatePrice(Double BasePrice, TravelClass TravelClass)

    {

    Double Price = 0.0;

    switch (TravelClass)

    {

    case TravelClass.FirstClass:

    Price = 2 * BasePrice;

    break;

    case TravelClass.BusinessClass:

    Price = 1.5 * BasePrice;

    break;

    case TravelClass.ComfortClass:

    Price = 1.2 * BasePrice;

    break;

    case TravelClass.EconomyClass:

    Price = BasePrice;

    break;

    }

    return Price;

    }

    // Добавить билет

    public void AddTicket(Int32 Seat, Double Price, Passenger Passenger, TravelClass TravelClass = TravelClass.EconomyClass)

    {

    Price = calculatePrice(Price, TravelClass);

    if (Seat > 0 && Seat <= Plane.AircraftSeats)

    Tickets.Add(new Ticket(Seat, Price, Passenger));

    }

    // Удалить билет

    public void RemoveTicket(Int32 Seat)

    {

    for (int i = 0; i < Tickets.Count; i++)

    if (Tickets[i].TicketSeat == Seat)

    {

    Tickets.RemoveAt(i);

    break;

    }

    }

    // Получить список свободных мест в самолете

    public List GetFreeTickets()

    {

    List FreeTickets = new List();

    for (int i = 1; i <= Plane.AircraftSeats; i++)

    {

    bool IsFree = true;

    foreach (Ticket Ticket in Tickets)

    if (Ticket.TicketSeat == i)

    {

    IsFree = false;

    break;

    }

    if (IsFree)

    FreeTickets.Add(i);

    }

    return FreeTickets;

    }

    // Узнать, свободное ли место

    public Boolean IsFreeSeat(Int32 Seat)

    {

    bool IsFree = true;

    foreach (Ticket Ticket in Tickets)

    if (Ticket.TicketSeat == Seat)

    {

    IsFree = false;

    break;

    }

    return IsFree;

    }
    // Глубокое копирование

    public object Clone()

    {

    List newTicketsList = new List(this.Tickets);

    return new Flight

    {

    Type = this.Type,

    Number = this.Number,

    DepartureTime = this.DepartureTime,

    ArrivalTime = this.ArrivalTime,

    DeparturePoint = this.DeparturePoint,

    ArrivalPoint = this.ArrivalPoint,

    Plane = this.Plane,

    Tickets = newTicketsList

    };

    }

    }

    }
    Листинг Б2 – Файл «EditAirport.cs»

    using System;

    using System.Windows.Forms;
    namespace Airport

    {

    public partial class EditAirport : Form

    {

    // Флаг того, покинул ли пользователь форму не введя данные

    private bool IfNotLeft;

    // Новый аэропорт

    private Airport ThisAirport;
    // Свойства для возврата значений из формы

    public bool EditThisAirportIfNotLeft

    {

    get

    {

    return IfNotLeft;

    }

    }

    public Airport EditThisAirportThisAirport

    {

    get

    {

    return ThisAirport;

    }

    }
    public EditAirport(Airport ThisAirport, FormRole FR)

    {

    InitializeComponent();
    // Устанавливаем название формы и подпись кнопки в зависимости от роли формы

    if (FR == FormRole.Adding)

    {

    Text = "Добавить аэропорт";

    button_edit.Text = "Добавить";

    }

    else if (FR == FormRole.Changing)

    {

    Text = "Изменить аэропорт";

    button_edit.Text = "Изменить";

    }
    // Заполняем форму

    textBox_name.Text = ThisAirport.AirportName;

    textBox_address.Text = ThisAirport.AirportAddress;
    // По умолчанию пользователь не ввел данные

    IfNotLeft = false;

    this.ThisAirport = ThisAirport;

    }
    private void button_edit_Click(object sender, EventArgs e)

    {

    // Проверяем введенные данные

    if (textBox_name.Text.Length == 0)

    {

    MessageBox.Show(this,

    "В названии аэропорта допущена ошибка: название не может быть пустым",

    "Название аэропорта введено некорректно",

    MessageBoxButtons.OK);

    textBox_name.Focus();

    return;

    }
    // Проверяем введенные данные

    if (textBox_address.Text.Length == 0)

    {

    MessageBox.Show(this,

    "В адресе аэропорта допущена ошибка: адрес не может быть пустым",

    "Адрес аэропорта введен некорректно",

    MessageBoxButtons.OK);

    textBox_address.Focus();

    return;

    }
    // Устанавливаем данные для передачи

    IfNotLeft = true;

    ThisAirport = new Airport(textBox_name.Text, textBox_address.Text);
    this.Close();

    }
    // Автопереход на следующий элемент формы на нажатию enter

    private void textBox_name_KeyUp(object sender, KeyEventArgs e)

    {

    if (e.KeyCode == Keys.Enter)

    textBox_address.Focus();

    }
    // Автопереход на следующий элемент формы на нажатию enter

    private void textBox_address_KeyUp(object sender, KeyEventArgs e)

    {

    if (e.KeyCode == Keys.Enter)

    button_edit.Focus();

    }

    }

    }
    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта