Главная страница

Кашу_ЭЗИ32_ПрогрЯВУ1. разработка программного обеспечения на языке высокого уровня c#


Скачать 1.39 Mb.
Названиеразработка программного обеспечения на языке высокого уровня c#
Дата28.06.2022
Размер1.39 Mb.
Формат файлаdoc
Имя файлаКашу_ЭЗИ32_ПрогрЯВУ1.doc
ТипПояснительная записка
#618170



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»


(ДГТУ)

Кафедра «Вычислительные системы и информационная безопасность»


УТВЕРЖДАЮ

Зав. кафедрой

ВСиИБ

____________

В.А. Фатхи

«___»

______

2021 г.


ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К курсовой работе по дисциплине «Программирование на языке высокого уровня»

на тему «РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ C#»

Автор работы _______________________ Ксения Кашу

подпись
Направление 09.03.02 Информационные системы и технологии
Обозначение курсовой работы ПЯВУ.240000.000ПЗ Группа ЭЗИ 32

Руководитель работы __________________ ___________

подпись
Работа защищена ______________ ______________ ______________

дата оценка подпись
Ростов-на-Дону

2021



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»


(ДГТУ)

Кафедра «Вычислительные системы и информационная безопасность»


УТВЕРЖДАЮ

Зав. кафедрой

«______________»

____________

________________

(подпись)

И.О.Ф.

«___»

______

201__ г.


ЗАДАНИЕ

на курсовую работу
Студент Ксения Кашу Код ПЯВУ.240000.000ПЗ Группа ЭЗИ 32


Разработка программного обеспечения на языке высокого уровня C#



Тема ____________________________________________________________________

____________________________________________________________________________

____________________________________________________________________________

Срок представления работы к защите " __ " _________ 2021 г.

Исходные данные для курсовой работы

___________________________________________________________________________

___________________________________________________________________________

___________________________________________________________________________

___________________________________________________________________________

___________________________________________________________________________

___________________________________________________________________________

___________________________________________________________________________

___________________________________________________________________________


Содержание пояснительной записки


В данной курсовой работе осуществляется решение восьми заданий на языке высокого уровня C#.

ВВЕДЕНИЕ:

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

1. Разделы основной части:

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

ЗАКЛЮЧЕНИЕ:


Выводы, оценка результатов выполненной работы, соответствие полученных результатов заданию.
______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________


Перечень графического материала

1. _____________________________________________________________________________

2. _____________________________________________________________________________

3. _____________________________________________________________________________

4. _____________________________________________________________________________

5. _____________________________________________________________________________

6. _____________________________________________________________________________

7. _____________________________________________________________________________

8. _____________________________________________________________________________





Руководитель проекта (работы)


___________________

подпись, дата


__________________________

И.О.Ф.
















Задание принял к исполнению

___________________

подпись, дата

__________________________

И.О.Ф.





  1. Среда программирования Visual Studio. Линейные алгоритмы Функциональное назначение

  2. Разветвляющиеся алгоритмы

  3. Одномерные массивы

  4. Двумерные массивы

  5. Классы

  6. Свойства и методы класса. Перегрузка операций

  7. Наследование

  8. Элементы библиотеки Windows Forms




Содержание


Введение 5

1 Среда программирования Visual Studio. Линейные алгоритмы 6

2 Разветвляющиеся алгоритмы 12

3 Одномерные массивы 16

4 Двумерные массивы 19

5 Классы 23

6 Свойства и методы класса. Перегрузка операций 27

7 Наследование 32

8 Элементы библиотеки Windows Forms. 36

Заключение 40

Список использованных источников 41



Введение


Для реализации программ в соответствии с заданиями на курсовую работу используется язык программирования C#.

C# имеет C стиль синтаксиса (для управляющих конструкций, блоков кода, описания сигнатуры методов и др.), много общего с Java (отсутствие множественного наследования и шаблонов, наличие сборщика мусора) и Дельфи (ориентированность на создание компонент), в то же время имеет и свой колорит.

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

C# объектно-ориентированный язык, как и вся платформа .NET. Более того, это язык, ориентированный на написание компонент. C# создан для программирования в управляемой среде с присутствующим сборщиком мусора, но позволяет писать и неуправляемый (unmanaged) код.
  1. Среда программирования Visual Studio. Линейные алгоритмы


Цель: Изучение среды программирования Visual Studio и основных видов проектов. Знакомство с языком программирования C#.

Теоретические сведения

1. Создание проекта

Для выполнения лабораторных работ была использована среда разработки Visual Studio 2015.

Интерфейс среды разработки представлен на рис. 1. Для того чтобы начать писать программу необходимо создать проект, для этого нажать на надпись «Создать проект…» либо выбрать пункт меню «Файл»  «Создать»  «Проект…». Откроется окно, в котором можно выбрать тип проекта и указать его название (рис. 2). Для первых семи заданий необходимо выбирать тип проекта «Консольное приложение».



Рис. 1 — Стартовая страница среды разработки.



Рис. 2 — Окно создания проекта.

Необходимо ввести название проекта и указать путь где будут сохранены файлы проекта. После нажатия кнопки «ОК» средой разработки будет автоматически сгенерированы несколько файлов, входящих в проект, в том числе файл с настройками и каркас файла с исходным кодом программы, который откроется в рабочей области среды программирования (рис. 3).



Рис. 3 — Исходный код и структура проекта.

Несмотря на то, что никаких действий в данном коде пока не описано, его уже можно скомпилировать и запустить. Для этого нужно выбрать пункт меню «Отладка»  «Запуск без отладки» или нажать сочетание клавиш Ctrl F5.



Рис. 4 — Запуск проекта.

2. Операторы ввода-вывода

Для ввода данных в программу используется функция Console.ReadLine(). Для вывода результатов работы функция Console.WriteLine(значение).

Можно вводить в программу строковые данные, но вводимые данные необходимо преобразовать к числовому типу. Для этого используется следующее выражение:

int.Parse(Console.ReadLine()) , если необходимо вводить целые числа.

double.Parse(Console.ReadLine()) , если необходимо вводить числа с дробной частью.

3. Математические функции

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

Math.Sin(a) — синус a.

Math.Asin(a) — арксинус a.

Math.Cos(a) — косинус a.

Math.Acos(a) — арккосинус a.

Math.Tan(a) — тангенс a.

Math.Atan(a) — арктангенс a.

Math.Pow(a,b) — возведение числа a в степень b.

Math.Log(a,b) — логарифм числа a по основанию b.

Math.Log(a) — натуральный логарифм числа a.

Задание


Решение

На рис 5 представлена схема алгоритма.



Рисунок 5 - Схема алгоритма

Листинг (исходный код программы)

using System;
namespace _1

{

class Program

{

static void Main(string[] args)

{

double alpha;
Console.Write("Введите значение альфа: ");

alpha = double.Parse(Console.ReadLine().Replace('.', ','));
double z1 = 1 - 0.25 * Math.Pow(Math.Sin(2 * alpha), 2) + Math.Cos(2 * alpha);

double z2 = Math.Pow(Math.Cos(alpha), 2) + Math.Pow(Math.Cos(alpha), 4);
Console.WriteLine("z1 = {0}\nz2 = {1}", z1, z2);

Console.Read();

}

}

}

Результат работы программы



Рисунок 6 – Результаты работы программы

  1. Разветвляющиеся алгоритмы


Цель: Изучение операторов ветвления в C#, получение практических навыков их использования для реализации разветвляющихся алгоритмов.

Теоретические сведения

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

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

В логических выражениях используется операция сравнения: < (меньше), > (больше), <= (меньше или равно), >= (больше или равно), == (равно), ! = (не равно). Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между собой условий (отношений).

Алгоритм предполагает выполнение Действия 1, если записанное условие истинно (выполняется), и выполнение Действия 2, если условие ложно (не выполняется) – это полная развилка.

Если в алгоритме отсутствует Действие 2, т.е. если записанное условие истинно, то выполняется Действие 1, а если условие ложно, то никаких действий не выполняется – это не полная развилка.

Задание

Вычислить и вывести на экран значение функции F при различных значениях x. Значения a, b, c ввести с клавиатуры. Значение x менять в заданном диапазоне с заданным шагом в цикле.

F =

Решение

На рисунке 7 представлена схема алгоритма.

Листинг (исходный код программы)

using System;

namespace _2

{

class Program

{

static void Main(string[] args)

{

double a, b, c, x0, x1, h, f;

Console.Write("Введите значение a: ");

a = double.Parse(Console.ReadLine());

Console.Write("Введите значение b: ");

b = double.Parse(Console.ReadLine());

Console.Write("Введите значение c: ");

c = double.Parse(Console.ReadLine());

Console.Write("Введите значение x нач.: ");

x0 = double.Parse(Console.ReadLine());

Console.Write("Введите значение x кон.: ");

x1 = double.Parse(Console.ReadLine());

Console.Write("Введите значение шаг h: ");

h = double.Parse(Console.ReadLine());
while (x0 <= x1)

{

if (x0 < 0 && b != 0)

f = a - (x0 / (10.0 + x0));

else if (x0 > 0 && b == 0)

f = (x0 - a) / (x0 - c);

else

f = 3.0 * x0 + 2.0 / c;

Console.WriteLine("x = {0}, f = {1}", x0, f);

x0 += h;

}

Console.Read();

}

}

}



Рисунок 7 - Схема алгоритма

Результат работы программы

Результаты работы программы представлены на рисунке 8.



Рисунок 8 – Результаты работы программы

  1. Одномерные массивы


Цель: Изучить способы описания одномерных массивов в языке программирования C# и методы работы с ними.

Теоретические сведения

Массив представляет собой совокупность переменных одного типа с общим для обращения к ним именем. Массивы служат самым разным целям, поскольку они предоставляют удобные средства для объединения связанных вместе переменных. Массивами в C# можно пользоваться практически так же, как и в других языках программирования. Тем не менее, у них имеется одна особенность: они реализованы в виде объектов.

Для того чтобы воспользоваться массивом в программе, во-первых, необходимо объявить переменную, которая может обращаться к массиву. И во-вторых, нужно создать экземпляр массива, используя оператор new.

Задание

В одномерном массиве, состоящем из п вещественных элементов, вычислить:

  1. максимальный элемент массива;

  2. сумму элементов массива, расположенных до последнего положительного элемента.

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]. Освободившиеся в конце массива элементы заполнить нулями.

Решение

Листинг (исходный код программы)

using System;
namespace _3

{

class Program

{

static void Main(string[] args)

{

Console.Write("Введите размер массива N: ");

int n = int.Parse(Console.ReadLine());
double[] mas = new double[n];

Random rand = new Random(DateTime.Now.Millisecond);

Console.WriteLine("Генерируем массив: ");

for (int i = 0; i < n; ++i)

{

mas[i] = rand.Next(20) - rand.Next(20);

Console.Write("{0} ", mas[i]);

}

Console.WriteLine();

double max = mas[0];

int lastPositivendex = -1;

for (int i = 0; i < n; ++i)

{

if (mas[i] > max)

{

max = mas[i];

}

if (mas[i] > 0)

{

lastPositivendex = i;

}

}

Console.WriteLine("Максимальный элемент: {0}", max);
double sum = 0;

for (int i = 0; i < lastPositivendex; ++i)

{

sum += mas[i];

}

Console.WriteLine("Cуммa элементов массива, расположенных до последнего положительного: {0}", sum);
Console.Write("Введите a: ");

double a = int.Parse(Console.ReadLine());

Console.Write("Введите b: ");

double b = int.Parse(Console.ReadLine());
int cnt = n;

for (int i = 0; i < cnt; ++i)

{

if (mas[i] >= a && mas[i] <= b)

{

for (int j = i; j < cnt - 1; ++j)

{

mas[j] = mas[j + 1];

}

--cnt;

--i;

mas[cnt] = 0;

}

}
Console.WriteLine("Новый массив: ");

for (int i = 0; i < n; ++i)

{

Console.Write("{0} ", mas[i]);

}

Console.Read();

}

}

}

Результат работы программы



Рисунок 9 – Результаты работы программы
  1. Двумерные массивы


Цель: Изучить способы задания двумерных массивов и методы работы с ними.

Теоретические сведения

Простейшей формой многомерного массива является двумерный массив. Местоположение любого элемента в двумерном массиве обозначается двумя индексами. Такой массив можно представить в виде таблицы, на строки которой указывает один индекс, а на столбцы — другой. Пример объявления и инициализации двумерного массива показан ниже:

// Объявляем двумерный массив

int[,] myArr = new int[4, 5];

Random ran = new Random();

// Инициализируем данный массив

for (int i = 0; i < 4; i++)

{

for (int j = 0; j < 5; j++)

{

myArr[i, j] = ran.Next(1, 15);

Console.Write("{0}\t", myArr[i, j]);

}

Console.WriteLine();

}

Задание

Дана целочисленная прямоугольная матрица. Определить:

  1. сумма элементов в тех столбцах, которые не содержат отрицательных элементов;

  2. минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.

Решение

Листинг (исходный код программы)

using System;

namespace _4

{

class Program

{

static void printMatrix(int[,] m)

{

for (int i = 0; i < m.GetLength(0); ++i)

{

for (int j = 0; j < m.GetLength(1); ++j)

{

Console.Write("{0,3}", m[i, j]);

}

Console.WriteLine();

}

Console.WriteLine();

}
static void Main(string[] args)

{

Console.Write("Введите кол-во строк матрицы: ");

int m = Convert.ToInt32(Console.ReadLine());

Console.Write("Введите кол-во столбцов матрицы: ");

int n = Convert.ToInt32(Console.ReadLine());
int[,] matrix = new int[m, n];

Random rand = new Random(DateTime.Now.Millisecond);

for (int i = 0; i < m; ++i)

{

for (int j = 0; j < n; ++j)

{

matrix[i, j] = rand.Next(20) - rand.Next(10);

}

}
printMatrix(matrix);
Console.WriteLine("Cумма элементов в тех столбцах, которые не содержат отрицательных элементов: ");

bool hasNegative, hasCol = false;
for (int j = 0; j < n; ++j)

{

int s = 0;

hasNegative = false;

for (int i = 0; i < m; ++i)

{

if (matrix[i, j] < 0)

{

hasNegative = true;

break;

}

s += matrix[i, j];

}

if (!hasNegative)

{

hasCol = true;

Console.WriteLine("Столбец {0}: {1}", j, s);

}

}

if (!hasCol)

{

Console.WriteLine("Нет таких столбцов!");

}

Console.WriteLine();
int min = 0;

for (int i = 0; i < m; ++i)

{

int sum = 0;

for (int j = 0; j <= i; ++j)

{

sum += Math.Abs(matrix[i - j, j]);

Console.Write("{0} ", matrix[i - j, j]);

}

Console.WriteLine(" - sum: {0}", sum);

if (i == 0 || min > sum)

{

min = sum;

}

}
for (int i = 0; i < n - 1; ++i)

{

int sum = 0;

for (int j = 1; j + i < n; ++j)

{

sum += Math.Abs(matrix[m - j, j + i]);

Console.Write("{0} ", matrix[m - j, j + i]);

}

Console.WriteLine(" - sum: {0}", sum);

if (min > sum)

{

min = sum;

}

}
Console.WriteLine("минимум среди сумм модулей элементов диагоналей,\nпараллельных побочной диагонали матрицы: {0}", min);

Console.Read();

}

}

}

Результат работы программы



Рисунок 10 – Результаты работы программы

  1. Классы


Цель: Изучить основы объектно-ориентированного программирования на языке C#, получить практические навыки описания классов и их использования.

Теоретические сведения

Класс представляет собой шаблон, по которому определяется форма объекта. В нем указываются данные и код, который будет оперировать этими данными. В C# используется спецификация класса для построения объектов, которые являются экземплярами класса. Следовательно, класс, по существу, представляет собой ряд схематических описаний способа построения объекта. При этом очень важно подчеркнуть, что класс является логической абстракцией. Физическое представление класса появится в оперативной памяти лишь после того, как будет создан объект этого класса.

Классы и структуры — это, по сути, шаблоны, по которым можно создавать объекты. Каждый объект содержит данные и методы, манипулирующие этими данными.

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

Задание

Описать класс с именем AEROFLOT, содержащий следующие поля:

  • название пункта назначения рейса;

  • номер рейса;

  • тип самолета.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив, состоящий из семи объектов класса AEROFLOT; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;

  • вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры;

  • если таких рейсов нет, выдать на дисплей сообщение.

Решение

Листинг (исходный код программы)

Листинг файла Aeroflot.cs

using System;
namespace _5

{

class Aeroflot

{

public string punkt;

public int number;

public string type;
public void Init()

{

Console.Write("Введите название пункта назначения рейса: ");

punkt = Console.ReadLine();

Console.Write("Введите номер рейса: ");

number = Convert.ToInt32(Console.ReadLine());

Console.Write("Введите тип самолета: ");

type = Console.ReadLine();

}
public override string ToString()

{

return string.Format("Рейс №{0}, {1}, {2}", number, punkt, type);

}
}

}

Листинг файла Program.cs

using System;

using System.Collections.Generic;
namespace _5

{

class Program

{
static void Main(string[] args)

{

Aeroflot[] aero = new Aeroflot[7];

for (int i = 0; i < aero.Length; ++i)

{

aero[i] = new Aeroflot();

aero[i].Init();

}
Comparer comparer = Comparer.Create((first, second) =>

{

return first.punkt.CompareTo(second.punkt);

});

Array.Sort(aero, comparer);
Console.WriteLine("\nВы ввели:");

for (int i = 0; i < aero.Length; ++i)

{

Console.WriteLine(aero[i].ToString());

}

Console.WriteLine();
Console.Write("Введите тип самолёта для поиска: ");

string type = Console.ReadLine();
int cnt = 0;

Console.WriteLine("Список рейсов, следующих в данный пункт:");

for (int i = 0; i < aero.Length; ++i)

{

if (aero[i].type.Equals(type))

{

++cnt;

Console.WriteLine("{0}. {1}, {2}", cnt, aero[i].punkt, aero[i].number);

}

}

if (cnt == 0)

Console.WriteLine("Не найдено подходящих рейсов!");

Console.Read();

}

}

}

Результат работы программы



Рисунок 11 - Результаты работы программы

  1. Свойства и методы класса. Перегрузка операций


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

Теоретические сведения

Перегрузка операторов тесно связана с перегрузкой методов. Для перегрузки оператора служит ключевое слово operator, определяющее операторный метод, который, в свою очередь, определяет действие оператора относительно своего класса. Существуют две формы операторных методов (operator): одна - для унарных операторов, другая - для бинарных. Ниже приведена общая форма для каждой разновидности этих методов:

// Общая форма перегрузки унарного оператора.

public static возвращаемый_тип operator op(тип_параметра операнд)

{

// операции

}

// Общая форма перегрузки бинарного оператора.

public static возвращаемый_тип operator op(тип_параметра1 операнд1,

тип_параметра2 операнд2)

{

// операции

}

Задание

Разработать класс на языке C# в соответствии с вариантом задания. Все поля класса должны быть скрытыми (объявленными как private). Для доступа к полям классам должны быть предусмотрены соответствующие свойства.

Реализовать для класса конструктор по умолчанию, конструктор с параметрами и конструктор копирования.

Перегрузить методы класса == и !=.

Написать программу, демонстрирующую работу указанных выше элементов класса.

Выполнить задания, представленные в соответствующем варианте.

Разработать класс Passport (паспорт), содержащий следующие поля:

  • serial (серия документа),

  • number (номер документа),

  • date (дата выдачи),

  • who (кем выдан);

методы:

  • GetChangeTime() — получить время следующего обмена.

Перегрузить операторы > и <, считая, что один паспорт больше другого, если его серия больше.

Решение

Листинг (исходный код программы)

Листинг файла Passport.cs

using System;
namespace _6

{

class Passport

{

private string serial;//серия документа

private int number;//(номер документа)

private DateTime date;//(дата выдачиы)

private string who;//(кем выдан)
public Passport()

{

number = 0;

date = DateTime.Now;

serial = who = "";

}
public Passport(string serial, int number, DateTime date, string who)

{

this.number = number;

this.date = date;

this.who = who;

this.serial = serial;

}
public Passport(Passport p)

{

number = p.number;

date = p.date;

who = p.who;

serial = p.serial;

}
public string Serial

{

get { return serial; }

}
public int Number

{

get { return number; }

}
public DateTime Date

{

get { return date; }

}
public string Who

{

get { return who; }

}
public DateTime GetChangeTime()

{

//Будем считать, что паспорт даётся на 5 лет

return date.AddYears(5);

}
public static bool operator >(Passport l, Passport r)

{

return l.serial.CompareTo(r.serial) == 1;

}
public static bool operator <(Passport l, Passport r)

{

return l.serial.CompareTo(r.serial) == -1;

}
public static bool operator ==(Passport l, Passport r)

{

return ((l.Number == r.Number) && (l.Serial == r.Serial) && (l.Date == r.Date) && (l.Who == r.Who));

}
public static bool operator !=(Passport l, Passport r)

{

return !(l == r);

}
public override string ToString()

{

return string.Format("{0} {1}, выдан - {2}, {3}", serial, number, date.ToString(), who);

}

}

}

Листинг файла Program.cs

using System;
namespace _6

{

class Program

{

static void Main(string[] args)

{

Passport pass1 = new Passport();

Passport pass2 = new Passport("ВМ", 123445, DateTime.Now.AddYears(-4), "РОВД г. Москва");

Passport pass3 = new Passport(pass2);
Console.WriteLine(pass1.ToString());

Console.WriteLine(pass2.ToString());

Console.WriteLine(pass3.ToString());

Console.WriteLine();
if (pass1 == pass2)

Console.WriteLine("pass1 = pass2");

else

Console.WriteLine("pass1 != pass2");
if (pass2 == pass3)

Console.WriteLine("pass2 = pass3");

else

Console.WriteLine("pass2 != pass3");
if (pass2 > pass3)

Console.WriteLine("pass2 больше чем pass3");

else

Console.WriteLine("pass2 не больше pass3");
if (pass2 < pass3)

Console.WriteLine("pass2 меньше чем pass3");

else

Console.WriteLine("pass2 не меньше pass3");
if (pass1 > pass3)

Console.WriteLine("pass1 больше чем pass3");

else

Console.WriteLine("pass1 не больше pass3");
if (pass1 < pass3)

Console.WriteLine("pass1 меньше чем pass3");

else

Console.WriteLine("pass1 не меньше pass3");
Console.WriteLine("pass2.GetChangeTime() = {0}", pass2.GetChangeTime().ToString());
Console.Read();

}

}

}

Результат работы программы



Рисунок 12 – Результат работы программы
  1. Наследование


Цель: Изучить методы наследования классов.

Теоретические сведения

Наследование является одним из трех основополагающих принципов объектно-ориентированного программирования, поскольку оно допускает создание иерархических классификаций. Благодаря наследованию можно создать общий класс, в котором определяются характерные особенности, присущие множеству связанных элементов. От этого класса могут затем наследовать другие, более конкретные классы, добавляя в него свои индивидуальные особенности.

В языке C# класс, который наследуется, называется базовым, а класс, который наследует, — производным. Следовательно, производный класс представляет собой специализированный вариант базового класса. Он наследует все переменные, методы, свойства и индексаторы, определяемые в базовом классе, добавляя к ним свои собственные элементы.

Поддержка наследования в C# состоит в том, что в объявление одного класса разрешается вводить другой класс. Для этого при объявлении производного класса указывается базовый класс. При установке между классами отношения "является" строится зависимость между двумя или более типами классов. Базовая идея, лежащая в основе классического наследования, заключается в том, что новые классы могут создаваться с использованием существующих классов в качестве отправной точки.

Задание

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

Написать программу с демонстрацией создания объектов этого класса с использованием разных конструкторов.

Разработать класс ZarganPassport, являющийся наследником класса Passport, добавив следующие поля:

  • country (страна, выдавшая паспорт),

  • isBiometric (является ли паспорт биометрическим).

Решение

Листинг (исходный код программы)

Исходный код файла Passport.cs не был изменен, поэтому приводиться повторно не будет.

Листинг файла ZagranPassport.cs

using System;
namespace _7

{

class ZarganPassport : Passport

{

private bool isBiometric;//является ли паспорт биометрическим

private string country;//страна, выдавшая паспорт.
public ZarganPassport() : base()

{

isBiometric = false;

country = "";

}
public ZarganPassport(ZarganPassport pc) : base(pc)

{

isBiometric = pc.isBiometric;

country = pc.country;

}
public ZarganPassport(string serial, int number, DateTime date, string who, string country, bool isBiometric) : base(serial, number, date, who)

{

this.isBiometric = isBiometric;

this.country = country;

}
public bool IsBiometric

{

get { return isBiometric; }

}
public string Country

{

get { return country; }

}
public override string ToString()

{

return string.Format("{0}. Выдан в: {1} ({2}биометрический)", base.ToString(), country, isBiometric ? "" : "не ");

}

}

}

Листинг файла Program.cs

using System;
namespace _7

{

class Program

{

static void Main(string[] args)

{

ZarganPassport pass1 = new ZarganPassport();

ZarganPassport pass2 = new ZarganPassport("ВМ", 123445, DateTime.Now.AddYears(-4), "РОВД г. Москва", "Россия", true);

ZarganPassport pass3 = new ZarganPassport(pass2);
Console.WriteLine("{0}\n", pass1.ToString());

Console.WriteLine("{0}\n", pass2.ToString());

Console.WriteLine("{0}\n", pass3.ToString());

Console.WriteLine();
if (pass1 == pass2)

Console.WriteLine("pass1 = pass2");

else

Console.WriteLine("pass1 != pass2");
if (pass2 == pass3)

Console.WriteLine("pass2 = pass3");

else

Console.WriteLine("pass2 != pass3");
if (pass2 > pass3)

Console.WriteLine("pass2 больше чем pass3");

else

Console.WriteLine("pass2 не больше pass3");
if (pass2 < pass3)

Console.WriteLine("pass2 меньше чем pass3");

else

Console.WriteLine("pass2 не меньше pass3");
if (pass1 > pass3)

Console.WriteLine("pass1 больше чем pass3");

else

Console.WriteLine("pass1 не больше pass3");
if (pass1 < pass3)

Console.WriteLine("pass1 меньше чем pass3");

else

Console.WriteLine("pass1 не меньше pass3");
Console.WriteLine("pass2.GetChangeTime() = {0}", pass2.GetChangeTime().ToString());
Console.Read();

}

}

}

Результат работы программы



Рисунок 13 – Результат работы программы
  1. Элементы библиотеки Windows Forms.


Цель: Изучить основные классы библиотеки Windows Forms, их свойства, методы и события.

Теоретические сведения

Для создания графических интерфейсов с помощью платформы .NET применяются разные технологии - Window Forms, WPF, приложения для магазина Windows Store (для ОС Windows 8/8.1/10). Однако наиболее простой и удобной платформой до сих пор остается Window Forms или формы.

Задание

Вычислить и вывести на экран значения функции из задания 2 «Разветвляющиеся алгоритмы» в интервале от xнач да xкон с шагом dx. Для задания всех необходимых параметров использовать элементы TextBox, для вывода значений функции — элемент DataGridView. Пример формы, содержащей данные элементы, приведён на рис. 14.



Рисунок 14 — Пример формы для вывода значений функции.

Решение

Листинг (исходный код программы)

Листинг файла Form1.cs

using System;

using System.Windows.Forms;

namespace _8

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}
private void button1_Click(object sender, EventArgs e)

{

if (textBox1.TextLength == 0 ||

textBox2.TextLength == 0 ||

textBox3.TextLength == 0 ||

textBox4.TextLength == 0 ||

textBox5.TextLength == 0 ||

textBox6.TextLength == 0)

{

MessageBox.Show("Нужно заполнить все поля!", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}

double x, x_end, dx, a, b, c;

try

{

x = Convert.ToDouble(textBox1.Text.Replace('.', ','));

x_end = Convert.ToDouble(textBox2.Text.Replace('.', ','));

dx = Convert.ToDouble(textBox3.Text.Replace('.', ','));
a = Convert.ToDouble(textBox4.Text.Replace('.', ','));

b = Convert.ToDouble(textBox5.Text.Replace('.', ','));

c = Convert.ToDouble(textBox6.Text.Replace('.', ','));

}

catch (Exception)

{

MessageBox.Show("Проверьте правильность ввода.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}

double f;

dataGridView1.Rows.Clear();

while (x < x_end)

{

if (x < 0 && b != 0)

f = a - (x / (10.0 + x));

else if (x > 0 && b == 0)

f = (x - a) / (x - c);

else

f = 3.0 * x + 2.0 / c;
dataGridView1.Rows.Add(string.Format("{0}", x), string.Format("{0}", f));

x += dx;

}

}

}

}

Результат работы программы



Рисунок 15 – Результат работы программы

Заключение


В процессе выполнения заданий курсовой работы был использован язык программирования C#, знание которого было существенно улучшено за этот период. Были изучены как азы программирования, так и боле сложные темы – основы объектно-ориентированного программирования и разработка Window Forms. Кроме того, улучшен навык программирования с использованием среды разработки Microsoft Visual Studio 2015.

Список использованных источников


  1. Хейлсберг А. Язык программирования C#. — СПб: Питер, 2018.

  2. Троелсен, Эндрю Язык программирования C# 5.0 и платформа .NET 4.5 / Эндрю Троелсен. - М.: Вильямс, 2016.

  3. Бишоп, Дж. C# в кратком изложении / Дж. Бишоп, Н. Хорспул. - М.: Бином. Лаборатория знаний, 2017.

  4. Вагнер, Билл С# Эффективное программирование / Билл Вагнер. - М.: ЛОРИ, 2016.


написать администратору сайта