Програма обліку товарів на складі магазину
Базові конструкції мови програмування С++ з позиції об’єктного програмування. Розробка програми для автоматизації обліку товарів на складі магазину парфумів. Реалізація програми в середовищі Visual Studio C++. Розробка інтерфейсу і тестування програми.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 01.04.2016 |
Размер файла | 907,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Зміст
- Вступ
- 1. Тереотичні відомості
- 1.1 Основи ООП
- 1.2 Створення класів. Методи, властивості, поля
- 1.3 Конструктори та деструктори. Успадкування класів
- 2. Постановка завдання
- 3. Опис предметної області
- 4. Побудова об'єктної моделі
- 4.1 Визначення об'єктів та класів і зв'язків між ними
- 4.2 Побудова діаграми ієрархії класів
- 5. Реалізація програми в середовищі Visual Studio C++
- 5.1 Інтерфейс програми
- 5.2 Тестування програми
- Висновок
- Список використаної літератури
- Додаток 1. Лістинг Form1
- Додаток 2. Лістинг Form2
Вступ
Курсова робота - це перша самостійна наукова праця майбутнього програмного інженера. При її виконанні студент поглиблює знання з фундаментальних та професійно-орієнтованих дисциплін, засвоює методику експериментальних досліджень, оволодіває навичками співставлення результатів своїх досліджень із літературними даними, аналізу, узагальнення і літературного оформлення одержаних результатів з теми дослідження, набуває вміння вести науковий пошук, що розвиває в молодого інженера творчий підхід до роботи.
Курсова робота з об'єктно-орієнтованого програмування передбачає знання студентами об'єктно-орієнтованого проектування та програмування і є завершальним етапом вивчення у рамках курсу об'єктно -орієнтованє програмування підготовки студентів.
Метою курсової роботи є закріплення, поглиблення та узагальнення знань, якими студент оволодів під час вивчення курсу, в набутті навичок використання основ алгоритмізації та програмування на алгоритмічних мовах високого рівня з використанням принципів об'єктно-орієнтованого проектування та програмування, методики розробки програмних модулів та програмного забезпечення комп'ютерних систем управління, набуття студентами теоретичних знань та практичних навичок в області використання сучасних систем візуального проектування програмних засобів комп'ютерних систем управління та освоєння принципів та методів сучасних технологій програмування, набуття навичок професійних та практики наукових досліджень з оформленням відповідного текстового, програмного та ілюстративного матеріалу у формі наукового звіту.
Виконання курсової роботи (КР) направлено на закріплення знань, отриманих при вивченні теоретичної частини курсу, і набуття практичних навичок розробки об'єктно-орієнтованих програм. В результаті виконання курсової роботи студент повинен освоїти:
- концепції об'єктно-орієнтованого програмування;
- спеціалізовані засоби розробки програмного забезпечення мовою Java;
- спеціалізовані засоби розробки програмного забезпечення мовою С ++;
знати: загальні питання побудови та використання сучасних систем об'єктно-орієнтованного та візуального проектування програмних засобів комп'ютерних систем управління; основні поняття та методи об'єктно-орієнтованного проектування та програмування, основні засоби розробки програм з використанням багато ієрархічних структур об'єктів та класів об'єктів;
вміти: самостійно вибирати середовище проектування програмних засобів, проектувати, розробляти, налагоджувати та супроводжувати сучасне програмне забезпечення комп'ютерних систем управління.
Під час виконання курсової роботи студент повинен продемонструвати:
- вміння збирати і аналізувати відповідні матеріали про об'єкт дослідження, використовуючи сучасні джерела інформації, включаючи Інтернет --ресурси;
- спроможність проводити необхідні обґрунтування для розробки програмних засобів систем управління різного призначення тощо;
- здатність доводити розв'язання поставленої задачі до логічного кінця;
- вміння аналізувати отримані результати і робити з них висновки.
КР складається з двох взаємопов'язаних частин. Для виконання першої частини КР потрібно побудувати детальну об'єктну модель запропонованої предметної області. Друга частина КР передбачає безпосередню розробку об'єктно-орієнтованого програмного забезпечення, реалізує розроблену об'єктну модель.
1. Тереотичні відомості
1.1 Основи ООП
програма облік магазин автоматизація
З розвитком програмування виникла ідея поєднати в межах однієї сутності дані і код, що безпосередньо опрацьовує ці дані. Така сутність отримала назву об'єкт, а відповідний підхід до створення програм називають об'єктно-орієнтованим програмуванням.
Об'єктно-орієнтоване програмування (ООП) - це парадигма програмування, яка розглядає програму як сукупність гнучко пов'язаних між собою об'єктів. Кожен об'єкт має суттєві характеристики, які відрізняють його від усіх інших об'єктів. Сукупність таких характеристик називається абстракцією. Розрізняють абстракції стану та поведінки об'єкта.
Стан (дані об'єкта) характеризується переліком та значенням певних ознак. Поведінка (функціонал об'єкта) визначається набором операцій, які виконуються об'єктом, або над об'єктом.
Кожен об'єкт є екземпляром (представником) певного класу. Відповідно, клас - це відповідна абстракція об'єктів.
Основні переваги концепції ООП:
· моделювання предметів та явищ реального світу;
· можливість створювати користувацькі типи даних (класи);
· приховування деталей реалізації (інкапсуляція);
· можливість повторного використання коду (наслідування);
· інтерпретація викликів процедур та функцій на етапі виконання (поліморфізм).
Інкапсулювання - це механізм в програмуванні, який пов'язує в одне ціле функції і дані, якими вони маніпулють, а також захищає їх від зовнішнього доступу і неправильного застосування. В об'єктно-орієнтованій мові функції і всі необхідні дані можуть пов'язуватись таким способом, що створюється автономна структура - об'єкт. Іншими словами, об'єктом є структура, яка підтримує інкапсулювання. В межах об'єкта функції, дані або і функції, і дані можуть бути або закритими для інших об'єктів (private), або відкритими (public).
Модифікатори доступу:
Модифікатор private - забороняє доступ до полів і методів класу ззовні самого класу. Поля і методи, оголошені з модифікатором private, будуть доступні тільки в межах самого класу.
Якщо поле і метод класу визначені з модифікатором public, вони доступні ззовні оголошення базового класу чи похідних класів. Це в деякій мірі означає, що метод оголошений із зовнішнього класу може вільно звертатись до таких полів і методів. З допомогою модифікатора protected можна доступитись до полів і методів базового класу тільки для похідних класів, але не для зовнішніх по відношенню до класу методів.
Успадкування - це властивість, з допомогою якої один об'єкт може набувати властивостей іншого. При цьому підтримується концепція ієрархічної класифікації. Без використання успадкування кожний об'єкт повинен явно визначати всі свої характеристики; використовуючи наслідування, об'єкт повинен визначати тільки ті якості, які роблять його унікальним в межах свого класу. Визначення нового класу (породжений клас, підклас) може базуватись на визначенні вже існуючого (базовий клас). В такому випадку, новий клас отримає властивості та поведінку базового класу, та доповнить їх своїми власними. У випадку одиничного успадкування, у кожного класу може бути лише один безпосередній базовий клас. У випадку множинного успадкування, дозволяється існування декількох безпосередніх надкласів. Застосування методів успадкування дозволяє покращити повторне використання коду шляхом використання вже визначених властивостей та методів (поведінки) базових класів.
Разом з інкапсуляцією і успадкуванням поліморфізм також являє собою одну із важливих концепцій ООП. Застосування цієї концепції дозволяє значно полегшити розробку складних програм.
Термін поліморфізм має грецьке походження і означає «наявність багатьох форм». З поліморфізмом тісно пов'язані такі поняття, як абстрактні класи, віртуальні методи, перевантаження методів і властивостей.
Віртуальні методи - один із найважливіших прийомів реалізації поліморфізму. Вони дозволяють створювати загальний код, який може працювати разом з об'єктами базового класу, так і з об'єктами будь-якого його класу-нащадка. При цьому базовий клас визначає спосіб роботи з об'єктами і будь-які його нащадки можуть представляти конкретну реалізацію цього способу. Базовий клас може і не представляти реалізацію віртуального методу, а тільки оголошувати про його наявність. Такі методи без реалізації називаються абстрактними. Клас, який містить хоча б один такий метод називається абстрактним. Об'єкт такого класу створювати не можна. Нащадки абстрактного класу повинні обов'язково представити реалізацію для всіх його абстрактних методів, інакше, вони в свою чергу будуть абстрактними. Можливість присвоювати різну функціональність одному методу називається перевантаженням методу.
1.2 Створення класів. Методи, властивості, поля
Клас є основою для створення об'єктів. В класі визначаються дані і функціонал, який працює з цими даними. Об'єкти являються екземплярами класу. Ініціалізація змінних екземпляру відбувається в конструкторі. В класі можуть бути декілька конструкторів, тобто клас являється набором проектів, які визначають як будувати об'єкт. Дуже важливо розуміти різницю між класом і об'єктом: клас являється логічною абстракцією до тих пір, поки не буде створений об'єкт і не появиться фізична реалізація цього класу в пам'яті комп'ютера. Методи і змінні, які складають клас називаються членами класу.
Функції-члени. Функції, визначені всередині опису класу (до речі, структура -- це один з видів класу), називаються функціями-членами, і їх можна викликати тільки для змінної відповідного типу, використовуючи стандартний синтаксис доступу до членів структури.
Оскільки різні структури можуть мати функції-члени з однаковими назвами, то, визначаючи функцію-член треба вказати ім'я структури:
void Date::int(int dd, int mm, int yy)
{…}
Визначенням класу є конструкція class C {…}
Контроль доступу. Розглянемо приклад:
class X
{
public:
void init();
int getITnow();
private:
int x,y,z;
int px,py,pz;
};
Імена в закритій private частині можна використовувати тільки у функціях-членах класу. Відкрита public частина утворює відкритий інтерфейс об'єктів класу. (Структура -- клас, члени якого відкриті за замовчуванням). Крім того, існує мітка protected (захищений), тобто всі змінні будуть доступні тільки прямим "спадкоємцям" цього класу.
Захист закритих даних базується на обмеженні використання імен членів класу. Цей захист можна обійти, маніпулюючи з адресами і явним перетворенням типу. Захист проти зловмисного доступу до закритих даних мовою високого рівня можна забезпечити тільки на апаратному рівні, хоча навіть це -- досить складне завдання в реальній системі.
Статичні члени. Змінну, яка є частиною класу, а не частиною об'єкта цього класу, називають статичним членом і позначають специфікатором static.
Константні функції-члени. Нехай у класі Х існують функції, які надають і змінюють значення об'єкта типу Х. Але, на жаль, не існує способу для перевірки значення об'єкта Х. Проте цю проблему можна легко вирішити, описавши ці функції як константні функції-члени, тобто функції, які не змінюють стан Х:
class Date {
int d,m,y;
public:
int day() const {return d;}
int month() const {return m;}
int year() const {return y;}
//…
};
Коли константна функція-член описується зовні, а не всередині класу, то потрібно додати суфікс const:
inline int Date::year() const //правильно
{ return y;}
Константну функцію-член можна викликати як для константного, так і для неконстантного об'єкта, тоді як неконстантну функцію-член можна викликати тільки для об'єкта, який не є константою.
Підкласи. Підкласи -- це класи, які успадковують усі "властивості" суперкласу ("батьківського класу") (рис. 1.2.1).
Віртуальні функції. Віртуальні функції визначаються специфікатором virtual і дозволяють програмісту описати в базовому класі функції, які можна було б замінити у кожному наступному класі.
Ієрархія класів. Об'єкти різних класів і самі класи можуть перебувати у відношенні успадкування, за якого формується ієрархія об'єктів, що відповідає заздалегідь передбаченій ієрархії класів.
Рис. 1.2.1. Суперклас та підкласи
Ієрархія класів дозволяє визначати нові класи на основі вже існуючих. Існуючі класи зазвичай називають базовими (інколи породжувальними),
а нові класи, що формуються на основі базових, -- похідними (породженими), інколи класами-нащадками або спадкоємцями. Похідні класи “отримують спадок” -- дані і методи своїх базових класів -- і, крім того, можуть поповнюватись власними компонентами (даними і власними методами).
Наприклад, за таким визначенням class S: X{…}; клас S породжений класом X, звідки він успадковує компоненти.
Методи - це підпрограми, які управляють даними, визначені в класі, і в багатьох випадках забезпечують доступ до даних. За допомогою методів здійснюється взаємодія зовнішнього середовища з класом. Метод містить один і більше операторів. Назвою метода може бути будь-який існуючий ідентифікатор. Ключові слова не можуть бути іменами методів. При оголошенні кожної змінної і методу можна встановлювати певний модифікатор доступу (за замовчуванням private).
Поле - це член даних, який містить екземпляр значущого типу або посилання на вказівниковий тип. Загальномовне середовище (CLR) підтримує поля які належать як класу (статичні) так і екземпляру (нестатичні). Динамічна пам'ять для зберігання статичного поля виділяється в межах об'єкта класу, який створюється при його завантаженні. Динамічна пам'ять для збереження екземплярних полів виділяється при створенні екземпляра даного типу.[1]
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. Опис предметної області
Система магазину парфумів призначена для комплексного вирішення завдань автоматизації служб організацій та установ, що займаються обліком товарів на складі магазину. Використання сучасних технологій та досвіду, дозволяє зробити управління товаром досконалим інструментом в руках фахівців.
Використання системи дозволяє:
· реєструвати в системі анкети парфумів з можливістю подальшого їх виведення на друк;
· створювати списки всіх товарів в магазині
· вести розширений облік товарів
· проводити дії над товарвми і їх особовими рахунками
· вести облік товарів на складі
Система також дає можливість отримувати звіти користувача на підставі відібраних товарів по тим чи іншим умовам відбору. Слід зазначити, що поля, які включаються в такий звіт, обираються користувачем самостійно, що робить систему більш гнучкою та функціональною. Налаштовані користувачем дані зберігаються в базі даних
Також забезпечена можливість оперативного відбору парфумів за заданими критеріями, що дозволяє отримувати оперативні зведення по різних напрямках.
В системі можна реалізовувати функція розмежування прав доступу до окремих розділів, що є необхідною умовою при роботі в системі декількох користувачів. Це програмне забезпечення призначене для автоматизації основних функцій управління товаром, ведення товарного обліку, забезпечення інформаційних потреб, управління і функції обліку в бізнесі, а також для ефективного прийняття управлінських рішень. Автоматизована система управління парфумерним магазином є одним з модулів програмного забезпечення планування ресурсів підприємства. [6]
4. Побудова об'єктної моделі
Для побудови об'єктної моделі даної системи необхідно виконати наступні етапи:
- визначення об'єктів і класів;
- визначення залежностей між об'єктами;
- визначення зв'язків;
- побудова діаграми ієрархії класів.
4.1 Визначення об'єктів та класів і зв'язків між ними
Аналізуючи постановку завдання і предметну область, можна виділити набір можливих класів. В цей набір будуть входити як стандартні класи мови програмування так і користувацькі класи, спроектовані користувачем
До стандартних класів, які будуть використовуватись в програмі належатимуть:
- Форма 1 (Form1)
- Форма 2 (Form2)
- Кнопки (Button)
- Текстові блоки (textBox)
- Конектори (oleDbConnection)
- Мітки(Label)
- Таблиця (DataGridView)
Також в програмі будуть використовуватися власні класи:
- Абстрактний клас Дані (dani)
- Похідний клас Персональні дані (PersonalData)
- Похідний клас Дані про вміст(DaniAboutVmist)
- Агрегатний клас Парфум(Parfum)
Після визначення класів нам потрібно виділити об'єкти кожного з вище зазначених класів. Нижче наведено об'єкти класів:
В класі Form1 наявні об'єкти: 3 об'єкти класу Button, об'єкт класу Form2 об'єкт класу DataGridView і об'єкт класів oleDbConnection та oleDbDataAdapter.
В класі Form2 наявні об'єкти: об'єкт класу Button, oб'єкт класу DataGridView і об'єкт класів oleDbConnection та oleDbDataAdapter, а також 7 об'єктів класу textBox
Після того як ми визначилися з класами та об'єктами нам потрібго визначити зв'зки між ними.
Між виділеними класами потрібно виділити явні і неявні зв'язки.
Між класами Form1 s Form2 існує зв'язок використання. Клас Form1 викликає інші класи на виконання.
Клас Form2 передає дані від об'єктів класу textBox об'єкту класу Parfum.
Клас Pafum передає дані отримані від класу Form2 об'єкту класу oleDbConnection.
Класи DaniAboutVmist та PersonalData успадковуються від абстрактного класу dani.
Класи DaniAboutVmist та PersonalData мають зв'язок агрегації з класом Parfum. Остальній утворюється внаслідок множинного успадкування від перших.
4.2 Побудова діаграми ієрархії класів
Провівши аналіз залежностей між класами на предмет виявлення зв'язків можна побудувати діаграму (ієрархію) класів. Діаграма класів дозволяє графічно відобразити кількість класів нашої майбутньої програми і зв'язки між цими класами. Для фізичного чи логічного проектування предметної області програмного додатка прийнято використовувати систему позначень Буча.
Для побудови цих діаграм використовуються такі основні елементи:
1. Ілюстрація класу (рис. 4.2.1).
Рис. 4.2.1. Зображення класу
2. Ілюстрація об'єкта (рис. 4.2.2).
Рис. 4.2.2. Зображення об'єкта
3. Спеціалізація класів:
- абстрактний клас (наприклад, клас тварин тощо) (рис. 4.2.3).
Рис. 4.2.3. Зображення абстрактного класу
- дружній клас (такий клас, що має доступ до закритих членів інших класів) (рис. 4.2.4.).
Рис. 4.2.4. Зображення дружнього класу
4. Таблиця стрілок для подання відношень:
Таблиця 4.2.1
Проста агрегація |
||
Агрегація за значенням |
||
Агрегація за посиланням |
||
Використання |
||
Успадкування -- однакові типи |
||
Успадкування -- нові типи |
||
Асоціація |
Рис. 4.2.5.Діаграма класів у нотації Буча
Відповідно до побудованої об'єктної моделі системи, в якій ми визначили класи та об'єкти, а також встановили зв'язки між ними створими діаграму класів на основі нотації Буча.
5. Реалізація програми в середовищі Visual Studio C++
Після дослідження предметної області, постановки завдання і побудови об'єктної моделі можна приступити до реалізації програми на мові програмування. Нашу програму ми будемо реалізовувати в середовищі Visual Studio C++.
5.1 Інтерфейс програми
Для гарної роботи нашої майбутньої програми, вона повинна бути легкою у використанні. Щоб програмою могли користуватися будь-які користувачі, створюють графічний інтерфейс. В Visual Studio C++ інтерфейс програми створюється за допомогою простих маніпуляцій «мишкою». Для цього просто на панелі інструментів потрібно вибрати необхідний компонент і помістити його на робочу область.
Для початку створення програми відкриваємо середовище програмування Visual Studio C++ за допомогою піктограми на робочому столі комп'ютера. В розділі створити вибираємо вкладку Windows Form і задаємо місце, де буде зберігатися наш проект. Після цих дій перед нами появиться середовище розробки зображене не рис.5.1.1.
Далі нам потрібно розробити інтерфейс програми. Для цього Форму1 помістимо компонент DataGridView з панелі інструментів і 3 компоненти Button. Так як наш проект буде зберігати дані в БД Access, то потрібно створити зв'язок БД з нашою програмою. Для цього вибираємо компонент oleDbDataAdapter. Після цього перед нами появиться майстер добавлення підключення де вказуємо шлях до нашої БД. Вікно майстра зображено на рис.5.1.2.
Рис.5.1.1. Середовище розробки Visual Studio C++
Рис.5.1.2. Вікно майстра добавлення підключення
Після того як ми створили інтерфейс програми і налаштували зв'язок з БД, можна перейти до програмування програми. Для цього вибираємо вкладку редактора коду і вводимо необхідні оператори. Лістинг коду Форми1 наведений в додатку1.
Далі нам потрібно до нашого проекту додати 2 додаткові форми. Для цього потрібно вибрати наступні пункти: Проект->Додати новий елемент-> Форма Windows. Після цього аналогічним чином створюємо інтерфейс і програмуємо. Лістинг коду форми 2 наведені в додатках 2.
Оскільки наша програма містить користувацькі класи, потрібно до проекту також додати файл заголовків де будуть описані наші класи. Для цього виконуємо наступні команди: Проект->Додати клас. Перед нами появиться вікно де потрібно описати наші класи. Для початку описуємо абстрактний клас dani:
ref class dani
{
public:
System::String ^dates;
dani(void);
virtual void get()=0;
};
Абстрактний клас дані має одну чисто віртуальну функцію virtual void get() яка повертає значення «0». Від цього класу успадковуються два інших класи: PersonalData та DaniAboutVmist.
Розглянемо перший клас:
ref class PersonalData:dani
{
System::String ^name;
System::String ^data;
System::String ^country;
System::String ^vurobnik;
System::String ^cina;
PersonalData()
{
name ="";
data ="";
country ="";
vurobnik ="";
cina ="";
}
void get()
{
PersonalData PD;
Form2 ^F2=gcnew Form2();
PD.name=F2->textBox1->Text;
PD.data=F2->textBox3->Text;
PD.country=F2->textBox2->Text;
PD.vurobnik=F2->textBox4->Text;
PD.cina=F2->textBox5->Text;
F2->textBox1->Text="";
F2->textBox2->Text="";
F2->textBox3->Text="";
F2->textBox4->Text="";
F2->textBox5->Text="";
};
};
Цей клас містить в собі 5 атрибутів типу System::String, конструктор і один метод void get(). Метод void get() слугує для отримання значень від об'єктів класів textbox.
Другий клас аналогічний першому але він призначений для отримання інформації, яка відповідає даним про вміс парфуму. Опис цього класу наведений нижче:
ref class DaniAboutVmist:dani
{
System::String ^vmistn;
System::String ^vmisth;
DaniAboutVmist ()
{
vmistn ="";
vmisth ="";
}
void get()
{
DaniAboutVmist DAV;
Form2 ^F2=gcnew Form2();
DAV. vmistn =F2->textBox6->Text;
DAV. vmistnh=F2->textBox7->Text;
F2->textBox6->Text="";
F2->textBox7->Text="";
};
};
Від вище наведених класів внаслідок множинного успадкування утворюється клас Parfum:
ref class Parfum:PersonalData,JobData
{
public:
Parfum (void);
System::String ^name;
System::String ^data;
System::String ^country;
System::String ^vurobnik;
System::String ^cina;
System::String ^vmistn;
System::String ^vmisth;
void search()
{
Form1 ^F1=gcnew Form1();
F1->listBox1->Items->Clear();
int j;
str=F1->textBox1->Text;
for (j=0;j<dataGridView1->RowCount;j++)
{
country= F1->dataGridView1->Rows[j]->Cells[2]->FormattedValue->ToString();
vurobnik= F1->dataGridView1->Rows[j]->Cells[3]->FormattedValue->ToString();
name= F1->dataGridView1->Rows[j]->Cells[0]->FormattedValue->ToString();
if((name==str) || (country==str) || (vurobnik==str))
{
data= F1->dataGridView1->Rows[j]->Cells[1]->FormattedValue->ToString();
cina= F1->dataGridView1->Rows[j]->Cells[4]->FormattedValue->ToString();
vmistn= F1->dataGridView1->Rows[j]->Cells[5]->FormattedValue->ToString();
vmisth= F1->dataGridView1->Rows[j]->Cells[6]->FormattedValue->ToString();
F1->listBox1->Items->Add("Назва:"+name+" - "+data+" - Країна: "+country+" Виробник: "+vurobnik+"-Ціна: "+cina+"грн");
F1->listBox1->Items->Add("Натуральний вміст:"+vmistn);
F1->listBox1->Items->Add("Хімічний вмст:"+vmisth);
}
void get()
{
PersonalData PD;
DaniAboutVmist DAV;
Parfum Pr;
Pr. name =PD. name;
Pr. data =PD. data;
Pr. country =PD. country;
Pr. vurobnik =F2->PD. vurobnik;
Pr. cina = PD. cina;
Pr. vmistn = DAV. vmistn;
Pr. vmisth = DAV. vmisth;
}
void set()
{
Form2 ^F2=gcnew Form1
F2->oleDbConnection1->Open();
if (F2->textBox1->Text!="")
{
F2->oleDbDataAdapter1->InsertCommand->CommandText=L"INSERT INTO `Парфуми` (`Назва`, `Дата`, `Країна`, `Виробник`, `Ціна`, `Натуральни"
L"й_вміст`, `Хімічний_вміст`) VALUES ('"+name+"','"+data+"', '"+country+"', '"+vurobnik+"', '"+cina+"', '"+vmistn+"', '"+vmisth+"')";
F2->oleDbDataAdapter1->InsertCommand->ExecuteNonQuery();
}
F2->oleDbConnection1->Close();
F2->textBox1->Text="";
F2->textBox2->Text="";
F2->textBox3->Text="";
F2->textBox4->Text="";
F2->textBox5->Text="";
F2->textBox6->Text="";
F2->textBox7->Text="";
};
};
Цей клас містить в собі всі атрибути попередніх класів, а також три методи:
1. Метод void search() відповідає за пошук інформації за такими критеріями: назва, країна, виробник
2. Метод void get() відповідає за отримання інформації від батьківських класів
3. Метод void set() відповідає за збереження даних в БД
Після того як інтерфейс програми ми сформували, провели процес її програмування, необхідно виконати перевірку правильності роботи. Перевірка програми наведена в наступному розділі.
5.2 Тестування програми
Щоб переконатися що програма працює вірно при різних варіантах вхідних даних необхідно провести її тестування. Тестування надає можливості зробити висновки виконання проекту і виявити можливі несправності. Щоб розпочати тестування програми натискаємо на клафішу «F5». Після цього перед нами появиться вікно нашої програми. Вікно програми зображено на рис 5.2.1
Рис.5.2.1. Вікно програми
Як видно з рисунка вище, наша програма відображає дані з БД, отже цей блок проекту працює вірно і жодних помилок не виникає. Далі перевіряємо процес добавлення нових даних. Для цього натискаємо кнопку «Додати парфум». Перед нами з'являється вікно де ми можемо вводити в задані поля інформацію. Скріншот вікна показаний на рис.5.2.2.
Після введення даних натискаємо кнопку Додати і перевіряємо чи добавились дані в БД. Помилок при добавлені не виникло тому можна зробити що і ця частина програми працює вірно. Вікно з добавленими даними зображено на рис.5.2.3.
Рис.5.2.2. Вікно додання парфума
Рис.5.2.3. Вікно з добавленими даними
Завершальним кроком перевірки працездатності програми є перевірка функції пошуку. Для цього в поле вводу критерію вводимо дані для пошуку (даними можуть слугувати назва парфуму, країна чи виробник) і натискаємо клавішу «знайти парфум). Результати пошуку показані на рис.5.2.4
Рис.5.2.4 Результати пошуку
Провівши тестування розробленої нашої програми, можна зробити висновок, що програма працює правильно при будь-яких вхідних даних і не видає помилок.
Висновок
В ході виконання завдання курсової роботи з об'єктно-орієнтованого програмування, мною було вивчено базові конструкції мови програмування С++ з позиції об'єктного програмування; використано на практиці знання отримані мною на заняттях з дисципліни «Об'єктно-орієнтованого програмування»; розроблено і протестовано систему парфумерного магазину, яка здійснює наступні функції: дадання нового парфуму,видалення парфуму з бази магазину та пошук парфуму в базі за заданим критерієм, розвинено вміння викроистовувати основні приципи ООП і вміння працювати з класами та об'єктами.
Навички роботи з мовами програмування отримані мною під час виконання курсової роботи необхідні для подальшого удосконалення професійних здібностей програміста, збільшення рівня кваліфікації. Адже практичне застосування теоретичних знань є однією з найбільш важливих частин підготовки майбутнього спеціаліста.
Список використаної літератури
1. Інформатика. Мова програмування С++. Спецкурс. 10-12 класи. Навчальний посібник / Лєхан С.А. - Шепетівка, «Аспект», 2007 - 160 с.
2. Об'єтно-орієнтоване програмування мовою С++, Навчальний посібник,Т.Є.Рак, Львів,2011 - 401с
3. Борис Пахомов - C C++ и MS Visual С++ 2010 для начинающих - БХВ-Петербург, 2011 - 736 с.
4. Сайт: www.google.com
5. Сайт: www.yandex.ua
6. Сайт: www.wikipedia.org
Додаток 1. Лістинг Form1
#pragma once
#include "Form2.h"
#include "Deni.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;
using namespace System::IO;
/// <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;
}
}
protected:
private: System::Data::DataSet^ dataSet1;
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::BindingSource^ bindingSource1;
private: System::Windows::Forms::DataGridView^ dataGridView1;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::ListBox^ listBox1;
private: System::Windows::Forms::Label^ label2;
private: System::Data::OleDb::OleDbConnection^ oleDbConnection1;
private: System::Data::OleDb::OleDbCommand^ oleDbSelectCommand1;
private: System::Data::OleDb::OleDbCommand^ oleDbInsertCommand1;
private: System::Data::OleDb::OleDbCommand^ oleDbUpdateCommand1;
private: System::Data::OleDb::OleDbCommand^ oleDbDeleteCommand1;
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::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->dataSet1 = (gcnew System::Data::DataSet());
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->bindingSource1 = (gcnew System::Windows::Forms::BindingSource(this->components));
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->button1 = (gcnew System::Windows::Forms::Button());
this->button2 = (gcnew System::Windows::Forms::Button());
this->button3 = (gcnew System::Windows::Forms::Button());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->label1 = (gcnew System::Windows::Forms::Label());
this->listBox1 = (gcnew System::Windows::Forms::ListBox());
this->label2 = (gcnew System::Windows::Forms::Label());
this->oleDbConnection1 = (gcnew System::Data::OleDb::OleDbConnection());
this->oleDbSelectCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbInsertCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbUpdateCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbDeleteCommand1 = (gcnew System::Data::OleDb::OleDbCommand());
this->oleDbDataAdapter1 = (gcnew System::Data::OleDb::OleDbDataAdapter());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataSet1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataTable1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->bindingSource1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataGridView1))->BeginInit();
this->SuspendLayout();
//
// dataSet1
//
this->dataSet1->DataSetName = L"NewDataSet";
this->dataSet1->Tables->AddRange(gcnew cli::array< System::Data::DataTable^ >(1) {this->dataTable1});
//
// dataTable1
//
this->dataTable1->Columns->AddRange(gcnew cli::array< System::Data::DataColumn^ >(7) {this->dataColumn1, this->dataColumn2,
this->dataColumn3, this->dataColumn4, this->dataColumn5, this->dataColumn6, this->dataColumn7});
this->dataTable1->TableName = L"Table1";
//
// dataColumn1
//
this->dataColumn1->Caption = L"Назва";
this->dataColumn1->ColumnName = L"Назва";
//
// dataColumn2
//
this->dataColumn2->ColumnName = L"Дата";
//
// dataColumn3
//
this->dataColumn3->Caption = L"Країна";
this->dataColumn3->ColumnName = L"Країна";
//
// dataColumn4
//
this->dataColumn4->Caption = L"";
this->dataColumn4->ColumnName = L"Виробник";
//
// dataColumn5
//
this->dataColumn5->ColumnName = L"Ціна";
//
// dataColumn6
//
this->dataColumn6->ColumnName = L"Натуральний_вміст";
//
// dataColumn7
//
this->dataColumn7->ColumnName = L"Хімічний_вміст";
//
// bindingSource1
//
this->bindingSource1->DataMember = L"Table1";
this->bindingSource1->DataSource = this->dataSet1;
//
// dataGridView1
//
this->dataGridView1->AutoGenerateColumns = false;
this->dataGridView1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
this->dataGridView1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(7) {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(0, 0);
this->dataGridView1->Name = L"dataGridView1";
this->dataGridView1->Size = System::Drawing::Size(845, 462);
this->dataGridView1->TabIndex = 0;
//
// назва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";
//
// ціна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";
//
// button1
//
this->button1->Location = System::Drawing::Point(21, 483);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(95, 38);
this->button1->TabIndex = 1;
this->button1->Text = L"Додати парфум";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// button2
//
this->button2->Location = System::Drawing::Point(122, 483);
this->button2->Name = L"button2";
this->button2->Size = System::Drawing::Size(95, 38);
this->button2->TabIndex = 2;
this->button2->Text = L"Видалити парфум";
this->button2->UseVisualStyleBackColor = true;
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
//
// button3
//
this->button3->Location = System::Drawing::Point(737, 483);
this->button3->Name = L"button3";
this->button3->Size = System::Drawing::Size(95, 38);
this->button3->TabIndex = 3;
this->button3->Text = L"Знайти парфум";
this->button3->UseVisualStyleBackColor = true;
this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(466, 496);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(244, 20);
this->textBox1->TabIndex = 4;
//
// 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(462, 473);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(196, 20);
this->label1->TabIndex = 5;
this->label1->Text = L"Введіть критерій пошуку";
//
// listBox1
//
this->listBox1->FormattingEnabled = true;
this->listBox1->Location = System::Drawing::Point(21, 574);
this->listBox1->Name = L"listBox1";
this->listBox1->Size = System::Drawing::Size(796, 134);
this->listBox1->TabIndex = 6;
//
// 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(319, 535);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(182, 24);
this->label2->TabIndex = 7;
this->label2->Text = L"Результати пошуку";
//
// oleDbConnection1
//
this->oleDbConnection1->ConnectionString = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\Anonimus\\Desktop\\kur\\kur\\Па"
L"рфуми.mdb";
//
// oleDbSelectCommand1
//
this->oleDbSelectCommand1->CommandText = L"SELECT Назва, Дата, Країна, Виробник, Ціна, [Натуральний_вміст], [Хімічний_вміст]"
L", Код FROM Парфуми";
this->oleDbSelectCommand1->Connection = this->oleDbConnection1;
//
// oleDbInsertCommand1
//
this->oleDbInsertCommand1->CommandText = L"INSERT INTO `Парфуми` (`Назва`, `Дата`, `Країна`, `Виробник`, `Ціна`, `Натуральни"
L"й_вміст`, `Хімічний_вміст`) VALUES (\?, \?, \?, \?, \?, \?, \?)";
this->oleDbInsertCommand1->Connection = this->oleDbConnection1;
this->oleDbInsertCommand1->Parameters->AddRange(gcnew cli::array< System::Data::OleDb::OleDbParameter^ >(7) {(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"Хімічний_вміст"))});
//
// oleDbUpdateCommand1
//
this->oleDbUpdateCommand1->CommandText = resources->GetString(L"oleDbUpdateCommand1.CommandText");
this->oleDbUpdateCommand1->Connection = this->oleDbConnection1;
this->oleDbUpdateCommand1->Parameters->AddRange(gcnew cli::array< System::Data::OleDb::OleDbParameter^ >(22) {(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),
Подобные документы
Опис структур даних та вмісту файлів з вхідними, вихідними даними. Проектування програми автоматизації процесу обліку (поставки та видачі) товарів для невеликого магазину. Математична постановка основних задач. Опис програмного інтерфейсу з користувачем.
курсовая работа [526,9 K], добавлен 07.10.2014Створення комп'ютерної програми на мові програмування С++ для ведення обліку мобільних телефонів на складі-магазині. Вимоги до апаратного та програмного забезпечення. Схема зв'язку між складовими частинами програми. Інструкція користувача, тестування.
дипломная работа [4,2 M], добавлен 06.06.2012Класифікація існуючих інформаційних систем. Особливості створення інформаційної системи роботи меблевого магазину. Розробка програми, що забезпечує роботу торгівельної организації, в середовищі Microsoft Visual Studio 2008 на мові програмування Vb.NEt.
курсовая работа [829,5 K], добавлен 12.12.2013Розробка таблиці для збереження даних у текстовому файлі про фільми в середовищі програмування Visual Studio C++ та їх сортування за країною виробництва. Реалізація таблиці за допомогою компонента dataGridView. Опис і контрольний приклад роботи програми.
курсовая работа [1,4 M], добавлен 02.11.2016Концепції об'єктно-орієнтованого програмування. Конструктори та деструктори. Успадкування класів. Побудова об’єктної моделі. Визначення об'єктів та класів і зв’язків між ними. Реалізація програми в середовищі Visual Studio C++. Інтерфейс програми.
курсовая работа [743,7 K], добавлен 25.01.2016Побудова інформаційно-математичної моделі задачі. Визначення структури даних, розробка інтерфейсу. Складання коду програми за допомогою мови програмування Delphi 7.0. Реалізація проекту у візуальному середовищі. Інструкція з експлуатації програми.
курсовая работа [601,3 K], добавлен 03.09.2009Проектування бази даних (БД). Проектування логічної моделі БД. Реалізація БД та створення таблиць. Встановлення зв’язків, вибір мови та середовища програмування. Опис функціональних елементів та реалізація програми. Опис та тестовий приклад програми.
дипломная работа [1,6 M], добавлен 07.01.2017Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.
курсовая работа [762,8 K], добавлен 03.05.2015Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.
курсовая работа [335,3 K], добавлен 11.01.2015Методика розробки компілятору з вхідної мови програмування Pascal, оболонка, якого розроблена в середовищі програмування Borland C під операційну систему Windows. Блок-схема програми. Розробка оптимізатора та генератора коду. Тестування компілятора.
курсовая работа [218,6 K], добавлен 04.06.2011