示例#1
0
        static void Main(string[] args)
        {
            User   user   = new User();
            WorkPC workPC = new WorkPC();

            try
            {
                Menu.Start(user, workPC);
            }
            catch (DivideByZeroException e)
            {
                Design.Red();
                WriteLine("\n [err] " + e.Message);
            }
            catch (FormatException e)
            {
                Design.Red();
                WriteLine("\n [err] " + e.Message);
            }
            catch (DownloadMoreThanExistsException e)
            {
                Design.Red();
                WriteLine("\n [err] " + e.Message);
            }
            catch (Exception e)
            {
                Design.Red();
                WriteLine("\n [err] " + e.Message);
            }
            finally
            {
                Design.Default();
                WriteLine("\n >>> Завершение программы.\n");
            }
        }
示例#2
0
        // Копирование информации на устройства.
        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();
        }
示例#3
0
        public static void PrintStorage(Storage[] storage)
        {
            WriteLine("\n Список всех носителей:\n");

            if (storage.Length == 0)
            {
                Design.Blue();
                WriteLine("\n --> Носителей нет.");
                Design.Default();
            }

            foreach (Storage item in storage)
            {
                item.GettingFullInformationAboutTheDevice();
                WriteLine();
            }
        }
示例#4
0
        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;
            }
        }
示例#5
0
        public override Storage Add()
        {
            string   name;
            string   model;
            int      speedRead;
            int      speedRec;
            DiskType diskType;
            int      tempType;

            Write(" Введите название: ");
            name = ReadLine();
            Write(" Введите модель: ");
            model = ReadLine();
            Write(" Введите скорость (чтения): ");
            speedRead = Convert.ToInt32(ReadLine());
            Write(" Введите скорость (записи): ");
            speedRec = Convert.ToInt32(ReadLine());

            do
            {
                WriteLine(" Введите тип диска: ");
                WriteLine("  1 - 4,7 Gb\n  2 - 9,0 Gb");
                Write(" Тип: ");
                tempType = Convert.ToInt32(ReadLine());

                if (tempType < 1 || tempType > 2)
                {
                    Design.Red();
                    WriteLine("\n [err] Недопустимый тип диска." +
                              "\n - Повторите ввод!\n");
                    Design.Default();
                }
            } while (tempType < 1 || tempType > 2);

            diskType = (DiskType)tempType;

            return(new DVD(name, model, speedRead, speedRec, diskType));
        }
示例#6
0
        // Расчет времени необходимого для копирования.
        public static void CopyTime(WorkPC workPC, Storage[] storage)
        {
            int recordingTime = 0;
            int readingTime   = 0;
            int files;
            int totalSizeOfFiles = workPC.TotalSizeOfFiles;

            if (storage.Length == 0)    // если нет носителей.
            {
                Design.Blue();
                WriteLine(" --> Время рассчитать невозможно.");
                WriteLine(" --> Нет носителей на которые можно скопировать информацию.");
                Design.Default();
                return;
            }
            else if (!FileIsPlaced(workPC.FileSize, storage))
            {
                Design.Blue();
                WriteLine(" --> Файлы не вмещаються на данные носители.");
                Design.Default();
                return;
            }

            // Пока не посчитаем время копирования всех файлов.
            while (totalSizeOfFiles != 0)
            {
                foreach (Storage item in storage)
                {
                    files = item.PlacedFiles(workPC.FileSize);

                    // Если файлов осталось меньше чем вмещаеться на носитель.
                    if ((totalSizeOfFiles / workPC.FileSize) < files)
                    {
                        // то запомним сколько осталось файлов.
                        files = totalSizeOfFiles / workPC.FileSize;
                    }

                    // Если кол-во файлов = 0,
                    // то переходим к следующему носителю.
                    if (files == 0)
                    {
                        continue;
                    }
                    recordingTime += ((workPC.FileSize * files) * 1024) / item.RecordingTime();
                    readingTime   += ((workPC.FileSize * files) * 1024) / item.ReadingTime();
                    // Отнимаем от общего размера, размер вмещающихся файлов.
                    totalSizeOfFiles =
                        totalSizeOfFiles - (workPC.FileSize * files);

                    if (totalSizeOfFiles == 0)
                    {
                        break;
                    }
                }

                if (totalSizeOfFiles < 0)
                {
                    throw new DownloadMoreThanExistsException();
                }
            }

            WriteLine($" Время копирования на носители: {recordingTime} мин");
            WriteLine($" Время чтения с носителей: {readingTime} мин");
            WriteLine(" Общее время копирования на другой пк: "
                      + $"{recordingTime + readingTime} мин");
        }
示例#7
0
        // Расчет необходимого количества носителей информации
        // представленных типов для переноса информации.
        public static void NumberOfStorage(WorkPC workPC, Storage[] storage)
        {
            int totalSizeOfFiles = workPC.TotalSizeOfFiles;
            int files;

            int[] arr = new int[storage.Length];

            if (storage.Length == 0)    // если нет носителей.
            {
                Design.Blue();
                WriteLine(" --> Необходимое количество рассчитать невозможно.");
                WriteLine(" --> Нет носителей на которые можно скопировать информацию.");
                Design.Default();
                return;
            }
            else if (!FileIsPlaced(workPC.FileSize, storage))
            {
                Design.Blue();
                WriteLine(" --> Файлы не вмещаються на данные носители.");
                Design.Default();
                return;
            }

            while (totalSizeOfFiles != 0)
            {
                for (int i = 0; i < storage.Length; i++)
                {
                    // Узнаем кол-во файлов вмещающихся на носитель.
                    files = storage[i].PlacedFiles(workPC.FileSize);

                    // Если файлов осталось меньше чем вмещаеться на носитель.
                    if ((totalSizeOfFiles / workPC.FileSize) < files)
                    {
                        // то запомним сколько осталось файлов.
                        files = totalSizeOfFiles / workPC.FileSize;
                    }

                    // Если кол-во файлов = 0,
                    // то переходим к следующему носителю.
                    if (files == 0)
                    {
                        continue;
                    }
                    // Отнимаем от общего размера, размер вмещающихся файлов.
                    totalSizeOfFiles =
                        totalSizeOfFiles - (workPC.FileSize * files);

                    // Если вмещается больше чем 0 файлов.
                    if (files > 0)
                    {
                        arr[i]++;
                    }

                    if (totalSizeOfFiles == 0)
                    {
                        break;
                    }
                }

                if (totalSizeOfFiles < 0)
                {
                    throw new DownloadMoreThanExistsException();
                }
            }

            for (int i = 0; i < storage.Length; i++)
            {
                WriteLine($" Количество {storage[i].Name}: {arr[i]}");
            }
        }