lab8-oop.md 8.1 KB

Лабораторная работа №6.1. ООП. Основы.

Реализовать одно задание, номер которого выдаст преподаватель

Разработать класс для объекта. Сформировать набор данных и реализовать выборки с помощью LINQ-запросов.

Список полей и выборок приведён примерный - во всех заданиях должны быть реализованы свойства с типами int, double, DateTime или TimeSpan, string, boolean и выборки с использованием этих свойств.

Тип TimeSpan хранит часы, минуты, секунды - обычно используется для хранения результата вычитания двух дат, но можно использовать и сам по себе.

В разных выборках, кроме собственно выборки данных, использовать дополнительные методы LINQ-запросов (сортировка, лимит и т.д.)

Если работу с CSV ещё не проходили, то сформировать список исходных данных программно (не менее 5-ти элементов), например:

var Users = new List<User>
{
    new User {Name="Том", Age=23},
    new User {Name="Боб", Age=25},
    ...
};

Переменные с типом DateTime и TimeSpan создаются с помощью конструкторов:

var BirthDay = new DateTime(2002, 1, 31);
var DateDiff = new TimeSpan(33, 0, 0);

Напоминаю структуру проекта:

namespace HelloApp
{
    // описываем новый класс в пространстве имен (namespace)
    class Person
    {
        // используем CamelCase - все слова (в переменных и методах) с большой буквы
        public string FirstName;
        public DateTime BirthDay;
    }
    // существующий класс не трогаем
    class Program
    {
        static void Main(string[] args)
        {
            // формируем набор данных (список объектов вашего типа)
            var Users = new List<Person>
            {
                new Person {FirstName="Том", BirthDay=new DateTime(2002,1,31)},
                new Person {FirstName="Боб", BirthDay=new DateTime(2004,12,1)}
            };

            // дальше LINQ-запросы
        }
    }
}
  1. Student: Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон, Факультет, Курс. Данные загрузить из CSV-файла. Вывести:

    • список студентов заданного факультета;
    • списки студентов для каждого факультета и курса;
    • список студентов, родившихся после заданного года.
  2. Abiturient: Фамилия, Имя, Отчество, Адрес, Оценки, Дата. Данные загрузить из CSV-файла. Вывести:

    • список абитуриентов, имеющих неудовлетворительные оценки;
    • список абитуриентов, сумма баллов у которых не меньше заданной;
    • выбрать N абитуриентов, имеющих самую высокую сумму баллов, и список абитуриентов, имеющих полупроходной балл.
  3. Aeroflot: Пункт назначения, Номер рейса, Тип самолета, Время вылета, Дни недели. Данные загрузить из CSV-файла. Вывести:

    • список рейсов для заданного пункта назначения;
    • список рейсов для заданного дня недели;
    • список рейсов для заданного дня недели, время вылета для которых больше заданного.
  4. Book: Автор, Название, Издательство, Год, Количество страниц. Данные загрузить из CSV-файла. Вывести:

    • список книг заданного автора;
    • список книг, выпущенных заданным издательством;
    • список книг, выпущенных после заданного года.
  5. Worker: Фамилия и инициалы, Должность, Год поступления на работу, Зарплата. Данные загрузить из CSV-файла. Вывести:

    • список работников, стаж работы которых на данном предприятии превышает заданное число лет;
    • список работников, зарплата которых больше заданной;
    • список работников, занимающих заданную должность.
  6. Train: Пункт назначения, Номер поезда, Время отправления, Число общих мест, Купейных, Плацкартных. Данные загрузить из JSON-файла. Вывести:

    • список поездов, следующих до заданного пункта назначения;
    • список поездов, следующих до заданного пункта назначения и отправляющихся после заданного часа;
    • список поездов, отправляющихся до заданного пункта назначения и имеющих общие места.
  7. Product: Наименование, Производитель, Цена, Срок хранения, Количество. Данные загрузить из JSON-файла. Вывести:

    • список товаров для заданного наименования;
    • список товаров для заданного наименования, цена которых не превышает указанной;
    • список товаров, срок хранения которых больше заданного.
  8. Patient: Фамилия, Имя, Отчество, Адрес, Номер медицинской карты, Диагноз. Данные загрузить из JSON-файла. Вывести:

    • список пациентов, имеющих данный диагноз;
    • список пациентов, номер медицинской карты которых находится в заданном интервале.
  9. Bus: Фамилия и инициалы водителя, Номер автобуса, Номер маршрута, Марка, Год начала эксплуатации, Пробег. Данные загрузить из JSON-файла. Вывести:

    • список автобусов для заданного номера маршрута;
    • список автобусов, которые эксплуатируются больше 10 лет;
    • список автобусов, пробег у которых больше 10 000 км.
  10. Customer: Фамилия, Имя, Отчество, Адрес, Телефон, Номер кредитной карточки, Номер банковского счета. Данные загрузить из JSON-файла. Вывести:

    • список покупателей в алфавитном порядке;
    • список покупателей, номер кредитной карточки которых находится в заданном интервале.
  11. Процедурный кабинет: забор различных анализов

  12. Автосалон