Материал: Лабораторная работа №6

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

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

Оглавление

Y

1. Задание на лабораторную работу 3

2. Формализация 5

3. Заставка к лабораторной работе 6

4. Схема алгоритма решения задачи 7

5. Листинг программы 16

5.1 Листинг основной программы 16

.2 Листинг dll библиотеки 17

6 Тестирование программы 22

Список использованной литературы: 26

  1. Задание на лабораторную работу

Задача: Разработать проект с двумя формами. Первая форма – заставка к приложению, вторая – решение задания лабораторной работы. Заставка в первой форме должна быть реализована при помощи надписи. Кроме этого разработать функцию VSTAVKA, PROSOYVSTAVKA,add,add_struct,add_zap entermas,kiks и outputmas типа void , которые будут находиться в dll библиотеке.

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

Вставка элементов массива осуществляется следующим образом:

1) Первые k элементов массива остаются без изменения;

2) Все элементы, начиная с (k - 1)-го необходимо сдвинуть вправо, чтобы

освободить место для вставляемого элемента;

3) Элементу с номером k присвоить значение m. Количество элементов

массива увеличить на 1.

Сортировка массива простой вставкой осуществляется следующим образом:

Пусть имеется массив a[1], a[2], ..., a[n]. Пусть элементы a[1], a[2], ..., a[i

– 1] уже отсортированы, и пусть имеем входную последовательность a[i], a[i

+ 1], ..., a[n]. На каждом шаге, начиная с i = 2 и увеличивая i на единицу, берем i-й элемент входной последовательности и вставляем его на подходящее место в уже отсортированную часть последовательности. Вставляемый элемент - х. Начальный массив 32 64 9 30 87 14 2 76.

i = 2 х = 64. Ищем для х подходящее место, считая, что а[1] = 32 — это уже отсортированная часть последовательности. Получаем 32 64 9 30 87 14 2 76.

i=3 х=9. Ищем для х подходящее место: 9 32 63 30 87 14 2 76.

i = 4 х = 30. Ищем для х подходящее место: 9 30 32 64 87 14 2 76.

i = 5 х = 87. Ищем для х подходящее место: 9 30 32 64 87 14 2 76.

i = 6 х = 14. Ищем для х подходящее место: 9 14 30 32 64 87 2 76.

i=7 х=2. Ищем для х подходящее место: 2 9 14 30 32 64 87 76.

i = 8 х = 76. Ищем для х подходящее место: 2 9 14 30 32 64 76 87.

При поиске подходящего места для элемента х чередуются сравнения и

пересылки.

«Просеивание» может закончиться при двух различных условиях:

1) Найден элемент, значение которого больше, чем х;

2) Достигнут конец последовательности.

Для выполнения лабораторной работы требуется разработать:

  1. Заставку в первой форме, которая должна быть реализована при помощи надписи.

  2. Функцию kiks типа void с параметрами (int* a, int len,TextBox^s, TextBox^ k, TextBox^ d, TextBox^ n), в которой будет происходить основные вычисления программы: нахождения количества четных и нечетных элементов, а также подсчет всех перемноженных значений четных цифр и отдельно нечетных цифр.

  3. Функцию outputmas типа void с параметрами (int* a, int len, DataGridView^ dgv), в которой будет происходить вывод массива, а также будут вноситься дополнительные под настройки для datagridview1 .

  4. Функцию entermas типа void с параметрами (int* mas, int n), в которой будет происходить генерация массива.

  5. Функцию VSTAVKA типа void с параметрами (int k, int* mas, int n, int m), в которой будет вставка элементов массива.

  6. Функцию PROSOYVSTAVKA типа void с параметрами (int* mas, int n), в которой будет происходить сортировка массива с помощью метода простой вставки.

  7. Функцию add типа void, в которой будет происходить создание базы данных

  8. Функцию add_struct типа void, в которой будет происходить создание структуры базы данных

  9. Функцию add_zap типа void с параметрами (int* mass, int* rezmas, int* rezmas1, int len), в которой будет происходить заполнение базы данных.

  10. Разработать dll библиотеку, в которой будут находиться функция: kiks, outputmas, entermas,VSTAVKA,PROSOYVSTAVKA.

  11. Событийную в которой будет происходить считывание данных через MessageBox и генерация массива, а также будет происходить запуск функции kiks и outputmas.

  1. Формализация

В функции kiks происходят вычисления по определенным значение параметрам типа int «a», «len», «i» , «CH», «NCH», «countCH», «countNCH», где «a» переменная массива

«dgv» - переменная типа DataGridView функции kiks.

«dgv1» - переменная типа DataGridView функции outputmas.

«width» - переменная типа int функции outputmas.

«s», «k», «d», «n» - переменная типа TextBox функции kiks.

«mas», «n» - переменная типа int функции entermas.

«p»- переменная типа OleDbConnection функции add

«c» - переменная типа OleDbCommand функции add

«p»- переменная типа OleDbConnection функции add_struct

«c» - переменная типа OleDbCommand функции add_struct

«p»- переменная типа OleDbConnection функции add_zap

«c» - переменная типа OleDbCommand функции add_zap

«i», «mas», «rezmas», «rezmas1», «len» - переменная типа int функции add_zap.

  1. Заставка к лабораторной работе

Заставка к лабораторной работе №4 (рисунок 1).

Рисунок 1 – Заставка к лабораторной работе №4

  1. Схема алгоритма решения задачи

Рисунок 2 – Схема алгоритма функции outputmas ()

Рисунок 3 – Схема алгоритма функции kiks ()

Рисунок 4– Схема алгоритма функции entermas

Рисунок 5– Схема алгоритма функции VSTAVKA

Рисунок 6– Схема алгоритма функции VSTAVKA

Рисунок 7– Схема алгоритма событийной Button1_Click

  1. Листинг программы

    1. Листинг основной программы

#pragma once

namespace someProject {

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>

/// Сводка для MyForm4

/// </summary>

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

{

public:

MyForm4(void)

{

InitializeComponent();

//

//TODO: добавьте код конструктора

//

}

protected:

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

~MyForm4()

{

if (components)

{

delete components;

}

}

#pragma endregion

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

{

String^ g = Microsoft::VisualBasic::Interaction::InputBox("vvod kol ilimentov", "vivod", " ", -1, -1);

Random^ a = gcnew Random();

int n = Convert::ToInt16(g);

int* b = new int[n];

int* f = new int[n];

int* k = new int[n];

SomeProjectDLL::Class1::add();

SomeProjectDLL::Class1::add_struct();

SomeProjectDLL::Class1::entermas(b, n);

SomeProjectDLL::Class1::outputmas(b, n, dataGridView1);

memcpy(&k, &b, sizeof(k));

int s = SomeProjectDLL::Class1::Vvod(textBox1);

int j = SomeProjectDLL::Class1::Vvod(textBox2);

memcpy(&f, &b, sizeof(f));

SomeProjectDLL::Class1::VSTAVKA(j, b, n, s);

SomeProjectDLL::Class1::outputmas(b, n, dataGridView2);

SomeProjectDLL::Class1::PROSOYVSTAVKA(f, n);

SomeProjectDLL::Class1::outputmas(f, n, dataGridView3);

SomeProjectDLL::Class1::add_zap(k,f,b,n);

delete [] b;

delete [] f;

}

}

  1. Листинг dll библиотеки

#include "pch.h"

#include<cmath>;

#include "SomeProjectDLL.h"

#include <string>

namespace SomeProjectDLL {

using namespace System::Windows::Forms;

using namespace System::Data::OleDb;

void Class1::Lab_tree(double a, double b, double h1, double c, double d, double h2, double& f, double& h, DataGridView^ dgv1)

{

SomeProjectDLL::Class1::CIKLICH(a, b, h1, c, d, h2, dgv1, h);

f = ceil(((b - a) / h1 + 1) * ((d - c) / h2 + 1));

}

void Class1::CIKLICH(double a, double b, double h1, double c, double d, double h2, DataGridView^dgv3, double& h)

{

double s, g, x = a, y = c, z;

s = Convert::ToInt32(ceil((d - c) / h2 + 1));

g = Convert::ToInt32(ceil((b - a) / h1 + 1));

int i, j;

for (i = 1; i <= g; i++)

{

for (j = 1; j <= s; j++)

{

z = SomeProjectDLL::Class1::funct(x, y);

SomeProjectDLL::Class1::VivodDataGrid3(dgv3,x, y, z);

if (h < z)

{

h = z;

}

y += h2;

}

x += h1;

}

}

double Class1::funct(double x, double y)

{

double z = y + exp(-x) + 2.8 * pow(x, 2) - x;

return z;

}

double Class1::Vvod(TextBox^ t)// Указатель на класс ТекстБокс

{

return Convert::ToDouble(t->Text);//В скобках входной и выходной поток информации

}

void Class1::Vivod(double x, TextBox^ t)

{

t->Text = Convert::ToString(x);

}

void Class1::VivodList(ListBox^ L, double n1, double s1)

{

L->Items->Add(n1.ToString() + " " + s1.ToString());

}

void Class1::VivodDataGrid3(DataGridView^ L, double n1, double s1, double s2)

{

L->Rows->Add(n1.ToString(), s1.ToString(), s2.ToString());

}

void Class1::outputmas(int* a, int len, DataGridView^ dgv1) {

dgv1->ColumnCount = len;

dgv1->RowCount = 2;

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

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

dgv1->Rows[1]->Cells[i]->Value = a[i];

}

int width = 0;

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

width += dgv1->Columns[s]->Width;

if (width > 410)

{

dgv1->Width = 410;

}

else

{

dgv1->Width = width;

}

}

}

void Class1::kiks(int* a, int len,TextBox^s, TextBox^ k, TextBox^ d, TextBox^ n) {

int i = 0;

int CH = 1, NCH = 1, countCH = 0, countNCH = 0;

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

{

if (a[i] % 2 == 1)

{

countNCH++;

NCH *= a[i];

}

else {

countCH++;

CH *= a[i];

}

}

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

{

if (abs(a[i])== 1)

{

countNCH++;

NCH *= a[i];

}

else {

countCH++;

CH *= a[i];

}

}

abs(NCH);

abs(CH);

if (NCH > CH) {

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

{

if (a[i] % 2 != 1)

{

a[i] = CH;

}

}

}

else

{

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

{

if (a[i] % 2 == 1)

{

Источник: https://studfile.net/preview/16555964/