Работа с коллекциями. лаба1. Лабораторная работа Работа с коллекциями
Скачать 130.4 Kb.
|
Факультет информационных технологий Кафедра «Компьютерные технологии и системы» Дисциплина: «Языки программирования» Лабораторная работа «Работа с коллекциями» Вариант № 3 Выполнил студент группы О-20-ИАС-аид-2-С Бакун О.Д. Проверил преподаватель Вдовиченко О. А. Брянск 2021 Цель работы Целью лабораторной работы является изучение основных классов, предназначенных для работы с коллекциями, а также овладение практическими навыками составления алгоритмов с их использованием. Ход работы Задание: Написать программу расписания пассажирских поездов. При желании можно получить информацию на любой временной период, при этом для каждого поезда должен быть установлен статус (прибыл, выехал, задерживается, производится посадка). Выполнение: namespace лаба1 { public struct RailwayStation { public DateTime dateStart; public DateTime dateStop; public string TrainStatus; public int TrainNumber; public string NameTrain; public RailwayStation(DateTime dateStart, DateTime dateStop, string trainStatus, int trainNumber, string nameTrain) { this.dateStart = dateStart; this.dateStop = dateStop; TrainStatus = trainStatus; TrainNumber = trainNumber; NameTrain = nameTrain; } } class Program { static List static void Main() { list = new List list.Add(new RailwayStation(new DateTime(21, 3, 20, 12, 0, 0), new DateTime(21, 3, 21, 13, 0, 0), "прибыл", 21231, "Стриж")); list.Add(new RailwayStation(new DateTime(22, 4, 20, 12, 0, 0), new DateTime(21, 3, 21, 13, 0, 0), "прибыл", 32422, "Тарда")); Choice(); } static void Choice() { Console.WriteLine("1 - Посмотреть информацию о поездах" + "\n" + "2 - Удалить" + "\n" + "3 - Добавить" + "\n" + "4 - Редактировать" + "\n" + "5 - Найти поезд"); Console.WriteLine("Введите цифру: "); int n = Int32.Parse(Console.ReadLine()); switch (n) { case 1: Print(); Return(); break; case 2: Remove(); Return(); break; case 3: Add(); Print(); Return(); break; case 4: Redact(); Return(); break; case 5: SearchTrain(); Return(); break; default: Choice(); break; } static void Print() { foreach (RailwayStation t in list) Console.WriteLine("Название поезда: " + t.NameTrain + "\n" + "Дата отправления: " + t.dateStart.ToString() + "\n" + "Дата прибытия: " + t.dateStop.ToString() + "\n" + "Номер поезда: " + t.TrainNumber + "\n" + "Статус поезда: " + t.TrainStatus + "\n"); } static void Remove() { Console.WriteLine("Исходный список: "); Print(); Console.WriteLine("Введите название поезда: "); try { var t = Console.ReadLine(); Delete(t); Console.WriteLine("\nОбновленный список: "); Print(); } catch { Console.WriteLine("Название поезда не найдено. Введите снова: "); Remove(); } } static void Delete(string NameTrain) { var itemToDelete = list.Where(x => x.NameTrain == NameTrain).Select(x => x).First(); list.Remove(itemToDelete); } static void Return() { Console.WriteLine("0 - назад"); int n = Convert.ToInt32(Console.ReadLine()); if (n == 0) { Console.Clear(); Choice(); } else { Console.ReadLine(); } } static void Add() { Console.WriteLine("Введите название поезда: "); string trName = Console.ReadLine(); Console.WriteLine("Введите дату отправления: "); DateTime dateStart = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("Введите дату прибытия: "); DateTime dateStop = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("Введите статус поезда: "); string status = Console.ReadLine(); Console.WriteLine("Введите номер поезда:"); int trNumber = Convert.ToInt32(Console.ReadLine()); list.Add(new RailwayStation(dateStart, dateStop, status, trNumber, trName)); Console.WriteLine("\nОбновленный список: "); } static void FindIndex( out int ind) { Console.WriteLine("Введите название поезда: "); try { var t = Console.ReadLine(); ind = list.IndexOf(list.Where(x => x.NameTrain == t).Select(x => x).First()); } catch { FindIndex(out ind); } } static void Redact() { Console.WriteLine("Исходный список: "); Print(); Console.WriteLine("1 - изменить название \n2 - изменить дату отправления \n3 - изменить дату прибытия \n4 - изменить статус поезда \n5 - изменить номер поезда \nВведите цифру: "); int n = Int32.Parse(Console.ReadLine()); Rechange( n); Console.WriteLine("\nОбновленный список: "); Print(); } static void SearchTrain() { Console.WriteLine("Введите название поезда"); string t = Console.ReadLine(); RailwayStation found = list.Find(item => item.NameTrain == t); Console.WriteLine("\nНазвание поезда: " + found.NameTrain + "\n" + "Дата отправления: " + found.dateStart.ToString() + "\n" + "Дата прибытия: " + found.dateStop.ToString() + "\n" + "Номер поезда: " + found.TrainNumber + "\n" + "Статус поезда: " + found.TrainStatus + "\n"); } static void Rechange( int n) { switch (n) { case 1: int ind1; FindIndex(out ind1); var found1 = list.ElementAt(ind1); Console.WriteLine("Введите новое название поезда: "); string value1 = Console.ReadLine(); found1.NameTrain = value1; list.Insert(ind1, found1); list.RemoveAt(ind1 + 1); break; case 2: int ind2; FindIndex(out ind2); var found2 = list.ElementAt(ind2); Console.WriteLine("Введите новую дату отправления поезда: "); DateTime value2 = Convert.ToDateTime(Console.ReadLine()); found2.dateStart = value2; list.Insert(ind2, found2); list.RemoveAt(ind2 + 1); break; case 3: int ind3; FindIndex( out ind3); var found3 = list.ElementAt(ind3); Console.WriteLine("Введите новую дату прибытия поезда: "); DateTime value3 = Convert.ToDateTime(Console.ReadLine()); found3.dateStop = value3; list.Insert(ind3, found3); list.RemoveAt(ind3 + 1); break; case 4: int ind4; FindIndex(out ind4); var found4 = list.ElementAt(ind4); Console.WriteLine("Введите новый статус поезда: "); string value4 = Console.ReadLine(); found4.TrainStatus = value4; list.Insert(ind4, found4); list.RemoveAt(ind4 + 1); break; case 5: int ind5; FindIndex(out ind5); var found5 = list.ElementAt(ind5); Console.WriteLine("Введите новый номер поезда: "); int value5 = Convert.ToInt32(Console.ReadLine()); found5.TrainNumber = value5; list.Insert(ind5, found5); list.RemoveAt(ind5 + 1); break; } } } } } 3. Вывод Изучены основные классы, предназначенные для работы с коллекциями, а также закреплены практические навыки составления алгоритмов с их использованием. |