Структура иерархии классов "Экран курсового проектирования"

Содержание

	

	Введение

		1. Анализ технического задания

		2. Проектирование структуры классов

		3. Программная реализация

		4. Тестирование

		5. Руководство по программному продукт

		Заключение

		Список литературы

	Приложения




Введение



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

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

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

Объектно-ориентированный подход включает в себя такие понятия:

Абстракция — это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня. Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации. В каждом конкретном случае применяется тот или иной подход: инкапсуляция, полиморфизм или наследование. 

Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых свойств и методов класса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.Сокрытие данных — неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.

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

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

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

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

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

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

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

Анализ технического задания



В настоящем курсовом проекте необходимо разработать структуру иерархии классов «Экран курсового проектирования». На основе этой структуры необходимо создать приложение для тестирования иерархии.

Для реализации поставленных задач необходимо:

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

Разработать и описать структуру каждого класса в отдельности, объявить поля и методы класса;

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

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

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

Данное приложение было реализовано на мощном и гибком объектно-ориентированном языке программирования С++(Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Лидер, 2010. – 461с., Иванова Г.С, Ничушкина Т.Н., Пугачев Е.К. И21 Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. – 320 с.). Язык С++ предоставляет все средства для реализации базового и производных классов, а также оптимально использует системные ресурсы, что позволяет сделать приложение не только универсальным, но и не очень требовательным к ресурсам компьютера. Также язык С++ поддерживает платформу .NETFramework, что позволяет использовать приложение на различных персональных и переносных компьютерах, на которых установлена эта платформа.

	По сравнению с другими объектно-ориентированными языками С++ обладает несколькими особенностями:

			Полная поддержка принципов инкапсуляции, наследования и полиморфизма; 

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

					Согласованный и четко определенный набор базовых типов;

					Возможность переопределения пользователем стандартных типов языка и операторов;

					Автоматическая очистка динамически распределяемой памяти;

					Полная поддержка библиотеки базовых классов .NET Framework наряду с легким доступом к Windows API;

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

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

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

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

	К числу подобных метрик относится:

	Гибкость, которая аккумулирует ряд свойств:

Модульность;

Изменяемость;

Сопровождаемость;

Адаптивность, которая подразумевает:

	Настраиваемость; 

Переносимость;

	Способность к взаимодействию;

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

	Исправления программного обеспечения может быть инициировано по следующим причинам:

	исправление программы с недостаточным уровнем качества;

	изменение программы для повышения уровня качества;

	изменение программы для удовлетворения изменения в требованиях.

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

Исходя из всего этого, ставятся основные требования к приложению:

		Удобный пользовательский интерфейс;

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

					Надежность программы.

Данное приложение было реализовано в среде MicrosoftVisualStudio 2010(http://www.microsoft.com/visualstudio/ru-ru/, Пахомов Б. И. С/С++ и MSVisualC++ 2008 для начинающих. – СПб.: БХВ-Петербург. 2009. – 624с.). Выбор обусловлен тем, что данная среда максимально совместима с операционной системой MicrosoftWindows7(http://windows.microsoft.com/ru-RU/windows7/products/home). Также данная среда поддерживает все версии .NETFramework(http://msdn.microsoft.com/ru-ru/netframework/default), что позволяет создавать приложения для различных платформ. MicrosoftVisualStudio 2010 включает в себя новые функции, позволяющие полностью контролировать и упрощать все этапы разработки приложения, выполнять его отладку и тестирование. Также данная среда разработки позволяет использовать визуальный конструктор, что очень важно для написания приложения. Это позволяет более быстро и качественно создать удобный пользовательский интерфейс.

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

32-разрядный (x86) или 64-разрядный (x64) процессор с тактовой частотой 1 гигагерц (ГГц) или выше;

1 гигабайт (ГБ) (для 32-разрядной системы) или 2 ГБ (для 64-разрядной системы) оперативной памяти (ОЗУ);

16 гигабайт (ГБ) (для 32-разрядной системы) или 20 ГБ (для 64-разрядной системы) пространства на жестком диске;

графическое устройство DirectX 9 с драйвером WDDM версии 1.0 или выше.



2. Проектирование структуры классов



При рассмотрении исходных данных создается структура иерархии классов «Экран курсового проектирования». Для максимального соответствия заданию, создается три класса:

TObject (абстрактный базовый класс);

TScreen (класс, содержащий информацию об экране курсового проектирования);

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

Иерархия классов показана на рисунке 1.

Абстрактный базовый класс TObject содержит поле TName(имя), которое наследуется в классы TStudent и TScreen. Это поле служит для задания имени курсовому проекту и имени студента. В конструкторе класса TObject этому полю присваивается значение «Default». Это поле наследуется с атрибутом Public. Также класс TObject содержит виртуальную функцию SetName(), которая переопределяется в классах TStudent и TScreen. Она служит для присвоения значения полю TName заданного имени. В качестве атрибута ей передается устанавливаемое имя.

Класс TScreenсодержит поля и методы, относящиеся к заголовку экрана курсового проекитрования. Информация о группе студентов, выполняющих курсовые работы хранится в поле TName, которое наследуется от базового класса TObject; информация о дате утверждения экрана курсового проектирования хранится в поле Date; информация о составе приемной комиссии – в поле Composition. В этом классе переопределяется функция присвоения имени полю TNameSetName(). Данный класс содержит две собственные функции:

SetDate(присваивает полю Date дату утверждения экрана курсового проектирования);

SetComposition(присваивает полю Composition информацию о составе приемной комиссии).

В качестве атрибутов этим функциям передается необходимая информация.

В классе TStudent содержится информация о студенте, выполняющем курсовую работу, точнее о ходе ее выполнения. Также как класс TScreen класс TStudent имеет наследуемое поле TName от класса TObject. Этому полю присваивается значение функцией SetName, которая переопределяется в этом же классе. Помимо этого наследуемого поля, класс содержит собственные поля:

ControlScore(контрольная оценка за курсовой проект);

NumberWeek(номер контрольной недели);

*Plan(указатель на массив с плановыми процентами выполнения курсовых работ);

*Fact(указатель на массив с фактическими процентами выполнения курсовых работ);

*Control(указатель на массив с оценками за контрольные недели);

Test(плановая дата сдачи завершенного курсового проекта на проверку);

TestF(фактическая дата сдачи завершенного курсового проекта на проверку);

Revision(плановая дата выдачи завершенного курсового проекта на доработку);

RevisionF(фактическая дата выдачи завершенного курсового проекта на доработку);

Protection(плановая дата защиты курсового проекта);

ProtectionF(фактическая дата защиты курсового проекта);

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

SetNumberWeek();

SetPlan();

SetFact();

SetControl();

SetTest();

SetTestF();

SetRevision();

SetRevisionF();

SetProtection();

SetProtectionF();

SetControlScore();

Реализация иерархии классов «Экран курсового проектирования» предложен в Приложении А.



TObject (абстрактный базовый класс)

Методы

TScreen:Public TObject

(класс)



SetName()



Методы



Поля



Date

Composition



SetName

SetDate

SetComposition



TStudent:Public TObject(класс)

Методы



TName

ControlScore

NuberWeek

*Plan

*Fact

*Control

TestF

RevisionF

ProtectionF

SetName()

SetNumberWeek()

SetPlan()

SetFact()

SetControl()

SetTest()

SetTestF()

SetRevisionF()

SetProtection()

SetProtectionF()

SetControlScore







Поля



Поля



TName



























































	Рисунок 1 - Иерархия классов «Экран курсового проектирования»

Алгоритм работы программы на основе иерархии классов следующий:

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

Создается экземпляр класса TScreen, в который с помощью методов заносится введенная пользователем информация;

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

Далее программа ожидает действия пользователя:

При добавлении записи происходит создание экземпляра класса TStudent. Пользователь вводит информацию о студенте, с помощью методов экземпляра класса происходит присвоение значений полям класса. Затем происходит копирование полей в визуальный компонент для отображения введенной информации;

При удалении выбирается нужная запись, программа запрашивает разрешение на удаление и в случае успешного подтверждения удаляет запись, информируя об этом пользователя;

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

При поиске программа запрашивает у пользователя информацию на поиск и в случае успешного поиска информирует его об этом. В случае, если пользователь не удовлетворен результатом, можно продолжить поиск;

Изменение листа подразумевает в себе редактирование полей экземпляра класса TScreen. Пользователь задает новые поля с помощью методов, происходит обновление экземпляра класса TScreen;

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

Выход из программы с вызовом деструкторов в экземплярах классов TScreen и TStudent, и удаление самих экземпляров.



Программная реализация



Для реализации визуальных компонентов было создано 4 формы:

Главное окно, в котором отображается вводимая информация, а также осуществляется вызов окон для добавления, редактирования и поиска;

Стартовое окно, которое запрашивает у пользователя информацию о названии экрана курсового проектирования, дате утверждения экрана и состава приемной комиссии;

Окно добавления/редактирования позволяет добавлять/редактировать записи.

Окно поиска служит для приема искомой информации.

Большую часть главного окна занимает визуальный компонент dataGridView, который служит таблицей для отображения введенных записей. В данном случае он очень удобен, т.к. отвечает всем требованиям для хранения и отображения записей о студентах. Заполнение таблицы происходит с помощью кнопки «Добавить», которая расположена внизу окна. При нажатии на нее происходит вызов окна добавления, которое содержит текстовые поля(textbox) для ввода информации. Пользователь вводит необходимую информацию, затем необходимо нажать на кнопку «Проверка». Так как поля класса TStudent имеют различные типы данных, то необходимо провести соответствие введенных полей этим типам. В случае успешной проверки появляется кнопка добавить, с помощью которой введенные записи присваиваются полям класса. В случае ошибки ввода пользователь будет выведена ошибка о несоответствии типов, либо пользователь пропустил ввод некоторого поля.

Рассмотрим процедуру добавления записи в dataGridView:

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {

…

Form2 ^newdlg=gcnewForm2();//вызов форма добавления записи

…

if(dialres==System::Windows::Forms::DialogResult::OK){//проверкаусловиянанажатиеклавиши «ОК» вформедобавления

Student->SetName(newdlg->textBox1->Text);//присвоение значений полям класса значений из формы добавления

…

dataGridView1->Rows->Add(Student->TName,…);//добавлениеполейзаписивтаблицуdataGridView1

return;//возврат в главную программу

 }

 }

Полная реализация данной процедуры представлена в приложении В.

Процедура удаления доступна при выполнении двух условий:

В таблице есть хотя бы одна запись;

Если значение визуального компонента checkBox->Checked равно True (стоит галочка); 

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

Процедураудаленияприведенаниже:

private: System::Voidbutton6_Click(System::Object^ sender, System::EventArgs^ e) {

…

dialres=MessageBox::Show("Выточнохотитеудалитьзапись?","Удалить?",MessageBoxButtons::OKCancel,MessageBoxIcon::Warning);//вывод предупреждения 

if(dialres==System::Windows::Forms::DialogResult::OK){//проверкаусловиянаудаление

 if(this->dataGridView1->SelectedRows->Count > 0 &&

 this->dataGridView1->SelectedRows[0]->Index !=

this->dataGridView1->Rows->Count){// проверкананаличиестрокивыделенияудаляемойстроки

this->dataGridView1->Rows->RemoveAt(this->dataGridView1->SelectedRows[0]->Index);//удалениевыделеннойстроки

CountDataGrid--;//уменьшение количества записей в таблице

…

}

 }

 }

Полная реализация данной процедуры представлена в приложении В.

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

Рассмотримфункциюредактирования:

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

…

 dl=MessageBox::Show("Редактироватьзапись?","Изменить?",MessageBoxButtons::OKCancel,MessageBoxIcon::Question);//выводпредупрежденияобизменениизаписи

 if(dl==System::Windows::Forms::DialogResult::OK){//проверкаподтверждения

 if(this->dataGridView1->SelectedRows->Count > 0 &&

 this->dataGridView1->SelectedRows[0]->Index !=

this->dataGridView1->Rows->Count){// проверкананаличиестрокивыделенияудаляемойстроки

…

Form2 ^newdlg=gcnewForm2();//инициализация формы редактирования

newdlg->textBox1->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[0]->Value);//передачавформуредактированияполейтаблицы

…

dialres=newdlg->ShowDialog();//вызовформыредактирования и редактирование полей записи

if(dialres==System::Windows::Forms::DialogResult::OK){//подтверждениедобавления измененныхполей

this->dataGridView1->SelectedRows[0]->Cells[0]->Value=newdlg->textBox1->Text;//возврат отредактированных полей обратно в таблицу

…

 }

 }

 }

Полная реализация данной процедуры представлена в приложении В.

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

Запросискомойинформации:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

 if(textBox1->Text!=""){//проверка наличия информации для поиска

this->DialogResult=System::Windows::Forms::DialogResult::OK;//подтверждениепоска

this->Close();//закрытие окна поиска и переход в главную программу

}

…

 }

Полная реализация данной процедуры представлена в приложении В.

Поискинформациивтаблице:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

…

…

 dialres=newdlg->ShowDialog();//вызовформыпоиска

…

System::String ^srh;//объявление строки поиска

srh=newdlg->textBox1->Text;//присвоение значения строке поиска

…

 for(int i=0; i<CountDataGrid; i++){//циклповсемстрокамтаблицы

 for(int j=0; j<dataGridView1->ColumnCount; j++){//циклповсемстолбцамтаблицы

 if(System::Convert::ToString(dataGridView1->Rows[i]->Cells[j]->Value)==srh){//проверканасоответствиезапросаполямтаблицы

 dataGridView1->CurrentCell=dataGridView1->Rows[i]->Cells[j];//выделениенайденногополя

			…

 }

 }

…

}

 }

 }

Полная реализация данной процедуры представлена в приложении В.

Функция изменения названия экрана курсового проектирования:

private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e) {

…

Start ^newdlg=gcnewStart();//инициализацияформыстартового окна

dialres=newdlg->ShowDialog();//вызов стартового окна

…

Screen.SetName(newdlg->textBox1->Text);//присвоениеполямклассаTScreenзначенийполейформы

…

listBox2->Items->Add(Screen.Composition);//передачаполейклассаTScreenвlistBox1 главнойформы

…

}



 }

Полная реализация данной процедуры представлена в приложении В.


4 Тестирование



Конечным этапом создания программного продукта является его тестирование и отладка. В ходе тестирования программы выявляются все ее недостатки и особенности работы. Обнаруженные недостатки устраняются в ходе отладки.

В результате было создано тестирующее приложение(рисунок 2), в котором реализована структура иерархии классов, а также различные функции. А именно:

Создание экземпляров классов;

Добавление, удаление, редактирование и поиск данных;

Работа с экземплярами классов через визуальные компоненты.





Рисунок 2 – Тестирующее приложение. Главное окно.





Рисунок 3 – Тестирующее приложение. Добавление/редактирование.

иерархия класс программирование






Рисунок 4 – Тестирующее приложение. Окно поиска.

	

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

Листинг тестирующего приложения предложен в Приложении В.

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

	ТипЦП DualCore AMD Athlon 64 X2, 2700 MHz (13.5 x 200) 5200+;

	Системная память 4096 МБ (DDR2-800 DDR2 SDRAM);

ОС Windows 7 x64 с поддержкой 32-х приложений.



5. Руководство по программному продукту



Руководство программиста:

Созданное приложение «Экран курсового проектирования», основанное на иерархии классов, имеет открытый исходный код, что позволяет изменять его в зависимости от потребностей пользователя. Объявление экземпляров класса TScreenи TStudentпроисходит в заголовочном файле главного окна Form1.h:

public: 

TStudent ^Student;//объявление указателя на экземпляр класса TStudent

TScreenScreen;//объявление экземпляра класса TScreen

Причем экземпляр класса TStudentинициализируется в конструкторе главной формы:

Form1(void)

{

…

Student=gcnew TStudent;//инициализацияэкземпляраклассаTStudent

…

}

Оба этих экземпляра объявляются глобально и с атрибутом доступа Public, что позволяет получить к ним доступ из любой части главной формы и других форм. Поля и методы этих классов также имеют атрибут доступа Public и имеют стандартные типы данных платформы .NETFramework. Все входные данные в программу имеют текстовый формат, а именно System::String^. В зависимости от полей и методов класса они конвертируются с помощью стандартного конвертора в нужный тип данных:

Student->SetControlScore(System::Convert::ToInt16(newdlg->textBox17->Text));//пример использования конвертора типа данных

Руководство системного администратора:

Данное приложение использует структуру иерархии классов «Экран курсового проектирования». Объявление полей и методов абстрактного базового класса TObject находится в файле TObject.h, а их описание в файле TObject.cpp. Объявление полей и методов класса TScreen находится в файле TScreen.h, а их описание в файле TScreen.cpp. Объявление полей и методов класса TStudent находится в файле TStudent.h, а их описание в файле TStudent.cpp. Описание главного окна приложения находится в файле Form1.h; описание окна добавления/изменения информации об экране курсового проектирования находится в файле Start.h; описания окна добавления/изменения записи о студенте находится в файле Form2.h; описание окна поиска находится в файле Search.h.

Приложение «Экран курсового проектирования» было разработано в интегрированной среде программирования MicrosoftVisualStudio 2010. Приложение использует платформу .NETFramework 4, которая присутствует в операционной системе MicrosoftWindows 7. 

Руководство пользователя:

Для выполнения приложения «Экран курсового проектирования» необходимы следующие минимальные системные требования:

Pentium III 1.5 ГГц;

GeForceFX 5200 или ATI Radeon 9550-9600 с 128 MB, поддержка шейдеров 2.0;

512 МбОЗУ;

Windows® XP/Vista/7, Windows2000, DirectX 9.0c;

.NET Framework версии 4.0;

Место на жестком диске: 4 GB;

Монитор с поддержкой разрешения 800x600;

Клавиатура, мышь.

Данное приложение запускается из файла WindowsFormApplication C++.exe. При выполнении системных требований появится окно добавления информации о текущем экране курсового проектирования. После ввода доступно главное окно, в котором отражается полная информация об экране курсового проектирования и о студентах, выполняющих курсовые работы. В этом режиме программа ожидает действия от пользователя. При первом запуске доступны только команды «Добавить» и «Выход», а также справка о программе.

Для добавления записи необходимо нажать кнопку «Добавить», после чего появится форма добавления. Затем нужно заполнить все поля и нажать кнопку «Ок». Если не заполнены все поля, то программа выдаст сообщение об ошибке и предложит заполнить все поля. Также при неправильном соответствии форматов полей программа проинформирует пользователя. При желании возможно отказаться от добавления и нажать кнопку «Отмена». После добавления запись автоматически отображается в таблице.

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

Для редактирования записи необходимо поставить галочку на «Разрешить редактирование таблицы». Редактирование записи , как и удаление, доступно лишь при наличии записей в таблице. Для редактирования записи необходимо выделить строку, нажав на треугольник рядом с именем записи. При подтверждении выбранного действия открывается окно редактирования записи. Необходимо отредактировать нужные поля и подтвердить свои действия.

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

Для вызова справочной системы необходимо выбрать на панели команд меню «Help», а затем «Helpfile».




Заключение



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




Список литературы



Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Лидер, 2010. – 461с.

Пахомов Б. И. С/С++ и MSVisualC++ 2008 для начинающих. – СПб.: БХВ-Петербург. 2009. – 624с.

	Иванова Г.С, Ничушкина Т.Н., Пугачев Е.К. И21 Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. – 320 с.

	Пауэрс Л. MicrosoftVisualStudio 2008 / Л. Пауэрс, М. Снелл: Пер. с англ. – СПб.: БХВ-Петербург, 2009. – 1200 с.








Приложения





Приложение А

Реализация иерархии классов

ФайлTObject.h

#pragma once

public ref class TObject abstract

{

public:

System::String ^TName;

virtual void SetName(System::String ^) abstract;

TObject(void);

};



Файл TObject.cpp

#include "StdAfx.h"

#include "TObject.h"





TObject::TObject(void)

{

TName="Default";

}

Файл TStudent.h

#pragma once

#include "TObject.h"

using namespace System;



ref class TStudent :

public TObject

{

public:



System::Int16 ControlScore;

System::Int16 NumberWeek;

System::Int16 *Plan;

System::Int16 *Fact;

System::Int16 *Control



System::String ^Test;

System::String ^TestF;

System::String ^Revision;

System::String ^RevisionF;

System::String ^Protection;

System::String ^ProtectionF;



virtual void SetName(System::String ^) override;

void SetNumberWeek(System::Int16 );

void SetPlan(System::Int16 , System::Int16);

void SetFact(System::Int16, System::Int16);

void SetControl(System::Int16, System::Int16);



void SetTest(System::String ^ );

void SetTestF(System::String ^ );

void SetRevision(System::String ^ );

void SetRevisionF(System::String ^ );

void SetProtection(System::String ^ );

void SetProtectionF(System::String ^ );



void SetControlScore(System::Int16 );



TStudent(void);

};

Файл TStudent.cpp

#include "StdAfx.h"

#include "TStudent.h"





void TStudent::SetName(String ^name){

TName=name;

}



void TStudent::SetNumberWeek(System::Int16 num){

NumberWeek=num;

}



void TStudent::SetPlan(System::Int16 num1, System::Int16 num2){

Plan[num2]=num1;

}



void TStudent::SetFact(System::Int16 num1, System::Int16 num2){

Fact[num2]=num1;

}



void TStudent::SetControl(System::Int16 num1, System::Int16 num2){

Control[num2]=num1;

}



void TStudent::SetTest(String ^ num){

Test=num;

}



void TStudent::SetTestF(String ^ num){

TestF=num;

}



void TStudent::SetRevision(String ^ num){

Revision=num;

}



void TStudent::SetRevisionF(String ^ num){

RevisionF=num;

}



void TStudent::SetProtection(String ^ num){

Protection=num;

}



void TStudent::SetProtectionF(String ^ num){

ProtectionF=num;

}



void TStudent::SetControlScore(System::Int16 score){

ControlScore=score;

}



TStudent::TStudent(void)

{

Plan=new System::Int16[3];

Fact=new System::Int16[3];

Control=new System::Int16[3];

}



Файл TScreen.h

#pragma once

#include "TObject.h"

#include "TStudent.h"



using namespace System;



using namespace System::Collections::Generic;



ref class TScreen :

public TObject

{

public:

System::String ^ Date;

System::String ^ Composition;



virtual void SetName(System::String ^) override;

void SetDate(System::String ^);

void SetComposition(System::String ^);



public:

TScreen(void);

};

Файл TScreen.cpp

#include "StdAfx.h"

#include "TScreen.h"





void TScreen::SetName(System::String ^s){

TName=s;

}



void TScreen::SetComposition(System::String ^s){

Composition=s;

}



void TScreen::SetDate(System::String ^s){

Date=s;

}





TScreen::TScreen(void)

{



}


Приложение В



Листинг тестирующего приложения

Файл Form1.h. Главное окно.

#pragma once



#include "Form2.h"

#include "TScreen.h"

#include "Start.h"

#include "Search.h"



namespace WindowsFormApplicationC {



using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

using namespace System::Collections::Generic;



public ref class Form1 : public System::Windows::Forms::Form

{

public:

private: System::Windows::Forms::MenuStrip^ menuStrip1;

private: System::Windows::Forms::ToolStripMenuItem^ fileToolStripMenuItem;

private: System::Windows::Forms::ToolStripMenuItem^ exitToolStripMenuItem;

private: System::Windows::Forms::ToolStripMenuItem^ helpToolStripMenuItem;

private: System::Windows::Forms::ToolStripMenuItem^ aboutToolStripMenuItem;

private: System::Windows::Forms::Button^ button4;

private: System::Windows::Forms::Button^ button5;



public: 

TStudent ^Student;

TScreen Screen;

System::Int16 CountDataGrid;



private: System::Windows::Forms::Button^ button6;

private: System::Windows::Forms::Button^ button7;

private: System::Windows::Forms::Button^ button1;

private: System::Windows::Forms::Button^ button2;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column1;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column2;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column3;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column4;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column5;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column6;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column7;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column8;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column9;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column10;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column11;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column12;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column13;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column14;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column15;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column16;

private: System::Windows::Forms::DataGridViewTextBoxColumn^ Column17;

private: System::Windows::Forms::ToolStripMenuItem^ aboutToolStripMenuItem1;

private: System::Windows::Forms::ListBox^ listBox1;

private: System::Windows::Forms::ListBox^ listBox2;

private: System::Windows::Forms::CheckBox^ checkBox1;



public: 

Form1(void)

{

InitializeComponent();

Student=gcnew TStudent;

CountDataGrid=0;

}

protected:



~Form1()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::DataGridView^ dataGridView1;

protected: 

private:

System::ComponentModel::Container ^components;



#pragma region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

void InitializeComponent(void)

{

System::Windows::Forms::DataGridViewCellStyle^ dataGridViewCellStyle2 = (gcnew System::Windows::Forms::DataGridViewCellStyle());

this->dataGridView1 = (gcnew System::Windows::Forms::DataGridView());

this->Column1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column2 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column3 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column4 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column5 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column6 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column7 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column8 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column9 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column10 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column11 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column12 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column13 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column14 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column15 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column16 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->Column17 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());

this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());

this->fileToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->exitToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->helpToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->aboutToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->aboutToolStripMenuItem1 = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->button4 = (gcnew System::Windows::Forms::Button());

this->button5 = (gcnew System::Windows::Forms::Button());

this->button6 = (gcnew System::Windows::Forms::Button());

this->button7 = (gcnew System::Windows::Forms::Button());

this->button1 = (gcnew System::Windows::Forms::Button());

this->button2 = (gcnew System::Windows::Forms::Button());

this->listBox1 = (gcnew System::Windows::Forms::ListBox());

this->listBox2 = (gcnew System::Windows::Forms::ListBox());

this->checkBox1 = (gcnew System::Windows::Forms::CheckBox());

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataGridView1))->BeginInit();

this->menuStrip1->SuspendLayout();

this->SuspendLayout();

// 

// dataGridView1

// 

this->dataGridView1->AccessibleRole = System::Windows::Forms::AccessibleRole::Graphic;

this->dataGridView1->AllowUserToAddRows = false;

this->dataGridView1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) 

| System::Windows::Forms::AnchorStyles::Left) 

| System::Windows::Forms::AnchorStyles::Right));

this->dataGridView1->BackgroundColor = System::Drawing::Color::White;

this->dataGridView1->BorderStyle = System::Windows::Forms::BorderStyle::Fixed3D;

this->dataGridView1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;

this->dataGridView1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(17) {this->Column1, 

this->Column2, this->Column3, this->Column4, this->Column5, this->Column6, this->Column7, this->Column8, this->Column9, this->Column10, 

this->Column11, this->Column12, this->Column13, this->Column14, this->Column15, this->Column16, this->Column17});

dataGridViewCellStyle2->Alignment = System::Windows::Forms::DataGridViewContentAlignment::MiddleLeft;

dataGridViewCellStyle2->BackColor = System::Drawing::SystemColors::Window;

dataGridViewCellStyle2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Regular, 

System::Drawing::GraphicsUnit::Point, static_cast<System::Byte>(204)));

dataGridViewCellStyle2->ForeColor = System::Drawing::SystemColors::ControlText;

dataGridViewCellStyle2->SelectionBackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(128)), 

static_cast<System::Int32>(static_cast<System::Byte>(128)), static_cast<System::Int32>(static_cast<System::Byte>(255)));

dataGridViewCellStyle2->SelectionForeColor = System::Drawing::SystemColors::HighlightText;

dataGridViewCellStyle2->WrapMode = System::Windows::Forms::DataGridViewTriState::False;

this->dataGridView1->DefaultCellStyle = dataGridViewCellStyle2;

this->dataGridView1->GridColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(224)), static_cast<System::Int32>(static_cast<System::Byte>(224)), 

static_cast<System::Int32>(static_cast<System::Byte>(224)));

this->dataGridView1->Location = System::Drawing::Point(0, 63);

this->dataGridView1->Name = L"dataGridView1";

this->dataGridView1->RowHeadersVisible = false;

this->dataGridView1->Size = System::Drawing::Size(944, 537);

this->dataGridView1->TabIndex = 0;

// 

// Column1

// 

this->Column1->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column1->Frozen = true;

this->Column1->HeaderText = L"ФИОстудента";

this->Column1->Name = L"Column1";

this->Column1->ReadOnly = true;

this->Column1->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column1->Width = 200;

// 

// Column2

// 

this->Column2->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column2->HeaderText = L"1к.н. задан. % вып.";

this->Column2->Name = L"Column2";

this->Column2->ReadOnly = true;

this->Column2->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column2->Width = 70;

// 

// Column3

// 

this->Column3->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column3->HeaderText = L"1к.н. факт. % вып.";

this->Column3->Name = L"Column3";

this->Column3->ReadOnly = true;

this->Column3->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column3->Width = 70;

// 

// Column4

// 

this->Column4->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column4->HeaderText = L"1к.н. контр. оценка";

this->Column4->Name = L"Column4";

this->Column4->ReadOnly = true;

this->Column4->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column4->Width = 70;

// 

// Column5

// 

this->Column5->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column5->HeaderText = L"2к.н. задан. % вып.";

this->Column5->Name = L"Column5";

this->Column5->ReadOnly = true;

this->Column5->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column5->Width = 70;

// 

// Column6

// 

this->Column6->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column6->HeaderText = L"2к.н. факт. % вып.";

this->Column6->Name = L"Column6";

this->Column6->ReadOnly = true;

this->Column6->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column6->Width = 70;

// 

// Column7

// 

this->Column7->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column7->HeaderText = L"2к.н. контр. оценка";

this->Column7->Name = L"Column7";

this->Column7->ReadOnly = true;

this->Column7->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column7->Width = 70;

// 

// Column8

// 

this->Column8->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column8->HeaderText = L"3к.н. задан. % вып.";

this->Column8->Name = L"Column8";

this->Column8->ReadOnly = true;

this->Column8->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column8->Width = 70;

// 

// Column9

// 

this->Column9->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column9->HeaderText = L"3к.н. факт. % вып.";

this->Column9->Name = L"Column9";

this->Column9->ReadOnly = true;

this->Column9->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column9->Width = 70;

// 

// Column10

// 

this->Column10->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column10->HeaderText = L"3к.н. контр. оценка";

this->Column10->Name = L"Column10";

this->Column10->ReadOnly = true;

this->Column10->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column10->Width = 70;

// 

// Column11

// 

this->Column11->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column11->HeaderText = L"Дата сдачи заверш. проекта (работы) на проверку План";

this->Column11->Name = L"Column11";

this->Column11->ReadOnly = true;

this->Column11->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column11->Width = 120;

// 

// Column12

// 

this->Column12->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column12->HeaderText = L"Дата сдачи заверш. проекта (работы) на проверку Факт.";

this->Column12->Name = L"Column12";

this->Column12->ReadOnly = true;

this->Column12->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column12->Width = 120;

// 

// Column13

// 

this->Column13->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column13->HeaderText = L"Дата выдачи проекта (работы) препод. на доработку План";

this->Column13->Name = L"Column13";

this->Column13->ReadOnly = true;

this->Column13->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column13->Width = 120;

// 

// Column14

// 

this->Column14->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column14->HeaderText = L"Дата выдачи проекта (работы) препод. на доработку Факт.";

this->Column14->Name = L"Column14";

this->Column14->ReadOnly = true;

this->Column14->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column14->Width = 120;

// 

// Column15

// 

this->Column15->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column15->HeaderText = L"ДатазащитыПлан";

this->Column15->Name = L"Column15";

this->Column15->ReadOnly = true;

this->Column15->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column15->Width = 120;

// 

// Column16

// 

this->Column16->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column16->HeaderText = L"ДатазащитыФакт.";

this->Column16->Name = L"Column16";

this->Column16->ReadOnly = true;

this->Column16->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column16->Width = 120;

// 

// Column17

// 

this->Column17->AutoSizeMode = System::Windows::Forms::DataGridViewAutoSizeColumnMode::None;

this->Column17->FillWeight = 30;

this->Column17->HeaderText = L"Оценказаработу";

this->Column17->Name = L"Column17";

this->Column17->ReadOnly = true;

this->Column17->Resizable = System::Windows::Forms::DataGridViewTriState::False;

this->Column17->Width = 75;

// 

// menuStrip1

// 

this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->fileToolStripMenuItem, 

this->helpToolStripMenuItem});

this->menuStrip1->Location = System::Drawing::Point(0, 0);

this->menuStrip1->Name = L"menuStrip1";

this->menuStrip1->Size = System::Drawing::Size(944, 24);

this->menuStrip1->TabIndex = 8;

this->menuStrip1->Text = L"menuStrip1";

// 

// fileToolStripMenuItem

// 

this->fileToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) {this->exitToolStripMenuItem});

this->fileToolStripMenuItem->Name = L"fileToolStripMenuItem";

this->fileToolStripMenuItem->Size = System::Drawing::Size(37, 20);

this->fileToolStripMenuItem->Text = L"File";

// 

// exitToolStripMenuItem

// 

this->exitToolStripMenuItem->Name = L"exitToolStripMenuItem";

this->exitToolStripMenuItem->Size = System::Drawing::Size(92, 22);

this->exitToolStripMenuItem->Text = L"Exit";

this->exitToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::button5_Click);

// 

// helpToolStripMenuItem

// 

this->helpToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->aboutToolStripMenuItem, 

this->aboutToolStripMenuItem1});

this->helpToolStripMenuItem->Name = L"helpToolStripMenuItem";

this->helpToolStripMenuItem->Size = System::Drawing::Size(44, 20);

this->helpToolStripMenuItem->Text = L"Help";

// 

// aboutToolStripMenuItem

// 

this->aboutToolStripMenuItem->Name = L"aboutToolStripMenuItem";

this->aboutToolStripMenuItem->Size = System::Drawing::Size(152, 22);

this->aboutToolStripMenuItem->Text = L"Help file";

this->aboutToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::aboutToolStripMenuItem_Click);

// 

// aboutToolStripMenuItem1

// 

this->aboutToolStripMenuItem1->Name = L"aboutToolStripMenuItem1";

this->aboutToolStripMenuItem1->Size = System::Drawing::Size(152, 22);

this->aboutToolStripMenuItem1->Text = L"About";

this->aboutToolStripMenuItem1->Click += gcnew System::EventHandler(this, &Form1::aboutToolStripMenuItem1_Click);

// 

// button4

// 

this->button4->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left));

this->button4->Location = System::Drawing::Point(12, 727);

this->button4->Name = L"button4";

this->button4->Size = System::Drawing::Size(106, 23);

this->button4->TabIndex = 9;

this->button4->Text = L"Добавитьзапись";

this->button4->UseVisualStyleBackColor = true;

this->button4->Click += gcnew System::EventHandler(this, &Form1::button4_Click);

// 

// button5

// 

this->button5->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right));

this->button5->Location = System::Drawing::Point(860, 706);

this->button5->Name = L"button5";

this->button5->Size = System::Drawing::Size(72, 44);

this->button5->TabIndex = 10;

this->button5->Text = L"Выход";

this->button5->UseVisualStyleBackColor = true;

this->button5->Click += gcnew System::EventHandler(this, &Form1::button5_Click);

// 

// button6

// 

this->button6->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right));

this->button6->Enabled = false;

this->button6->Location = System::Drawing::Point(806, 664);

this->button6->Name = L"button6";

this->button6->Size = System::Drawing::Size(126, 23);

this->button6->TabIndex = 12;

this->button6->Text = L"Удалитьзапись";

this->button6->UseVisualStyleBackColor = true;

this->button6->Click += gcnew System::EventHandler(this, &Form1::button6_Click);

// 

// button7

// 

this->button7->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right));

this->button7->Location = System::Drawing::Point(806, 606);

this->button7->Name = L"button7";

this->button7->Size = System::Drawing::Size(126, 23);

this->button7->TabIndex = 13;

this->button7->Text = L"Изменитьназавние";

this->button7->UseVisualStyleBackColor = true;

this->button7->Click += gcnew System::EventHandler(this, &Form1::button7_Click);

// 

// button1

// 

this->button1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left));

this->button1->Enabled = false;

this->button1->Location = System::Drawing::Point(137, 727);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(75, 23);

this->button1->TabIndex = 19;

this->button1->Text = L"Поиск";

this->button1->UseVisualStyleBackColor = true;

this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);

// 

// button2

// 

this->button2->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right));

this->button2->Enabled = false;

this->button2->Location = System::Drawing::Point(806, 635);

this->button2->Name = L"button2";

this->button2->Size = System::Drawing::Size(126, 23);

this->button2->TabIndex = 20;

this->button2->Text = L"Редактировать";

this->button2->UseVisualStyleBackColor = true;

this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);

// 

// listBox1

// 

this->listBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left) 

| System::Windows::Forms::AnchorStyles::Right));

this->listBox1->Font = (gcnew System::Drawing::Font(L"Times New Roman", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 

static_cast<System::Byte>(0)));

this->listBox1->FormattingEnabled = true;

this->listBox1->ItemHeight = 21;

this->listBox1->Location = System::Drawing::Point(12, 27);

this->listBox1->Name = L"listBox1";

this->listBox1->Size = System::Drawing::Size(920, 25);

this->listBox1->TabIndex = 21;

this->listBox1->Tag = L"";

// 

// listBox2

// 

this->listBox2->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left) 

| System::Windows::Forms::AnchorStyles::Right));

this->listBox2->Font = (gcnew System::Drawing::Font(L"Times New Roman", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 

static_cast<System::Byte>(204)));

this->listBox2->FormattingEnabled = true;

this->listBox2->HorizontalScrollbar = true;

this->listBox2->ItemHeight = 21;

this->listBox2->Location = System::Drawing::Point(12, 606);

this->listBox2->Name = L"listBox2";

this->listBox2->ScrollAlwaysVisible = true;

this->listBox2->Size = System::Drawing::Size(788, 109);

this->listBox2->TabIndex = 22;

// 

// checkBox1

// 

this->checkBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left));

this->checkBox1->AutoSize = true;

this->checkBox1->Enabled = false;

this->checkBox1->Location = System::Drawing::Point(256, 727);

this->checkBox1->Name = L"checkBox1";

this->checkBox1->Size = System::Drawing::Size(214, 17);

this->checkBox1->TabIndex = 23;

this->checkBox1->Text = L"Разрешитьредактированиетаблицы";

this->checkBox1->UseVisualStyleBackColor = true;

this->checkBox1->CheckedChanged += gcnew System::EventHandler(this, &Form1::checkBox1_CheckedChanged);

// 

// Form1

// 

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->BackColor = System::Drawing::Color::White;

this->ClientSize = System::Drawing::Size(944, 762);

this->Controls->Add(this->checkBox1);

this->Controls->Add(this->listBox2);

this->Controls->Add(this->listBox1);

this->Controls->Add(this->button2);

this->Controls->Add(this->button1);

this->Controls->Add(this->button7);

this->Controls->Add(this->button6);

this->Controls->Add(this->button5);

this->Controls->Add(this->button4);

this->Controls->Add(this->dataGridView1);

this->Controls->Add(this->menuStrip1);

this->Location = System::Drawing::Point(388, 613);

this->MainMenuStrip = this->menuStrip1;

this->MinimumSize = System::Drawing::Size(960, 800);

this->Name = L"Form1";

this->Text = L"Form1";

this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);

this->Shown += gcnew System::EventHandler(this, &Form1::button7_Click);

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataGridView1))->EndInit();

this->menuStrip1->ResumeLayout(false);

this->menuStrip1->PerformLayout();

this->ResumeLayout(false);

this->PerformLayout();



}

#pragma endregion



private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {



}

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {

 System::Windows::Forms::DialogResult dialres;

 Form2 ^newdlg=gcnew Form2();

 dialres=newdlg->ShowDialog();

 if(dialres==System::Windows::Forms::DialogResult::OK){



 Student->SetName(newdlg->textBox1->Text);

 Student->SetControl(System::Convert::ToInt16(newdlg->textBox4->Text),0);

 Student->SetControl(System::Convert::ToInt16(newdlg->textBox7->Text),1);

 Student->SetControl(System::Convert::ToInt16(newdlg->textBox10->Text),2);

 Student->SetControlScore(System::Convert::ToInt16(newdlg->textBox17->Text));

 Student->SetFact(System::Convert::ToInt16(newdlg->textBox3->Text),0);

 Student->SetFact(System::Convert::ToInt16(newdlg->textBox6->Text),1);

 Student->SetFact(System::Convert::ToInt16(newdlg->textBox9->Text),2);

 Student->SetPlan(System::Convert::ToInt16(newdlg->textBox2->Text),0);

 Student->SetPlan(System::Convert::ToInt16(newdlg->textBox5->Text),1);

 Student->SetPlan(System::Convert::ToInt16(newdlg->textBox8->Text),2);

 Student->SetTest(newdlg->textBox11->Text);

 Student->SetTestF(newdlg->textBox12->Text);

 Student->SetRevision(newdlg->textBox13->Text);

 Student->SetRevisionF(newdlg->textBox14->Text);

 Student->SetProtection(newdlg->textBox15->Text);

 Student->SetProtectionF(newdlg->textBox16->Text);

 dataGridView1->Rows->Add(Student->TName,Student->Plan[0],Student->Fact[0],Student->Control[0],

 Student->Plan[1],Student->Fact[1],Student->Control[1],Student->Plan[2],Student->Fact[2],

 Student->Control[2],Student->Test,Student->TestF,Student->Revision,Student->RevisionF,

 Student->Protection,Student->ProtectionF,Student->ControlScore);

 CountDataGrid++;

 button1->Enabled=true;

 checkBox1->Enabled=true;

 MessageBox::Show("Записьдобавлена!","Information",MessageBoxButtons::OK,MessageBoxIcon::Information);

return;

 }

 }

private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {

 this->Close();

 }

private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {

 System::Windows::Forms::DialogResult dialres;

 dialres=MessageBox::Show("Выточнохотитеудалитьзапись?","Удалить?",MessageBoxButtons::OKCancel,MessageBoxIcon::Warning);

 if(dialres==System::Windows::Forms::DialogResult::OK){

 if(this->dataGridView1->SelectedRows->Count > 0 &&

 this->dataGridView1->SelectedRows[0]->Index !=

 this->dataGridView1->Rows->Count){

 this->dataGridView1->Rows->RemoveAt(this->dataGridView1->SelectedRows[0]->Index);

CountDataGrid--;

 if(CountDataGrid==0){

 button1->Enabled=false;

button2->Enabled=false;

 button6->Enabled=false;

 checkBox1->Enabled=false;

}

 MessageBox::Show("Записьудалена!","Information",MessageBoxButtons::OK,MessageBoxIcon::Information);

}

 else{

 MessageBox::Show("Невыделенаудаляемаястрока!","Ошибка",MessageBoxButtons::OK,MessageBoxIcon::Error);

}

 }

 }

private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e) {

 System::Windows::Forms::DialogResult dialres;

 Start ^newdlg=gcnew Start();

 dialres=newdlg->ShowDialog();

 if(dialres==System::Windows::Forms::DialogResult::OK){

 this->Text=newdlg->textBox1->Text;

 Screen.SetName(newdlg->textBox1->Text);

 Screen.SetComposition(newdlg->textBox2->Text);

 Screen.SetDate(newdlg->textBox3->Text);

 listBox1->Items->Add(Screen.TName);

listBox2->Items->Add("Состав приемной комиссии: ");

listBox2->Items->Add(Screen.Composition);

listBox2->Items->Add("Дата утверждения: ");

listBox2->Items->Add(Screen.Date);

 }



 }

private: System::Void aboutToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

System::Diagnostics::Process::Start("Help.chm");

}



private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

 System::Windows::Forms::DialogResult dialres;

 Search ^newdlg=gcnew Search();

 dialres=newdlg->ShowDialog();

 if(dialres==System::Windows::Forms::DialogResult::OK){

 System::String ^srh;

 srh=newdlg->textBox1->Text;

if(CountDataGrid!=0){

 for(int i=0; i<CountDataGrid; i++){

 for(int j=0; j<dataGridView1->ColumnCount; j++){

 if(System::Convert::ToString(dataGridView1->Rows[i]->Cells[j]->Value)==srh){

 dataGridView1->CurrentCell=dataGridView1->Rows[i]->Cells[j];

 System::Windows::Forms::DialogResult dl;

 dl=MessageBox::Show("Искатьдалее?","Continue?",MessageBoxButtons::OKCancel,MessageBoxIcon::Question);

 if(dl==System::Windows::Forms::DialogResult::Cancel){

 break;

4 }

 }



 }

 }

 MessageBox::Show("Поискзавершен!","Information",MessageBoxButtons::OK,MessageBoxIcon::Information);



 }

 }

 }

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

 System::Windows::Forms::DialogResult dl;

 dl=MessageBox::Show("Редактироватьзапись?","Изменить?",MessageBoxButtons::OKCancel,MessageBoxIcon::Question);

 if(dl==System::Windows::Forms::DialogResult::OK){

 if(this->dataGridView1->SelectedRows->Count > 0 &&

 this->dataGridView1->SelectedRows[0]->Index !=

 this->dataGridView1->Rows->Count){

 System::Windows::Forms::DialogResult dialres;

 Form2 ^newdlg=gcnew Form2();

 newdlg->textBox1->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[0]->Value);

 newdlg->textBox2->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[1]->Value);

 newdlg->textBox3->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[2]->Value);

 newdlg->textBox4->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[3]->Value);

 newdlg->textBox5->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[4]->Value);

 newdlg->textBox6->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[5]->Value);

 newdlg->textBox7->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[6]->Value);

 newdlg->textBox8->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[7]->Value);

 newdlg->textBox9->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[8]->Value);

 newdlg->textBox10->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[9]->Value);

 newdlg->textBox11->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[10]->Value);

 newdlg->textBox12->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[11]->Value);

 newdlg->textBox13->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[12]->Value);

 newdlg->textBox14->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[13]->Value);

 newdlg->textBox15->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[14]->Value);

 newdlg->textBox16->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[15]->Value);

 newdlg->textBox17->Text=System::Convert::ToString(this->dataGridView1->SelectedRows[0]->Cells[16]->Value);

 dialres=newdlg->ShowDialog();

 if(dialres==System::Windows::Forms::DialogResult::OK){

 this->dataGridView1->SelectedRows[0]->Cells[0]->Value=newdlg->textBox1->Text;

 this->dataGridView1->SelectedRows[0]->Cells[1]->Value=newdlg->textBox2->Text;

 this->dataGridView1->SelectedRows[0]->Cells[2]->Value=newdlg->textBox3->Text;

 this->dataGridView1->SelectedRows[0]->Cells[3]->Value=newdlg->textBox4->Text;

 this->dataGridView1->SelectedRows[0]->Cells[4]->Value=newdlg->textBox5->Text;

 this->dataGridView1->SelectedRows[0]->Cells[5]->Value=newdlg->textBox6->Text;

 this->dataGridView1->SelectedRows[0]->Cells[6]->Value=newdlg->textBox7->Text;

 this->dataGridView1->SelectedRows[0]->Cells[7]->Value=newdlg->textBox8->Text;

 this->dataGridView1->SelectedRows[0]->Cells[8]->Value=newdlg->textBox9->Text;

 this->dataGridView1->SelectedRows[0]->Cells[9]->Value=newdlg->textBox10->Text;

 this->dataGridView1->SelectedRows[0]->Cells[10]->Value=newdlg->textBox11->Text;

 this->dataGridView1->SelectedRows[0]->Cells[11]->Value=newdlg->textBox12->Text;

 this->dataGridView1->SelectedRows[0]->Cells[12]->Value=newdlg->textBox13->Text;

 this->dataGridView1->SelectedRows[0]->Cells[13]->Value=newdlg->textBox14->Text;

 this->dataGridView1->SelectedRows[0]->Cells[14]->Value=newdlg->textBox15->Text;

 this->dataGridView1->SelectedRows[0]->Cells[15]->Value=newdlg->textBox16->Text;

 this->dataGridView1->SelectedRows[0]->Cells[16]->Value=newdlg->textBox17->Text;

 }

 MessageBox::Show("Записьотредактирована!","Information",MessageBoxButtons::OK,MessageBoxIcon::Information);

 }

 else{

 MessageBox::Show("Невыделенаредактируемаястрока!","Ошибка",MessageBoxButtons::OK,MessageBoxIcon::Error);

 }

 }

 }

private: System::Void aboutToolStripMenuItem1_Click(System::Object^ sender, System::EventArgs^ e) {

 MessageBox::Show("\"\Экранкурсовогопроектирования\"\ Версия 1.0","Опрограмме",MessageBoxButtons::OK,MessageBoxIcon::Information);

 }

private: System::Void checkBox1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {

 if(checkBox1->Checked==true&&CountDataGrid!=0){

 button2->Enabled=true;

 button6->Enabled=true;

 dataGridView1->RowHeadersVisible=true;

 }

 if(checkBox1->Checked==false&&CountDataGrid!=0){

 dataGridView1->RowHeadersVisible=false;

 button2->Enabled=false;

 button6->Enabled=false;

 }

 }

};

}

ФайлForm2.h. Окнодобавления/редактированиязаписей.

#pragma once

#include "TStudent.h"



namespace WindowsFormApplicationC {



using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

using namespace System::IO;



public ref class Form2 : public System::Windows::Forms::Form

{

public:

Form2(void)

{

InitializeComponent();

}



protected:



~Form2()

{

if (components)

{

delete components;

}

}

public: System::Windows::Forms::TextBox^ textBox1;

protected: 

public: System::Windows::Forms::TextBox^ textBox2;

public: System::Windows::Forms::TextBox^ textBox3;

public: System::Windows::Forms::TextBox^ textBox4;

public: System::Windows::Forms::TextBox^ textBox5;

public: System::Windows::Forms::TextBox^ textBox6;

public: System::Windows::Forms::TextBox^ textBox7;

public: System::Windows::Forms::TextBox^ textBox8;

public: System::Windows::Forms::TextBox^ textBox9;

public: System::Windows::Forms::TextBox^ textBox10;

public: System::Windows::Forms::TextBox^ textBox11;

public: System::Windows::Forms::TextBox^ textBox12;

public: System::Windows::Forms::TextBox^ textBox13;

public: System::Windows::Forms::TextBox^ textBox14;

public: System::Windows::Forms::TextBox^ textBox15;

public: System::Windows::Forms::TextBox^ textBox16;

private: System::Windows::Forms::Button^ button1;

private: System::Windows::Forms::Button^ button2;

private: System::Windows::Forms::Button^ button3;

public: System::Windows::Forms::TextBox^ textBox17;

private: System::Windows::Forms::Label^ label1;

private: System::Windows::Forms::Label^ label2;

private: System::Windows::Forms::Label^ label3;

private: System::Windows::Forms::Label^ label4;

private: System::Windows::Forms::Label^ label5;

private: System::Windows::Forms::Label^ label6;

private: System::Windows::Forms::Label^ label7;

private: System::Windows::Forms::Label^ label8;

private: System::Windows::Forms::Label^ label9;

private: System::Windows::Forms::Label^ label10;

private: System::Windows::Forms::Label^ label11;

private: System::Windows::Forms::Label^ label12;

private: System::Windows::Forms::Label^ label13;

private: System::Windows::Forms::Label^ label14;

private: System::Windows::Forms::Label^ label15;

private: System::Windows::Forms::Label^ label16;

private: System::Windows::Forms::Label^ label17;

private: System::Windows::Forms::Label^ label18;

private: System::Windows::Forms::Label^ label19;

private: System::Windows::Forms::Label^ label20;

private: System::Windows::Forms::Button^ button4;



private:



System::ComponentModel::Container ^components;



#pragma region Windows Form Designer generated code



void InitializeComponent(void)

{

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->textBox2 = (gcnew System::Windows::Forms::TextBox());

this->textBox3 = (gcnew System::Windows::Forms::TextBox());

this->textBox4 = (gcnew System::Windows::Forms::TextBox());

this->textBox5 = (gcnew System::Windows::Forms::TextBox());

this->textBox6 = (gcnew System::Windows::Forms::TextBox());

this->textBox7 = (gcnew System::Windows::Forms::TextBox());

this->textBox8 = (gcnew System::Windows::Forms::TextBox());

this->textBox9 = (gcnew System::Windows::Forms::TextBox());

this->textBox10 = (gcnew System::Windows::Forms::TextBox());

this->textBox11 = (gcnew System::Windows::Forms::TextBox());

this->textBox12 = (gcnew System::Windows::Forms::TextBox());

this->textBox13 = (gcnew System::Windows::Forms::TextBox());

this->textBox14 = (gcnew System::Windows::Forms::TextBox());

this->textBox15 = (gcnew System::Windows::Forms::TextBox());

this->textBox16 = (gcnew System::Windows::Forms::TextBox());

this->button1 = (gcnew System::Windows::Forms::Button());

this->button2 = (gcnew System::Windows::Forms::Button());

this->button3 = (gcnew System::Windows::Forms::Button());

this->textBox17 = (gcnew System::Windows::Forms::TextBox());

this->label1 = (gcnew System::Windows::Forms::Label());

this->label2 = (gcnew System::Windows::Forms::Label());

this->label3 = (gcnew System::Windows::Forms::Label());

this->label4 = (gcnew System::Windows::Forms::Label());

this->label5 = (gcnew System::Windows::Forms::Label());

this->label6 = (gcnew System::Windows::Forms::Label());

this->label7 = (gcnew System::Windows::Forms::Label());

this->label8 = (gcnew System::Windows::Forms::Label());

this->label9 = (gcnew System::Windows::Forms::Label());

this->label10 = (gcnew System::Windows::Forms::Label());

this->label11 = (gcnew System::Windows::Forms::Label());

this->label12 = (gcnew System::Windows::Forms::Label());

this->label13 = (gcnew System::Windows::Forms::Label());

this->label14 = (gcnew System::Windows::Forms::Label());

this->label15 = (gcnew System::Windows::Forms::Label());

this->label16 = (gcnew System::Windows::Forms::Label());

this->label17 = (gcnew System::Windows::Forms::Label());

this->label18 = (gcnew System::Windows::Forms::Label());

this->label19 = (gcnew System::Windows::Forms::Label());

this->label20 = (gcnew System::Windows::Forms::Label());

this->button4 = (gcnew System::Windows::Forms::Button());

this->SuspendLayout();

// 

// textBox1

// 

this->textBox1->AccessibleDescription = L"";

this->textBox1->Location = System::Drawing::Point(12, 38);

this->textBox1->Name = L"textBox1";

this->textBox1->Size = System::Drawing::Size(290, 20);

this->textBox1->TabIndex = 0;

// 

// textBox2

// 

this->textBox2->Location = System::Drawing::Point(12, 90);

this->textBox2->MaxLength = 3;

this->textBox2->Name = L"textBox2";

this->textBox2->Size = System::Drawing::Size(47, 20);

this->textBox2->TabIndex = 1;

// 

// textBox3

// 

this->textBox3->Location = System::Drawing::Point(12, 142);

this->textBox3->MaxLength = 3;

this->textBox3->Name = L"textBox3";

this->textBox3->Size = System::Drawing::Size(47, 20);

this->textBox3->TabIndex = 2;

// 

// textBox4

// 

this->textBox4->Location = System::Drawing::Point(12, 194);

this->textBox4->MaxLength = 3;

this->textBox4->Name = L"textBox4";

this->textBox4->Size = System::Drawing::Size(47, 20);

this->textBox4->TabIndex = 3;

// 

// textBox5

// 

this->textBox5->Location = System::Drawing::Point(142, 90);

this->textBox5->MaxLength = 3;

this->textBox5->Name = L"textBox5";

this->textBox5->Size = System::Drawing::Size(47, 20);

this->textBox5->TabIndex = 4;

// 

// textBox6

// 

this->textBox6->Location = System::Drawing::Point(142, 139);

this->textBox6->MaxLength = 3;

this->textBox6->Name = L"textBox6";

this->textBox6->Size = System::Drawing::Size(47, 20);

this->textBox6->TabIndex = 5;

// 

// textBox7

// 

this->textBox7->Location = System::Drawing::Point(142, 194);

this->textBox7->MaxLength = 3;

this->textBox7->Name = L"textBox7";

this->textBox7->Size = System::Drawing::Size(47, 20);

this->textBox7->TabIndex = 6;

// 

// textBox8

// 

this->textBox8->Location = System::Drawing::Point(271, 90);

this->textBox8->MaxLength = 3;

this->textBox8->Name = L"textBox8";

this->textBox8->Size = System::Drawing::Size(47, 20);

this->textBox8->TabIndex = 7;

// 

// textBox9

// 

this->textBox9->Location = System::Drawing::Point(271, 142);

this->textBox9->MaxLength = 3;

this->textBox9->Name = L"textBox9";

this->textBox9->Size = System::Drawing::Size(47, 20);

this->textBox9->TabIndex = 8;

// 

// textBox10

// 

this->textBox10->Location = System::Drawing::Point(271, 194);

this->textBox10->MaxLength = 3;

this->textBox10->Name = L"textBox10";

this->textBox10->Size = System::Drawing::Size(47, 20);

this->textBox10->TabIndex = 9;

// 

// textBox11

// 

this->textBox11->Location = System::Drawing::Point(418, 106);

this->textBox11->MaxLength = 10;

this->textBox11->Name = L"textBox11";

this->textBox11->Size = System::Drawing::Size(129, 20);

this->textBox11->TabIndex = 10;

// 

// textBox12

// 

this->textBox12->Location = System::Drawing::Point(587, 106);

this->textBox12->MaxLength = 10;

this->textBox12->Name = L"textBox12";

this->textBox12->Size = System::Drawing::Size(129, 20);

this->textBox12->TabIndex = 11;

// 

// textBox13

// 

this->textBox13->Location = System::Drawing::Point(418, 177);

this->textBox13->MaxLength = 10;

this->textBox13->Name = L"textBox13";

this->textBox13->Size = System::Drawing::Size(129, 20);

this->textBox13->TabIndex = 12;

// 

// textBox14

// 

this->textBox14->Location = System::Drawing::Point(587, 177);

this->textBox14->MaxLength = 10;

this->textBox14->Name = L"textBox14";

this->textBox14->Size = System::Drawing::Size(129, 20);

this->textBox14->TabIndex = 13;

// 

// textBox15

// 

this->textBox15->Location = System::Drawing::Point(12, 297);

this->textBox15->MaxLength = 10;

this->textBox15->Name = L"textBox15";

this->textBox15->Size = System::Drawing::Size(129, 20);

this->textBox15->TabIndex = 14;

// 

// textBox16

// 

this->textBox16->Location = System::Drawing::Point(173, 297);

this->textBox16->MaxLength = 10;

this->textBox16->Name = L"textBox16";

this->textBox16->Size = System::Drawing::Size(129, 20);

this->textBox16->TabIndex = 15;

// 

// button1

// 

this->button1->Location = System::Drawing::Point(744, 281);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(126, 60);

this->button1->TabIndex = 16;

this->button1->Text = L"Добавить";

this->button1->UseVisualStyleBackColor = true;

this->button1->Visible = false;

this->button1->Click += gcnew System::EventHandler(this, &Form2::button1_Click);

// 

// button2

// 

this->button2->Location = System::Drawing::Point(795, 113);

this->button2->Name = L"button2";

this->button2->Size = System::Drawing::Size(75, 23);

this->button2->TabIndex = 17;

this->button2->Text = L"Отмена";

this->button2->UseVisualStyleBackColor = true;

this->button2->Click += gcnew System::EventHandler(this, &Form2::button2_Click);

// 

// button3

// 

this->button3->Location = System::Drawing::Point(795, 61);

this->button3->Name = L"button3";

this->button3->Size = System::Drawing::Size(75, 23);

this->button3->TabIndex = 18;

this->button3->Text = L"Очистить";

this->button3->UseVisualStyleBackColor = true;

this->button3->Click += gcnew System::EventHandler(this, &Form2::button3_Click);

// 

// textBox17

// 

this->textBox17->Location = System::Drawing::Point(547, 297);

this->textBox17->MaxLength = 3;

this->textBox17->Name = L"textBox17";

this->textBox17->Size = System::Drawing::Size(52, 20);

this->textBox17->TabIndex = 19;

// 

// label1

// 

this->label1->AutoSize = true;

this->label1->Location = System::Drawing::Point(13, 12);

this->label1->Name = L"label1";

this->label1->Size = System::Drawing::Size(82, 13);

this->label1->TabIndex = 20;

this->label1->Text = L"ФИОстудента";

// 

// label2

// 

this->label2->AutoSize = true;

this->label2->Location = System::Drawing::Point(13, 71);

this->label2->Name = L"label2";

this->label2->Size = System::Drawing::Size(107, 13);

this->label2->TabIndex = 21;

this->label2->Text = L"1 к.н. задан. % вып.";

// 

// label3

// 

this->label3->AutoSize = true;

this->label3->Location = System::Drawing::Point(13, 123);

this->label3->Name = L"label3";

this->label3->Size = System::Drawing::Size(102, 13);

this->label3->TabIndex = 22;

this->label3->Text = L"1 к.н. факт. % вып.";

// 

// label4

// 

this->label4->AutoSize = true;

this->label4->Location = System::Drawing::Point(13, 175);

this->label4->Name = L"label4";

this->label4->Size = System::Drawing::Size(111, 13);

this->label4->TabIndex = 23;

this->label4->Text = L"контрольнаяоценка";

// 

// label5

// 

this->label5->AutoSize = true;

this->label5->Location = System::Drawing::Point(139, 71);

this->label5->Name = L"label5";

this->label5->Size = System::Drawing::Size(107, 13);

this->label5->TabIndex = 24;

this->label5->Text = L"2 к.н. задан. % вып.";

// 

// label6

// 

this->label6->AutoSize = true;

this->label6->Location = System::Drawing::Point(139, 123);

this->label6->Name = L"label6";

this->label6->Size = System::Drawing::Size(102, 13);

this->label6->TabIndex = 25;

this->label6->Text = L"2 к.н. факт. % вып.";

// 

// label7

// 

this->label7->AutoSize = true;

this->label7->Location = System::Drawing::Point(139, 175);

this->label7->Name = L"label7";

this->label7->Size = System::Drawing::Size(111, 13);

this->label7->TabIndex = 26;

this->label7->Text = L"контрольнаяоценка";

// 

// label8

// 

this->label8->AutoSize = true;

this->label8->Location = System::Drawing::Point(268, 71);

this->label8->Name = L"label8";

this->label8->Size = System::Drawing::Size(107, 13);

this->label8->TabIndex = 27;

this->label8->Text = L"3 к.н. задан. % вып.";

// 

// label9

// 

this->label9->AutoSize = true;

this->label9->Location = System::Drawing::Point(268, 123);

this->label9->Name = L"label9";

this->label9->Size = System::Drawing::Size(102, 13);

this->label9->TabIndex = 28;

this->label9->Text = L"3 к.н. факт. % вып.";

// 

// label10

// 

this->label10->AutoSize = true;

this->label10->Location = System::Drawing::Point(268, 175);

this->label10->Name = L"label10";

this->label10->Size = System::Drawing::Size(111, 13);

this->label10->TabIndex = 29;

this->label10->Text = L"контрольнаяоценка";

// 

// label11

// 

this->label11->AutoSize = true;

this->label11->Location = System::Drawing::Point(415, 71);

this->label11->Name = L"label11";

this->label11->Size = System::Drawing::Size(264, 13);

this->label11->TabIndex = 30;

this->label11->Text = L"Дата сдачи заверш. проекта (работы) на проверку";

// 

// label12

// 

this->label12->AutoSize = true;

this->label12->Location = System::Drawing::Point(461, 90);

this->label12->Name = L"label12";

this->label12->Size = System::Drawing::Size(33, 13);

this->label12->TabIndex = 31;

this->label12->Text = L"План";

// 

// label13

// 

this->label13->AutoSize = true;

this->label13->Location = System::Drawing::Point(632, 90);

this->label13->Name = L"label13";

this->label13->Size = System::Drawing::Size(38, 13);

this->label13->TabIndex = 32;

this->label13->Text = L"Факт.";

// 

// label14

// 

this->label14->AutoSize = true;

this->label14->Location = System::Drawing::Point(415, 139);

this->label14->Name = L"label14";

this->label14->Size = System::Drawing::Size(275, 13);

this->label14->TabIndex = 33;

this->label14->Text = L"Дата выдачи проекта (работы) препод. на доработку";

// 

// label15

// 

this->label15->AutoSize = true;

this->label15->Location = System::Drawing::Point(461, 161);

this->label15->Name = L"label15";

this->label15->Size = System::Drawing::Size(33, 13);

this->label15->TabIndex = 34;

this->label15->Text = L"План";

// 

// label16

// 

this->label16->AutoSize = true;

this->label16->Location = System::Drawing::Point(632, 161);

this->label16->Name = L"label16";

this->label16->Size = System::Drawing::Size(38, 13);

this->label16->TabIndex = 35;

this->label16->Text = L"Факт.";

// 

// label17

// 

this->label17->AutoSize = true;

this->label17->Location = System::Drawing::Point(114, 261);

this->label17->Name = L"label17";

this->label17->Size = System::Drawing::Size(76, 13);

this->label17->TabIndex = 36;

this->label17->Text = L"Датазащиты";

// 

// label18

// 

this->label18->AutoSize = true;

this->label18->Location = System::Drawing::Point(50, 281);

this->label18->Name = L"label18";

this->label18->Size = System::Drawing::Size(33, 13);

this->label18->TabIndex = 37;

this->label18->Text = L"План";

// 

// label19

// 

this->label19->AutoSize = true;

this->label19->Location = System::Drawing::Point(212, 281);

this->label19->Name = L"label19";

this->label19->Size = System::Drawing::Size(38, 13);

this->label19->TabIndex = 38;

this->label19->Text = L"Факт.";

// 

// label20

// 

this->label20->AutoSize = true;

this->label20->BackColor = System::Drawing::SystemColors::Control;

this->label20->CausesValidation = false;

this->label20->Location = System::Drawing::Point(527, 261);

this->label20->Name = L"label20";

this->label20->Size = System::Drawing::Size(97, 13);

this->label20->TabIndex = 39;

this->label20->Text = L"Оценказаработу";

// 

// button4

// 

this->button4->Location = System::Drawing::Point(744, 194);

this->button4->Name = L"button4";

this->button4->Size = System::Drawing::Size(126, 60);

this->button4->TabIndex = 40;

this->button4->Text = L"Проверка";

this->button4->UseVisualStyleBackColor = true;

this->button4->Click += gcnew System::EventHandler(this, &Form2::button4_Click);

// 

// Form2

// 

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(882, 353);

this->Controls->Add(this->button4);

this->Controls->Add(this->label20);

this->Controls->Add(this->label19);

this->Controls->Add(this->label18);

this->Controls->Add(this->label17);

this->Controls->Add(this->label16);

this->Controls->Add(this->label15);

this->Controls->Add(this->label14);

this->Controls->Add(this->label13);

this->Controls->Add(this->label12);

this->Controls->Add(this->label11);

this->Controls->Add(this->label10);

this->Controls->Add(this->label9);

this->Controls->Add(this->label8);

this->Controls->Add(this->label7);

this->Controls->Add(this->label6);

this->Controls->Add(this->label5);

this->Controls->Add(this->label4);

this->Controls->Add(this->label3);

this->Controls->Add(this->label2);

this->Controls->Add(this->label1);

this->Controls->Add(this->textBox17);

this->Controls->Add(this->button3);

this->Controls->Add(this->button2);

this->Controls->Add(this->button1);

this->Controls->Add(this->textBox16);

this->Controls->Add(this->textBox15);

this->Controls->Add(this->textBox14);

this->Controls->Add(this->textBox13);

this->Controls->Add(this->textBox12);

this->Controls->Add(this->textBox11);

this->Controls->Add(this->textBox10);

this->Controls->Add(this->textBox9);

this->Controls->Add(this->textBox8);

this->Controls->Add(this->textBox7);

this->Controls->Add(this->textBox6);

this->Controls->Add(this->textBox5);

this->Controls->Add(this->textBox4);

this->Controls->Add(this->textBox3);

this->Controls->Add(this->textBox2);

this->Controls->Add(this->textBox1);

this->HelpButton = true;

this->MaximizeBox = false;

this->MinimizeBox = false;

this->Name = L"Form2";

this->Text = L"Добавление студента";

this->ResumeLayout(false);

this->PerformLayout();



}

#pragma endregion



private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

 this->DialogResult=System::Windows::Forms::DialogResult::OK;

this->Close();

 }

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {

textBox1->Clear();

 textBox2->Clear();

 textBox3->Clear();

 textBox4->Clear();

 textBox5->Clear();

 textBox6->Clear();

 textBox7->Clear();

 textBox8->Clear();

 textBox9->Clear();

 textBox10->Clear();

 textBox11->Clear();

 textBox12->Clear();

 textBox13->Clear();

textBox14->Clear();

 textBox15->Clear();

 textBox16->Clear();

 textBox17->Clear();

 }

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

 this->Close();

 }

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {



 if(textBox1->Text!=""&&textBox2->Text!=""&&textBox3->Text!=""&&textBox4->Text!=""&&textBox5->Text!=""

&&textBox6->Text!=""&&textBox7->Text!=""&&textBox8->Text!=""

&&textBox9->Text!=""&&textBox10->Text!=""&&textBox11->Text!=""

&&textBox12->Text!=""&&textBox13->Text!=""&&textBox14->Text!=""

&&textBox15->Text!=""&&textBox16->Text!=""&&textBox17->Text!=""){

 if(System::Char::IsDigit(textBox2->Text,0)&&System::Char::IsDigit(textBox3->Text,0)&&

 System::Char::IsDigit(textBox4->Text,0)&&System::Char::IsDigit(textBox5->Text,0)&&

 System::Char::IsDigit(textBox6->Text,0)&&System::Char::IsDigit(textBox7->Text,0)&&

 System::Char::IsDigit(textBox8->Text,0)&&System::Char::IsDigit(textBox9->Text,0)&&

 System::Char::IsDigit(textBox10->Text,0)&&System::Char::IsDigit(textBox17->Text,0)){

button1->Visible=true;

 }

 else{

 MessageBox::Show("Некоторыеполяимеютневерныйформат!","Ошибка",MessageBoxButtons::OK,MessageBoxIcon::Error);

 }

 }

 else{

 MessageBox::Show("Незаполненынекоторыеполя!","Ошибка",MessageBoxButtons::OK,MessageBoxIcon::Error);

}

 }

};

}

Файл Strart.h. Окно ввода информации об экране курсового проектирования.

#pragma once



namespace WindowsFormApplicationC {



using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;



/// <summary>

/// Summary for Start

/// </summary>

public ref class Start : public System::Windows::Forms::Form

{

public:

Start(void)

{

InitializeComponent();



}



protected:

~Start()

{

if (components)

{

delete components;

}

}

public: System::Windows::Forms::TextBox^ textBox1;

protected: 

private: System::Windows::Forms::Button^ button1;

public: System::Windows::Forms::TextBox^ textBox2;

private: 

public: System::Windows::Forms::TextBox^ textBox3;

private: System::Windows::Forms::Label^ label1;

public: 

private: System::Windows::Forms::Label^ label2;

private: System::Windows::Forms::Label^ label3;



private:

/// <summary>

/// Required designer variable.

/// </summary>

System::ComponentModel::Container ^components;



#pragma region Windows Form Designer generated code

void InitializeComponent(void)

{

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->button1 = (gcnew System::Windows::Forms::Button());

this->textBox2 = (gcnew System::Windows::Forms::TextBox());

this->textBox3 = (gcnew System::Windows::Forms::TextBox());

this->label1 = (gcnew System::Windows::Forms::Label());

this->label2 = (gcnew System::Windows::Forms::Label());

this->label3 = (gcnew System::Windows::Forms::Label());

this->SuspendLayout();

// 

// textBox1

// 

this->textBox1->Location = System::Drawing::Point(12, 34);

this->textBox1->Name = L"textBox1";

this->textBox1->Size = System::Drawing::Size(508, 20);

this->textBox1->TabIndex = 0;

// 

// button1

// 

this->button1->AutoEllipsis = true;

this->button1->Location = System::Drawing::Point(445, 172);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(75, 23);

this->button1->TabIndex = 1;

this->button1->Text = L"OK";

this->button1->UseVisualStyleBackColor = true;

this->button1->Click += gcnew System::EventHandler(this, &Start::button1_Click);

// 

// textBox2

// 

this->textBox2->Location = System::Drawing::Point(12, 82);

this->textBox2->Name = L"textBox2";

this->textBox2->Size = System::Drawing::Size(508, 20);

this->textBox2->TabIndex = 2;

// 

// textBox3

// 

this->textBox3->Location = System::Drawing::Point(12, 130);

this->textBox3->Name = L"textBox3";

this->textBox3->Size = System::Drawing::Size(173, 20);

this->textBox3->TabIndex = 3;

// 

// label1

// 

this->label1->AutoSize = true;

this->label1->Font = (gcnew System::Drawing::Font(L"Times New Roman", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 

static_cast<System::Byte>(204)));

this->label1->Location = System::Drawing::Point(8, 105);

this->label1->Name = L"label1";

this->label1->Size = System::Drawing::Size(156, 21);

this->label1->TabIndex = 4;

this->label1->Text = L"Датаутверждения";

// 

// label2

// 

this->label2->AutoSize = true;

this->label2->Font = (gcnew System::Drawing::Font(L"Times New Roman", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 

static_cast<System::Byte>(204)));

this->label2->Location = System::Drawing::Point(8, 57);

this->label2->Name = L"label2";

this->label2->Size = System::Drawing::Size(235, 21);

this->label2->TabIndex = 5;

this->label2->Text = L"Составприемнойкомиссии";

// 

// label3

// 

this->label3->AutoSize = true;

this->label3->Font = (gcnew System::Drawing::Font(L"Times New Roman", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 

static_cast<System::Byte>(204)));

this->label3->Location = System::Drawing::Point(8, 9);

this->label3->Name = L"label3";

this->label3->Size = System::Drawing::Size(222, 21);

this->label3->TabIndex = 6;

this->label3->Text = L"Названиекурсовоголиста";

// 

// Start

// 

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(532, 207);

this->ControlBox = false;

this->Controls->Add(this->label3);

this->Controls->Add(this->label2);

this->Controls->Add(this->label1);

this->Controls->Add(this->textBox3);

this->Controls->Add(this->textBox2);

this->Controls->Add(this->button1);

this->Controls->Add(this->textBox1);

this->MaximizeBox = false;

this->MaximumSize = System::Drawing::Size(548, 245);

this->MinimizeBox = false;

this->MinimumSize = System::Drawing::Size(548, 245);

this->Name = L"Start";

this->Text = L"Введите название курсового листа";

this->Load += gcnew System::EventHandler(this, &Start::Start_Load);

this->ResumeLayout(false);

this->PerformLayout();



}

#pragma endregion

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

 Int32 flag=0;

 if(textBox1->Text!=""){

 flag++;

 }

 else{

 MessageBox::Show("Введитеназваниекурсовоголиста!","Ошибка!",MessageBoxButtons::OK,MessageBoxIcon::Error);

 }

 if(textBox2->Text!=""){

 flag++;

 }

 else{

 MessageBox::Show("Введитесоставприемнойкомиссии!","Ошибка!",MessageBoxButtons::OK,MessageBoxIcon::Error);

 }

 if(textBox3->Text!=""){

 flag++;

 }

 else{

 MessageBox::Show("Введитедатуутверждениякурсовоголиста!","Ошибка!",MessageBoxButtons::OK,MessageBoxIcon::Error);

 }

 if(flag==3){

 this->DialogResult=System::Windows::Forms::DialogResult::OK;

 this->Close();

 }

 }

private: System::Void Start_Load(System::Object^ sender, System::EventArgs^ e) {

 }



};

}



Файл Search.h. Окнопоиска.

#pragma once



namespace WindowsFormApplicationC {



using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;



public ref class Search : public System::Windows::Forms::Form

{

public:

Search(void)

{

InitializeComponent();

}



protected:

~Search()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::Button^ button1;

protected: 

private: System::Windows::Forms::Button^ button2;

public: System::Windows::Forms::TextBox^ textBox1;



public: 



private:

System::ComponentModel::Container ^components;



#pragma region Windows Form Designer generated code



void InitializeComponent(void)

{

this->button1 = (gcnew System::Windows::Forms::Button());

this->button2 = (gcnew System::Windows::Forms::Button());

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->SuspendLayout();

// 

// button1

// 

this->button1->Location = System::Drawing::Point(12, 147);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(75, 23);

this->button1->TabIndex = 0;

this->button1->Text = L"Поиск";

this->button1->UseVisualStyleBackColor = true;

this->button1->Click += gcnew System::EventHandler(this, &Search::button1_Click);

// 

// button2

// 

this->button2->Location = System::Drawing::Point(297, 147);

this->button2->Name = L"button2";

this->button2->Size = System::Drawing::Size(75, 23);

this->button2->TabIndex = 1;

this->button2->Text = L"Отмена";

this->button2->UseVisualStyleBackColor = true;

this->button2->Click += gcnew System::EventHandler(this, &Search::button2_Click);

// 

// textBox1

// 

this->textBox1->Location = System::Drawing::Point(12, 61);

this->textBox1->Name = L"textBox1";

this->textBox1->Size = System::Drawing::Size(360, 20);

this->textBox1->TabIndex = 2;

// 

// Search

// 

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(384, 182);

this->ControlBox = false;

this->Controls->Add(this->textBox1);

this->Controls->Add(this->button2);

this->Controls->Add(this->button1);

this->MaximumSize = System::Drawing::Size(400, 220);

this->MinimumSize = System::Drawing::Size(400, 220);

this->Name = L"Search";

this->Text = L"Поиск";

this->ResumeLayout(false);

this->PerformLayout();



}

#pragma endregion

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

 this->Close();

 }

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

 if(textBox1->Text!=""){

 this->DialogResult=System::Windows::Forms::DialogResult::OK;

 this->Close();

 }

 else{

 MessageBox::Show("Введитеинформациюдляпоиска!","Ошибка!",MessageBoxButtons::OK,MessageBoxIcon::Error);

 }

 }

};

}

Файл WindowsFormApplicationC++.cpp

#include "stdafx.h"

#include "Form1.h"



using namespace WindowsFormApplicationC;



[STAThreadAttribute]

int main(array<System::String ^> ^args)

{

// Enabling Windows XP visual effects before any controls are created

Application::EnableVisualStyles();

Application::SetCompatibleTextRenderingDefault(false); 



// Create the main window and run it

Application::Run(gcnew Form1());

return 0;

}