Лабораторная работа № 1. Разработка приложений Windows Forms



Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Оренбургский государственный университет»

Кафедра вычислительной техники и защиты информации

 

Р.Р. Галимов

 

 

ПРОГРАММИРОВАНИЕ В СРЕДЕ VISUAL C #

 

Рекомендовано к изданию Редакционно-издательским советом

федерального государственного бюджетного образовательного учреждения

высшего профессионального образования

«Оренбургский государственный университет»

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

090900.62 Информационная безопасность

 

 

Оренбург

2017

 

 

УДК 004.3(076)

ББК 32.973.26-04я7

Г 15

 

         

          Рецензент - кандидат технических наук, доцент А.C. Цыганков

 

Галимов, Р.Р.

Г15     Программирование в среде Visual C#

/ Р.Р. Галимов,               

        А.И. Сарайкин;  

          Оренбургский гос. ун-т. - Оренбург: ОГУ, 2017. – 75 с.

         

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

Методические указания рекомендованы преподавателям как вспомогательный материал в организации и проведении занятий, а также студентам по направлениям подготовки 090900.62 - Информационная безопасность и 230101.62- «Информатика и вычислительная техника» - для аудиторного и самостоятельного освоения лабораторного курса дисциплины «Объектно-ориентированное программирование».

 

 

                                                                                                  УДК 004.3(076)

ББК 32.973.26-04я7

           

 

© Галимов Р.Р.,

 Сарайкин А.И., 2014

                                                                                     ©ГОУ ОГУ, 2014

 

 

Содержание

 

Введение………………………………………………………………………..…… 4
1. Лабораторная работа №1. Разработка приложения Windows Forms …………………………………………………………...   14
3. Лабораторная работа №3. Изучение классов С#…..…………………………. 23
4. Лабораторная работа №4. Работа с пунктами меню и панелью инструментов 30
5. Лабораторная работа №5. Основы векторной графики в приложениях MFC.. 41
6 Лабораторная работа № 6. Объектно-ориентированный подход при работе с графическими примитивами…………………………………………...…………...   46
7 Лабораторная работа № 7. Изучение механизма сериализации……………….. 55
8 Лабораторная работа № 8 Работа с файлами…………………………………… 61
9 Лабораторная работа №9. Программирование алгоритма сокрытия информации в графических файлах………………………………………………….……   67
Список использованных источников……….......................................................... 73
Приложение А. Листинг программы на основе Win API………………………... 74

 


Введение

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

 Лабораторный курс содержит 9 лабораторных работ и методические указания к ним. Каждая работа включает теоретическое изложение материала, постановку задачи, порядок выполнения и контрольные вопросы для самоподготовки.

 Общие методические рекомендации по использованию лабораторных работ и методических указаний:

- к выполнению лабораторной работы следует приступать после ознакомления с теоретической частью соответствующего раздела и рекомендациями, приведенными в конкретной работе;

- лабораторные работы рекомендуется выполнять в порядке их нумерации в аудиторное время, указанное в описании работы;

- рекомендуется для экономии времени отчеты о лабораторных работах оформлять в виде протоколов работы с обязательным указанием даты, номера, темы, цели работы и выводов с краткой характеристикой результата;

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

Лабораторный курс может быть освоен на индивидуальном компьютере со средними техническими характеристиками. Обязательным для полной реализации курса является наличие комплекта офисных приложений и среды программирования Visual C#, желательно иметь выход в Интернет.

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

 

 

Обозначения и сокращения

 

API (Application Program Interface) - общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows

 MFC (Microsoft Foundation Classes) - библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений

ASCII (American Standard Code for Information Interchange) - американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов

BMP (BitMap Picture) - формат хранения растровых изображений

GDI( Graphics Device Interface) -интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие как мониторы и принтеры

LSB (Least Significant Bit) – метод в стеганографии, заключающийся в изменении младших битов в контейнере

RGB(Red,Green,Blue) – цветовая модель

SDI ( Single Document Interface)- приложения однодокументного интерфейса

ЛК – левая кнопка мыши

ПК –правая кнопка мыши

ОС – операционная система

 


Лабораторная работа № 1. Разработка приложений Windows Forms

 

Цель: получить навыки разработки приложений Windows

 

Теоретическая часть

Windows Forms является библиотекой, позволяющей быстро создавать графический интерфейс приложений. При выборе данного шаблона при создании нового проект в среде Visual Studio появляется форма, представляющая собой контейнер для размещения элементов управления и компонентов. Выделяют три основных вида форм: диалоговые окна, окна и окна MDI (многооконных приложений).

Для создания приложения Windows Forms в Visual studio выполните команду: «Файл| Создать| проект». В качестве шаблона необходимо выбрать «Visual C#|Приложение Windows Forms».

Рисунок 1.1 –Выбор шаблона проекта

Укажите имя проекта и выберите папку для хранения файлов через кнопку «Обзор». В результате среда программирования автоматически сгенерирует код и отобразит форму в дизайнере, который фактически представляет графически исходный код. При этом внешнее оформление формы практически соответствует его виду при исполнении программы.

Рисунок 1.2 – Дизайнер формы

Дизайнер формы позволяет визуально создавать графический интерфейс программы, не написав ни одной строчки кода. К основным элементам дизайнера относятся: Свойства, Панель элементов. Окна данных инструментов могут быть размещены в других позициях или закрыты. Для отображения окна необходимо перейти в пункт меню «Вид» и выбрать соответствующее окно. Чтобы не загромождать рабочее пространство некоторые окна сворачиваются, например, на рисунке свернуто «Панель элементов».

 

2.1.1 Изменение свойств элемента управления

 

Инструмент «Свойства» позволяет изменить свойства компонентов и элементов управления, которые влияют на внешний вид и поведение соответствующих объектов. Например, для изменения заголовка формы выделите данный объект и в инструменте «Свойства» выберите пункт «Текст». В текстовом поле введите новый заголовок (нажмите в конце ввода клавишу «Enter»). Пример представлен на рисунке 1.3.

Рисунок 1.3 – Окно редактирование свойств объекта

 

В данном примере изменения свойства «Text» сразу же отображаются на форме Form1.

 

2.1.2 Обработка событий

 

Взаимодействие пользователя и приложения осуществляется событиями. Событиями являются действия пользователя: нажатие кнопки, перемещение мыши и другие. Действия пользователя обрабатываются операционной системой, которая передает сообщения о событиях приложению. В программе должны быть предусмотрен код, который должен вызываться при появлении события. Рассмотрим на примере события щелчок мыши на кнопке. Разместите на форме кнопку «button» из панели инструментов. Выделите данный элемент управления и в инструменте «Свойства» выберите раздел «События».

Рисунок 1.4

 

Для привязки метода событию щелчок мыши дважды щелкните на пункт «Click». В результате среда программирования создаст функцию, которая будет вызываться по выбранному событию.

   private void button1_Click(object sender, EventArgs e)

   {

       MessageBox.Show("Кнопка нажата");

 }

 

Команда MessageBox.Show выводит на экран диалоговое окно с заданным текстом.  

В данной работе предполагается использование следующих событий:

- событие Shown формы. Возникает при первом отображении формы;

- событие CheckedChanged элемента Checkbox (флажок), возникающее при каждом изменении свойства флажка.

 

2.1.3 Текстовое поле

 

Для ввода информации пользователя в приложение Windows Forms часто используется элемент управления «TextBox». Основным свойством текстового поля является поле «Text», определяющее отображаемую надпись. Ниже представлен пример работы с текстовым полем:

private void button1_Click(object sender, EventArgs e)

{

string s=textBox1.Text;    //в строку s переносится содержимое текстового поля.

  float R = Convert.ToSingle(s); //преобразуме строку s в вещественное число типа float.

//Результат преобразования сохраняется в R

  R = R * R;                     //выполняется возведение в квадрат

  textBox2.Text = R.ToString(); //выполняем преобразование числа в текст и результат

//помещаем в    //тесктовое поле textBox2

}

По нажатию кнопки производится возведение в квадрат числа, введенного пользователем в текстовое поле textBox1, и результат помещается в textBox2. На рисунке 1.4 представлен результат выполнения программы.

Рисунок 1.4 – Окно с результатами выполнения программного кода

 

Таким образом, элемент управления текстовое поле может использоваться в программе для ввода и вывода данных.

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

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

              ,                                             (2.1)

где Z – вероятностное значение ущерба в течение года;

P – оценка вероятности реализации атаки;

  L – уровень снижения вероятности реализации атаки за счет использования средств защиты;

  U – оценочное значение ущерба при реализации одной атаки;

  λ – интенсивность потока атак на систему, дни-1.

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

Рисунок 1.5 – Окно интерфейса программы

 

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

Проверить работоспособность программы и составить отчет по работе.

 

Порядок выполнения работы

 

1. Создайте

 

 

3 Лабораторная работа № 3. Изучение классов С++

 

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

 

Теоретическая часть

Класс является абстрактным типом данных, определяемым пользователем, и представляет собой модель реального объекта в виде данных и функций для работы с ними. Данные класса называются полями(по аналогии с полями структуры), а функции класса — методами[3].

Класс описывается следующим образом:

class <имя класса>

{

 private: <внутренние (недоступные) компоненты класса>;

protected: <защищенные компоненты класса>;

public: <общие (доступные) компоненты класса>;

};

Компоненты класса, объявленные в секции private, называются внутренними. Они доступны только компонентным функциям того же класса и функциям. Компоненты класса, объявленные в секции protected, называются защищенными. Они доступны компонентным функциям не только данного класса, но и его потомков.

Компоненты класса, объявленные в секции public, называются общими. Они доступны за пределами класса в любом месте программы.

Пример класса приведен ниже:

public class smallobj

{

private int somedata;

public void setdata(int c)

{

somedata=c;

 

}           

  public void showdata()

{

  Console.WriteLine(“somedata={0}”,somdedata);

}

};

 

В классе объявлена внутренняя переменная somedata, доступ к которой осуществляется только через методы setdata и showdata. Далее приведена реализация данных методов и пример использования:

static void Main(string[] args)

    {

       smallobj s1, s2;

       s1 = new smallobj ();

       s2 = new smallobj ();

       s1.SetData(100);

       s2.SetData(200);

       s1.ShowData();

       s2.ShowData();

 

   }

В программе объявлены две переменные типа smallobj. Доступ к полям и методам класса осуществляется по аналогии обращения к полям структур.

Для инициализации полей при создании объекта используются специальные методы – конструкторы. Имя конструктора совпадает с именем класса и не возвращает параметров. Ниже приведен пример класса с конструктором:

class SmallObjs

{

   private int somedata;

Public SmallObjs( int c)

   {

       somedata = c;

   }

   public void SetData(int c)

   {

       somedata = c;

   }

   public void ShowData()

   {

       Console.WriteLine("Somedata={0}",somedata);

   }

}

Конструктор является общедоступным и позволяет инициализировать поле класса при создании объекта.

 

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

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

К полям класса нет прямого доступа: только через методы.

Класс содержит следующие методы:

- конструктор (устанавливает количество отработанных дней и сумму оплаты одного дня равными нулю);

- методы для установки и получения данных ФИО;

- методы для установки количества отработанных дней и суммы оплаты одного дня;

- метод, возвращающий значение заработной платы  за месяц;

- метод сравнения ФИО (возвращает истину или ложь если переданная строка совпадает с именем объекта).

2. В основной программе объявить массив объектов типа сотрудник.  Программа должна позволить вводить данные сотрудников в цикле, осуществить поиск по ФИО, рассчитать общие затраты организации на заработную плату.

 

Порядок выполнения работы

 

1. Создайте проект c использованием шаблона Visual C#| Widows Forms.

2. Разместите элементы управления для ввода данных как показано на рисунке 3.1.

Рисунок 3.1 - Интерфейс приложения

 

3. Добавьте в проект новый класс, выбрав пункт меню «Проект|Добавить класс» (рисунок 3.2).

Рисунок 3.2 - Выбор шаблона класса

 

4. Введите имя класса «CSotr» и нажмите кнопку «Готово». Сделайте класс CSotr общедоступным, указав модификатор доступа:

public class СSot

{

}

5. Добавьте закрытые поля в класс CSotr:

 class CSotrudnik

 {

   private string family;

   private string name;

   private string otch;

   private float cost_day;

   private float count_days;

      }

6. В класс CSotrudnik добавьте следующие методы в раздел public:

bool SetCountDays(int Count);//установка значения отработанных дней. Возвращает true,

//если значение Count корректно

    bool SetFamily(FIO aFio);//инициализация ФИО сотрудника. Возвращает true,

//если значение aFio корректно

    bool SetDayCost(float fCost);//инициализация значения оплаты одного дня. Возвращает

// true, если значение fCost корректно

  bool IsThiisSotrudnik(FIO aFio);//проверка соответствия aFIO данным

//данного сотрудника

  float GetSumma(void);// получение значения заработной платы сотрудника

  CString GetFamily(void);//запрос фамилии сотрудника

  CString GetName(void);// запрос имени сотрудника

  CString GetOtch(void);// запрос отчества сотрудника

8. Опишите реализацию методов класса CSotrudnik. Ниже приведен пример кода метода bool SetCountDays(int Count):

bool CSotrudnik::SetCountDays(int Count)

{

  if (Count<0)

  return false;

  m_iCountDays=Count;

  return true; }

9. Добавьте в  заголовочный файл класса основного диалогового окна модуль Sotrudnik. h:

// Lr3Dlg.h : файл заголовка

#include "Sotrudnik.h"

#pragma once

// диалоговое окно CLr3Dlg

class CLr3Dlg : public CDialogEx

{

// Создание

public:

10. Добавьте в класс CLr3 Dlg переменные, связанные с элементами управления:

int m_iCount;// количество введенных сотрудников

  CString m_csFamily;//фамилия сотрудника

  CString m_csName;//имя сотрудника

  CString m_csOtch;//отчество сотрудника

  int m_iCountDays;//количество отработанных дней

  float m_fSummaDay;//сумма оплаты одного дня

  float m_AllSumma;//общая сумма

11.  Добавьте в класс CLr3 Dlg массив с элементами типа CSotrudnik:

CSotrudnik m_Sotrudniks[30];

12.  В методе OnInitDialog() класса CLr 3 Dlg выставьте начальные значения переменных и обновите элементы управления методом UpdateData;

13.  Добавьте обработчик события нажатия кнопки «Добавить», который осуществляет инициализацию полей текущего элемента массива Sotrudniks с проверкой на корректность введенных данных. Ниже приведен образец проверки корректности введенной суммы оплаты:

if (!m_Sotrudniks[m_iCount].SetDayCost(m_fSummaDay))

  {

        AfxMessageBox(L"Не корректные данные о стоимости одного дня");

        return; }

14.  Добавьте обработчик события нажатия кнопки «Подсчет общей суммы», который рассчитывает общую сумму денег для выплаты заработной платы сотрудников. Для этого нужно вызвать метод GetSumma(void) каждого объекта.

15. Создайте новое диалоговое окно для отображения результатов поиска сотрудника. Для этого перейдите в «Окно ресурсов», выберите вкладку «Dialog». Затем вызовите контекстное меню нажатием правой кнопки мыши и выберите пункт «Вставить диалог».

Рисунок 3.4 - Добавление нового диалогового окна

 

16. Измените идентификатор диалогового окна, например, на IDD_DIALOG_RESULT_FIND. Разместите на данном окне элементы управления для отображения фамилии, имени, отчества и его заработной платы сотрудника. Примерный вид размещения элементов управления представлено на рисунке 3.5.

Рисунок 3.5 - Пример размещения элементов управления на диалоговом окне

 

17. Создайте класс данного диалогового окна. Для этого выделите диалоговое окно и вызовите контекстное меню. Выберите в контекстном меню пункт «Добавить класс». Введите имя класса и нажмите «Готово».

Рисунок 3.6 - Создание класса диалогового окна

 

18. Добавьте в созданный класс переменные, связанные с элементами управления:

class CDialogResultFind : public CDialogEx

{

  DECLARE_DYNAMIC(CDialogResultFind)

public:

  CDialogResultFind(CWnd* pParent = NULL); // стандартный конструктор

  virtual ~CDialogResultFind();

// Данные диалогового окна

  enum { IDD = IDD_DIALOG_RESULT_FIND };

protected:

  virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV

  DECLARE_MESSAGE_MAP()

public:

  CString m_Family;

  CString m_Name;

  CString m_Otch;

  float m_Salary;

};

19.  Добавьте обработчик события нажатия кнопки «Поиск по ФИО» основного диалогового окна, который  осуществляет поиск сотрудника по фамилии, имени и отчеству. Для этого нужно вызвать метод IsThiisSotrudnik ( FIO aFio ) каждого объекта. Информацию о найденном сотруднике вывести в новом диалоговом окне. Пример части кода, который осуществляет вывод данных, представлено ниже:

CDialogResultFind dlg;

  dlg.m_Family=m_Sotrudniks[i].GetFamily();

  dlg.m_Name=m_Sotrudniks[i].GetName();

  dlg.m_Otch=m_Sotrudniks[i].GetOtch();

  dlg.m_Salary=m_Sotrudniks[i].GetSumma();

dlg.DoModal();

20. Проверьте работу программы. Составьте отчет по работе и ответьте на контрольные вопросы.

 

Контрольные вопросы

 

1. Дайте определение класса.

2. Дайте определение объекта.

3. Что называется методом?

4. Что обозначает ключевое слово private?

 


Дата добавления: 2019-09-13; просмотров: 1124; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!