Дипломная (вкр): Програма обліку товарів на складі магазину

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Приклад:

class String

{:(); // конструктор за замовчуванням

String(const String& s); // конструктор копіювання(const char* s); // конструктор з параметром

// const char*, який являє собою

// стандартний рядок s

~String(); // деструктор:* array; // масив символівsize; // розмір масиву

};

Приклад виклику конструкторів:

int main()

{ String a, b; // конструктор за замовчуваннямc(a); // конструктор копіювання

print(a); // конструктор копіювання, оскільки

// аргумент передається у функцію за значеннямd(“One”); // конструктор з параметром

//...

}

Деструктори. Конструктори ініціалізують об’єкт, тобто вони створюють середовище, у якому "працюють" функції-члени. Іноді створення такого середовища зумовлює "захоплення" якихось ресурсів: пам’яті, файлу, процесорного часу, які повинні бути "звільнені" після їх використання. Тобто класам потрібна функція, яка б знищувала об’єкт аналогічно тому, як його створює конструктор. Такі функції називають деструкторами.

Приклад:

class Name

{char* s;

// ...

};Table

{* p;_t sz;:(size_t s=15) {p=new Name[sz=s];} //конструктор

~Table() {delete[] p;} //деструктор

// ...

};

Успадкування класів. Об’єкти різних класів і самі класи можуть перебувати у відношенні успадкування, за якого формується ієрархія об’єктів, що відповідає заздалегідь передбаченій ієрархії класів.

Ієрархія класів дозволяє визначати нові класи на основі вже існуючих. Існуючі класи зазвичай називають базовими (інколи породжувальними), а нові класи, що формуються на основі базових, - похідними (породженими), інколи класами-нащадками або спадкоємцями. Похідні класи “отримують спадок” - дані і методи своїх базових класів - і, крім того, можуть поповнюватись власними компонентами (даними і власними методами). Елементи, які успадковуються, не переміщуються в похідний клас, а залишаються в базових класах. Повідомлення, обробку якого не можуть виконати методи похідного класу, автоматично передається в базовий клас.

Будь-який похідний клас може, в свою чергу, стати базовим для інших класів, і таким чином формується напрямлений граф ієрархії класів та об’єктів. В ієрархії похідний об’єкт успадковує дозволені для успадкування компоненти всіх базових об’єктів. Іншими словами, в об’єкта є можливість доступу до даних і методів усіх своїх базових класів.

Успадкування в ієрархії класів може відображатись і у вигляді дерева, і у вигляді більш загального напрямленого ациклічного графу. Дозволяється множинне успадкування - можливість для деякого класу успадковувати компоненти кількох ніяк не зв’язаних між собою базових класів.

Наприклад, за таким визначеннямS: X, Y, Z {...};

клас S породжений класами X, Y, Z, звідки він успадковує компоненти.[2]

2. Постановка завдання


Основним етапом в розв’язку поставленої задачі є її постановка. Під час постановки завдання програміст повинен визначитися з вхідними даними, побудувати математичну модель задачі, вирішити основні проблеми.

В нашому випадку нам необхідно розробити систему обліку співробітників фірми. Для початку нам необхідно розібратися з вхідними даними. Наша система повинна вміщувати в собі повну інформацію про кожного співробітника фірми, а саме:

·        прізвище, ім’я, по-батькові;

·        дату народження;

·        адресу проживання;

·        освіту;

·        спеціальність;

·        дату прийняття на роботу;

·        номер телефону;

·        заробітну плату;

Розібравшись зі вхідними даними нам потрібно визначитись, які функції виконуватиме наша система. Так як нам необхідно розробити програму обліку співробітників. То функції будуть наступними:

         Прийняття працівника на роботу.

         Відображення переліку всіх співробітників фірми.

         Звільнення працівника.

Визначивши основні функції перейдемо до вирішення проблеми зберігання вихідних даних. Так як проект міститиме об’ємну кількість інформації, її доцільно буде зберігати у вигляді таблиць БД Access. І на кінець, нам потрібно вибрати мову програмування, для реалізації проекту. Для нашого проекту ми виберемо мову С++.

3. Опис предметної області


Система магазину парфумів призначена для комплексного вирішення завдань автоматизації служб організацій та установ, що займаються обліком товарів на складі магазину. Використання сучасних технологій та досвіду, дозволяє зробити управління товаром досконалим інструментом в руках фахівців.

Використання системи дозволяє:

·        реєструвати в системі анкети парфумів з можливістю подальшого їх виведення на друк;

·        створювати списки всіх товарів в магазині

·        вести розширений облік товарів

·        проводити дії над товарвми і їх особовими рахунками

·        вести облік товарів на складі

Система також дає можливість отримувати звіти користувача на підставі відібраних товарів по тим чи іншим умовам відбору. Слід зазначити, що поля, які включаються в такий звіт, обираються користувачем самостійно, що робить систему більш гнучкою та функціональною. Налаштовані користувачем дані зберігаються в базі даних

Також забезпечена можливість оперативного відбору парфумів за заданими критеріями, що дозволяє отримувати оперативні зведення по різних напрямках.

В системі можна реалізовувати функція розмежування прав доступу до окремих розділів, що є необхідною умовою при роботі в системі декількох користувачів. Це програмне забезпечення призначене для автоматизації основних функцій управління товаром, ведення товарного обліку, забезпечення інформаційних потреб, управління і функції обліку в бізнесі, а також для ефективного прийняття управлінських рішень. Автоматизована система управління парфумерним магазином є одним з модулів програмного забезпечення планування ресурсів підприємства. [6]

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. Остальній утворюється внаслідок множинного успадкування від перших.

.2 Побудова діаграми ієрархії класів


Провівши аналіз залежностей між класами на предмет виявлення зв'язків можна побудувати діаграму (ієрархію) класів. Діаграма класів дозволяє графічно відобразити кількість класів нашої майбутньої програми і зв’язки між цими класами. Для фізичного чи логічного проектування предметної області програмного додатка прийнято використовувати систему позначень Буча.

Для побудови цих діаграм використовуються такі основні елементи:

. Ілюстрація класу (рис. 4.2.1).

Рис. 4.2.1. Зображення класу

. Ілюстрація об’єкта (рис. 4.2.2).

Рис. 4.2.2. Зображення об’єкта

. Спеціалізація класів:

- абстрактний клас (наприклад, клас тварин тощо) (рис. 4.2.3).

Рис. 4.2.3. Зображення абстрактного класу

дружній клас (такий клас, що має доступ до закритих членів інших класів) (рис. 4.2.4.).

Рис. 4.2.4. Зображення дружнього класу

. Таблиця стрілок для подання відношень:

Таблиця 4.2.1

Проста агрегація

Агрегація за значенням

Агрегація за посиланням

Використання

Успадкування - однакові типи

Успадкування - нові типи

Асоціація


Рис. 4.2.5.Діаграма класів у нотації Буча

Відповідно до побудованої об’єктної моделі системи, в якій ми визначили класи та об’єкти, а також встановили зв’язки між ними створими діаграму класів на основі нотації Буча.

5. Реалізація програми в середовищі Visual Studio C++


Після дослідження предметної області, постановки завдання і побудови об’єктної моделі можна приступити до реалізації програми на мові програмування. Нашу програму ми будемо реалізовувати в середовищі Visual Studio C++.

.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;(void);void get()=0;

};

Абстрактний клас дані має одну чисто віртуальну функцію virtual void get() яка повертає значення «0». Від цього класу успадковуються два інших класи: PersonalData та DaniAboutVmist.

Розглянемо перший клас:

ref class PersonalData:dani

{::String ^name;::String ^data;::String ^country;::String ^vurobnik;::String ^cina;()

{="";="";="";="";="";

}get()

{PD;^F2=gcnew Form2();.name=F2->textBox1->Text;.data=F2->textBox3->Text;.country=F2->textBox2->Text;.vurobnik=F2->textBox4->Text;.cina=F2->textBox5->Text;->textBox1->Text="";->textBox2->Text="";->textBox3->Text="";->textBox4->Text="";->textBox5->Text="";

};

};

Цей клас містить в собі 5 атрибутів типу System::String, конструктор і один метод void get(). Метод void get() слугує для отримання значень від об’єктів класів textbox.

Другий клас аналогічний першому але він призначений для отримання інформації, яка відповідає даним про вміс парфуму. Опис цього класу наведений нижче:

ref class DaniAboutVmist:dani

{

System::String ^vmistn;

System::String ^vmisth;()

{="";="";

}get()

{DAV;^F2=gcnew Form2();. vmistn =F2->textBox6->Text;. vmistnh=F2->textBox7->Text;->textBox6->Text="";->textBox7->Text="";

};

};

Від вище наведених класів внаслідок множинного успадкування утворюється клас Parfum:

ref class Parfum:PersonalData,JobData

{:(void);::String ^name;::String ^data;::String ^country;::String ^vurobnik;::String ^cina;::String ^vmistn;

System::String ^vmisth;search()

{

Form1 ^F1=gcnew Form1();->listBox1->Items->Clear();j;=F1->textBox1->Text;(j=0;j<dataGridView1->RowCount;j++)

{= F1->dataGridView1->Rows[j]->Cells[2]->FormattedValue->ToString();= F1->dataGridView1->Rows[j]->Cells[3]->FormattedValue->ToString();= F1->dataGridView1->Rows[j]->Cells[0]->FormattedValue->ToString();((name==str) || (country==str) || (vurobnik==str))

{= F1->dataGridView1->Rows[j]->Cells[1]->FormattedValue->ToString();= F1->dataGridView1->Rows[j]->Cells[4]->FormattedValue->ToString();= F1->dataGridView1->Rows[j]->Cells[5]->FormattedValue->ToString();= 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()

{PD;DAV;Pr;. name =PD. name;. data =PD. data;. country =PD. country;. vurobnik =F2->PD. vurobnik;. cina = PD. cina;. vmistn = DAV. vmistn;. vmisth = DAV. vmisth;

}set()

{^F2=gcnew Form1->oleDbConnection1->Open();(F2->textBox1->Text!="")

{

F2->oleDbDataAdapter1->InsertCommand->CommandText=L"INSERT INTO `Парфуми` (`Назва`, `Дата`, `Країна`, `Виробник`, `Ціна`, `Натуральни""й_вміст`, `Хімічний_вміст`) VALUES ('"+name+"','"+data+"', '"+country+"', '"+vurobnik+"', '"+cina+"', '"+vmistn+"', '"+vmisth+"')";

Источник: https://www.bibliofond.ru/detail.aspx?id=865944