Добавил:
Тот самый Малыхя на партах и на досках Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛРТП.docx
Скачиваний:
4
Добавлен:
13.03.2024
Размер:
1.83 Mб
Скачать
  1. Список использованных источников

  2. 1.Гуриков, С. Р. Основы алгоритмизации и программирования на Visual C++ / С.Р. Гуриков. — Москва : ИНФРА-М, 2022. — 515 с.

3. ГОСТ 7.32-2017 Межгосударственный стандарт. Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления.

Лабораторная работа №3

«Запись одномерных массивов в базу данных Microsoft Access»

Вариант №18

Выполнил: Студент группы которую ненавидит Гуриков С.Р.

Великий студент

Вариант ахуенный

Проверил: Доцент каф. «Информатика»

Гуриков С. Р.

  1. Задание

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

  1. Cодержимое технического задания

1. Разработать алгоритмы решения заданной задачи (количество алгоритмов равно количеству используемых пользовательских функций + алгоритм событийной).

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

3. В ходе решения задачи своего варианта предусмотреть написание функций для создания массива из случайных чисел, создания нового из исходного и для вывода массивов в dataGridView. Для решения задачи своего варианта использовать многочисленные методматериалы, которые перечислены в пояснениях (ЭОИС).

4. Подготовить тесты для контрольного решения задачи. Показать их

использование, отобразив в отчете по заданию.

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

6. Осуществить запись массивов в базу данных Microsoft Access.

7. Выполнить отчет в соответствии с ГОСТ на схемы алгоритмов и согласно ГОСТ оформления отчетов по НИР.

Программный код DLL-библиотеки

void Class1::enter_mas(int* mas, int n)

{

srand(time(0));

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

mas[i] = (int)(rand() % 900) / 20 - 20;

}

void Class1::output_mas(int* mas, int len, DataGridView^ grid)

{

grid->ColumnCount = len;

grid->RowCount = 2;

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

{

grid->Rows[0]->Cells[i]->Value = "[" + i + "]";

grid->Rows[1]->Cells[i]->Value = mas[i];

}

int widht = 0;

for (int s = 0; s < grid->ColumnCount; s++)

widht += grid->Columns[s]->Width;

if (widht > 400)

grid->Width = 440;

else

grid->Width = widht;

}

int Class1::kol(int* mas, int n)

{

int p = mas[0];

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

if (mas[i] < p)

{

p = mas[i];

}

return p;

}

void Class1::set_mas(int* mas, int* rezmas, int n, int p, int& j)

{

j = 0;

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

if (mas[i] > p)

{

rezmas[j] = mas[i];

j++;

}

}

void Class1::add() {

ADOX::Catalog^ k = gcnew ADOX::CatalogClass();

try {

k->Create("Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\\Users\\User\\source\\repos\\DBAccess.mdb");

MessageBox::Show("База данных успешно создана");

}

catch (System::Runtime::InteropServices::COMException^ situation) {

MessageBox::Show(situation->Message);

}

finally {

k = nullptr;

}

}

void Class1::add_struct() {

auto p = gcnew OleDbConnection("Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\\Users\\User\\source\\repos\\DBAccess.mdb");

p->Open();

auto c = gcnew OleDbCommand("CREATE TABLE [Massivs] ([Номер элемента] counter, [Исходный массив] char (200), [Результирующий массив] char(200))", p);

try {

c->ExecuteNonQuery();

MessageBox::Show("Структура базы данных записана");

}

catch (Exception^ situation) {

MessageBox::Show(situation->Message);

}

p->Close();

}

void Class1::add_zap(int* arr, int* rezmas, int len, int j) {

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

auto p = gcnew OleDbConnection("Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\\Users\\User\\source\\repos\\DBAccess.mdb");

p->Open();

if (i < j) {

auto c = gcnew OleDbCommand("INSERT INTO [Massivs] (" + " [Исходный массив], [Результирующий массив]) VALUES('" + arr[i] + "','" + rezmas[i] + "')");

c->Connection = p;

c->ExecuteNonQuery();

}

else {

auto c = gcnew OleDbCommand("INSERT INTO [Massivs](" + " [Исходный массив], [Результирующий массив]) VALUES ('" + arr[i] + "', '')");

c->Connection = p;

c->ExecuteNonQuery();

}

p->Close();

}

MessageBox::Show("В таблицу 'Массивы' добавлена запись");

}