Содержание
Введение
1. Анализ и выбор средств разработки информационной системы
1.1 Краткая характеристика предприятия
1.2 Литературный обзор средств проектирование базы данных
1.3 Анализ сред разработки программ ввода / вывода
2. Разработка структуры базы данных и пользовательского интерфейса
2.1 Разработка структуры базы данных
2.2 Реализация базы данных с помощью программы «Денвер 2»
3. Разработка подсистемы ввода / вывода и генерации отчетов для автоматизированной информационной системы
3.1 Программы ввода / вывода информации
3.2 Режим администрирования
3.3 Генерация отчетов
Заключение
Список используемых источников
Приложения
Введение
Современная жизнь немыслима без эффективного управления. Важной категорией являются системы обработки информации, от которых во многом зависит эффективность работы любого предприятия или учреждения. Для ведения учета при большом объеме наименований, очень актуальной становится возможность хранения информации в базе данных, а так как иногда необходимо контролировать и управлять информацией за пределами предприятия, – эта база должна поддерживать удаленное администрирование.
Данное решение будет являться очень удобным и полезным для организации ОАО «Токаревский «Мясокомбинат»», так как оно поможет избежать неудобности поиска данных о том или ином наименовании. Сегодня на компьютерах применяется новое поколение программного обеспечения, которое буквально революционизировало работу пользователей. Довольно распространено мнение, что, новые системы являются более «дружественными» и облегчают жизнь людей.
Цель дипломной работы – разработка автоматизированной информационной системы управления взаимоотношениями с клиентами для ОАО «Токаревский «Мясокомбинат»».
Задачи дипломной работы:
проанализировать информационные потоки;
разработать структуру базы данных;
произвести заполнение базы данных необходимой информацией;
разработать подсистему ввода / вывода данных;
разработать подсистему удаления ранее введенных данных;
разработать программы, которые осуществляют поиск информации в базе данных по определенному критерию.
Актуальность и практическая значимость предлагаемой работы заключаются в решении проблем, связанных с созданием оптимальной структуры хранения информации и программ ввода / вывода данных для автоматизированной информационной системы.
Объектом исследования является управления взаимонотношениями с клиентами ОАО «Токаревский «Мясокомбинат»».
Предмет анализа – автоматизированная система управления взаимоотношениями с клиентами.
Для выполнения поставленных задач была использована документация, предоставленная ОАО «Токаревский «Мясокомбинат»».
1. Анализ и выбор средств разработки информационной системы
1.1 Краткая характеристика предприятия
Открытое акционерное общество ОАО «Токаревский Мясокомбинат» организован в 1953 г. является коммерческой организацией, утверждено в соответствии с Указом Президента Российской Федерации №721 от 01.07.1992 г. на основании Распоряжения Госкомимущества от 11.12.1992 г. №1403, является правопреемником государственного предприятия комбината мясоптица «Токаревский»
Первый директор Рогудеев Николай Иванович. Сейчас возглавляет генеральный директор Лобаков Валериан Александрович.
Общество действует в соответствии с Федеральным законом «Об акционерных обществах» иным действующим законодательством РФ и настоящим Уставом. Уставной капитал общества составляет 100940 рублей. Количество акционеров – 193 человека, обладающие в совокупности акциями в количестве 10094 штуки.
Место нахождения: Тамбовская область, пгт. Токаревка, ул. Трудовая 69. Общество имеет гражданские права и исполняет обязанности, необходимые для осуществления любых видов деятельности не запрещенных действующим законодательством РФ.
Основными видами деятельности общества является:
закупка скота, птиц и другого сельскохозяйственного сырья в коллективных, государственных фермерских и индивидуальных хозяйствах;
Переработка сельскохозяйственного сырья;
Производство товаров народного потребления: мясо, мясные полуфабрикаты, колбасные изделия.
Общество может также осуществлять и другие виды деятельности, в том числе торговую, торгово-посредническую, закупочную и сбытовую деятельность. Общество является юридическим лицом с момента его регистрации. Общество в установленном законодательвом РФ порядке осуществляет свою производственно-хозяйственную деятельность, а также социальное развитие коллектива работников, устанавливает цены на производимую продукцию и оказываемые услуги, определяет формы и размеры заработной платы работников.
Заготовка сырья ведется в основном в Токаревском районе. Снабжение теплом и холодом производится от собственной котельной, компрессорного цеха. Сбыт продукции осуществляется через магазины мясокомбинат
ОАО «Токаревский «Мясокомбинат»» постоянно работает над повышением своего уровня. Много времени уделяется повышению квалификации своих сотрудников, подбору хорошей компьютерной техники, обеспечение удобства для клиентов, а также информационной поддержке клиентов. Для более мобильной работы с клиентами установлен выход в Интернет и существует своя электронная почта. С помощью хорошего оснащения предприятия, вы всегда сможете получить достоверную информацию по интересующим вопросам.
1.2 Литературный обзор средств проектирование базы данных
Среди наиболее ярких представителей систем управления базами данных можно отметить: Lotus Approach, Borland dBase, Borland Paradox, Microsoft Visual FoxPro, Microsoft Visual Basic, а также баз данных Microsoft SQL Server и Oracle, используемые в приложениях, построенных по технологии «клиент-сервер»1.
Компания Oracle проникла на российский рынок более десяти лет назад, и продукция этой фирмы хорошо известна. Oracle7 это реляционная СУБД и семейство продуктов, обеспечивающих создание автоматизированных и информационных систем различного назначения. В состав семейства входят: СУБД Oracle7 RDBMS, средства проектирования приложений CDE CASE (Designer/2000), средства разработки приложений CDE Tools (Developer/2000), средства конечного пользователя, средства интерфейса с программными продуктами третьих фирм, коммуникационные средства и так далее.
Общие функциональные возможности версия 7.3 сервера Oracle содержит ряд функциональных новшеств, направленных как на расширение возможностей разработчиков приложений, так и на развитие возможностей самой системы по обслуживанию большого числа одновременных пользователей. Oracle устроен так, что разработчик приложений может не заботиться об эффектах многопользовательского режима работы. Сервер сам обеспечивает все необходимые блокировки (хотя позволяет выпонять их и «вручную»), причем осуществляет их всегда на минимально возможном уровне: скажем при изменении записи только эта запись, и будет заблокирована от изменений другими пользователями (до завершения транзакции). В Oracle необходимость обеспечения блокировок учитывается уже в организации хранения данных, а сам этот механизм является неотъемлемой частью ядра сервера, «переплетаясь» со всеми его внутренними алгоритмами.
Функциональные новшества в Oracle 7.3 появилась возможность читать и писать поля таблиц типа Long по частям (на уровне Oracle Call Interface), что, безусловно полезно, ибо размер таких полей может доходить до 2 Гбайт. Расширился набор типов представлений (views), для которых допускается их непосредственная модификация. Появился ряд новшеств в языке PL/SQL (процедурном расширении SQL), самое заметное из которых – поддержка таблиц, хранимых в памяти сервера. Новые алгоритмы обработки запросов. Выполнение SQL запроса – особенно имеющего сложную структуру – обычно распадается на несколько взаимосвязанных операций. Само это разбиение, а тем более выбор методов выполнения операций, как правило, допускают множество альтернативных решений. Выбор оптимальной их комбинации – задача оптимизатора, который на основании, как характера запроса, так и имеющейся информации о задействованных таблицах и индексах, наличии тех или иных системных ресурсов (в Oracle 7.3 расширен набор видов предоставляемой оптимизатору информации: теперь он может учитывать частотные гистограммы индексируемых полей) строит оценку стоимости разных вариантов решения.2
Oracle традиционно славится как поставщик СУБД для крупных инсталляций, однако в связи с этим бытует (и активно поддерживается конкурентами) также и мнение о том, что для небольших систем Oracle слишком тяжеловесен, сложен, дорог и пр. Oracle прикладывает немало усилий, чтобы по всем параметрам включая цены утвердиться в качестве основного поставщика во всех сегментах рынка СУБД, начиная с небольших рабочих групп.
В отличие от Oracle 7 восьмая версия сервера Oracle не просто предоставляет расширенный набор встроенных типов данных, но и позволяет конструировать новые типы данных со спецификацией методов доступа к ним. Это означает фактически, что разработчики получают в руки не просто систему для хранения и обработки, скажем, видеоданных (что, понятно, нужно далеко не в каждом приложении), а и инструмент, позволяющий строить структурированные типы данных, непосредственно отображающие сущности предметной области. Влияние этого фактора на возможности разработчиков можно сравнить с эффектом от перехода на реляционные СУБД в начале 80 х годов. Oracle8 фактически опирается на новый стандарт SQL, позволяющий описывать определения новых типов объектов, состоящих из атрибутов (скалярных – т.е. других типов, множеств объектов, ссылок на объекты), и обладающих ассоциированными с ним методами. Любая колонка таблицы может быть любого типа, поддерживаются также вложенные таблицы и массивы объектов переменной длины.3
SQL является инструментом, предназначенным для обработки и чтения данных, содержащихся в компьютерной базе данных. SQL – это сокращенное название структурированного языка запросов (Structured Query Language). Как следует из названия, SQL является языком программирования, который применяется для организации взаимодействия пользователя с базой данных. На самом деле SQL работает только с базами данных одного определенного типа, называемых реляционными. На рисунке 1 изображена схема работы SQL. 4
Рисунок 1. Схема работы SQL
Согласно этой схеме, в вычислительной системе имеется база данных, в которой хранится важная информация. В базе данных на персональном компьютере может храниться различная информация. Компьютерная программа, которая управляет базой данных, называется системой управления базой данных, или СУБД.
Если пользователю необходимо прочитать данные из базы данных, он запрашивает их у СУБД с помощью SQL. СУБД обрабатывает запрос, находит требуемые данные и посылает их пользователю. Процесс запрашивания данных и получения результата называется запросом к базе данных: отсюда и название – структурированный язык запросов.
Однако это название не совсем соответствует действительности. Во-первых, сегодня SQL представляет собой нечто гораздо большее, чем простой инструмент создания запросов, хотя именно для этого он и был первоначально предназначен. Несмотря на то, что чтение данных по-прежнему остается одной из наиболее важных функций SQL, сейчас этот язык используется для реализации всех функциональных возможностей, которые СУБД предоставляет пользователю, а именно:
организация данных: SQL дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами базы данных.
чтение данных: SQL дает пользователю или приложению возможность читать из базы данных содержащиеся в ней данные и пользоваться ими.
обработка данных: SQL дает пользователю или приложению возможность изменять базу данных, то есть добавлять в нее новые данные, а также удалять или обновлять уже имеющиеся в ней данные.
управление доступом: с помощью SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.
совместное использование данных: SQL координирует совместное использование данных пользователями, работающими параллельно, чтобы они не мешали друг другу.
целостность данных: SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы.5
Таким образом, SQL является достаточно мощным языком для взаимодействия с СУБД.
Во-вторых, SQL – это не полноценный компьютерный язык типа COBOL, FORTRAN или С. В SQL нет оператора IF для проверки условий, нет оператора GOTO для организации переходов и нет операторов DO или FOR для создания циклов. SQL является подъязыком баз данных, в который входит около тридцати операторов, предназначенных для управления базами данных. Операторы SQL встраиваются в базовый язык, например COBOL, FORTRAN или С, и дают возможность получать доступ к базам данных. Кроме того, из такого языка, как С, операторы SQL можно посылать СУБД в явном виде, используя интерфейс вызовов функций.
Несмотря на не совсем точное название, SQL на сегодняшний день является единственным стандартным языком для работы с реляционными базами данных. SQL – это достаточно мощный и в то же время относительно легкий для изучения язык.
SQL – это легкий для понимания язык и в то же время универсальное программное средство управления данными.
Успех языку SQL принесли следующие его особенности:
независимость от конкретных СУБД;
переносимость с одной вычислительной системы на другую;
наличие стандартов;
одобрение компанией IBM (СУБД DB2);
поддержка со стороны компании Microsoft (протокол ODBC);
реляционная основа;
высокоуровневая структура, напоминающая английский язык;
возможность выполнения специальных интерактивных запросов:
обеспечение программного доступа к базам данных;
возможность различного представления данных;
полноценность как языка, предназначенного для работы с базами данных;
возможность динамического определения данных;
поддержка архитектуры клиент / сервер.6
Все перечисленные выше факторы явились причиной того, что SQL стал стандартным инструментом для управления данными на персональных компьютерах, мини-компьютерах и больших ЭВМ.
1.3 Анализ сред разработки программ ввода / вывода
Существует несколько языков программирования для практического применения, извлечения данных из СУБД и генерирования отчетов.
Такими языками, к примеру, являются Perl, PHP, JAVA и ASP.
Рассмотрим некоторые черты этих языков в общем, сравнении друг с другом: РНР, PERL и Java.
Вообще говоря, различают язык Java и технологию Java. Язык Java представляет собой С-подобный язык, который разрабатывался как «улучшенный C++». Технология Java включает в себя клиентскую и серверную часть, а также доступ к базам данных, поэтому наиболее корректно проводить сравнение технологии Java со связкой Apache/PHP/MySQL. Технология Java разрабатывалась как межплатформенная технология, позволяющая создавать Web приложения корпоративного масштаба. Основными достоинствами этой технологии являются межплатформенная переносимость и объектно-ориентированный язык, что позволяет создавать сложные и объемные приложения. К числу недостатков можно отнести медленное выполнение, потребление большого количества памяти (плата за межплатформенную переносимость) и сложность разработки Web приложений по сравнению с РНР или Perl. Между тем РНР и PERL почти не уступают Java в гибкости и масштабируемости созданных приложений. Кроме того, использование Java для разработки достаточно простых приложений вряд ли оправдано, а при работе над серьезными задачами Java обходится дороже.7
PERL и ASP.NET
ASP (Active Server Pages) – язык сценариев от Microsoft. Основное достоинство ASP.NET заключается в возможности применения всей мощи интерфейса Windows для разработки Web приложений. Это позволяет разрабатывать страницы со сложным интерфейсом, не заботясь о сохранении, шифровании и передаче переменных, используемых на динамических страницах.8
Код Web приложения на ASP.NET компилируется в промежуточный язык MSIL (Microsoft Intermediate Language), иногда просто называемый IL. Аппаратно-независимый код на языке IL помещается в кэш Web сервера для повышения производительности, по аналоги с байт-кодом Java. Но в отличие от технологии Java, обеспечивающей платформенную независимость, NET обеспечивает независимость от языка разработки. Выполнение Web приложений ASP.NET на серверах, работающих не под Windows, практически невозможно. Поэтому в смысле переносимости PERL, безусловно, отличается от ASP.NET в лучшую сторону. Другой крайне немаловажный довод в пользу PERL заключается в быстром исправлении обнаруженных ошибок. Теоретически исправить их можно самостоятельно, если обладаете достаточной квалификацией. Таким образом, при выборе между ASP.NET и PERL следует исходить из стоящей задачи. Если в сети Интранет крупной корпорации большинство серверов и клиентских машин работают под управлением Windows, применение ASP.NET более чем оправдано. В то же время для разработки Web сайта, размещаемого в Интернете, целесообразнее использовать PERL.9
Я реализовал модули для АИС «Отдела сбыта» на языке программирования Perl (Practical Extraction and Report Language – Практический язык извлечений и отчетов).
Язык программирования Perl был выбран мною не случайно.
Perl – это интерпретируемый язык, оптимизированный для просмотра содержимого текстовых файлов, выделения из них информации и генерирования отчетов на основе этой информации, а также просто хороший язык для выполнения многих задач системного администрирования. Он обладает большим набором преимуществ как язык сценариев общего назначения, которые проявляются через его характерные черты и возможности.
Первым в цепочке достоинств языка Perl можно назвать его интерпретируемость. Если вспомнить, для чего он предназначен – задач администрирования и обработки текстовых файлов – небольших по размерам сценариев, решающих нетрадиционные задачи, для программирования которых могло бы потребоваться взаимодействие нескольких специализированных языков. Разработка подобных решений с помощью компилируемых языков программирования потребовала бы на много больше времени, чем использование одного интерпретируемого: ведь цикл разработки программ на таком языке короче и проще, чем на компилируемом. Мы постепенно создаем программу, добавляя, необходимые операторы, и сразу же получаем результаты, когда она завершена: интерпретатор perl постепенно компилирует все операторы во внутренний байт-код и программа готова к выполнению, как только в ней поставлена последняя точка (точнее точка с запятой, завершающая последний оператор).
Суммируя все сказанное, можно заключить, что Perl позволяет легко и быстро получить требуемое решение задачи, сочетая в себе элементы компилируемых и интерпретируемых языков программирования. Это несравненный плюс языка программирования Perl для решения задачи написания программы ввода / вывода данных и генераций отчетов для АИС управления и взаимоотношения с клиентами так как каждый модуль не велик по объёму, но требует быстрого взаимодействия с таблицами БД.
2. Разработка структуры базы данных и пользовательского интерфейса2.1 Разработка структуры базы данных
Нормализация – процесс, в результате которого можно избавиться от дефектов проектирования базы данных. В процессе нормализации мы, получаем ряд нормальных форм, используя набор правил, описывающих то, что следует, и что не следует делать со структурой нашей таблицы. Процесс нормализации состоит из разбиения таблиц на меньшие, в результате чего формируется лучшая структура.
Чтобы выполнить нормализацию, структура базы данных последовательно приводится к различным формам. Вообще говоря, каждая последующая форма относится и предыдущей категории. Например, чтобы схема базы данных соответствовала второй нормальной форме, она должна также соответствовать и первой нормальной форме. Чтобы схема соответствовала третьей нормальной форме, она должна соответствовать и второй нормальной форме, и т.д. На каждой стадии добавляется все больше правил, которым должна соответствовать схема.
Первая нормальная форма требует, чтобы каждое значение атрибута или столбца было атомарным. Это значит, что каждый атрибут должен содержать единственное значение, а не множество значений или другую строку базы данных.
Рассмотрим таблицу 1.
Таблица 1. Client
id | f_sob | fio | otv | ur_adr | fiz_adr | tel | vid_doc |
3 | Физ. лицо | Аверин А.С. | Леонов А.Ю. | 8 Марта 38 | Советская 45 | 2–24–09 | Вод. удост. |
2 | Физ. лицо | Петров П.П. | Синегубов М.С. | Калинина 4 | Пролеткая 24 | 72–80–21 | Воен. билет |
5 | Юр. лицо | Ронжин Д.С. | Карикова Т.Н. | Пролет-кая 20 | Маяков-го 150 | 55–12–33 | паспорт |
Это – ненормализованная версия таблицы клиент. Как видите, здесь размешены такие столбцы как form_sob, vid_doc, которые надо привести к первой нормальной форме. Чтобы привести схему к первой нормальной форме, необходимо в столбце товар, покупатели и форма расчета разместить атомарные значения. Это можно сделать различными способами. Первая, наверное, самая очевидная возможность, показана в таблице 2.
Таблица 2. Client
id | Id_f_sb | fio | otv | ur_adr | fiz_adr | tel | Id_v_dc |
3 | 2 | Аверин А.С. | Леонов А.Ю. | 8 Марта 38 | Советская 45 | 2–24–09 | 3 |
2 | 2 | Петров П.П. | Синегубов М.С. | Калинина 4 | Пролетарская 24 | 72–80–21 | 2 |
5 | 1 | Ронжин Д.С. | Карикова Т.Н. | Пролетарская 20 | Маяковского 150 | 55–12–33 | 1 |
В данной таблице мы выделили по одной строке на каждый элемент в столбцах форма собственности, вид документа. Это решение далеко от идеального, по сколько оно порождает очевидную избыточность данных. Лучший и самый правильный вариант приведения наших данных к нормальной форме показан на рисунке 2.
В этом случае мы выделили данные формы собственности в отдельную таблицу, что позволяет решить проблему избыточности.
После приведения схемы к нормальной форме можно перейти к формам старших порядков, которые немного труднее для понимания. Говорят, что схема находится во второй нормальной форме, если все атрибуты, не являющиеся частью первичного ключа, а сама схема уже находится в первой нормальной форме. Что это значит? Это значит, что каждый атрибут, не является ключом, должен функционально зависеть от всех составляющих ключа. Так, если первичный ключ составлен из нескольких столбцов, то всякий другой атрибут в таблице должен зависеть от комбинации всех этих столбцов.
Рисунок 2 – Нормализация Базы данных
В таблице 2 Client имеет по одной строке на каждый элемент квалификации типов. Таблица находится в первой нормальной форме, но не удовлетворяет второй нормальной форме. Другими словами, мы можем определить наименование vid_doc, используя только кодовый номер типа (Id_vid_doc). Это значит, что указанные атрибуты функционально зависимы только от части первичного ключа, а не от всего первичного ключа. Таким образом, я могу определить эти атрибуты по части первичного ключа, и для этого совсем не нужен весь первичный ключ. Следовательно, указанная схема не находится во второй нормальной форме.
Чтобы привести эту схему ко второй нормальной форме необходимо разбить таблицу на такие таблицы, в которых все не ключевые атрибуты будут полностью функционально зависеть от ключа. Очевидно, что в данном случае этого можно достичь, разделив исходную таблицу на две:
client (Id_vid_doc)
Vid_doc (vid)
Пример показан в таблице 3.
Таблица 3. Vid_doc
id | Vid |
1 | Паспорт |
3 | Водительское удостоверение |
2 | Военный билет |
Как уже говорилось, эта схема находится в первой нормальной форме, поскольку все значения являются атомарными. Но она также находится и во второй нормальной форме, по сколько каждый атрибут, не являющийся ключом, теперь функционально зависит от всех частей ключа. Для моей схемы не требуется создавать третью нормальную форму, так как моей работе удовлетворяют две формы, то есть первая нормальная форма и вторая нормальная форма.
2.2 Реализация базы данных с помощью программы «Денвер 2»
В базе данных было решено создать 15 таблицы и назвать её «comb»:
Таблицы базы данных «comb»: client, dan_doc, dog, form_ras, form_sob, men, pam, posher, prod, realiz, sort, upac, vid_doc, vid_posh, vid_pr.
Рассмотрим подробнее структуру каждой из них.
Таблица «client» состоит из 8 полей. В первом храниться уникальный идентификатор записи, имя поля «ID» тип Smallint. Это поле является первичным ключом таблицы. Второе поле «id_form_sob» содержит информацию о форме собственности и является индексным полем в таблице, тип Smallint. Третье поле «fio» это поле содержит информацию о клиенте, тип Varshar. Четвёртое поле «otv» это поле содержит ответсвенное лицо клиента, тип Varchar. Пятое поле «ur_adr» содержит юридический адрес, тип Varchar. Шестое поле «fiz_adr» содержит физический адрес, тип Varchar. Седьмое поле «tel» содержит номер телефона клиента, тип Varchar. Восьмое поле «id_vid_doc» содержит информацию о виде документа и является индексным полем в таблице, тип Smallint. Пример программы приведен на рисунке 3 и рисунке 4.
Рисунок 3 – Структура таблицы «client»
Рисунок 4 – Таблица «client»
Таблица «form_sob» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «client». Второе поле «form» содержит форму собственности. Пример программы приведен на рисунке 5 и рисунке 6.
Рисунок 5 – Структура таблицы «form_sob»
Рисунок 6 – Таблица «form_sob»
Таблица «vid_doc» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «client». Второе поле «vid» содержит вид документа. Пример программы приведен на рисунке 7 и рисунке 8.
Рисунок 7 – Структура таблицы «vid_doc»
Рисунок 8 – Таблица «vid_doc»
Таблицы «prod» состоит из 9 полей. Первое поле «ID» содержит уникальный идентификатор записи имя поля «id» тип Smallint. Второе поле «id_vid_pr» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «vid_pr», тип Smallint. Третье поле «naz» содержит название продукции, тип Varchar. Четвертое поле «id_upac» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «upac», тип Smallint. Пятое поле «id_sort» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «sort», тип Smallint. Шестое поле «data» содержит дату продукции, тип Varchar. Седьмое поле «sroc» содержит срок годности продукции, тип Varchar. Восьмое поле «cena» содержит цену продукции, тип Varchar. Девятое поле «kol» содердит количество продукции, тип Varchar. Пример программы приведен на рисунке 9 и рисунке 10.
Рисунок 9 – Структура таблицы «prod»
Рисунок 10 – Таблица «prod»
Таблица «vid_pr» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «prod». Второе поле «vid_pr» содержит вид продукции, тип Varshar. Пример программы приведен на рисунке 11 и рисунке 12.
Рисунок 11 – Структура таблицы «vid_pr»
Рисунок 12 – Таблица «vid_pr»
Таблица «upac» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «prod». Второе поле «upack» содержит вид упаковки, тип Varshar. Пример программы приведен на рисунке 13 и рисунке 14.
Рисунок 13 – Структура таблицы «upac»
Рисунок 14 – Таблица «upac»
Таблица «sort» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «prod». Второе поле «sor» содержит сорт продукции, тип Varshar. Пример программы приведен на рисунке 15 и рисунке 16.
Рисунок 15 – Структура таблицы «sort»
Рисунок 16 – Таблица «sort»
Таблица «men» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор записи, имя поля «id» тип Smallint. Второе поле «fio1» содержит Ф.И.О. менеджера, тип Varshar. Пример программы приведен на рисунке 17 и рисунке 18.
Рисунок 17 – Структура таблицы «men»
Рисунок 18 – Таблица «men»
Таблица «posher» состоит из 4 полей. Первое поле «ID» содержит уникальный идентификатор записи, имя поля «id» тип Smallint. Второе поле «id_client» содержит Ф.И.О. клиента и является индексным полем в таблице, тип Smallint. Третье поле «id_vid_posh» содержит вид поощрения и является индексным полем в таблице, тип Smallint. Четвертое поле «data» содержит дату, когда поощрить, тип Varshar. Пример программы приведен на рисунке 19 и рисунке 20.
Рисунок 19 – Структура таблицы «posher»
Рисунок 20 – Таблица «posher»
Таблица «vid_posh» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «posher». Второе поле «posh» содержит вид поощрений, тип Varshar. Пример программы приведен на рисунке 21 и рисунке 22.
Рисунок 21 – Структура таблицы «vid_posh»
Рисунок 22 – Таблица «vid_posher»
Таблица «dan_doc» состоит из 6 полей. Первое поле «ID» содержит уникальный идентификатор записи, имя поля «id» тип Smallint. Второе поле «id_vid_doc» содержит вид документа и является индексным полем в таблице, тип Smallint. Третье поле «cer» содержит серию документа, тип Varshar. Четвертое поле «data» содержит дату выдачи документа, тип Varshar. Пятое поле «mest» содержит место выдачи документа, тип Varshar. Шестое поле «kem» содержит, кем выдан документ, тип Varshar. Пример программы приведен на рисунке 23 и рисунке 24.
Рисунок 23 – Структура таблицы «dan_doc»
Рисунок 24 – Таблица «dan_doc»
Таблица «dog» состоит из 5 полей. Первое поле «ID» содержит уникальный идентификатор записи, имя поля «id» тип Smallint. Второе поле «pred» содержит предмет договора, тип Varshar. Третье поле «otv» содержит, ответсвенное лицо договора, тип Varshar. Четвертое поле «id_form_ras» содержит, уникальный идентификатор записи, имя поля «id» тип Smallint. Пятое поле «data» содержит дату подписания договора, тип Varshar. Пример программы приведен на рисунке 25 и рисунке 26.
Рисунок 25 – Структура таблицы «dog»
Рисунок 26 – Таблица «dog»
Таблица «form_ras» состоит из 2 полей. Первое поле «ID» содержит уникальный идентификатор, по которому происходит связь с индексом «id» таблицы «dog». Второе поле «form» содержит форму расчета, тип Varshar. Пример программы приведен на рисунке 27 и рисунке 28.
Рисунок 27 – Структура таблицы «form_ras»
Рисунок 28 – Таблица «form_ras»
Таблица «pam» состоит из 5 полей. Первое поле «ID» содержит уникальный идентификатор записи, имя поля «id» тип Smallint. Второе поле «id_men» содержит, уникальный идентификатор записи, имя поля «id» тип Smallint. Третье поле «id_client» содержит, уникальный идентификатор записи, имя поля «id» тип Smallint. Четвертое поле «data» содержит, дату паятных дат, тип Varshar. Пятое поле «prim» содержит, примечание, тип Varshar. Пример программы приведен на рисунке 29 и рисунке 30.
Рисунок 29 – Структура таблицы «pam»
Рисунок 30 – Таблица «pam»
Таблица «realiz» состоит из 7 полей. В первом храниться уникальный идентификатор записи, имя поля «ID» тип Smallint. Это поле является первичным ключом таблицы. Второе поле «id_men» содержит информацию о менеджере и является индексным полем в таблице, тип Smallint. Третье поле «id_client» содержит информацию о клиенте и является индексным полем в таблице, тип Smallint. Четвёртое поле «id_vid_pr» содержит вид продукции и является индексным полем в таблице, тип Smallint. Пятое поле «id_dog» содержит информацию о договоре и является индексным полем в таблице, тип Smallint. Шестое поле «data» содержит дату когда реализовали товар, тип Varchar. Седьмое поле «kol» содержит количество реализованной продукции, тип Varchar. Пример программы приведен на рисунке 31 и рисунке 32.
Рисунок 31 – Структура таблицы «realiz»
Рисунок 32 – Таблица «realiz»
3 Разработка подсистемы ввода / вывода и генерации отчетов для автоматизированной информационной системы.
Вся часть состоит из нескольких программных продуктов ввода / вывода данных и генераций отчетов:
«Администрирование» – позволяет добавлять в базу данных готовые проекты и удалять их.
«Программы вывода информации из базы данных» – интерфейс позволяет просматривать всю информацию, содержащуюся в базе данных.
«Поиск» – интерфейс позволяет осуществлять поиск данных, в таблицах базы данных, генерирует отчеты на основе запросов пользователя в базе данных.
3.1 Программы ввода / вывода информации
Пользовательский интерфейс должен быть в первую очередь прост и интуитивно понятен пользователю с любым уровнем знаний персонального компьютера. Проектируя главную HTML – форму интерфейса к базе данных, я постаралась включить в неё все самое необходимое.
HTML – форма содержит 10 ссылок, при помощи которых вы можете управлять различными частями базы: клиент, продукция, реализация, договор, данные о документе, поощрения, памятные даты, добавление, поиск, удаление.
Пример приведен на рисунке 33.
Рисунок 33. Главная web форма
Расположение элементов управления в левой части ускоряет работу пользователя.
Теперь подробнее рассмотрим файл index_1.html:
<html><head><title>База Токаревского мясокомбината </title></head>
Задаем количество столбцов.
<frameset cols= «280,*» border=1 frameborder=no framespacing=0>
Путь к левой части фрейма
<frame marginheight= «15» marginwidht= «10» name= «left» src= «1.html» scrolling= «no» noresize>
Путь к правой части фрейма
<frame name= «right» src= «2.html» scrolling= «no» noresize>
</framest>
</html>
Рассмотрим файл 1.html:
<html><head><title>Токаревский Мясокомбинат</title>
Создаем стиль ссылок без подчёркивания.
<style>
a {text-decoration:none;}
h3 {font-size:14pt;}
</style></head>
Задаётся стиль оформления страницы.
<body bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
<img src=»/combin/image/2.png»>
Надпись управление данными сделана с помощью фильтра Shadow.
<DIV style= «height: 65; width: 250; filter: Shadow (Color = red, Direction=24)»>
<font style= «FONT-SIZE: 19pt» color=yellow>Управление данными</font></div>
Создается таблица для элементов управления.
<table><tr><td align= «center»><font style= «font-size:17pt» face= «Monotype corsiva»><a href=»/cgi-bin/kl.pl» target= «right»>**Клиент**</a></font></td></tr> <tr><td align= «center»><font style= «font-size:17pt» face= «Monotype corsiva»><a href=»/cgi-bin/pr.pl» target= «right»>**Продукция**</a></font></td></tr>
<tr><td align= «center»><font style= «font-size:17pt» face= «Monotype corsiva»><a href=»/cgi-bin/real.pl» target= «right»>**Реализация**</a></font></td></tr>
<tr><td align= «center»><font style= «font-size:17pt» face= «Monotype corsiva»><a href=»/cgi-bin/dog.pl» target= «right»>**Договор**</a></font></td></tr>
<tr><td align= «center»><font style= «font-size:17pt» face= «Monotype corsiva»><a href=»/cgi-bin/dan_doc.pl» target= «right»>**Данные о документе** </a></font> </td> </tr>
<tr><td align= «center»><font style= «font-size:17pt» face= «Monotype corsiva»><a href=»/cgi-bin/posh.pl» target= «right»>**Поощрения**</a></font></td></tr>
Рассмотрим подробнее файл 2.html:
<html><head><title>Токаревский Мясокомбинат</title>
Cоздаеться стиль ссылок без подчёркивания.
<style>
a {text-decoration:none;}
h3 {font-size:9pt; color:0099CC}
</style></head>
Задаётся стиль оформления страницы.
<body bgcolor= «black»><center>
<br><img src=»/combin/image/1.gif»>
<img src=»/combin/image/1.jpg» width=800 height=500>
Создание таблицы о местонахождение и телефона организации.
<table><tr><td><h3>| Телефон: +7 (47557) 21274, |</h3></td>
<td></td><td><h3>| Почтовый индекс: 393550 |</h3></td>
<td></td><td><h3>| Регион: Тамбовская область |</h3></td>
<td></td><td><h3>| Федеральный округ: Центральный ФО |</h3></td></tr></table>
<marquee><h3>Разработчик: Садовников Алексей 313 группа </h3></marquee></body></html>
«Клиент». Пример формы приведен на рисунке 34.
Рисунок 34. Форма «Клиент»
Для того чтобы узнать про клиента адрес телефон и др. нужно в левой части экрана нажать на ссылку «клиент».
В правой части экрана появится информация о клиенте.
Рассмотрим фрагмент кода:
#Выбор значений из таблицы клиент
$const=«SELECT form, fio, otv, ur_adr, fiz_adr, tel, vid
FROM form_sob, client, vid_doc
WHERE form_sob.id=client.id_form_sob and vid_doc.id = client.id_vid_doc»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
Надпись Клиент сделана с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow >Клиент </font></div>
Полный системный код «Клиент» приведен в приложение A.
«Продукция». Пример формы приведен на рисунке 35.
Рисунок 35. Форма «Продукция»
Для того чтобы узнать вид продукции, упаковку, дату производства нужно в левой части экрана нажать на ссылку «Продукция».
В правой части экрана появится информация о продукции.
Рассмотрим фрагмент кода:
#Выбор значений из таблицы продукция
$const=«SELECT vid_pr, naz, upack, sor, data, sroc, cena, kol FROM vid_pr, upac, sort, prod
WHERE vid_pr.id=prod.id_vid_pr and upac.id=prod.id_upac and sort.id=prod.id_sort»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
Надпись Продукция сделана с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 350; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Продукция </font></div>
Полный системный код «Продукция» приведен в приложение Б.
«Реализация». Пример формы приведен на рисунке 36.
Рисунок 36. Форма «Реализация»
Для того чтобы узнать, кому, когда и кто реализовал продукцию нужно в левой части экрана нажать на ссылку «Реализация».
В правой части экрана появится информация об реализации продукции.
Рассмотрим фрагмент кода:
#Выбор значений из таблицы реализация продукции
$const=«SELECTmen.fio1, client.fio, vid_pr.vid_pr, dog. pred, realiz.data, realiz.kol FROM men, client, vid_pr, dog, realiz
WHERE men.id=realiz.id_men and client.id=realiz.id_client and vid_pr.id=realiz.id_vid_pr and dog.id=realiz.id_dog»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
Надпись Реализация продукции сделана с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Реализация продукции</font></div>
Полный системный код «Реализация» приведен в приложение В.
«Договор». Пример формы приведен на рисунке 37.
Рисунок 37. Форма «Договор»
Для того чтобы узнать предмет доновора дату подписания нужно в левой части экрана нажать на ссылку «Договор».
В правой части экрана появится информация о договоре.
Рассмотрим фрагмент кода:
#Выбор значений из таблицы договор
$const=«SELECT pred, otv, form, data FROM form_ras, dog
WHERE form_ras.id=dog.id_form_ras»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
Надпись Договор сделана с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Договор </font></div>
Полный системный код «Договор» приведен в приложение Г.
«Данные о документе». Пример формы приведен на рисунке 38.
Рисунок 38. Форма «Данные о документе»
Для того чтобы узнать вид документа, кем выдан нужно в левой части экрана нажать на ссылку «Данные о документе».
В правой части экрана появится информация о данных документов.
Рассмотрим фрагмент кода:
#Выбор значений из таблицы данные о документе
$const=«SELECT vid, cer, data, mest, kem FROM vid_doc, dan_doc
WHERE vid_doc.id=dan_doc.id_vid_doc»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
Надпись Данные о документе сделана с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Данные о документе</font></div>
Полный системный код «Данные о документе» приведен в приложение Д.
«Поощрения». Пример формы приведен на рисунке 39.
Рисунок 39. Форма «Поощрения»
Для того чтобы узнать вид поощрения клиента нужно в левой части экрана нажать на ссылку «Поощрения».
В правой части экрана появится информация о поощрениях.
Рассмотрим фрагмент кода:
#Выбор значений из таблицы поощрения
$const=«SELECT fio, posh, data FROM client, vid_posh, posher
WHERE client.id=posher.id_client and vid_posh.id= posher.id_vid_posh»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
Надпись Поощрения сделана с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Поощрение </font></div>
Полный системный код «Поощрения» приведен в приложение Е.
«Памятные даты». Пример формы приведен на рисунке 40.
Рисунок 40. Форма «Памятные даты»
Для того чтобы узнать памятную дату клиента нужно в левой части экрана нажать на ссылку «Памятные даты».
В правой части экрана появится информация о памятных датах.
Рассмотрим фрагмент кода:
#Выбор значений из таблицы памятные даты
$const=«SELECT fio1, fio, data, prim FROM men, client, pam
WHERE men.id=pam.id_men and client.id=pam.id_client»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
Надпись Памятные даты с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Памятные даты </font></div>
Полный системный код «Памятных дат» приведен в приложение Ж.
3.2 Режим администрирования
Этот пункт защищен паролем, от несанкционированного доступа. Для того чтобы пользователь незнающий пароля не смог добавить в базу или удалить из нее информацию.
Пример формы приведен на рисунке 41.
Рисунок 41. «Администирование»
Перед тем как войти в базу появяться два поля для ввода «Логина» и «Пароля». Заполните их и нажмите кнопку «Вход». Если вы ошиблись, нажмите кнопку очистить. Для того чтобы добавить информация в базу данных или удалить из нее нужно в левой части экрана нажать на ссылку «Добавление».
Рассмотрим фрагмент кода:
print <<EOFR;
Задаётся стиль оформления страницы.
<BODY BGCOLOR= «black» TEXT= «green»><center>
Надпись База Токаревского мясокомбината сделана с помощью фильтра Shadow.
<br><DIV style= «height: 140; width: 650; filter: Shadow (Color=red, Direction=300)"><font face= «Monotype Corsiva» size=6 color=yellow>База Токарёвского мясокомбината </font></div>
Надпись Администирование сделана с помощью фильтра Shadow.
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow> Администрирование</font></div>
Верхняя полоска сделана с помощью картинки.
<img src=»/combin/image/3.png»>
<form name='FORM1' action=»/cgi-bin/adm1.pl» method= «post»><br>
Рамка сделана с помощью функции fieldset
<fieldset style= «width: 20%»><legend><font size=6 color= «336699»>Идентификация</font></legend>
Окно для ввода Логина.
<font face= «Ravie» size=5>Login: </font><br>
<input type= «user» size=15 maxlength=15 name= «user»><br>
Окно для ввода Пароля.
<font face= «Ravie» size=5>Password: </font><br>
<input type= «password» size=15 maxlength=15 name= «password»><br>
</fieldset></font><br><br>
Кнопка Вход и Очистка
<input type= «submit» value= «ВХОД» style= «color: blue»> <input type= «reset» value= «ОЧИСТКА» style= «color:blue»>
</form><br></center></BODY></HTML> EOFR exit;
Полный системный код «Администрирование» приведен в приложение З.
Данный пункт подразумевает в себе добавление: клиента, продукцию, реализацию, договор, данные о документе, поощрения, памятные даты. Пример формы приведен на рисунке 42.
Рисунок 42. «Администрирование»
Рассмотрим файл подробнее:
<html><head><title>Токаревский Мясокомбинат</title>
Создание ссылок без подчеркивания.
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style></head>
Задаётся стиль оформления страницы.
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
Верхняя полоска сделана с помощью картинки.
<img src=»/combin/image/4.png»>
Надпись Добавление сделана с помощью фильтра Shadow.
<DIV style= «height: 65; width: 250; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 19pt» color=yellow>Добавление </font></div>
«Добавить клиента». Пример формы приведен на рисунке 43.
Рисунок 43. «Добавить клиента»
Для того чтобы добавить клинта нужно в меню «Добавление» нажать на ссылку «Добавить Клиента».
Появится окно с семью полями обязательными для заполнения: форма собственности – выбирается из списка, клиент, ответственное лицо, юр. адрес, физ. Адрес, телефон, вид документа – выбирается из списка. После того как вы ввели данные нажмите кнопку «Cохранить в базу» или если ошиблись, нажмите кнопку «Очистить». В случае не заполнения данных в поля появится сообщение, что нужно ввести не внесенные данные. Если все данные внесены, верно, то появится сообщение о том, что данные сохранены в базе.
Полный системный код «Добавить клиента» приведен в приложение И.
«Добавить продукцию». Пример формы приведен на рисунке 44.
Рисунок 44. «Добавить продукцию»
Для того чтобы добавить продукцию нужно в меню «Добавление» нажать на ссылку «Добавить продукцию».
Появится окно с восьми полями обязательными для заполнения. Первое поле: вид продукции – выбирается из списка, второе поле: название из чего сделано, третье поле: упаковка – выбираеться из списка, четвертое поле: сорт – выбирается из списка, пятое поле: дата, шестое поле: срок годности, седьмое поле цена, восьмое поле: количество. После того как вы ввели данные нажмите кнопку «Cохранить в базу» или если ошиблись, нажмите кнопку «Очистить». В случае не заполнения данных в поля появится сообщение, что нужно ввести не внесенные данные. Если все данные внесены, верно, то появится сообщение о том, что данные сохранены в базе.
«Добавить реализацию». Пример формы приведен на рисунке 45.
Рисунок 45. «Добавить реализацию»
Для того чтобы добавить реализацию нужно в меню «Добавление» нажать на ссылку «Добавить реализацию».
Появится окно с шестью полями обязательными для заполнения. Первое поле: менеджер – выбирается из списка, второе поле: клиент – выбирается из списка, третье поле: вид продукции – выбирается из списка, четвертое поле: договор – выбирается из списка, пятое поле: дата, шестое поле: количество. После того как вы ввели данные нажмите кнопку «Сохранить в базу» или если ошиблись, нажмите кнопку «Очистить». В случае не заполнения данных в поля появится сообщение, что нужно ввести не внесенные данные. Если все данные внесены, верно, то появится сообщение о том, что данные сохранены в базе.
«Добавить договор». Пример формы приведен на рисунке 46.
Рисунок 46. «Добавить договор»
Для того чтобы добавить договор нужно в меню «Добавление» нажать на ссылку «Добавить договор».
Появится окно с 4 полями обязательными для заполнения: первое поле: предмет договора, второе поле: ответсвенное лицо, третье поле: форма расчета – выбирается из списка, четвертое поле: дата. После того как вы ввели данные нажмите кнопку «Cохранить в базу» или если ошиблись, нажмите кнопку «Очистить». В случае не заполнения данных в поля появится сообщение, что нужно ввести не внесенные данные. Если все данные внесены, верно, то появится сообщение о том, что данные сохранены в базе.
«Добавить данные документа». Пример формы приведен на рисунке 47.
Для того чтобы добавить данные документов нужно в меню «Добавление» нажать на ссылку «Добавить данные документа».
Появится окно с пятью полями обязательными для заполнения: первое поле: вид документа – выбирается из списка, второе поле: серия, третье поле: дата, четвертое поле: место выдачи, пятое поле: кем выдан. После того как вы ввели данные нажмите кнопку «Cохранить в базу» или если ошиблись, нажмите кнопку «Очистить». В случае не заполнения данных в поля появится сообщение, что нужно ввести не внесенные данные. Если все данные внесены, верно, то появится сообщение о том, что данные сохранены в базе.
Рисунок 47. «Добавить данные документа»
«Добавить поощрения». Пример формы приведен на рисунке 48.
Рисунок 48. «Добавить поощрения»
Для того чтобы добавить поощрения нужно в меню «Добавление» нажать на ссылку «Добавить поощрения».
Появится окно с тремя полями обязательными для заполнения: первое поле: клиент – выбирается из списка, второе поле: вид поощрения – выбирается из списка, третье поле: дата. После того как вы ввели данные нажмите кнопку «Cохранить в базу» или если ошиблись, нажмите кнопку «Очистить». В случае не заполнения данных в поля появится сообщение, что нужно ввести не внесенные данные. Если все данные внесены, верно, то появится сообщение о том, что данные сохранены в базе.
«Добавить памятные даты». Пример формы приведен на рисунке 49.
Рисунок 49. «Добавить памятные даты»
Для того чтобы добавить памятные даты нужно в меню «Добавление» нажать на ссылку «Добавить памятные даты».
Появится окно с 4 полями обязательными для заполнения: первое поле: менеджер – выбрать из списка, второе поле: клиент – выбрать из списка, третье поле: дата, четвертое поле: примечание. После того как вы ввели данные нажмите кнопку «Cохранить в базу» или если ошиблись, нажмите кнопку «Очистить». В случае не заполнения данных в поля появится сообщение, что нужно ввести не внесенные данные. Если все данные внесены, верно, то появится сообщение о том, что данные сохранены в базе.
«Удалить клиента». Пример формы приведен на рисунке 50.
Рисунок 50. «Удалить клиента»
Для того чтобы удалить клиента нужно в меню «Удаление» нажать на ссылку «Клиента».
Появится окно с форма собственности, клиент, ответственное лицо, юр. Адрес, физ. Адрес, телефон, вид документа и удаление.
Для того чтобы удалить продукцию нужно нажать на крестик напротив продукции и запись будет удалена из базы.
Полный системный код «Удаление клиента» приведен в приложение К.
«Удаление продукции». Пример формы приведен на рисунке 51.
Рисунок 51. «Удаление продукции»
Для того чтобы удалить продукцию нужно в меню «Удаление» нажать на ссылку «Наименованию продукции».
Появится окно вид продукции, название, упаковка, сорт, дата производства, срок годности, цена, количество на складу и удаление.
Для того чтобы удалить покупателя нужно нажать на крестик напротив покупателя и запись будет удалена из базы.
«Удалить реализацию». Пример формы приведен на рисунке 52.
Рисунок 52. «Удалить реализацию»
Для того чтобы удалить реализацию нужно в меню «Удаление» нажать на ссылку «Реализация».
Появится окно менеджер, клиент, продукция, предмет договора, дата отгрузки, количество отгруженной продукции и удаление.
Для того чтобы удалить отгрузку продукции нужно нажать на крестик напротив отгрузки и запись будет удалена из базы.
«Удалить договор». Пример формы приведен на рисунке 53.
Для того чтобы удалить договор нужно в меню «Удаление» нажать на ссылку «Договор».
Появится окно предмет договора, ответственное лицо, форма расчета, дата и удаление.
Рисунок 53. «Удалить договор»
Для того чтобы удалить отгрузку продукции нужно нажать на крестик напротив отгрузки и запись будет удалена из базы.
«Удалить данные о документе». Пример формы приведен на рисунке 54.
Рисунок 54. «Удалить данные о документе»
Для того чтобы удалить договор нужно в меню «Удаление» нажать на ссылку «Данные о документе».
Появится окно вид документа, серия, дата выдачи, место выдачи, кем выдан и удаление.
Для того чтобы удалить отгрузку продукции нужно нажать на крестик напротив отгрузки и запись будет удалена из базы.
«Удалить поощрение». Пример формы приведен на рисунке 55.
Рисунок 55. «Удалить поощрение»
Для того чтобы удалить поощрения нужно в меню «Удаление» нажать на ссылку «Поощрения».
Появится окно клиент, поощрения, дата и удаление.
Для того чтобы удалить отгрузку продукции нужно нажать на крестик напротив отгрузки и запись будет удалена из базы.
«Удалить памятные даты». Пример формы приведен на рисунке 56.
Для того чтобы удалить памятные даты нужно в меню «Удаление» нажать на ссылку «Памятные даты».
Появится окно менеджер, клиент, дата, примечание и удаление.
Для того чтобы удалить отгрузку продукции нужно нажать на крестик напротив отгрузки и запись будет удалена из базы.
Рисунок 56. «Удаление памятные даты»
3.3 Генерация отчетов
«Поиск» создан для поиска хранящейся информации в базе данных. Поиск осуществляется по различным критериям: (Ф.И.О.) клиента, наименованию продукции, реализация, договор, данные о документе, поощрения, памятные даты.
Разработана структура подачи запроса для выбора данных из БД, которая может осуществлять запрос.
Пример формы приведен на рисунке 57.
Для того, что бы осуществить поиск по клиенту нужно в меню «Поиск» нажать на ссылку «(Ф.И.О.) клиента».
Появится окно, в котором будет поле для ввода клиента оно обязательное для заполнения. Нужно ввести интересующего вас клиента в это поле и нажать на кнопку «найти». Если вы ошиблись, нажмите кнопку «очистить». В случае если вы не занесли клиента и нажали на кнопку «найти» то на экран, не выведется не какой информации. Если вы занесли правильно название клиента и эот клиент есть в базе, то на экран выведется: форма собственности, ответственное лицо, клиент, юридический адрес, физический адрес, телефон, вид документа.
Полный системный код поиск по «клиенту» приведен в приложение Л.
Рисунок 57. Поиск в базе.
Поиск по «(Ф.И.О.) клиента». Пример формы приведен на рисунке 58.
Рисунок 58. «Поиск по Ф.И.О. Клиента»
Поиск по «продукции». Пример формы приведен на рисунке 59.
Рисунок 59. Поиск по «наименованию продукции».
Для того, что бы осуществить поиск по наименованию продукции нужно в меню «Поиск» нажать на ссылку «Наименованию продукции».
Появится окно, в котором будет поле для ввода наименованию продукции оно обязательное для заполнения. Нужно ввести интересующее вас наименованию продукции в это поле и нажать на кнопку «найти». Если вы ошиблись, нажмите кнопку «очистить». В случае если вы не занесли наименование продукции и нажали на кнопку «найти» то на экран, не выведется не какой информации. Если вы занесли правильно наименованию продукции и эта наименования продукции есть в базе, то на экран выведется: вид продукции, название, упаковка, сорт, дата производства, срок годности, цена, количество на складу.
Поиск по «реализации». Пример формы приведен на рисунке 60.
Для того, что бы осуществить поиск по реализации нужно в меню «Поиск» нажать на ссылку «Реализация».
Рисунок 60. «Поиск по реализации»
Появится окно, в котором будет поле для ввода даты отгрузки оно обязательное для заполнения. Нужно ввести интересующее вас дату отгрузки в это поле и нажать на кнопку «найти». Если вы ошиблись, нажмите кнопку «очистить». В случае если вы не занесли дату отгрузки и нажали на кнопку «найти» то на экран, не выведется не какой информации. Если вы занесли правильно дату отгрузки и эта дата отгрузки есть в базе, то на экран выведется: менеджер, клиент, продукция, дата отгрузки, количество отгруженной продукции, предмет договора.
Поиск по «договору». Пример формы приведен на рисунке 61.
Для того, что бы осуществить поиск по договору нужно в меню «Поиск» нажать на ссылку «Договор».
Появится окно, в котором будет поле для ввода договора оно обязательное для заполнения. Нужно ввести интересующее вас договор в это поле и нажать на кнопку «найти». Если вы ошиблись, нажмите кнопку «очистить». В случае если вы не занесли договор и нажали на кнопку «найти» то на экран, не выведется не какой информации. Если вы занесли правильно договор и этот договор есть в базе, то на экран выведется: предмет договора, ответсвенное лицо, форма расчета, дата.
Рисунок 61. «Поиск по договору»
Поиск по «данным документа». Пример формы приведен на рисунке 62.
Рисунок 62. «Поиск по данным документа»
Для того, что бы осуществить поиск по документу нужно в меню «Поиск» нажать на ссылку «Данные документа».
Появится окно, в котором будет поле для ввода документа оно обязательное для заполнения. Нужно ввести интересующее вас документ в это поле и нажать на кнопку «найти». Если вы ошиблись, нажмите кнопку «очистить». В случае если вы не занесли документ и нажали на кнопку «найти» то на экран, не выведется не какой информации. Если вы занесли правильно документ и этот документ есть в базе, то на экран выведется: вид документа, серия, дата выдачи кем выдан, место выдачи.
Поиск по «поощрению». Пример формы приведен на рисунке 63.
Рисунок 63. «Поиск по поощрению»
Для того, что бы осуществить поиск по поощрению нужно в меню «Поиск» нажать на ссылку «Поощрения».
Появится окно, в котором будет поле для ввода поощрения оно обязательное для заполнения. Нужно ввести интересующее вас поощрение в это поле и нажать на кнопку «найти». Если вы ошиблись, нажмите кнопку «очистить». В случае если вы не занесли поощрение и нажали на кнопку «найти» то на экран, не выведется не какой информации. Если вы занесли правильно поощрения и это поощрение есть в базе, то на экран выведется: клиент, поощрения, дата.
Поиск по «памятным датам». Пример формы приведен на рисунке 64.
Рисунок 64. «Поиск по памятным датам»
Для того, что бы осуществить поиск по памятным датам нужно в меню «Поиск» нажать на ссылку «Памятные даты».
Появится окно, в котором будет поле для ввода клинта оно обязательное для заполнения. Нужно ввести интересующее вас клинта в это поле и нажать на кнопку «найти». Если вы ошиблись, нажмите кнопку «очистить». В случае если вы не занесли клинта и нажали на кнопку «найти» то на экран, не выведется не какой информации. Если вы занесли правильно клинта и этот клинт есть в базе, то на экран выведется: клиент, менеджер, дата, примечание.
Заключение
В данной дипломной работе была спроектирована автоматизированная информационная система взаимоотношения и управления с клиентами для ОАО «Токаревский «Мясокомбинат»». База данных создавалась на основе программы MySQL.
При помощи пакета Denver 2 удалось создать программу ввода данных и генерацию отчетов, отладить скриптовую часть интерфейса. Для проверки работоспособности скриптов осуществлялась связь с базой.
В ходе написания дипломной работы было выполнено следующее:
1. Разработан алгоритм для формирования полей к базе данных;
2. Спроектирован алгоритм для анализа и обработки информации из базы данных;
3. Разработана клиент-серверная программа для обработки запросов на языке Perl;
4. Разработана гипертекстовая форма запроса, выполняющаяся на клиентской платформе, показана ее надежная работа;
5. Разработанные модули переданы в эксплуатацию.
Спроектированная база данных занимает минимум пространства памяти при условии всех связей между данными. В нее легко можно вводить новые данные. База данных полностью удовлетворяет требованиям клиента, так как она удобна в использовании и выдает нужную информацию. В завершении выполненной работы получил положительный отзыв от организации ОАО «Токаревский «Мясокомбинат»».
Полученная в результате программа может быть представлена как демонстрация моих профессиональных навыков. Все поставленные цели в результате выполнения работы достигнуты.
Список используемой литературы
Атре Ш. «Microsoft SQL Server 6.5». М.: Комплект документации, 2004 г. -200 с.
Белью К., Браун М., Ливингстон Д. «Perl Web профессионалам». Киев: BHV, 2004 г. – 300 с.
Голицина ОЛ, Максимов НВ, Попов ИИ. «Базы данных». М.: Диалектика, 2005 г. – 350 с.
Дюбуа П. «Применение MySQL и Perl в Web приложениях». М.: Вильямс, 2004 г. – 400 с.
Игнатович И. «Семейство реляционных баз данных IBM DB2». М.: СУБД 2/05, 2006 г.-250 с.
Кастро Э. «Perl & CGI для всемирной паутины» М.: Наука, 2004 г. – 200 с.
Клинтон П. «Освой самостоятельно Perl за 24 часа». Киев: Мир 2005 г.-150 с.
Конноли Т.К. «Базы данных проектирование реализация и сопровождение». Берг: Диалектика, 2005 г.-180 с.
Конноли Т.К. «Базы данных проектирование реализация и сопровождение» Берг: Диалектика, 2005 г.-300 с.
Леонтьев Б.К. «Язык программирования Perl для Интернет»; «Новый издательский дом» – 2006 г.-350 с.
Маслов В.В. «Введение в Perl». М.: Наука, 2005 г.-200 с.
Местерн П. «Perl: интеграция с Интернет». Берг: Диалектика, 2005 г.-200 с.
Нагао М., Катаяма Т., Уэмура С. «Реализация языка SQL в СУБД MySQL». М.: Мир, 2006 г.-350 с.
Паттерсон Л. «Использование HTML». М.: Изд. дом Вильямс, 2004 г.-400 с.
Прохоров А. «Microsoft SQL Server 6.5 DBA Survival Guide, by Mark Spenik & Orryn Sledge». Хабаровск: ISBN, 2005 г.-500 с.
Уайтхэд П «Perl: наглядный курс программирования»; М.: «Диалектика», 2005 г.-350 с.
Ульман Д. «Теория и практика БД». М.: Машиностроение, 2005 г.-250 с.
Фролов П.С. «Базы данных в Интернет» М.: СУБД, 2005 г.-400 с.
Шуленин А. «Microsoft SQL Server и активный Internet». Киев: Материалы Форума «Информационные Технологии'98».-2004 г.-350 с.
Шуленин А. «Microsoft SQL Server».М.: СУБД 1/05, 2005 г.-180 с.
Шнитман В. «Серверы баз данных: проблемы оценки конфигурации системы». М.:СУБД 5–6/05, 2004 г.-350 с.
Приложение A
Код программы «Клиент»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернутьсяк главной странице</a> </font></p></body></html>
ERRDB exit;};
#Выбор значений из таблицы клиент
$const=«SELECT form, fio, otv, ur_adr, fiz_adr, tel, vid
FROM form_sob, client, vid_doc
WHERE form_sob.id=client.id_form_sob and vid_doc.id=client.id_vid_doc»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Клиент</font></div>
<table border=1>
<tr><td align= «center»><h3>Форма собственности</h3></td><td align= «center»><h3>Клиент (Ф.И.О)</h3></td><td align= «center»><h3>Ответственное лицо</h3></td><td align= «center»><h3>Юр. адрес</h3></td><td align= «center»><h3>Физ. адрес</h3></td><td align= «center»><h3>Телефон</h3></td><td align= «center»><h3>Вид досумента</h3></td></tr>
TBL while(($form,$fio,$otv,$ur_adr,$fiz_adr,$tel,$vid)=$sth->fetchrow_array)
{print»<tr><td><center>$form</center></td><td><center>$fio</center></td><td><center>$otv</center></td><td><center>$ur_adr</center></td><td><center>$fiz_adr</center></td><td><center>$tel</center></td><td><center>$vid</center></td></tr>\n»;};
$sth->finish;
print <<EOFR;
</BODY></table>
<a href=»/combin/2.html»><h3><U>Вернутся на главную</U></h3></a>
</HTML>
EOFR
exit;
Приложение Б
Код программы «Продукция»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML>
<HEAD>
<TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
#Выбор значений из таблицы продукция
$const=«SELECT vid_pr, naz, upack, sor, data, sroc, cena, kol
FROM vid_pr, upac, sort, prod
WHERE vid_pr.id=prod.id_vid_pr and upac.id=prod.id_upac and sort.id=prod.id_sort»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 350; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Продукция</font></div>
<table border=1>
<tr><td align= «center»><h3>Вид продукции</h3></td><td align= «center»><h3>Название</h3></td><td align= «center»><h3>Упаковка</h3></td><td align= «center»><h3>Сорт</h3></td><td align= «center»><h3>Дата производства</h3></td><td align= «center»><h3>Срок годности</h3></td><td align= «center»><h3>Цена</h3></td><td align= «center»><h3>Количество на складе</h3></td></tr>
TBL
while(($vid_pr,$naz,$upack,$sor,$data,$sroc,$cena,$kol)=$sth->fetchrow_array)
{
print «<tr><td><center>$vid_pr</center></td><td><center>$naz</center></td><td><center>$upack</center></td><td><center>$sor</center></td><td><center>$data</center></td><td><center>$sroc</center></td><td><center>$cena</center></td><td><center>$kol</center></td></tr>\n»;
};
$sth->finish;
print <<EOFR;
</BODY>
</table>
<a href=»/combin/2.html»><h3><U>Вернутся на главную</U></h3></a>
</HTML>
EOFR
exit;
Приложение В
Код программы «Реализация»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML>
<HEAD>
<TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
#Выбор значений из таблицы реализация продукции
$const=«SELECT men.fio1, client.fio, vid_pr.vid_pr, dog.pred, realiz.data, realiz.kol
FROM men, client, vid_pr, dog, realiz
WHERE men.id=realiz.id_men and client.id=realiz.id_client and vid_pr.id=realiz.id_vid_pr and dog.id=realiz.id_dog»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Реализация продукции</font></div>
<table border=1>
<tr><td align= «center»><h3>Менеджер (Ф.И.О):</h3></td><td align= «center»><h3>Клиент (Ф.И.О):</h3></td><td align= «center»><h3>Продукция</h3></td><td align= «center»><h3>Предмет договора</h3></td><td align= «center»><h3>Дата отгрузки</h3></td><td align= «center»><h3>Количество отгруженной продукции</h3></td></tr>
TBL
while(($fio1,$fio,$vid_pr,$pred,$data,$kol)=$sth->fetchrow_array)
{
print «<tr><td><center>$fio1</center></td><td><center>$fio</center></td><td><center>$vid_pr</center></td><td><center>$pred</center></td><td><center>$data</center></td><td><center>$kol</center></td></tr>\n»;
};
$sth->finish;
print <<EOFR;
</BODY>
</table>
<a href=»/combin/2.html»><h3><U>Вернутся на главную</U></h3></a>
</HTML>
EOFR
exit;
Приложение Г
Код программы «Договор»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
#Выбор значений из таблицы договор
$const=«SELECT pred, otv, form, data
FROM form_ras, dog
WHERE form_ras.id=dog.id_form_ras»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Договор</font></div>
<table border=1>
<tr><td align= «center»><h3>Предмет договора</h3></td><td align= «center»><h3>Ответственное лицо (Ф.И.О)</h3></td><td align= «center»><h3>Форма расчёта</h3></td><td align= «center»><h3>Дата</h3></td></tr>
TBL
while(($pred,$otv,$form,$data)=$sth->fetchrow_array)
{print «<tr><td><center>$pred</center></td><td><center>$otv</center></td><td><center>$form</center></td><td><center>$data</center></td></tr>\n»;
};
$sth->finish;
print <<EOFR;
</BODY></table>
<a href=»/combin/2.html»><h3><U>Вернутся на главную</U></h3></a>
</HTML>
EOFR
exit;
Приложение Д
Код программы «Данные о документе»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
#Выбор значений из таблицы данные о документе
$const=«SELECT vid, cer, data, mest, kem
FROM vid_doc, dan_doc
WHERE vid_doc.id=dan_doc.id_vid_doc»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Данные о документе</font></div>
<table border=1>
<tr><td align= «center»><h3>Вид документа</h3></td><td align= «center»><h3>Серия</h3></td><td align= «center»><h3>Дата выдачи</h3></td><td align= «center»><h3>Место выдачи</h3></td><td align= «center»><h3>Кем выдан</h3></td></tr>
TBL
while(($vid,$cer,$data,$mest,$kem)=$sth->fetchrow_array)
{print «<tr><td><center>$vid</center></td><td><center>$cer</center></td><td><center>$data</center></td><td><center>$mest</center></td><td><center>$kem</center></td></tr>\n»;};
$sth->finish;
print <<EOFR;
</BODY></table>
<a href=»/combin/2.html»><h3><U>Вернутся на главную</U></h3></a>
</HTML>
EOFR
exit;
Приложение Е
Код программы «Поощрения»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML>
<HEAD>
<TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
#Выбор значений из таблицы поощрения
$const=«SELECT fio, posh, data
FROM client, vid_posh, posher
WHERE client.id=posher.id_client and vid_posh.id=posher.id_vid_posh»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Поощрение</font></div>
<table border=1>
<tr><td align= «center»><h3>Клиент (Ф.И.О)</h3></td><td align= «center»><h3>Поощрение</h3></td><td align= «center»><h3>Дата</h3></td></tr>
TBL
while(($fio,$posh,$data)=$sth->fetchrow_array)
{print «<tr><td><center>$fio</center></td><td><center>$posh</center></td><td><center>$data</center></td></tr>\n»;};
$sth->finish;
print <<EOFR;
</BODY>
</table>
<a href=»/combin/2.html»><h3><U>Вернутся на главную</U></h3></a>
</HTML>
EOFR
exit;
Приложение Ж
Код программы «Памятные даты»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
#Выбор значений из таблицы памятные даты
$const=«SELECT fio1, fio, data, prim
FROM men, client, pam
WHERE men.id=pam.id_men and client.id=pam.id_client»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Памятные даты</font></div>
<table border=1>
<tr><td align= «center»><h3>Менеджер (Ф.И.О)</h3></td><td align= «center»><h3>Клиент (Ф.И.О)</h3></td><td align= «center»><h3>Дата</h3></td><td align= «center»><h3>Прим</h3></td></tr>
TBL
while(($fio1,$fio,$data,$prim)=$sth->fetchrow_array)
{print «<tr><td><center>$fio1</center></td><td><center>$fio</center></td><td><center>$data</center></td><td><center>$prim</center></td></tr>\n»;};
$sth->finish;
print <<EOFR;
</BODY></table>
<a href=»/combin/2.html»><h3><U>Вернутся на главную</U></h3></a>
</HTML>
EOFR
exit;
ПРИЛОЖЕНИЕ З
Код программы «Администирование»
#!/usr/bin/perl
use DBI;
use CGI qw (:standard escapeHTML);
# declarations
my $dbh; #database handler
my $sth; #database statement handler
$base = 'comb';
$comp = 'localhost';
$dbport = '3306';
print «Content-type: text/html\n\n»; print <<EOH;
<HTML><HEAD><TITLE>База Токарёвского мясокомбината</TITLE></HEAD>
EOH print <<EOFR;
<BODY BGCOLOR= «black» TEXT= «green»><center>
<br><DIV style= «height: 140; width: 650; filter: Shadow (Color=red, Direction=300)"><font face= «Monotype Corsiva» size=6 color=yellow>База Токарёвского мясокомбината</font></div>
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Администрирование</font></div>
<img src=»/combin/image/3.png»>
<form name='FORM1' action=»/cgi-bin/adm1.pl» method= «post»><br>
<fieldset style= «width:20%»><legend><font size=6 color= «336699»>Идентификация</font></legend>
<font face= «Ravie» size=5>Login:</font><br>
<input type= «user» size=15 maxlength=15 name= «user»><br>
<font face= «Ravie» size=5>Password:</font><br>
<input type= «password» size=15 maxlength=15 name= «password»><br>
</fieldset></font><br><br>
<input type= «submit» value= «ВХОД» style= «color:blue»> <input type= «reset» value= «ОЧИСТКА» style= «color:blue»>
</form><br></center></BODY></HTML> EOFR exit;
#!/usr/bin/perl
use DBI;
use CGI qw (:standard escapeHTML);
# declarations
my $dbh; #database handler
my $sth; #database statement handler
my ($log, $pass);
$base = 'comb';
$comp = 'localhost';
$dbport = '3306';
print «Content-type: text/html\n\n»; print <<EOH;
<HTML><HEAD><TITLE>База Токарeвского мясокомбината</TITLE><style>
a {text-decoration:none;}
h3 {font-size:18pt; color:0099CC;} </style>
EOH $dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=&dbport», 'root', «);
if (not $dbh) {print <<ERRDB;
<p>Не могу подключиться к базе по порту 3306 дл проверки имени пользователя и пароля. Причина ошибки – <b>$DBI:errstr</b></p>
<hr width=90% border=2> ERRDB exit;};
$user = param («user»);
$password = param («password»);
my $er = 0;
$const = «select * from adm where login = '$user' and password = '$password'»;
$sth = $dbh->prepare($const);
$sth->execute;
while(($log, $pass)=$sth->fetchrow_array) {
if ($log = $user) {
$er += 1;};
if ($pass = $password) {
$er += 1};};
$sth->finish;
if ($er < 1) {print <<SOF;
<BODY BGCOLOR= «black» TEXT= «green»><center>
<br><DIV style= «height: 140; width: 650; filter: Shadow (Color=red, Direction=300)"><font face= «Monotype Corsiva» size=6 color=yellow>База Токаревского мясокомбината</font></div>
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Администрирование</font></div><br>
<font size=6 color=336699 face= «Monotype Corsiva»><p>Не правильно заданы Логин и пароль</p></font>
<img src=»/combin/image/3.png»>
<form name='FORM1' action=»/cgi-bin/adm1.pl» method= «post»><br>
<fieldset style= «width:20%»><legend><font size=6 color=336699>Идентификация</font></legend>
<font face= «Ravie» size=5>Login:</font><br>
<input type= «user» size=15 maxlength=15 name= «user»><br>
<font face= «Ravie» size=5>Password:</font><br>
<input type= «password» size=15 maxlength=15 name= «password»><br>
</fieldset></font><br><br>
<input type= «submit» value= «ВХОД» style= «color:blue»> <input type= «reset» value= «ОЧИСТКА» style= «color:blue»>
</form><br></center></BODY> SOF exit;}; print <<EODT;
<BODY BGCOLOR= «black» text= «0099CC» link= «red» vlink= «0099CC» alink= «yellow»><center>
<br><DIV style= «height: 140; width: 650; filter: Shadow (Color=red, Direction=300)"><font face= «Monotype Corsiva» size=6 color=yellow>База Токаревского мясокомбината</font></div>
<h3>Пароль принят вы можете войти в базу</h3><br><br>
<font style= «FONT-SIZE: 18pt»><a href=»/combin/index_1.html»>[Вход]</a></font>
</BODY></html>
EODT exit;
Приложение И
Код программы «Добавить клиента»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
my ($ky, $val);
my @form_sob = ();
my @vid_doc = ();
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML>
<HEAD>
<TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
$sth = $dbh->prepare ('select form, id from form_sob where id > 0');
$sth->execute;
while(($ky, $val)=$sth->fetchrow_array) {
$form_sob{$ky} = $val;
};
$sth->finish;
$sth = $dbh->prepare ('select vid, id from vid_doc where id > 0');
$sth->execute;
while(($ky, $val)=$sth->fetchrow_array) {
$vid_doc{$ky} = $val;
};
$sth->finish;
$dbh->disconnect;
print <<SOF;
<form name= «add» action=»/cgi-bin/kl_addb.pl» method= «post»>
<br><DIV style= «height: 60; width: 300; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Добавить Клиента</font></div>
<table align=center border=0 bordercolor=#151924>
<tr><td align=center><b>Форма собственности: (выбрать из списка)</td>
<td><select name= «form»>
SOF
foreach $ky (sort keys % form_sob) {
$val = $form_sob{$ky};
print «<option value=$val>$ky\n»;
};
print <<MID;
</select>
</td></tr>
<tr><td align=center><b>Клиент (Ф.И.О):</td><td><input type= «text» size= «30» maxlength= «100» name= «fio»></td></tr>
<tr><td align=center><b>Ответственное лицо (Ф.И.О):</td><td><input type= «text» size= «30» maxlength= «100» name= «otv»></td></tr>
<tr><td align=center><b>Юр. адрес:</td><td><input type= «text» size= «50» maxlength= «100» name= «ur_adr»></td></tr>
<tr><td align=center><b>Физ. адрес:</td><td><input type= «text» size= «50» maxlength= «100» name= «fiz_adr»></td></tr>
<tr><td align=center><b>Телефон:</td><td><input type= «text» size= «20» maxlength= «20» name= «tel»></td></tr>
<tr><td align=center><b>Вид документа: (выбрать из списка)</td>
<td><select name= «vid»>
MID
foreach $ky (sort keys % vid_doc) {
$val = $vid_doc{$ky};
print «<option value=$val>$ky\n»;
};
print <<EOFR;
</select>
</td></tr>
</table><br><input type= «submit» value= «Сохранить в базу»><input type=reset value= «Очистить поля»></form>
<a href=»/combin/3.html»><h3><U>Вернутся к Добавлению</U></h3></a>
</BODY>
</HTML>
EOFR
exit;
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
my ($ky, $val);
my $form= param('form');
my $fio= param('fio');
my $otv= param('otv');
my $ur_adr= param ('ur_adr');
my $fiz_adr= param ('fiz_adr');
my $tel= param('tel');
my $vid= param('vid');
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML>
<HEAD>
<TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться
к главной странице</a></font></p>
</body></html>
ERRDB
exit;
};
my $er = 0;
if ($fio eq «») {
$er += 1;
print qq [<p><h1><font color=red><B> ERROR -</B> </font>Не указан Клиент (Ф.И.О) </h1></p>\n];
};
if ($otv eq «») {
$er += 1;
print qq [<p><h1><font color=red><B> ERROR -</B> </font>Не указано Ответственное лицо (Ф.И.О)</h1></p>\n];
};
if ($ur_adr eq «») {
$er += 1;
print qq [<p><h1><font color=red><B>ERROR -</B> </font>Не указан Юридический адрес:</h1></p>\n];
};
if ($fiz_adr eq «») {
$er += 1;
print qq [<p><h1><font color=red><B>ERROR -</B> </font>Не указан Физический адрес:</h1></p>\n];
};
if ($tel eq «») {
$er += 1;
print qq [<p><h1><font color=red><B>ERROR -</B> </font>Не указан Телефон:</h1></p>\n];
};
if ($er > 0) {
print <<SOF;
<hr size=0.1 color= "#5E89C5»><p><center><font color=red size=4>Проверьте все поля и исправте ошибки<br>
или откажитесь от занесения данных в базу</font></p><hr size=0.1 color= "#5E89C5»>
<a href=»/combin/3.html»><h3><U>Вернутся к Добавлению</U></h3></a>
SOF
exit;
};
$qry = «INSERT INTO client VALUES (NULL, '$form', '$fio', '$otv', '$ur_adr', '$fiz_adr', '$tel', '$vid');»;
$rows = $dbh->do($qry);
$rows = $dbh->{'mysql_indertid'};
$dbh->do ('FLUSH TABLES, STATUS');
$dbh->disconnect;
print qq [<p><b>Новая запись внесена в таблицу «Клиент»</b></p>];
print <<EODT;
<center>
<hr align= «center» noshade size= «2» width= «90%»><p><a href=»/cgi-bin/kl_add.pl»><b><h3><U>Добавить еще одну запись в базу</U></h3></b></a></p>
<a href=»/combin/3.html»><h3><U>Вернутся к Добавлению</U></h3></a>
<hr align= «center» noshade size= «2» width= «90%»>
<BODY>
</HTML>
EODT
exit;
Приложение К
Код программы «Удаление клиента»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернуться к главной странице</a> </font></p></body></html>
ERRDB exit;};
#Выбор значений из таблицы клиент
$const=«SELECT form, fio, otv, ur_adr, fiz_adr, tel, vid
FROM form_sob, client, vid_doc
WHERE form_sob.id=client.id_form_sob and vid_doc.id=client.id_vid_doc»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Удалить Клиента</font></div>
<table border=1>
<tr><td align= «center»><h3>Форма собственности</h3></td><td align= «center»><h3>Клиент (Ф.И.О)</h3></td><td align= «center»><h3>Ответственное лицо</h3></td><td align= «center»><h3>Юр. адрес</h3></td><td align= «center»><h3>Физ. адрес</h3></td><td align= «center»><h3>Телефон</h3></td><td align= «center»><h3>Вид досумента</h3></td><td align= «center»><h3>Удаление</h3></td></tr>
TBL
while(($form,$fio,$otv,$ur_adr,$fiz_adr,$tel,$vid)=$sth->fetchrow_array)
{print»<tr><td><center>$form</center></td><td><center>$fio</center></td><td><center>$otv</center></td><td><center>$ur_adr</center></td><td><center>$fiz_adr</center></td><td><center>$tel</center></td><td><center>$vid</center></td>»;
print '<td><center><a href=»/cgi-bin/kl_del1.pl»><img src=»/combin/image/del.bmp» border= «0» align=»» ></a></center> </td></tr>';};
$sth->finish;
print <<EOFR;
</BODY></table>
<a href=»/combin/5.html»><h3><U>Вернутся к удалению</U></h3></a>
</HTML>
EOFR exit;
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
my $del=param('del');
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
h4 {font-size:19pt; color:0099CC;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернутьсяк главной странице</a> </font></p></body></html>
ERRDB exit;};
my $stb;
#удаляем запись при наличии параметра del
if ($del>0)
{my $qry = «DELETE FROM `client` WHERE `id` = $del LIMIT 1»;
$dbh->do($qry);
$dbh->do ('FLUSH TABLES, STATUS');
#$dbh->disconnect;}
#Выбор значений из таблицы клиент
$const=«SELECT client.id, form_sob.form, client.fio, client.otv, client.ur_adr, client.fiz_adr, client.tel, vid_doc.vid
FROM form_sob, client, vid_doc
WHERE form_sob.id=client.id_form_sob and vid_doc.id=client.id_vid_doc»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Удаление клиента</font></div>
<h4>Вы действительно хотите удалить клиента?</h4>
<table border=1>
<tr><td align= «center»><h3>Форма собственности</h3></td><td align= «center»><h3>Клиент (Ф.И.О)</h3></td><td align= «center»><h3>Ответственное лицо</h3></td><td align= «center»><h3>Юр. адрес</h3></td><td align= «center»><h3>Физ. адрес</h3></td><td align= «center»><h3>Телефон</h3></td><td align= «center»><h3>Вид досумента</h3></td><td align= «center»><h3>Удаление</h3></td></tr>
TBL while(($id,$form,$fio,$otv,$ur_adr,$fiz_adr,$tel,$vid)=$sth->fetchrow_array)
{print»<tr><td><center>$form</center></td><td><center>$fio</center></td><td><center>$otv</center></td><td><center>$ur_adr</center></td><td><center>$fiz_adr</center></td><td><center>$tel</center></td><td><center>$vid</center></td>»;
print '<td><center><a href=»/cgi-bin/kl_del1.pl? del=',$id, ' "><img src=»/combin/image/del.bmp» border= «0» align=»» ></a></center> </td></tr>';};
$sth->finish;
print <<EOFR;
</BODY></table>
<a href=»/combin/5.html»><h3><U>Вернутся к удалению</U></h3></a>
</HTML>
EOFR exit;
ПРИЛОЖЕНИЕ Л
Код программы «Поиск по клиенту»
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
print <<EOFR;
<CENTER>
<FORM action=»/cgi-bin/kl_sear1.pl» method= «post»>
<br><br><br><br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)"><font style= «FONT-SIZE: 20pt» color=yellow>Поиск в Базе</font></div>
<fieldset style= «width:30%»><legend><font size=4 color= «0099CC»>Поиск по Ф.И.О Клиента</font></legend>
<br><font color= «aqua»><b>Клиент: (Ф.И.О)</font>
<input name = «fio» size=35></b>
<br><br>
<input type= «submit» value= «Найти!!!» name= «fio»> <input type= «reset» value= «Очитить»>
</FORM></fieldset>
<a href=»/combin/4.html»><h3><U>Вернутся к Поиску</U></h3></a>
</BODY></HTML>
EOFR exit;
#!/usr/bin/perl
#подключаем модули
use DBI;
use CGI qw (:standard escapeHTML);
#инициализируем переменные
my $dbh; #database handler
my $sth; #database statement handler
my $base = 'comb';
my $comp = 'localhost';
my $dbport = '3306';
#вывод заголовка
print «Content-type: text/html\n\n»;
#вывод документа
print <<EOH;
<HTML><HEAD><TITLE>Токарёвский мясокомбинат</TITLE>
<style>
a {text-decoration:none;}
h3 {font-size:12pt; color:green;}
</style>
<BODY text= «0099CC» bgcolor= «black» alink= «red» link= «green» vlink= «0099CC»><center>
EOH
#подключаемся к базе
$dbh = DBI->connect («DBI:mysql:database=$base; host=$comp; port=$dbport», 'root', «);
if (not $dbh) {
print <<ERRDB;
<p class= «norm»>Не удалось законнектить базу<b>$base</b> по порту $dbport.<br>
Причина неудачи – <b>$DBI:errstr</b></p>
<hr align= «center» noshade size= «2» width= «90%» color= «red»>
<p class= «norm» align= «left»><font size= "+1»><a href=»/combin/index_1.html»>Вернутьсяк главной странице</a> </font></p></body></html>
ERRDB exit;};
$fio=param («fio»);
#Выбор значений из таблицы клиент
$const=«SELECT form, fio, otv, ur_adr, fiz_adr, tel, vid
FROM form_sob, client, vid_doc
WHERE form_sob.id=client.id_form_sob and vid_doc.id=client.id_vid_doc and client.fio='$fio'»;
$sth = $dbh->prepare($const);
$sth->execute;
print <<TBL;
<br><DIV style= «height: 60; width: 270; filter: Shadow (Color=red, Direction=24)»>
<font style= «FONT-SIZE: 20pt» color=yellow>Клиент</font></div>
<table border=1>
<tr><td align= «center»><h3>Форма собственности</h3></td><td align= «center»><h3>Клиент (Ф.И.О)</h3></td><td align= «center»><h3>Ответственное лицо</h3></td><td align= «center»><h3>Юр. адрес</h3></td><td align= «center»><h3>Физ. адрес</h3></td><td align= «center»><h3>Телефон</h3></td><td align= «center»><h3>Вид досумента</h3></td></tr>
TBL
while(($form,$fio,$otv,$ur_adr,$fiz_adr,$tel,$vid)=$sth->fetchrow_array)
{print «<tr><td><center>$form</center></td><td><center>$fio</center></td><td><center>$otv</center></td><td><center>$ur_adr</center></td><td><center>$fiz_adr</center></td><td><center>$tel</center></td><td><center>$vid</center></td></tr>\n»;};
$sth->finish;
print <<EOFR;
</BODY></table><br><br>
<a href=»/combin/4.html»><h3><U>Вернутся к поиску</U></h3></a>
</HTML>
EOFR exit;
1 Луиза Паттерсон. Использование HTML 4. – М.: Издательский дом “Вильямс”, 2004 г. - 400 с.
2 Microsoft SQL Server 6.5. Комплект документации.-2004 г.-200с.
3 Microsoft SQL Server 6.5 DBA Survival Guide, by Mark Spenik & Orryn Sledge, ISBN 0-672-30797-9.-2005г.-500 с
4 Шуленин А. "Microsoft SQL Server и активный Internet". Материалы Форума "Информационные Технологии'98".-2004г.-350 с.
5 Шуленин А. Microsoft SQL Server.СУБД 1/05.-2005г.-180 с.
6 Игнатович И. Семейство реляционных баз данных IBM DB2. СУБД 2/05.-2006г.-250 с.
7 Дэн Ливингстон, Крис Белью, Мика Браун . «Perl . Web-профессионалам»; «BHV-Киев» - 2004 г.- 300 с.
8 Дэн Ливингстон, Крис Белью, Мика Браун . «Perl . Web-профессионалам»; «BHV-Киев» - 2004г.- 300с.
9 Введение в Perl – Маслов В.В. 2005 г.-200 с.