ЦЕЛЬ РАБОТЫ
Изучение синтаксиса описания классов и процесса порождения объектов. Изучение способов управления доступом к членам класса.
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Предметная область: Авиакасса.
ДИАГРАММА КЛАССОВ В НОТАЦИИ UML
ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ КЛАССОВ
Класс AirTrip – рейс
Номер рейса, Пункт отправления, Пункт назначения, Дата и время вылета, Дата и время прилета
Класс AirTripCollection - коллекция рейсов
Добавление рейса, Получение значение рейса по индексу, Получения рейса по номеру рейса, Удалить рейс
Класс TicketCost - стоимость билетов
Стоимость билета, Аэропортовый сбор
Класс Ticket – билет
ФИО того, кто летит, Рейс, Стоимость билета, Класс, Самолет
Класс TicketCollection - коллекция билетов
Добавление билета
ЛИСТИНГ КОДА AirTicketOffice.cs
using System;
using System.Collections.Generic;
namespace Airport
{
public class AirTrip
{
/*
Класс Рейс - рейс на самолёт
*/
private int Number; //Номер рейса
private string Dispatch; //Пункт отправления
private string Destination; //Пункт назначения
private DateTime DTBegin; //Дата и время вылета
private DateTime DTEnd; //Дата и время прилета
public static AirTrip Null_AirTrip = new AirTrip(); //Пустой рейс
public AirTrip(int _number, string _dispatch, string _destination, DateTime _dtbegin, DateTime _dtend)
{
this.Number = _number;
this.Dispatch = _dispatch;
this.Destination = _destination;
this.DTBegin = _dtbegin;
this.DTEnd = _dtend;
}
public AirTrip() //Пустой конструктор
{
this.Number = 0;
this.Dispatch = string.Empty;
this.Destination = string.Empty;
this.DTBegin = DateTime.Now;
this.DTEnd = DateTime.Now;
}
public string ShowTrip() //Возвращает инфу о рейсе
{
return "Рейс №" + Number + ", " + Dispatch + " - " + Destination + ", " + DTBegin.ToString() + ", " + DTEnd.ToString();
}
public int GetAirTripNumber() //Возвращает номер рейса
{
return Number;
}
public string GetDispatch() //Возвращает пункт отправления
{
return Dispatch;
}
public string GetDestination() //Возвращает пункт назначения
{
return Destination;
}
public string GetDate() //Возвращает время отправления
{
return DTBegin.ToShortDateString() + " " + DTBegin.ToShortTimeString();
}
}
public class AirTripCollection
{
/*
Коллекция рейсов
*/
private List<AirTrip> AirTrips;
public AirTripCollection()
{
this.AirTrips = new List<AirTrip>();
}
public void AddTrip(int _number, string _dispatch, string _destination, DateTime _dtbegin, DateTime _dtend) //Добавление рейса
{
AirTrip _airtrip = new AirTrip(_number, _dispatch, _destination, _dtbegin, _dtend);
AirTrips.Add(_airtrip);
}
public string GetValueFromIndex(int index) //Получить значение рейса по индексу
{
return AirTrips[index].ShowTrip();
}
public AirTrip GetTripByNumber(int _number) //Получить рейс по номеру рейса
{
for (int i = 0; i < AirTrips.Count; i++)
if (AirTrips[i].GetAirTripNumber() == _number)
return AirTrips[i];
return AirTrip.Null_AirTrip;
}
public void Delete(int index) //Удалить рейс
{
AirTrips.RemoveAt(index);
}
public int Count() //Получить количество рейсов
{
return AirTrips.Count;
}
}
public class TicketCost
{
/*
Класс Стоимость билетов - стоимость билетов состоит из цены на билет и аэропортового сбора
*/
private double Cost; //Стоимость билета
private double AirportCharges; //Аэропортовый сбор
public TicketCost(double _cost, double _airportcharges)
{
this.Cost = _cost;
this.AirportCharges = _airportcharges;
}
public double GetTicketCost() //Возвращает стоимость билета
{
return (Cost + AirportCharges);
}
}
public class Ticket
{
/*
Класс Билет - билет на рейс, состоит из ФИО, рейса, класса и стоимости билета, самолета
*/
private string FIO; //ФИО того, кто летит
private AirTrip Airtrip; //Рейс
private TicketCost Ticketcost; //Стоимость билета
private string Class; //Класс
private string Airplane; //Самолет
public Ticket(string _fio, AirTrip _airtrip, TicketCost _ticketcost, string _class, string _airplane)
{
this.FIO = _fio;
this.Airtrip = _airtrip;
this.Ticketcost = _ticketcost;
this.Class = _class;
this.Airplane = _airplane;
}
public Ticket() //Пустой конструктор
{
this.FIO = string.Empty;
this.Airtrip = AirTrip.Null_AirTrip;
this.Ticketcost = new TicketCost(0.0, 0.0);
this.Class = string.Empty;
this.Airplane = string.Empty;
}
public string ShowTicket() //Возвращает инфу о билете
{
return "Билет # рейс " + Airtrip.GetAirTripNumber() + " # " + FIO + " # из: " + Airtrip.GetDispatch() + " в: " + Airtrip.GetDestination() + ", время отправления: " + Airtrip.GetDate();
}
}
public class TicketCollection
{
/*
Коллекция билетов
*/
private List<Ticket> Tickets;
public TicketCollection()
{
this.Tickets = new List<Ticket>();
}
public void AddTicket(string _fio, AirTrip _airtrip, TicketCost _ticketcost, string _class, string _airplane) //Добавление билета
{
Ticket _ticket = new Ticket(_fio, _airtrip, _ticketcost, _class, _airplane);
Tickets.Add(_ticket);
}
public string GetValueFromIndex(int index) //Получить значение билета по индексу
{
return Tickets[index].ShowTicket();
}
public void Delete(int index) //Удалить билет
{
Tickets.RemoveAt(index);
}
public int Count() //Получить количество билетов
{
return Tickets.Count;
}
}
}
Входные данные:
Ниже представлен листинг кода программы, демонстрирующий заполнение классов данными.
using System;
namespace Airport
{
class Program
{
static void Main(string[] args)
{
AirTripCollection AIRTRIPS = new AirTripCollection(); //Список рейсов
AIRTRIPS.AddTrip(148, "Санкт-Петербург", "Москва", new DateTime(2012, 10, 31, 22, 00, 00), new DateTime(2012, 10, 31, 23, 50, 00)); //Рейс 148 на самолет из Питера до Москвы, вылетом 31 октября 2012 в 22:00
AIRTRIPS.AddTrip(756, "Москва", "Санкт-Петербург", new DateTime(2012, 11, 01, 14, 10, 00), new DateTime(2012, 11, 01, 16, 00, 00)); //Из Москвы до Питера
TicketCollection TICKETS = new TicketCollection(); //Список билетов на самолет
TICKETS.AddTicket("Иванов Иван И.", AIRTRIPS.GetTripByNumber(148), new TicketCost(2048.20, 99.80), "Первый", "Ан 158"); //Иванов Иван Иванович летит Москву рейсом 148
TICKETS.AddTicket("Иванов Иван И.", AIRTRIPS.GetTripByNumber(756), new TicketCost(998.00, 99.80), "Эконом", "Ан 158"); //И возвращается в Питер на следующий день рейсом 756
Console.WriteLine("Список рейсов: ");
for (int i = 0; i < AIRTRIPS.Count(); i++)
Console.WriteLine(AIRTRIPS.GetValueFromIndex(i));
Console.WriteLine("\nСписок билетов: ");
for (int i = 0; i < TICKETS.Count(); i++)
Console.WriteLine(TICKETS.GetValueFromIndex(i));
Console.ReadLine();
}
}
}
Выходные данные