Code Monkey home page Code Monkey logo

hw_skillbox's Introduction

HW_SkillBox - Репозиторий с домашками с курса SkillBox "C# - Разработчик"

Ниже условия домашек. Решения модулей в коде

Модуль 1
Задание 1 Что нужно сделать У программистов есть традиция — первое приложение на новом языке программирования приветствует мир. Давайте поприветствуем мир на языке C#.

Для выполнения задания:

Установите IDE Visual Studio. Создайте новое консольное приложение. Добавьте оператор вывода на экран Console.WriteLine и с его помощью выведите надпись: Hello World!!! Добавьте задержку Console.ReadKey, чтобы приложение не закрывалось по завершении выполнения. Это задание — простое, ведь это ваша первая программа. Оно почти полностью разобрано в видеоуроках.

Задание 2 Цель Научиться различать операторы Write и WriteLine.

Что нужно сделать Методы Write и WriteLine очень похожи, но у них есть важное различие. Метод Write не переносит строку после того, как произошёл вывод на экран. Разработайте приложение, которое покажет вам разницу между этими двумя операторами:

Выведите на экран надпись Hello World!!!, используя метод Console.Write. Используйте Console.Write для каждого слова (у вас будет три вызова метода: сначала для слова Hello, потом для слова World, а затем — для трёх восклицательных знаков). Чтобы слова не «слипались», используйте пробелы внутри кавычек. Добавьте задержку Console.ReadLine, чтобы приложение не закрывалось по завершении выполнения.

Модуль 2
Задание 1 Задание 1. Создание переменных и вывод Что нужно сделать Объявите несколько переменных, которые будут хранить следующие значения:
  • Ф. И. О.
  • Возраст
  • Email
  • Баллы по программированию
  • Баллы по математике
  • Баллы по физике

Каждая переменная должна иметь:

  • Название, что-либо обозначающее на английском языке.
  • Тип данных, который наилучшим образом подходит для этой переменной. Например, для Ф. И. О. можно указать наименование переменной fullName. Локальные переменные принято именовать, начиная со строчной буквы, а все следующие слова, которые входят в название переменной, — с заглавной. Этот стиль называется camelCase. Дальше выведите всю информацию на экран. Организуйте форматированный вывод данных на экран.

Для решения этой задачи объявите переменные для данных, указанных выше, как это было показано в видео 2.2.

Задание 2 Создайте две переменные для подсчёта суммы баллов по всем предметам и рассчитайте среднее арифметическое значение. Для этого:

Создайте переменную под сумму баллов по всем предметам. Посчитайте сумму баллов. Создайте переменную под средний балл. Рассчитайте среднее арифметическое баллов. Выведите информацию на экран.

Модуль 3
Задание 1. Приложение по определению чётного или нечётного числа Напишите приложение, которое определяет чётное или нечётное число. Алгоритм приложения выглядит следующим образом:

На экране программа с помощью оператора Console.WriteLine предлагает пользователю ввести целое число. С помощью оператора Console.ReadLine считывается введённое число. С помощью метода int.Parse число преобразуется в целочисленную переменную. С помощью оператора деления с остатком определяется, чётное число или нечётное. В зависимости от предыдущего шага на экран выводится текст, является ли данное число чётным или нет.

Задание 2. Программа подсчёта суммы карт в игре «21» Есть довольно простая карточная игра, она называется «21». Суть игры сводится к подсчёту карт. Каждая карта имеет свой «вес». Напишите программу, которая подсчитает сумму всех карт у вас на руках. Задача программы сводится к следующему алгоритму:
  1. Программа приветствует пользователя и спрашивает, сколько у него на руках карт.
  2. Пользователь вводит целое число.
  3. Преобразуем это число в счётчик для цикла.
  4. С помощью цикла for итеративно просим пользователя ввести номинал каждой карты. Для карт с числовым номиналом он вводит только цифру. Для «картинок» следует принять обозначения латинскими буквами:
  • Валет = J
  • Дама = Q
  • Король = K
  • Туз = T
  1. Внутри цикла, используя оператор switch, «вес» каждой карты складываем в общую переменную суммы, которая объявлена до тела основного цикла. Для числовых карт их «вес» равен весу, указанному при вводе пользователем. Для «картинок» «вес» равен 10.
  2. По завершении ввода на экране появится значение суммы карт.
Задание 3. Проверка простого числа Эта задача — одна из самых распространённых и популярных. Простое число — число, которое делится само на себя и на единицу. Есть много алгоритмов поиска простых чисел. Реализуйте один из самых лёгких. Проверьте введённое с клавиатуры целое число на признак простоты. Чтобы закрепить знания, реализуйте эту задачу, используя цикл while.
  1. Для начала пользователь вводит целое число.
  2. Затем в цикле нужно перебрать все числа, начиная с 1 и до N − 1.
  3. Входное число N при каждой итерации цикла нужно делить на число, которое получается в цикле с остатком.
  4. Если остаток от деления равен 0, значит, программа нашла делитель этого числа, и потому это число уже не может являться простым числом.
  5. Если остаток от деления равен 0, то переменной bool, объявленной за рамками цикла, следует присвоить значение true.
  6. Если после выхода из цикла значение переменной осталось false, значит, число простое. Если значение переменной стало true, значит, был найден делитель, поэтому число не может считаться простым.
Задание 4. Наименьший элемент в последовательности Найдите наименьший элемент в последовательности, которую вводит пользователь. Детальный алгоритм программы:
  1. Пользователь вводит длину последовательности.
  2. Затем пользователь последовательно вводит целые числа (как положительные, так и отрицательные). Числа разделяются клавишей Enter.
  3. Каждое введённое число сравнивается со значением переменной, отвечающей за минимальный элемент. Если введённое число оказывается меньше, то нужно обновить значение переменной.
Задание 5. Игра «Угадай число» Разработайте программу по следующему алгоритму:
  1. Пользователь вводит максимальное целое число диапазона.
  2. На основе диапазона целых чисел (от 0 до «введено пользователем») программа генерирует случайное целое число из диапазона.
  3. Пользователю предлагается ввести загаданное программой случайное число. Пользователь вводит свои предположения в консоли приложения.
  • Если число меньше загаданного, программа сообщает об этом пользователю.
  • Если больше, то тоже сообщает, что число больше загаданного.
  1. Программа завершается, когда пользователь угадывает число.
  2. Если пользователь устал играть, то вместо ввода числа он вводит пустую строку и нажимает Enter. Тогда программа завершается, предварительно показывая, какое число было загадано.
Модуль 4
Задание 1 Выведите на экран матрицу заданного размера и заполните её случайными числами. Детальный алгоритм работы приложения:
  1. Сначала пользователю предлагается ввести количество строк в будущей матрице.
  2. Затем — ввести количество столбцов в будущей матрице.
  3. Когда данные будут получены, нужно создать в памяти матрицу заданного размера.
  4. Используя Random, заполнить матрицу случайными целыми числами.
  5. Вывести полученную матрицу на экран.
  6. Вывести сумму всех элементов этой матрицы на экран отдельной строкой.
Задание 2-3 были изменены, условие не соответствует решению
Модуль 5
Задание 1 Пользователь вводит в консольном приложении длинное предложение. Каждое слово в этом предложении отделено одним пробелом. Необходимо создать метод, который в качестве входного параметра принимает строковую переменную, а в качестве возвращаемого значения — массив слов. После вызова данного метода программа вызывает второй метод, который выводит каждое слово в отдельной строке.
Задание 2 Пользователь вводит в программе длинное предложение. Каждое слово раздельно одним пробелом. После ввода пользователь нажимает клавишу Enter. Необходимо создать два метода:
  • первый метод разделяет слова в предложении;
  • второй метод меняет эти слова местами (в обратной последовательности).

При этом важно учесть, что один метод вызывается внутри другого метода, то есть в методе main вызывается метод cо следующей сигнатурой — ReversWords (string inputPhrase). Внутри этого метода вызывается метод по разделению входной фразы на слова.

Модуль 6
Задание Создайте справочник «Сотрудники».

Разработайте для предполагаемой компании программу, которая будет добавлять записи новых сотрудников в файл. Файл должен содержать следующие данные:

  • ID
  • Дату и время добавления записи
  • Ф. И. О.
  • Возраст
  • Рост
  • Дату рождения
  • Место рождения

Для этого необходим ввод данных с клавиатуры. После ввода данных:

  • если файла не существует, его необходимо создать;
  • если файл существует, то необходимо записать данные сотрудника в конец файла.

При запуске программы должен быть выбор:

  • введём 1 — вывести данные на экран;
  • введём 2 — заполнить данные и добавить новую запись в конец файла.

Файл должен иметь следующую структуру:

1#20.12.2021 00:12#Иванов Иван Иванович#25#176#05.05.1992#город Москва
2#15.12.2021 03:12#Алексеев Алексей Иванович#24#176#05.11.1980#город Томск
…
Модуль 7
Задание Улучшите программу, которую разработали в модуле 6. Создайте структуру Worker со следующими свойствами:
  • ID
  • Дата и время добавления записи
  • Ф.И.О.
  • Возраст
  • Рост
  • Дата рождения
  • Место рождения

Создайте класс Repository, который будет отвечать за работу с экземплярами Worker.

В репозитории должны быть реализованы следующие функции:

  • Просмотр всех записей.
  • Просмотр одной записи. Функция должна на вход принимать параметр ID записи, которую необходимо вывести на экран.
  • Создание записи.
  • Удаление записи.
  • Загрузка записей в выбранном диапазоне дат.

Файл, который использует репозиторий, должен выглядеть примерно так:

1#20.12.2021 00:12#Иванов Иван Иванович#25#176#05.05.1992#город Москва
2#15.12.2021 03:12#Алексеев Алексей Иванович#24#176#05.11.1980#город Томск
…

Используя структуру Worker и класс Repository, в основном методе Main реализуйте программу для работы с записями. Также предоставьте пользователю возможность сортировать данные по разным полям.

Модуль 8
Задание 1. Работа с листом
  1. Создайте лист целых чисел.

  2. Заполните лист 100 случайными числами в диапазоне от 0 до 100.

  3. Выведите коллекцию чисел на экран.

  4. Удалите из листа числа, которые больше 25, но меньше 50.

  5. Снова выведите числа на экран.

Задание 2. Телефонная книга.
  1. Пользователю итеративно предлагается вводить в программу номера телефонов и ФИО их владельцев.
  2. В процессе ввода информация размещается в Dictionary, где ключом является номер телефона, а значением — ФИО владельца. Таким образом, у одного владельца может быть несколько номеров телефонов. Признаком того, что пользователь закончил вводить номера телефонов, является ввод пустой строки.
  3. Далее программа предлагает найти владельца по введенному номеру телефона. Пользователь вводит номер телефона и ему выдаётся ФИО владельца. Если владельца по такому номеру телефона не зарегистрировано, программа выводит на экран соответствующее сообщение.
Задание 3. Проверка повторов.

Пользователь вводит число. Число сохраняется в HashSet коллекцию. Если такое число уже присутствует в коллекции, то пользователю на экран выводится сообщение, что число уже вводилось ранее. Если числа нет, то появляется сообщение о том, что число успешно сохранено.


Задание 4. Записная книжка. Программа спрашивает у пользователя данные о контакте:

  • ФИО
  • Улица
  • Номер дома
  • Номер квартиры
  • Мобильный телефон
  • Домашний телефон

С помощью XElement создайте xml файл, в котором есть введенная информация. XML файл должен содержать следующую структуру:

<Person name=”ФИО человека” >
    <Address>
        <Street>Название улицы</Street>
        <HouseNumber>Номер дома</HouseNumber>
        <FlatNumber>Номер квартиры</FlatNumber>
    </Address>
    <Phones>
        <MobilePhone>89999999999999</MobilePhone>
        <FlatPhone>123-45-67<FlatPhone>
    </Phones>
</Person>
Модуль 9
Задание Создайте бота для одной из следующих платформ:
  • Twitch,
  • Discord,
  • Telegram.

Бот обладает следующим набором функций:

  • Принимает сообщения и команды от пользователя.
  • Сохраняет аудиосообщения, картинки и произвольные файлы.
  • Позволяет пользователю просмотреть список загруженных файлов.
  • Позволяет скачать выбранный файл.

Команды можно делать разные, но среди них должна присутствовать команда /start.

Модуль 10
Задание Создайте оконный интерфейс для бота из предыдущего задания с использованием WPF.

В приложении необходимо реализовать отображение списка сообщений, которые написал боту пользователь. В списке присутствуют как минимум имя пользователя и его сообщение. При нажатии на сообщение оно становится выделенным.

Помимо этого, приложение может отправлять выбранному пользователю ответ в виде текста. Для реализации этого потребуется использовать элементы управления Button и TextBox. При каждом новом полученном сообщении приложение сохраняет его в истории сообщений. Потом её можно импортировать в файл формата JSON. Также вы можете добавить в приложение меню, в котором можно совершить сохранение истории, выход из приложения, просмотр список присланных файлов в новом окне и так далее.

При этом приложение не должно выглядеть некрасиво при растягивании на весь экран.

Модуль 11 Все задания объеденены в одно
Задание 1 Для банка «А» необходимо разработать программу консультанта для просмотра данных клиента. У консультанта нет прав для изменения или просмотра некоторых данных. Создайте класс, в котором будут содержаться следующие поля:
  • Фамилия
  • Имя
  • Отчество
  • Номер телефона
  • Серия, номер паспорта

Реализуйте методы доступа для следующих ситуаций:

  • Консультант не имеет доступа к просмотру информации. Вместо серии и номера паспорта он видит символы: «******************», — если поле не пустое.
  • Консультант не может изменять поля «Фамилия», «Имя», «Отчество», но может их просматривать.
  • Консультант может изменить «Номер телефона», но при этом поле должно быть всегда заполнено.
Задание 2

Расширяем программу из задания 1. У нас есть класс для консультанта со своими методами и полями. Добавьте в программу новый класс для нового пользователя — менеджера.

Менеджер наследует функционал консультанта в дополнение к собственному. При этом менеджер может добавлять только «Фамилию», «Имя», «Отчество», «Телефон», «Серию, номер паспорта».


Задание 3 Расширяем и изменяем программу из задания 1 и 2. У нас есть два класса для консультанта и менеджера. У классов есть метод изменения данных. Исходя из этого, добавьте к данным из задания 1 дополнительные поля:

  • дата и время изменения записи;
  • какие данные изменены;
  • тип изменений;
  • кто изменил данные (консультант или менеджер).

А также создайте интерфейсы и реализуйте в них методы по изменению существующей записи для консультанта и менеджера. Для менеджера разрешите добавление новой записи. Новые поля необходимо заполнять, как только записи клиентов были изменены. Теперь консультант может изменять только номер телефона клиента, а менеджер может изменять все данные.

Модуль 12
Задание Доработайте предыдущее задание, добавив графический пользовательский интерфейс и дополнительные функции.

Для реализации пользовательского интерфейса используйте WPF. В главном окне добавьте возможность просмотреть все департаменты, а для каждого департамента — возможность просмотреть все записи.

Ещё добавьте возможность:

  • при запуске программы сделать выбор, кто сейчас работает в программе: консультант или менеджер;
  • редактирования данных при выборе записи в интерфейсе. Консультант может редактировать только номера телефонов, а менеджер может редактировать «Фамилию», «Имя», «Отчество», «Телефон», «Серию, номер паспорта»;
  • добавления новых клиентов для менеджера, с обязательным заполнением «Фамилии», «Имени», «Отчества», «Телефона», «Серии, номера паспорта»;
  • сортировки по алфавиту.
Модуль 13 Все задания объеденены в одно
Задание 1 Разработайте для банка «А» прототип банковской системы, которая содержит информацию о клиентах и их счетах. Счётом любого клиента можно управлять:
  • открывать и закрывать счета;
  • осуществлять переводы с одного счёта на другой;

Используя обобщение и параметризированные классы, реализуйте методы открытия, закрытия счетов, а также перевода средств между счетами клиентов.


Задание 2 Дополните программу из задания 1: расширьте данные по счёту.

Счета могут быть двух типов:

  • недепозитный;
  • депозитный.

У клиента может быть два счёта, по одному каждого типа, с возможностью пополнять средства выбранного счета. Используя ковариантный интерфейс, реализуйте методы пополнения счёта по соответствующему типу.


Задание 3 Продолжаем добавлять функционал для программы. Используя контравариантность реализуйте метод перевода между клиентами.

Модуль 14
Задание

Что нужно сделать:

Доработайте предыдущее задание, в котором был разработан прототип банковской системы. Добавьте в программу следующую функциональность:

  • Возможность ведения журнала действий, в котором будет храниться информация по счетам, пользователям, вкладам.
  • Механизм оповещений, реализованный с помощью делегатов и событий.

Советы и рекомендации:

Оповещения событий можно сделать в качестве всплывающей подсказки или всплывающего окна. Сделайте так, чтобы в журнале отражались время операции и имя совершившего операцию (консультанта или менеджера) при:

  • открытии счёта;
  • закрытии счёта;
  • пополнении счёта;
  • переводе между счетами;
  • изменении данных клиента.

hw_skillbox's People

Contributors

davlubobrov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.