Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основная часть с рамкой (Восстановлен).doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2.34 Mб
Скачать

2.3 Описание программы

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

Для начала разработки приложения необходимо создать новый проект в среде разработки Microsoft Visual C++ 2008 Express. При создании проекта выбирается вид проекта «Приложение Windows Forms». Указав название проекта и его местоположение, нажмем кнопку «Создать». При этом будет создан новый проект, содержащий одну пустую форму Form1.

Данная форма будет стартовой формой разрабатываемого приложения.

В качестве основного инструмента работы используем меню приложения. Для этого на панели элементов выберем элемент «MenuStrip» и переносим его на форму Form1. Заполним меню, добавив в него разделы «Просмотр данных» и «Добавление данных», внеся в них дополнительные пункты, как на рисунке 12.

Рисунок 12 – Главное меню продукта

При выборе одного из пунктов меню открывается новое окно, предназначенное для выполнения соответствующих выбранному пункту меню действий. Для создания этих окон необходимо расширить состав проекта, включив в него дополнительные формы, щелкнув правой кнопкой мыши на проект в обозревателе решений и выбрав в выпадающем меню пункт «Добавить … - Создать элемент». В качестве типа элемента выбираем «Форма Windows Forms». Разработанное приложение должно предусматривать просмотр семь таблиц базы данных, поэтому добавим поочередно семь новых форм, дав им имена Form2, Form3, …, Form8.

Данные формы должны быть доступны при выборе соответствующих пунктов меню формы Form1. Для этого необходимо связать их друг с другом. Щелчком правой кнопкой мыши в свободном месте формы Form1 и выбераем пункт «Перейти к коду». Откроется файл с исходным программным кодом формы Form1 (файл Form1.h). Добавим в начало файла код (рисунок 13)

#include “Form2.h”

#include “Form3.h”

#include “Form4.h”

#include “Form5.h”

#include “Form6.h”

#include “Form7.h”

Рисунок 13 – Код добавления форм

Переключимся обратно в режим конструктора формы Form1. Выбираем в меню формы пункт «Просмотр Занятий» и дважды щелкнем по нему мышью. В программном коде автоматически создастся обработчик для события «Выбор пункта меню», а курсор будет установлен в начало добавленного обработчика. Внесем в него следующий код (рисунок 14).

Form2 ^f = gcnew Form2;

f->ShowDialog();

Рисунок 14 – Обработчик события

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

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

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

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

dataGridView1->Rows->Clear();

System::Data::OleDb::OleDbConnection ^con = gcnew System::Data::OleDb::OleDbConnection;

con->ConnectionString = "provider=Microsoft.Jet.OleDb.4.0; data source=Base.mdb";

con->Open();

System::Data::OleDb::OleDbCommand ^cmd = con->CreateCommand();

cmd->CommandText = "SELECT [Код записи], [Дата занятия], [Номер пары], [название группы], [Номер зачетки], [Балл], [Пропуск] FROM Оценки";

System::Data::OleDb::OleDbDataReader ^r = cmd->ExecuteReader();

while (r->Read()) {

String ^Cod = r->GetValue(0)->ToString();

String ^Dat = r->GetValue(1)->ToString();

String ^Nomp = r->GetValue(2)->ToString();

String ^Nazg = r->GetValue(3)->ToString();

String ^Nomz = r->GetValue(4)->ToString();

String ^Ball = r->GetValue(5)->ToString();

String ^Prop = r->GetValue(6)->ToString();

dataGridView1->Rows->Add(Cod, Dat, Nomp, Nazg, Nomz, Ball, Prop);

};

con->Close();

Рисунок 15 – Код обработчика в форме просмотра данных

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

Аналогичные действия выполняются на формах Form3-Form8, за исключением того, что информация выбирается из других таблиц базы данных.

Аналогично тому, как в проект были добавлены формы для просмотра данных, включим в проект и формы добавления информации в БД. Для этого создаем семь дополнительных форм (через меню «Проект – Добавить… – Создать элемент»). Именуем формы имена с Form9 по Form15 и подключим их к соответствующим пунктам меню аналогично тому, как это было сделано для форм просмотра (т.е. добавим в начало файла Form1.h строки с подключением новых файлов и создадим обработчики для пунктов меню «Добавление данных»).

Таблицы используемой нами при проектировании БД можно разбить на 2 группы: независимые и зависимые. Разница между ними состоит в том, что зависимые таблицы содержат информацию, которая уже присутствует в БД, например, в таблице «Занятия» присутствует поле «Табельный номер». При вводе данных в это поле пользователь должен быть ограничен только теми вариантами единиц измерения, которые уже присутствуют в таблице «Преподаватели».

Действия по добавлению данных будут отличаться для независимых и зависимых таблиц.

В нашей БД присутствует четыре независимые таблицы («Предмет», «Преподаватели», «Группы», «Виды занятий») и три зависимые («Оценки», «Студенты», «Занятия»).

Рассмотрим добавление данных в независимую таблицу «Группы». Данная таблица содержит три переменные, поэтому разместим на форме Form12 (открывающейся по команде меню «Добавление группы») 3 элементов управления TextBox. Помимо этого добавим на форму кнопку (элемент управления Button). При нажатии на кнопку, введенные пользователем в текстовые поля данные, должны добавляться в таблицу «Группы». Добавим для этого обработчик события Click у кнопки (рисунок 16).

System::Data::OleDb::OleDbConnection ^con = gcnew System::Data::OleDb::OleDbConnection;

con->ConnectionString = "provider=Microsoft.Jet.OleDb.4.0; data source=Base.mdb";

con->Open();

System::Data::OleDb::OleDbCommand ^cmd = con->CreateCommand();

String ^Nazg = textBox1->Text;

String ^Spe = textBox2->Text;

String ^Kurs = textBox3->Text;

cmd->CommandText = "INSERT INTO Группы ([название группы], [Специальность], [Курс]) VALUES ('"+Nazg+"','"+Spe+"','"+Kurs+"')";

cmd->ExecuteScalar();

con->Close();

Close();

Рисунок 16 – Код обработчика события Click

Принцип добавления зависимых данных.

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

Рассмотрим добавление данных в таблицу «Студенты». Данная таблица содержит пять полей, второе из которых («название группы») обеспечивает связь с таблицей «Группы». Добавим на форму Form11 четыре текстовых поля, выпадающий список (элемент ComboBox) и кнопку (элемент Button). Порядок расположения элементов должен соответствовать порядку полей: сначала одно текстовое поле, затем один выпадающий список, после все оставшиеся три текстового поля (рисунок 17).

Рисунок 17 – Внешний вид расположения полей ввода в зависимой таблице

Чтобы ограничить выбор единицы измерения только теми значениями, которые указаны в списке, необходимо изменить его вид. Для этого выберираем элемент управления comboBox1, щелкаем по нему правой кнопкой мыши и выбираем пункт «Свойства». Меняем свойство «DropDownStyle» на значение «DropDownList». Теперь при работе с этим элементом управления пользователь не сможет ввести в него произвольные данные, а будет ограничен доступным ему списком значений.

Добавим обработчик события Load у формы Form11 (рисунок 18).

Frame7

Рисунок 18 – Обработчик события Load зависимой переменной

На этапе загрузки формы мы обращаемся к таблице «Группы», считываем оттуда информацию и добавляем ее в список для выбора названий групп на форме. В том случае, если зависимых полей несколько (как, например, в таблице «Занятия»), необходимо выполнить несколько запросов к разным таблицам базы данных и заполнить несколько списков.

Когда список выбора единицы измерения заполнен, можно реализовать само добавление данных, аналогично тому, как это происходит в случае независимых данных: (рисунок 19)

Frame8

Рисунок 19 – Обработчик Click в зависимой форме

Аналогично осуществляется добавление данных в другие зависимые таблицы БД.