Разработка информационной системы для фирмы по обслуживанию клиентов

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость новой

Детальная информация о работе

Выдержка из работы

Содержание

  • Введение
  • 1. Предпроектная стадия
  • 1.1 Описание предметной области
  • 1.2 Разработка функциональной модели предметной области
  • 1.3 Построение UML диаграмм
  • 2. Стадия проектирования
  • 2.1 Выбор программных средств разработки
  • 2.2 Разработка логической модели
  • 2.3 Разработка физической модели
  • 3. Реализация проекта
  • 3.1 Серверная часть
  • 3.2 Клиентская часть
  • 3.3 Реализация запросов
  • 4. Эксплуатация и сопровождение проекта
  • Заключение
  • Список используемой литературы
  • Приложения

Введение

На современном этапе автоматизации управления производством наиболее перспективным является автоматизация планово-управленческих функций на базе персональных ЭВМ, установленных непосредственно на рабочих местах специалистов. Эти системы получили широкое распространение в организационном управлении под названием автоматизированных рабочих мест (АРМ).

Автоматизация рабочего места — это применение технических средств, освобождающих человека частично или полностью от непосредственного участия в процессах получения, преобразования, передачи и использования энергии, материалов и информации. Автоматизация управления направлена на использование компьютеров и других технических средств обработки и передачи информации в управлении производством, экономикой. Использование вычислительной техники и средств телеобработки для наблюдения, измерения и регистрации данных по производственно-техническим, экономическим и социальным процессам, а также приведения информации к виду, пригодному для эффективного использования в управлении этими процессами.

Анализируя сущность АРМ, специалисты определяют их чаще всего как профессионально-ориентированные малые вычислительные системы, расположенные непосредственно на рабочих местах специалистов и предназначенные для автоматизации их работ. Для каждого объекта управления нужно предусмотреть автоматизированные рабочие места, соответствующие их функциональному назначению. Однако принципы создания АРМ должны быть общими: системность, гибкость, устойчивость, эффективность. Согласно принципу системности АРМ следует рассматривать как системы, структура которых определяется функциональным назначением.

менеджер программное обеспечение запрос

Принцип гибкости означает приспособляемость системы к возможным перестройкам благодаря модульности построения всех подсистем и стандартизации их элементов.

Принцип устойчивости заключается в том, что система АРМ должна выполнять основные функции независимо от воздействия на нее внутренних и внешних возможных факторов. Это значит, что неполадки в отдельных ее частях должны быть легко устранимы, а работоспособность системы — быстро восстановима.

Эффективность АРМ следует рассматривать как интегральный показатель уровня реализации приведенных выше принципов, отнесенного к затратам по созданию и эксплуатации системы.

Функционирование АРМ может дать численный эффект только при условии правильного распределения функций и нагрузки между человеком и машинными средствами обработки информации, ядром которых является ЭВМ. Лишь тогда АРМ станет средством повышения не только производительности труда и эффективности управления, но и социальной комфортности специалистов.

Тема курсового проекта — «Разработка информационной системы для фирмы по обслуживанию клиентов».

Цель курсового проекта — разработка автоматизированного рабочего места менеджера фирмы.

1. Предпроектная стадия

1.1 Описание предметной области

Фирма представляет собой торговое предприятие.

Менеджер фирмы принимает заказы, на складе формируют заказы, разносчик доставляет заказы клиентам.

Схематично бизнес-процесс представлен на рис. 1.1.

/

Рис. 1.1 Бизнес-процесс работы фирмы

1.2 Разработка функциональной модели предметной области

В настоящее время для описания бизнес-процессов используется несколько методологий. К числу наиболее распространенных относятся методологии моделирования бизнес-процессов, методологий описания потоков работ и методологии описания потоков данных.

Наиболее широко используемой методологией описания бизнес-процессов является стандарт IDEF0. Подход IDEF0 был разработан на основе методологии структурного анализа и проектирования SADT. С момента разработки стандарт не претерпел существенных изменений. В настоящее время развитие методологии IDEF0 сопряжено с развитием поддерживающих ее инструментов — программных продуктов для моделирования бизнес-процессов (BPWin, ProCap, IDEF0/EM Tool и др.) Методология IDEF0 предоставляет аналитику прекрасные возможности для описания бизнеса организации на верхнем уровне с акцентом на управлении процессами. Нотация позволяет отражать в модели процесса обратные связи различного типа: по информации, по управлению, движение материальных ресурсов. Продуманные механизмы декомпозиции модели процесса в IDEF0 позволяют существенно упростить работа аналитика. Следует отметить, что модели в нотации IDEF0 предназначены для описания бизнеса на верхнем уровне. Их основное преимущество состоит в возможности описывать управление процессами организации.

Второй важнейшей методологией описания процессов является методология IDEF3. Формально эта методология называется Work Flow Modeling, что отражает ее сущность. Стандарт IDEF3 предназначен для описания рабочих процессов или, говоря другими словами, потоков работ. Методология описания IDEF3 очень близка к алгоритмическим методам построения схем процессов стандартными средствами построения блок-схем (построение блок-схемы в MS Word). Основа методологии IDEF3 состоит в построении моделей процессов, по принципу последовательно выполняемых во времени работ.

Еще одной группой методологий, активно используемых на практике, являются нотации DFD (Data FlowDiagramming). Эти нотации предназначены для описания потоков данных. Они позволяют отразить последовательность работ, выполняемых по ходу процесса, и потоки информации, циркулирующие между этими работами. Кроме того, нотация DFD позволяет описывать потоки документов (документооборот) и потоки материальных ресурсов (движение материалов от одной работы к другой). С помощью схемы процессов в DFD выявляют основные потоки данных.

Функциональная модель представлена на рис. 1.2.

Рис. 1.2 Функциональная модель

1.3 Построение UML диаграмм

Диаграмма вариантов использования обеспечивает высокоуровневое описание того, что система в состоянии сделать и с кем (или чем) она будет взаимодействовать. Это называется методом определения функциональных требований.

Рис. 1.3 Диаграмма вариантов использования

Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывать их внутреннюю структуру и типы отношений.

Диаграмма классов представляет собой граф, вершинами которого являются элементы типа «классификатор», связанные различными типами структурных отношений. Диаграмма классов может также содержать интерфейсы, пакеты, отношения и даже отдельные экземпляры, такие как объекты и связи.

Рис. 1.4 Диаграмма классов

Диаграмма последовательности вместо структуры взаимодействия более наглядно показывает его временной аспект. Она имеет два измерения. Одно измерение — слева направо в виде вертикальных линий, каждая из которых представляет линию жизни отдельного экземпляра актера или объекта, участвующего во взаимодействии. Крайним слева на диаграмме изображается экземпляр актера или объект, который является инициатором взаимодействия. Правее изображается другой объект, который непосредственно взаимодействует с первым и т. д. Таким образом, все сущности на диаграмме образуют некоторый порядок, определяемый временной активностью экземпляров актеров и объектов при взаимодействии друг с другом.

Рис. 1.5 Диаграмма последовательности

2. Стадия проектирования

2.1 Выбор программных средств разработки

Для разработки программного обеспечения была выбрана среда Borland Delphi.

C++Builder и Delphi стали одними из самых популярных на сегодняшний день инструментов для создания как настольных, так и корпоративных информационных систем благодаря уникальному сочетанию удобства разработки пользовательских интерфейсов, компонентной архитектуры, однотипности доступа к разнообразным базам данных, начиная от плоских таблиц формата dBase и Paradox и кончая серверными СУБД. Во многом именно наличие таких продуктов стимулировало достаточно безболезненный перенос в архитектуру клиент/сервер ряда информационных систем, модернизация которых иными средствами была бы сопряжена с большими трудовыми и материальными затратами.

Следует отметить, что современные тенденции развития инструментальных средств таковы, что актуальным становится не просто появление новых гибких и мощных средств разработки, а создание семейств таких продуктов с похожими средами и принципами создания приложений, что в целом повторяет идеологию формирования офисных пакетов (текстовый процессор + электронная таблица + настольная СУБД + презентационный пакет) вместо выпуска отдельных офисных приложений. Если рассматривать линию продуктов Inprise, то в данный момент на рынке средств разработки присутствуют Delphi и C++Builder, а также сходные по методам создания приложений и среде JBuilder, IntraBuilder, Visual dBase.

Сходство C++Builder и Delphi не является чисто внешним. C++Builder обладает компонентной архитектурой и создан на основе библиотеки визуальных компонентов Delphi, ставшей за последние два года весьма популярной среди разработчиков. По этой причине этот продукт имеет общую с Delphi библиотеку классов, часть из которых написана на Object Pascal.

Однако совместимость C++Builder и Delphi этим не исчерпывается. В проектах C++Builder можно использовать не только библиотеку компонентов Delphi, но и код, написанный на Object Pascal, а также формы и модули Del-phi. Поддерживается визуальное наследование форм и модулей данных, в том числе и созданных в Delphi. Эти возможности появились благодаря включению в C++Builder обоих компиляторов C++ и Object Pascal.

Это означает, что можно создавать общие проекты, используя оба средства разработки — и C++Builder, и Delphi. Части одного приложения могут быть созданы с помощью двух средств, и теперь к работе над проектом можно привлекать разработчиков, использующих как Delphi, так и C++. Во-вторых, и это очень важно, C++Builder может использовать компоненты, созданные для Delphi, а их за последние несколько лет создано огромное количество. Это богатство, накопленное разработчиками всего мира, сегодня способно удовлетворить самые причудливые запросы.

Delphi предоставляет программисту широкие возможности повторного использования кода не только за счет наличия библиотеки компонентов, но и за счет поддержки стандарта ActiveX, что позволяет встраивать в приложения ActiveX-компоненты как сторонних производителей, так и созданные собственноручно с помощью самого Delphi

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

Следует отметить, что эффективность разработки и отладки приложений достигается не только за счет использования удобных средств визуального проектирования форм (сейчас это не редкость), но и за счет, во-первых, высокой производительности самих компиляторов Borland и, во-вторых, так называемой инкрементной компиляции и компоновки исполняемого модуля (когда перекомпиляции и перекомпоновке подвергаются только те модули, в которые были внесены изменения).

Выбор системы управления баз данных (СУБД) представляет собой сложную многопараметрическую задачу и является одним из важных этапов при разработке приложений баз данных. Выбранный программный продукт должен удовлетворять как текущим, так и будущим потребностям, при этом следует учитывать финансовые затраты на приобретение необходимого оборудования, самой системы, разработку необходимого программного обеспечения на ее основе, а также обучение персонала.

Microsoft Access — одна из самых популярных систем управления базами данных. Ее успех можно связывать с великолепной рекламной кампанией, организованной Microsoft, или включением ее в богатое окружение продуктов семейства Microsoft Office. Но корень успеха, скорее всего, заключается в прекрасной реализации продукта, рассчитанного как на начинающего, так и квалифицированного пользователя.

СУБД Access для работы с данными использует процессор баз данных Microsoft Jet 4. 0, объекты доступа к данным и средство быстрого построения интерфейса — Конструктор форм. Для получения распечаток используются Конструкторы отчетов. Автоматизация рутинных операций может быть выполнена с помощью макрокоманд. На тот случай, когда не хватает функциональности визуальных средств, пользователи Access могут обратиться к созданию процедур и функций. При этом как в макрокомандах можно использовать вызовы функций, так и из кода процедур и функций можно выполнять макрокоманды.

Несмотря на свою ориентированность на конечного пользователя, в Access присутствует язык программирования Visual Basic for Application, который позволяет создавать массивы, свои типы данных, вызывать DLL-функции, с помощью OLE Automation контролировать работу приложений, которые могут функционировать как OLE-серверы. Вы даже можете целиком создавать базы данных с помощью кодирования, когда в этом появляется необходимость. MS Access из всех рассматриваемых средств разработки имеет, пожалуй, самый богатый набор визуальных средств. Тем не менее кодировать в Access приходится исходя из собственного опыта авторы берутся утверждать, что ни одно приложение, не предназначенное для себя лично, создать хотя бы без одной строчки кода невозможно.

Для коммерческого распространения приложений, разработанных на Access, как мы уже писали, предназначен пакет Access Developer Toolkit, вместе с которым поставляются некоторые дополнения и несколько дополнительных объектов ActiveX.

Главное качество Access, которое привлекает к нему многих пользователей, — тесная интеграция с Microsoft Office. К примеру, скопировав в буфер графический образ таблицы, открыв Microsoft Word и применив вставку из буфера, мы тут же получим в документе готовую таблицу с данными из БД. Вся работа с базой данных осуществляется через окно контейнера базы данных. Отсюда осуществляется доступ ко всем объектам, а именно: таблицам, запросам, формам, отчетам, макросам, модулям.

Посредством драйверов ISAM можно получить доступ к файлам таблиц некоторых других форматов: DBASE, Paradox, Excel, текстовым файлам, FoxPro 2. x, а посредством технологии ODBC — и к файлам многих других форматов.

Access может выступать как в роли OLE контролера, так и ОЕЕ сервера. Это значит, что вы можете контролировать работу приложений Access из любого приложения, при условии, что оно может выступать в роли OLE контролера и наоборот. Встроенный SQL позволяет максимально гибко работать с данными и значительно ускоряет доступ к внешним данным.

Пользователям, малознакомым с понятиями реляционных баз данных, Access дает возможность разделять свои сложные по структуре таблицы на несколько, связанных по ключевым полям.

2.2 Разработка логической модели

Опишем сущности и атрибуты.

Таблица 2.1 Сущность Заказчик

Поле

Тип поля

Код_заказчика

Счетчик

ФИО

Строковый [25]

Адрес

Строковый [25]

Телефон

Строковый [15]

Таблица 2.2 Сущность Разносчик

Поле

Тип поля

Код_разносчика

Счетчик

ФИО

Строковый [25]

Телефон

Строковый [15]

Таблица 2.3 Сущность Товар

Поле

Тип поля

Код_товара

Счетчик

Наименование

Строковый [25]

Группа

Строковый [15]

Цена

Числовой

Таблица 2.4 Сущность Журнал

Поле

Тип поля

Код_журнала

Счетчик

Заказчик

Числовой

Разносчик

Числовой

Сумма

Числовой

Дата

Дата

Таблица 2.5 Сущность Детализация

Поле

Тип поля

Код_детализации

Счетчик

Журнал

Числовой

Товар

Числовой

Количество

Числовой

2.3 Разработка физической модели

Физическая модель, разработанная в MS Access, представлена на рис. 2.1.

Рис. 2.1 Физическая модель

3. Реализация проекта

3.1 Серверная часть

Серверная часть в данном курсовой проекте представлена базой данных MS Access bd. mdb.

База данных хранит все данные, необходимые для работы разрабатываемой системы.

Для связи сервера и клиента используется технология ADO.

Технология ADO является моделью доступа к базам данных и представляет собой объектно-ориентированный интерфейс для технологии доступа к данным OLE DB.

ADO поддерживает ключевые возможности для построения клиент/серверных и Web-приложений, а также обеспечивает функции Remote Data Service (RDS), посредством которого можно перемещать данные с сервера в клиентское приложение или на Web-страницу, манипулировать данными «на стороне клиента» и возвращать обновленные данные серверу.

Рис. 3.1 Таблицы базы данных

3.2 Клиентская часть

Клиентская часть разработана в Delphi 7 и представляет собой интерфейс пользователя с функциями для управления базой данных.

Опишем основные алгоритмы клиентской части.

Алгоритм работы со справочниками.

Рис. 3.2 Схема алгоритма добавления и редактирования данных

Исходный код:

procedure TForm3. Button2Click (Sender: TObject);

begin

if Edit1. Text='' then

begin

showmessage ('Введите ФИО! ');

Edit1. SetFocus;

exit;

end;

if Edit2. Text='' then

begin

showmessage ('Введите Адрес! ');

Edit2. SetFocus;

exit;

end;

if Edit3. Text='' then

begin

showmessage ('Введите телефон! ');

Edit3. SetFocus;

exit;

end;

if Form3. Caption='Добавление' then

Form2. ADOQuery1. Insert

else

Form2. ADOQuery1. Edit;

Form2. ADOQuery1. FieldValues ['ФИО']: =Edit1. Text;

Form2. ADOQuery1. FieldValues ['Адрес']: =Edit2. Text;

Form2. ADOQuery1. FieldValues ['Телефон']: =Edit3. Text;

Form2. ADOQuery1. UpdateRecord;

Form2. ADOQuery1. Last;

Form2. ADOQuery1. First;

Button1Click (Sender);

end;

Рис. 3.3 Схема алгоритма удаления данных

Исходный код:

procedure TForm2. Button3. Click (Sender: TObject);

begin

with Application do

begin

if MessageBox ('Вы хотите удалить запись? ', 'Удаление', MB_OKCANCEL) =IDOK then

ADOQuery1. Delete;

end;

end;

3.3 Реализация запросов

В разрабатываемой системе использовались SQL-запросы для получения данных.

SQL запросы обычно выполняют следующие задачи:

· создание, модификация и удаление таблиц базы данных;

· вставка информации (записей) в таблицы базы данных;

· редактирование информации (записей) в таблицах базы данных;

· выборка (извлечение) информации из таблиц базы данных;

· удаление информации (записей) из базы данных.

Примеры использования SQL-запросов:

ADOQuery1. SQL. Clear;

st: ='SELECT Журнал. Код_журнала, Заказчики. ФИО, Разносчики. ФИО, Журнал. Сумма, Журнал. Дата ';

st: =st+'FROM Журнал, Заказчики, Разносчики WHERE (Журнал. Заказчик=Заказчики. Код_заказчика) AND ';

st: =st+' (Журнал. Разносчик=Разносчики. Код_разносчика) ORDER BY Журнал. Дата';

ADOQuery1. SQL. Add (st);

ADOQuery1. Open;

st: ='SELECT Товары. Наименование, Детализация. Количество FROM Детализация, Товары ';

st: =st+'WHERE (Товары. Код_товара=Детализация. Товар) AND (Детализация. Журнал='+IntToStr (ADOQuery1. FieldValues ['Код_журнала']) +') ';

ADOQuery2. SQL. Clear;

ADOQuery2. SQL. Add (st);

ADOQuery2. Open;

4. Эксплуатация и сопровождение проекта

При запуске программы на выполнение на экран выводится главная форма программы.

Главная форма программы содержит пользовательское меню:

· Справочник (Заказчик, Разносчик, Товар) — работа со справочниками;

· Выход — завершение работы программы.

Также на форме находится таблица журнал заказов с сортировкой по дате и детализация заказа, в которой приводится список продуктов.

Главная форма представлена на рис. 4.1.

Рис. 4.1 Главная форма программы

Рассмотрим работу со справочниками на примере справочника «Заказчики». Форма содержит таблицу с данными и кнопки управления.

Все справочники имеют одинаковые функции:

· Добавление;

· Редактирование;

· Удаление;

· Выход.

Форма справочника Заказчиков представлена на рис. 4.2.

Рис. 4.2 Форма справочника Заказчиков

При нажатии кнопки Добавить на экране появится форма с полями для ввода новой записи (рис. 4.3.).

Рис. 4.3 Окно Добавление

Для добавления новой записи необходимо заполнить все поля и нажать кнопку «Сохранить». Если какое-нибудь поле не заполнено, то выдается соответствующее сообщение и предлагается повторить ввод.

Рис. 4.4 Сообщение об ошибке

Кнопка «Отмена» не сохраняет введенные данные и закрывает форму.

Редактирование записи происходит аналогично добавлению, только все поля уже заполнены данными из выбранной записи.

Рис. 4.5 Редактирование записи

После нажатия кнопки «Удаление» программа выдаст запрос на подтверждение удаления записи. После подтверждения запись будет удалена.

Рис. 4.6 Запрос на удаление записи

Рассмотрим технологию добавления заказ в журнал.

На главной форме необходимо нажать кнопку «Добавить», появится форма добавления заказа, рис. 4.7.

Рис. 4.7 Форма добавления заказа

В верхней части формы находится таблица для хранения выбранных товаров, раскрывающийся список с ФИО заказчиков и с ФИО разносчиков, а также выбор даты заказа.

В нижней части формы находится список товаров. Добавление товара в список производится двойным щелчком мыши по строке товара, после этого необходимо указать количество заказываемого товара.

Рис. 4.8 Форма указания количества товара

После нажатия кнопки «Ок» товар добавится в верхнюю таблицу и автоматически изменится сумма заказа.

Рис. 4.9 Результат добавления заказа

После составления списка товаров выбирается заказчик, разносчик и дата. Нажимается кнопка «Сохранить» и данные записываются в базу данных.

Рис. 4. 10. Результат добавления заказа

Заключение

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

Были определены сущности и атрибуты базы данных, разработаны UML-диаграммы системы. Разработана физическая база данных и клиентское приложение.

Результатом работы стала программа Service. exe, позволяющая вести справочники заказчиков, разносчиков, товаров, формировать заказы и хранить данные о заказах.

Список используемой литературы

1. Аппак М. А. Автоматизированные рабочие места на основе персональных ЭВМ. — М.: Радио и связь, 2009. — 176 с.

2. Гольдштейн С. Л, Ткаченко Т. Я. Введение в системологию и системотехнику / С. Л. Гольдштейн. — ИРРО. Екатеринбург, 2010. — 198 с.

3. Глушаков С. В., Ломотько Д. В. Базы данных: Учебный курс. — М.: Издательство АСТ, 2008. — 504 с.

4. Дюк В. А. Обработка данных на ПК в примерах. — СПб: Питер. 1997;

5. Марк Д. А. Методология структурного анализа и проектирования SADT. — М: Метатехнология, 2009. — 242 с.

6. Сеннов А. С. Access 2003 Практическая разработка баз данных, Питер, 2005;

7. Симонович, Евсеев Занимательное программирование: Delphi. М.: АСТ-ПРЕСС, 2001;

8. Шуремов Е. Л. Компьютерный учет торговых операций: Практическое пособие/. — М.: КомпьютерПресс, 2000;

Приложения

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, XPMan, Menus, StdCtrls, DB, ADODB, Grids, DBGrids;

type

TForm1 = class (TForm)

XPManifest1: TXPManifest;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

ADOConnection1: TADOConnection;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Button1: TButton;

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

ADOQuery1: TADOQuery;

DataSource1: TDataSource;

ADOQuery2: TADOQuery;

DataSource2: TDataSource;

ADOQuery3: TADOQuery;

procedure N2Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure DBGrid1CellClick (Column: TColumn);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit4, Unit6, Unit8;

{$R *. dfm}

procedure TForm1. N2Click (Sender: TObject);

begin

Form1. Close;

end;

procedure TForm1. FormCreate (Sender: TObject);

var

sdr, st: string;

begin

Screen. Cursor: = crSQLWait;

sdr: ='';

sdr: =sdr+'Provider=Microsoft. Jet. OLEDB.4. 0; ';

sdr: =sdr+'Password=""; ';

sdr: =sdr+'User ID=Admin; ';

sdr: =sdr+'Data Source='+ ExtractFileDir (Application. ExeName) +'bd. mdb; ';

sdr: =sdr+'Mode=ReadWrite; Extended Properties=""; ';

sdr: =sdr+'Jet OLEDB: System database=""; ';

sdr: =sdr+'Jet OLEDB: Registry Path=""; ';

sdr: =sdr+'Jet OLEDB: Database Password=""; ';

sdr: =sdr+'Jet OLEDB: Engine Type=5; ';

sdr: =sdr+'Jet OLEDB: Database Locking Mode=1; ';

sdr: =sdr+'Jet OLEDB: Global Partial Bulk Ops=2; ';

sdr: =sdr+'Jet OLEDB: Global Bulk Transactions=1; ';

sdr: =sdr+'Jet OLEDB: New Database Password=""; ';

sdr: =sdr+'Jet OLEDB: Create System Database=False; ';

sdr: =sdr+'Jet OLEDB: Encrypt Database=False; ';

sdr: =sdr+'Jet OLEDB: Compact Without Replica Repair=False; ';

sdr: =sdr+'Jet OLEDB: SFP=False';

ADOConnection1. ConnectionString: =sdr;

try

ADOConnection1. Connected: =true;

ADOQuery1. SQL. Clear;

st: ='SELECT Журнал. Код_журнала, Заказчики. ФИО, Разносчики. ФИО, Журнал. Сумма, Журнал. Дата ';

st: =st+'FROM Журнал, Заказчики, Разносчики WHERE (Журнал. Заказчик=Заказчики. Код_заказчика) AND ';

st: =st+' (Журнал. Разносчик=Разносчики. Код_разносчика) ORDER BY Журнал. Дата';

ADOQuery1. SQL. Add (st);

ADOQuery1. Open;

DBGrid1. Columns [0]. Width: =0;

st: ='SELECT Товары. Наименование, Детализация. Количество FROM Детализация, Товары ';

st: =st+'WHERE (Товары. Код_товара=Детализация. Товар) AND (Детализация. Журнал='+IntToStr (ADOQuery1. FieldValues ['Код_журнала']) +') ';

ADOQuery2. SQL. Clear;

ADOQuery2. SQL. Add (st);

ADOQuery2. Open;

except

showmessage ('Ошибка');

end;

screen. Cursor: =crdefault;

end;

procedure TForm1. N3Click (Sender: TObject);

begin

Form2. ShowModal;

end;

procedure TForm1. N4Click (Sender: TObject);

begin

Form4. ShowModal;

end;

procedure TForm1. N5Click (Sender: TObject);

begin

Form6. ShowModal;

end;

procedure TForm1. Button1Click (Sender: TObject);

var

st: String;

begin

Form8. Caption: ='Добавление';

ADOQuery3. SQL. Clear;

ADOQuery3. SQL. Add ('SELECT MAX (Код_журнала) AS num FROM Журнал');

ADOQuery3. Open;

Form8. Label5. Caption: =IntToStr (ADOQuery3. FieldValues ['num'] +1);

Form8. ADOQuery2. SQL. Clear;

st: ='SELECT Детализация. Код_детализации, Детализация. Журнал, Товары. Наименование,';

st: =st+'Детализация. Количество FROM Детализация, Товары WHERE ';

st: =st+' (Журнал='+Form8. Label5. Caption+') AND (Детализация. Товар=Товары. Код_товара) ';

Form8. ADOQuery2. SQL. Add (st);

Form8. ADOQuery2. Open;

Form8. DBGrid1. Columns [0]. Width: =0;

// заказчик

Form8. ADOQuery3. SQL. Clear;

Form8. ADOQuery3. SQL. Add ('SELECT * FROM Заказчики ORDER BY ФИО');

Form8. ADOQuery3. Open;

Form8. Zak. ListField: ='ФИО';

Form8. Zak. KeyField: ='Код_заказчика';

// разносчик

Form8. ADOQuery4. SQL. Clear;

Form8. ADOQuery4. SQL. Add ('SELECT * FROM Разносчики ORDER BY ФИО');

Form8. ADOQuery4. Open;

Form8. Razn. ListField: ='ФИО';

Form8. Razn. KeyField: ='Код_разносчика';

Form8. ShowModal;

end;

procedure TForm1. DBGrid1CellClick (Column: TColumn);

var

st: String;

begin

st: ='SELECT Товары. Наименование, Детализация. Количество FROM Детализация, Товары ';

st: =st+'WHERE (Товары. Код_товара=Детализация. Товар) AND (Детализация. Журнал='+IntToStr (ADOQuery1. FieldValues ['Код_журнала']) +') ';

ADOQuery2. SQL. Clear;

ADOQuery2. SQL. Add (st);

ADOQuery2. Open;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;

type

TForm2 = class (TForm)

DBGrid1: TDBGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

procedure Button4Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1, Unit3;

{$R *. dfm}

procedure TForm2. Button4Click (Sender: TObject);

begin

Form2. Close;

end;

procedure TForm2. FormCreate (Sender: TObject);

begin

ADOQuery1. SQL. Clear;

ADOQuery1. SQL. Add ('SELECT * FROM Заказчики ORDER BY ФИО');

ADOQuery1. Open;

DBGrid1. Columns [0]. Width: =0;

end;

procedure TForm2. Button2Click (Sender: TObject);

begin

with Application do

begin

if MessageBox ('Вы хотите удалить запись? ', 'Удаление', MB_OKCANCEL) =IDOK then

ADOQuery1. Delete;

end;

end;

procedure TForm2. Button1Click (Sender: TObject);

begin

Form3. Caption: ='Добавление';

Form3. ShowModal;

end;

procedure TForm2. Button3Click (Sender: TObject);

begin

Form3. Caption: ='Редактирование';

Form3. Edit1. Text: =ADOQuery1. FieldValues ['ФИО'];

Form3. Edit2. Text: =ADOQuery1. FieldValues ['Адрес'];

Form3. Edit3. Text: =ADOQuery1. FieldValues ['Телефон'];

Form3. ShowModal;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm3 = class (TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit2;

{$R *. dfm}

procedure TForm3. Button1Click (Sender: TObject);

begin

Edit1. Text: ='';

Edit2. Text: ='';

Edit3. Text: ='';

Form3. Close;

end;

procedure TForm3. Button2Click (Sender: TObject);

begin

if Edit1. Text='' then

begin

showmessage ('Введите ФИО! ');

Edit1. SetFocus;

exit;

end;

if Edit2. Text='' then

begin

showmessage ('Введите Адрес! ');

Edit2. SetFocus;

exit;

end;

if Edit3. Text='' then

begin

showmessage ('Введите телефон! ');

Edit3. SetFocus;

exit;

end;

if Form3. Caption='Добавление' then

Form2. ADOQuery1. Insert

else

Form2. ADOQuery1. Edit;

Form2. ADOQuery1. FieldValues ['ФИО']: =Edit1. Text;

Form2. ADOQuery1. FieldValues ['Адрес']: =Edit2. Text;

Form2. ADOQuery1. FieldValues ['Телефон']: =Edit3. Text;

Form2. ADOQuery1. UpdateRecord;

Form2. ADOQuery1. Last;

Form2. ADOQuery1. First;

Button1Click (Sender);

end;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;

type

TForm4 = class (TForm)

DBGrid1: TDBGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

procedure FormCreate (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit1, Unit5;

{$R *. dfm}

procedure TForm4. FormCreate (Sender: TObject);

begin

ADOQuery1. SQL. Clear;

ADOQuery1. SQL. Add ('SELECT * FROM Разносчики ORDER BY ФИО');

ADOQuery1. Open;

DBGrid1. Columns [0]. Width: =0;

end;

procedure TForm4. Button4Click (Sender: TObject);

begin

Form4. Close;

end;

procedure TForm4. Button2Click (Sender: TObject);

begin

with Application do

begin

if MessageBox ('Вы хотите удалить запись? ', 'Удаление', MB_OKCANCEL) =IDOK then

ADOQuery1. Delete;

end;

end;

procedure TForm4. Button1Click (Sender: TObject);

begin

Form5. Caption: ='Добавление';

Form5. ShowModal;

end;

procedure TForm4. Button3Click (Sender: TObject);

begin

Form5. Caption: ='Редактирование';

Form5. Edit1. Text: =ADOQuery1. FieldValues ['ФИО'];

Form5. Edit3. Text: =ADOQuery1. FieldValues ['Телефон'];

Form5. ShowModal;

end;

end.

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm5 = class (TForm)

Label1: TLabel;

Edit1: TEdit;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit4;

{$R *. dfm}

procedure TForm5. Button1Click (Sender: TObject);

begin

Edit1. Text: ='';

Edit3. Text: ='';

Form5. Close;

end;

procedure TForm5. Button2Click (Sender: TObject);

begin

if Edit1. Text='' then

begin

showmessage ('Введите ФИО! ');

Edit1. SetFocus;

exit;

end;

if Edit3. Text='' then

begin

showmessage ('Введите телефон! ');

Edit3. SetFocus;

exit;

end;

if Form5. Caption='Добавление' then

Form4. ADOQuery1. Insert

else

Form4. ADOQuery1. Edit;

Form4. ADOQuery1. FieldValues ['ФИО']: =Edit1. Text;

Form4. ADOQuery1. FieldValues ['Телефон']: =Edit3. Text;

Form4. ADOQuery1. UpdateRecord;

Form4. ADOQuery1. Last;

Form4. ADOQuery1. First;

Button1Click (Sender);

end;

end.

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;

type

TForm6 = class (TForm)

DBGrid1: TDBGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

procedure Button4Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses Unit1, Unit7;

{$R *. dfm}

procedure TForm6. Button4Click (Sender: TObject);

begin

Form6. Close;

end;

procedure TForm6. Button2Click (Sender: TObject);

begin

with Application do

begin

if MessageBox ('Вы хотите удалить запись? ', 'Удаление', MB_OKCANCEL) =IDOK then

ADOQuery1. Delete;

end;

end;

procedure TForm6. FormCreate (Sender: TObject);

begin

ADOQuery1. SQL. Clear;

ADOQuery1. SQL. Add ('SELECT * FROM Товары ORDER BY Наименование');

ADOQuery1. Open;

DBGrid1. Columns [0]. Width: =0;

end;

procedure TForm6. Button1Click (Sender: TObject);

begin

Form7. Caption: ='Добавление';

Form7. ShowModal;

end;

procedure TForm6. Button3Click (Sender: TObject);

begin

Form7. Caption: ='Редактирование';

Form7. Edit1. Text: =ADOQuery1. FieldValues ['Наименование'];

Form7. Edit2. Text: =ADOQuery1. FieldValues ['Группа'];

Form7. Edit3. Text: =ADOQuery1. FieldValues ['Цена'];

Form7. ShowModal;

end;

end.

unit Unit7;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm7 = class (TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

uses Unit6;

{$R *. dfm}

procedure TForm7. Button1Click (Sender: TObject);

begin

Edit1. Text: ='';

Edit2. Text: ='';

Edit3. Text: ='';

Form7. Close;

end;

procedure TForm7. Button2Click (Sender: TObject);

begin

if Edit1. Text='' then

begin

showmessage ('Введите Наименование! ');

Edit1. SetFocus;

exit;

end;

if Edit2. Text='' then

begin

showmessage ('Введите Группу! ');

Edit2. SetFocus;

exit;

end;

if Edit3. Text='' then

begin

showmessage ('Введите Цену! ');

Edit3. SetFocus;

exit;

end;

if Form7. Caption='Добавление' then

Form6. ADOQuery1. Insert

else

Form6. ADOQuery1. Edit;

Form6. ADOQuery1. FieldValues ['Наименование']: =Edit1. Text;

Form6. ADOQuery1. FieldValues ['Группа']: =Edit2. Text;

Form6. ADOQuery1. FieldValues ['Цена']: =Edit3. Text;

Form6. ADOQuery1. UpdateRecord;

Form6. ADOQuery1. Last;

Form6. ADOQuery1. First;

Button1Click (Sender);

end;

end.

unit Unit8;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, ComCtrls;

type

TForm8 = class (TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Label1: TLabel;

Zak: TDBLookupComboBox;

Label2: TLabel;

Razn: TDBLookupComboBox;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

ADOQuery1: TADOQuery;

DataSource1: TDataSource;

ADOQuery2: TADOQuery;

DataSource2: TDataSource;

ADOQuery3: TADOQuery;

DataSource3: TDataSource;

ADOQuery4: TADOQuery;

DataSource4: TDataSource;

ADOQuery5: TADOQuery;

DataSource5: TDataSource;

Label5: TLabel;

Label6: TLabel;

Dat: TDateTimePicker;

Label7: TLabel;

procedure FormCreate (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure DBGrid2DblClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

uses Unit1, Unit9;

{$R *. dfm}

procedure TForm8. FormCreate (Sender: TObject);

begin

ADOQuery1. SQL. Clear;

ADOQuery1. SQL. Add ('SELECT * FROM Товары ORDER BY Наименование');

ADOQuery1. Open;

DBGrid2. Columns [0]. Width: =0;

end;

procedure TForm8. Button1Click (Sender: TObject);

begin

Zak. KeyValue: =0;

Razn. KeyValue: =0;

Form8. Close;

end;

procedure TForm8. Button2Click (Sender: TObject);

var

st: String;

begin

ADOQuery5. SQL. Clear;

ADOQuery5. SQL. Add ('SELECT * FROM Журнал');

ADOQuery5. Open;

ADOQuery5. Insert;

ADOQuery5. FieldValues ['Заказчик']: =Zak. KeyValue;

ADOQuery5. FieldValues ['Разносчик']: =Razn. KeyValue;

ADOQuery5. FieldValues ['Сумма']: =StrToInt (Label4. Caption);

ADOQuery5. FieldValues ['Дата']: =DateToStr (Dat. Date);

ADOQuery5. UpdateRecord;

ADOQuery5. Last;

ADOQuery5. First;

st: ='SELECT Журнал. Код_журнала, Заказчики. ФИО, Разносчики. ФИО, Журнал. Сумма, Журнал. Дата ';

st: =st+'FROM Журнал, Заказчики, Разносчики WHERE (Журнал. Заказчик=Заказчики. Код_заказчика) AND ';

st: =st+' (Журнал. Разносчик=Разносчики. Код_разносчика) ORDER BY Журнал. Дата';

Form1. ADOQuery1. SQL. Clear;

Form1. ADOQuery1. SQL. Add (st);

Form1. ADOQuery1. Open;

Form1. DBGrid1. Columns [0]. Width: =0;

st: ='SELECT Товары. Наименование, Детализация. Количество FROM Детализация, Товары ';

st: =st+'WHERE (Товары. Код_товара=Детализация. Товар) AND (Детализация. Журнал='+IntToStr (Form1. ADOQuery1. FieldValues ['Код_журнала']) +') ';

Form1. ADOQuery2. SQL. Clear;

Form1. ADOQuery2. SQL. Add (st);

Form1. ADOQuery2. Open;

Button1Click (Sender);

end;

procedure TForm8. DBGrid2DblClick (Sender: TObject);

begin

Form9. ShowModal;

end;

end.

unit Unit9;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls;

type

TForm9 = class (TForm)

Edit1: TEdit;

UpDown1: TUpDown;

Button1: TButton;

Button2: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form9: TForm9;

implementation

uses Unit8;

{$R *. dfm}

procedure TForm9. Button1Click (Sender: TObject);

begin

Edit1. Text: ='1';

Form9. Close;

end;

procedure TForm9. Button2Click (Sender: TObject);

var

sum: Integer;

st: String;

begin

Form8. ADOQuery2. SQL. Clear;

Form8. ADOQuery2. SQL. Add ('SELECT * FROM Детализация');

Form8. ADOQuery2. Open;

Form8. ADOQuery2. Insert;

Form8. ADOQuery2. FieldValues ['Журнал']: =StrToInt (Form8. Label5. Caption);

Form8. ADOQuery2. FieldValues ['Товар']: =Form8. ADOQuery1. FieldValues ['Код_товара'];

Form8. ADOQuery2. FieldValues ['Количество']: =StrToInt (Edit1. Text);

Form8. ADOQuery2. UpdateRecord;

Form8. ADOQuery2. Last;

Form8. ADOQuery2. First;

Form8. ADOQuery2. SQL. Clear;

st: ='SELECT Детализация. Код_детализации, Детализация. Журнал, Товары. Наименование,';

st: =st+'Детализация. Количество FROM Детализация, Товары WHERE ';

st: =st+' (Журнал='+Form8. Label5. Caption+') AND (Детализация. Товар=Товары. Код_товара) ';

Form8. ADOQuery2. SQL. Add (st);

Form8. ADOQuery2. Open;

Form8. DBGrid1. Columns [0]. Width: =0;

sum: =StrToInt (Edit1. Text) *Form8. ADOQuery1. FieldValues ['Цена'];

Form8. Label4. Caption: =IntToStr (StrToInt (Form8. Label4. Caption) +sum);

Button1Click (Sender);

end;

end.

Показать Свернуть
Заполнить форму текущей работой