Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснювальна записка.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
935.42 Кб
Скачать

3.3 Опис складових частин програми

Програма містить шість модулів, які приведені в таблиці 3.4.

Таблиця 3.4 – Вміст модулів програми

Назва модулю

Перелік обробників подій та функцій

EnterForm

TForm1, Button1Click, SpeedButton1Click, Button2Click.

BrowseProducts

void AddToBasket(TLabel*NameT, TLabel*CenaT, int NumberT, TLabel*SkidkaT), void PictureChanged(TImage* Im1), TForm2, N2Click, N1Click, Form2Close, Button1Click, FormShow, ScrollBar1Scroll, ComboBox1KeyPress, ListBox1Click, ComboBox1Change, Bu, Button3Click, Button4Click, CSpinEdit1KeyPress, FormMouseWheelDown, FormMouseWheelUp, Timer1Timer, N4Click, N3Click, Edit1KeyPress, Edit1Change, Image5Click, Timer2Timer, Image4Click.

Basket

TForm3, Button1Click, CSpinEdit1KeyPress, CSpinEdit1Change, SpeedButton1Click, FormShow, Button2Click, StringGrid1KeyUp, StringGrid1Click.

Password

TForm6, Edit1Change, FormShow, FormClose, Image1Click.

Managerial

void PictureChange(),TForm4, FormClose, N2Click, N1Click, DBGrid1KeyUp, FirstClick, PreviousClick, NextClick, LastClick, AddClick, dButton1Click, dButton2Click, dEdit3Click, OnIntPress, DeleteClick, EditClick, OnFloatPress, DBGrid1CellClick, ComboBox1Exit, DBGrid1TitleClick, Edit2KeyPress, MoneyClick, FormShow, Timer1Timer.

Checks

TForm5, Button1Click, FormShow, SpeedButton1Click, DateTimePicker1Change, FormClose.

Детальний опис модуля EnterForm:

TForm1 – формує форму Form1, автоматично задає місце знаходження баз даних для компонентів Table1 і Table2 та активує роботу компонентів Table1 і Table2.

Button1Click – перевіряє чи є продукти в магазині. Якщо в магазині є продукти відкриється форма Form2, в іншому випадку виведеться відповідне повідомлення.

SpeedButton1Click – завершення роботу програми.

Button2Click – відкриває форму Form6 для введення паролю доступу до форми Form4.

Обробники Button1Click та Button2Click автоматично приховують форму Form1 щоб запобігти непередбачувані ситуації.

Детальний опис модуля BrowseProducts:

void AddToBasket(TLabel* NameT, TLabel* CenaT, int NumberT, TLabel* SkidkaT) – функція, яка заносить в компонент StringGrid1 форми Form3 дані про продукт. Якщо в компонент StringGrid1 форми Form3 вже містяться дані про обраний продукт виведеться відповідне повідомлення. Також підраховує вартість продуктів, які вже знаходяться в компоненті StringGrid1 форми Form3.

void PictureChanged(TImage* Im1) – функція, яка виводить зображення продукту. Якщо шлях до зображення не вірний виведеться зображення, яке збережена в компоненті ImageList1.

TForm2 – формує форму Form2.

N2Click – завершення роботи програми.

N1Click – викликає обробник Form2Close.

Form2Close – відкидає фільтри застосовані на таблиці Table1, якщо вони є, викликає обробник Button1Click з модулю Basket та відкриває головну форму Form1.

Button1Click – відкриває форму Form3.

ScrollBar1Scroll – призначений для скролінгу продуктів в межах компонентів GroupBox1, GroupBox2 та GroupBox3. Якщо продуктів не буде в наявності, виведеться панель Panel5 з відповідним повідомленням.

FormShow – при відкритті форми Form2, задає найбільшу кількість куплених продуктів, найдорожчу покупку та поточну дату та час в компоненті StatusBar1. Запускає обробник ScrollBar1Scroll.

ComboBox1KeyPress – переводить фокус на компонент ScrollBar1.

ListBox1Click – призначена для переходу між розділами продукції.

ComboBox1Change – призначена для перевірки введеного значення в компоненті ComboBox1. Якщо значення не міститься у властивості Items буде виведено відповідне повідомлення в компоненті Label7, в іншому випадку відбудеться сортування за введеним значенням.

Bu, Button3Click та Button4Click – викликають функцію AddToBasket, але з набором параметрів, які відповідні для кожної кнопки.

CSpinEdit1KeyPress – забороняє вводити значення в компоненти CSpinEdit1, CSpinEdit2 та CSpinEdit3.

FormMouseWheelDown – при прокручуванні коліщатком миші вниз буде викликаний обробник ScrollBar1Scroll.

FormMouseWheelUp – при прокручуванні коліщатком миші вверх буде викликаний обробник ScrollBar1Scroll.

Timer1Timer – приховує панель Panel5.

N4Click – при першому натисканні виводить на екран тільки акційну продукцію. Після наступного натискання виводить на екран всі продукти магазину.

N3Click – при першому натисканні виводить на екран панель Panel6. Після наступного натискання приховує панель Panel6.

Edit1KeyPress – при натисканні Enter у виділеному компоненті Edit1 приховує панель Panel6. Щоб запобігти непередбачуваної ситуації при фільтруванні обробник забороняє вводити символ ‘*’.

Edit1Change – виводить на екран продукти, які задовольняють введене пошукове значення. Якщо компонент Edit1 буде мати пусте значення - пошук не відбудеться.

Image5Click – приховує панель Panel6.

Timer2Timer – оновлює поточну дату та час на компоненті StatusBar1.

Image4Click – виводить форму Form3.

Детальний опис модуля Basket:

TForm3 – формує форму Form3 та автоматично заносить назви полів для компоненту StringGrid1.

Button1Click – очищає вміст компоненту StringGrid1 та визиває обробник Form3Close.

CSpinEdit1KeyPress – забороняє введення символів в компоненті CSpinEdit1.

CSpinEdit1Change – відтворює автоматичний підрахунок загальної вартості всіх продуктів при зміненні значення в компоненті CSpinEdit1. Якщо компонент StringGrid не має записів підрахунок вартості покупки і змінення значення не відбудеться.

SpeedButton1Click – відтворює видалення вибраної строки в компоненті StringGrid1. Також підраховує загальну вартість всіх продуктів, якщо ще залишились записи.

FormShow – якщо компонент StringGrid1 має записи змінюється максимальне значення компоненту CSpinEdit1, яке дорівнює кількості продукту в базі даних.

Button2Click – відтворює придбання вибраних продуктів. Якщо компонент StringGrid1 не має записів виведеться відповідне повідомлення. В іншому випадку ми додаємо до бази даних реалізованих продуктів запис з такими полями: дату придбання, кількість продуктів та загальну вартість продуктів.

StringGrid1KeyUp - якщо компонент StringGrid1 має записи, змінюється максимальне значення компоненту CSpinEdit1, яке дорівнює кількості продукту в базі даних.

StringGrid1Click – якщо компонент StringGrid1 має записи, змінюється максимальне значення компоненту CSpinEdit1, яке дорівнює кількості продукту в базі даних.

Детальний опис модулю Password:

TForm6 – формує форму Form6.

Edit1Change – перевіряє вірність паролю доступу і при вірному введенню паролю відкриває форму Form4 та викликає обробник FormClose.

FormShow – очищає поле Text в компоненті Edit1. Відтворено для того, щоб уникнути зберігання паролю доступу в компоненті.

FormClose – якщо було не вірно введений пароль виведеться відповідне повідомлення й відкриє форму Form1.

Image1Click – викликає обробник FormClose.

Детальний опис модулю Managerial:

void PictureChange() – функція, яка виводить зображення продукту. Якщо шлях до зображення не вірний виведеться зображення, яка збережена в компоненті ImageList2.

TForm4 – формує форму Form4, змінює зображення на компонентах SpeedButton та змінює назви полів у DBGrid1.

FormClose – відкидає сортування, викликає обробник Button1Click в модулі Checks та відкриває форму Form1.

N2Click – завершення роботи програми.

N1Click – викликає обробник FormClose.

DBGrid1KeyUp – при натисканні на клавіатурі кнопки вверх або вниз у компоненті DBGrid1 відбудеться виклик функції PictureChange().

FirstClick – переводить курсор в компоненті Table1 на перший запис та викликає функцію PictureChange().

PreviousClick – переводить курсор в компоненті Table1 на один запис вверх та викликає функцію PictureChange().

NextClick – переводить курсор в компоненті Table1 на один запис вниз та викликає функцію PictureChange().

LastClick – переводить курсор в компоненті Table1 на останній запис та викликає функцію PictureChange().

AddClick – виводить панель PanelADD з параметрами для додавання записів до бази даних.

dButton1Click – приховує панель PanelADD.

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

dEdit3Click – відкриває діалогове вікно для вибору зображення продукту. Після вибору зображення відкидає шлях та зберігає в полі Text компоненту Edit3 тільки назву зображення.

OnIntPress – дозволяє вводити тільки цілі числові значення.

DeleteClick – видаляє вибраний запис з бази даних з попереднім підтвердженням на видалення. Якщо база даних пуста виведеться відповідне повідомлення.

EditClick – виводить панель PanelADD з параметрами для редагування записів в базі даних. Якщо база даних пуста виведеться відповідне повідомлення. Також переносить вибраний запис до відповідних полів панелі PanelADD.

OnFloatPress - дозволяє вводити тільки дійсні числові значення.

DBGrid1CellClick – викликає функцію PictureChange() при виборі запису в компоненті DBGrid1.

ComboBox1Exit – перевіряє чи співпадає введена властивість Text з властивістю Items. Якщо ні, виведеться відповідне повідомлення.

DBGrid1TitleClick – відтворює сортування згідно нажатої назви поля в компоненті DBGrid1.

Edit2KeyPress – забороняє вводити символ ‘*’ щоб запобігти непередбачуваних ситуацій при фільтруванні.

MoneyClick – відкриває форму Form5.

FormShow – автоматично, при відкритті форми Form4, підраховує виручку за весь період і виручку за сьогоднішній день та заносить їх до StatusBar1. Викликає функцію PictureChange().

Timer1Timer – оновлює поточну дату та час на компоненті StatusBar1.

Детальний опис модулю Checks:

TForm5 – формує форму Form5 та заносить назви полів до компоненту StringGrid1.

Button1Click – викликає обробник FormClose.

FormShow – підраховує виручку за весь період і виручку за сьогоднішній день та заносить їх у поля Edit2->Text та Edit1->Text відповідно. Вносить у компонент StringGrid1 вміст бази даних реалізованої продукції (Table1 на формі Form1).

SpeedButton1Click – викликає або приховує компонент GroupBox1. При виклику змінюється ширина форми на 530 пікселів, при приховуванні – 355 пікселів.

DateTimePicker1Change – згідно вибраної дати виводить виручку в поле Edit3->Text.

FormClose – змінює ширину форми на 355 пікселів та закриває форму.

Текст програми міститься у додатку В.

3.4 Структурна схема взаємодії складових програми

???

3.5 Контроль коректності вхідних та вихідних даних

Програма повинна перевіряти усі дані, які надходять з клавіатури, на коректність введення.

Введення найменування товару контролюється на введення всіх символів, окрім символу ‘*’.

Нижче приведено фрагмент програмного коду:

void __fastcall TForm4::Edit2KeyPress(TObject *Sender, char &Key)

{

if (Key=='*') Key=0;

}

Введення у режимі менеджера кількості товару, терміну придатності та знижки контролюються на заборону введення всіх символів, окрім символів цілих чисел. Термін придатності входить в діапазон допустимих значень від 1 до 31, кількість товару – від 1 до 100 та знижка – від 0 до 100.

Нижче приведено фрагмент програмного коду контролю вводу символів:

void __fastcall TForm4::OnIntPress(TObject *Sender, char &Key)

{

if (Key>='0' && Key<='9') return;

if (Key==VK_BACK) return;

Key=0;

}

Нижче приведено фрагмент програмного коду діапазону допустимих значень терміну придатності:

void __fastcall TForm4::dEdit1Change(TObject *Sender)

{

if (dEdit1->Text>"31" || dEdit1->Text.Length()>2) dEdit1->Text="31";

}

Нижче приведено фрагмент програмного коду діапазону допустимих значень кількості товару та знижки:

void __fastcall TForm4::dEditNumChange(TObject *Sender)

{

if (((TEdit*)Sender)->Text>"100" || ((TEdit*)Sender)->Text.Length()>3) ((TEdit*)Sender)->Text="100";

if (dEditNum->Text=="0") dEditNum->Text="1";

}

Введення у режимі покупця кількості продуктів контролюється на заборону введення символів з клавіатури. Щоб змінити кількість продуктів використовуються стрілочки які розміщені на компоненті CSpinEdit. Кількість продуктів входить в діапазон допустимих значень від 1 до n, де n – це кількість продуктів в базі даних.

Нижче приведено фрагмент програмного коду:

CSpinEdit1->MaxValue=Form1->Table1->FieldByName("Number")->AsInteger;

if (CSpinEdit1->MaxValue==1) CSpinEdit1->Enabled=false;

else CSpinEdit1->Enabled=true;

Якщо в базі даних зберігається не вірний шлях до зображення тоді на екран монітору виведеться відповідне повідомлення у виді зображення.

Нижче приведено фрагмент програмного коду:

if (Form1 -> Table1 -> FieldByName("Photo") -> AsString == "" || !FileExists(Form1 -> WhereI + "\\Photo\\" + Form1->Table1->FieldByName("Photo")->AsString))

{

Form2->ImageList1->GetBitmap(0,Im1->Picture->Bitmap);

}

4 РОЗРОБКА ІНСТРУКЦІЇ КОРИСТУВАЧА

Програма має багато віконний вид.

В ході роботи програми на екран монітору поступово виводяться підказки з поясненнями дій, які необхідно виконати користувачем.

Запуск програми здійснюється одним з наведених варіантів.

  1. Відкрити середовище програмування Builder C++, вибрати пункт меню File->Open або натиснути комбінацію клавіш Ctrl+F11 та в діалоговому вікні вибрати необхідний файл з розширенням bpr. Після відкриття файлу необхідно натиснути клавішу F9 або клацнути на кнопці з зображенням “Play”.

  2. Вибрати необхідний файл та відкрити його подвійним клацанням.

Після запуску програми на екран монітору з’явиться головна форма програми, яка зображена на рисунку 4.1.

Рисунок 4.1 – головна форма програми

На даній формі нам потрібно вибрати режим роботи. Як видно на рисунку 4.1 є два режиму роботи програми: «Покупець» та «Менеджер». Щоб вибрати потрібний режим необхідно лише клацнути лівою кнопкою миші по кнопці. В залежності від вибраного режиму виведеться відповідна форма.

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

Рисунок 4.2 – Форма режиму покупця