Автоматизація обліку абонентів
Концепції об'єктно-орієнтованого програмування. Конструктори та деструктори. Успадкування класів. Побудова об’єктної моделі. Визначення об'єктів та класів і зв’язків між ними. Реалізація програми в середовищі Visual Studio C++. Інтерфейс програми.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 25.01.2016 |
Размер файла | 743,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Вступ
Курсова робота - це перша самостійна наукова праця майбутнього програмного інженера. При її виконанні студент поглиблює знання з фундаментальних та професійно-орієнтованих дисциплін, засвоює методику експериментальних досліджень, оволодіває навичками співставлення результатів своїх досліджень із літературними даними, аналізу, узагальнення і літературного оформлення одержаних результатів з теми дослідження, набуває вміння вести науковий пошук, що розвиває в молодого інженера творчий підхід до роботи.
Курсова робота з об'єктно-орієнтованого програмування передбачає знання студентами об'єктно-орієнтованого проектування та програмування і є завершальним етапом вивчення у рамках курсу об'єктно-орієнтованє програмування підготовки студентів.
Метою курсової роботи є закріплення, поглиблення та узагальнення знань, якими студент оволодів під час вивчення курсу, в набутті навичок використання основ алгоритмізації та програмування на алгоритмічних мовах високого рівня з використанням принципів об'єктно-орієнтованого проектування та програмування, методики розробки програмних модулів та програмного забезпечення комп'ютерних систем управління, набуття студентами теоретичних знань та практичних навичок в області використання сучасних систем візуального проектування програмних засобів комп'ютерних систем управління та освоєння принципів та методів сучасних технологій програмування, набуття навичок професійних та практики наукових досліджень з оформленням відповідного текстового, програмного та ілюстративного матеріалу у формі наукового звіту.
Виконання курсової роботи (КР) направлено на закріплення знань, отриманих при вивченні теоретичної частини курсу, і набуття практичних навичок розробки об'єктно-орієнтованих програм. В результаті виконання курсової роботи студент повинен освоїти:
- концепції об'єктно-орієнтованого програмування;
- спеціалізовані засоби розробки програмного забезпечення мовою Java;
- спеціалізовані засоби розробки програмного забезпечення мовою С ++;
знати: загальні питання побудови та використання сучасних систем об'єктно-орієнтованного та візуального проектування програмних засобів комп'ютерних систем управління; основні поняття та методи об'єктно-орієнтованного проектування та програмування, основні засоби розробки програм з використанням багато ієрархічних структур об'єктів та класів об'єктів;
вміти: самостійно вибирати середовище проектування програмних засобів, проектувати, розробляти, налагоджувати та супроводжувати сучасне програмне забезпечення комп'ютерних систем управління.
Під час виконання курсової роботи студент повинен продемонструвати:
- вміння збирати і аналізувати відповідні матеріали про об'єкт дослідження, використовуючи сучасні джерела інформації, включаючи Інтернет --ресурси;
- спроможність проводити необхідні обґрунтування для розробки програмних засобів систем управління різного призначення тощо;
- здатність доводити розв'язання поставленої задачі до логічного кінця;
- вміння аналізувати отримані результати і робити з них висновки.
КР складається з двох взаємопов'язаних частин. Для виконання першої частини КР потрібно побудувати детальну об'єктну модель запропонованої предметної області. Друга частина КР передбачає безпосередню розробку об'єктно-орієнтованого програмного забезпечення, реалізує розроблену об'єктну модель.
1. Тереотичні відомості
1.1 Основи ООП
програмування інтерфейс конструктор деструктор
Об'ємктно-орієнтомване програмувамння (ООП) -- одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. Основу ООП складають три основні концепції: інкапсуляція, успадкування та поліморфізм. Одною з переваг ООП є краща модульність програмного забезпечення (тисячу функцій процедурної мови, в ООП можна замінити кількома десятками класів із своїми методами). Попри те, що ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 1990-тих, коли розвиток комп'ютерів та комп'ютерних мереж дозволив писати надзвичайно об'ємне і складне програмне забезпечення, що змусило переглянути підходи до написання програм. Сьогодні багато мов програмування або підтримують ООП (Lua) або ж є цілком об'єктно-орієнтованими (зокрема, Java, C#, C++, Python, PHP, Ruby та Objective-C, ActionScript 3, Swift, Vala).
Об'єктно-орієнтоване програмування сягає своїм корінням до створення мови програмування Симула в 1960-тих роках, одночасно з посиленням дискусій про кризу програмного забезпечення. Разом із тим, як ускладнювало апаратне та програмне забезпечення, було дуже важко зберегти якість програм. Об'єктно-орієнтоване програмування частково розв'язує цю проблему шляхом наголошення на модульності програми[1].
На відміну від традиційних поглядів, коли програму розглядали як набір підпрограм, або як перелік інструкцій комп'ютеру, ООП програми можна вважати сукупністю об'єктів. Відповідно до парадигми об'єктно-орієнтованого програмування, кожний об'єкт здатний отримувати повідомлення, обробляти дані, та надсилати повідомлення іншим об'єктам. Кожен об'єкт -- своєрідний незалежний автомат з окремим призначенням та відповідальністю [2].
Об'єктно-орієнтоване програмування - це метод програмування, заснований на поданні програми у вигляді сукупності взаємодіючих об'єктів, кожен з яких є екземпляром певного класу, а класи є членами певної ієрархії наслідування. Програмісти спочатку пишуть клас, а на його основі при виконанні програми створюються конкретні об'єкти (екземпляри класів). На основі класів можна створювати нові, які розширюють базовий клас і таким чином створюється ієрархія класів.
На думку Алана Кея, розробника мови Smalltalk, якого вважають одним з «батьків-засновників» ООП, об'єктно-орієнтований підхід полягає в наступному наборі основних принципів:
· Все є об'єктами.
· Всі дії та розрахунки виконуються шляхом взаємодії (обміну даними) між об'єктами, при якій один об'єкт потребує, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, надсилаючи і отримуючи повідомлення. Повідомлення -- це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії.
· Кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів.
· Кожен об'єкт є представником (екземпляром, примірником) класу, який виражає загальні властивості об'єктів.
· У класі задається поведінка (функціональність) об'єкта. Таким чином усі об'єкти, які є екземплярами одного класу, можуть виконувати одні й ті ж самі дії.
· Класи організовані у єдину деревоподібну структуру з загальним корінням, яка називається ієрархією успадкування. Пам'ять та поведінка, зв'язані з екземплярами деякого класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві.
Таким чином, програма являє собою набір об'єктів, що мають стан та поведінку. Об'єкти взаємодіють використовуючи повідомлення. Будується ієрархія об'єктів: програма в цілому -- це об'єкт, для виконання своїх функцій вона звертається до об'єктів що містяться у ньому, які у свою чергу виконують запит шляхом звернення до інших об'єктів програми. Звісно, щоб уникнути безкінечної рекурсії у зверненнях, на якомусь етапі об'єкт трансформує запит у повідомлення до стандартних системних об'єктів, що даються мовою та середовищем програмування. Стійкість та керованість системи забезпечуються за рахунок чіткого розподілення відповідальності об'єктів (за кожну дію відповідає певний об'єкт), однозначного означення інтерфейсів міжоб'єктної взаємодії та повної ізольованості внутрішньої структури об'єкта від зовнішнього середовища (інкапсуляції).
1.2 Класи та об'єкти
Поняття класу є фундаментальним в ООП і служить основою для створення об'єктів. В описі класу визначаються дані (тобто змінні) і код (тобто методи), який маніпулює цими даними. Об'єкти є екземплярами класу.
Методи і змінні, складові клас, називаються членами класу. При визначенні класу оголошуються дані, які він містить, і код, який маніпулює цими даними. Дані містяться в змінних екземпляра, які визначені класом, а код міститься в методах. У мові С # визначені кілька специфічних різновидів членів класу. До них відносяться: змінні екземпляра, статичні змінні, константи, методи, конструктори, деструктори, індексатори, події, оператори і властивості.
Ініціалізація змінних в об'єкті (як у примірнику класу) проводиться безпосередньо в конструкторі класу. У складі класу може бути визначено декілька конструкторів.
Класи
Синтаксис визначення класу:
class імя_класу
{
тип_доступу тип імя_змінної1;
тип_доступу тип імя_змінної2;
тип_доступу повертаємий_тип
імя_методу1 (список_параметрів)
{Тіло_методу}
}
де тип_доступу може приймати одне з наступних значень: public, private, protected, internal. Члени класу з типом доступу public є загальнодоступними (тобто доступні з будь-якої точки програми за межами даного класу), з типом доступу protected - всередині членів даного класу і його похідних, з типом доступу private - тільки для інших членів даного класу. Тип доступу internal застосовується для типів, доступних у межах однієї збірки.
Наведемо приклад:
class Animal
{
public string Name;
private int Weight;
protected int Type;
public int Animal (int W, int T, string N)
{
Weight = W;
Type = T;
Name = N;
}
public int GetWeight ()
{
return Weight;
}
}
Обєкт
Для створення об'єкта необхідно використовувати наступний синтаксис:
імя_класу імя_обєкту = new імя_класу ();
При створенні об'єкта (тобто екземпляра класу) відбувається виклик відповідного конструктора класу.
Поняття конструктора і деструктора.
Під конструктором класу будемо розуміти метод для ініціалізації об'єкту при його створенні. Конструктор має те ж ім'я, що і його клас. У конструкторах тип значення не вказується явно. Конструктори використовуються для присвоювання початкових значень змінним примірника, певним класом, і для виконання будь-яких інших процедур ініціалізації, необхідних для створення об'єкта.
Конструктор існує для будь-якого класу, незалежно від того, визначено він в явному вигляді чи ні. Замовчування мова С # передбачено наявність конструктора, який присвоює нульові значення всім змінним примірники (для змінних типів-значень) та значення null (для змінних посилального типу). У випадку явного визначення конструктора класу конструктор за умовчанням не використовується.
Синтаксис опису конструктора:
імя_класу (список_параметрів)
{Тіло_конструктора}
Під деструкцією будемо розуміти метод, який автоматично викликається при знищенні об'єкта класу (безпосередньо перед початком процедури "складання сміття"). Деструктори не мають параметрів і не повертають значень.
Синтаксис опису деструктора:
~ Імя_класу () {тіло_деструктора}
Наслідування
Під Наслідування будемо мати на увазі властивість, за допомогою якого один об'єкт може набувати властивостей іншого. При цьому підтримується концепція ієрархічної класифікації, що має напрям зверху вниз. При прийнятті концепції наслідування, для новостворюваних об'єктів необхідно визначати тільки ті властивості, які роблять його унікальним у межах свого класу. Об'єкт може успадковувати загальні атрибути від батьківських по відношенню до нього класів.
Синтаксис опису об'єкту:
class імя_классу: імя_батьківського_класу
{
тіло_класу
}
Приклад опису об'єкту:
class Predator: Animal
{
private int Speed;
}
1.3 Конструктори та деструктори. Успадкування класів
Конструктори. Одне з основних завдань об'єктно-орієнтованого програмування полягає у тому, щоб об'єкти описаного раз і назавжди класу працювали «правильно» -- тобто так, як це визначає модель. Кожний об'єкт перед тим як почати роботу, потрібно створити, тобто перевести в якийсь початковий стан. Отже, треба якимось чином описати можливі механізми створення об'єктів даного класу. Для цього в мові C++ існують конструктори. Це особливі методи класу, які й повинні перевести об'єкт у той самий початковий стан. Конструктор описується як метод, ім'я якого збігається з іменем класу, а тип поверненого значення опущений.
Приклад:
class Point
{
public:
Point(int x0, int y0);
private:
int x, y;
};
Point::Point(int x0, int y0)
{
x=x0;
y=y0;
}
Тепер для створення об'єкта класу Point потрібно після імені змінної вказати параметри, як для виклику функції:
Point A(1, 1), B(2, 0);
Типи конструкторів. Існують деякі типи конструкторів, які, крім безпосереднього використання, автоматично викликаються у деяких особливих ситуаціях.
Конструктор за замовчуванням. Це конструктор, що викликається без параметрів:
Point();
Point(int a=5);
Його використовують для створення масиву об'єктів, оскільки не зрозуміло, які конструктори і з якими параметрами треба викликати для кожного елемента масиву. Наприклад:
Point A[10];
Point* B=new Point[10];
Конструктор за замовчуванням викликається також тоді, якщо не вказано параметри для ініціалізації об'єкта, як у цьому випадку:
Point p;
Конструктор копіювання. Цей конструктор викликається тоді, коли потрібно створити копію об'єкта. Аргументом цього конструктора має бути посилання на об'єкт цього самого класу:
Point(Point& p);
Важливим випадком, коли викликається конструктор копіювання, є передавання об'єкта у функцію як параметра за значенням. Тоді створюється новий об'єкт і для нього автоматично викликається конструктор копіювання. Створення конструкторів копіювання потрібне у випадку, якщо об'єкт потребує якихось спеціальних операцій при копіюванні, оскільки під час стандартного копіювання вміст одного об'єкта просто побайтно переноситься в інший.
Приклад:
class String
{
public:
String(); // конструктор за замовчуванням
String(const String& s); // конструктор копіювання
String(const char* s); // конструктор з параметром
// const char*, який являє собою
// стандартний рядок s
~String(); // деструктор
private:
char* array; // масив символів
int size; // розмір масиву
};
Приклад виклику конструкторів:
int main()
{ String a, b; // конструктор за замовчуванням
String c(a); // конструктор копіювання
print(a); // конструктор копіювання, оскільки
// аргумент передається у функцію за значенням
String d(“One”); // конструктор з параметром
//...
}
Деструктори. Конструктори ініціалізують об'єкт, тобто вони створюють середовище, у якому "працюють" функції-члени. Іноді створення такого середовища зумовлює "захоплення" якихось ресурсів: пам'яті, файлу, процесорного часу, які повинні бути "звільнені" після їх використання. Тобто класам потрібна функція, яка б знищувала об'єкт аналогічно тому, як його створює конструктор. Такі функції називають деструкторами.
Приклад:
class Name
{
const char* s;
//...
};
class Table
{
Name* p;
size_t sz;
public:
Table(size_t s=15) {p=new Name[sz=s];} //конструктор
~Table() {delete[] p;} //деструктор
//...
}
Успадкування класів. Об'єкти різних класів і самі класи можуть перебувати у відношенні успадкування, за якого формується ієрархія об'єктів, що відповідає заздалегідь передбаченій ієрархії класів.
Ієрархія класів дозволяє визначати нові класи на основі вже існуючих. Існуючі класи зазвичай називають базовими (інколи породжувальними), а нові класи, що формуються на основі базових, -- похідними (породженими), інколи класами-нащадками або спадкоємцями. Похідні класи “отримують спадок” -- дані і методи своїх базових класів -- і, крім того, можуть поповнюватись власними компонентами (даними і власними методами). Елементи, які успадковуються, не переміщуються в похідний клас, а залишаються в базових класах. Повідомлення, обробку якого не можуть виконати методи похідного класу, автоматично передається в базовий клас.
Будь-який похідний клас може, в свою чергу, стати базовим для інших класів, і таким чином формується напрямлений граф ієрархії класів та об'єктів. В ієрархії похідний об'єкт успадковує дозволені для успадкування компоненти всіх базових об'єктів. Іншими словами, в об'єкта є можливість доступу до даних і методів усіх своїх базових класів.
Успадкування в ієрархії класів може відображатись і у вигляді дерева, і у вигляді більш загального напрямленого ациклічного графу. Дозволяється множинне успадкування -- можливість для деякого класу успадковувати компоненти кількох ніяк не зв'язаних між собою базових класів.
Наприклад, за таким визначенням
class S: X, Y, Z {...};
клас S породжений класами X, Y, Z, звідки він успадковує компоненти.[2]
2. Постановка завдання
Основним етапом в розв'язку поставленої задачі є її постановка. Під час постановки завдання програміст повинен визначитися з вхідними даними, побудувати математичну модель задачі, вирішити основні проблеми.
В нашому випадку нам необхідно розробити систему обліку абонентів. Для початку нам необхідно розібратися з вхідними даними. Наша система повинна вміщувати в собі повну інформацію про кожного співробітника фірми, а саме:
· прізвище, ім'я, по-батькові;
· дату народження;
· адресу проживання;
· номер телефону;
Розібравшись зі вхідними даними нам потрібно визначитись, які функції виконуватиме наша система. Так як нам необхідно розробити програму обліку співробітників. То функції будуть наступними:
- Добавлення нового абонента.
- Відображення переліку всіх абонентів системи.
- Видалення абонента.
- Пошук абонента за визначиними критеріями (ПІБ, область, район, номер телефону).
Визначивши основні функції перейдемо до вирішення проблеми зберігання вихідних даних. Так як проект міститиме об'ємну кількість інформації, її доцільно буде зберігати у вигляді таблиць БД Access. І на кінець, нам потрібно вибрати мову програмування, для реалізації проекту. Для нашого проекту ми виберемо мову С++.
3. Побудова об'єктної моделі
Для побудови об'єктної моделі даної системи необхідно виконати наступні етапи:
визначення об'єктів і класів;
визначення залежностей між об'єктами;
визначення зв'язків;
побудова діаграми ієрархії класів.
3.1 Визначення об'єктів та класів і зв'язків між ними
Аналізуючи постановку завдання і предметну область, можна виділити набір можливих класів. В цей набір будуть входити як стандартні класи мови програмування так і користувацькі класи, спроектовані користувачем
До стандартних класів, які будуть використовуватись в програмі належатимуть:
- Форма 1 (Form1)
- Форма 2 (Form2)
- Кнопки (Button)
- Текстові блоки (textBox)
- Конектори (oleDbConnection)
- Мітки (Label)
- Таблиця (DataGridView)
Також в програмі будуть використовуватися власні класи:
- Абстрактний клас Дані (dani)
- Похідний клас Персональні дані (pdani)
- Похідний клас Адреса(adress)
- Агрегатний клас Абонент(Abonent)
Після визначення класів нам потрібно виділити об'єкти кожного з вище зазначених класів. Нижче наведено об'єкти класів:
В класі Form1 наявні об'єкти: 3 об'єкти класу Button, об'єкт класу Form2 об'єкт класу DataGridView і об'єкт класів oleDbConnection та oleDbDataAdapter.
Після того як ми визначилися з класами та об'єктами нам потрібго визначити зв'зки між ними.
Між виділеними класами потрібно виділити явні і неявні зв'язки.
Між класами Form1 s Form2 існує зв'язок використання. Клас Form1 викликає інші класи на виконання.
Клас Form2 передає дані від об'єктів класу textBox об'єкту класу Emploee.
Клас Abonent передає дані отримані від класу Form2 об'єкту класу oleDbConnection.
Класи Adress та pdani успадковуються від абстрактного класу dani.
Класи adress та pdani мають зв'язок агрегації з класом Abonent. Остальній утворюється внаслідок множинного успадкування від перших.
3.2 Побудова діаграми ієрархії класів
Провівши аналіз залежностей між класами на предмет виявлення зв'язків можна побудувати діаграму (ієрархію) класів. Діаграма класів дозволяє графічно відобразити кількість класів нашої майбутньої програми і зв'язки між цими класами. Для фізичного чи логічного проектування предметної області програмного додатка прийнято використовувати систему позначень Буча.
Для побудови цих діаграм використовуються такі основні елементи:
1. Ілюстрація класу (рис. 1).
Рис. 1. Зображення класу
2. Ілюстрація об'єкта (рис. 2).
Рис. 2. Зображення об'єкта
3. Спеціалізація класів:
- абстрактний клас (наприклад, клас тварин тощо) (рис. 3).
Рис. 3. Зображення абстрактного класу
- дружній клас (такий клас, що має доступ до закритих членів інших класів) (рис. 4).
Рис. 4. Зображення дружнього класу
4. Таблиця стрілок для подання відношень:
Таблиця 1
Проста агрегація |
||
Агрегація за значенням |
||
Агрегація за посиланням |
||
Використання |
||
Успадкування -- однакові типи |
||
Успадкування -- нові типи |
||
Асоціація |
Відповідно до побудованої об'єктної моделі системи, в якій ми визначили класи та об'єкти, а також встановили зв'язки між ними створими діаграму класів на основі нотації Буча.
Діаграма класів зображена на Рис. 5
Рис. 5. Діаграма класів у нотації Буча
4. Реалізація програми в середовищі Visual Studio C++
4.1 Інтерфейс програми
Для гарної роботи нашої майбутньої програми, вона повинна бути легкою у використанні. Щоб програмою могли користуватися будь-які користувачі, створюють графічний інтерфейс. В Visual Studio C++ інтерфейс програми створюється за допомогою простих маніпуляцій «мишкою». Для цього просто на панелі інструментів потрібно вибрати необхідний компонент і помістити його на робочу область.
Для початку створення програми відкриваємо середовище програмування Visual Studio C++ за допомогою піктограми на робочому столі комп'ютера. В розділі створити вибираємо вкладку Windows Form і задаємо місце, де буде зберігатися наш проект. Після цих дій перед нами появиться середовище розробки зображене не рис.6.
Рис.6.Середовище розробки Visual Studio C++
Далі нам потрібно розробити інтерфейс програми. Для цього Форму1 помістимо компонент DataGridView з панелі інструментів і 3 компоненти Button. Так як наш проект буде зберігати дані в БД Access, то потрібно створити зв'язок БД з нашою програмою. Для цього вибираємо компонент oleDbDataAdapter. Після цього перед нами появиться майстер добавлення підключення де вказуємо шлях до нашої БД. Вікно майстра зображено на рис. 7.
Рис.7. Вікно майстра добавлення підключення
Після того як ми створили інтерфейс програми і налаштували зв'язок з БД, можна перейти до програмування програми. Для цього вибираємо вкладку редактора коду і вводимо необхідні оператори. Лістинг коду Форми1 наведений в додатку 1.
Далі нам потрібно до нашого проекту додати 3 додаткові форми. Для цього потрібно вибрати наступні пункти: Проект->Додати новий елемент-> Форма Windows. Після цього аналогічним чином створюємо інтерфейс і програмуємо. Лістинг коду форми 2 наведені в додатках 2.
Оскільки наша програма містить користувацькі класи, потрібно до проекту також додати файл заголовків де будуть описані наші класи. Для цього виконуємо наступні команди: Проект->Додати клас. Перед нами появиться вікно де потрібно описати наші класи. Для початку описуємо абстрактний клас dani:
ref class dani
{
public:
System::String ^dates;
dani(void);
virtual void get()=0;
};
Абстрактний клас дані має одну чисто віртуальну функцію virtual void get() яка повертає значення «0». Від цього класу успадковубться два інших класи: adress та pdani.
Розглянемо перший клас:
ref class pdani:dani
{
System::String ^PIB;
System::String ^tell;
System::String ^dnar;
pdani()
{
PIB="";
tell="";
dnar="";
}
void get()
{
pdani PD;
Form2 ^F2=gcnew Form2();
PD.PIB=F2->textBox1->Text;
PD.dnar=F2->textBox2->Text;
PD.tell=F2->textBox8->Text;
F2->textBox1->Text="";
F2->textBox2->Text="";
F2->textBox8->Text="";
};
};
Цей клас містить в собі 3 атрибути типу System::String, конструктор і один метод void get(). Метод void get() слугує для отримання значень від об'єктів класів textbox.
Другий клас аналогічний першому але він призначений для отримання інформації, яка відповідає даним про місце проживання абонента. Опис цього класу наведений нижче:
ref class adress:dani
{
System::String ^misto;
System::String ^obl;
System::String ^rajon;
System::String ^vul;
System::String ^bud;
JobData()
{
misto="";
obl="";
rajon="";
vul="";
bud="";
}
void get()
{
adress Adr;
Form2 ^F2=gcnew Form2();
Adr.misto=F2->textBox3->Text;
Adr.obl=F2->textBox4->Text;
Adr.rajon=F2->textBox5->Text;
Adr.vul=F2->textBox6->Text;
Adr.bud=F2->textBox7->Text;
F2->textBox3->Text="";
F2->textBox4->Text="";
F2->textBox5->Text="";
F2->textBox6->Text="";
F2->textBox7->Text="";
};
};
Від вище наведених класів внаслідок множинного успадкування утворюється клас Abonent:
ref class Abonent:pdani,adress
{
public:
Abonent(void);
System::String ^PIB;
System::String ^dnar;
System::String ^tell;
System::String ^misto;
System::String ^obl;
System::String ^rajon;
System::String ^vul;
System::String ^bud;
void search()
{
Form2 ^F2=gcnew Form2();
F2->listBox1->Items->Clear();
int j;
System::String ^str;
str=F2->textBox1->Text;
for (j=0;j<F2->dataGridView1->RowCount;j++)
{
tell=F2->dataGridView1->Rows[j]->Cells[7]->FormattedValue->ToString();
rajon= F2->dataGridView1->Rows[j]->Cells[4]->FormattedValue->ToString();
obl= F2->dataGridView1->Rows[j]->Cells[3]->FormattedValue->ToString();
PIB= F2->dataGridView1->Rows[j]->Cells[0]->FormattedValue->ToString();
if((PIB==str) || (osvita==str) || (spec==str))
{
dnar= F2->dataGridView1->Rows[j]->Cells[1]->FormattedValue->ToString();
misto= F2->dataGridView1->Rows[j]->Cells[2]->FormattedValue->ToString();
vul= F2->dataGridView1->Rows[j]->Cells[5]->FormattedValue->ToString();
bud= F2->dataGridView1->Rows[j]->Cells[6]->FormattedValue->ToString();
F2->listBox1->Items->Add(PIB+" "+dnar+" "+misto+" "+obl+" "+rajon+" "+vul+ " "+bud+" "+tell);
}
};
void get()
{
pdani PD;
address Adr;
Abonent Abn;
Abn.PIB=PD.PIB;
Abn.misto= Adr.misto;
Abn.dnar=PD.dnar;
Abn.tell=PD.tell;
Abn.obl= Adr.obl;
Abn.rajon= Adr.rajon;
Abn.vul= Adr.vul;
Abn.bud= Adr.bud;
}
void set()
{
Form2 ^F2=gcnew Form2();
F2->oleDbConnection1->Open();
F2->oleDbDataAdapter1->InsertCommand->CommandText= "INSERT INTO `Абоненти` (`ПІБ`, `Дата народження`, `Місто`, `Область`, `Район`, `Вулиця`, `Будинок`, `Телефон`) VALUES ('"+PIB+"','"+dnar+"', '"+misto+"', '"+obl+"', '"+rajon+"', '"+vul+"', '"+bud+"', '"+tell+"')";
F2->oleDbDataAdapter1->InsertCommand->ExecuteNonQuery();
F2->oleDbConnection1->Close();
};
};
Цей клас містить в собі всі атрибути попередніх класів, а також три методи:
1. Метод void search() відповідає за пошук інформації за такими критеріями: ПІБ, номер телефона, область та район
2. Метод void get() відповідає за отримання інформації від батьківських класів
3. Метод void set() відповідає за збереження даних в БД
Після того як інтерфейс програми ми сформували, провели процес її програмування, необхідно виконати перевірку правильності роботи. Перевірка програми наведена в наступному розділі.
4.2 Тестування програми
Щоб переконатися що програма працює вірно при різних варіантах вхідних даних необхідно провести її тестування. Тестування надає можливості зробити висновки виконання проекту і виявити можливі несправності. Щоб розпочати тестування програми натискаємо на клафішу «F5». Після цього перед нами появиться вікно нашої програми. Вікно програми зображено на рис. 8.
Як видно з рисунка вище, наша програма відображає дані з БД, отже цей блок проекту працює вірно і жодних помилок не виникає. Далі перевіряємо процес добавлення нових даних. Для цього натискаємо кнопку «Прийняти працівника». Перед нами з'являється вікно де ми можемо вводити в задані поля інформацію. Скріншот вікна показаний на рис. 9.
Рис. 8. Вікно програми.
Рис. 9. Вікно добавлення працівника
Після введення даних натискаємо кнопку прийняти і перевіряємо чи добавились дані в БД. Помилок при добавлені не виникло тому можна зробити висновок, що і ця частина програми працює вірно. Вікно з добавленими даними зображено на рис.10.
Рис. 10. Вікно з добавленими даними
Завершальним кроком перевірки працездатності програми є перевірка функції пошуку. Для цього в поле вводу критерію вводимо дані для пошуку (даними можуть слугувати ПІБ абонента, номер телефону, область чи район) і натискаємо клавішу «знайти абонента». Результати пошуку показані на рис. 11.
Рис.11. Результати пошуку
Провівши тестування розробленої нашої програми, можна зробити висновок, що програма працює правильно при будь-яких вхідних даних і не видає помилок.
Висновок
В ході виконання завдання курсової роботи з об'єктно-орієнтованого програмування, мною було вивчено базові конструкції мови програмування С++ з позиції об'єктного програмування; використано на практиці знання отримані мною на заняттях з дисципліни «Об'єктно-орієнтованого програмування»; розроблено і протестовано систему обліку співробітників, яка здійснює наступні функції: прийняття нового працівника,звільнення працівника та пошук працівника в базі за заданим критерієм, розвинено вміння викроистовувати основні приципи ООП і вміння працювати з класами та об'єктами.
Навички роботи з мовами програмування отримані мною під час виконання курсової роботи необхідні для подальшого удосконалення професійних здібностей програміста, збільшення рівня кваліфікації. Адже практичне застосування теоретичних знань є однією з найбільш важливих частин підготовки майбутнього спеціаліста.
Список використаної літератури
1. Інформатика. Мова програмування С++. Спецкурс. 10-12 класи. Навчальний посібник / Лєхан С.А. - Шепетівка, «Аспект», 2007 - 160 с.
2. Об'єтно-орієнтоване програмування мовою С++, Навчальний посібник,Т.Є.Рак, Львів,2011 - 401с
3. Борис Пахомов - C C++ и MS Visual С++ 2010 для начинающих - БХВ-Петербург, 2011 - 736 с.
Додаток 1
Лістинг Form1
#pragma once
#include "Form2.h"
#include "Dani.h"
#include "Abonent.h"
namespace kur {
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>
/// Сводка для Form1
/// </summary>
public ref class Form1: public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label2;
protected:
private: System::Windows::Forms::ListBox^ listBox1;
private: System::Data::OleDb::OleDbCommand^ oleDbSelectCommand1;
private: System::Windows::Forms::Label^ label1;
private: System::Data::OleDb::OleDbCommand^ oleDbInsertCommand1;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Button^ button3;
private: System::Data::DataColumn^ dataColumn8;
private: System::Windows::Forms::Button^ button2;
private: System::Data::OleDb::OleDbCommand^ oleDbUpdateCommand1;
private: System::Windows::Forms::Button^ button1;
private: System::Data::DataTable^ dataTable1;
private: System::Data::DataColumn^ dataColumn1;
private: System::Data::DataColumn^ dataColumn2;
private: System::Data::DataColumn^ dataColumn3;
private: System::Data::DataColumn^ dataColumn4;
private: System::Data::DataColumn^ dataColumn5;
private: System::Data::DataColumn^ dataColumn6;
private: System::Data::DataColumn^ dataColumn7;
private: System::Windows::Forms::DataGridView^ dataGridView1;
private: System::Data::OleDb::OleDbCommand^ oleDbDeleteCommand1;
private: System::Data::OleDb::OleDbCommand^ oleDbSelectCommand2;
private: System::Data::OleDb::OleDbCommand^ oleDbInsertCommand2;
private: System::Data::OleDb::OleDbCommand^ oleDbUpdateCommand2;
private: System::Data::OleDb::OleDbCommand^ oleDbDeleteCommand2;
private: System::Data::OleDb::OleDbDataAdapter^ oleDbDataAdapter1;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ пІБDataGridViewTextBoxColumn;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ датаНародженняDataGridViewTextBoxColumn;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ містоDataGridViewTextBoxColumn;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ областьDataGridViewTextBoxColumn;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ районDataGridViewTextBoxColumn;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ вулицяDataGridViewTextBoxColumn;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ будинокDataGridViewTextBoxColumn;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ телефонDataGridViewTextBoxColumn;
private: System::Windows::Forms::BindingSource^ bindingSource1;
private: System::Data::DataSet^ dataSet1;
private: System::Data::DataTable^ dataTable2;
private: System::Data::DataColumn^ dataColumn9;
private: System::Data::DataColumn^ dataColumn10;
private: System::Data::DataColumn^ dataColumn11;
private: System::Data::DataColumn^ dataColumn12;
private: System::Data::DataColumn^ dataColumn13;
private: System::Data::DataColumn^ dataColumn14;
private: System::Data::DataColumn^ dataColumn15;
private: System::Data::DataColumn^ dataColumn16;
private: System::Data::OleDb::OleDbConnection^ oleDbConnection1;
private: System::ComponentModel::IContainer^ components;
private:
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
this->label2 = (gcnew System::Windows::Forms::Label());
this->listBox1 = (gcnew System::Windows::Forms::ListBox());
this->oleDbSelectCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->label1 = (gcnew System::Windows::Forms::Label());
this->oleDbInsertCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->button3 = (gcnew System::Windows::Forms::Button());
this->dataColumn8 = (gcnew System::Data::DataColumn());
this->button2 = (gcnew System::Windows::Forms::Button());
this->oleDbUpdateCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->button1 = (gcnew System::Windows::Forms::Button());
this->dataTable1 = (gcnew System::Data::DataTable());
this->dataColumn1 = (gcnew System::Data::DataColumn());
this->dataColumn2 = (gcnew System::Data::DataColumn());
this->dataColumn3 = (gcnew System::Data::DataColumn());
this->dataColumn4 = (gcnew System::Data::DataColumn());
this->dataColumn5 = (gcnew System::Data::DataColumn());
this->dataColumn6 = (gcnew System::Data::DataColumn());
this->dataColumn7 = (gcnew System::Data::DataColumn());
this->dataGridView1 = (gcnew System::Windows::Forms::DataGridView());
this->пІБDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->датаНародженняDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->містоDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->областьDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->районDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->вулицяDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->будинокDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->телефонDataGridViewTextBoxColumn = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->bindingSource1 = (gcnew System::Windows::Forms::BindingSource(this->components));
this->dataSet1 = (gcnew System::Data::DataSet());
this->dataTable2 = (gcnew System::Data::DataTable());
this->dataColumn9 = (gcnew System::Data::DataColumn());
this->dataColumn10 = (gcnew System::Data::DataColumn());
this->dataColumn11 = (gcnew System::Data::DataColumn());
this->dataColumn12 = (gcnew System::Data::DataColumn());
this->dataColumn13 = (gcnew System::Data::DataColumn());
this->dataColumn14 = (gcnew System::Data::DataColumn());
this->dataColumn15 = (gcnew System::Data::DataColumn());
this->dataColumn16 = (gcnew System::Data::DataColumn());
this->oleDbDeleteCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbSelectCommand2 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbConnection1 = (gcnew System::Data::OleDb::OleDbConnection());
this->oleDbInsertCommand2 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbUpdateCommand2 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbDeleteCommand2 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbDataAdapter1 = (gcnew System::Data::OleDb::OleDbDataAdapter());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataTable1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataGridView1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->bindingSource1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataSet1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataTable2))->BeginInit();
this->SuspendLayout();
//
// label2
//
this->label2->AutoSize = true;
this->label2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->label2->Location = System::Drawing::Point(320, 530);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(182, 24);
this->label2->TabIndex = 15;
this->label2->Text = L"Результати пошуку";
//
// listBox1
//
this->listBox1->FormattingEnabled = true;
this->listBox1->Location = System::Drawing::Point(22, 569);
this->listBox1->Name = L"listBox1";
this->listBox1->Size = System::Drawing::Size(796, 134);
this->listBox1->TabIndex = 14;
//
// oleDbSelectCommand1
//
this->oleDbSelectCommand1->CommandText = L"SELECT ПІБ, [Дата народження], Місто, Телефон, Область, Район, Вулиця, Будинок, К"
L"од FROM Абоненти";
//
// label1
//
this->label1->AutoSize = true;
this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 12, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(204)));
this->label1->Location = System::Drawing::Point(463, 468);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(196, 20);
this->label1->TabIndex = 13;
this->label1->Text = L"Введіть критерій пошуку";
//
// oleDbInsertCommand1
//
this->oleDbInsertCommand1->CommandText = L"INSERT INTO `Абоненти` (`ПІБ`, `Дата народження`, `Місто`, `Телефон`, `Область`, "
L"`Район`, `Вулиця`, `Будинок`) VALUES (\?, \?, \?, \?, \?, \?, \?, \?)";
this->oleDbInsertCommand1->Parameters->AddRange(gcnew cli::array< System::Data::OleDb::OleDbParameter^ >(8) {(gcnew System::Data::OleDb::OleDbParameter(L"ПІБ",
System::Data::OleDb::OleDbType::VarWChar, 0, L"ПІБ")), (gcnew System::Data::OleDb::OleDbParameter(L"Дата_народження", System::Data::OleDb::OleDbType::VarWChar,
0, L"Дата народження")), (gcnew System::Data::OleDb::OleDbParameter(L"Місто", System::Data::OleDb::OleDbType::VarWChar, 0,
L"Місто")), (gcnew System::Data::OleDb::OleDbParameter(L"Телефон", System::Data::OleDb::OleDbType::VarWChar, 0, L"Телефон")),
(gcnew System::Data::OleDb::OleDbParameter(L"Область", System::Data::OleDb::OleDbType::VarWChar, 0, L"Область")), (gcnew System::Data::OleDb::OleDbParameter(L"Район",
System::Data::OleDb::OleDbType::VarWChar, 0, L"Район")), (gcnew System::Data::OleDb::OleDbParameter(L"Вулиця", System::Data::OleDb::OleDbType::VarWChar,
0, L"Вулиця")), (gcnew System::Data::OleDb::OleDbParameter(L"Будинок", System::Data::OleDb::OleDbType::VarWChar, 0, L"Будинок"))});
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(467, 491);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(244, 20);
this->textBox1->TabIndex = 12;
//
// button3
//
this->button3->Location = System::Drawing::Point(738, 478);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(95, 38);
this->button3->TabIndex = 11;
this->button3->Text = L"Знайти абонента";
this->button3->UseVisualStyleBackColor = true;
//
// dataColumn8
//
this->dataColumn8->ColumnName = L"Телефон";
//
// button2
//
this->button2->Location = System::Drawing::Point(123, 478);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(95, 38);
this->button2->TabIndex = 10;
this->button2->Text = L"Видалити абонента";
this->button2->UseVisualStyleBackColor = true;
//
// oleDbUpdateCommand1
//
this->oleDbUpdateCommand1->CommandText = resources->GetString(L"oleDbUpdateCommand1.CommandText");
this->oleDbUpdateCommand1->Parameters->AddRange(gcnew cli::array< System::Data::OleDb::OleDbParameter^ >(25) {(gcnew System::Data::OleDb::OleDbParameter(L"ПІБ",
System::Data::OleDb::OleDbType::VarWChar, 0, L"ПІБ")), (gcnew System::Data::OleDb::OleDbParameter(L"Дата_народження", System::Data::OleDb::OleDbType::VarWChar,
0, L"Дата народження")), (gcnew System::Data::OleDb::OleDbParameter(L"Місто", System::Data::OleDb::OleDbType::VarWChar, 0,
L"Місто")), (gcnew System::Data::OleDb::OleDbParameter(L"Телефон", System::Data::OleDb::OleDbType::VarWChar, 0, L"Телефон")),
(gcnew System::Data::OleDb::OleDbParameter(L"Область", System::Data::OleDb::OleDbType::VarWChar, 0, L"Область")), (gcnew System::Data::OleDb::OleDbParameter(L"Район",
System::Data::OleDb::OleDbType::VarWChar, 0, L"Район")), (gcnew System::Data::OleDb::OleDbParameter(L"Вулиця", System::Data::OleDb::OleDbType::VarWChar,
0, L"Вулиця")), (gcnew System::Data::OleDb::OleDbParameter(L"Будинок", System::Data::OleDb::OleDbType::VarWChar, 0, L"Будинок")),
(gcnew System::Data::OleDb::OleDbParameter(L"IsNull_ПІБ", System::Data::OleDb::OleDbType::Integer, 0, System::Data::ParameterDirection::Input,
static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"ПІБ", System::Data::DataRowVersion::Original, true, nullptr)),
(gcnew System::Data::OleDb::OleDbParameter(L"Original_ПІБ", System::Data::OleDb::OleDbType::VarWChar, 0, System::Data::ParameterDirection::Input,
false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"ПІБ", System::Data::DataRowVersion::Original, nullptr)),
(gcnew System::Data::OleDb::OleDbParameter(L"IsNull_Дата_народження", System::Data::OleDb::OleDbType::Integer, 0, System::Data::ParameterDirection::Input,
static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Дата народження", System::Data::DataRowVersion::Original, true,
nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Дата_народження", System::Data::OleDb::OleDbType::VarWChar,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Дата народження",
System::Data::DataRowVersion::Original, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"IsNull_Місто", System::Data::OleDb::OleDbType::Integer,
0, System::Data::ParameterDirection::Input, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Місто", System::Data::DataRowVersion::Original,
true, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Місто", System::Data::OleDb::OleDbType::VarWChar,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Місто",
System::Data::DataRowVersion::Original, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"IsNull_Телефон", System::Data::OleDb::OleDbType::Integer,
0, System::Data::ParameterDirection::Input, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Телефон", System::Data::DataRowVersion::Original,
true, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Телефон", System::Data::OleDb::OleDbType::VarWChar,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Телефон",
System::Data::DataRowVersion::Original, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"IsNull_Область", System::Data::OleDb::OleDbType::Integer,
0, System::Data::ParameterDirection::Input, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Область", System::Data::DataRowVersion::Original,
true, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Область", System::Data::OleDb::OleDbType::VarWChar,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Область",
System::Data::DataRowVersion::Original, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"IsNull_Район", System::Data::OleDb::OleDbType::Integer,
0, System::Data::ParameterDirection::Input, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Район", System::Data::DataRowVersion::Original,
true, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Район", System::Data::OleDb::OleDbType::VarWChar,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Район",
System::Data::DataRowVersion::Original, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"IsNull_Вулиця", System::Data::OleDb::OleDbType::Integer,
0, System::Data::ParameterDirection::Input, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Вулиця", System::Data::DataRowVersion::Original,
true, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Вулиця", System::Data::OleDb::OleDbType::VarWChar,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Вулиця",
System::Data::DataRowVersion::Original, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"IsNull_Будинок", System::Data::OleDb::OleDbType::Integer,
0, System::Data::ParameterDirection::Input, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Будинок", System::Data::DataRowVersion::Original,
true, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Будинок", System::Data::OleDb::OleDbType::VarWChar,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Будинок",
System::Data::DataRowVersion::Original, nullptr)), (gcnew System::Data::OleDb::OleDbParameter(L"Original_Код", System::Data::OleDb::OleDbType::Integer,
0, System::Data::ParameterDirection::Input, false, static_cast<System::Byte>(0), static_cast<System::Byte>(0), L"Код", System::Data::DataRowVersion::Original,
nullptr))});
//
// button1
//
this->button1->Location = System::Drawing::Point(22, 478);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(95, 38);
this->button1->TabIndex = 9;
this->button1->Text = L"Додати абонента";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// dataTable1
//
this->dataTable1->Columns->AddRange(gcnew cli::array< System::Data::DataColumn^ >(8) {this->dataColumn1, this->dataColumn2,
this->dataColumn3, this->dataColumn4, this->dataColumn5, this->dataColumn6, this->dataColumn7, this->dataColumn8});
this->dataTable1->TableName = L"Table1";
//
// dataColumn1
//
this->dataColumn1->ColumnName = L"ПІБ";
//
// dataColumn2
//
this->dataColumn2->ColumnName = L"Дата народження";
//
// dataColumn3
//
this->dataColumn3->ColumnName = L"Місто";
//
// dataColumn4
//
this->dataColumn4->ColumnName = L"Обасть";
//
// dataColumn5
//
this->dataColumn5->ColumnName = L"Район";
//
// dataColumn6
//
this->dataColumn6->ColumnName = L"Вулиця";
//
// dataColumn7
//
this->dataColumn7->ColumnName = L"Будинок";
//
// dataGridView1
//
this->dataGridView1->AutoGenerateColumns = false;
this->dataGridView1->BackgroundColor = System::Drawing::SystemColors::ButtonFace;
this->dataGridView1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
this->dataGridView1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(8) {this->пІБDataGridViewTextBoxColumn,
this->датаНародженняDataGridViewTextBoxColumn, this->містоDataGridViewTextBoxColumn, this->областьDataGridViewTextBoxColumn,
this->районDataGridViewTextBoxColumn, this->вулицяDataGridViewTextBoxColumn, this->будинокDataGridViewTextBoxColumn, this->телефонDataGridViewTextBoxColumn});
this->dataGridView1->DataSource = this->bindingSource1;
this->dataGridView1->Location = System::Drawing::Point(1, -5);
this->dataGridView1->Name = L"dataGridView1";
this->dataGridView1->Size = System::Drawing::Size(845, 462);
this->dataGridView1->TabIndex = 8;
//
// пІБDataGridViewTextBoxColumn
//
this->пІБDataGridViewTextBoxColumn->DataPropertyName = L"ПІБ";
this->пІБDataGridViewTextBoxColumn->HeaderText = L"ПІБ";
this->пІБDataGridViewTextBoxColumn->Name = L"пІБDataGridViewTextBoxColumn";
//
// датаНародженняDataGridViewTextBoxColumn
//
this->датаНародженняDataGridViewTextBoxColumn->DataPropertyName = L"Дата народження";
this->датаНародженняDataGridViewTextBoxColumn->HeaderText = L"Дата народження";
this->датаНародженняDataGridViewTextBoxColumn->Name = L"датаНародженняDataGridViewTextBoxColumn";
//
// містоDataGridViewTextBoxColumn
//
this->містоDataGridViewTextBoxColumn->DataPropertyName = L"Місто";
this->містоDataGridViewTextBoxColumn->HeaderText = L"Місто";
this->містоDataGridViewTextBoxColumn->Name = L"містоDataGridViewTextBoxColumn";
//
// областьDataGridViewTextBoxColumn
//
this->областьDataGridViewTextBoxColumn->DataPropertyName = L"Область";
this->областьDataGridViewTextBoxColumn->HeaderText = L"Область";
this->областьDataGridViewTextBoxColumn->Name = L"областьDataGridViewTextBoxColumn";
Подобные документы
Послідовність створення бази даних автопарку. Визначення об'єктів та класів і зв’язків між ними. Конструктори та деструктори, успадкування класів. Реалізація програми в середовищі Visual Studio C++, її тестування. Побудова об’єктної моделі додатку.
курсовая работа [529,0 K], добавлен 25.01.2016Характеристика і функції телефонних довідників. Визначення об'єктів і класів і залежностей (зв'язків) між ними. Побудова діаграми ієрархії класів. Реалізація програми в середовищі Borland Delphi. Її інтерфейс і демонстрація можливостей. Тестовий приклад.
курсовая работа [349,3 K], добавлен 25.01.2016Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.
курсовая работа [98,0 K], добавлен 06.05.2014Об’єктно-орієнтоване програмування мовою С++. Основні принципи об’єктно-орієнтованого програмування. Розробка класів з використанням технології візуального програмування. Розробка класу classProgressBar. Базовий клас font. Методи тестування програми.
курсовая работа [211,3 K], добавлен 19.08.2010Визначення поняття автоматизації та інформаційної технології. Вибір мови програмування, аналіз бібліотеки класів та системи масового обслуговування. Реалізація інтерфейсу програми Visual C# 2010 Express. Діаграма класів до основних функцій программи.
курсовая работа [1,5 M], добавлен 28.04.2012Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.
курсовая работа [104,4 K], добавлен 14.03.2013Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Базові конструкції мови програмування С++ з позиції об’єктного програмування. Розробка програми для автоматизації обліку товарів на складі магазину парфумів. Реалізація програми в середовищі Visual Studio C++. Розробка інтерфейсу і тестування програми.
дипломная работа [907,9 K], добавлен 01.04.2016Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.
курсовая работа [502,5 K], добавлен 01.04.2016Розробка таблиці для збереження даних у текстовому файлі про фільми в середовищі програмування Visual Studio C++ та їх сортування за країною виробництва. Реалізація таблиці за допомогою компонента dataGridView. Опис і контрольний приклад роботи програми.
курсовая работа [1,4 M], добавлен 02.11.2016