Курсовая работа: Меблева фірма розробка бази даних
Название: Меблева фірма розробка бази даних Раздел: Рефераты по информатике Тип: курсовая работа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Анотація Курсова робота присвячена розробці бази даних для меблевої фірми. В ній проводяться обстеження і аналіз предметної області та будуються концептуальна, логічна та фізична моделі цієї бази даних. При написанні програмного коду, що обслуговує базу даних, використовується мова програмування 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 – Таблиця відповідності потоків даних фірми
в) Створюємо діаграму потоків даних фірми другого рівня Укладення договору розбивається на створення договору (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 – Відповідність моделей для таблиці Договір
Таблиця відповідності логічної та фізичної моделей для таблиці Вироби зображена у таблиці 2.3. Таблиця 2.3 – Відповідність моделей для таблиці Вироби
Таблиця відповідності логічної та фізичної моделей для таблиці Матеріал зображена у таблиці 2.4. Таблиця 2.4 – Відповідність моделей для таблиці Матеріал
Таблиця відповідності логічної та фізичної моделей для таблиці ДИМ зображена у таблиці 2.5. Таблица 2.5 – Відповідність моделей для таблиці ДИМ
Таблиця відповідності логічної та фізичної моделей для таблиці Замовник зображена у таблиці 2.6. Таблиця 2.6 – Відповідність моделей для таблиці Замовник
Таблиця відповідності логічної та фізичної моделей для таблиці Юридична особа зображена у таблиці 2.7. Таблиця 2.7 – Відповідність моделей для таблиці Юридична особа
Таблиця відповідності логічної та фізичної моделей для таблиці Фізична особа зображена у таблиці 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 – вхідні дані для отримання документу договору за номером договору |