Лабораторная работа «Работа с коллекциями»



Скачать 97.57 Kb.
Дата11.07.2020
Размер97.57 Kb.
Название файла-
ТипЛабораторная работа


Факультет информационных технологий

Кафедра «Компьютерные технологии и системы»
Дисциплина:

«Языки программирования»

Лабораторная работа

«Работа с коллекциями»

Выполнил студент

группы 0-19-Ин-УИС-Б

Симоненко Павел

Проверил преподаватель

Вдовиченко О. А.


Брянск 2020

  1. Цельработы


Целью работы является изучение основных классов, предназначенных для работы с коллекциями, а так же овладение практическими навыками составления алгоритмов с их использованием
  1. Ход работы


using System;

using System.Collections.Generic;


namespace Collections

{

struct Report // структура ДОКЛАД



{

public string FIO; // фио студента

public string Group; // группа студента

public string Topic; // тема доклада


public Report(string FIO, string Group, string Topic)

{

this.Group = Group;



this.FIO = FIO;

this.Topic = Topic;

}

}
struct Section // структура СЕКЦИЯ



{

public string Name; // название

public string Leader; // председатель

public List Reports; // доклады


public Section(string Name, string Leader)

{

this.Name = Name;



this.Leader = Leader;

Reports = new List();

}

public bool CanInsertAt(int number)



{

if (number < 1 || number > Reports.Count + 1)

return false;

return true;

}

public bool AddReport(int number, string FIO, string Group, string Topic)



{

if (Reports.FindIndex(x => (x.Topic == Topic)) != -1)

return false;

Report adding = new Report(FIO, Group, Topic);

Reports.Insert(number - 1, adding);
return true;

}
public bool RemoveReport(int number)

{

if (number < 1 || number > Reports.Count)



return false;
Reports.RemoveAt(number - 1);

return true;

}

public List Find(string FIO, string Group)



{

return Reports.FindAll(x => (x.FIO == FIO && x.Group == Group));

}

public void PrintData()



{

Console.ForegroundColor = ConsoleColor.Cyan;

Console.WriteLine("Название: " + Name);

Console.WriteLine("Председатель: " + Leader);

Console.ForegroundColor = ConsoleColor.Yellow;

if (Reports.Count == 0)

Console.WriteLine("Нет зарегистрированных докладов");

else


{

Console.WriteLine("{0, 3}{1, 25}{2, 7}{3, 41}", "№", "Студент", "Группа", "Тема");

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

{

Console.WriteLine("{0, 3}{1, 25}{2, 7}{3, 41}", i + 1,



Reports[i].FIO, Reports[i].Group, Reports[i].Topic);

}

}


Console.ForegroundColor = ConsoleColor.White;

}

}


class Program

{

static void AddSection(List

Database)



{

Console.Write("Введите название секции: ");

string Name = Console.ReadLine();

if (Database.FindIndex(x => (x.Name == Name)) != -1)

{

Console.WriteLine("Секция с таким названием уже есть");



return;

}
Console.Write("Введите ФИО председателя: ");

string Leader = Console.ReadLine();

Database.Add(new Section(Name, Leader));

}

static void AddReport(List

Database)



{

Console.Write("Введите название секции: ");

string SectionName = Console.ReadLine();

int index = Database.FindIndex(x => (x.Name == SectionName));


if (index == -1)

{

Console.WriteLine("Секция с таким названием не найдена");



return;

}
Console.Write("Введите номер доклада: ");

int number = int.Parse(Console.ReadLine());
if (Database[index].CanInsertAt(number) == false)

{

Console.WriteLine("Недопустимый номер");



return;

}
Console.Write("Введите ФИО студента: ");

string FIO = Console.ReadLine();
Console.Write("Введите группу студента: ");

string Group = Console.ReadLine();


Console.Write("Введите тему доклада: ");

string Topic = Console.ReadLine();


// == false - если возникла ошибка данных при добавлении

if (Database[index].AddReport(number, FIO, Group, Topic) == false)

Console.WriteLine("Доклад с темой '" + Topic + "' уже есть");

}
static void PrintList(List

Database)

{

int n = Database.Count; // число записей в списке


if (n == 0)

{

Console.WriteLine("Нет записей о секциях");



return;

}


foreach (Section item in Database)

item.PrintData();

}

static void RemoveSection(List

Database)



{

if (Database.Count == 0)

{

Console.WriteLine("В пустом списке нечего удалять");



return;

}
Console.Write("Введите название удаляемой секции: ");

string Name = Console.ReadLine();
int index = Database.FindIndex(x => (x.Name == Name));

if (index == -1)

{

Console.WriteLine("Секция с названием '" + Name + "' не существует");



return;

}


Database.RemoveAt(index);

}


static void RemoveReport(List
Database)

{

if (Database.Count == 0)



{

Console.WriteLine("В пустом списке нечего удалять");

return;

}
Console.Write("Введите название секции для удаляемого доклада: ");



string SectionName = Console.ReadLine();
int index = Database.FindIndex(x => (x.Name == SectionName));

if (index == -1)

{

Console.WriteLine("Секция с названием '" + SectionName + "' не существует");



return;

}
Console.Write("Введите номер удаляемого доклада: ");

int number = int.Parse(Console.ReadLine());

if (Database[index].RemoveReport(number) == false)

Console.WriteLine("Неверный номер доклада");

}


static void FindByStudent(List
Database)

{

Console.Write("Введите ФИО студента: ");



string FIO = Console.ReadLine();
Console.Write("Введите группу студента: ");

string Group = Console.ReadLine();


bool HasFound = false;
foreach (Section sect in Database)

{

List foundRecords = sect.Find(FIO, Group);


if (foundRecords.Count != 0)

{

if (HasFound == false)



{

Console.ForegroundColor = ConsoleColor.Cyan;


Console.WriteLine("{0, 38}{1, 41}", "Секция", "Доклад");


HasFound = true;

}
Console.ForegroundColor = ConsoleColor.White;

foreach (Report r in foundRecords)

Console.WriteLine("{0, 38}{1, 41}", sect.Name, r.Topic);

}

}


if (HasFound == false) Console.WriteLine("Ничего не найдено");

}

static void ChangeLeader(List

Database)



{

int n = Database.Count;

if (n == 0)

{

Console.WriteLine("В пустом списке нечего редактировать");



return;

}
Console.Write("Введите название секции: ");

string Name = Console.ReadLine();
int index = Database.FindIndex(x => (x.Name == Name));
if (index == -1)

{

Console.WriteLine("Секция с названием '" + Name + "' не существует");



return;

}
Section t = Database[index];


Console.Write("Введите нового председателя: ");

string Leader = Console.ReadLine();


t.Leader = Leader;
Database[index] = t;

}
static void Main(string[] args)

{

Console.ForegroundColor = ConsoleColor.White;


List

Database = new List
();


bool flag = true;

while (flag == true)

{

Console.Write("1 - добавить секцию, 2 - добавить доклад, 3 - вывести всё, ");



Console.Write("4 - удалить секцию, 5 - удалить доклад, 6 - найти доклады студента, ");

Console.WriteLine("7 - сменить председателя секции, 8 - выход");


ConsoleKey pressed = Console.ReadKey().Key;

Console.WriteLine();

switch (pressed)

{

case ConsoleKey.D1: AddSection(Database); break;



case ConsoleKey.D2: AddReport(Database); break;

case ConsoleKey.D3: PrintList(Database); break;

case ConsoleKey.D4: RemoveSection(Database); break;

case ConsoleKey.D5: RemoveReport(Database); break;

case ConsoleKey.D6: FindByStudent(Database); break;

case ConsoleKey.D7: ChangeLeader(Database); break;

case ConsoleKey.D8: flag = false; break; // выбить прогу из цикла

}

}



}

}

}


  1. Вывод


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

.

Скачать 97.57 Kb.

Поделитесь с Вашими друзьями:




База данных защищена авторским правом ©danovie.ru 2020
обратиться к администрации

    Главная страница