// Копирование информации на устройства. public static void CopyingInfo(WorkPC workPC, Storage[] storage) { WriteLine(" До копирования:\n" + workPC); Design.Line(); if (storage.Length == 0) // если нет носителей. { Design.Blue(); WriteLine(" --> Нет носителей на которые можно скопировать информацию."); Design.Default(); return; } else if (FileIsPlaced(workPC.FileSize, storage)) // если файл вмещаеться. { Design.Green(); WriteLine(" >> Копирование."); Design.Default(); } else { Design.Blue(); WriteLine(" --> Файлы не вмещаються на данные носители."); Design.Default(); return; } // Копирование. while (workPC.TotalSizeOfFiles != 0) { foreach (Storage item in storage) { item.CopyingDataToTheDevice(workPC); // После каждого копирования на носитель, нужно скачать // с него записанную информацию: // имитируем скачивание приравниванием к "0". item.BusyMemory = 0; // освободили носитель. // Если все скопировали. if (workPC.TotalSizeOfFiles == 0) { break; } } if (workPC.TotalSizeOfFiles < 0) { throw new DownloadMoreThanExistsException(); } } // Файлов на пк больше нет - значит размер файла можно приравнять к 0. // (P.S. Соответственно на носителе в переменной можно хранить размер одного файла). workPC.FileSize = 0; WriteLine("\n После копирования:\n" + workPC); Design.Line(); }
public static void AddUserStorage(User user) { ConsoleKeyInfo SymbolKey; WriteLine(" Выберите тип носителя:"); WriteLine(" 1 - Flash"); WriteLine(" 2 - DVD"); WriteLine(" 3 - HDD"); Write("\n Ваш выбор: "); SymbolKey = ReadKey(); WriteLine(); Design.Line(); switch (SymbolKey.Key) { case ConsoleKey.D1: case ConsoleKey.NumPad1: user.AddStorage(new Flash().Add()); break; case ConsoleKey.D2: case ConsoleKey.NumPad2: user.AddStorage(new DVD().Add()); break; case ConsoleKey.D3: case ConsoleKey.NumPad3: user.AddStorage(new HDD().Add()); break; default: Design.Red(); WriteLine("\n [err] Недопустимый тип носителя."); Design.Default(); break; } }
public static void Start(User user, WorkPC workPC) { ConsoleKeyInfo SymbolKey; // Просим ввести данные о файлах на ПК. Write("\n Введите размер одного файла (на ПК): "); workPC.FileSize = Convert.ToInt32(ReadLine()); Write(" Введите кол-во файлов (на ПК): "); workPC.TotalSizeOfFiles = workPC.FileSize * Convert.ToInt32(ReadLine()); // Запуск меню. while (true) { WriteLine("\n Меню:"); WriteLine(" 1 - Посмотреть данные о файлах на ПК"); WriteLine(" 2 - Посмотреть список носителей"); WriteLine(" 3 - Добавить носитель"); WriteLine(" 4 - Общее количество памяти всех носителей"); WriteLine(" 5 - Копирование информации на носители"); WriteLine(" 6 - Время необходимое для копирования"); WriteLine(" 7 - Необходимое количество носителей"); WriteLine(" 0 - Выход"); Write(" Ваш выбор: "); SymbolKey = ReadKey(); WriteLine(); Design.Line(); switch (SymbolKey.Key) { case ConsoleKey.D1: case ConsoleKey.NumPad1: WriteLine(workPC); break; case ConsoleKey.D2: case ConsoleKey.NumPad2: PrintStorage(user.GetDevices()); break; case ConsoleKey.D3: case ConsoleKey.NumPad3: AddUserStorage(user); break; case ConsoleKey.D4: case ConsoleKey.NumPad4: Calculations.TotalDeviceMemory(user.GetDevices()); break; case ConsoleKey.D5: case ConsoleKey.NumPad5: Calculations.CopyingInfo(workPC, user.GetDevices()); break; case ConsoleKey.D6: case ConsoleKey.NumPad6: Calculations.CopyTime(workPC, user.GetDevices()); break; case ConsoleKey.D7: case ConsoleKey.NumPad7: Calculations.NumberOfStorage(workPC, user.GetDevices()); break; default: break; } if (SymbolKey.Key == ConsoleKey.D0 || SymbolKey.Key == ConsoleKey.Escape || SymbolKey.Key == ConsoleKey.NumPad0) { return; } WriteLine("\n\n Нажмите любую клавишу для продолжения ..."); ReadKey(); Clear(); } }