Пример #1
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();
            }
        }
Пример #2
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;
            }
        }
Пример #3
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));
        }
Пример #4
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} мин");
        }
Пример #5
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]}");
            }
        }
Пример #6
0
        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();
            }
        }