Поиск готовых решений

оздание сценария файловой структуры диска, используя командную строку Windows.

нужно скриншот командой строки и сделаной работы в ней
 
--
wrfoirwirinj wrwfpovkrwop
Отправлено из Почты Mail.ru

КУРСОВАЯ РАБОТА по дисциплине: «Программирование - Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n ? n»


Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Пермский национальный исследовательский политехнический университет»
Лысьвенский филиал
Факультет: Высшего образования
Направление: Информатика и вычислительная техника






КУРСОВАЯ РАБОТА
по дисциплине: «Программирование - Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n ? n»





Выполнил
студент группы  ЭВТ-17-1боз
Штин С.Н.
«____»  _____________2019 г.
_________________________
(подпись студента)
Проверил
преподаватель Шестаков А.П.
Оценка _____________________
__________________________
(подпись преподавателя)
«___» ____________ 2019 г



Лысьва 2019 г

ОГЛАВЛЕНИЕ


ВВЕДЕНИЕ

Целью данной курсовой работы является создание на языке программирования С # класса графов как набора точек, некоторые из которых соединены отрезками, подграф — граф, подмножество данного графа.
Задачей курсового проекта является разработка программы от анализа требований до тестирования.
В ходе выполнения курсовой работы изучить теоретический материал и получить профессиональные навыки в постановке задачи, анализе требований, выборе представления исходных данных и результата, разработке спецификаций, проектирования программной системы, написании программы на языке программирования С# с использованием объектно-ориентированной технологии и библиотек классов, тестировании и отладке программы, оформлении документации.

 

 


1. О языке программирования С #

Приступив к изучению C# мы получаем целую связку готовых для работы решений, многие из них предоставляются бесплатно, например, одна из современных версий Visual Studio. Благодаря простому интерфейсу программы, с ней не тяжело разобраться. С помощью VS мы можем создавать программы на таких известных языках программирования как: C, C++, C#, Visual Basic и т.д. На всех этих языках в VS мы можем создать любое приложение, любого формата — консольное приложение, обычную Windows форму, приложение для Windows Phone смартфона, библиотеку классов и тому подобные приложения. Студия очень удобна тем, что там не нужно прописывать абсолютно все коды элементов в ручном режиме (как в простом текстовом редакторе), в среде уже готовы все коды элементов управления (кнопки, чек-боксы, текстовые окна и тому подобные элементы). Что же из себя представляет C# (произносится как си шарп).
1.                     C# — является наследственным сыном двух мощных языков — C++ и Java.
2.                     C# — очень удобен в использовании (написании программ), у него достаточно простой синтаксис и мощные сигнатуры, благодаря которым мы можем создать базы данных не хуже чем SQL или LINQ.
3.                     C# — сейчас очень распространен и является одним из самых оптимальных языков программирования.

1.2 История появления C#

История си шарп — является недавней. Язык появился на свет в июне 2000 г. в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом (Anders Hejlsberg). Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеров IBM — Turbo Pascal. Наверное, на территории бывшего Советского Союза многие разработчики со стажем, да и просто люди, обучавшиеся в той или иной форме программированию в вузах, испытали на себе очарование и удобство использования этого продукта. Кроме того, во время работы в корпорации Borland Андерс Хейлсберг прославился созданием интегрированной среды Delphi (он руководил этим проектом вплоть до выхода версии 4.0).
Появление языка си шарп и инициативы .NET отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Интернет-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка. Кроме того Microsoft не могла больше расширять одни и те же инструменты и языки разработки, делая их все более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990-х гг. во время первого появления Windows. Наступает момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты.
С# и .NET являются той самой отправной точкой. Если говорить упрощенно, то .NET представляет собой новую платформу, новый API для программирования в Windows, а С# ее новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно-ориентированного программирования в течение последних 20 лет.
Необходимо отметить, что обратная совместимость не потеряна. Существующие программы будут выполняться, а платформа .NET была спроектирована таким образом, чтобы она могла работать с имеющимся программным обеспечением. Связь между компонентами в Windows сейчас почти целиком осуществляется при помощи СОМ. С учетом этого .NET обладает способностью создавать оболочки (wrappers) вокруг существующих компонентов СОМ, так что компоненты .NET могут общаться с ними, и создавать оболочки вокруг компонентов .NET, что позволяет им выглядеть как обычные СОМ-компоненты.

1.3 Особенности С#

Одной из областей, для которых не предназначен этот язык, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. C++ остается в этой области наилучшим из языков низкого уровня. В С# отсутствуют некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений, в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определенных точках кода.
1.                     Полный и хорошо определенный набор основных типов.
2.                     Встроенная поддержка автоматической генерации XML-документации.
3.                     Автоматическое освобождение динамически распределенной памяти.
4.                     Возможность отметки классов и методов атрибутами, определяемыми пользователем. Это может быть полезно при документировании и способно воздействовать на процесс компиляции (например, можно пометить методы, которые должны компилироваться только в отладочном режиме).
5.                     Полный доступ к библиотеке базовых классов .NET, а также легкий доступ к Windows API (если это действительно необходимо).
6.                     Указатели и прямой доступ к памяти, если они необходимы. Однако язык разработан таким образом, что практически во всех случаях можно обойтись и без этого.
7.                     Поддержка свойств и событий в стиле VB.
8.                     Простое изменение ключей компиляции.
9.                     Позволяет получать исполняемые файлы или библиотеки компонентов .NET, которые могут быть вызваны другим кодом так же, как элементы управления ActiveX (компоненты СОМ).
10.            Возможность использования С# для написания динамических web-страниц ASP.NET

2. Постановка задачи

Задача об инфекции стригущего лишая (Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. М.: Мир, 1981)
Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером n ? n (n — нечетное) клеток.
Предполагается, что исходной зараженной клеткой кожи является центральная.
 В каждый интервал времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток.
По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции,  возникший иммунитет действует в течение последующих четырех единиц времени, а затем клетка оказывается здоровой.
В ходе моделирования описанного процесса выдавать текущее состояние моделируемого участка кожи в каждом интервале времени,  отмечая зараженные, невосприимчивые к инфекции и здоровые клетки.

Для работы была установлена свежая программа с официального сайта visualstudio.microsoft.com которая работает бесплатно на 30 дней. Что бы продолжить работу с программой пришлось регистрироваться и тогда дается лицензионная версия. Обязательно на компьютере должен, установлен пакет NETFramework,Version=v4.6.1

Рекомендации при запуске компилирования кода про лишай. При слабом компьютере не рекомендуется вставлять большие числа, лучше не больше ста, так как визуал студио может зависнуть при обработке. Используйте целые числа. Отрицательные и так не введутся. При запуске компилятора идет расчет зараженной клетки и здоровой, данные выводятся в таблицу справа. Продолжительность включённой программы не должен быть большим, так как может зависнуть на слабом компьютере.


Порядок запуска

1.  При загрузке кода нажмите кнопку пуск. Введите значения от 1. Рис  1.
                          Рисунок 1
  1.  Что бы остановить компилятор нажми конпку стоп. Что бы сделать новую сетку нажми кнопку новая. Смотри рисунок 2.
 Как видим на рисунке красным цветом обозначены зараженные клетки а зеленые уже выздоровленые, белым цветом здоровые.

Описание интерфейса программы, назначение основных элементов формы.

Метод  initializecomponent, который инициализирует все компоненты, расположенные на форме: поля, кнопки, меню, переключатели и загружает откомпилированную страницу компонента.

Метод dataGridView dataGridView - это отображение строк и столбцов данных в сетке,  позволяет автоматизировать вывод информации, позволяет вывести таблицу с данными.



Создаем таблицу и конвертируем в 32 от -1 до i++
for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
                {

                    dataGridView1.Columns.Add(Convert.ToString(i + 1), Convert.ToString(i + 1));
                    dataGridView1.Columns[i].Width = 25;
                }
                for (int i = 0; i <= Convert.ToInt32(textBox1.Text) - 1; i++)
                {
                    dataGridView1.Rows.Add();


заполняем таблицу

for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
                {
                    for (int u = 0; u <= Convert.ToInt32(textBox1.Text) - 1; u++)
                    {
                        dataGridView1.Rows[i].Cells[u].Value = "1";

заполняем зараженную клетку

                dataGridView1.Rows[horizontal].Cells[vertically].Value = 10;

запускаем таймер
                timer1.Enabled = true
Метод MessageBox.Show вводим данные. Сколько клеток будет в сетке.
extchanged - событие для динамического создания текстового поля


При генерации события KeyPress обработчик получает экземпляр класса KeyEventArgs, свойство Key EventArgs. Key Code которого содержит ASCII-символ клавиши, нажатие которой спровоцировало это событие.
Основные команды:

создаем рандомное число  - Random rnd = new Random
делаем ход
            for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
            {
                for (int j = 0; j <= Convert.ToInt32(textBox1.Text) - 1; j++)
                {
                    if (dataGridView1.Rows[i].Cells[j].Value.ToString() != "0")
                    {
                        dataGridView1.Rows[i].Cells[j].Value = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value.ToString()) - 1;
                    }

находим зараженные клетки
            for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
            {
                for (int j = 0; j <= Convert.ToInt32(textBox1.Text) - 1; j++)
                {

заражаем соседние клетки кроме крайних
                    if (i != 0 & j != 0)
выводим результат
            int Immunity = 0; //переменная для клеток с иммунитетом
            int Patient = 0; //переменная для зараженных клеток
если зараженных клеток нет, то останавливаем таймер
            if (Patient == 0 & Immunity == 0)



запускаем таймер
timer1.Enabled = true
Останавливаем таймер
timer1.Enabled = false;


ЗАКЛЮЧЕНИЕ

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1                       А.А.Махнев. О сильной регулярности некоторых рёберно регулярных графов // Изв. РАН. Сер.матем. 2004, том 68, выпуск 1, с. 159 - 182.
2                        Мухаметьянов И.Т. Методические материалы к изучению курса «Дискретная математика» Раздел «Элементы теории графов».
3                       . Brouwer A.E., Cohen A.M., Neumaier A. Distance-regular graphs. Berlin: Springer-Verlag. 2000
4                       . Троелсен, Э. Язык программирования С# 5.0 и платформа .NET 4.5 / Э. Троелсен; Пер. с англ. Ю.Н. Артеменко. — М.: Вильямс, 2013. — 1312 c.
5                       . Павловская Т. А. C#. Программирование на языке высокого уровня: Учебник для вузов. - СПб.: БХВ-Петербург. 2007.
6. «Основы программирования на С#» - [Электронный ресурс]. Режим доступа. - URL:  http://compuzilla.ru/visual-c-sharp/ (дата обращения 12.01.2019).
7. Мой блог учеба примеры онлайн https://xn--80abl9cua.blogspot.com/

ПРИЛОЖЕНИЕ 1 ТЕКСТ ПРОГРАММЫ

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //переменная для хода
        int Course = 0;

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // dataGridView  позволяет автоматизировать вывод информации. позволяет вывести таблицу с данными в Вашей программе
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" & textBox2.Text != "")
            {
                //Удаление ненужных элементов
                label1.Visible = false;
                label2.Visible = false;
                textBox1.Visible = false;
                textBox2.Visible = false;
                button1.Visible = false;
                dataGridView1.Visible = true;
                dataGridView2.Visible = true;
                button2.Visible = true;
                //вычисляем центр
                int horizontal = Convert.ToInt32(textBox2.Text) / 2;
                int vertically = Convert.ToInt32(textBox1.Text) / 2;
                //Создаем таблицу
                for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
                {

                    dataGridView1.Columns.Add(Convert.ToString(i + 1), Convert.ToString(i + 1));
                    dataGridView1.Columns[i].Width = 25;
                }
                for (int i = 0; i <= Convert.ToInt32(textBox1.Text) - 1; i++)
                {
                    dataGridView1.Rows.Add();
                }
                //заполняем таблицу
                for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
                {
                    for (int u = 0; u <= Convert.ToInt32(textBox1.Text) - 1; u++)
                    {
                        dataGridView1.Rows[i].Cells[u].Value = "1";
                    }
                }
                //заполняем зараженную клетку
                dataGridView1.Rows[horizontal].Cells[vertically].Value = 10;
                //запускаем таймер
                timer1.Enabled = true;
            }
            else
            {
                MessageBox.Show("Введите данные");
            }


        }

        private void новаяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Restart();

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox2.Text = textBox1.Text;
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar))
            {
                e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,\b]");
            }

        }


        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar))
            {
                e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,\b]");
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //создаем рамдомное число
            Random rnd = new Random();

            //делаем ход
            for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
            {
                for (int j = 0; j <= Convert.ToInt32(textBox1.Text) - 1; j++)
                {
                    if (dataGridView1.Rows[i].Cells[j].Value.ToString() != "0")
                    {
                        dataGridView1.Rows[i].Cells[j].Value = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value.ToString()) - 1;
                    }
                }
            }
            //находим зараженные клетки
            for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
            {
                for (int j = 0; j <= Convert.ToInt32(textBox1.Text) - 1; j++)
                {

                    //заражаем соседние клетки кроме крайних
                    if (i != 0 & j != 0)
                        {

                        if (i != Convert.ToInt32(textBox2.Text) - 1 & j != Convert.ToInt32(textBox1.Text) - 1)
                            {
                            int value = rnd.Next(0, 16);
                            if (value == 1 | value == 32)
                                {
                                   if (Convert.ToInt32(dataGridView1.Rows[i - 1].Cells[j - 1].Value.ToString()) == 0)
                                        dataGridView1.Rows[i - 1].Cells[j - 1].Value = 10;
                                }
                            if (value == 2 | value == 10)
                            {
                                 if (Convert.ToInt32(dataGridView1.Rows[i - 1].Cells[j].Value.ToString()) == 0)
                                dataGridView1.Rows[i - 1].Cells[j].Value = 10;
                            }
                            if (value == 3 | value == 11)
                            {
                                if (Convert.ToInt32(dataGridView1.Rows[i - 1].Cells[j + 1].Value.ToString()) == 0)
                                dataGridView1.Rows[i - 1].Cells[j + 1].Value = 10;
                            }
                            if (value == 4 | value == 12)
                            {
                                 if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j - 1].Value.ToString()) == 0)
                                dataGridView1.Rows[i].Cells[j - 1].Value = 10;
                            }
                            if (value == 5 | value == 13)
                            {
                                 if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j + 1].Value.ToString()) == 0)
                                dataGridView1.Rows[i].Cells[j + 1].Value = 10;
                            }
                            if (value == 6 | value == 14)
                            {
                                  if (Convert.ToInt32(dataGridView1.Rows[i + 1].Cells[j - 1].Value.ToString()) == 0)
                                dataGridView1.Rows[i + 1].Cells[j - 1].Value = 10;
                            }
                            if (value == 7 | value == 15)
                            {
                                 if (Convert.ToInt32(dataGridView1.Rows[i + 1].Cells[j].Value.ToString()) == 0)
                                dataGridView1.Rows[i + 1].Cells[j].Value = 10;
                            }
                            if (value ==8 | value == 16)
                            {
                                 if (Convert.ToInt32(dataGridView1.Rows[i + 1].Cells[j + 1].Value.ToString()) == 0)
                                dataGridView1.Rows[i + 1].Cells[j + 1].Value = 10;
                            }
                        }
                        }
                }
            }

            //выводим результат
            int Immunity = 0; //переменная для клеток с иммунитетом
            int Patient = 0; //переменная для зараженных клеток
            for (int i = 0; i <= Convert.ToInt32(textBox2.Text) - 1; i++)
            {
                for (int j = 0; j <= Convert.ToInt32(textBox1.Text) - 1; j++)
                {
                    if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value.ToString()) >= 4)
                    {
                        Patient++;
                        dataGridView1.Rows[i].Cells[j].Style.BackColor = System.Drawing.Color.Red;

                    }
                    if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value.ToString()) >= 1 & Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value.ToString()) <= 3)
                    {
                        Immunity++;
                        dataGridView1.Rows[i].Cells[j].Style.BackColor = System.Drawing.Color.Green;
                    }
                    if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value.ToString()) == 0)
                    {
                        dataGridView1.Rows[i].Cells[j].Style.BackColor = System.Drawing.Color.White;
                    }
                }
            }
            Course++;
            dataGridView2.Rows.Add(Course, Patient, Immunity, (((Convert.ToInt32(textBox1.Text) * Convert.ToInt32(textBox2.Text)) - Patient) - Immunity));
            //если зараженных клеток нет, то останавливаем таймер
            if (Patient == 0 & Immunity == 0)
            {
                timer1.Enabled = false;
            }

        }



        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }
    }
}