Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Инфоурок / Информатика / Конспекты / Лаборторный практикум по объектно-ориентированному программированию
ВНИМАНИЮ ВСЕХ УЧИТЕЛЕЙ: согласно Федеральному закону № 313-ФЗ все педагоги должны пройти обучение навыкам оказания первой помощи.

Дистанционный курс "Оказание первой помощи детям и взрослым" от проекта "Инфоурок" даёт Вам возможность привести свои знания в соответствие с требованиями закона и получить удостоверение о повышении квалификации установленного образца (180 часов). Начало обучения новой группы: 26 апреля.

Подать заявку на курс
  • Информатика

Лаборторный практикум по объектно-ориентированному программированию

библиотека
материалов

hello_html_m2a7690f7.gifhello_html_m2a7690f7.gifМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное учреждение высшего профессионального образования

«Чувашский государственный университет имени И. Н. Ульянова»








В. К. Никишев





Объектно-ориентированное программирование




Лабораторный практикум










Чебоксары

2016


УДК 004.43(076.5)

ББК 3973.2я73

Рецензенты:

Горский А.В. ̶ доцент кафедры информатики и вычислительной техники чебоксарского педагогического университета имени И. Я. Яковлева, канд. физ-мат. наук.

Григорьев Ю. В. ̶ старший преподаватель кафедры информатики и вычислительной техники чебоксарского педагогического университета им. И.Я. Яковлева, канд. пед. наук.


Никишев В. К.

Объектно-ориентированное программирование: лабораторный практикум/ В.К.Никишев.─ Чебоксары: Изд-во Чуваш. ун-та, 2016. – 161 с.


Методическое пособие по объектно-ориентированному программированию предназначено для студентов ЧГУ кафедры компьютерных технологий. В пособии представлены задания и примеры выполнения лабораторных работ по дисциплине объектно-ориентированному программированию для языков программирования C#, С++, VB.NET, входящих в состав комплекса Visual Studio. Тематика лабораторных работ соответствует рабочей программе, написанной в соответствии со стандартом образования. Задания для выполнения лабораторных работ приведены в конце каждой темы. Данное методическое пособие поможет студентам и преподавателям освоить новые методы разработки программ на основе объектно-ориентировнного программирования с использованием языков программирования на платформе .NET .


Ответственный редактор канд. техн. наук, профессор

В.П. Желтов

Утверждено Учебно-методическим советом университета

УДК 004/92(076/5)

ISBN © Издательство Чувашского

Университета, 2016 © Никишев В. К., 2016


Предисловие

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

Инкапсуляция. Комбинирование записей (данных) с процедурами и функциями, формирует новый тип данных - объект.

Наследование. Создание новых наследуемых объектов с новыми свойствами с возможностью использовния свойст объектов - потомков.

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

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

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

Данное учебное пособие включает разделы: учебный план по изучению языков программирования С++,С#, VB.NET, примеры выполнения для каждой работы и задания для выполнения лабораторных работ. Пособие будет полезно как преподавателям, так и студентам, которые осваивают этот метод объектно-ориентированного программирования.


Лабораторная работа 1. Структура программ на основе ООП. Языки программирования С#, С++, VB.NET

Цель занятия: изучить структуру программ на основе использования метода объектно-ориентированного программирования, основные элементы структуры ООП: классы, объекты, а также повторить основные операторы языков программирования С++, С#, VB.NET. Получить навыки работ по составлению простейших проектов с использованием элементов управления и операторов..

Задачи занятия:

1. Построение словесных алгоритмов

2. Построение алгоритмов в виде блок-схем

3. Разработка программы на основе ООП с использованием классов и объектов (языки программирования С++, С#

4. Изучение и практическое усвоение сущности метода программирования на основе ООП - объектно-ориентрованного программирования

5. Оформление отчета выполненной работы, включающей : условие задачи, алгоритм, программу и результат работы.

6. Защитить работу по знанию как теоретических , так и практических вопросов.

Программа на языке C#.NET. Консольный вариант.

Условие: составить алгоритм и программу Student для ввода и вывода данных по студентам ( фамилия, имя, группа и стипендия). Программа должна иметь класс, объект, операторы ввода и вывода данных. Данные вводить во время работы программы .

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication8

{

class Program

{

class student // класс студент

{

public string s;

public string family;// фамилия

public string name; // имя

public int year;// год рождения

public int gruppa;// группа

public void Show(student s, string family, string name, int year, int gruppa)

{

s = new student();

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

{

Console.WriteLine("Вывод студентов :");

Console.WriteLine("фамилия " + " " + s.family + "\n имя студента "

+ " " + s.name + "\n год рождения " + " " + s.year + " \n учебная группа " + " " + s.gruppa);

}

Console.ReadKey();

}

public void Input(student s, string family, string name, int year, int gruppa)

{

{

Console.WriteLine("Ввод студентов :");

int i;

i = 1;

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

{

s = new student();

Console.WriteLine("Ввод" + i.ToString() + " студента:");

Console.WriteLine("Введите фамилию :");

s.family = Console.ReadLine();

Console.WriteLine("Введите имя студента");

s.name = Console.ReadLine();

Console.WriteLine("Введите год рождения");

s.year = int.Parse(Console.ReadLine());

Console.WriteLine("Введите учебную группу");

s.gruppa = int.Parse(Console.ReadLine());

Console.ReadKey();

Console.Clear();

} } } }

static void Main(string[] args)// главная функция

{

string str = "да";

while (str == "да")

{

student s = new student();// объект

Console.WriteLine("\n\n\n\n\n\n\n\n " + " Программа Студент");

Console.WriteLine(" \n Выполнил Никишев ");

Console.ReadKey();

Console.Clear();

s = new student();

s.Input(s, s.family, s.name, s.year, s.gruppa);

// i = 1;

s = new student();

s.Show(s, s.family, s.name, s.year, s.gruppa);

Console.WriteLine("\n повторить решение (да/нет)");

str = Console.ReadLine();

Console.ReadKey();

Console.Clear();

} } } }}






Блок – хема алгоритма


hello_html_61540089.gif

































Прогрмма на языке прграммировния С#.

Windows вариант

Условие: разработать проект ввода данных ( фамилии, имя, год рождения и группу) в компоненты TextBox текстовое окно и ListBox список

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication2

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

class stud// класс

{

public string family;

public string name;

public int year;

public int gruppa;

//функция ввода данных

public void Wwod(TextBox t1, TextBox t2, TextBox t3, TextBox t4)

{

family = t1.Text;

name = t2.Text;

year = Convert.ToInt16(t3.Text);

gruppa = Convert.ToInt16(t4.Text);

}

//функция вывода данных


public string Wiwod()

{

return (family + " " + name + " " + Convert.ToString(year) + " " + Convert.ToString(gruppa));

} }

int i, j;

//объект

//ввод

private void button1_Click(object sender, EventArgs e)

{

s[i] = new stud();

s[i].Wwod(textBox1, textBox2, textBox3, textBox4);

i++;

}

private void button2_Click(object sender, EventArgs e)

{

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

{

textBox5.Text = textBox5.Text + s[j].Wiwod() + "\n";

listBox1.Items.Add(s[j].Wiwod()+ "\n");

} }

private void button3_Click(object sender, EventArgs e)

{

Close();

} }}hello_html_m41aa5a16.png


Лабораторная работа 2. Вычисление

арифметических выражений на основе ООП

Программа на языке C#.NET. Консольный вариант.

Условие: разработать проект для вычисления выражения

c=(a+b)/d методом объектно-ориентированного

программирования.

Блок – схема алгоритма


hello_html_656e43f4.gif




























сссс

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication2

{

class Program

{

class calcul // состав класса calcul

{

// данные

public int a;

public int b;

public int c;

public int d;

// функции

public void input()//ввод данных

{

Console.WriteLine("Введите число а.");

int a = int.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + a);

Console.WriteLine("Введите число b.");

int b = int.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + b);

int d = int.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + d);

}

public void show()// вывод результата вычислений

{

int c = (a + b)/d;

Console.WriteLine("результат с=: " + c);

} }

static void Main(string[] args)

{

string str;

calcul cl = new calcul();// объект

Console.WriteLine("\n\n\n\n\n\n\n\n " + " Программа Калькулятор");

Console.WriteLine(" \n Выполнил Никишев ");

Console.ReadKey();

Console.ReadLine();

Console.Clear();

cl.input();// ввод данных

cl.show();// вычисление и вывод результта

Console.WriteLine("\n нажми Enter для выхода из программы");

str = Console.ReadLine();

Console.ReadKey();

} } }


Пример программы при вводе данных после главной функции

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication2

{

class Program

{

class calcul // класс

// данные

{

public double a;

public double b;

public double c;

public double d;

// функции

public void show(double a,double b,double d)

{

c = (a +b)/d;

// Console.WriteLine("результат с=: " + c);

// return c;

} }

static void Main(string[] args)

{

string str;

// объект

calcul cl = new calcul();

Console.WriteLine("\n\n\n\n\n\n\n\n"+"Программа Калькулятор");

Console.WriteLine(" \n Выполнил Никишев ");

Console.ReadKey();

Console.ReadLine();

Console.Clear();

Console.WriteLine("Введите число а.");

double a = double.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + a);

Console.WriteLine("Введите число b.");

double b = double.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + b);

Console.WriteLine("Введите число d.");

double d = double.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + d);

cl.show(a,b,d);

Console.WriteLine("результат с=: " + cl.c);

Console.WriteLine("\n нажми Enter для выхода из программы");

str = Console.ReadLine();

Console.ReadKey();

} }}


Программа на языке С#.NET. Консольный вариант

Условие: вычислить арифметическое выражения

z =( x2+2x – 3 +(x+1)√x2+2x-9))/(x2+2x – 3 +(x-1)√(x2-9)).

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication1

{

class Program

{

class calcul

{

public double x;

public double z;

public void show(double x)

{

z = (x * x + 2 * x - 3 + (x + 1) * (Math.Sqrt(x * x - 9))) / (x * x +

2 * x - 3 + (x - 1) * (Math.Sqrt(x * x - 9)));

}

static void Main(string[] args)

{

string str;

calcul cl = new calcul();

Console.WriteLine("\n\n\n\n\n " + " Программа вычисления арифметического выражения");

Console.WriteLine(" \n Выполнила студент группы ДиКТ-31-13 ");

Console.WriteLine(" \n Кукина Наталья ");

Console.ReadKey();

Console.ReadLine();

Console.Clear();

Console.WriteLine("Вычислите арифметическое выражение z = (x * x + 2 * x - 3 + (x + 1) * (Math.Sqrt(x * x - 9))) / (x * x + 2 * x - 3 + (x - 1) * (Math.Sqrt(x * x - 9))).");

Console.WriteLine("Введите число x.");

double x = double.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + x);

cl.show(x);

Console.WriteLine("результат z=: " + cl.z);

Console.WriteLine("\n нажми Enter для выхода из программы");

str = Console.ReadLine();

Console.ReadKey();

} } }}





Программа на языке С++.NET. Консольный вариант

Условие: вычислить арифметическое выражения

(sin(x)+cos(y))*2*sin(y)*cos(x).

Программа

#include "stdafx.h"

#include "CalculationClass.h"

#include

//Описание класса

CalculationClass::CalculationClass(double x,double y)

{

Result = (sin(x)+cos(y))*2*sin(y)*cos(x);

}

double CalculationClass::GetResult()

{

return Result;

}

//Описание главной функции

// Вычисление_выражения.cpp: главный файл проекта.

#include "stdafx.h"

#include"CalculationClass.h"

using namespace System;

int main(array ^args)

{

Console::WriteLine(L"Вычисление выражения

(Sin(x)+Cos(y)) * 2 * Sin(y) * Cos(x)");

Console::Write(L"Введите Х:");

double x= Convert::ToDouble(Console::ReadLine());

Console::Write(L"Введите Y:");

double y = Convert::ToDouble(Console::ReadLine());

CalculationClass^ someClass = gcnew CalculationClass(x, y);

Console::WriteLine(L"Ответ:"+someClass>GetResult().ToString());

Console::ReadKey();

return 0;



Программа на языке С#.NET. Windows вариант

Условие: вычислить арифметическое вырaжения

(sin(x)+cos(y))*2*sin(y)*cos(x)

Программа

using System;

using System.Collections.Generic;hello_html_m13f7ec8b.png

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

class Class1

{

public double x;

public double z;

public void show (double x)

{

z = (x * x + 2 * x - 3 + (x + 1) /(x * x + 2 * x - 3));

} }

namespace WindowsFormsApplication1

{

public partial class Form4 : Form

{

public Form4()

{

InitializeComponent();

}

Class1 cal = new Class1();

private void button1_Click(object sender, EventArgs e)

{

Form1 f1 = new Form1();

Form4.ActiveForm.Hide();

f1.Show();

}

private void button2_Click(object sender, EventArgs e)

{

double x = Convert.ToDouble(textBox1.Text);

Class1 cal = new Class1();

cal.show(x);

textBox2.Text = textBox2.Text + " z= " + Convert.ToString(cal.z) + "\n ";

} }}

hello_html_m9c580d3.pnghello_html_m31fdb539.png


Программа на языкеVC#. Windows - приложение

Калькулятор

Условие: вычислить арифметическое выражение с=(а + в)/d


Форма класс

using System;hello_html_m4fbc7647.png

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace WindowsFormsApplication3

{

class Class1

{

public double a;

public double b;

public double c;

public double d;

public Class1(double a, double b, double d)

{

this.a = a;

this.b = b;

this.d = d;

}

public double sum (double a,double b, double d)

{

c=(a+b)/d;

return c;

} }}

Форма 1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication3

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

// вычислить

private void button1_Click(object sender, EventArgs e)

{

double a = Convert.ToDouble(textBox1.Text);

double b = Convert.ToDouble(textBox2.Text);

double d = Convert.ToDouble(textBox2.Text);

// объект

Class1 cal = new Class1(a, b, d); cal.sum(a,b,d);

textBox3.Text = textBox3.Text + " c= " + Convert.ToString(cal.c) + "\n "; }


Блок – схема алгоритма

hello_html_m3d22626f.gif
































Программа на языке С++.NET. Windows вариант.

Условие: Вычислить сложное арифметическое выражениеhello_html_54ca4a76.gif



hello_html_11b9fa7.pnghello_html_m533d7d13.png








hello_html_4989cf91.pnghello_html_60d11508.png









Форма class

#pragma once

using namespace System;

using namespace System::Collections::Generic;

using namespace System::Linq;

using namespace System::Windows::Forms;

ref class Class1

{

public:

double x;

double y;

double z;

double sum(double x, double y)

{

z = (Math::Sqrt(Math::Sin((x + y)) + Math::Cos(x) * (x + y)) / (x + Math::Pow(y,4) * Math::Exp(x + y)));

return z;

}};

форма 1

#pragma once

#include "Form2.h"

#include "Form3.h"

#include "Form5.h"

namespace lab1 {

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 Form1 : public

System::Windows::Forms::Form

Форма 2

#pragma once

#include "Class1.h"

namespace lab1 {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

#pragma endregion

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

}

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

}

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

this->Close();

}

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

double x = Convert::ToDouble(textBox1->Text);

double y = Convert::ToDouble(textBox2->Text);

double c=0;

Class1 ^cal = gcnew Class1();

cal->sum(x,y);

label2->Text = Convert::ToString(cal->z);

label2->Text = Convert::ToString(z);

textBox3->Text = Convert::ToString(z);

}};}


Программа на языке С++.NET. Windows вариант

Условие: вычислить арифметическое вырaжение

(sin(x)+cos(y)) ∙ 2 ∙ sin(y) ∙ cos(x).

Программа

#pragma once

using namespace System;

using namespace System::Collections::Generic;

//using namespace System::Linq;

using namespace System::Windows::Forms;

ref class class1

{

public:

double x;

double z;

double sum(double x)

{

z=((x*x) + 2*x - 3 + (x + 1)*(Math::Pow((x*x - 9),1)))/ ((x*x) - 2*x - 3 + (x + 1)*(Math::Pow((x*x - 9),1)));

return z;

}

class1(void);

};


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

#pragma once

#include "class1.h"

namespace My1lab {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

#pragma endregion

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

double x = Convert::ToDouble(textBox1->Text);

class1 ^cal = gcnew class1();

cal->sum(x);

textBox2->Text = Convert::ToString(cal->z);

}};}


Программа на языке VB.NET. Windows вариант

Условие: вычислить арифметическое вырaжение

z=((m-1)√(m-1)-(n-1)√(n-1)))/(√m3+n3 (n + m2 n))

Программа

Public Class Class1

Public m As Double

Public n As Double

Public z As Double

Public Sub answ(ByVal m As Double, ByVal n As Double)

z = ((m - 1) * Math.Sqrt(m - 1) - (n - 1) * Math.Sqrt(n - 1)) / (Math.Sqrt(m * m * m) + (n * n * n) * n + m * m - n)

End Sub

End Class

ublic Class Form4

' объявление объекта

Dim calc As Class1 = New Class1()

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Me.Hide()

Form1.Show()

End Sub

' кнопка очистить

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

TextBox1.Clear()

TextBox2.Clear()

TextBox3.Clear()

End Sub

' кнопка вычислить

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim m = Convert.ToDouble(TextBox1.Text)

Dim n = Convert.ToDouble(TextBox2.Text)

calc.answ(m, n)

TextBox3.Text = Convert.ToString(calc.z)

End Sub

End Class


hello_html_m5d26c0b9.pnghello_html_6128bdb0.png








Лабораторная работа 3. Вычисление суммы ряда на

основе ООП. Языки программирования С#, С++, VB.NET

Цель занятия: изучить структуру программ вычисление суммы ряда на основе использования метода объектно-ориентированного программирования о и основные элементы структуры и функции ООП для вычисления суммы ряда для языков программирования С++, С#, VB.NET. Получить навыки работ по составлению проектов.


Программа на языке C#.NET. Консольный вариант

Условие: разработать проект для вычисления выражения

hello_html_m67bc37f3.gif

методом объектно-ориентированного программирования.

Программа

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

class rayd

{

public int i;

public int n;

public double s;

public double a;

public void input()

{

Console.WriteLine("Введите n.");

int n = int.Parse(Console.ReadLine());

Console.WriteLine("Вы ввели: " + n);

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

{

a = (1 + 1 / Math.Pow(i, i));

s=s + a;

//Console.WriteLine("результат S=: " + s);

}}

public void show()

{

Console.WriteLine("результат S=: " + s);

} }

static void Main(string[] args)

{

string str;

rayd r = new rayd();

Console.WriteLine("\n\n\n\n\n\n\n\n " + " Программа Сумма ряда");

Console.WriteLine("\n\n\n\n " + " условие: вычислить s=1+1/(i^i), для i=1,n ") ;

Console.WriteLine(" \n Выполнил профессор Никишев В.К. ");

Console.ReadKey();

Console.ReadLine();

Console.Clear();

// Console.WriteLine("Введите n.");

// int n = int.Parse(Console.ReadLine());

// Console.WriteLine("Вы ввели: " + n);

r.input();

r.sum();

r.show();

Console.WriteLine("\n нажми Enter для выхода из программы");

str = Console.ReadLine();

Console.ReadKey();

} }}


hello_html_9f3e9e.png














Блок – схема алгоритма




hello_html_m55f004de.gif



Язык программирования С#. Windows вариант

Условие: вычислить сумму ряда s=1/i

Программа

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace WindowsFormsApplication1

{

class rayd // класс

{

public double i;

public int n;

//public double s;

//public double a;

public rayd(double i,int n) //конструктор

{

this.i=i;

this.n =n;

}

public double sum( double i ,int n) // функция

// вычисления суммы ряд

{

double s = 0;

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

{

s = s + (1 / (i));

}

return s;

} } }

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;hello_html_m3d9e122f.png

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

// кнопка вычислить

private void button1_Click(object sender, EventArgs e)

{

double i = 0;

int n = 0;

n = Convert.ToInt16(textBox1.Text);

rayd r = new rayd(i, n);

textBox2.Text = textBox2.Text + " s= " + Convert.ToString(r.sum(r.i, r.n)) + "\n ";

}

private void button2_Click(object sender, EventArgs e)

{

Close();

} }


hello_html_m688da85c.pnghello_html_407ce924.png












Язык программирования С#. Windows вариант

Условие:вычислить сумму ряда

1 .hello_html_mc477275.gif 2. hello_html_m6b778944.gif

hello_html_11852162.gif

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Лабы

{

class Class3_1

{

public double s;

public double t;

public double n;

public double p;

public Class3_1(double t)

{

this.t = t;

}

public double Calculate(double t, TextBox t2, TextBox t3)

{

n = 1;

p = Math.Pow(-1, n - 1) / Math.Pow(n, 4);

s = s + p;

while (Math.Abs(p) >= t)

{

p = Math.Pow(-1, n - 1) / Math.Pow(n, 2);

n = n + 1;

s = s + p;

}

t2.Text = Convert.ToString(s);

t3.Text = Convert.ToString(n);

return 0;

} }}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Лабы

{

class Class3

{

public double s;

public int i;

public int n;

public double g;

public double a;

public double x;

public Class3(double x, int n)

{

this.x = x;

this.n = n;

}

public double Calculate(double x, int n,TextBox t3)

{

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

{

double g = Math.Pow((-i), i + 1);

double a = ((Math.Pow(x, 3)) / (4 * Math.Pow(i, 2) - 1));

if (g < 0)

{

a = a * (-1);

}

else

{

s = s + a;

}

t3.Text = t3.Text + "" + Convert.ToString(s);

}

return 0; } }}


hello_html_m2a096a74.png



Лабораторная работа 4. Одномерные массивы на основе ООП. Языки программирования С#, С++, VB.NET

Цель занятия: изучить структуру программ по работе с одномерными массивами на основе использования метода объектно-ориентированного программирования, основные элементы структуры ООП: классы, объекты, а также повторить основные операторы языков программирования С++, С#, VB.NET. Получить навыки работ по составлению простейших проектов с использованием этих элементов управления и простейших операторов..


Язык программирования С#. Консольный вариант

Условие: Создать одномерный массив, получить массивы из положительных и отрицательных чисел

Программа

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication3

{

class Program

{

static void Main(string[] args)

{

String й = "Да";

while (й == "Да")

{

Console.WriteLine("\n\n\n\n\n\n\n\n " + " Одномерные массивы ");

Console.WriteLine();

Console.WriteLine("Условие : Создать массив, получить массивы положительных и отрицательных чисел");

Console.WriteLine();

Console.WriteLine(" Выполнил профессор Никишов В.К.");

Console.WriteLine();

Console.WriteLine();

Console.ReadKey();

Console.Clear();

// int[] для_конструктора = new int[25];

Console.WriteLine("Введите размерность массива :");

int n = int.Parse(Console.ReadLine());

int[] mas = new int[25];

int j;

Random rnd = new Random();

string s = "";

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

{

mas[i] = rnd.Next(-20, 20);

s = s + mas[i].ToString() + " ";

}

Console.WriteLine(" Исходный массив");

Console.WriteLine(s + " ");

int[] masP = new int[25];

j = 0;

s = "";

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

{

if (mas[i] > 0) { masP[j] = mas[i]; s = s + masP[j].ToString() + " "; j++; }

}

Console.WriteLine(" Массив из положительных чисел");

Console.WriteLine(s + " ");

j = 0;

s = "";

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

{

if (mas[i] < 0) { masP[j] = mas[i]; s = s + masP[j].ToString() + " "; j++; }

}

Console.WriteLine(" Массив из отрицательных чисел");

Console.WriteLine(s + " ");

s = "";

int[] a = new int[25];

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

{

s += a[i].ToString() + " ";


Console.ReadKey();

Console.WriteLine("Повторить программу ? Да/Нет ");

й = Console.ReadLine();

Console.Clear();

} } } }}



Язык программирования С#. Windows проект

Условие: создать одномерный массив, составить массивы из положительных и отрицательных чисел.

Программаhello_html_4a031329.png

Class1

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace WindowsFormsApplication4

{

class new_massiv

{

public int[] masP = new int[25];

public int[] masP1 = new int[25];

public int[] mas = new int[25];

public int j;

public int j1;

public int[] iznachalnii(int n, int[] mas)//генерация начального массива

{

Random rnd = new Random();

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

{

mas[i] = rnd.Next(-20, 20);

}

return mas;

}

public int [] polojitelnie(int n, int[] masP)//отбор массива положительных чисел

{

// int[] masP = new int[25];

j = 1;

j1=1;

string s = "";

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

{

if (mas[i] >= 0) { masP[j] = mas[i]; j++; }

else { masP1[j1] = mas[i]; j1++; };

// int k = j;

}

return masP;

// return s;

}

// public int[] otricatelnie(int n, int[] masP1)//отбор массива отрицательных чисел

{

int[] masP1 = new int[25];

int j1 = 1;

for (int i = 1; i

{

if (mas[i] < 0) { masP1[j1] = mas[i]; j1=j1+1; }

}

return masP1;

}

public string for_print(int[] a, int n)//создание строкового варианта массива для вывода на экран

{

string s = "";

//int k=n;

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

{

s += a[i].ToString() + " ";

}

return s;

}

public new_massiv(int[] s, int n)// конструктор

{

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

{

this.mas[i] = s[i];

} } } }

Form1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication4

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

int n;

string s;

int j;

int j1;

int[] mas = new int[25];

n = Convert.ToInt32( textBox1.Text);

new_massiv mymas = new new_massiv(mas,n);//объявление объекта

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

{

mymas.mas[i] = 0;

}

mymas.iznachalnii(n, mymas.mas);// функция начального массива

textBox2.Text = mymas.for_print(mymas.mas,n);//вывод массива

// textBox3.Text = textBox3.Text + " " + mymas.polojitelnie(mymas.s, j);

// mymas.otricatelnie(n, mymas.masP1);

// new_massiv mymas1 = new new_massiv(masP1, n);

mymas.polojitelnie(n,mymas.masP); j = 1;

//textBox3.Text = mymas.for_print(mymas.s);//вывод положительного массива

textBox3.Text = mymas.for_print(mymas.masP,mymas.j);//вывод положительного массива

mymas.polojitelnie(n, mymas.masP1); j1 = 1;

textBox5.Text = mymas.for_print(mymas.masP1, mymas.j1);//вывод отрицательного массива

}

private void button2_Click(object sender, EventArgs e)

{

Close();

}

private void Form1_Load(object sender, EventArgs e)

{ } } }














Блок – схема алгоритма


hello_html_m2bee8c5.gif




Программа на языке С#.NET. Windows вариант.

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

Программа

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Вычисление_АВ

{

class Class1

{

private int[] mas;

private int n; // количество элементов

int min,max;

public Class1(int n, int min, int max, TextBox t, TextBox t2, TextBox t3)

{

this.n = n;

this.min = min;

this.max = max;

t.Text = Convert.ToString(n);

t2.Text = Convert.ToString(min);

t3.Text = Convert.ToString(max);

}

public void Vvod(TextBox t, TextBox t2, TextBox t3)

{

try

{

n = Convert.ToInt32(t.Text);

min = Convert.ToInt32(t2.Text); //минимальное значение

max = Convert.ToInt32(t3.Text); //максимальное}

}

catch {}

}

public void Creating()

{

mas = new int[rr];

Random rand = new Random();

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

{

mas[i] = rand.Next(min, max);

} }

public void Vyvod1(TextBox t) //Генерируем массив

{

t.Text = null;

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

{

t.Text = t.Text + Convert.ToString(mas[i]) + " ";

} }

public void Puzyrek(CheckBox t) //сортируем с учетом флажка на Checkbox'е

{

bool g = t.Checked;

for (int i=n-1; i>0; i--)

for (int j=0;j

{

if ((mas[j] > mas[j + 1]) && g == false)

{

int buf = mas[j];

mas[j] = mas[j + 1];

mas[j + 1] = buf;

}

else if ((mas[j] < mas[j + 1]) && g == true)

{

int buf = mas[j];

mas[j] = mas[j + 1];

mas[j + 1] = buf;

} } }

public void Vyvod2(TextBox t) //выводим отсортированный массив

{

t.Text = null;

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

{

t.Text = t.Text + Convert.ToString(mas[i]) + " ";

} }

public void Vyvod3(TextBox t)//Находим сумму положительных элементов массива и выводим

{

int res=0;

t.Text = null;

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

{

if (mas[i]>0)

{

res = res + mas[i];

} }

t.Text = Convert.ToString(res);

} }}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Вычисление_АВ

{

public partial class Form4 : Form

{

public Form4()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Form1 aa2 = new Form1();

aa2.Show();

this.Hide();

}

private void Form4_Load(object sender, EventArgs e)

{ }

Class1 super;

private void button2_Click(object sender, EventArgs e)

{

super = new Class1(10, -10, 10, textBox1, textBox3, textBox4);

super.Vvod(textBox1, textBox3, textBox4);

super.Creating();

super.Vyvod1(textBox2);

}

private void button3_Click(object sender, EventArgs e)

{

super.Puzyrek(checkBox1);

super.Vyvod2(textBox5);

}

private void button4_Click(object sender, EventArgs e)

{

super.Vyvod3(textBox6);

} }}



Программа на языке С#.NET. Windows вариант.

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


Форма class

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Вычисление_АВ

{

class Class1

{

private int[] mas;

private int n; // количество элементов

int min,max;

public Class1(int n, int min, int max, TextBox t, TextBox t2, TextBox t3)

{

this.n = n;

this.min = min;

this.max = max;

t.Text = Convert.ToString(n);

t2.Text = Convert.ToString(min);

t3.Text = Convert.ToString(max);

}

public void Vvod(TextBox t, TextBox t2, TextBox t3)

{

try

{

n = Convert.ToInt32(t.Text);

min = Convert.ToInt32(t2.Text); //минимальное значение

max = Convert.ToInt32(t3.Text); //максимальное}

}

catch {}

}

public void Creating()

{

mas = new int[n];

Random rand = new Random();

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

{

mas[i] = rand.Next(min, max);

} }

public void Vyvod1(TextBox t) //Генерируем массив

{

t.Text = null;

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

{

t.Text = t.Text + Convert.ToString(mas[i]) + " ";

} }

public void Puzyrek(CheckBox t) //сортируем с учетом флажка на Checkbox'е

{

bool g = t.Checked;

for (int i=n-1; i>0; i--)

for (int j=0;j

{

if ((mas[j] > mas[j + 1]) && g == false)

{

int buf = mas[j];

mas[j] = mas[j + 1];

mas[j + 1] = buf;

}

else if ((mas[j] < mas[j + 1]) && g == true)

{

int buf = mas[j];

mas[j] = mas[j + 1];

mas[j + 1] = buf;

} } }

public void Vyvod2(TextBox t) //выводим отсортированный массив

{

t.Text = null;

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

{

t.Text = t.Text + Convert.ToString(mas[i]) + " ";

} }

public void Vyvod3(TextBox t)//Находим сумму положительных элементов массива и выводим

{

int res=0;

t.Text = null;

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

{

if (mas[i]>0)

{

res = res + mas[i];

} }

t.Text = Convert.ToString(res);

} }}

Форма 4

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Вычисление_АВ

{

public partial class Form4 : Form

{

public Form4()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Form1 aa2 = new Form1();

aa2.Show();

this.Hide();

}

private void Form4_Load(object sender, EventArgs e)

{ }

Class1 super;

private void button2_Click(object sender, EventArgs e)

{

super = new Class1(10, -10, 10, textBox1, textBox3, textBox4);

super.Vvod(textBox1, textBox3, textBox4);

super.Creating();

super.Vyvod1(textBox2);

}

private void button3_Click(object sender, EventArgs e)

{

super.Puzyrek(checkBox1);

super.Vyvod2(textBox5);

}

private void button4_Click(object sender, EventArgs e)

{

super.Vyvod3(textBox6);

} }}




Блоксхема алгоритма





hello_html_m53fa7fc5.gif








Блок – схема алгоритма функций



hello_html_410bc07.png












Программа на языке С#.NET. Windows вариант.

Условие: создать одномерный массив и выполнить поиск элементов массива.


Блоксхема алгоритма


hello_html_m1ff658d0.gif







Программа

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Massiv14

{

class Class1

{

public int[] rnd(TextBox T)

{

int[] arr = new int[Convert.ToInt16(T.Text)];

Random rnd1 = new Random();

for (int i = 0; i < Convert.ToInt16(T.Text); i++)

{

arr[i] = rnd1.Next(-20, 20);

}

return arr;

}

public void show(TextBox textBox1, int[] arr)

{

textBox1.Text = "";

for (int i = 0; i < arr.Length; i++)

{

textBox1.Text = textBox1.Text + " " + Convert.ToString(arr[i]);

} }

public void poisk(TextBox number1, TextBox mesto, int[] arr)//Получаем из number1 число и сравниваем с массивом arr

{

if (arr == null)

{//Проверка : сгенерирван ли массив?

mesto.Text = "Массив не сгенерирован";

}

else

{

for (int i = 0; i < arr.Length; i++)

{

if (Convert.ToInt16(number1.Text) == arr[i])

{ //Поиск элемента в массиве

mesto.Text = Convert.ToString(i + 1);

break;

}

else

{

mesto.Text = "Элемент не найден";

} } } } }}

Форма 3

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Massiv14

{

public partial class Form3 : Form

{

public Form3()

{

InitializeComponent();

}

int[] arr;

Class1 msv = new Class1(); //Создание объекта

private void button1_Click(object sender, EventArgs e)

{

arr = msv.rnd(textBox1);

msv.show(textBox2, arr);

}

private void button3_Click(object sender, EventArgs e)

{

Close();

}


private void button4_Click_1(object sender, EventArgs e)

{

msv.poisk(textBox3, textBox4, arr); //вывод места числа

} }}



Формы проекта



hello_html_m17d170a0.pnghello_html_m6955da68.png



Программа на языке С#.NET. Windows вариант.


Условие: создать проект Музеи ( название, место, стоимость билета, время работы. Ввести данные в компонент ListBox и определить минимальную стоимость билета


hello_html_m13013b8c.pnghello_html_cffe3b4.png


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication12

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

class Musej

{

public string name;

public string adress;

public int cena;

public int wr_r;

public void Wwod(TextBox t1, TextBox t2, TextBox t3, TextBox t4)

{

name = t1.Text;

adress = t2.Text;

cena = Convert.ToInt16(t3.Text);

wr_r = Convert.ToInt16(t4.Text);

}

public string Wiwod()

{

return (name + " " + adress + " " + Convert.ToString(cena) + " " + Convert.ToString(wr_r));

}

public int Poisk(int min)

{

if (cena < min) min = cena;

return min;

} }

int i, j;

Musej[] mus = new Musej[10];

private void button1_Click_1(object sender, EventArgs e)

{

mus[i] = new Musej();

mus[i].Wwod(textBox1, textBox2, textBox3, textBox4);

i++;

}

// кнопка вывод

private void button2_Click_1(object sender, EventArgs e)

{

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

{

// textBox5.Text = textBox5.Text + mus[j].Wiwod() + "\n";

listBox1.Items.Add(mus[j].Wiwod());

} }

// кнопка поиск

private void button3_Click_1(object sender, EventArgs e)

{

int min;

min = mus[0].cena;

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

{

min = mus[j].Poisk(min);

}

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

{

if (mus[j].cena == min) textBox6.Text = mus[j].name + " " + mus[j].adress + " " + Convert.ToString(mus[j].cena) + " " + Convert.ToString(mus[j].wr_r);

} }

private void button4_Click_1(object sender, EventArgs e)

{

Form1 f1 = new Form1();

Form2.ActiveForm.Hide();

f1.Show();

} }}


Программа на языке с#.net. Windows проект.

Условие:создать одномерный массив с использованием случайного датчика для выбора размерности и выполнить сортировку методом вставки по возрастанию.


Класс одномерного массива

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace ооп_массивы

{

public partial class One : Form

{

public One()

{

InitializeComponent();

}

class OneM// класс OneM

{

public int size;

private int[] mas;

public String CreateM()

{

Random r = new Random();

size = r.Next(3, 20);

mas = new int[size];

//заполнение массива

String s = "";

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

{

int w = r.Next(-100, 100);

mas[i] = w;

s = s + w.ToString() + " ";

}

return s;

}

public String SortMas()

{

//сортировка массива

string s = "";

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

{

for (int j = i + 1; j < size; j++)

{

if (mas[i] < mas[j])

else

{

int tmp = mas[j];

mas[j] = mas[i];

mas[i] = tmp;

}

s = s + mas[i] + " ";

}

return s;

} };

private void One_FormClosed(object sender, FormClosedEventArgs e)

{

this.Hide();

Form1 f = new Form1();

f.Show();

}

private void One_Load(object sender, EventArgs e)

{

OneM obM = new OneM();//объект

label4.Text = obM.CreateM();

label6.Text = obM.SortM();

label2.Text = obM.size.ToString();

}

private void button1_Click(object sender, EventArgs e)

{

OneM obM = new OneM();

label4.Text = obM.CreateM();

label6.Text = obM.SortM();

label2.Text = obM.size.ToString();

} }}


Осн форма

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace ооп_массивы

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void авторToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Студент группы 31-12 Бурлаков М.Н.", "Работу выполнил");

}

private void заданиеToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Выполнить сортировку методом вставки с одномерным массивом");

}

Private void одномерный Массив ToolStripMenuItem_Click(object sender, EventArgs e)

{

this.Hide();

One f = new One();

f.Show();

}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)

{

Application.Exit();

} }}





hello_html_m1d8193ff.png









Блоксхема алгоритма





hello_html_m20af00ef.gif






Программа на языке С++.NET. Windows вариант

Условие: создать одномерный массив и отсортировать методом пузырька по возрастнию.

Класс одномерного массива

#pragma once

class OneMatrix

{

private:

int size;

int *matrix;

public:

OneMatrix(int n)

{

size = n;

matrix = new int[size];

}

System::String^ CreateMatrix()

{

System::Random^ rnd = gcnew System::Random();

System::String^ str = "";

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

{

matrix[i] = rnd->Next(-50, 50);

str += matrix[i].ToString()+" ";

}

return str;

}

System::String^ SortMatrix()

{

System::String^ str = "";

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

{

int min = i;

for (int j = i + 1; j < size; j++)

{

if (matrix[j] < matrix[min])

min = j;

}

if (min != i)

{

int tmp = matrix[min];

matrix[min] = matrix[i];

matrix[i] = tmp;

}

str += matrix[i] + " ";

}

return str;

}};

#pragma endregion

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

OneMatrix *matrix = new OneMatrix(Convert::ToInt32(textBox1->Text));

textBox2->Text = matrix->CreateMatrix();

textBox3->Text = matrix->SortMatrix();

}

private: System::Void One_FormClosed(System::Object^ sender, System::Windows::Forms::FormClosedEventArgs^ e) {

Visible = false;

}

private: System::Void заданиеToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

}};}

private: System::Void Many_FormClosed(System::Object^ sender, System::Windows::Forms::FormClosedEventArgs^ e) {

Visible = false;

}

private: System::Void заданиеToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

Zad2^ z = gcnew Zad2();

z->Show();

}};}

Формы проекта


hello_html_m489d51c5.png



Программа на языке С#.NET. Windows вариант.

Условие: вычислить сумму элементов с нечетными номерами, преобразовать массив с изменением мест ( первый поменять на последний, второй на предпоследний и т. д.), вычислить сумму элементов между первым отрицательным и последним элементами, из двух массивов разной размерности сформировать общий массив, вычислить сумму элементов, стоящих на нечетных местах.

Блок – схема алгоритма



hello_html_m44e27c3.gif


Блок – схема алгоритма функций




hello_html_m27eb467f.gif

Программа

Форма class1

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;

using System.Windows.Forms;

namespace Arr

{

class Class1

{

//Создание массива(n - количество элементов в массиве)

public static ArrayList NewCollection(int n)

{

Random rnd = new Random();

ArrayList arr = new ArrayList();

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

arr.Add(rnd.Next(-50, 50));

return arr;

}

//Вывод массива в TextBox

public static void WriteMyCollection(ArrayList arr, TextBox tb)

{

foreach (int a in arr)

tb.Text = tb.Text +" "+ a;

}

//Вычисление суммы элементов с нечетными номерами

public static void Summ(ArrayList arr, TextBox t3, int n)

{

int s = 0;

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

{

if(i%2==0)

{

s = s + (int)arr[i];

} }

t3.Text = t3.Text + s;

}

//Замена элементов массива местами - первый с последним, второй - с предпоследним и т.д.):

public static void Change(ArrayList arr, TextBox t4, int n)

{

for (int i = n - 1; i >= 0; i--)

{

t4.Text = t4.Text + " " + arr[i];

}

}

//Сумма элементов, находящихся между первым и последним отрицательными элементами

public static void SummBetween(ArrayList arr, TextBox t5, int n)

{

int minIndex = 0;

int maxIndex = 0;

int s = 0;

//Поиск первого отрицательного элемента

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

{

if ((int)arr[i] < 0)

{

minIndex = i;

break;

} }

//Поиск последнего отрицательного элемента

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

{

if ((int)arr[i] < 0)

{

maxIndex = i;

}

}

//Нахождение суммы

for (int i = minIndex + 1; i <= maxIndex - 1; i++)

{

s = s + (int)arr[i];

}

t5.Text = t5.Text + s;

}

//Создание общего массива из двух массивов

public static void Four(ArrayList coll1, ArrayList coll2, int f, TextBox t10, TextBox t11)

{

int s=0;

coll1.AddRange(coll2);

foreach (int a in coll1)

t10.Text = t10.Text + " " + a;

//Вычисление суммы положительных элементов, стоящих на нечетных местах

for (int j = 0; j < f; j++)

{

if(j%2==0 && (int)coll1[j]>0)

{

s = s + (int)coll1[j];

} }

t11.Text = t11.Text + s;

} }}

Форма 2

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Collections;

namespace Arr

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

ArrayList coll1;

ArrayList coll2;

int f;

public int a;

public int b;

private void button1_Click(object sender, EventArgs e)

{

textBox2.Clear(); textBox3.Clear(); textBox4.Clear(); textBox5.Clear();

int i = Convert.ToInt32(textBox1.Text);

ArrayList coll = Class1.NewCollection(i);

Class1.WriteMyCollection(coll, textBox2);

Class1.Summ(coll, textBox3, i);

Class1.Change(coll, textBox4, i);

Class1.SummBetween(coll, textBox5, i);

}

private void button4_Click(object sender, EventArgs e)

{

textBox8.Clear();

a = Convert.ToInt32(textBox6.Text);

coll1 = Class1.NewCollection(a);

Class1.WriteMyCollection(coll1, textBox8);

}

private void button2_Click(object sender, EventArgs e)

{

textBox9.Clear();

b = Convert.ToInt32(textBox7.Text);

coll2 = Class1.NewCollection(b);

Class1.WriteMyCollection(coll2, textBox9);

}

private void button3_Click(object sender, EventArgs e)

{

textBox10.Clear(); textBox11.Clear();

f = a + b;

Class1.Four(coll1, coll2, f, textBox10, textBox11);

} }}

Форма проекта.



hello_html_m21e14822.png


Программа на языке VB.NET. Windows вариант. Разработка массива на основе стандартного класса

Array List

Условие: разработать Windows -приложений с использованием объектно-ориентированного метода программирования по созданию массива на основе использования класса Array List

Public Class Form2

Dim n, i, t, p, z As Integer

Dim strana, transport As String

Dim x As String

Dim mylist As New ArrayList()

Dim f As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

n = Val(TextBox1.Text) “ввод количества предложений

ListBox1.Items.Clear()

mylist.Clear()

For Me.i = 1 To n “ввод данных

strana = InputBox(«введите элемент массива»)

вывод в Listbox

mylist.Add(strana)

ListBox1.Items.Add(Str(i) + « « + mylist.Item(i - 1))

Next

End Sub

Private Sub НазадToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles НазадToolStripMenuItem.Click

Form1.Show()

Me.Hide()

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

добавление нового элемента

strana = InputBox(«введите элемент массива»)

mylist.Add(strana)

ListBox1.Items.Add(Str(i) + « « + mylist.Item(ListBox1.Items.Count))

i = i + 1

n = n + 1

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

ListBox1.Items.Clear()

For Me.i = 1 To n “сортировка

mylist.Sort()

ListBox1.Items.Add(Str(i) + « « + mylist.Item(i - 1))

Next

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

удаление элемента

mylist.Remove(mylist.Item(f))

n = n - 1

ListBox1.Items.Clear()

For Me.i = 1 To n

ListBox1.Items.Add(Str(i) + « « + mylist.Item(i - 1))

Next

End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

f = ListBox1.SelectedIndex

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

x = TextBox2.Text

If mylist.IndexOf(x) >= 0 Then

ListBox1.SelectedIndex = mylist.IndexOf(x)

Else : MsgBox(«по вашему запросу ничего не найдено»)

End If

End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

End Sub

End Class

Public Class Form1

Private Sub УсловиеToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles УсловиеToolStripMenuItem.Click

Form3.Show()

Me.Hide()

End Sub

Private Sub АвторToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles АвторToolStripMenuItem.Click

Form4.Show()

Me.Hide()

End Sub

Private Sub ВыходToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ВыходToolStripMenuItem.Click

Close()

End Sub

Private Sub НачалоToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles НачалоToolStripMenuItem.Click

Form2.Show() Me.Hide();End Class End Sub


hello_html_m443882e.gifhello_html_1beaf53c.gif

hello_html_m595e9c3c.gifhello_html_m77c4b0c6.gif



Лабораторная работа 5. Двумерные массивы на основе

ООП. Языки программирования С#, С++, VB.NET

Программа на языке С#. Windows вариант

Цель занятия: создать двумерный массив с во случайным датчиком выбора размерности массива и поменять знаки чисел массива


Класс 2-х массив

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace ооп_массивы

{

public partial class Many : Form

{

class ManyMatrix

{

public int m, n;

double[,] matrix = new double[10, 10];

public ManyMatrix(DataGridView dgv1, DataGridView dgv2)

{

//очищаем массив

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

for (int j = 0; j < 10; j++)

{

dgv1.Rows[i].Cells[j].Value = "";

dgv2.Rows[i].Cells[j].Value = "";

} }

public void CreateMatrix(DataGridView dgv)

{

Random rnd = new Random();

m = rnd.Next(3, 11);

n = rnd.Next(3, 11);

//заполняем массив данными

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

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

{

dgv.Rows[i].Cells[j].Value = "";

matrix[i, j] = rnd.Next(-50, 50);

dgv.Rows[i].Cells[j].Value = matrix[i, j].ToString();

} }

public void IzmenMatrix(DataGridView dgv)

{

//изменяем массив

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

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

{

matrix[i, j] = -matrix[i, j];

dgv.Rows[i].Cells[j].Value = matrix[i, j].ToString();

} } }


public Many()

{

InitializeComponent();

}

private void Many_FormClosed(object sender, FormClosedEventArgs e)

{

this.Hide();

Form1 f = new Form1();

f.Show();

}

private void Many_Load(object sender, EventArgs e)

{

//создаём две таблицы размером 10 на 10

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

{

DataGridViewTextBoxColumn q = new DataGridViewTextBoxColumn();

q.Width = 24;

q.Resizable = DataGridViewTriState.False;

dataGridView1.Columns.Add(q);

DataGridViewTextBoxColumn qq = new DataGridViewTextBoxColumn();

qq.Width = 24;

qq.Resizable = DataGridViewTriState.False;

dataGridView2.Columns.Add(qq);

}

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

{

dataGridView1.Rows.Add();

dataGridView2.Rows.Add();

}

ManyMatrix manyM = new ManyMatrix(dataGridView1, dataGridView2);

manyM.CreateMatrix(dataGridView1);

manyM.IzmenMatrix(dataGridView2);

label2.Text = "Размер массива " + manyM.m + " x " + manyM.n;

}

private void button1_Click(object sender, EventArgs e)

{

ManyMatrix manyM = new ManyMatrix(dataGridView1, dataGridView2);

manyM.CreateMatrix(dataGridView1);

manyM.IzmenMatrix(dataGridView2);

label2.Text = "Размер массива " + manyM.m + " x " + manyM.n;

} }}



hello_html_2e8e221e.png



Программа на языке С++. Windows вариант

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

Класс двумерного массива

pragma once

class ManyMatrix

{

private:

int sizeX, sizeY;

int *matrix;

public:

ManyMatrix(int x, int y)

{

sizeX = x;

sizeY = y;

matrix = new int[sizeX, sizeY];

}

void AddColumns(System::Windows::Forms::DataGridView^ d)

{

System::Windows::Forms::DataGridViewColumn^ col;

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

{

col = gcnew System::Windows::Forms::DataGridViewTextBoxColumn();

col->DataPropertyName = "" + i.ToString();

col->Name = "" + (i + 1).ToString();

d->Columns->Add(col);

} }

void AddRows(System::Windows::Forms::DataGridView^ d)

{

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

{

d->Rows->Add();

} }

void Fill(System::Windows::Forms::DataGridView^ d)

{

System::Random^ rnd = gcnew System::Random();

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

for (int j = 0; j < sizeY; j++)

{

matrix[i, j] = rnd->Next(-50, 50);

d->Rows[i]->Cells[j]->Value = matrix[i, j].ToString();

} }

void Transform(System::Windows::Forms::DataGridView^ d, System::Windows::Forms::DataGridView^ d2)

{

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

for (int j = 0; j < sizeY; j++)

{

if (d2->Rows[i]->Cells[j]->Value->ToString()[0] == '-')

d->Rows[i]->Cells[j]->Value = d2->Rows[i]->Cells[j]->Value->ToString()->Substring(1);

else

d->Rows[i]->Cells[j]->Value = d2->Rows[i]->Cells[j]->Value;

} }};

Zad1^ z = gcnew Zad1();// объект

z->Show();



hello_html_m17c38346.png


Лабораторная работа 6. Символьные данные ООП

Цель занятия: изучить структуру программ для построения графических объектов на основе использования метода объектно-ориентированного программирования

Программ на языке С#.NET. Windows проект

Условие: ввести символьную строку из слов, которые разделены пробелами. Необходимо:определить количество слов, самое короткое слово и его номер, сколько раз в каждом слове встечается буква «А»


hello_html_m67938780.png



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;


namespace Особое_задание

{

class Class1

{

public string text;

private int count = 0;

private int temp = 0;

private int count1 = 0;

public Class1(TextBox t, Label l2, Label l4, ListBox lb)

{


text = t.Text;

}

public void Creating(TextBox t, Label l2, Label l4, ListBox lb)

{

// Определяем количество слов

string[] str = text.Split(new char[] { ' ', ',','.','?','!' }, StringSplitOptions.RemoveEmptyEntries);

count = str.Length;

l2.Text = Convert.ToString(count);// вывод количества слов

// определяем минимум и его индекс

int min = str[0].Length;

for (int i = 0; i < str.Length; i++)

{

if (str[i].Length < min)

{

min = str[i].Length;

temp = i;

} }

l4.Text = Convert.ToString(str[temp]+" : под индексом "+temp);// вывод индекса

lb.Items.Clear();

// определяем сколько раз "А" встречается в каждом слове

int[] name = new int[str.Length];

for (int i = 0; i < str.Length; i++)

{

for (int j = 0; j < str[i].Length; j++)

{

if (str[i][j] == 'а')

{

count1++;

name[i] = count1;

} } }

string a="";

for (int i = 0; i < str.Length; i++)

{

a= Convert.ToString(str[i] + " : буква 'A' встречается " + name[i] + " раз\n");// вывод количества букв "a"

lb.Items.Add(a);

} } }}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Особое_задание

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

Class1 qwe;

private void button1_Click(object sender, EventArgs e)

{

//объект

qwe = new Class1(textBox1, label2, label4, listBox1);

// выполнение функций

qwe.Creating(textBox1,label2, label4, listBox1);

}

private void условиеToolStripMenuItem_Click(object sender, EventArgs e)

{

Form2 f2 = new Form2();

f2.Show();

}

private void авторToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Выполнил Яковлев Андрей");

}

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

private void button2_Click(object sender, EventArgs e)

{

Close();

} }}















Блок – схема алгоритма







hello_html_56f7ee4d.gif













Лабораторная работа 7. Графика ООП

Цель занятия: изучить структуру программ для построения графических объектов на основе использования метода объектно-ориентированного программирования

Программ на языке С#.NET. Windows проект

Условие: построить график функии Sin(x), Cos(x) с использования компонента CHART

Описание класса

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Windows.Forms.DataVisualization.Charting;

namespace _1_Графика

{

class Class1

{

public double[] x;

public double[] y1;

public double[] y2;

public double XMin;

public double XMax;

public double Step;

public Class1(double XMin, double XMax, double Step)

{

this.XMin = XMin;

this.XMax = XMax;

this.Step = Step;

}

public double Sin(double XMin, double XMax, double Step, TextBox t1, TextBox t2, TextBox t3,Chart ch)

{

//ch.Series[0].Points.Clear();

int count = (int)Math.Ceiling((XMax - XMin) / Step) + 1;

x = new double[count];

y1 = new double[count];

//y2 = new double[count];

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

{

// Вычисляем значение X

x[i] = XMin + Step * i;

// Вычисляем значение функций в точке X

y1[i] = Math.Sin(x[i]);

//y2[i] = Math.Cos(x[i]);

}

ch.Series[0].Points.DataBindXY(x, y1);

return 0;

}

public double Cos(double XMin, double XMax, double Step, TextBox t1, TextBox t2, TextBox t3, Chart ch)

{

//ch.Series[0].Points.Clear();

int count = (int)Math.Ceiling((XMax - XMin) / Step) + 1;

x = new double[count];

//y1 = new double[count];

y2 = new double[count];

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

{

// Вычисляем значение X

x[i] = XMin + Step * i;

// Вычисляем значение функций в точке X

//y1[i] = Math.Sin(x[i]);

y2[i] = Math.Cos(x[i]);

}

ch.Series[1].Points.DataBindXY(x, y2);

return 0;

} }}

Форма для объектов

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace _1_Графика

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

// sin

private void button1_Click(object sender, EventArgs e)

{

double XMin = Convert.ToDouble(textBox1.Text);

double XMax = Convert.ToDouble(textBox2.Text);

double Step = Convert.ToDouble(textBox3.Text);

// объект graph

Class1 graph = new Class1(XMin, XMax, Step);

graph.Sin(XMin, XMax, Step, textBox1, textBox2, textBox3, chart1);

}

// cos

private void button2_Click(object sender, EventArgs e)

{

double XMin = Convert.ToDouble(textBox1.Text);

double XMax = Convert.ToDouble(textBox2.Text);

double Step = Convert.ToDouble(textBox3.Text);

// объект graph

Class1 graph = new Class1(XMin, XMax, Step);

graph.Cos(XMin, XMax, Step, textBox1, textBox2, textBox3, chart1);

}

private void авторToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Работу выполнил студент гр. ДиКТ 31-12 Николаев Николай");

}

private void условиеToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Нарисовать график Sin или Cos по заданным значениям");

}

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Application.Exit();

}

private void алгоритмToolStripMenuItem_Click(object sender, EventArgs e)

{

Form2 f2 = new Form2();

f2.Show();

} }}




Форма проекта


hello_html_m64d77c7f.png





Блок – схема алгоритма



hello_html_23c058d3.gif



Программа на языке C#.NET. Windows вариант.

Условие: разработать программу динамической графики

перемещения объекта, например, беспилотного

летательного аппарата по траектории границ Чувашии



hello_html_6867e960.pnghello_html_12767641.png



hello_html_74727493.png



Программа

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace динамическая_графика

{

class Class1

{

private int midx, midy, t;

//Задание новой системы координат

public void set_xy(Form2 Form)

{

Graphics g = Form.CreateGraphics();

midx = Form.Width / 2;

midy = Form.Height / 2;

g.TranslateTransform(midx, midy);

}

//Движение картинки по разным направлениям

public void timer(Timer tick, RadioButton rB, PictureBox pB)

{

tick.Enabled = true;

if (rB.Checked == true) t += 1;

else t -= 1;

SolidBrush solidBrush_Color1 = new SolidBrush(Color.Red);

pB.Top = midy - 40 + Convert.ToInt16(180 * Math.Cos(t * (3.1415 / 180)));

pB.Left = midx + Convert.ToInt16(150 * Math.Sin(t * (3.1415 / 180)));

pB.Refresh();

}

//Остановка движения

public void check(Timer tick)

{

if (tick.Enabled == true)

tick.Enabled = false;

else tick.Enabled = true;

} }}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;


namespace динамическая_графика

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

Class1 graph = new Class1();

public int a, t = 0, midx, midy;

private void Form2_Load(object sender, EventArgs e)

{

graph.set_xy(this);

}

private void button1_Click(object sender, EventArgs e)

{

Form1 f1 = new Form1();

Form2.ActiveForm.Hide();

f1.Show();

}

private void timer1_Tick(object sender, EventArgs e)

{

graph.timer(timer1, radioButton1, pictureBox1);

}

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

graph.check(timer1);

} }}











Блоксхема алгоритма





hello_html_m4d54e0ee.gif












Лабораторная работа 8. Файлы ООП

Цель занятия: изучить структуру программ с файлами на основе использования метода объектно-ориентированного программирования. Методы работ с файлами: запись и открытие файлов, поиска данных в структурах файла, добавление данных в таблицы.

Программа на языке C#.NET. Файлы. Windows вариант

Пример 1.

Условие: разработать программу для ввода сведений об успеваемости студентов в таблицу ( фамилии, курс, номер группы, номер зачетки и средний балл об успеваемости)



Блок – схема алгоритма


hello_html_1077e2a5.gif





Программа

using System;

using System.Collections.Generic;

using System.ComponentModel;hello_html_1f45ca31.png

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

namespace СУБД_студентов

{

class Class1

{

public string fio;

public string course;

public string group;

public string number;

public string sr_ball;

public int ind;

public Class1(int ind)

{

this.ind = ind;

}

public void addNote(string fio, string course, string group, string number, string sr_ball, DataGridView dgw)

{

dgw.Rows.Add(fio, course, group, number, sr_ball);

}

public void removeNote(int ind, DataGridView dgw)

{

dgw.Rows.RemoveAt(ind);

}

//Открытие файла

public void openFile(OpenFileDialog ofd, DataGridView dgw)

{

Stream mystr = null;

if (ofd.ShowDialog() == DialogResult.OK)

{

if ((mystr = ofd.OpenFile()) != null)

{

StreamReader myread = new StreamReader(mystr);

string[] str;

int num = 0;

try

{

string[] str1 = myread.ReadToEnd().Split('\n');

num = str1.Count();

dgw.RowCount = num;

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

{

str = str1[i].Split('^');

for (int j = 0; j < dgw.ColumnCount; j++)

{

try

{

string data = str[j].Replace("[etot_simvol]", "^");

dgw.Rows[i].Cells[j].Value = data;

}

catch { }

} } }

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

myread.Close();

} } } }

//Сохранение файла

public void saveFile(SaveFileDialog sfd, DataGridView dgw)

{

Stream myStream;

if (sfd.ShowDialog() == DialogResult.OK)

{

if ((myStream = sfd.OpenFile()) != null)

{

StreamWriter myWritet = new StreamWriter(myStream);

try

{

for (int i = 0; i < dgw.RowCount - 1; i++)

{

for (int j = 0; j < dgw.ColumnCount; j++)

{

string data = dgw.Rows[i].Cells[j].Value.ToString().Replace("^", "[etot_simvol]");

myWritet.Write(data + "^");

}

myWritet.WriteLine();

} }

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

myWritet.Close();

} myStream.Close();

} } } }}

//добавить

private void button1_Click(object sender, EventArgs e)

{

string fio = Convert.ToString(textBox1.Text);

string course = Convert.ToString(textBox2.Text);

string group = Convert.ToString(textBox3.Text);

string number = Convert.ToString(textBox4.Text);

string sr_ball = Convert.ToString(textBox5.Text);

// объект

Class1 db = new Class1(ind);

db.addNote(fio, course, group, number, sr_ball, dataGridView1);

}

private void button2_Click(object sender, EventArgs e)

{

dataGridView1.Rows.Clear();

}

private void button3_Click(object sender, EventArgs e)

{

int ind = dataGridView1.SelectedCells[0].RowIndex;

Class1 shop = new Class1(ind);

shop.removeNote(ind, dataGridView1);

}

private void открытьToolStripMenuItem_Click(object sender, EventArgs e)

{

Class1 shop = new Class1(ind);

shop.openFile(openFileDialog1, dataGridView1);

}

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

Class1 shop = new Class1(ind);

shop.saveFile(saveFileDialog1, dataGridView1);

} } }


Лабораторная работа 9. Наследование ООП

Цель занятия: изучить структуру программ с учетом наследуемых классов на основе использования метода объектно-ориентированного программирования

Программа на языке C#.NET. Наследование.Windows вариант

Условие: создать проект Студенты с использованием свойства ООП наследование. Данные первого класса ( фамилия, год рождения, группа), данные второго класса ( тема, оценка)


hello_html_m29de1240.png


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;

using System.Windows.Forms;

namespace Students

{

// описание данных класса

public class STUDENTS

{

public int id;//порядковый номер

public string fio;//ФИО студента

public uint year;//год рождения

public uint group;//группа

}

public class STUD//

{

// функции класса

public ArrayList stud = new ArrayList();//создание списка студентов

int i = 0;

public void AddSTUDENTS(string ini, uint ye, uint gr)

//Добавление в список нового студента

{

STUDENTS stu = new STUDENTS();

stud.Add(new STUDENTS { id = ++i, fio = ini, year = ye, group = gr });

} }

// наследуемый класс

public class predmet : STUDENTS //класс предмет наследник класса студенты

{

public new int id;

public string tema;//Тема

public uint mark;//Оценка

}

public class predm : STUD //класс работы с темой наследник класса со студентами

{

public ArrayList temx = new ArrayList();//создание списка тем

int i = 0;

public void AddSTUDENTS(string tema, uint mark)

{

predmet temy = new predmet();

temx.Add(new predmet { id = ++i, tema = tema, mark = mark });

} }}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Collections;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO.Compression;

namespace Students

{

public partial class Form1 : Form

{

STUD st = new STUD();//создание объекта таблицы студентов

predm Pre = new predm();//создание объекта таблицы тем

public string[] str = new string[7];//Массив сообщений

public Form1()

{

InitializeComponent();

dataGridView1.ColumnCount = 4;

dataGridView2.ColumnCount = 3;

dataGridView1.Columns[0].Name = "№";

dataGridView1.Columns[1].Name = "ФИО студента";

dataGridView1.Columns[2].Name = "Год рождения";

dataGridView1.Columns[3].Name = "Группа";

dataGridView1.Columns[0].Width = 35;

dataGridView1.Columns[1].Width = 150;

dataGridView1.Columns[2].Width = 100;

dataGridView1.Columns[3].Width = 100;

dataGridView2.Columns[0].Name = "№";

dataGridView2.Columns[1].Name = "Тема";

dataGridView2.Columns[2].Name = "Оценка";

dataGridView2.Columns[0].Width = 35;

dataGridView2.Columns[1].Width = 150;

dataGridView2.Columns[2].Width = 100;

}

private void ViewSTUDENTS()//Процедура вывода списка

{

dataGridView1.Rows.Clear();//

foreach (STUDENTS stu in st.stud)

{

string[] row = { Convert.ToString(stu.id) + "", Convert.ToString(stu.fio) + "", Convert.ToString(stu.year) + "", Convert.ToString(stu.group) + "" };

dataGridView1.Rows.Add(row);

}

dataGridView2.Rows.Clear();//

foreach (predmet put in Pre.temx)

{

string[] row2 = { Convert.ToString(put.id), put.tema, " " + Convert.ToString(put.mark) };

dataGridView2.Rows.Add(row2);

} }

private void ViewSTUDENT(IEnumerable search_nomer)//Процедура вывода списка студентов в таблицу

{

dataGridView1.Rows.Clear();//

foreach (STUDENTS stu in search_nomer)

{

string[] row = { Convert.ToString(stu.id) + "", Convert.ToString(stu.fio) + "", Convert.ToString(stu.year) + "", Convert.ToString(stu.group) + "" };

dataGridView1.Rows.Add(row);

} }

private void Viewadrs(IEnumerable search_predmet)//Процедура вывода списка тем в таблицу

{

dataGridView2.Rows.Clear();//

foreach (predmet put in search_predmet)

{

string[] row2 = { Convert.ToString(put.id), put.tema, "" + Convert.ToString(put.mark) };

dataGridView2.Rows.Add(row2);

} }

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

private void авторToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Автор программы: студент группы ДиКТ 31-12 Данилов Сергей");

}

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

string temas; bol = button2.Enabled;

saveFileDialog1.ShowDialog();

temas = saveFileDialog1.FileName;//путь сохранения файла

if (temas != "")

{

try

{

FileStream fs = new FileStream(temas, FileMode.Create); //создание файл для сохранения

GZipStream gzs = new GZipStream(fs, CompressionMode. Compress); //создание способа сжатия

BinaryFormatter bf = new BinaryFormatter();//создание бинарного формата записи в файл

bf.Serialize(gzs, st.stud);//записывание в файл таблицу 1

bf.Serialize(gzs, Pre.temx);//записывание в файл таблицу 2

// bf.Serialize(gzs, bol);//записывание значение доступности кнопки "deleted студента"

gzs.Close();//закрытие способа сжатия

fs.Close();//закрытие файла

}

catch (Exception)

{

return;

} } }

// функция открыть

private void открытьToolStripMenuItem_Click(object sender, EventArgs e)

{

string puti;

openFileDialog1.ShowDialog();

puti = openFileDialog1.FileName;//путь открытия файла

if (puti != "")

{

try

{

FileStream fs = new FileStream(puti, FileMode.Open);//создание потока для открытия файла

GZipStream gzs = new GZipStream(fs, CompressionMode.Decompress);//создание распоковки файла

BinaryFormatter bf = new BinaryFormatter();//создание бинарного формата записи в файл

st.stud = (ArrayList)bf.Deserialize(gzs);//запись в таблицу 1

Pre.temx = (ArrayList)bf.Deserialize(gzs);//запись в таблицу 2

gzs.Close();//закрытие способа распоковки файла

fs.Close();//закрытие файла

ViewSTUDENTS();//вывод на экран файл в две таблицы

}

catch (Exception)

{

return;

} } }

// функция новая таблица

private void новаяТаблицаToolStripMenuItem_Click(object sender, EventArgs e)

{ {

st.stud.Clear();

Pre.temx.Clear();

dataGridView1.Rows.Clear();

dataGridView2.Rows.Clear();

} }

// функция добавить

private void button1_Click(object sender, EventArgs e)

{

string fio;//ФИО

uint ye;//год рождения

uint gr;//группа

string temm;//тема

uint mm;//оценка

{//проверка корректности ввода

try

{

mm = Convert.ToUInt32(textBox4.Text);

}

catch (Exception)

{

textBox4.Text = "";

return;

}

try

{

fio = Convert.ToString(textBox1.Text);

}

catch (Exception)

{

return;

}

try

{

ye = Convert.ToUInt32(textBox2.Text);

}

catch (Exception)

{

textBox2.Text = "";

return;

}

try

{

gr = Convert.ToUInt32(textBox3.Text);

}

catch (Exception)

{

textBox3.Text = ""; return;

}

temm = textBox5.Text;

st.AddSTUDENTS(fio, ye, gr);

//добавление номера в таблицу

Pre.AddSTUDENTS(temm, mm);//добавление адреса в таблица

ViewSTUDENTS();//вывод таблиц на экран

Блок- схема алгоритма







hello_html_61b55444.gif











Программа на языке C#. Windows вариант

Условие: разработать проект «Система управления данными абонентов телефона» с использованием наследуемых классов с двумя таблицами и основных операций: открытие файла данных из файла, сохранение данных в файл, добавление, удаления и поиск данных.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;

using System.Windows.Forms;

namespace Telefon

{

public class TELEFON//

{

public int id;//порядковый номер

public string fio;//ФИО абонента

public uint number;//номер телефона

public uint plata;//плата за телефон

public uint year;//год установки

}

public class TELEF//функции

{

public ArrayList tel = new ArrayList();//создание списка абонентов

int i = 0;

public void AddTELEFON(string ini, uint nom, uint pl, uint ye)//Добавление в список нового абонента

{

TELEFON telefi = new TELEFON();

tel.Add(new TELEFON { id = ++i, fio = ini, number = nom, plata = pl, year = ye });

}

public void DeleteTELEFON(int id)//Процедура удаления абонента из списка

{

int it = 0;

foreach (TELEFON l in tel)//Просмотор списка

{

if (l.id == id)//Если в списке наедена нужный абонент он удаляется и просмотор прерывается

{

tel.RemoveAt(it);

break;

}

it++;

} }

public IEnumerable SearchTELEFON(uint ye)//Поиск абонентов с годом установки больше указанной

{

var query = from TELEFON tele in tel

where tele.year > ye

select tele;

return query;

} }

public class adr : TELEFON//класс адресс наследник класса телефон

{

public new int id;

public string raion;//Район

public string street;//Улица

public uint dom;//номер дома

public uint home;//номер квартиры

}

public class adrh : TELEF//класс работы с адресом наследник класса с телефонами

{

public ArrayList putr = new ArrayList();//создание списка адресов

int i = 0;

public void AddTELEFON(string rai, string stre, uint d, uint ho)

{

adr adry = new adr();

putr.Add(new adr { id = ++i, raion = rai, street = stre, dom = d, home = ho });

}

public new void DeleteTELEFON(int id)//Процедура удаления адресса из списка

{

int it = 0;

Boolean bol = false;

foreach (adr l in putr)//Просмотор списка

{

if (l.id == id)//Если в списке наедена нужнай адрес тогда он удаляется и просмотор прерывается

{

putr.RemoveAt(it);

bol = true;

break;

}

it++;

}

if (bol == false)

{

MessageBox.Show("Указанная вами квартира не существует");

} }

public new IEnumerable SearchTELEFON(uint id)//Поиск номеров, где год больше указанной

{

var query = from adr put in putr

where put.id == Convert.ToInt32(id)

select put;

return query;

} }}

sing System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Collections;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO.Compression;

namespace Telefon

{

public partial class Form1 : Form

{

TELEF phone = new TELEF();//создание объекта таблицы абонентов

adrh Put = new adrh();//создание объекта таблицы адресов

public string[] str = new string[7];//Массив сообщений

public Form1()

{

InitializeComponent();

Form2 auth = new Form2();

this.Show();

auth.ShowDialog();

dataGridView1.ColumnCount = 5;

dataGridView2.ColumnCount = 5;

dataGridView1.Columns[0].Name = "№";

dataGridView1.Columns[1].Name = "ФИО абонента";

dataGridView1.Columns[2].Name = "Номер телефона";

dataGridView1.Columns[3].Name = "Плата за телефон";

dataGridView1.Columns[4].Name = "Год установки";

dataGridView1.Columns[0].Width = 35;

dataGridView1.Columns[1].Width = 100;

dataGridView1.Columns[2].Width = 150;

dataGridView1.Columns[3].Width = 100;

dataGridView1.Columns[4].Width = 100;

dataGridView2.Columns[0].Name = "№";

dataGridView2.Columns[1].Name = "Район";

dataGridView2.Columns[2].Name = "Улица";

dataGridView2.Columns[3].Name = "Дом";

dataGridView2.Columns[4].Name = "Квартира";

dataGridView2.Columns[0].Width = 35;

dataGridView2.Columns[1].Width = 150;

dataGridView2.Columns[2].Width = 150;

dataGridView2.Columns[3].Width = 50;

dataGridView2.Columns[4].Width = 100;

str[0] = "Данные о инициалах абонента введены некорректно";

str[1] = "Данные о номере телефона введены не верно";

str[2] = "Данные о плате введены не верно";

str[3] = "Данные о годе установки введены не верно";

str[4] = "Данные о доме не верны";

str[5] = "Данные о квартире не верны";

str[6] = "Данные введены не верно";

}

private void ViewTELEFON()//Процедура вывода списка номеров

{

dataGridView1.Rows.Clear();//

foreach (TELEFON tele in phone.tel)

{

string[] row = { Convert.ToString(tele.id)+"", Convert.ToString(tele.fio) + "", Convert.ToString(tele.number) + "", Convert.ToString(tele.plata) + " руб.", Convert.ToString(tele.year) + " год." };

dataGridView1.Rows.Add(row);

}

dataGridView2.Rows.Clear();//

foreach (adr put in Put.putr)

{

string[] row2 = { Convert.ToString(put.id), put.raion, put.street, "№ " + Convert.ToString(put.dom), "№ " + Convert.ToString(put.home) };

dataGridView2.Rows.Add(row2);

} }

private void ViewTELEFS(IEnumerable search_nomer)//Процедура вывода списка абонентов в таблицу

{

dataGridView1.Rows.Clear();//

foreach (TELEFON tele in search_nomer)

{

string[] row = { Convert.ToString(tele.id) + "", Convert.ToString(tele.fio) + "", Convert.ToString(tele.number) + "", Convert.ToString(tele.plata) + " руб.", Convert.ToString(tele.year) + " год." };

dataGridView1.Rows.Add(row);

} }

private void Viewadrs(IEnumerable search_adr) //Процедура вывода списка адресов в таблицу

{

dataGridView2.Rows.Clear();//

foreach (adr put in search_adr)

{

string[] row2 = { Convert.ToString(put.id), put.raion, put.street, "№ " + Convert.ToString(put.dom), "№ " + Convert.ToString(put.home) };

dataGridView2.Rows.Add(row2);

} }

private void авторToolStripMenuItem_Click(object sender, EventArgs e) //информация

{

MessageBox.Show("Автор программы: студент группы ДиКТ 21-09 Сергеев Е.С., 2012", "Информация");

}

private void условиеToolStripMenuItem_Click(object sender, EventArgs e)

{

Form2 f2 = new Form2();

f2.Show();

}

private void button1_Click(object sender, EventArgs e)

{

string ini;//ФИО

uint nom;//номер

uint pl;//плата

uint ye;//год

string rai;//район

string stre;//улица

uint d;//номер дома

uint ho;//номер квартиры

{//проверка корректности ввода

try

{

d = Convert.ToUInt32(textBox9.Text);

}

catch (Exception)

{

MessageBox.Show(str[4]);

textBox9.Text = "";

return;

}

try

{

ho = Convert.ToUInt32(textBox10.Text);

}

catch (Exception)

{

MessageBox.Show(str[5]);

textBox10.Text = "";

return;

}

try

{

ini = Convert.ToString(textBox2.Text);

}

catch (Exception)

{

MessageBox.Show(str[0]);

textBox2.Text = "";

return;

}

try

{

nom = Convert.ToUInt32(textBox3.Text);

}

catch (Exception)

{

MessageBox.Show(str[1]);

textBox3.Text = "";

return;

}

try

{

pl = Convert.ToUInt32(textBox4.Text);

}

catch (Exception)

{

MessageBox.Show(str[2]);

textBox4.Text = "";

return;

}

try

{

ye = Convert.ToUInt32(textBox5.Text);

}

catch (Exception)

{

MessageBox.Show(str[3]);

textBox5.Text = "";

return;

}

rai = comboBox1.Text;

stre = textBox8.Text;

phone.AddTELEFON(ini, nom, pl, ye);//добавление ноиера в таблицу

Put.AddTELEFON(rai, stre, d, ho);//добавление адреса в таблица

ViewTELEFON();//вывод таблиц на экран

if (dataGridView1.RowCount > 0)

{

button2.Enabled = true;

button3.Enabled = true;

button4.Enabled = true;

} } }

private void button2_Click(object sender, EventArgs e)

{

int id;//номер абонента в таблице

try

{

id = Convert.ToInt32(textBox6.Text);

}

catch (FormatException)

{

MessageBox.Show("Введены не правильные данные","Ошибка");

textBox6.Text = "";

return;

}

phone.DeleteTELEFON(id);//Выбор номера удаление из первой таблицы

Put.DeleteTELEFON(id);//Выбор номера удаление из второй таблицы

ViewTELEFON();//Вывод оставшихся номеров

if (dataGridView1.RowCount == 0)

{

button2.Enabled = false;

}}

private void button3_Click(object sender, EventArgs e)//поиск абонента, с установленным телефоном больше указанного срока

{

uint ye = Convert.ToUInt32(textBox11.Text);//ввод года

IEnumerable search_telefon;


search_telefon = phone.SearchTELEFON(ye);//поиск нужной

ViewTELEFS(search_telefon);//вывод

}

private void button4_Click(object sender, EventArgs e)//вывод адреса нужного абонента

{

uint id;

IEnumerable search_adr;

try

{

id = Convert.ToUInt32(textBox6.Text);

}

catch (Exception)

{

MessageBox.Show(str[6]);

textBox6.Text = "";

return;

}

search_adr = Put.SearchTELEFON(id);

Viewadrs(search_adr);

if (dataGridView1.RowCount == 0)

{

button2.Enabled = false;

button4.Enabled = false;

} }


private void обновитьЗначенияToolStripMenuItem_Click(object sender, EventArgs e)

{

ViewTELEFON();

}

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)//сохранение данных в файл

{

Boolean bol;

string puti;

bol = button2.Enabled;

saveFileDialog1.ShowDialog();

puti = saveFileDialog1.FileName;//путь сохранения файла

if (puti != "")

{

try

{

FileStream fs = new FileStream(puti, FileMode.Create);//создание потока файлов файл если его нет создается если есть заменяется

GZipStream gzs = new GZipStream(fs, CompressionMode.Compress);//создание способа сжатия

BinaryFormatter bf = new BinaryFormatter();//создание бинарного формата записи в файл

bf.Serialize(gzs, phone.tel);//записывание в файл таблицу 1

bf.Serialize(gzs, Put.putr);//записывание в файл таблицу 2

bf.Serialize(gzs, bol);//записывание значение доступности кнопки "deleted абонента"

gzs.Close();//закрытие способа сжатия

fs.Close();//закрытие файла

}

catch (Exception)

{

return;

} } }


private void открытьToolStripMenuItem_Click(object sender, EventArgs e)

{

string puti;

openFileDialog1.ShowDialog();

puti = openFileDialog1.FileName;//путь открытия файла

if (puti != "")

{

try

{

phone.tel.Clear();//очистка значений списка номеров

Put.putr.Clear();//очистка значений списка адресов

FileStream fs = new FileStream(puti, FileMode.Open);//создание потока для открытия файла

GZipStream gzs = new GZipStream(fs, CompressionMode.Decompress);//создание распоковки файла

BinaryFormatter bf = new BinaryFormatter();//создание бинарного формата записи в файл

phone.tel=(ArrayList)bf.Deserialize(gzs);//запись в таблицу 1

Put.putr = (ArrayList)bf.Deserialize(gzs);//запись в таблицу 2

button2.Enabled = (Boolean)bf.Deserialize(gzs);//запись в свойство кнопки "deleted абонента"

gzs.Close();//закрытие способа распоковки файла

fs.Close();//закрытие файла

ViewTELEFON();//вывод на экран файл в две таблицы

button3.Enabled = true;

button4.Enabled = true;

}

catch (Exception)

{

return;

} }

}

private void

создатьНовуюТаблицуToolStripMenuItem_Click(object sender, EventArgs e)

{

{

phone.tel.Clear();

Put.putr.Clear();

button2.Enabled = false;

button3.Enabled = false;

button4.Enabled = false;

dataGridView1.Rows.Clear();

dataGridView2.Rows.Clear();

} }

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

} } }

hello_html_m2ed08b56.pnghello_html_b8e71ff.png


Лабораторная работа 10. Cистема управления базой данных на основе метода ООП

Программа на языке программирования С#. Windows вариант

Цель занятия: разработка Windows -приложений с использованием объектно-ориентированного метода программирования с включением свойств: инкапсуляции, наследования.


Таблицы базы данных Access



hello_html_m3b0eb53c.png




hello_html_m39f7f3b0.png



Форма управления БД

hello_html_m3b3c6d3f.png


Программа

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Windows.Forms;

namespace СУБД_наследование

{

class Class1

{

public int Number;

public string Name;

public int Price;


public Class1() { }

//Конструктор

public Class1(int Number, string Name, int Price)

{

this.Number = Number;

this.Name = Name;

this.Price = Price;

}

//Поиск

public void Search(TextBox t1, DataGridView dgw1)

{

string search = Convert.ToString(t1.Text);

for (int i = 0; i < dgw1.Rows.Count - 1; i++)

{

for (int j = 0; j < dgw1.Columns.Count - 1; j++)

{

dgw1.Rows[i].Selected = false;

if (dgw1.Rows[i].Cells[j].Value.ToString() == search)

{

dgw1.Rows[i].Selected = true;

break;

} } } } }

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Windows.Forms;

namespace СУБД_наследование

{

class Class2 : Class1// наследуемый клсс

{

public int Memory;

public int Camera;

public int Display;

public int Battery;

public Class2() {}

public Class2(int Number, string Name, int Price, int Memory, int Camera, int Display, int Battery) : base (Number, Name, Price)

{

this.Memory = Memory;

this.Camera = Camera;

this.Display = Display;

this.Battery = Battery;

}

//Добавить запись

public void AddNote(db1DataSetTableAdapters.МагазинTableAdapter mta, db1DataSetTableAdapters.ХарактеристикиTableAdapter xta,

db1DataSet db, TextBox t3, TextBox t4, TextBox t5, TextBox t6, TextBox t7, TextBox t8)

{

mta.Insert(t3.Text, t4.Text);

db.AcceptChanges();

mta.Update(db.Магазин);

mta.Fill(db.Магазин);

xta.Insert(t5.Text, t6.Text, t7.Text, t8.Text);

db.AcceptChanges();

xta.Update(db.Характеристики);

xta.Fill(db.Характеристики);

}

//Сохранить изменения

public void Save(BindingSource mxbs, db1DataSetTableAdapters.МагазинTableAdapter mta, db1DataSetTableAdapters.ХарактеристикиTableAdapter xta, db1DataSet db)

{

mxbs.EndEdit();

mta.Update(db);

xta.Update(db);

db.AcceptChanges();

} }}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace СУБД_наследование

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу "db1DataSet.Характеристики". При необходимости она может быть перемещена или удалена.

this.характеристикиTableAdapter.Fill(this.db1DataSet.Характеристики);

// TODO: данная строка кода позволяет загрузить данные в таблицу "db1DataSet.Магазин". При необходимости она может быть перемещена или удалена.

this.магазинTableAdapter.Fill(this.db1DataSet.Магазин);

}

Class1 goods = new Class1();

Class2 shop = new Class2();

private void button1_Click(object sender, EventArgs e)

{

goods.Search(textBox1, dataGridView1);

}

private void button2_Click(object sender, EventArgs e)

{

shop.AddNote(магазинTableAdapter, характеристикиTableAdapter, db1DataSet, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8);

}

private void сохранитьToolStripButton_Click(object sender, EventArgs e)

{

shop.Save(магазинХарактеристикиBindingSource, магазинTableAdapter, характеристикиTableAdapter, db1DataSet);

}

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Application.Exit();

}

private void авторToolStripMenuItem_Click(object sender, EventArgs e)

{

AboutBox1 aboutBox = new AboutBox1();

aboutBox.ShowDialog();

}

private void алгоритмToolStripMenuItem_Click(object sender, EventArgs e)

{hello_html_2763de33.png

Form2 f2 = new Form2();

f2.Show();

} }}


Блок – схема алгоритма



hello_html_m695b33ee.png








Программа на языке программирования VB.NET. Windows вариант

Цель занятия: разработка Windows -приложений с использованием объектно-ориентированного метода программирования с включением свойств: инкапсуляции, наследования.


hello_html_m493e013a.gif



hello_html_m3fa6d812.gif

hello_html_m1aa2c82f.png

Программа

Module Module1

// данные класса

Public Class Price

Public name_product, name_shop As String

Public prices As Double

Public cod As Integer

End Class

End Module

Imports System.Data.OleDb

Imports System.Data

Public Class Form1

Dim myAccessConn As OleDbConnection = New OleDbConnection(«Provider=Microsoft.Jet.OLEDB.4.0;Data Source=price.mdb»)

Dim dbReader As OleDbDataReader

Dim i, n As Integer

Dim obj(20) As Price

Dim pname, sname, price As String

Dim dbCmd As OleDbCommand = New OleDbCommand(«SELECT Код, Name_product, Product_number, Shop_name FROM Prices»)

Dim da As New OleDbDataAdapter

Dim cmd As New OleDbCommand

Dim ds As New DataSet

Dim dt As New DataTable

Dim dr As DataRow

Dim pn, sn As String

Dim pr, seln, selb As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

i = 1

n = 0

seln = 0

selb = 0

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

загрузка базы данных

ListBox1.Items.Clear()

ListBox2.Items.Clear()

ComboBox1.Items.Clear()

Try

myAccessConn.Open()

dbCmd.Connection = myAccessConn

dbReader = dbCmd.ExecuteReader(CommandBehavior.SingleResult)

i = 1

Do While dbReader.Read()

вывод данных

ListBox1.Items.Add(Str(i) & «. « & dbReader.GetValue(1) & « « & dbReader.GetValue(2) & « « & dbReader.GetValue(3))

добавление базы данных в класс

pname = dbReader.GetValue(1)

sname = dbReader.GetValue(3)

price = Str(dbReader.GetValue(2))

obj(i) = New Price With {.cod = dbReader.GetValue(0), .name_product = pname, .name_shop = sname, .prices = Val(price)}

i += 1: Loop

Catch ex As Exception

MsgBox(ex.Message)

End Try

n = i

For Me.i = 1 To 3

ComboBox1.Items.Add(dbReader.GetName(i))

Next

myAccessConn.Close()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

кнопка добавить элемент

pn = InputBox(«Введите название продукта»)

pr = InputBox(«Введите цену продукта»)

sn = InputBox(«Название магазина»)

Try

myAccessConn = New OleDbConnection(«Provider=Microsoft.Jet.OLEDB.4.0;Data Source=price.mdb»)

da.InsertCommand = New OleDbCommand(«INSERT INTO `Prices` (`Name_product`, `Product_number`, `Shop_name`) VALUES ( “« & pn & «“,» + Format(pr, «») + «,’» & sn & «“ )», myAccessConn)

myAccessConn.Open()

da.SelectCommand = New OleDbCommand(«SELECT Код, Name_product, Product_number, Shop_name FROM Prices», myAccessConn)

da.Fill(ds, «Prices»)

dt = ds.Tables.Item(«Prices»)

dr = dt.Rows.Add

da.Update(ds, «Prices»)

myAccessConn.Close()

Catch ex As Exception

MsgBox(ex.Message)

End Try: End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

кнопка сохранить

pn = TextBox1.Text

sn = TextBox3.Text

pr = Int(Val(TextBox2.Text))

Try

da.InsertCommand = New OleDbCommand(«UPDATE `Prices` SET `Name_product` = “« & TextBox1.Text & «“, `Product_number` = “« & Val(TextBox2.Text) & «“, `Shop_name` = “« & TextBox3.Text & «“ WHERE (Код = « & obj(seln).cod & «)», myAccessConn)

myAccessConn.Open()

da.SelectCommand = New OleDbCommand(«SELECT Код, Name_product, Product_number, Shop_name FROM Prices», myAccessConn)

da.Fill(ds, «Prices»)

dt = ds.Tables.Item(«Prices»)

dr = dt.Rows.Add

da.Update(ds, «Prices»)

myAccessConn.Close()

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

поиск

Dim j As Integer

ListBox2.Items.Clear()

myAccessConn.Open()

dbCmd.Connection = myAccessConn

dbReader = dbCmd.ExecuteReader(CommandBehavior.SingleResult)

j = 1

Try

Do While dbReader.Read()

вывод данных

If TextBox4.Text <> «» Then

If TextBox4.Text.Trim.ToLower = dbReader.GetValue(selb + 1).ToString.Trim.ToLower Then

ListBox2.Items.Add(Str(j) & «. « & dbReader.GetValue(1) & « « & dbReader.GetValue(2) & « « & dbReader.GetValue(3))

j += 1

End If

Else : ListBox2.Items.Add(Str(j) & «. « & dbReader.GetValue(1) & « « & dbReader.GetValue(2) & « « & dbReader.GetValue(3))

j += 1

End If

Loop

If j = 1 Then

ListBox2.Items.Add(«По вашему запросу ничего не найдено»)

End If

myAccessConn.Close()

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

вывод данных строки на textbox”ы

seln = ListBox1.SelectedIndex + 1

TextBox1.Text = obj(seln).name_product

TextBox2.Text = obj(seln).prices

TextBox3.Text = obj(seln).name_shop

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

удаление выделенного товара

Try

da.InsertCommand = New OleDbCommand(«DELETE FROM `Prices` WHERE (`Код` = « & obj(seln).cod & «)», myAccessConn)

myAccessConn.Open()

da.SelectCommand = New OleDbCommand(«SELECT Код, Name_product, Product_number, Shop_name FROM Prices», myAccessConn)

da.Fill(ds, «Prices»)

dt = ds.Tables.Item(«Prices»)

dr = dt.Rows.Add

da.Update(ds, «Prices»)

myAccessConn.Close()

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

Form2.Show()

Me.Hide()

End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

selb = ComboBox1.SelectedIndex

End Sub

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

Application.Exit()

End Sub

End Class





Блок – схема алгоритма


hello_html_m41ca4fb6.gif














Программа на языке программирования С++. Windows вариант

Цель занятия: разработка Windows -приложений с использованием объектно-ориентированного метода программирования с включением свойств: инкапсуляции, наследования.



hello_html_6d558837.png


hello_html_m37244c34.png


С #pragma once

#include "MainTable.h"

ref class Table :public MainTable

{

public:

///

/// Конструктор

///

Table() :MainTable()

{

//загружаем в таблицу все данные

table = db->GetData("select * from Магазин");

}

///

/// Загрузить все данные в таблицу

///

void GetMain()

{

//загружаем в таблицу все данные

table = db->GetData("select * from Магазин");

}

/// Добавление в базу данных

void Add(String^ sql)

{

//добавляем в базу

db->Add(sql);

//перезагружаем таблицу

GetMain();

}

/// Поиск в базе данной строки

///

void Search(String^ s)

{

//получаем все данные с заданным фильтром

table = db->GetData("select * from Магазин where Наименование like '%" + s + "%'");

}

/// Удаление из базы записи

void Delete(String^ s)

{

//удаляем запись

db->Delete("delete * from Магазин where Номер_товара=" + s);

}

};

#pragma once

#include "MainTable.h"

ref class Table2 :

public MainTable

{

public:

///

/// Конструктор

///

Table2() :MainTable()

{

}

///

/// Получить из базы данные с заданным фильтром

///

void GetData(String^ s)

{

//грузим из таблицы данные

table = db->GetData("select * from Характеристики where Номер_товара=" + s);

}

///

/// Добавление в базу данных

///

void Add(String^ sql, String^ s)

{

//добавляем в базу

db->Add(sql);

//перезагружаем таблицу

GetData(s);

}

///

/// Удаление из базы записи

///

void Delete(String^ s)

{

//удаляем из базы запись

db->Delete("delete * from Характеристики where Номер_товара=" + s);

}

///

/// Удаление из базы записи

///

void Delete(String^ s1, String^ s2)

{

//удаляем запись

db->Delete("delete * from Характеристики where Номер_товара=" + s1);

//перезагружаем таблицу

GetData(s2);

}};

#pragma once

using namespace System;

using namespace System::Data;

using namespace System::Data::OleDb;

ref class DataBase

{

private:

//соединение с базой данных

OleDbConnection^ connection;

public:

//конструктор

DataBase(String^ conn)

{

//инициализируем соединение с базой с входящей строкой соединения

connection = gcnew OleDbConnection(conn);

}

//получение данных с заданным запросом

DataTable^ GetData(String^ sql)

{

//открывем соединение

connection->Open();

//создаем адаптер для работы с запросом

OleDbDataAdapter^ adapter = gcnew OleDbDataAdapter(sql, connection);

DataTable^ table = gcnew DataTable();

//получаем данные из адаптера

adapter->Fill(table);

connection->Close();

return table;

}

//добавление в базу данных с заданным запросом

void Add(String^ sql)

{

//создаем из запроса команду для добавления в базу информации

OleDbCommand^ insert = gcnew OleDbCommand(sql,connection);

//открываем соединение

connection->Open();

//выполняем команду

insert->ExecuteNonQuery();

connection->Close();

}

//удаление из базы

void Delete(String^ sql)

{

//из sql-запроса создаем команду на удаление из таблицы

OleDbCommand^ del = gcnew OleDbCommand(sql, connection);

connection->Open();

//выполняем команду

del->ExecuteNonQuery();

connection->Close();

}};

#pragma once

#include"AddMagaz.h"

#include"AddHarak.h"

#include"Table.h"

#include"Table2.h"

namespace СУБД {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

///

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

///

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

{

Table^ tb1;

Table2^ tb2;

public:

MainForm(void)

{

InitializeComponent();

//

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

}

protected:

///

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

///

~MainForm()

{

if (components)

{

delete components;

} }

#pragma region Windows Form Designer generated code

///

/// Обязательный метод для поддержки конструктора - не изменяйте

/// содержимое данного метода при помощи редактора кода.

///

void InitializeComponent(void)

{

#pragma endregion

///

/// Поиск строк в базе данных с заданным именем

///

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

//выполняем поиск строки из textBox1 в таблице 1 в базе

tb1->Search(textBox1->Text);

//грузим данные в dataGridView1

dataGridView1->DataSource = tb1->GetTable();

try{

//устанавливаем видимость столбцов

tb2->GetData(dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

dataGridView2->DataSource = tb2->GetTable();

dataGridView2->Columns[0]->Visible = false;

dataGridView2->Columns[1]->Visible = false;

}

catch (Exception^ ex){

} }

///

/// Загрузка главной формы и получение данных от базы

///

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

//инициализируются таблицы

tb1 = gcnew Table();

tb2 = gcnew Table2();

//грузим данные из базы в DataGridView

button6_Click(nullptr, nullptr);

}

///

/// Получение товаров при изменении выделенного элемента

///

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

try{

//грузим во вторую таблицу данные

tb2->GetData(dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

dataGridView2->DataSource = tb2->GetTable();

//устанавливаем видимость столбцов

dataGridView2->Columns[0]->Visible = false;

dataGridView2->Columns[1]->Visible = false;

}

catch (Exception^ ex){}


}

///

/// Добавление записи в первый dataGridView

///

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

//создаем форму для добавления в базу

AddMagaz^ frm = gcnew AddMagaz();

if (frm->ShowDialog() == Windows::Forms::DialogResult::OK)

{

//после того как все данные введены, выполняем добавление

tb1->Add(frm->command);

//перезагружаем грид

dataGridView1->DataSource = tb1->GetTable();

}}

///

/// Удаление записи из первого dataGridView

///

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

//удаляем все всязанные данные из второй таблицы

tb2->Delete(dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

//удаляем запись из первой таблицы

tb1->Delete(dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

//перезагружаем оба грида

button6_Click(nullptr, nullptr);

}

///

/// Добавление записи в второй dataGridView

///

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

//создаем форму для добавления во вторую таблицу

AddHarak^ frm = gcnew AddHarak(dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

if (frm->ShowDialog() == Windows::Forms::DialogResult::OK)

{

//после того как все данные введены, выполняем добавление записи в базу

tb2->Add(frm->command, dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

//перезагружаем грид

dataGridView2->DataSource = tb2->GetTable();

} }

///

/// Удаление записи из второго dataGridView

///

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

//удаляем запись из второй таблицы

tb2->Delete(dataGridView2->SelectedRows[0]->Cells[0]->Value->ToString());

//перезагружаем таблицу

tb2->GetData(dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

dataGridView2->DataSource = tb2->GetTable();

//устанавливаем видимость колонок

dataGridView2->Columns[0]->Visible = false;

dataGridView2->Columns[1]->Visible = false;

}

///

/// загрузка начальных данных

///

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

//грузим данные первой таблицы из базы

tb1->GetMain();

//устанавливаем соединенеи между таблицей и dataGridView

bindingSource1->DataSource = tb1->GetTable();

bindingNavigator1->BindingSource = bindingSource1;

dataGridView1->DataSource = bindingSource1;

//грузим данные втрой таблицы

tb2->GetData(dataGridView1->SelectedRows[0]->Cells[0]->Value->ToString());

//устанавливаем соединенеи между таблицей и dataGridView

dataGridView2->DataSource = tb2->GetTable();

//устанавливаем видимость колонок

dataGridView2->Columns[0]->Visible = false;

dataGridView2->Columns[1]->Visible = false;

}

private: System::Void заданиеToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

MessageBox::Show("Создать программу для работы с базой данных.");

}

private: System::Void авторToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

MessageBox::Show("Выполнил студент группы ДиКТ-31-12 Тимофеев А.В.");

} };

pragma once

using namespace System;

using namespace System::Data;

using namespace System::Data::OleDb;

ref class MainTable

{

protected:

//таблица, где будут храниться данные

DataTable^ table;

//путь к базе данных

String^ basePath="db1.mdb";

//строка подключения к базе данных

String^ connStringProvider = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=";

//экземпляр класа для работы с базой

DataBase^ db;

public:

MainTable()

{

//инициализируем таблицу

table = gcnew DataTable();

//создаем соединение с базой

db = gcnew DataBase(connStringProvider+basePath);

}

///

/// Возвращает таблицу с данными

///

DataTable^ GetTable()

{

return table;

}};






hello_html_63530d20.png


Этапы разработки приложения управления базой данных на С++

1. Создать форму WindowsForms проекта в Visual Studio с именим MainForm. Добавить на форму две таблицы DataGridView, в которых будут копироваться данные таблиц из базы данных. Далее добавить кнопки для поиска ButtonSearch, перехода на главную форму ButtonMain, для добавления в первую и вторую таблиц соответственно ButtonAdd1 и ButtonAdd2, а также для удаления из таблиц ButtonDelete1 и ButtonDelete2 и добавления TextBox для ввода строки поиска SearchText.

  1. Создать класс DataBase для работы с базой данных. В классе необходимо создать поле OleDbConnection для ввода данных.

using namespace System;

using namespace System::Data;

using namespace System::Data::OleDb;

ref class DataBase

{

private:

OleDbConnection^ connection;

};

  1. Добавить к классу DataBase конструктор с одним параметром ( строка подключения).

DataBase(String^ conn)

{

connection = gcnew OleDbConnection(conn);

}

  1. Добавить метод для ввода данных из базы.

DataTable^ GetData(String^ sql)

{

connection->Open();//открываем соединение

//создадим адаптер для работы с базой

OleDbDataAdapter^ adapter = gcnew OleDbDataAdapter(sql, connection);

DataTable^ table = gcnew DataTable();

adapter->Fill(table); //заполним таблицу данными

connection->Close();

return table;

}

  1. Далее необходимо создать классы для работы с каждой DataGridView с именем MainTable, в которых введем методы и поля для двух таблиц.

using namespace System;

using namespace System::Data;

using namespace System::Data::OleDb;

ref class MainTable

{

protected: DataTable^ table;

String^ basePath="db1.mdb";

String^ connStringProvider = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=";

DataBase^ db;//класс для работы с базой

};

  1. Добавить конструктор MainTable()

{

table = gcnew DataTable();

db = gcnew DataBase(connStringProvider+basePath);

}

  1. Создать метод для загрузки данных из таблиц базы данных DataTable^ GetTable()

{

return table;

}

  1. Добавить конструктор MainTable()

{

table = gcnew DataTable();

db = gcnew DataBase(connStringProvider+basePath);

}

  1. Создать метод для ввод данных из базы

DataTable^ GetTable()

{

return table;

}

  1. Создать класс Table1 для работы с первой таблицей, производный от класса MainTable

#include "MainTable.h"

ref class Table :public MainTable

{

};

  1. Добавить конструктор и метод для получения начальных данных

Table() :MainTable()

{

GetMain();

}

void GetMain()

{

table = db->GetData("select * from Магазин");

}

  1. Создать класс Table2 для работы со второй таблицей.

#include "MainTable.h"

ref class Table2 :public MainTable

{

};

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

Table2() :MainTable()

{}

void GetData(String^ s)

{ //s – номер товара из первой страницы

table = db->GetData("select * from Характеристики where Номер_товара=" + s);

}

  1. Объявить экземпляры классов Table1 tb1 и Table2 tb2. И функцию для загрузки формы MainForm_Load.

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

tb1 = gcnew Table1();

tb2 = gcnew Table2();

ButtonMain_Click(nullptr, nullptr);//нажатие на кнопку Главная

}

  1. Создать событие при нажатии кнопки ButtonMain. для получения начальных данных и вывода.

System::Void ButtonMain_Click(System::Object^ sender, System::EventArgs^ e)

{

tb1->GetMain();//получаем все данные из первой таблицы

dataGridView1->DataSource = tb1->GetTable();//грузим данные в датагрид

tb2->GetData(dataGridView1->SelectedRows[0]- >Cells[0]->Value->ToString());

dataGridView2->DataSource = tb2->GetTable();

}

  1. При изменении выделенной строки в dataGridView1 необходимо изменить данные в dataGridView2.

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

try{

//загружаем из базы новые данные

tb2->GetData(dataGridView1->SelectedRows[0]- >Cells[0]->Value->ToString());

dataGridView2->DataSource = tb2->GetTable(); }

catch (Exception^ ex){}

}

  1. Создатьна форме событие нажатия клавиши ButtonAdd1 для добавления в базу данных.

System::Void ButtonAdd1 _Click(System::Object^ sender, System::EventArgs^ e) {

AddMagaz^ frm = gcnew AddMagaz();

if (frm->ShowDialog() == Windows::Forms::DialogResult::OK)

{

tb1->Add(frm->command);//метод добавления в базу

dataGridView1->DataSource = tb1->GetTable();

}

}

  1. На форме AddMagaz создать поля: наименование и цена, кнопки ОК и Cansel. При нажатии на кнопку ОК формируется запрос из указанных данных

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

{

command = "insert into Магазин (Наименование,Цена) values ('" + textBox1->Text + "','" + textBox2->Text + "')";

this->Close();

}

  1. Перейти к классу Table1 и ввести метод для добавления в базу данных новых строк.

void Add(String^ sql)

{

db->Add(sql);

GetMain();

}

  1. В классе DataBase необходимо сфорировать метод Add

void Add(String^ sql)

{

OleDbCommand^ insert = gcnew OleDbCommand(sql,connection);

connection->Open();

insert->ExecuteNonQuery();//выполныется запрос на добавление строки

connection->Close();

}

  1. Для класса Table2 аналогично определить метод добавления

void Add(String^ sql, String^ s)

{

db->Add(sql);//добавляем

GetData(s);//грузим все необходимые данные заново

}

  1. Создать на главной форме событие нажатия кнопки ButtonAdd2

System::Void ButtonAdd2 _Click(System::Object^ sender, System::EventArgs^ e)

{

AddHarak^ frm = gcnew AddHarak(dataGridView1- >SelectedRows[0]->Cells[0]->Value->ToString());

if (frm->ShowDialog() == Windows::Forms::DialogResult::OK)

{

tb2->Add(frm->command, dataGridView1->SelectedRows[0]- >Cells[0]->Value->ToString());//запрос на добавление

dataGridView2->DataSource = tb2->GetTable();

}}

  1. Создать на главной форме событие нажатия кнопки ButtonAdd2

System::Void ButtonAdd2 _Click(System::Object^ sender, System::EventArgs^ e)

{

AddHarak^ frm = gcnew AddHarak(dataGridView1- >SelectedRows[0]->Cells[0]->Value->ToString());

if (frm->ShowDialog() == Windows::Forms::DialogResult::OK)

{

tb2->Add(frm->command, dataGridView1->SelectedRows[0]- >Cells[0]->Value->ToString());//запрос на добавление

dataGridView2->DataSource = tb2->GetTable();

}}

  1. В классе DataBase создать метод Delete для удаления данных из базы.

void Delete(String^ sql)

{

OleDbCommand^ del = gcnew OleDbCommand(sql, connection);

connection->Open();

del->ExecuteNonQuery();

connection->Close();

}

  1. В класс Table2 добавить метод Delete для удаления данных из второй наблицы.

void Delete(String^ s)

{

db->Delete("delete * from Характеристики where Код=" + s);

}

  1. В класс Table1 добавить метод Delete для удаления данных из первой наблицы.

void Delete(String^ s)

{

db->Delete("delete * from Магазин where Номер_товара=" + s);

}

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

System::Void ButtonDelete2_Click(System::Object^ sender, System::EventArgs^ e)

{

tb2->Delete(dataGridView2->SelectedRows[0]- >Cells[0]->Value->ToString());

tb2->GetData(dataGridView1->SelectedRows[0]- >Cells[0]->Value->ToString());

dataGridView2->DataSource = tb2->GetTable();

}

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

System::Void ButtonDelete1_Click(System::Object^ sender, System::EventArgs^ e)

{

tb2->Delete(dataGridView1- >SelectedRows[0]->Cells[0]->Value- >ToString());//удаляем из второй таблицы все данные связанные с первой

tb1->Delete(dataGridView1->SelectedRows[0]- >Cells[0]->Value->ToString());//удаляем из первой

ButtonMain_Click(nullptr, nullptr);//грузим главную

}

  1. В классе Table1 создать метод для поиска данных.

void Search(String^ s)

{

table = db->GetData("select * from Магазин where Наименование like '%" + s + "%'");

}

  1. На форме добавить событие нажатия на клавишу ButtonSearch.

System::Void ButtonSearch _Click(System::Object^ sender, System::EventArgs^ e)

{

tb1->Search(textBox1->Text);

dataGridView1->DataSource = tb1->GetTable();

try{

tb2->GetData(dataGridView1->SelectedRows[0]- >Cells[0]->Value->ToString());

dataGridView2->DataSource = tb2->GetTable();

}

catch (Exception^ ex){ }

}









10. Задания по теме «Объектно-ориентированное программирование»


1. Построить систему классов для описания плоских геометрических фигур: круга, квадрата, прямоугольника. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и поворота на заданный угол.

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

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

4. Составить описание класса для работы с цепными списками строк (строки произвольной длины) с операциями включения в список, удаления из списка элемента с заданным значением данного, удаления всего списка или конца списка, начиная с заданного элемента.

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

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

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

8. Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность обращения к отдельным

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

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

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

11. Составить описание объектного типа TMatr, обеспечивающего размещение матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы.




Вариант 1

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

Вариант 2

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

Вариант 3

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

Вариант 4

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

Вариант 5 ,

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

Вариант 6

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

Вариант 7

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

Вариант 8

Опишите класс PRICE (название товара, цена, название магазина). Введите с клавиатуры . данные в массив, состоящий из n элементов типа PRICE.

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

Вариант 9

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

Вариант 10

Опишите класс ZODIAK (знак зодиака, фамилия и имя, день рождения). Введите с клавиату-. ры данные в массив, состоящий из n элементов типа ZODIAK . Выведите на экран фамилии, имена и дни рождения всех «стрельцов». Если таких нет, то программа должна выдать соответствующее сообщение на экран.

Вариант 11

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

Вариант 12

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

Вариант 13

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

Вариант 14

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

Вариант 15

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

Вариант 16

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

Вариант 17

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

Вариант 18

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

Вариант 19

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

Вариант 20

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

Вариант 21

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

Вариант 22

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

Вариант 23

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

Вариант 24

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

Вариант 24

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

Вариант 25

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

Вариант 26

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

Вариант 27

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



















Список рекомендуемой литертуры

1. Биллиг В. А. Основы программирования на С#. − М.: Изд-во «Интернет-университет информационных технологий −ИНТУИТ.ру», 2006. − 88 с.

2. Вирт Н. Алгоритмы и структуры данных. - СПб: Невский диалект, 2001. − 352 с.

3. Голуб А. И.Си С++. Правила программирования. − М.: Бином, 1996. − 272 с.

5. Гуннерсон Э. Введение в С#. Библиотека программиста. − Пб.: Питер, 2001. − 304 с.

6. Кораблев В. Самоучитель Visual С + + .NET. − СПб.: Питер; Киев: Издательская группа BHV , 2004. − 528 с.

7. Либерти Д. Программирование на С#. − СПб.: Символ-Плюс, 2003. − 688 с.

8.Майо Д. С#. Искусство программирования: Энциклопедия программиста. − Киев: ДиаСофт, 2002. − 656 с.

9. Микелсен К. Язык программирования С#. Лекции и упражнения: Учебник. − Киев: ДиаСофт, 2002. − 656 с.

10. Оньон Ф. Основы ASP.NET с примерами на С #. − М.: Издательский дом «Вильяме», 2003. − 304 с.

11. Павловская Т. А. C/C++. Программирование на языке ысокого уровня: Учебник для вузов. − СПб.: Питер, 2001. − 464 с.

12. Павловская Т. А. Паскаль. Программирование на языке высокого уровня:Учебник для вузов. − СПб.: Питер, 2003. − 393 с. Паппас К., Мюррей У. Эффективная работа: Visual С + + .NET. − СПб.: Питер,2002. − 816 с.

13. Петцолъд Ч. Программирование для MS Windows на С#. Т. 1. − М.: Издательско-торговый дом «Русская Редакция», 2002. − 576 с.

14. Петцолъд Программирование для MS Windows на С#. Т. 2. − М.: Издательско-торговый дом «Русская Редакция», 2002. − 624 с.

15. Пономарев В. А. Программирование на С + + / С # в Visual Studio .NET 2003. Серия «Мастер программ». − СПб.: БХВ-Петербург, 2004. − 352 с.

16. Прайс Д., Гандэрлой М. Visual C#.NET. Полное руководство. − Киев: Век, 2004. − 960 с.

17. Робинсон С, Корнес О., ГлиннДж. и др. С# для профессионалов. В 2 т. − М.:Лори, 2003. − 512 с.

18. Робисон У. С# без лишних слов. − М.: Д М К Пресс, 2002. − 352 с.

19. Секунов Н. Разработка приложений на С + + и С#. Библиотека программиста. − СПб.: Питер, 2003. − 608 с.

20. Секунов Н. Самоучитель С#. Серия "Самоучитель". − СПб.: БХВ-Петербург, 2001. − 576 с.

21. Смайли Д. Учимся программировать на С # вместе с Джоном Смайли. − Киев: «ДиаСофт», 2003. − 528 с.

22. Тай Т., Лэм X. К. Платформа .NET. Основы. − СПб.: Символ-Плюс, 2003. − Троелсен Э. С # и платформа .NET. Библиотека программиста. − СПб.: Питер, 2002. − 796 с.

23. Фролов А. В., Фролов Г. В. Язык С #: Самоучитель. − М.: Диалог-МИФИ, 2003. − 560 с.

24. Шилдт Г. С#: Учебный курс. − СПб.: Питер, 2002. − 512 с: ил.

25. Шилдт Г. Полный справочник по С#. − М.: Издательский дом «Вильяме»,2004. − 752 с.



















Оглавление

1. Предисловие……….…….............................................. 4

2. Лабораторная работа 1. Структура программ

на основе ООП.…………………………………………. 5

3. Лабораторная работа 2 .Вычисление арифмети -

ческих выражений на основе ООП………....................... 11

4. Лабораторная работа 3. Вычисление суммы ряда

на основе ООП…………………………………………..25

5. Лабораторная работа 4. Одномерные массивы

на основе ООП..……….…………………………….. ....33

6. Лабораторная работа 5. Двумерные массивы

на основе ООП..……………………………………….71

7. Лабораторная работа 6. Символьные данные

основе ООП………………………………………….….76

8. Лабораторная работа 7. Графика на основе ООП.…..81

9. Лабораторная работа 8. Файлы ООП…………………90

10. Лабораторная работа 9. Наследование ООП.………94

11. Лабораторная работа 10. Системы управления

базами данных на основе ООП……………………….115

12. Задания для лабораторных работ по теме ООП..…150

13. Список рекомендуемой литературы…………….… 158

16. Оглавление…………………………………………. 160

:
















Учебно – методическое издание

Никишев Вячеслав Константинович


Объектно-ориентированное программирование



Лабораторный практикум



Редактор М.С.Кулина


Согласно Закону №436-ФЗ от 29 октября 2010 года

дання продукция не подлежит маркировке



Подписано в печать 5.1.2016. Формат 60х80/16.

Бумага газетная.. Печать офсетная. Гарнитура Times.

Усл. печ. л. Уч.-изд. л 160. Тираж 50 экз. Заказ № .





Издательство Чувашского университета

Типография университета

428015 Чебоксары, Московский просп., 15

163


Автор
Дата добавления 29.03.2016
Раздел Информатика
Подраздел Конспекты
Просмотров412
Номер материала ДВ-564183
Получить свидетельство о публикации

"Инфоурок" приглашает всех педагогов и детей к участию в самой массовой интернет-олимпиаде «Весна 2017» с рекордно низкой оплатой за одного ученика - всего 45 рублей

В олимпиадах "Инфоурок" лучшие условия для учителей и учеников:

1. невероятно низкий размер орг.взноса — всего 58 рублей, из которых 13 рублей остаётся учителю на компенсацию расходов;
2. подходящие по сложности для большинства учеников задания;
3. призовой фонд 1.000.000 рублей для самых активных учителей;
4. официальные наградные документы для учителей бесплатно(от организатора - ООО "Инфоурок" - имеющего образовательную лицензию и свидетельство СМИ) - при участии от 10 учеников
5. бесплатный доступ ко всем видеоурокам проекта "Инфоурок";
6. легко подать заявку, не нужно отправлять ответы в бумажном виде;
7. родителям всех учеников - благодарственные письма от «Инфоурок».
и многое другое...

Подайте заявку сейчас - https://infourok.ru/konkurs


Выберите специальность, которую Вы хотите получить:

Обучение проходит дистанционно на сайте проекта "Инфоурок".
По итогам обучения слушателям выдаются печатные дипломы установленного образца.

ПЕРЕЙТИ В КАТАЛОГ КУРСОВ


Идёт приём заявок на международный конкурс по математике "Весенний марафон" для учеников 1-11 классов и дошкольников

Уникальность конкурса в преимуществах для учителей и учеников:

1. Задания подходят для учеников с любым уровнем знаний;
2. Бесплатные наградные документы для учителей;
3. Невероятно низкий орг.взнос - всего 38 рублей;
4. Публикация рейтинга классов по итогам конкурса;
и многое другое...

Подайте заявку сейчас - https://urokimatematiki.ru

Похожие материалы

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