…
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 главнойформы
…
}
}
Полная реализация данной процедуры представлена в приложении В.
Конечным этапом создания программного продукта является его тестирование и отладка. В ходе тестирования программы выявляются все ее недостатки и особенности работы. Обнаруженные недостатки устраняются в ходе отладки.
В результате было создано тестирующее приложение(рисунок 2), в котором реализована структура иерархии классов, а также различные функции. А именно:
- Создание экземпляров классов;
- Добавление, удаление, редактирование и поиск данных;
- Работа с экземплярами классов через визуальные компоненты.
Рисунок 2 – Тестирующее приложение. Главное окно.
Рисунок 3 – Тестирующее приложение. Добавление/редактирование.
иерархия класс программирование
Рисунок 4 – Тестирующее приложение. Окно поиска.
Результат тестирования: в ходе тестирования программы недостатков, влияющих на правильную работу приложения, не выявлено.
Листинг тестирующего приложения предложен в Приложении В.
Данная программа тестировалась на компьютере следующей конфигурации:
1. ТипЦП DualCore AMD Athlon 64 X2, 2700 MHz (13.5 x 200) 5200+;
2. Системная память 4096 МБ (DDR2-800 DDR2 SDRAM);
3. ОС Windows 7 x64 с поддержкой 32-х приложений.
5. Руководство по программному продукту
Руководство программиста:
Созданное приложение «Экран курсового проектирования», основанное на иерархии классов, имеет открытый исходный код, что позволяет изменять его в зависимости от потребностей пользователя. Объявление экземпляров класса TScreenи TStudentпроисходит в заголовочном файле главного окна Form1.h:
public:
TStudent ^Student;//объявление указателя на экземпляр класса TStudent
TScreenScreen;//объявление экземпляра класса TScreen
Причем экземпляр класса TStudentинициализируется в конструкторе главной формы:
Form1(void)
{
…
Student=gcnewTStudent;//инициализацияэкземпляракласса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. При выполнении системных требований появится окно добавления информации о текущем экране курсового проектирования. После ввода доступно главное окно, в котором отражается полная информация об экране курсового проектирования и о студентах, выполняющих курсовые работы. В этом режиме программа ожидает действия от пользователя. При первом запуске доступны только команды «Добавить» и «Выход», а также справка о программе.
Для добавления записи необходимо нажать кнопку «Добавить», после чего появится форма добавления. Затем нужно заполнить все поля и нажать кнопку «Ок». Если не заполнены все поля, то программа выдаст сообщение об ошибке и предложит заполнить все поля. Также при неправильном соответствии форматов полей программа проинформирует пользователя. При желании возможно отказаться от добавления и нажать кнопку «Отмена». После добавления запись автоматически отображается в таблице.
Чтобы удалить запись необходимо поставить галочку на «Разрешить редактирование таблицы». Удаление доступно при наличии записей в таблице. Далее программа переходит в режим редактирования таблицы. Для удаления необходимо выделить удаляемую строку, нажав на треугольник рядом с именем записи. При подтверждении выбранного действия программа удаляет запись, о чем информирует пользователя.