Анотація
Курсова робота присвячена розробці бази даних для меблевої фірми. В ній проводяться обстеження і аналіз предметної області та будуються концептуальна, логічна та фізична моделі цієї бази даних. При написанні програмного коду, що обслуговує базу даних, використовується мова програмування Visual Basic.
Робота викладена на 53 сторінках, містить 10 таблиц, 20 рисунків, 2 додатка та список використаної літератури з 6 найменувань.
Робота виконана українською мовою.
Зміст
Вступ
1 Обстеження і аналіз роботи меблевої фірми
1.1 Обстеження роботи меблевої фірми
1.2 Аналіз роботи меблевої фірми
1.3 Постановка задачі
2 Розроблення проекту програмного забезпечення меблевої фірми з базою даних меблевої фірми
2.1 Розробка концептуальної моделі бази даних
2.2 Розроблення специфікації програмних модулів
2.3 Розроблення логічної моделі даних
2.4 Розробка алгоритмів і графічних інтерфейсів програмних модулів
2.5 Розробка фізичної моделі даних
2.5.1 Вибір засобів розробки
2.5.2 Розробка фізичної моделі даних
2.6 кодування та тестування програмного забезпечення меблевої фірми з базою даних меблевої фірми
3 Результати розробки програмного забезпечення меблевої фірми
ВисновокСписок використаних джерел
Додаток А. Програмний код бази даних для меблевої фірми
Додаток Б. Інструкція користувача
Вступ
У цій курсовій роботі буде розроблятися база даних для меблевої фірми.
У наші часи великого розповсюдження отримали малі та середні приватні підприємства, діяльність яких полягає у розробці дизайнерського креслення та виготовленні за ним корпусних меблів. Такі підприємства займаються відстеженням ринку матеріалів, таким чином постійно залишаючись досвідченими в області матеріалів, що можуть бути використаними, та їх цін. В умовах конкуренції їм доводиться надавати клієнтам індивідуальні послуги, тому кожне замовлення виконується окремо з самого початку і є абсолютно унікальним. Клієнтура таких фірм є досить непостійною. Адже вибір фірми, де людина збирається замовити меблі, залежить від багатьох факторів, починаючи із неофіціальних рекомендацій, реклами наявних клієнтів та антиреклами конкурентів і закінчуючи обсягом продукції, професіоналізмом та налагодженістю виробництва фірми. Тому не виключені як можливості повернення клієнта з метою оформлення нового замовлення, так і можливості переходів клієнтів з одної фірми до іншої. Це робить необхідним ведення обліку клієнтів, а також договорів про надання послуг у вигляді виготовлення тієї чи іншої продукції фірмою для клієнта та розмір оплати цим клієнтом відповідних послуг фірми.
У зв’язку з цими завданнями фірми у неї виникає ряд проблем, пов’язаних із зберіганням обробкою і використанням специфічної інформації пов’язаної з її діяльністю. До такої інформації належить облік матеріалів, виробів, клієнтів та договорів. Проблемним є збереження всієї вказаної інформації на паперових носіях, а також пошук необхідної інформації серед безлічі іншої.
Метою цієї роботи є створення бази даних, що дозволила би фірмі працювати більш ефективно, ефективніше зберігати та шукати необхідну в процесі роботи інформацію, використовуючи раціональніші методи доступу до неї.
Для досягнення цієї мети проводять обстеження та аналіз предметної області, результатом яких є остаточна постановка задачі, розробляють концептуальну, логічну та фізичну моделі даних, специфікацію програмних модулів та їх алгоритми і графічні інтерфейси. Використовуючи це розробляють програмне забезпечення для меблевої фірми.
1 ОБСТЕЖЕННЯ І АНАЛІЗ РОБОТИ МЕБЛЕВОЇ ФІРМИ
1.1 Обстеження роботи меблевої фірми
Будь-яке проектування починається з дослідження даної предметної області, зовсім не потрібно створювати базу тільки для того, щоб створити базу даних. Результатом обстеження предметної області є створення звіту про предметну область. У ньому необхідно визначити коли, кому і які дані потрібні. Зберігати потрібно ті дані, які потрібні для роботи тим або іншим працівникам. Також у звіті про предметну область визначається, які функції виконуються з цими даними.
Звіт має бути написаний у вільній формі. Його часто пишуть у формі сценарію діяльності, який містить наступні пункти:
1. Що відбувається у предметній області?
2. Яка реакція предметної області на ці події?
Паралельно вивчається термінологія цієї предметної області. Також необхідно вказувати те, як часто використовується та або інша інформація, виконується та або інша дія, який обсяг інформації, як вона розміщена і які перспективи розвитку даного підприємства, тому що все це може вплинути на вибір засобів розробки майбутньої бази даних.
Фірма-замовник займається виробництвом корпусних меблів. Велика роль приділяється спілкуванню з клієнтами з метою одержання замовлення й оформлення договору про те, що за визначену оплату фірма до зазначеного терміну виготовить і установить визначений об’єкт. Замовленням може бути як окремий предмет (наприклад, шафа-купе або комп’ютерний стіл) так і певна сукупність предметів (наприклад, кухня, дитяча кімната, вітальня і т.і.).
Фірма є приватним підприємством і тому може прийняти не більше ніж двадцять замовлень на місяць.
Замовлення ― це інформація, яку отримують від клієнта, про виріб, який повинна зробити фірма. На основі цієї інформації отримують калькуляцію (документ, цо містить назви всіх деталей виробу, їхні габаритний розмыр, матеріал), а також ціну виробу.
При цьому клієнт є фізичною або юридичною особою, що може здійснити замовлення на продукцію, вироблену фірмою.
Основними функціями є облік укладених договорів, виробів, які виготовляє фірма, збереження інформації про калькуляції виробів і облік доступних матеріалів. Усе це зберігається в паперовому вигляді в різних каталогах.
Обмін цією інформацією відбувається між клієнтом та працівником фірми.
Кожен новий клієнт повинен бути зареєстрований у журналі клієнтів. Реєстрація клієнта полягає в запиті інформації про нього, такої як Ф.І.П., адреса проживання, контактний телефон, інформація про те, чи є він фізичною або юридичною особою. Якщо клієнт – фізична особа, то інформація про нього доповнюється домашнім телефоном і серією та номером паспорта. Якщо ж клієнт – юридична особа (представник фірми, організації), то потрібною є інформація про назву фірми, представником якої він є, факс і дані про банківський рахунок фірми (що включає назву банку, ОКПО, МФО та розрахунковий рахунок). Під час спілкування з клієнтом може з’явитися додаткова інформація про нього описового характеру. Кількість клієнтів може досягати порядку сотні на місяць, але вона рідко буває більша. У середньому їх біля тисячі на рік.
Під час спілкування клієнт може запитати інформацію про вартість, розцвічення, зовнішній вид виробів, зроблених фірмою раніше (така інформація зберігається фірмою у вигляді розрізнених неструктурованих файлів на комп’ютері), а також про колір і вартість доступних матеріалів для виготовлення нових виробів (з таблиці матеріалів, що зберігається у паперовому вигляді).
Зробивши рішення, клієнт може укласти договір про те, що він робить замовлення у фірми. У цьому договорі повинна бути зазначена інформація про клієнта (Ф.І.П., якщо клієнт – юридична особа, то ще і назва фірми, представником якої він є, і номер її особового рахунку), назву виробу, дату укладення договору, термін для установки (тобто дату, до якої фірма зобов’язується виготовити і встановити виріб) і даті закінчення гарантійного терміну. До договору додається загальний вигляд виробу.
Коли клієнт прийде другий раз він може зробити ще одне замовлення, у такому випадку інформація про нього буде знайдена по його Ф.І.П. для фізичної особи або за назвою фірми, яку він представляє, і буде оформлений новий договір. Клієнт також може вимагати ремонту виробу за гарантією, у цьому випадку необхідна перевірка того, чи не закінчився гарантійний термін даного виробу. По закінченню цього терміну ремонт не надається.
Можуть з’явитися нові матеріали, які повинні будуть бути добавлені до списку вже існуючих й тих, що використовуються. В цьому списку усі доступні матеріали, у тому числі і фурнітура, розділені по групах й для них вказані найменування, вартість у гривнях, у доларах та їх зовнішній вигляд (у вигляді фотографії або зразка матеріалу).
На даний момент уся ця інформація у фірмі зберігається у каталогах, в паперових списках та у вигляді розрізнених проектних файлів на комп’ютері. Це значно сповільнює пошук потрібної інформації через відсутність її структурованості. Окрім того, інформація, що викладена на паперових носіях, може бути легко втрачена або пошкоджена, а також займає немало місця.
Метою проведення такої роботи є оптимізація діяльності цієї меблевої фірми шляхом об’єднання чисельної інформації, що вона зберігає, у базу даних, що значно прискорить й спростить роботу з нею.
Цей програмний продукт повинен буде виконувати такі функції, як регістрація клієнта, обробка запиту клієнта, підписання договору з ним, введення нових (або змінення вже існуючих) матеріалів та створення калькуляції виробів, а також підрахунок вартості вироба по калькуляції.
1.2 Аналіз роботи меблевої фірми
Для того, щоб проаналізувати роботу меблевої фірми, будемо використовувати функціональний аналіз в нотації Йордана, який представляє собою інформацію про обстежувану предметні область у графічному вигляді у вигляді ієрархії діаграм. Для цього використовується методологія діаграм потоків даних (Data Flow Diagram, DFD). На діаграмі потоків даних нульового рівня зображують систему, як єдине ціле, що має основную ціль, наприклад як у нашому випадку – выконати. При цьому навіть не вказується, що саме необхідно виконати. Конкретні задачі будуть вказані на діаграмах більш низьких рівней. Уся система зображується у вигляді кола, у верхній частині якого вказується номер рівня (в даному випадку – ноль). Також на цій діаграмі зображені зовнішні сутності, що взаємодіють із системою. Діаграма потоків даних фірми першого рівня створюється шляхом декомпозиції діаграми нульового рівня. Замість основної цілі з’являється ряд задач, які виконує система. Вони також позначені колами, але у верхній частині вказан уже не номер рівня, а номер задачі. На цьому этапі уточнюються задачі системи. Також іде разбиття даних нульового рівня на потоки даних першого рівня. Ця діаграма супроводжується таблицею відповідності потоків даних. Она включаю два столбця. В першому з них перераховуються дані нульового рівня, а в другому – відпрвідні їм потоки даних першого рівня. Далі йдуть наступні рівні за необхідиністю, якщо можна продовжувати декомпозицію функції. Частіше за все потреба другого рівня є, а наступних вже ні. Зовні діаграма відрізняється лише нумерациєю: замісь 0 маємо 1, 2, 3, …, а потім 1.1, 1.2, 1.3 …, 2.1, 2.2 …
a) Діаграма потоків даних нульового рівня.
Є дві сутності: клієнт та працівник фірми. Вони обмінюються даними із системою, дають й отримують різноманітну інформацію. Система не конкретизована й уточнюється на наступних рівнях.
Ця діаграма для моєї бази даних показана на рисунку 1.1.
Рисунок 1.1 – Діаграма потоків даних фірми нульового рівня
б) Діаграма потоків даних фірми першого рівня показана на рисунку 1.2.
Разбиваємо основну задачу на шість підзадач: регіструвати клієнта, обробити запит, облік виробів, створити калькуляцію, заключити договор й адмініструвати матеріали.
-
База даних фірми
Рисунок 1.2 – Діаграма потоків даних фірми першого рівня
Відповідність потока даних нульового, першого та другого рівней наведена в таблиці 1.1.
Таблица 1.1 – Таблиця відповідності потоків даних фірми
Дан
і
0 р
і
вня
|
Поток дан
и
х 1 р
і
вня
|
Поток дан
и
х
2
р
і
вня
|
Інформація від клієнта
|
Особисті дані клиєнта
|
Запит клиєнта
|
№ клиєнта
|
Замовлення
|
Дані про замовлення
|
Інформація для контракту
|
Інформація для клієнта
|
№ клиента
|
Відповідь на запит
|
Договір
|
№ Договору
|
Документ договір
|
Інформація від робітника фірми
|
Дані про новий матеріал
|
Дані по виробу
|
Дані по калькульції
|
Інформація для робітника фірми
|
№ матеріала
|
№ вироба
|
Калькуляція
|
Договір
|
№ Договору
|
Документ договір
|
в) Створюємо діаграму потоків даних фірми другого рівня
Укладення договору розбивається на створення договору (5.1) та створення документу договору (контракту) (5.2). Це декомпозиція задачі про укладення договору на створення запису у таблиці договорів та створення документу про те, що договір було укладено. Діаграма потоків данних фірми другого рівня показана на рисунке 1.3.
Рисунок 1.3 – Діаграма потоків даних фірми другого рівня
Ми отримали попередні дані про таблиці майбітньої бази даних. Їх запишемо в таблиці 1.2, де перший стовпчик є назвою таблиці, а другий складає шапку таблиці.
Таблица 1.2 – Атрибути, що відповідають потокам даних
Поток дан
и
х
|
Атрибут
и
|
Особисті дані клієнта
|
Ф.І.П., адрес проживання, контактний телефон, інформація про те, чи є клієнт фізичною (домашній телефон та серія й номер паспорта) або юридичною особою (назва фірми, яку він представляє, факс та дані про банківський рахунок (назва банка, ОКПО, МФО, розрахунковий рахунок)), помітки
|
Запит клієнта
|
Номер договора, до якого відноситься виріб, найменування виробу, зовнішній вигляд виробу
|
№ клиента
|
№ клієнта
|
№ Договору
|
№ договору
|
Документ договір
|
Ф.І.П., найменовання виробу, код замовника, вартість, дата підписання, срок до якого потрібно установити виріб, дата закінчення гарантії
|
Дані про замовлення
|
Ф.І.П., найменовання виробу, код замовника, дата підписання, срок до якого потрібно установити виріб, дата закінчення гарантії
|
Інформація для контракту
|
Ф.І.П., найменовання виробу, код замовника, вартість, дата підписання, термін до установки, дата закінчення гарантії, загальний вигляд виробу
|
Дані про матеріал
|
Група, назва, вартість в грн., вартість в $, зовнішній вигляд
|
Дані по калькуляції
|
№ виробу, назва матеріалу, одиниця виміру, кількість, вартість за одиницю матеріалу на час укладання договору
|
Дані по виробу
|
№ виробу, № заказа, найменування, складність, ціна, загальний вигляд
|
№ матеріалу
|
№ матеріалу
|
№ виробу
|
№ виробу
|
Калькуляція
|
№ Договору, № виробу, № матеріалу, кількість виробів, кількість матеріалів, ціна закупки матеріалу в $, ціна закупки матеріалу в грн.
|
1.3 Постановка задачі
Необхідно об’єднати чисельну інформацію, яку зберігає фірма, у базу даних, для прискорення й спрощення роботи з цією інформацію.
Цей програмний продукт повинен виконувати такі функції, як регістрація клієнта, обробка запиту клієнта, підписання договору з ним, введення нових (або змінення вже існуючих) матеріалів та створення калькуляції виробів, а також підрахунок вартості виробу по калькуляції, та облік виробів.
Ця програма повинна чітко й зрозуміло давати можливість вводити інформацію про клієнта з урахуванням того, чи він є фізичною або юридичною особою, вводити нові матеріали та вироби, заключати договори та коректно вводити калькуляцію по виробам та договорам.
Таким чином кожен з розділів, вказаних у діаграмі потоків даних повинен бути присутнім у програмі у вигляді окремої форми, яку можна буде вибрати із головного меню або із підлеглих меню, і яка давитиме можливість ввести дані, необхідні для того, щоб заповнити усі поля відповідної таблиці, а також повинна контролювати процес введення – тобто не дозволяти вводити запис, в якому деякі обов’язкові поля залишилися пустими і виводити спеціальне повідомлення про те що необхідно заповнити перше з пустих полей.
Програма буде виконана у середовищі Microsoft Access, це необхідно замовнику для забезпечення кращої взаємодії майбутньої бази даних з іншими програмними продуктами та файлами, що зберігаються на комп’ютері замовника.
Системні вимоги до розробленого програмного засобу. Для нормальної роботи програми необхідно мати:
- наявність Microsoft Office 2003 на вашому комп’ютері;
- 5 Mb вільного простору на жорсткому диску;
- достатня оперативна пам’ять 32 Mb;
- відео карта 16 Mb;
- комп’ютер Intel Pentium III, Mobile CPU 1000 MHz;
- система Microsoft Windows XP Professional версія 2002 Service Pack 2.
2 РОЗРОБЛЕННЯ ПРОЕКТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ МЕБЛЕВОЇ ФІРМИ З БАЗОЮ ДАНИХ МЕБЛЕВОЇ ФІРМИ
2.1
Розробка концептуальної моделі бази даних
Наступним шагом після аналізу предметної області під час подібних досліджень є створення концептуальної моделі майбутньої бази даних. Це її графичне зображеня в термінах предметної області.
Ця модель показує структуру майбутньої бази даних, зв’язки що в ній діють, взаємодію основних сутностей.
Ця концептуальна модель буде відображати сутності прямокутниками, причому якщо це слабка сутність (сама по собі існувати не може, тобто не може існувати без інших сутностей), то вона буде представлена подвійнтм прямоукутником. Також на ній будуть відображені атрибути, характеристики цих сутностей (зображені овалами) та зв’язки між сутностями (зображені ромбами).
В цілому це частина інфологічної моделі предметної області, яка визначає сукупність інформаційних об’єктів, їх атрибутів та відношень між об’єктами, динамику зміни предметної області, а також характер інформаційних вимог користувача.
Спочатку складається концептуальна модель бази даних. Вона визначає систему основних понять та правил комбінування цими класами понять, які не залежать від язиків розробки і ї смисловою структурою бази даних.
Якщо в структурі нічого не будет змінюватися, то концептуальна модель також не зміниться.
При проектуванні баз даних використовуються діаграми сутність-зв’язок ERD (Entity Relationship Diagrams). Іноді ця модель називаеться моделлю Чена. Це семантична модель, не іерархія, а одна діаграма, яку можна розбити на частини для більш зручної роботи. Згідно з цією нотацією на діаграмах зображуються сутності, інформацію про яких ми будемо зберігати в базі даних. Це сутності внутрішні, хоча є й одноймені зовнішні сутності.
У концептуальній моделі моєї бази даних присутні чотири внутрішні сутності. Це Замовник, Договір, Виріб й Матеріал. А також дві підсущності у замовника: Фізична особа та Юридична особа.
Я вибрала цю нотацію тому, що вона одна показує атрибути зв’язку.
Концептуальна модель моєї бази даних зображена на рисунку 2.1.
Рисунок 2.1 – Концептуальна модель бази даних для меблевої фірми
Цей рисунок є графічним зображенням майбутньої бази даних, що чітко показує її структуру та зв’язки між її частинами.
2.2
Розробка специфікації програмних модулів
Після того, як були проаналізовані і з’ясовані всі процедури і функції, які повинна виконувати база даних для меблевої фірми, можна визначити програмний склад для роботи з цією базою.
Після запуску головної форми користувач повинен отримати можливість відкрити всі інші форми. Серед них мають бути наступні:
-Форма довідки, в якій має бути описано призначення даної бази даних та відповідного програмного забезпечення для неї.
-Форма регістрації клієнта “Замовник” – призначена для внесення в базу даних нових та редагування вже існуючих записів клієнтів. Вхідні дані: Фамілія, Ім’я, По батькові, Адреса, Телефон, Примітки (необов’язкова інформація). Крім того клієнт може бути: фізичною особою (серія паспорту, номер паспорту, домашній телефон (необов’язкове поле)); юридичною особою (ім’я фірми, факс, назва банку, МФО, ОКПО, розрахунковий рахунок). Вихідні дані: код замовника.
- Форма обліку договорів “Договір“ – призначена для обліку договорів. Вхідні дані: Термін до установки, Код замовника, Дата закінчення гарантії, загальний вигляд (необов’язкова інформація). Вихідні дані: номер договору.
- Форма обліку виробів “Виріб“ – призначена для введення нових виробів. Вхідні дані: Найменування, Складність, Загальний вигляд (необов’язкова інформація). Вихідні дані: номер виробу.
- Форма адміністрації матеріалів “Матеріал“ – призначена для введення нових та редагування вже існуючих матеріалів. Вхідні дані: Група, Назва, Одиниця виміру, Ціна $, Ціна грн., Зовнішній вигляд (необов’язкова інформація). Вихідні дані: номер матеріалу.
- Форма калькуляції виробів за належністю до договору “Калькуляція” – призначена для забезпечення зв’язку між Договорами, Виробами та Матеріалами, а також коректно повинна запам’ятовувати ціни, при яких буде введений даний елемент калькуляції. Вхідні дані: Номер договору, Номер виробу, Кількість виробів, Номер матеріалу, Кількість матеріалів, ціни в доларах та гривнях. Вихідні дані: зв'язок між Договорами, Виробами та Матеріалами.
- Форма “Звітів та договорів” – призначена для отримання звітів про вироби та матеріали, про договори по конкретних клієнтах, а також для отримання документу договору.
2.3
Розробка логічної моделі бази даних
За технологією проектування, після розробки концептуальної моделі формується логічна модель даних. Вона формується в поняттях баз даних, але не залежить від СУБД.
Визначаємо таблиці, поля таблиць та типи даних, які будуть мати ці поля, а також визначаємо зв’язки між таблицями.
Визначені типи даних переносимі.
Типи:
- числові дані (N);
- текстові, строка (S);
- тип даних дати (D);
- тип Blob (Binary large object) – великий двійковий об’єкт, блок пам’яті. Це можуть бути великі тексти, відео, код;
- інші (O).
Зберігається інформація про ключі (первинні (PK), зовнішні (FK), альтернативні (AK), індексні (IK)).
Зовнішній ключ – один або дукілько атрибутів, за допомогою яких підлегла таблиця зв’язується з батьківською.
Індексний ключ – атрибут, за допомогою якого інформація в таблиці буде впорядкованою.
Альтернативний ключ - один або декілька атрибутів, за допомогою яких будуть здійснюватися запити.
Концептуальну модель даних, отриману у попередній роботі перетворимо на логічну. Для цього виділяємо кожні дві сутності й зв’язки між ними та послідовно переходимо від кожної такої групи до її логічного вигляду.
Здійснивши всі можливі переходи, отримаємо логічну модель моєї бази даних. На ній ми будемо вказувати необов’язкові поля. Вона зображена на рисунке 2.2.
Рисунок 2.2 – Логічна модель бази даних для меблевої фірми
2.4
Розробка алгоритмів і графічних інтерфейсів програмних модулів
Головна форма повинна містити елементи, які дозволятимуть перейти до інших форм, таких, як довідка, фрми обліку клієнтів. договорів та виробів, форм адміністрації матеріалів та калькуляції, а також форму звытыв та договору. Такими елементами можуть бути кнопки, при натисканні якої бе визиватися відповідна форма. Також головна форма, як і всі інші, повинна мати кнопку виходу. Форма довідки повинна містити інформацію про те, для чого призначена база даних та відповідне програмне забезпечення, а також інформацію про розробника. Форма клієнтів фірми повинна містити такі поля: код замовника, його Ф.І.П., адрес, телефон, примітки (необов’язкове поле), а також групу вибору чи є клієнт фізичною або юридичною особою і відповідно до цього поля серія паспорта, номер паспорта, контактний телефон (необов’язкове поле) або і’мя фірми, факс, назва банку, МФО, ОКПО, розрахунковий рахунок. Вказана група повинна буде почергово відкривати та закривати доступ до полей фізичної та юридичної особи. Крім кнопки виходу повинна бути кнопка добавити запис. Ця кнопка при натисканні перевіряє чи всі необхідні поля були заповнені, якщо так, то видавати повідомлення про перше з полей, які залишилися пустими, інакше – добавляти запис. Це робиться шляхом перевірки того, чи не є текст кожного з полів нульовим.
Форма договір повинна містити такі поля: код договору, код замовника, дата заключення, термін до установки, дата закінчення гарантії. Кнопка добавити запис повинна працювати так само, як і відповідна кнопка на формі клієнтів.
Форма виріб повинна містити такі поля: номер виробу, найменування, складність та загальний вигляд (необов’язкове поле), а також такі ж кнопки добавити та вийти.
Форма калькуляція повинна мати такі поля: номер договору, номер виробу, кількість виробів, номер матеріалу, кількість матеріалів, ціна закупки матеріала в гривнях, ціна закупки матеріала в доларах (тобто рівень цін, при якому було замовлено цей матеріал), поточна ціна матеріала в гривнях та поточна ціна матеріаля в доларах (тобто поточний рівень цін). Крім того ця форма повинна мати автоматизоване управління всіма чотирма цінами, що контролюватиме їх однозначне та точне введення та спрощений механізм додовання схожих записів. Поточні ціни добавлятимуться шляхом копіювання з таблиці матеріалів після введення матеріалів, а ціни даного елемента калькуляції після натискання на кнопку “Цена” копіюватимуться із поточних цін. Форма матеріалів повинна мати такі поля: номер матеріалу, його гнупа, назва, одиниця виміру, ціна за одиницю маткріалу в доларах та ціна за одиницю маткріалу в гривнях, зовнішній вигляд (необов’язкове поле) та знову ж кнопки навігації.
Форма звітів та договорів повинна мати елементи управління (наприклад, кнопки), які дозволятимуть продивлятися, зберігати та друкувати звіти по матеріалах, виробах, договорах та сам документ договору.
2.5
Розробка фізичної моделі бази даних
2.5.1
Вибір засобів розробки
Вибір засобів розробки було остаточно визначено у першому розділі в пункті Постановка задачі як вимогу замовника. База даних буде розроблятися у середовищі Microsoft Access. Програмний код у такому випадку буде написаний мово Visual Basic.
2.5.2
Розробка фізичної моделі даних
На цьому этапі здійснюється прив’язка до конкретного середовища розробки.
На фізічній моделі представляється вся інформація з логіченої моделі, але визначається її конкретний тип саме у вибраному середовищі розробки. Наприклад, число в логічній моделі повинно бути уточнено у фізичній моделі як ціле, байт або довге ціле. Для вещественого числа необхідно вказувати кількість знаків після коми. Для строки або текста довжина, тобто кількість символів. Для цього для кожної таблиці із логичної моделі будується табличка, що показана у таблиці 2.1.
Таблица 2.1 – Зразок таблиці відповідності логічної та фізичної моделі
Ім’я фізичної моделі
|
Ім’я логічної моделі
|
Тип
|
Довжина тексту
|
Кількість знаків післе коми
|
Ключі
|
Середовище розробки моєї бази даних – Micrsoft Access. Воно дозволяє називати поля російськими буквами і навіть використовувати пробіли у назвах. Тому імена фізічної й логічної моделей будуть співпадати. Тому в таблицях я буду об’єднувати поля Ім’я фізичної моделі та Ім’я логічної моделі в поле Ім’я моделі.
Таблиця відповідності логічної та фізичної моделей для таблиці Договір зображена у таблице 2.2.
Таблиця 2.2 – Відповідність моделей для таблиці Договір
Ім’я модели
|
Тип
|
Ключі
|
№ договору
|
Лічильник
|
РК
|
Код замовника
|
Довге ціле
|
FK
|
Термін до установки
|
Дата/Час
|
Дата закінчення гарантії
|
Дата/Час
|
Загальний вигляд
|
Поле об’екту OLE
|
Дата заключення
|
Дата/Час
|
Таблиця відповідності логічної та фізичної моделей для таблиці Вироби зображена у таблиці 2.3.
Таблиця 2.3 – Відповідність моделей для таблиці Вироби
Ім’я моделі
|
Тип
|
Довжина
текстау
|
Ключі
|
№ виробу
|
Лічильник
|
РК
|
Найменування
|
Текстовий
|
30
|
IK
|
Складність
|
Байт
|
Загальний вигляд
|
Поле об’екту OLE
|
Таблиця відповідності логічної та фізичної моделей для таблиці Матеріал зображена у таблиці 2.4.
Таблиця 2.4 – Відповідність моделей для таблиці Матеріал
Ім’я моделі
|
Тип
|
Кількість знаків після коми
|
Довжина
Тексту
|
Ключі
|
№ матеріалу
|
Лічильник
|
РК
|
Група
|
Текстовий
|
20
|
Назва
|
Текстовий
|
30
|
IK
|
Одиниця виміру
|
Текстовий
|
10
|
Ціна $
|
Грошовий
|
2
|
Ціна грн
|
Грошовий
|
2
|
Зовнішній вигляд
|
Поле об’єкту OLE
|
Таблиця відповідності логічної та фізичної моделей для таблиці ДИМ зображена у таблиці 2.5.
Таблица 2.5 – Відповідність моделей для таблиці ДИМ
Ім’я моделі
|
Тип
|
Кількість знаків після коми
|
Ключі
|
№ договору
|
Довге ціле
|
РК
|
№ виробу
|
Довге ціле
|
РК
|
№ матеріалу
|
Довге ціле
|
РК
|
Кількість
|
Ціле
|
Ціна $
|
Грошовий
|
2
|
Ціна грн
|
Грошовий
|
2
|
Таблиця відповідності логічної та фізичної моделей для таблиці Замовник зображена у таблиці 2.6.
Таблиця 2.6 – Відповідність моделей для таблиці Замовник
Ім’я моделі
|
Тип
|
Довжина тексту
|
Ключі
|
Код замовника
|
Лічильник
|
РК
|
Фамілія
|
Текстовий
|
20
|
IK
|
Ім’я
|
Текстовий
|
20
|
IK
|
По батькові
|
Текстовий
|
20
|
IK
|
Адреса
|
Текстовий
|
70
|
Телефон
|
Текстовий
|
20
|
Примітки
|
Текстовий
|
250
|
Таблиця відповідності логічної та фізичної моделей для таблиці Юридична особа зображена у таблиці 2.7.
Таблиця 2.7 – Відповідність моделей для таблиці Юридична особа
Ім’я моделі
|
Тип
|
Довжина тексту
|
Ключі
|
Код замовника
|
Довге ціле
|
РК
|
Ім’я фірми
|
Текстовий
|
20
|
Факс
|
Довге ціле
|
Назва банку
|
Текстовый
|
30
|
МФО
|
Довге ціле
|
IK
|
ОКПО
|
Довге ціле
|
IK
|
Розрахунковий рахунок
|
Довге ціле
|
IK
|
Таблиця відповідності логічної та фізичної моделей для таблиці Фізична особа зображена у таблиці 2.8.
Таблиця 2.8 – Відповідність моделей для таблиці Фізична особа
Ім’я моделі
|
Тип
|
Довжина тексту
|
Ключі
|
Код замовника
|
Довге ціле
|
РК
|
Серія паспорта
|
Текстовий
|
Номер паспорта
|
Довге ціле
|
Телефон
|
Довге ціле
|
Отримана мною база даних таким чином знаходиться у третій нормальній формі (3НФ).
3НФ – представлення відношень у реляцийній моделі даних при якому кожен неосновний (неключовий) атрибут відношення безпосередньо, нетранзитивно залежить від дудь-якого його ключа.
При цій формі аномалій не було помічено.
Тепер створимо електронний варіант таблиці в середовищі Microsoft Access 2003.
Відношення між таблицями бази даних показані на рисунку 2.3.
Рисунок 2.3 – Зв’язки між таблицями бази даних для меблевої фірми
2.6
Кодування і тестування програмного забезпечення меблевої фірми
Програма написана у середовищі Microsoft Access 2003. Її головний файл – МЕБЕЛЬ.mdb займає 6,39 Mb дискового пространства при цмові, що він заповнений невеликою кількістю тестових даних. Його об’єм, звісно, зростатиме по мірі заповнення бази даними. Під час кодування були враховані та виконані вимоги, під час розробки специфікації програмних модулів та розробки алгоритмів і графічних інтерфейсів програмних модулів.
Для можливості протестувати доботу бази даних із відповідним програмним забезпеченням, вона була заповнена тестовими значеннями у кількості, достатній для перевірки її діяльності.
Тестування починаемо із запуску головної форми програми. Натискаємо кнопку виходу, бачимо, що вона працює як очікувалося – форма закнивається. Знову починаємо роботу із запуску головної форми,тепер заходимо в усі підлеглі форми і перевіряємо можливість їх закриття. Все працює як очікувалося. Відкриваємо форму “О программе”, бачимо, що в ній відображається інформація про те, кому і для чого необхідно використовувати цю базу даних та відповідне програмне забезпечення для неї. Відкриваємо форму “Заказчик”, натискаємо кнопку добавити запис, коректно вводимо всю інформацію про замовника який є фізичною особою, знову натискаємо кнопку добавити. Все працює добре, новий запис, який ми щойно створили, був успішно добавлений до бази даних. Таку саму перевірку робимо для замовника, який є юридичною особою. Все також працює добре. Тепер намагаємося добавити запис, в якому не всі обов’язкові поля були заповнені, наприклад, були не заповнені поля “Имя” та “Отчество” замовника. Бачимо, що після натискання на кнопку добавити виникає повідомлення “Не все поля заполнены!!! Введите значение в поле Имя”, натискаэмо кнопку ОК, бачимо, що курсор автоматично перемыстився у поле “Имя”. Вводимо ім’я замовника (залишилося невведеним лише побатькові), натискаємо кнопку добавити. Бачимо, що знову виникає повідомлення “Не все поля заполнены!!! Введите значение в поле Фамилия”. Так само програма реагує й на інші спроби ввест неповні дані, тобто все працює, як очікувалося. Відкриваємо почерзі форми “Договор”, “Изделие” и “Материал”, робимо аналогічні перевірки. Все працює коректно. Відкриваємо форму “Калькуляция”, робимо таку саму перевірку роботи кнопки добавити – воно працює коректно. Заповнюючи всі дані, помучаємо, що після заповнення поля “Номер материала” автоматично стають заповненими два нижніх поля (поточні ціни на матеріал) та стає можливим натискання на кнопку “Цена”. Після її натискання інші два цінових поля заповнюються відповідними значеннями поточних цін. Намагаємося вручну змінити значення цінових полей – нічого не виходить, вони заблоковані для введення даних. Отже перевірка роботи кнопки “Цена” пройшла успішно – вона працює коректно. Намагаємося клонувати існуючий запис – створюється новий запис і заповнюється значеннями клонованого, але він не може бути добавлений доки не буде змінений один з номерів (договора, виробу, матеріалу), бо це є ключові поля і вони не можуть двічи в таблиці мати однакові значення, про що при спробах неправильного вводу говориться у повідомленні “Данные о записи с такими номерами договора, материала или изделия уже существуют или не могут существовать”, причому вони не можуть існувати тоді, коли відповідних договору, виробу або матеріалу з такими номерами не існує в базі даних. Таким чином перевірка роботи кнопки “Клонувати” пройшла успішно – все працює правильно. Відкриваємо форму “Отчетность”, перевіряємо чи правильно створюються звіти та договора для різних початкових даних. Все працює так, як і очікувалося.
Висновок: програмний продукт відповідає всім поставленим вимогам і працює коректно.
3. РЕЗУТАТИ РОЗРОБКИ ПРОГРАММНОГО ЗАБЕЗПЕЧЕННЯ МЕБЛЕВОЇ ФІРМИ
У результаті аналізу та розробки була створена база даних для меблевої фірми із відповідним програмним забезпеченням.
Код програмного забезпечення для цієї бази даних знаходиться у додатку А. Інструкція користувача для цієї програми – у додатку Б.
Головна форма, з якої можна запускати програму: “МЕБЕЛЬ”.
Файл з базою даних Mebel.mdb
Апаратні вимоги:
- процесор Pentium 1000MHz і наступні версії;
- 64 Mb оперативної пам’яті.
Програмні вимоги:
- наявність установленого Microsoft Office 2003 на комп’ютері замовника;
- операційна система Windows Xp/2000;
- 100Mb вільного простору на жорсткому диску.
Висновки
У даній роботі було розроблене програмне забезпечення для меблевої фірми із базою даних меблевої фірми. Була розглянута предметна область з її основними задачами та визначена її проблематика, були проведені її обстеження та аналіз, що сформували задачу роботи.
В процесі роботи були розроблені концептуальна, логічна та фізична моделі даних, а також специфікація програмних модулів та їх алгоритми і графічні інтерфейси.
Результатом проведеної роботи є розроблена база даних для меблевої фірми з відповідним програмним забезпеченням та інструкція користувача до неї.
Ця програма робить легкою навігацію по базі даних за допомогою таких форм, як Замовник, Договір, Виріб, Матеріал та Калькуляція. Кожна з цих форм має спеціальний механізм обробки помилок, який при намаганні добавити запис, в якого є незаповнене поле, виводить про нього спеціальне повідомлення. Форма Калькуляції підтримує програмне зчитування поточної ціни даного матеріалу з таблиці матеріалів, для посилення контролю забороняє введення ціни матеріалу вручну, а також дозволяє клону вати будь-який запис з подальшою зміною характеристик та контролює введення однакових записів. Присутність кнопок виходу та добавити на формах програми робить легким пересування по ній.
Список використаних джерел
1. “Системы управления базами данных и знаний“ справочное издание под редакцией А.Н. Наумова, Москва: “Финансы и статистика“, 1991
2. Конспект лекцій зі спеціальності “Організація баз даних та баз знань“
3“Microsoft Access 2003 Эффективный самоучитель“, СанктПерербург: НиТ, 2006
4“Teach Yourself Microsoft Access 2002 Programming in 24 Houres“, Paul Kimmel, Москва – Санкт-Перебург - Киев: “Вильямс“, 2002
5Moscow MS Access USER Group, http://www.arissoft.ru/msaccess/
6Microsoft Access Information, http://www.dykbits.com/acc97.htm
Додаток А. Програмний код бази даних для меблевої фірми
Програмний
код
форми
“
МЕБЕЛЬ
”:
Option Compare Database
Private Sub Кнопка0_Click()
On Error GoTo Err_Кнопка0_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(32) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1075) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1084) & ChrW(1077)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка0_Click:
Exit Sub
Err_Кнопка0_Click:
MsgBox Err.Description
Resume Exit_Кнопка0_Click
End Sub
Private Sub Кнопка1_Click()
On Error GoTo Err_Кнопка1_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1054) & ChrW(32) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1075) & ChrW(1088) & ChrW(1072) & ChrW(1084) & ChrW(1084) & ChrW(1077)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка1_Click:
Exit Sub
Err_Кнопка1_Click:
MsgBox Err.Description
Resume Exit_Кнопка1_Click
End Sub
Private Sub Кнопка2_Click()
On Error GoTo Err_Кнопка2_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1044) & ChrW(1086) & ChrW(1075) & ChrW(1086) & ChrW(1074) & ChrW(1086) & ChrW(1088)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка2_Click:
Exit Sub
Err_Кнопка2_Click:
MsgBox Err.Description
Resume Exit_Кнопка2_Click
End Sub
Private Sub Кнопка3_Click()
On Error GoTo Err_Кнопка3_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка3_Click:
Exit Sub
Err_Кнопка3_Click:
MsgBox Err.Description
Resume Exit_Кнопка3_Click
End Sub
Private Sub Кнопка4_Click()
On Error GoTo Err_Кнопка4_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1048) & ChrW(1079) & ChrW(1076) & ChrW(1077) & ChrW(1083) & ChrW(1080) & ChrW(1077)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка4_Click:
Exit Sub
Err_Кнопка4_Click:
MsgBox Err.Description
Resume Exit_Кнопка4_Click
End Sub
Private Sub Кнопка5_Click()
On Error GoTo Err_Кнопка5_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1052) & ChrW(1072) & ChrW(1090) & ChrW(1077) & ChrW(1088) & ChrW(1080) & ChrW(1072) & ChrW(1083)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка5_Click:
Exit Sub
Err_Кнопка5_Click:
MsgBox Err.Description
Resume Exit_Кнопка5_Click
End Sub
Private Sub Кнопка6_Click()
On Error GoTo Err_Кнопка6_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1050) & ChrW(1072) & ChrW(1083) & ChrW(1100) & ChrW(1082) & ChrW(1091) & ChrW(1083) & ChrW(1103) & ChrW(1094) & ChrW(1080) & ChrW(1103)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка6_Click:
Exit Sub
Err_Кнопка6_Click:
MsgBox Err.Description
Resume Exit_Кнопка6_Click
End Sub
Private Sub Кнопка8_Click()
On Error GoTo Err_Кнопка8_Click
DoCmd.Close
Exit_Кнопка8_Click:
Exit Sub
Err_Кнопка8_Click:
MsgBox Err.Description
Resume Exit_Кнопка8_Click
End Sub
Private Sub Кнопка9_Click()
On Error GoTo Err_Кнопка9_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1087) & ChrW(1088) & ChrW(1086) & ChrW(1089) & ChrW(1099) & ChrW(32) & ChrW(1080) & ChrW(32) & ChrW(1076) & ChrW(1086) & ChrW(1082) & ChrW(1091) & ChrW(1084) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1099)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка9_Click:
Exit Sub
Err_Кнопка9_Click:
MsgBox Err.Description
Resume Exit_Кнопка9_Click
End Sub
Програмний код форми
“О программе”:
Option Compare Database
Private Sub Кнопка9_Click()
On Error GoTo Err_Кнопка9_Click
DoCmd.Close
Exit_Кнопка9_Click:
Exit Sub
Err_Кнопка9_Click:
MsgBox Err.Description
Resume Exit_Кнопка9_Click
End Sub
Програмний код форми
“Заказчик”:
Option Compare Database
Private Sub Form_Load()
Имя_фирмы.Enabled = False
Факс.Enabled = False
Название_банка.Enabled = False
МФО.Enabled = False
ОКПО.Enabled = False
Расчетный_счет.Enabled = False
Form.Caption = "Заказчик"
End Sub
Private Sub Группа34_BeforeUpdate(Cancel As Integer)
If Группа34 = 1 Then
Имя_фирмы.Enabled = False
Факс.Enabled = False
Название_банка.Enabled = False
МФО.Enabled = False
ОКПО.Enabled = False
Расчетный_счет.Enabled = False
Серия_паспорта.Enabled = True
№_паспорта.Enabled = True
Контактный_телефон.Enabled = True
End If
If Группа34 = 2 Then
Серия_паспорта.Enabled = False
№_паспорта.Enabled = False
Контактный_телефон.Enabled = False
Имя_фирмы.Enabled = True
Факс.Enabled = True
Название_банка.Enabled = True
МФО.Enabled = True
ОКПО.Enabled = True
Расчетный_счет.Enabled = True
End If
End Sub
Public Sub ДобавитьЗапись_Click()
On Error GoTo Err_ДобавитьЗапись_Click
Фамилия.SetFocus
If (Фамилия.Text <> "") Then
Имя.SetFocus
If (Имя.Text <> "") Then
Отчество.SetFocus
If (Отчество.Text <> "") Then
Адрес.SetFocus
If (Адрес.Text <> "") Then
Телефон.SetFocus
If (Телефон.Text <> "") Then
If (Группа34 = 1) Then
Серия_паспорта.SetFocus
If (Серия_паспорта.Text = "") Then
GoTo Err_ДобавитьЗапись_Click
End If
Else
If (Группа34 = 2) Then
Имя_фирмы.SetFocus
If (Имя_фирмы.Text = "") Then
GoTo Err_ДобавитьЗапись_Click
End If
End If
End If
End If
End If
End If
End If
End If
Фамилия.SetFocus
DoCmd.GoToRecord , , acNewRec
Группа34.Enabled = True
Exit_ДобавитьЗапись_Click:
Exit Sub
Err_ДобавитьЗапись_Click:
If (Err.Description <> "") Then
Фамилия.SetFocus
If (Фамилия.Text <> "") Then
Имя.SetFocus
If (Имя.Text <> "") Then
Отчество.SetFocus
If (Отчество.Text <> "") Then
Адрес.SetFocus
If (Адрес.Text <> "") Then
Телефон.SetFocus
If (Телефон.Text <> "") Then
If (Группа34 = 1) Then
Серия_паспорта.SetFocus
If (Серия_паспорта.Text <> "") Then
№_паспорта.SetFocus
MsgBox "Не все поля заполнены!!! Введите значение в поле № паспорта"
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Серия паспорта"
End If
End If
If (Группа34 = 2) Then
Имя_фирмы.SetFocus
If (Имя_фирмы.Text <> "") Then
Факс.SetFocus
If (Факс.Text <> "") Then
Название_банка.SetFocus
If (Название_банка.Text <> "") Then
МФО.SetFocus
If (МФО.Text <> "") Then
ОКПО.SetFocus
If (ОКПО.Text <> "") Then
Расчетный_счет.SetFocus
MsgBox "Не все поля заполнены!!! Введите значение в поле Расчетный_счет"
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле ОКПО"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле МФО"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Название банка"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Факс"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Имя фирмы"
End If
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Телефон"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Адрес"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Отчество"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Имя"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Фамилия"
End If
End If
Resume Exit_ДобавитьЗапись_Click
End Sub
Private Sub Серия_паспорта_Exit(Cancel As Integer)
If (Серия_паспорта.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub №_паспорта_Exit(Cancel As Integer)
If (№_паспорта.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub Контактный_Телефон_Exit(Cancel As Integer)
If (Контактный_телефон.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub Имя_фирмы_Exit(Cancel As Integer)
If (Имя_фирмы.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub Факс_Exit(Cancel As Integer)
If (Факс.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub Название_банка_Exit(Cancel As Integer)
If (Название_банка.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub МФО_Exit(Cancel As Integer)
If (МФО.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub ОКПО_Exit(Cancel As Integer)
If (ОКПО.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub Расчетный_счет_Exit(Cancel As Integer)
If (Расчетный_счет.Text <> "") Then
Группа34.Enabled = False
End If
End Sub
Private Sub Кнопка43_Click()
On Error GoTo Err_Кнопка43_Click
DoCmd.Close
Exit_Кнопка43_Click:
Exit Sub
Err_Кнопка43_Click:
MsgBox "Ошибка при закрытии формы"
Resume Exit_Кнопка43_Click
End Sub
Програмний код форми
“
Договор
”:
Option Compare Database
Private Sub Добавить_Click()
On Error GoTo Err_Добавить_Click
DoCmd.GoToRecord , , acNewRec
Exit_Добавить_Click:
Exit Sub
Err_Добавить_Click:
№_договора.SetFocus
If (№_договора.Text <> "") Then
Код_заказчика.SetFocus
If (Код_заказчика.Text <> "") Then
Дата_заключения.SetFocus
If (Дата_заключения.Text <> "") Then
Срок_к_установке.SetFocus
If (Срок_к_установке.Text <> "") Then
Дата_окончания_гарантии.SetFocus
If (Дата_окончания_гарантии.Text <> "") Then
Код_заказчика.SetFocus
MsgBox "Клиент с таким Кодом заказчика не зарегистрирован в базе данных!!!"
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Дата окончания гарантии"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Срок к установке"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Дата заключения"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Код заказчика"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле № договора"
End If
Resume Exit_Добавить_Click
End Sub
Private Sub Кнопка13_Click()
On Error GoTo Err_Кнопка13_Click
DoCmd.Close
Exit_Кнопка13_Click:
Exit Sub
Err_Кнопка13_Click:
MsgBox Err.Description
Resume Exit_Кнопка13_Click
End Sub
Програмний код форми
“Изделие”:
Option Compare Database
Private Sub Добавить_Click()
On Error GoTo Err_Добавить_Click
DoCmd.GoToRecord , , acNewRec
Exit_Добавить_Click:
Exit Sub
Err_Добавить_Click:
Наименование.SetFocus
If (Наименование.Text <> "") Then
Сложность.SetFocus
MsgBox "Не все поля заполнены!!! Введите значение в поле Сложность"
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Наименование"
End If
Resume Exit_Добавить_Click
End Sub
Private Sub Кнопка9_Click()
On Error GoTo Err_Кнопка9_Click
DoCmd.Close
Exit_Кнопка9_Click:
Exit Sub
Err_Кнопка9_Click:
MsgBox Err.Description
Resume Exit_Кнопка9_Click
End Sub
Програмний код форми
“Калькуляция”:
Option Compare Database
Private Sub Form_Load()
Цена.Enabled = False
End Sub
Private Sub №_материала_Exit(Cancel As Integer)
If (№_материала.Text <> "") Then
Цена.Enabled = True
End If
End Sub
Private Sub Цена_Click()
Материал_Цена__.SetFocus
If (Материал_Цена__.Text <> "") Then
Dim pr As String
Материал_Цена__.SetFocus
pr = Материал_Цена__.Text
ДИМ_Цена__.SetFocus
ДИМ_Цена__.Locked = False
ДИМ_Цена__.Text = pr
ДИМ_Цена__.Locked = True
Материал_Цена_грн.SetFocus
pr = Материал_Цена_грн.Text
ДИМ_Цена_грн.SetFocus
ДИМ_Цена_грн.Locked = False
ДИМ_Цена_грн.Text = pr
ДИМ_Цена_грн.Locked = True
Цена.Enabled = False
Добавить.SetFocus
End If
End Sub
Private Sub Добавить_Click()
On Error GoTo Err_Добавить_Click
DoCmd.GoToRecord , , acNewRec
Цена.Enabled = False
Exit_Добавить_Click:
Exit Sub
Err_Добавить_Click:
№договора.SetFocus
If (№договора.Text <> "") Then
№_изделия.SetFocus
If (№_изделия.Text <> "") Then
Количество_изделий.SetFocus
If (Количество_изделий.Text <> "") Then
№_материала.SetFocus
If (№_материала.Text <> "") Then
Количество_материала.SetFocus
If (Количество_материала.Text <> "") Then
ДИМ_Цена__.SetFocus
If (ДИМ_Цена__.Text <> "") Then
MsgBox "Данные о записи с такими номерами договора, изделия и материала уже существуют или не могут существовать!!!"
Else
MsgBox "Не все поля заполнены!!! Нажмите кнопку Цена для фиксации значений цен на момент заказа"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Количество материала"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле № материала"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Количество изделий"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле № изделия"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле №договора"
End If
Resume Exit_Добавить_Click
End Sub
Private Sub Клон_Click()
On Error GoTo Err_Клон_Click
Dim nd As Integer
Dim ni As String
Dim ki As String
Dim km As String
Dim dc1 As String
Dim dc2 As String
Dim mc1 As String
Dim mc2 As String
Dim m As Integer
№договора.SetFocus
nd = №договора.Text
№_изделия.SetFocus
ni = №_изделия.Text
Количество_изделий.SetFocus
ki = Количество_изделий.Text
Количество_материала.SetFocus
km = Количество_материала.Text
ДИМ_Цена__.SetFocus
ДИМ_Цена__.Locked = False
dc1 = ДИМ_Цена__.Text
ДИМ_Цена__.Locked = True
ДИМ_Цена_грн.SetFocus
ДИМ_Цена_грн.Locked = False
dc2 = ДИМ_Цена_грн.Text
ДИМ_Цена_грн.Locked = True
Материал_Цена__.SetFocus
Материал_Цена__.Locked = False
mc1 = Материал_Цена__.Text
Материал_Цена__.Locked = True
Материал_Цена_грн.SetFocus
Материал_Цена_грн.Locked = False
mc2 = Материал_Цена_грн.Text
Материал_Цена_грн.Locked = True
№_материала.SetFocus
m = №_материала.Text
DoCmd.GoToRecord , , acNewRec
Exit_Клон_Click:
№договора.SetFocus
№договора.Text = nd
№_материала.SetFocus
№_материала.Text = m
№_изделия.SetFocus
№_изделия.Text = ni
Количество_изделий.SetFocus
Количество_изделий.Text = ki
Количество_материала.SetFocus
Количество_материала.Text = km
ДИМ_Цена__.SetFocus
ДИМ_Цена__.Locked = False
ДИМ_Цена__.Text = dc1
ДИМ_Цена__.Locked = True
ДИМ_Цена_грн.SetFocus
ДИМ_Цена_грн.Locked = False
ДИМ_Цена_грн.Text = dc2
ДИМ_Цена_грн.Locked = True
Материал_Цена__.SetFocus
Материал_Цена__.Locked = False
Материал_Цена__.Text = mc1
Материал_Цена__.Locked = True
Материал_Цена_грн.SetFocus
Материал_Цена_грн.Locked = False
Материал_Цена_грн.Text = mc2
Материал_Цена_грн.Locked = True
Цена.Enabled = True
Exit Sub
Err_Клон_Click:
MsgBox "Не все поля заполнены!!! Такую запись нельзя клонировать" + Err.Description
Resume Exit_Клон_Click
End Sub
Private Sub Кнопка24_Click()
On Error GoTo Err_Кнопка24_Click
DoCmd.Close
Exit_Кнопка24_Click:
Exit Sub
Err_Кнопка24_Click:
MsgBox Err.Description
Resume Exit_Кнопка24_Click
End Sub
Програмний код форми “Материал”:
Option Compare Database
Private Sub ДобавитьМатериал_Click()
On Error GoTo Err_ДобавитьМатериал_Click
DoCmd.GoToRecord , , acNewRec
Exit_ДобавитьМатериал_Click:
Exit Sub
Err_ДобавитьМатериал_Click:
Группа.SetFocus
If (Группа.Text <> "") Then
Название.SetFocus
If (Название.Text <> "") Then
Единица_измерения.SetFocus
If (Единица_измерения.Text <> "") Then
Цена__.SetFocus
If (Цена__.Text <> "") Then
Цена_грн.SetFocus
MsgBox "Не все поля заполнены!!! Введите значение в поле Цена грн"
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Цена $"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Единица измерения"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Название"
End If
Else
MsgBox "Не все поля заполнены!!! Введите значение в поле Группа"
End If
Resume Exit_ДобавитьМатериал_Click
End Sub
Private Sub Кнопка16_Click()
On Error GoTo Err_Кнопка16_Click
DoCmd.Close
Exit_Кнопка16_Click:
Exit Sub
Err_Кнопка16_Click:
MsgBox Err.Description
Resume Exit_Кнопка16_Click
End Sub
Програмний код форми “Отчетность”:
Option Compare Database
Private Sub Form_Load()
Form.Caption = "Отчетность"
End Sub
Private Sub Кнопка2_Click()
On Error GoTo Err_Кнопка2_Click
DoCmd.Close
Exit_Кнопка2_Click:
Exit Sub
Err_Кнопка2_Click:
MsgBox Err.Description
Resume Exit_Кнопка2_Click
End Sub
Private Sub Изделие_Click()
On Error GoTo Err_Изделие_Click
Dim stDocName As String
stDocName = ChrW(1048) & ChrW(1079) & ChrW(1076) & ChrW(1077) & ChrW(1083) & ChrW(1080) & ChrW(1103)
DoCmd.OpenReport stDocName, acPreview
Exit_Изделие_Click:
Exit Sub
Err_Изделие_Click:
MsgBox Err.Description
Resume Exit_Изделие_Click
End Sub
Private Sub ПечатьИ_Click()
On Error GoTo Err_ПечатьИ_Click
Dim stDocName As String
stDocName = ChrW(1048) & ChrW(1079) & ChrW(1076) & ChrW(1077) & ChrW(1083) & ChrW(1080) & ChrW(1103)
DoCmd.OpenReport stDocName, acNormal
Exit_ПечатьИ_Click:
Exit Sub
Err_ПечатьИ_Click:
MsgBox Err.Description
Resume Exit_ПечатьИ_Click
End Sub
Private Sub Материал_Click()
On Error GoTo Err_Материал_Click
Dim stDocName As String
stDocName = ChrW(1052) & ChrW(1072) & ChrW(1090) & ChrW(1077) & ChrW(1088) & ChrW(1080) & ChrW(1072) & ChrW(1083) & ChrW(1099)
DoCmd.OpenReport stDocName, acPreview
Exit_Материал_Click:
Exit Sub
Err_Материал_Click:
MsgBox Err.Description
Resume Exit_Материал_Click
End Sub
Private Sub ПечатьМ_Click()
On Error GoTo Err_ПечатьМ_Click
Dim stDocName As String
stDocName = ChrW(1052) & ChrW(1072) & ChrW(1090) & ChrW(1077) & ChrW(1088) & ChrW(1080) & ChrW(1072) & ChrW(1083) & ChrW(1099)
DoCmd.OpenReport stDocName, acNormal
Exit_ПечатьМ_Click:
Exit Sub
Err_ПечатьМ_Click:
MsgBox Err.Description
Resume Exit_ПечатьМ_Click
End Sub
Private Sub ПечатьФ_Click()
On Error GoTo Err_ПечатьФ_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1072) & ChrW(1084) & ChrW(1080) & ChrW(1083) & ChrW(1080) & ChrW(1103)
DoCmd.OpenReport stDocName, acNormal
Exit_ПечатьФ_Click:
Exit Sub
Err_ПечатьФ_Click:
MsgBox Err.Description
Resume Exit_ПечатьФ_Click
End Sub
Private Sub ФИО_Click()
On Error GoTo Err_ФИО_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1048) & ChrW(1054)
DoCmd.OpenReport stDocName, acPreview
Exit_ФИО_Click:
Exit Sub
Err_ФИО_Click:
MsgBox Err.Description
Resume Exit_ФИО_Click
End Sub
Private Sub ПечатьФИО_Click()
On Error GoTo Err_ПечатьФИО_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1048) & ChrW(1054)
DoCmd.OpenReport stDocName, acNormal
Exit_ПечатьФИО_Click:
Exit Sub
Err_ПечатьФИО_Click:
MsgBox Err.Description
Resume Exit_ПечатьФИО_Click
End Sub
Private Sub ДоговорФЛ_Click()
On Error GoTo Err_ДоговорФЛ_Click
Dim stDocName As String
stDocName = ChrW(1044) & ChrW(1086) & ChrW(1075) & ChrW(1086) & ChrW(1074) & ChrW(1086) & ChrW(1088) & ChrW(32) & ChrW(1060) & ChrW(1051)
DoCmd.OpenReport stDocName, acPreview
Exit_ДоговорФЛ_Click:
Exit Sub
Err_ДоговорФЛ_Click:
MsgBox Err.Description
Resume Exit_ДоговорФЛ_Click
End Sub
Private Sub ПечатьД_Click()
On Error GoTo Err_ПечатьД_Click
Dim stDocName As String
stDocName = ChrW(1044) & ChrW(1086) & ChrW(1075) & ChrW(1086) & ChrW(1074) & ChrW(1086) & ChrW(1088) & ChrW(32) & ChrW(1060) & ChrW(1051)
DoCmd.OpenReport stDocName, acNormal
Exit_ПечатьД_Click:
Exit Sub
Err_ПечатьД_Click:
MsgBox Err.Description
Resume Exit_ПечатьД_Click
End Sub
Private Sub Попфз_Click()
On Error GoTo Err_Попфз_Click
Dim stDocName As String
stDocName = ChrW(1047) & ChrW(1072) & ChrW(1082) & ChrW(1072) & ChrW(1079) & ChrW(1095) & ChrW(1080) & ChrW(1082) & ChrW(32) & ChrW(1060) & ChrW(1072) & ChrW(1084) & ChrW(1080) & ChrW(1083) & ChrW(1080) & ChrW(1103)
DoCmd.OpenReport stDocName, acPreview
Exit_Попфз_Click:
Exit Sub
Err_Попфз_Click:
MsgBox Err.Description
Resume Exit_Попфз_Click
End Sub
Коди запитів на
SQL
Договор ФЮЛ - запит
і
нформац
ії
, необх
і
д
ної
для
створення договору:
SELECT Договор.[№ договора], Договор.[Дата заключения], Договор.[Срок к установке], Договор.[Дата окончания гарантии], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, [Физическое лицо].[Серия паспорта], [Физическое лицо].[№ паспорта], Sum(ДИМ![Цена $]*ДИМ![Количество материала]*ДИМ![Количество изделий]*Изделие!Сложность) AS Выражение1, Sum(ДИМ![Цена грн]*ДИМ![Количество материала]*ДИМ![Количество изделий]*Изделие!Сложность) AS Выражение2, [Юридическое лицо].[Имя фирмы]
FROM Материал INNER JOIN (Изделие INNER JOIN (((Заказчик INNER JOIN (Договор INNER JOIN ДИМ ON Договор.[№ договора] = ДИМ.№договора) ON Заказчик.[Код заказчика] = Договор.[Код заказчика]) LEFT JOIN [Физическое лицо] ON Заказчик.[Код заказчика] = [Физическое лицо].[Код заказчика]) LEFT JOIN [Юридическое лицо] ON Заказчик.[Код заказчика] = [Юридическое лицо].[Код заказчика]) ON Изделие.[№ изделия] = ДИМ.[№ изделия]) ON Материал.[№ материала] = ДИМ.[№ материала]
GROUP BY Договор.[№ договора], Договор.[Дата заключения], Договор.[Срок к установке], Договор.[Дата окончания гарантии], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, [Физическое лицо].[Серия паспорта], [Физическое лицо].[№ паспорта], [Юридическое лицо].[Имя фирмы]
HAVING (((Договор.[№ договора])=[Запрос]![№ договора]));
Заказчик Фамилия - запит інформації про замовника та його договори, за фамілією замовника:
SELECT Заказчик.[Код заказчика], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, Заказчик.Адрес, Заказчик.Телефон, Договор.[№ договора], Договор.[Срок к установке], Договор.[Дата окончания гарантии]
FROM Заказчик INNER JOIN Договор ON Заказчик.[Код заказчика] = Договор.[Код заказчика]
WHERE (((Заказчик.Фамилия)=[Запрос]![Фамилия]));
Заказчик ФИО - запит інформації про замовника та його договори, за його Ф.І.П.:
SELECT Заказчик.[Код заказчика], Заказчик.Фамилия, Заказчик.Имя, Заказчик.Отчество, Заказчик.Адрес, Заказчик.Телефон, Договор.[№ договора], Договор.[Срок к установке], Договор.[Дата окончания гарантии]
FROM Заказчик INNER JOIN Договор ON Заказчик.[Код заказчика] = Договор.[Код заказчика]
WHERE (((Заказчик.Фамилия)=[Запрос]![Фамилия]) AND ((Заказчик.Имя)=[Запрос]![Имя]) AND ((Заказчик.Отчество)=[Запрос]![Отчество]));
Изделия - запит інформації про вироби за їх найменуванням:
SELECT Изделие.[№ изделия], Изделие.Наименование, Изделие.Сложность, Изделие.[Общий вид экземпляра]
FROM Изделие
WHERE (((Изделие.Наименование)=[Запрос]![Наименование]));
Материал
ы
- запит інформації про матеріали за групою, до якої вони належать:
SELECT Материал.[№ материала], Материал.Группа, Материал.Название, Материал.[Единица измерения], Материал.[Цена $], Материал.[Цена грн], Материал.[Внешний вид]
FROM Материал
WHERE (((Материал.Группа)=[Запрос]![Группа]));
Додаток Б. Інструкція користувача
Робота з базою даних меблевої фірми починається з запуску форми МЕБЕЛЬ. Вона показана на рисунку 1.
Рисунок 1 – Головна форма програмного забезпечення для меблевої фірми.
Для виходу з програми необхідно натиснути найнижчу кнопку. Натиснувши кнопку “О программе”, ми відкриємо форму довідки. Вона показана на рисунку 2.
Рисунок 2 – Форма довідки
Натиснувши кнопку “Клієнти фірми“ – відкриємо форму, яка дозволяє вводити нових клієнтів фірми. Ця форма зображена на рисунку 3 заповнена для фізичної особи та на рисунку 4 – для юридичної особи.
Рисунок 3 – Форма замовників для фізичної особи
Рисунок 4 – Форма замовників для юридичної особи
В цій формі необхідно ввести значення в усі поля, що знаходяться вище Приміток, а потім вибравши статус особи: фізична або юридична, і заповнити відповідні поля нижче від Приміток. На цій формі, як і на усіх наступних формах, про які піде розмова, поля, що виділені жовтим кольором обов’язкові, а прозорі поля – необов’язкові. Вибір певного статусу відкриває доступ до відповідних полей та закриваєоткрі до тих, які йому не відповідають.
Кнопка “Заключить договор” відкриває форму договорів. Ця форма зображена на рисунку 5.
Рисунок 5 – форма договорів
Для введення нового договору необхідно натиснути кнопку добавити або прокрутити всі записи до кінця. Заповнити всі обов’язкові поля (які не є прозорими) і знову натиснути кнопку добавити. Необов’язкове поле “Общий вид” заповнюється ескізним проектом або фотографією вже готового замовлення.
Кнопка “Учет изделий” відкриває форму виробів. Ця форма зображена на рисунку 6.
Рисунок 6 – форма виробів
Аналогічно заповнюється таблиця виробів: натиснути кнопку добавити, ввести номер виробу, його найменування, складність та загальний вигляд (необоовязкове поле), знову натиснути кнопку добавити.
Кнопка “Адмініструвати калькуляцію” відкриває форму калькуляції, що дозволяє повязувати між собою договора, вироби та матеріали. Вона зображена на рисунку 7.
Рисунок 7 – форма калькуляції
Нові записи добавляються аналогічно попередньо розглянутим формам. Крім кнопок добавити та вийти є ще кнопки ціна та клонувати. Кнопка ціна дозволяє запам’ятати ті значення ціни вказаного матеріалу, які він мав на момент створення елементу калькуляції. Ця кнопка стає активною відразу після того як буде добавлений або змінений матеріал і перестає бути активною після її натискання. Усі поля цін не можуть бути заповнені вручну. Поточні ціни матеріалу заповнюються автоматично відразу після введення номеру матеріалу, а закупові ціни отримують своє значення при натисканні кнопки цна. Кнопка клонувати дозволяє створити новий запис із такими параметрами, як у запису, що клонується, для подальшої зміни, наприклад, номеру договору. Вона полегшує процес створення нових записів, сожих на вже існуючі. Кнопка “Администрировать материалы” відкриває форму матеріали, що дозволяє вводити нові записи для матеріалів, аналогічно іншим формам. Також ця форма використовується для зміни значень деяких матеріалів, наприклад, для зміни поточної ціни матеріалу. Зовнішній вигляд форми матеріалів показаний на рисунку 8.
Рисунок 8 – форма матеріалів
Кнопка “Отчеты и договоры” відкриває форму “отчетность”, яка поеазана на рисунку 9.
Рисунок 9 – форма “отчетность”
Форма “отчетность“ має парні кнопки, що дозволяють продивлятися та зберігати й відправляти на друк наступні звіти: звіт по виробу (рисунок 10), звіт по матеріалу (рисунок 11), звіт по договорах за фамілією (рисунок 12) чи Ф.І.П. клієнта (рисунок 13), та сам договір на придбання виробів у фірми (рисунок 14).
Рисунок 10 – вхідні дані для звіту по виробам
Рисунок 11 – вхідні дані для звіту по матеріалам
Рисунок 12 – вхідні дані для звіту по договорам по фамілії
Рисунок 13 – вхідні дані для звіту по договорам по Ф.І.П.
Рисунок 14 – вхідні дані для отримання документу договору за номером договору
|