Проект в середовищі візуального програмування Visual Studio
Розробка таблиці для збереження даних у текстовому файлі про фільми в середовищі програмування Visual Studio C++ та їх сортування за країною виробництва. Реалізація таблиці за допомогою компонента dataGridView. Опис і контрольний приклад роботи програми.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 02.11.2016 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Зміст
- Вступ
- 1. Постановка завдання
- 2. Алгоритми та компоненти програми
- 3. Реалізація програми в середовищі програмування
- 4. Опис і контрольний приклад роботи програми
- Висновок
- Список використаної літератури
- Додаток А
Вступ
В наш час нові інформаційні технології посідають дуже важливе місце не лише в спеціалізованих, але й в повсякденних сферах життя. Комп'ютери застосовуються в бізнесі, менеджменті, торгівлі, навчанні та багатьох інших сферах діяльності людини. Нові інформаційні технології дуже актуальні в наш час і потребують багато уваги для подальшої розробки та вдосконалення. Поряд з цим, велике значення має також і програмування, яке є одним із фундаментальних розділів інформатики і тому не може залишатись осторонь.
Програмування містить цілу низку важливих внутрішніх задач. Однією з найбільш важливих таких задач для програмування є задача сортування. Під сортуванням звичайно розуміють перестановки елементів будь-якої послідовності у визначеному порядку. Ця задача є однією з найважливіших тому, що її метою є полегшення подальшої обробки певних даних і, насамперед, задачі пошуку.
Взагалі, відомо, що в будь-якій сфері діяльності, що використовує комп'ютер для запису, обробки та збереження інформації, усі дані зберігаються в базах даних, які також потребують сортування та певних алгоритмів їх обробки. Певна впорядкованість для них дуже важлива, адже користувачеві набагато легше працювати з даними, що мають певний порядок. Так, можна розташувати всі товари по назві або відомості про співробітників чи студентів за прізвищем або роком народження, тощо.
Задача сортування в програмуванні не вирішена повністю. Адже, хоча й існує велика кількість алгоритмів сортування, все ж таки метою програмування є не лише розробка алгоритмів сортування елементів, але й розробка саме ефективних алгоритмів сортування. Ми знаємо, що одну й ту саму задачу можна вирішити за допомогою різних алгоритмів і кожен раз зміна алгоритму приводить до нових, більш або менш ефективних розв'язків задачі. Основними вимогами до ефективності алгоритмів сортування є перш за все ефективність за часом та економне використання пам'яті.
Метою курсової роботи є ознайомлення з основними алгоритмами впорядкування об'єктів, а саме алгоритмами сортування, спроба проаналізувати їх і висвітлити кожен з них. Завданням курсової роботи є створити таблицю для збереження даних про фільми в середовищі програмування Visual Studio C++ та провести сортування даних за Країною виробництва.
1. Постановка завдання
Завданням курсової роботи є розробити проект в середовищі візуального програмування Visual Studio, мовою програмування високого рівня С#. Проект повинен містити створену таблицю, яка повинна включати наступні поля:
· Назва фільму
· Режисер
· Рік випуску
· Актори
· Бюджет
· Країна виробництва
· Тривалість
Дані з таблиці мають зберігатися в текстовому файлі. Проект повинен забезпечувати можливість зберігати дані із таблиці в файл, а також відкриття збережених файлі для перегляду і обробки інформації.
Програма повинна виконувати наступні функції:
Ш Відомими алгоритмами відсортовувати записи за Країною виробництва:
1) Бульбашка.
2) Швидке сортування
3) метод Шелла
4) Сортування вибіркою
5) сортування вставками
Ш Визначати Назви фільмів, в яких однакові режисери та найменші бюджети.
Ш За заданою країною виробництва, знаходити всі фільми, в яких найбільші бюджети і найменша тривалість.
Ш Визначати Режисерів, тривалість фільмів яких є найбільшою.
Програма повинна бути реалізована мовою програмування С#.
2. Алгоритми та компоненти програми
visual studio проект таблиця
Основною задачею створення курсового проекту є розробити програму, яка зберігатиме дані про фільми у вигляді таблиці. В середовищі Visual Studio таблиця реалізовується за допомогою компонента dataGridView.
Елемент управління DataGridView надає потужний і гнучкий спосіб відображення даних в табличному форматі. Елемент управління DataGridView можна використовувати для відображення невеликого обсягу даних тільки для читання, або можна масштабувати його для відображення дуже великих наборів даних.
Для того щоб реалізувати призначене для користувача поведінку в додатках, елемент управління DataGridView можна розширити декількома способами. Наприклад, можна програмно задати власні алгоритми сортування, можна створити власні типи осередків. Зовнішній вигляд елемента управління DataGridView легко налаштовується заданням значень декількох властивостей. Як джерело даних можуть використовуватися сховища даних різних типів, також елемент управління DataGridView може працювати без прив'язаного до нього джерела даних.
Однією з основних функцій, які повинна виконувати даний проект є сортування різними методами. Опишемо основні з них
Сортування Бульбашкою
Сортуваня простими обмінами, сортування бульбашкою (англ. bubble sort) -- простий алгоритм сортування. Для розуміння і реалізації цей алгоритм -- найпростіший, але эфективний він лише для невеликих масивів. Алгоритм вважається навчальним і практично не застосовується поза межами начальної літератури, замість нього на практиці застосовується сортування вставками. Алгоритм полягає у повторюваних проходах по масиву, що сортується. За кожен прохід елементи послідовно порівюються попарно і, якщо порядок у парі невірний, виконується обмін елементів. Проходи по масиву повторюються до тих пір, доки на черговому проході не виявиться, що обміни більше не потрібні, що означає -- масив вісортовано. При проході алгоритму, елемент, який стоїть не на свому місці, «спливає» до потрібної позиції як бульбашка у воді, звідси і назва алгоритму.
Булбашове сортування є дуже простим алгоритмом і його часова складність складає O(n2). Кожен раз, проходячи по всьому масиву, спочатку ми порівнюємо сусідні елементи і якщо є потреба міняємо їх місцями. Цей процес повторюється, поки при черговому проході зроблено хоча б одну заміну. Припустимо, що після T проходів масив вже відсортовано у порядку зростаня, тоді ми говоримо, що T є кількістю етапів сортування для заданого массиву. Нижче наведено приклад. Візьмемо за заданий початковий масив "5 14 2 8" а потім використовуючи описаний алгоритм бульбашкового сортування проведемо його сортування наступним чином:
Перший прохід:
( 5 1 4 2 8 ) -> ( 1 5 4 2 8 ), порівняли перших два елементи і поміняли їх місцями.
( 1 5 4 2 8 ) -> ( 1 4 5 2 8 ), поміняли місцями 5 > 4
( 1 4 5 2 8 ) -> ( 1 4 2 5 8 ), поміняли місцями 5 > 2
( 1 4 2 5 8 ) -> ( 1 4 2 5 8 ), так як два останніх елементи впорядковані (8 > 5), алгоритм не міняє їх місцями.
Другий прохід:
( 1 4 2 5 8 ) -> ( 1 4 2 5 8 )
( 1 4 2 5 8 ) -> ( 1 2 4 5 8 ), поміняли місцями 4 > 2
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
Після T = 2 проходів масив вже відсортовано, тому ми кажемо, що кількість проходів алгориму сортування бульбашкою для заданого масиву дорівнює 2.
Блок-схема алгоритму:
Рис.2.1 Блок-схема сортування бульбашкою Приклад коду на С#:
void bubbleSort(int[] array, int size)
{
//для швидшого сортування посортованих
bool wasSwapped = true;
for (int i = 1; (i <= size) && wasSwapped; ++i)
{
wasSwapped = false;
for (int j = 0; j < (size - i); ++j)
{
if (array[j] > array[j + 1])
{
int n=array[j];
array[j]= array[j + 1];
array[j + 1]=n;
wasSwapped = true;
}
}
}
}
Сортування вибором
Сортування вибором -- простий алгоритм сортування лінійного масиву, на основі вставок. Має ефективність n2, що робить його неефективним при сортування великих масивів, і в цілому, менш ефективним за подібний алгоритм сортування включенням. Сортування вибором вирізняється більшою простотою, ніж сортування включенням, і в деяких випадках, вищою продуктивністю.
Алгоритм працює таким чином:
Знаходить у списку найменше значення
Міняє його місцями із першим значеннями у списку
Повторює два попередніх кроки, доки список не завершиться (починаючи з другої позиції)
Фактично, таким чином ми поділили список на дві частини: перша (ліва) -- повністю відсортована, а друга (права) -- ні.
Ось приклад сортування масиву з п'яти елементів за даним алгоритмом:
64 25 12 22 11
11 25 12 22 64
11 12 25 22 64
11 12 22 25 64
Сортування вставками також може працювати зі списками, які підтримують операції додавання і видалення, як то зв'язаний список. У такому разі, більш зручно видаляти зі списку найменший елемент, і вставляти його в кінець відсортованої частини масиву. Наприклад:
64 25 12 22 11
11 64 25 12 22
11 12 64 25 22
11 12 22 64 25
11 12 22 25 64
Блок-схема алгоритму:
Рис.2.2 Блок-схема сортування вибором
Сортування вибором не є складним в аналізі та порівнянні його з іншими алгоритмами, оскільки жоден з циклів не залежить від даних у списку. Знаходження найменшого елементу вимагає перегляду усіх n елементів (у цьому випадку n ? 1 порівняння), і після цього, перестановки його до першої позиції. Знаходження наступного найменшого елементу вимагає перегляду n ? 1 елементів, і так далі, для (n ? 1) + (n ? 2) + … + 2 + 1 = n(n ? 1) / 2 ? И(n2) порівнянь (дивіться арифметична прогресія). Кожне сканування вимагає однієї перестановки для n ? 1 елементів (останній елемент знаходитиметься на своєму місці).
Сортування включенням
Сортування включенням -- простий алгоритм сортування на основі порівнянь. На великих масивах є значно менш ефективним за такі алгоритми, як швидке сортування, пірамідальне сортування та сортування злиттям. Однак, має цілу низку переваг:
простота у реалізації
ефективний (зазвичай) на маленьких масивах
ефективний при сортуванні масивів, дані в яких вже непогано відсортовані: продуктивність рівна O(n + d), де d -- кількість інверсій
на практиці ефективніший за більшість інших квадратичних алгоритмів (O(n2)), як то сортування вибором та сортування бульбашкою: його швидкодія рівна n2/4, і в найкращому випадку є лінійноює стабільним алгоритмом
Блок-схема алгоритму:
Рис.2.3 Блок-схема сортування включенням
На кожному кроці алгоритму ми вибираємо один з елементів вхідних даних і вставляємо його на потрібну позицію у вже відсортованому списку до тих пір, доки набір вхідних даних не буде вичерпано. Метод вибору чергового елементу з початкового масиву довільний; може використовуватися практично будь-який алгоритм вибору. Зазвичай (і з метою отримання стійкого алгоритму сортування), елементи вставляються за порядком їх появи у вхідному масиві.
Швидке сортування
Швидке сортування (англ. Quick Sort) -- алгоритм сортування, добре відомий, як алгоритм розроблений Чарльзом Гоаром, який не потребує додаткової пам'яті і виконує у середньому O(nlogn) операцій. Однак, у найгіршому випадку робить O(n^{2}) порівнянь. Оскільки алгоритм використовує дуже прості цикли і операції, він працює швидше інших алгоритмів, що мають таку ж асимптотичну оцінку складності. Наприклад, зазвичай більш ніж удвічі швидший порівняно з сортуванням злиттям.
Ідея алгоритму полягає в переставлянні елементів масиву таким чином, щоб його можна було розділити на дві частини і кожний елемент з першої частини був не більший за будь-який елемент з другої. Впорядкування кожної з частин відбувається рекурсивно. Алгоритм швидкого сортування може бути реалізований як у масиві, так і в двозв'язномусписку.
Швидке сортування є алгоритмом на основі порівнянь, і не є стабільним.
Алгоритм швидкого сортування реалізований на мові програмування С:
void quickSortR(int a[], long N)
{
long i = 0, j = N;
int temp, p;
p = a[0];
do {
while ( a[i] < p ) i++;
while ( a[j] > p ) j-;
if (i <= j) {
temp = a[i]; a[i] = a[j]; a[j] = temp;
i++; j-;
}
} while ( i<=j );
if ( j > 0 ) quickSortR(a, j);
if ( N > i ) quickSortR(a+i, N-i);
}
Сортування методом Шелла
Цей алгоритм може розглядатися і як узагальнення бульбашкового сортування, так і сортування вставками.
Ідея методу полягає в порівняння розділених на групи елементів послідовності, що знаходяться один від одного на деякій відстані. Спочатку ця відстань дорівнює d або N / 2, де N - загальне число елементів. На першому кроці кожна група включає в себе два елементи розташованих один від одного на відстані N / 2; вони порівнюються між собою, і, в разі необхідності, міняються місцями. На наступних кроках також відбуваються перевірка і обмін, але відстань d скорочується на d / 2, і кількість груп, відповідно, зменшується. Поступово відстань між елементами зменшується, і на d = 1 прохід по масиву відбувається в останній раз.
Перше значення, відповідне відстані d дорівнює 10/2 = 5. На кожному кроці воно зменшується вдвічі. Елементи, що входять в одну групу, порівнюються і якщо значення будь-якого елементу, що стоїть лівіше того з яким він порівнюється, виявляється більше (сортування по зростанню), тоді вони міняються місцями. Так, елементи шляхом внутрішньогрупових перестановок поступово стають на свої позиції, і на останньому кроці (d = 1) сортування зводиться до проходу по одній групі, що включає в себе всі N елементів масиву. При цьому число необхідних обмінів виявляється зовсім невеликим.
Приклад коду:
void Shell(int A[], int n)
{
d=n;
d=d/2;
while (d>0)
{
for (i=0; i<n-d; i++)
j=i;
while (j>=0 && A[j]>A[j+d])
{
count=A[j];
A[j]=A[j+d];
A[j+d]=count;
j--;
}
}
d=d/2;
}
for (i=0; i<n; i++) cout<<A[i]<<" "; }
3. Реалізація програми в середовищі програмування
Після опису основних алгоритмів і компонентів програми можна перейти до програмної реалізації проекту засобами програмування. Середовищем виконання було вибрано Visual Studio 2015. Мова програмування - С#
Microsoft Visual Studio -- серія продуктів фірми Майкрософт, які включають інтегроване середовище розробкипрограмного забезпечення та ряд інших інструментальних засобів. Ці продукти дозволяють розробляти як консольні програми, так і програми з графічним інтерфейсом, в тому числі з підтримкою технології Windows Forms, а також веб-сайти, веб-застосунки, веб-служби як в рідному, так і в керованому кодах для всіх платформ, що підтримуються Microsoft Windows, Windows Mobile, Windows Phone, Windows CE, .NET Framework, .NET Compact Framework та Microsoft Silverlight
Опис мови С#
C# (вимовляється Сі-шарп) -- об'єктно-орієнтована мова програмування з безпечною системою типізації для платформи.NET. Розроблена Андерсом Гейлсбергом, Скотом Вілтамутом та Пітером Гольде під егідою Microsoft Research (при фірміMicrosoft).
Синтаксис C# близький до С++ і Java. Мова має строгу статичну типізацію, підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки, коментарі у форматі XML. Перейнявши багато що від своїх попередників -- мов С++, Delphi, Модула і Smalltalk -- С#, спираючись на практику їхньоговикористання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем, наприклад множинне спадкування класів (на відміну від C++).
Для створення нового проекту в середовищі MVS 2015 необхідно в стартовому вікні вибрати пункт New Project, далі вказати назву проекту і шлях для збереження (див. рис. 3.1). Після створення проекту відкриється середовище розробки програмного продукту. Тут ми зможемо розробити дизайн вікна програми, а також розмістити основні елементи управління на форму. Для початку на формі розмістимо компонент dataGridView (див. рис. 3.2), і розтягнемо його на всю форму. Після цього створимо відповідні до завдання поля таблиці (див. рис. 3.3-3.4)і.
Рис. 3.1. Вікно створення нового проекту
Рис. 3.2. Розміщення компонента dataGridView
Рис. 3.3. Редагування колонок компонента dataGridView
Рис. 3.4. Створення колонок компонента dataGridView
Далі розробимо меню нашого проекту, щоб користувач міг виконувати поставлені задачі, зокрема: зберігати і відкривати файли з данами, сортувати елементи таблиці, здійснювати пошук за заданими критеріями. Для цього використаємо елемент menuStrip. Знаходимо його в панелі інструментів і розміщуємо його на формі (див. рис. .3.5)
Рис. 3.5. Розміщення компонента menuStrip.
Рис. 3.6. створення пунктів меню.
Після того, як інтерфейс програми розроблений і всі елементи управління розміщені на формі можна перейти до програмування функцій програм. Лістинг коду проекту наведений в додатку А.
4. Опис і контрольний приклад роботи програми
Після створення програмного продукту важливим етапом є контрольний запуск програми. Контрольний запуск дає змогу перевірити програму на працездатність та виявити можливі неполадки в процесі виконання програмного коду.
Отже для перевірки запустимо програму. Після запуску з'явиться головне вікно програми, яке складається з меню та таблиці (див. рис. 4.1).
Рис. 4.1. Головне вікно програми
Меню програми складається з трьох вкладок:
Файл - дозволяє виконувати операції збереження даних у файл; відкриття файлів; здійснювати вихід з програми (див. рис. 4.2).
Рис. 4.2. Пункти меню вкладки «Файл»
Для відкриття файлів необхідно виконати наступні команди: Файли->Відкрити. Після цього відкриється діалогове вікно де ми зможемо вибрати потрібний нам файл (див. рис. 4.3).
Рис. 4.3. Діалогове вікно відкриття файлу.
Після вибору файлу інформація збережене в ньому перенесеться в таблицю де ми зможемо додавати нові записи та редагувати вже існуючі (див. рис. 4.4).
Рис. 4.4. Редагування записів
Вкладка меню «Сортування» дозволяє вибирати різні методи сортування даних в таблиці (див. рис. 4.5).
Рис. 4.5. Вкладка меню «Сортування»
Вибравши метод сортування бульбашкою записи в таблиці відсортуються відповідно до алфавітного порядку за країною виробництва фільму (див. рис. 4.6).
Рис. 4.6. Сортування записів таблиці методом бульбашки
Наступним пунктом меню є «Пошук». Тут наведені різні критерії пошуку (див. рис. 4.7).Тут ми можемо шукати:
· Назви фільмів, в яких однакові режисери та найменші бюджети (рис. 4.8).
· За заданою країною виробництва, знаходити всі фільми, в яких найбільші бюджети і найменша тривалість (рис. 4.9).
· Режисерів, тривалість фільмів яких є найбільшою (рис. 4.10).
· найдорожчий, найстарший фільм (рис. 4.11).
Рис. 4.7. Вкладка меню «Пошук»
Рис. 4.8. Пошук назв фільмів, в яких однакові режисери та найменші бюджети
Рис. 4.9. Пошук за заданою країною виробництва, всіх фільми, в яких найбільші бюджети і найменша тривалість
Рис. 4.10. Пошук режисерів тривалість фільмів яких є найбільшою
Рис. 4.11. Пошук найдорожчого, найстаршого фільму
Висновок
В ході виконання курсового проекту з дисципліни «Алгоритми та структури даних» було розроблено програмний продукт в середовищі візуального програмування Visual Studio 2015 мовою програмування високого рівня C#. Програмний продукт здійснює оброблення інформації про фільми у вигляді таблиці, дозволяє зберігати дані у текстовому файлі, а також здійснювати їх сортування різними методами, зокрема:
1) Бульбашка.
2) Швидке сортування
3) метод Шелла
4) Сортування вибіркою
5) сортування вставками
Програма також дозволяє здійснювати пошук за різними критеріями.
В ході розробки було узагальнено та застосовано на практиці теоретичні знання отримані на заняттях з даної дисципліни, а також було програмно реалізовано основні алгоритми сортування та пошуку.
Список використаної літератури
1. Альфред В. Ахо, Джон Э. Хопкрофт, Джерффри Д. Ульман. Структуры данных и алгоритмы. - М.: Издательский дом “Вильямс”, 2001.
2. Вирт Н. Алгоритмы и структурные данные. ? Санкт-Петербург: Невский диалект, 2001.
3. Иванов Б.Н. и др. Дискретная математика. Алгоритмы и программы. ? Москва: Лаборатория базовых знаний, 2002.
4. Львов М.С., Співаковський О. В. Основи алгоритмізації та програмування. - Херсон, 1997.
5. http://uk.wikipedia.org
Додаток А
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;
using System.IO;
namespace kursproject
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
void quicksort(int[] mas, string[] country, int first, int last) //швидке сортування
{
int count;
int f = first, l = last;
string mid = country[(f + l) / 2]; //визначення опорного елемента
do
{
while (String.Compare(country[f], mid, true) < 0) f++;
while (String.Compare(country[f], mid, true) > 0) l--;
if (f <= l) //перестановка елементів
{
count = mas[f];
mas[f] = mas[l];
mas[l] = count;
f++;
l--;
}
} while (f < l);
if (first < l) quicksort(mas, country, first, l);
if (f < last) quicksort(mas, country, f, last);
}
private void відкритиToolStripMenuItem_Click(object sender, EventArgs e)
{
Stream openstr = null;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((openstr = openFileDialog1.OpenFile()) != null)
{
StreamReader myread = new StreamReader(openstr);
string[] str;
int num = 0;
try
{
string[] str1 = myread.ReadToEnd().Split('\n');//зчитування рядків з файлу
num = str1.Count();
dataGridView1.RowCount = num;
for (int i = 0; i < num; i++)
{
str = str1[i].Split('^');//розбиття рядків на поля
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
dataGridView1.Rows[i].Cells[j].Value = str[j];
}
}
}
catch
{
}
finally
{
myread.Close();
}
}
}
}
private void зберегтиToolStripMenuItem_Click(object sender, EventArgs e)
{
Stream savestrim;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((savestrim = saveFileDialog1.OpenFile()) != null)
{ }
StreamWriter mywrite = new StreamWriter(savestrim);
try
{
for (int i = 0; i < dataGridView1.RowCount - 1; i++)
{
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
mywrite.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "^"); //запис даних в стрічку
}
mywrite.WriteLine(); // запис стрічки
}
}
catch
{
}
finally
{
mywrite.Close();
}
savestrim.Close();
}
}
private void бульбашкоюToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i;
N = dataGridView1.RowCount - 1;
int[] mas = new int[N];
string[] countries = new string[N];
string[] name = new string[N];
string[] director = new string[N];
string[] year = new string[N];
string[] time = new string[N];
string[] money = new string[N];
string[] actors = new string[N];
for (i = 0; i < N; i++)
{
countries[i] = dataGridView1.Rows[i].Cells[5].Value.ToString();
name[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();
director[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
year[i] = dataGridView1.Rows[i].Cells[2].Value.ToString();
time[i] = dataGridView1.Rows[i].Cells[6].Value.ToString();
money[i] = dataGridView1.Rows[i].Cells[4].Value.ToString();
actors[i] = dataGridView1.Rows[i].Cells[3].Value.ToString();
mas[i] = i;
}
//сортування
int str;
for (i = 0; i < N - 1; i++)
{
for (int j = 0; j < N - 1; j++)
{
if (String.Compare(countries[j], countries[j + 1], true) > 0)
{
str = mas[j];
mas[j] = mas[j + 1];
mas[j + 1] = str;
}
}
}
//-----------------------------------------------
for (i = 0; i < N; i++)
{
dataGridView1.Rows[i].Cells[0].Value = name[mas[i]];
dataGridView1.Rows[i].Cells[1].Value = director[mas[i]];
dataGridView1.Rows[i].Cells[2].Value = year[mas[i]];
dataGridView1.Rows[i].Cells[3].Value = actors[mas[i]];
dataGridView1.Rows[i].Cells[4].Value = money[mas[i]];
dataGridView1.Rows[i].Cells[5].Value = countries[mas[i]];
dataGridView1.Rows[i].Cells[6].Value = time[mas[i]];
}
}
private void методШеллаToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i;
N = dataGridView1.RowCount - 1;
int[] mas = new int[N];
string[] countries = new string[N];
string[] name = new string[N];
string[] director = new string[N];
string[] year = new string[N];
string[] time = new string[N];
string[] money = new string[N];
string[] actors = new string[N];
for (i = 0; i < N; i++)
{
countries[i] = dataGridView1.Rows[i].Cells[5].Value.ToString();
name[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();
director[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
year[i] = dataGridView1.Rows[i].Cells[2].Value.ToString();
time[i] = dataGridView1.Rows[i].Cells[6].Value.ToString();
money[i] = dataGridView1.Rows[i].Cells[4].Value.ToString();
actors[i] = dataGridView1.Rows[i].Cells[3].Value.ToString();
mas[i] = i;
}
//сортування
int d = N;
d = d / 2;
while (d > 0)
{
for (i = 0; i < N - d; i++)
{
int j = i;
while (j >= 0 && (String.Compare(countries[j], countries[j + d]) > 0))
{
int count = mas[j];//міняємо місцями
mas[j] = mas[j + d];
mas[j + d] = count;
j--;
}
}
d = d / 2;
}
//-----------------------------------------------
for (i = 0; i < N - 1; i++)
{
dataGridView1.Rows[i].Cells[0].Value = countries[i];
dataGridView1.Rows[i].Cells[1].Value = director[mas[i]];
dataGridView1.Rows[i].Cells[2].Value = year[mas[i]];
dataGridView1.Rows[i].Cells[3].Value = actors[mas[i]];
dataGridView1.Rows[i].Cells[4].Value = money[mas[i]];
dataGridView1.Rows[i].Cells[5].Value = countries[mas[i]];
dataGridView1.Rows[i].Cells[6].Value = time[mas[i]];
}
}
private void вставкамиToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i;
N = dataGridView1.RowCount - 1;
int[] mas = new int[N];
string[] countries = new string[N];
string[] name = new string[N];
string[] director = new string[N];
string[] year = new string[N];
string[] time = new string[N];
string[] money = new string[N];
string[] actors = new string[N];
for (i = 0; i < N; i++)
{
countries[i] = dataGridView1.Rows[i].Cells[5].Value.ToString();
name[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();
director[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
year[i] = dataGridView1.Rows[i].Cells[2].Value.ToString();
time[i] = dataGridView1.Rows[i].Cells[6].Value.ToString();
money[i] = dataGridView1.Rows[i].Cells[4].Value.ToString();
actors[i] = dataGridView1.Rows[i].Cells[3].Value.ToString();
mas[i] = i;
}
//сортування
string temp; // тимчасова зміна для збереження значення елемента сортуючого масива
int item, tind;
for (int counter = 1; counter < N; counter++)
{
tind = mas[counter];
temp = countries[counter]; // записуємо в тимчасову змінну поточне значення масиву
item = counter - 1; // індекс попереднього елемента
while (item >= 0 && (String.Compare(countries[item], temp) > 0)) // поки індекс не дорівнює 0 і попередній елемент масива більший поточного
{
mas[item + 1] = mas[item]; // перестановка елементів
mas[item] = tind;
item--;
}
}
//-----------------------------------------------
for (i = 0; i < N - 1; i++)
{
dataGridView1.Rows[i].Cells[0].Value = countries[i];
dataGridView1.Rows[i].Cells[1].Value = director[mas[i]];
dataGridView1.Rows[i].Cells[2].Value = year[mas[i]];
dataGridView1.Rows[i].Cells[3].Value = actors[mas[i]];
dataGridView1.Rows[i].Cells[4].Value = money[mas[i]];
dataGridView1.Rows[i].Cells[5].Value = countries[mas[i]];
dataGridView1.Rows[i].Cells[6].Value = time[mas[i]];
}
}
private void вибіркоюToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i;
N = dataGridView1.RowCount - 1;
int[] mas = new int[N];
string[] countries = new string[N];
string[] name = new string[N];
string[] director = new string[N];
string[] year = new string[N];
string[] time = new string[N];
string[] money = new string[N];
string[] actors = new string[N];
for (i = 0; i < N; i++)
{
countries[i] = dataGridView1.Rows[i].Cells[5].Value.ToString();
name[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();
director[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
year[i] = dataGridView1.Rows[i].Cells[2].Value.ToString();
time[i] = dataGridView1.Rows[i].Cells[6].Value.ToString();
money[i] = dataGridView1.Rows[i].Cells[4].Value.ToString();
actors[i] = dataGridView1.Rows[i].Cells[3].Value.ToString();
mas[i] = i;
}
//сортування
for (i = 0; i < N - 1; i++)
{
int index = i;
for (int j = i + 1; j < N; j++)
{
if (String.Compare(countries[j], countries[index], true) < 0) //порівнювання двох слів
index = j;
int Number = mas[index]; //обмін місцями
mas[index] = mas[i];
mas[i] = Number;
}
}
//-----------------------------------------------
for (i = 0; i < N - 1; i++)
{
dataGridView1.Rows[i].Cells[0].Value = countries[i];
dataGridView1.Rows[i].Cells[1].Value = director[mas[i]];
dataGridView1.Rows[i].Cells[2].Value = year[mas[i]];
dataGridView1.Rows[i].Cells[3].Value = actors[mas[i]];
dataGridView1.Rows[i].Cells[4].Value = money[mas[i]];
dataGridView1.Rows[i].Cells[5].Value = countries[mas[i]];
dataGridView1.Rows[i].Cells[6].Value = time[mas[i]];
}
}
private void швидкеToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i;
N = dataGridView1.RowCount - 1;
int[] mas = new int[N];
string[] countries = new string[N];
string[] name = new string[N];
string[] director = new string[N];
string[] year = new string[N];
string[] time = new string[N];
string[] money = new string[N];
string[] actors = new string[N];
for (i = 0; i < N; i++)
{
countries[i] = dataGridView1.Rows[i].Cells[5].Value.ToString();
name[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();
director[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
year[i] = dataGridView1.Rows[i].Cells[2].Value.ToString();
time[i] = dataGridView1.Rows[i].Cells[6].Value.ToString();
money[i] = dataGridView1.Rows[i].Cells[4].Value.ToString();
actors[i] = dataGridView1.Rows[i].Cells[3].Value.ToString();
mas[i] = i;
}
//сортування
quicksort(mas, countries, 0, N - 1); //виклик функції швидкого сортування
//-----------------------------------------------
for (i = 0; i < N - 1; i++)
{
dataGridView1.Rows[i].Cells[0].Value = countries[i];
dataGridView1.Rows[i].Cells[1].Value = director[mas[i]];
dataGridView1.Rows[i].Cells[2].Value = year[mas[i]];
dataGridView1.Rows[i].Cells[3].Value = actors[mas[i]];
dataGridView1.Rows[i].Cells[4].Value = money[mas[i]];
dataGridView1.Rows[i].Cells[5].Value = countries[mas[i]];
dataGridView1.Rows[i].Cells[6].Value = time[mas[i]];
}
}
private void найдорожчийНайстаршийФільмToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i;
N = dataGridView1.RowCount - 1;
double[] money = new double[N];
int[] year = new int[N];
for (i = 0; i < N; i++)
{
money[i] = Convert.ToDouble(dataGridView1.Rows[i].Cells[4].Value); //конвертуємо дані з таблиці в масив
year[i] = Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
}
int max = 0; //присвоюємо початкові значення масивів, як максимальні
double maxcost = money[0];
int maxyear = year[0];
for (i = 1; i < N; i++) //цикл по наступним елементам
{
if (maxcost < money[i]) //порівнювання максимального і поточного елемента
{
maxcost = money[i]; //якщо поточний елемент більший - робимо його максимальним
max = i;
maxyear = year[i];
}
if (maxcost == money[i] && maxyear > year[i]) //якщо поточний елемент рівний то порівнюжмо по рокові випуску
{
maxcost = money[i];
max = i;
maxyear = year[i];
}
}
dataGridView1.Rows[max].DefaultCellStyle.BackColor = Color.Red;//виділяєм максимальний елемент червоним кольором
}
private void режисериТривалістьФільмівЯкихЄНайбільшоюToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i, max;
N = dataGridView1.RowCount - 1;
int[] time = new int[N];
string[] name = new string[N];
string[] director = new string[N];
int ctime;
string nam = string.Empty;
for (i = 0; i < N; i++)
{
time[i] = Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value); //конвертуємо дані з таблиці в масив
name[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();
director[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
}
ctime = time[0];
max = 0;
for (i = 1; i < N; i++)
{
if (ctime < time[i])
{
max = i;
}
}
MessageBox.Show(director[max]);
}
private void однаковіРежисериТаНайменшіБюджетиToolStripMenuItem_Click(object sender, EventArgs e)
{
int N, i;
N = dataGridView1.RowCount - 1;
double[] money = new double[N];
string[] name = new string[N];
string[] director = new string[N];
double cmoney;
string nam = string.Empty;
for (i = 0; i < N; i++)
{
money[i] = Convert.ToDouble(dataGridView1.Rows[i].Cells[4].Value); //конвертуємо дані з таблиці в масив
name[i] = dataGridView1.Rows[i].Cells[0].Value.ToString();
director[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
}
for (i = 0; i < N; i++)
{
string cdirector = director[i];
cmoney = money[i];
for (int j = i+1; j < N; j++)
{
if (cdirector == director[j] && cmoney>money[j])
{
nam += name[j] + "\n";
}
}
}
if (nam=="")
{
MessageBox.Show("немає фільмів з однаковими режисерами");
}
else
{
MessageBox.Show(nam);
}
}
private void найбільшіБюджетиІНайменшаТривалістьToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
}
}
}
Размещено на Allbest.ru
Подобные документы
Базові конструкції мови програмування С++ з позиції об’єктного програмування. Розробка програми для автоматизації обліку товарів на складі магазину парфумів. Реалізація програми в середовищі Visual Studio C++. Розробка інтерфейсу і тестування програми.
дипломная работа [907,9 K], добавлен 01.04.2016Концепції об'єктно-орієнтованого програмування. Конструктори та деструктори. Успадкування класів. Побудова об’єктної моделі. Визначення об'єктів та класів і зв’язків між ними. Реалізація програми в середовищі Visual Studio C++. Інтерфейс програми.
курсовая работа [743,7 K], добавлен 25.01.2016Відомості про мови програмування та методи програмування. Системні вимоги програми. Керівництво програміста та керівництво користувача. Використання консольного додатку візуального середовища Visual Studio 2010. Запуск програми "Толковый словарь".
курсовая работа [791,1 K], добавлен 18.01.2015Класифікація існуючих інформаційних систем. Особливості створення інформаційної системи роботи меблевого магазину. Розробка програми, що забезпечує роботу торгівельної организації, в середовищі Microsoft Visual Studio 2008 на мові програмування Vb.NEt.
курсовая работа [829,5 K], добавлен 12.12.2013Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.
курсовая работа [762,8 K], добавлен 03.05.2015Послідовність створення бази даних автопарку. Визначення об'єктів та класів і зв’язків між ними. Конструктори та деструктори, успадкування класів. Реалізація програми в середовищі Visual Studio C++, її тестування. Побудова об’єктної моделі додатку.
курсовая работа [529,0 K], добавлен 25.01.2016Створення баз даних для автоматизування роботи торгового представника в середовищі програмування Delрhі. Опис вхідної та результуючої інформації, формалізований опис задачі. Розробка технічного та робочого проекту, опис та обґрунтування вибору структури.
курсовая работа [135,8 K], добавлен 11.10.2010Розробка та проектування інтерфейсу користувача у середовищі Microsoft Visual Studio 2010 з використання Visaul C#. Введення, додавання, вилучення даних. Пошук і фільтрація потрібних записів за допомогою запитів. Реалізація валідації, обробка виключень.
курсовая работа [1,5 M], добавлен 29.03.2017Розробка програми в візуальному середовищі С++. Визначення значення функцій в середовищі Builder мовою програмування С++. Обчислення елементів квадратної матриці згідно заданного алгоритму. Бібліотека візуальних компонентів і середовище програмування.
курсовая работа [451,5 K], добавлен 15.01.2012Оптимізація перевезення продуктів із пунктів відправлення до пунктів споживання. Зниження транспортних витрат, розробка і використання оптимальних схем вантажних потоків. Архітектура програмного забезпечення в середовищі Microsoft Visual Studio 2010.
курсовая работа [675,3 K], добавлен 10.03.2013