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


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное учреждение высшего профессионального образования
«Чувашский государственный университет имени И. Н. Ульянова»
В. К. Никишев
Объектно-ориентированное программирование
Лабораторный практикум
Чебоксары
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.tc " Лабораторная работа №1 " Структура программ на основе ООП. Языки программирования С#, С++, VB.NET
Цель занятия: изучить структуру программ на основе использования метода объектно-ориентированного программирования, основные элементы структуры ООП: классы, объекты, а также повторить основные операторы языков программирования С++, С#, VB.NET. Получить навыки работ по составлению простейших проектов с использованием элементов управления и операторов..
Задачи занятия:
1. Построение словесных алгоритмов
2. Построение алгоритмов в виде блок-схем
3. Разработка программы на основе ООП с использованием классов и объектов (языки программирования С++, С#
4. Изучение и практическое усвоение сущности метода программирования на основе ООП - объектно-ориентрованного программирования
5. Оформление отчета выполненной работы, включающей : условие задачи, алгоритм, программу и результат работы.
6. Защитить работу по знанию как теоретических , так и практических вопросов.
Программа на языке C#.NET. Консольный вариант.
tc " Пример 1"Условие: составить алгоритм и программу 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();
} } } }}
Блок – хема алгоритма
3930654445
Прогрмма на языке прграммировния С#.
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();
} }}
Лабораторная работа 2. Вычисление
арифметических выражений на основе ООП
Программа на языке C#.NET. Консольный вариант.
Условие: разработать проект для вычисления выражения
c=(a+b)/d методом объектно-ориентированного
программирования.
Блок – схема алгоритма


1658620111760сссс
00сссс
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 <math.h>
//Описание класса
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<System::String ^> ^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;
1929765-1270using 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;
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 ";
} }}
-12636537465
Программа на языкеVC#. Windows - приложение
Калькулятор
Условие: вычислить арифметическое выражение с=(а + в)/d
Форма класс
211264510160using System;
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 "; }

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



Программа на языке С++.NET. Windows вариант.
Условие: Вычислить сложное арифметическое выражениеsinx+y+cosx∙x+y/(x+y4+ex+y)
349251238252127250123825
212725012636535560127000
Форма 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
22586955461000-717558636000
Лабораторная работа 3.tc " Лабораторная работа №1 " Вычисление суммы ряда на
основе ООП. Языки программирования С#, С++, VB.NET
Цель занятия: изучить структуру программ вtc " Лабораторная работа №1 "ычисление суммы ряда на основе использования метода объектно-ориентированного программирования о и основные элементы структуры и функции ООП для вычисления суммы ряда для языков программирования С++, С#, VB.NET. Получить навыки работ по составлению проектов.
Программа на языке C#.NET. Консольный вариант
Условие: разработать проект для вычисления выражения
i=1n(1+1ii)
методом объектно-ориентированного программирования.
Программа
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();
} }}

67500514605000

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

Язык программирования С#. 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;
2512695-247015using System.Windows.Forms;
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();
} }
2392045132715320040135890
Язык программирования С#. Windows вариант
Условие:вычислить сумму ряда
1 .i=1nx34∙i2 -1 2. i=1∞-1-1i-1i2 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; } }}

Лабораторная работа 4.tc " Лабораторная работа №1 " Одномерные массивы на основе ООП. Языки программирования С#, С++, 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 проект
Условие: создать одномерный массив, составить массивы из положительных и отрицательных чисел.
2458085143510Программа
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 <n; 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)
{ } } }
Блок – схема алгоритма

Программа на языке С#.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<i;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<i;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);
} }}
Блок – схема алгоритма

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

Программа на языке С#.NET. Windows вариант.
Условие: создать одномерный массив и выполнить поиск элементов массива.
Блок – схема алгоритма

Программа
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); //вывод места числа
} }}
Формы проекта

Программа на языке С#.NET. Windows вариант.
Условие: создать проект Музеи ( название, место, стоимость билета, время работы. Ввести данные в компонент 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 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();
} }}


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

Программа на языке С++.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();
}};}
Формы проекта


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

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

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

Программа
Форма 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);
} }}
Форма проекта.

Программа на языке 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
6413557785

Лабораторная работа 5.tc " Лабораторная работа №1 " Двумерные массивы на основе
ООП. Языки программирования С#, С++, 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;
} }}

Программа на языке С++. 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();

Лабораторная работа 6.tc "Лабораторная работа №4" Символьные данные ООП
Цель занятия: изучить структуру программ для построения графических объектов на основе использования метода объектно-ориентированного программирования
Программ на языке С#.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
{
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();
} }}
Блок – схема алгоритма

Лабораторная работа 7.tc "Лабораторная работа №4" Графика ООП
Цель занятия: изучить структуру программ для построения графических объектов на основе использования метода объектно-ориентированного программирования
Программ на языке С#.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();
} }}
Форма проекта

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



Программа на языке C#.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.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);
} }}


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

Лабораторная работа 8.tc "Лабораторная работа №4" Файлы ООП
Цель занятия: изучить структуру программ с файлами на основе использования метода объектно-ориентированного программирования. Методы работ с файлами: запись и открытие файлов, поиска данных в структурах файла, добавление данных в таблицы.
Программа на языке C#.NET. Файлы. Windows вариант
Пример 1.
Условие: разработать программу для ввода сведений об успеваемости студентов в таблицу ( фамилии, курс, номер группы, номер зачетки и средний балл об успеваемости)
Блок – схема алгоритма

Программа
using System;
using System.Collections.Generic;
2336800150495using System.ComponentModel;
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.tc "Лабораторная работа №4" Наследование ООП
Цель занятия: изучить структуру программ с учетом наследуемых классов на основе использования метода объектно-ориентированного программирования
Программа на языке C#.NET. Наследование.Windows вариант
Условие: создать проект Студенты с использованием свойства ООП наследование. Данные первого класса ( фамилия, год рождения, группа), данные второго класса ( тема, оценка)

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();//вывод таблиц на экран


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

Программа на языке 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();
} } }
24561803175

Лабораторная работа 10. Cистема управления базой данныхtc " 2.20 Лабораторная работа №20 "tc " Тема\: Индивидуальная работа на основе" на основе метода ООП
Программа на языке программирования С#. Windows вариант
Цель занятия: разработка Windows -приложений с использованием объектно-ориентированного метода программирования с включением свойств: инкапсуляции, наследования.
Таблицы базы данных Access


Форма управления БД

Программа
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)
{24860251270
Form2 f2 = new Form2();
f2.Show();
} }}
Блок – схема алгоритма
1571625-317600
261620-254100
Программа на языке программирования VB.NET. Windows вариант
Цель занятия: разработка Windows -приложений с использованием объектно-ориентированного метода программирования с включением свойств: инкапсуляции, наследования.





Программа
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
Блок – схема алгоритма
5397511430
Программа на языке программирования С++. Windows вариант
Цель занятия: разработка Windows -приложений с использованием объектно-ориентированного метода программирования с включением свойств: инкапсуляции, наследования.


С #pragma once
#include "MainTable.h"
ref class Table :public MainTable
{
public:
/// <summary>
/// Конструктор
/// </summary>
Table() :MainTable()
{
//загружаем в таблицу все данные
table = db->GetData("select * from Магазин");
}
/// <summary>
/// Загрузить все данные в таблицу
/// </summary>
void GetMain()
{
//загружаем в таблицу все данные
table = db->GetData("select * from Магазин");
}
/// Добавление в базу данных
void Add(String^ sql)
{
//добавляем в базу
db->Add(sql);
//перезагружаем таблицу
GetMain();
}
/// Поиск в базе данной строки
/// </summary>
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:
/// <summary>
/// Конструктор
/// </summary>
Table2() :MainTable()
{
}
/// <summary>
/// Получить из базы данные с заданным фильтром
/// </summary>
void GetData(String^ s)
{
//грузим из таблицы данные
table = db->GetData("select * from Характеристики where Номер_товара=" + s);
}
/// <summary>
/// Добавление в базу данных
/// </summary>
void Add(String^ sql, String^ s)
{
//добавляем в базу
db->Add(sql);
//перезагружаем таблицу
GetData(s);
}
/// <summary>
/// Удаление из базы записи
/// </summary>
void Delete(String^ s)
{
//удаляем из базы запись
db->Delete("delete * from Характеристики where Номер_товара=" + s);
}
/// <summary>
/// Удаление из базы записи
/// </summary>
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;
/// <summary>
/// Сводка для MainForm
/// </summary>
public ref class MainForm : public System::Windows::Forms::Form
{
Table^ tb1;
Table2^ tb2;
public:
MainForm(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~MainForm()
{
if (components)
{
delete components;
}}

#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
void InitializeComponent(void)
{
#pragma endregion
/// <summary>
/// Поиск строк в базе данных с заданным именем
/// </summary>
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){
}}
/// <summary>
/// Загрузка главной формы и получение данных от базы
/// </summary>
private: System::Void MainForm_Load(System::Object^ sender, System::EventArgs^ e) {
//инициализируются таблицы
tb1 = gcnew Table();
tb2 = gcnew Table2();
//грузим данные из базы в DataGridView
button6_Click(nullptr, nullptr);
}
/// <summary>
/// Получение товаров при изменении выделенного элемента
/// </summary>
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){}
}
/// <summary>
/// Добавление записи в первый dataGridView
/// </summary>
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();
}}
/// <summary>
/// Удаление записи из первого dataGridView
/// </summary>
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);
}
/// <summary>
/// Добавление записи в второй dataGridView
/// </summary>
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();
}}
/// <summary>
/// Удаление записи из второго dataGridView
/// </summary>
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;
}
/// <summary>
/// загрузка начальных данных
/// </summary>
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);
}
/// <summary>
/// Возвращает таблицу с данными
/// </summary>
DataTable^ GetTable()
{
return table;
}};

Этапы разработки приложения управления базой данных на С++
1. Создать форму WindowsForms проекта в Visual Studio с именим MainForm. Добавить на форму две таблицы DataGridView, в которых будут копироваться данные таблиц из базы данных. Далее добавить кнопки для поиска ButtonSearch, перехода на главную форму ButtonMain, для добавления в первую и вторую таблиц соответственно ButtonAdd1 и ButtonAdd2, а также для удаления из таблиц ButtonDelete1 и ButtonDelete2 и добавления TextBox для ввода строки поиска SearchText.
Создать класс DataBase для работы с базой данных. В классе необходимо создать поле OleDbConnection для ввода данных.
using namespace System;
using namespace System::Data;
using namespace System::Data::OleDb;
ref class DataBase
{
private:
OleDbConnection^ connection;
};
Добавить к классу DataBase конструктор с одним параметром ( строка подключения).
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;
}
Далее необходимо создать классы для работы с каждой 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;//класс для работы с базой
};
Добавить конструктор MainTable()
{
table = gcnew DataTable();
db = gcnew DataBase(connStringProvider+basePath);
}
Создать метод для загрузки данных из таблиц базы данных DataTable^ GetTable()
{
return table;
}
Добавить конструктор MainTable()
{
table = gcnew DataTable();
db = gcnew DataBase(connStringProvider+basePath);
}
Создать метод для ввод данных из базы
DataTable^ GetTable()
{
return table;
}
Создать класс Table1 для работы с первой таблицей, производный от класса MainTable
#include "MainTable.h"
ref class Table :public MainTable
{
};
Добавить конструктор и метод для получения начальных данных
Table() :MainTable()
{
GetMain();
}
void GetMain()
{
table = db->GetData("select * from Магазин");
}
Создать класс Table2 для работы со второй таблицей.
#include "MainTable.h"
ref class Table2 :public MainTable
{
};
Добавить конструктор и метод для получения данных из таблицы
Table2() :MainTable()
{}
void GetData(String^ s)
{//s – номер товара из первой страницы
table = db->GetData("select * from Характеристики where Номер_товара=" + s);
}
Объявить экземпляры классов 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);//нажатие на кнопку Главная
}
Создать событие при нажатии кнопки 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();
}
При изменении выделенной строки в 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){}
}
Создатьна форме событие нажатия клавиши 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();
}
}
На форме AddMagaz создать поля: наименование и цена, кнопки ОК и Cansel. При нажатии на кнопку ОК формируется запрос из указанных данных
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
command = "insert into Магазин (Наименование,Цена) values ('" + textBox1->Text + "','" + textBox2->Text + "')";
this->Close();
}
Перейти к классу Table1 и ввести метод для добавления в базу данных новых строк.
void Add(String^ sql)
{
db->Add(sql);
GetMain();
}
В классе DataBase необходимо сфорировать метод Add
void Add(String^ sql)
{
OleDbCommand^ insert = gcnew OleDbCommand(sql,connection);
connection->Open();
insert->ExecuteNonQuery();//выполныется запрос на добавление строки
connection->Close();
}
Для класса Table2 аналогично определить метод добавления
void Add(String^ sql, String^ s)
{
db->Add(sql);//добавляем
GetData(s);//грузим все необходимые данные заново
}
Создать на главной форме событие нажатия кнопки 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();
}}
Создать на главной форме событие нажатия кнопки 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();
}}
В классе DataBase создать метод Delete для удаления данных из базы.
void Delete(String^ sql)
{
OleDbCommand^ del = gcnew OleDbCommand(sql, connection);
connection->Open();
del->ExecuteNonQuery();
connection->Close();
}
В класс Table2 добавить метод Delete для удаления данных из второй наблицы.
void Delete(String^ s)
{
db->Delete("delete * from Характеристики where Код=" + s);
}
В класс Table1 добавить метод Delete для удаления данных из первой наблицы.
void Delete(String^ s)
{
db->Delete("delete * from Магазин where Номер_товара=" + s);
}
На главной форме создать событие нажатия на кнопку 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();
}
На главной форме создать событие нажатия на кнопку 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);//грузим главную
}
В классе Table1 создать метод для поиска данных.
void Search(String^ s)
{
table = db->GetData("select * from Магазин where Наименование like '%" + s + "%'");
}
На форме добавить событие нажатия на клавишу 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. Предисловие……….…….............................................. 4tc "2. Лабораторные работы......................................... 5"
2. Лабораторная работа 1. Структура программ
на основе ООП.…………………………………………. 5
3. Лабораторная работа 2 .Вычисление арифмети -
ческих выражений на основе ООП………....................... 11
4. Лабораторная работа 3. Вычисление суммы ряда
на основе ООП…………………………………………..25
5. Лабораторная работа 4. Одномерные массивы
на основе ООП..……….…………………………….. ....33
6. Лабораторная работа 5. Двумерные массивы
на основе ООП..……………………………………….71
7. Лабораторная работа 6. Символьные данные
основе ООП………………………………………….….76
8. Лабораторная работа 7tc "2.10 Лабораторная работа №10 .Тема\: ". Графика на основе ООП.…..81
9. Лабораторная работа 8. Файлы ООП…………………90
10. Лабораторная работа 9. Наследование ООП.………94
11. Лабораторная работа 10. Системы управления
базами данных на основе ООП……………………….115
12. Задания для лабораторных работ по теме ООП..…150
13. Список рекомендуемой литературы…………….… 158
16. Оглавление…………………………………………. 160
:
Учебно – методическое издание
Никишев Вячеслав Константинович
tc " Учебное издание"
Объектно-ориентированное программированиеtc " "tc ""
tc ""
Лабораторный практикум
Редактор М.С.Кулина
Согласно Закону №436-ФЗ от 29 октября 2010 года
дання продукция не подлежит маркировке
Подписано в печать 5.1.2016. Формат 60х80/16.
Бумага газетная.. Печать офсетная. Гарнитура Times.
Усл. печ. л. Уч.-изд. л 160. Тираж 50 экз. Заказ № .
Издательство Чувашского университета
Типография университета
428015 Чебоксары, Московский просп., 15