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

Проектирование базы данных для автоматизации работы салона художественной татуировки в среде разработки Delphi 7 с использование сервера баз данных Microsoft SQL Server 2008 R2. Схема алгоритма системы. Протокол тестирования программного продукта.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 15.02.2017
Размер файла 539,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Постановка задачи

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

1.2 Описание входной информации

1.3 Описание структуры базы данных

1.4 Описание выходной информации

1.5 Общие требования к программному продукту

2. Экспериментальный раздел

2.1 Обоснование выбора языка программирования и СУБД

2.2 Схема алгоритма

2.3 Описание программы

2.4 Протокол тестирования программного продукта

2.5 Руководство пользователя

Заключение

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

Приложение А. Форма выходного документа

Приложение Б. Исходный код программы

Введение

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

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

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

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

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

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

Таким образом, создание базы данных, обладающих таким свойствами, необходимое и рациональное решение.

1. Постановка задачи

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

база данные microsoft server

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

У предприятия имеются свои мастера, они характеризуются следующй информацией:

- фамилия;

- имя;

- отчество;

- стаж работы;

- стиль работы;

-номер телефона.

Мастера выполняют работу по созданию татуировки от клиентов. Клиенты описываются следующей информацией:

- фамилия;

- имя;

- отчество;

- возраст;

-контактный телефон.

Сама же работы характеризуется следующей информацией:

- мастер;

- клиент;

- дата и время сеанса.

С данной информационной системой должны работать следующие группы пользователей:

- мастер тату - салона;

- менеджер;

- администратор системы.

При работе с программным продуктом мастер должен иметь возможность решать следующие задачи:

- отмечать прошел ли сеанс.

При работе с программным продуктом менеджер должен иметь возможность решать следующие задачи:

- проводить запись на сеанс;

- отменять сеанс.

При работе с программным продуктом администратор системы должен иметь возможность решать следующие задачи:

- добавлять новых сотрудников;

- вносить изменения в информацию о сотрудниках.

1.2 Описание входной информации

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

Таблица 1.2.1 - Описание входных документов

Наименование документа

Периодичность поступления

Откуда поступает

Штатное расписание мастеров

Ежедневно

От мастеров

Данные клиента

По мере записи на сеанс

От менеджера

На основе этих документов создаются таблицы «Мастера», «Клиенты», «Работа». Пополнение базы данных осуществляется по мере поступления входных документов.

1.3 Описание структуры базы данных

База данных имеет три таблицы, которые подробно описаны в таблице 1.3.1.

Таблица 1.3.1 - Описание структуры базы данных

Назначение таблицы

Физическое имя таблицы

Наименование поля

Шифр поля

Формат поля

1

2

3

4

5

Информация по мастерам

Мастера

ID мастера*

ID*

Счетчик

Фамилия

Фамилия

Текст

Имя

Имя

Текст

Отчество

Отчество

Текст

Стаж работы

СтажРаботы

Число

Стиль работы

СтильРаботы

Текст

Номер телефона

НомерТелефона

Число

Информация по клиентам

Клиенты

ID клиента*

ID*

Счетчик

Фамилия

Фамилия

Текст

Имя

Имя

Текст

Отчество

Отчество

Текст

Контактный телефон

КонтактныйТелефон

Число

Информация о сеансах

Сеансы

ID мастера

ID*

Счетчик

Мастер

Мастер

Текст

Клиент

Клиент

Текст

Дата и время

Дата/Время

Дата

Схема отношений базы данных представлена на рисунке 1.3.1.

Рисунок 1.3.1 - Схема отношений базы данных

1.4 Описание выходной информации

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

Описание выходных документов представлено в таблице 1.4.1.

Таблица 1.4.1 - Описание выходных документов

Наименование документа

Периодичность выдачи документа

Кол-во экз.

Куда передаются

1

2

3

4

Отчет оп роделанной работе каждым мастером

Каждый месяц

1

Менеджеру салона

Форма выходных документов представлена в приложении В.

1.5 Общие требования к программному продукту

Обоснование целесообразности решения задачи: задание на дипломный проект, рассмотренное на заседании цикловой комиссии, а также необходимость в простом, удобном, надёжном и функциональном программном средстве учета выполненных работ на предприятии.

Целевые задачи:

- программа должна максимально автоматизировать бумажную работу сотрудников салона;

- программа должна сохранять и отображать необходимую информацию;

- программа должна формировать необходимые отчеты.

Программное обеспечение разрабатывается для персональной вычислительной техники типа не ниже Windows 7 со следующими характеристиками:

- объем ОЗУ не ниже 256 Мб;

- графический адаптер SVGA;

- монитор;

- сетевая карта;

- манипулятор типа "мышь";

- клавиатура;

- принтер.

ЭВМ должна работать под управлением операционной системы с графическим интерфейсом (не ниже Windows XP/7), а также поддерживать СУБД Microsoft SQL Server 2008 R2.

Функциональные возможности:

- программный продукт должен формировать и отображать выходные документы;

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

- должен быть обеспечен вывод данных в MS Word.

Требования к надежности:

- программа должна обрабатывать ошибочные действия пользователя и сообщать ему об этом;

- программа должна обеспечивать контроль входной и выходной информации;

- в программе должно быть предусмотрено разграничение прав доступа и защита от несанкционированного доступа к данным.

Требования к практичности:

- программа должна работать в многооконном графическом режиме и поддерживать работу, как клавиатуры, так и манипулятора типа "мышь";

- программа должна содержать присвоение значений по умолчанию;

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

Требования к информационной и программной совместимости:

- обеспечить работу с таблицами баз данных типа БД MS SQL Server 2008 R2 в качестве входной и выходной информации. Предусматривается взаимодействие с программными продуктами Microsoft Office.

2. Экспериментальный раздел

2.1 Обоснование выбора языка программирования и СУБД

Для создания программы использовались среда разработки Delphi 7 с использование сервера баз данных Microsoft SQL Server 2008 R2. Выбор языка программирования оказывает непосредственное влияние на быстроту разработки, надежность и эффективность программы. В качестве среды программирования для реализации системы был выбран пакет Delphi 7.

Интегрированная среда разработки Delphi с ее инструментами визуального редактирования, библиотекой компонент, механизмом баз данных и многим другим, идеально подходит для написания разумных 32-разрядных приложений Windows, используя свой диалект языка Object Pascal - Delphi Pascal, который является объектно-ориентированным.

Обоснованием выбора служат следующие факторы:

- быстрота разработка зависит, прежде всего, цена программного продукта. Для увеличения скорости написания Windows-приложений необходимо использовать средства визуального программирования. Delphi как нельзя более подходит для выполнения данной задачи, так как назначение Delphi - быстрая разработка приложений. Разработка приложений интерфейса пользователя с помощью Delphi - в основном процесс проектирования, с весьма небольшим количеством фактического программирования, что существенно сокращает время на создание удобного интерфейса, отвечающего стандартам разработки Windows-приложений. Delphi может компилировать 32-битные программы, обеспечивая высокую скорость выполнения;

- рассматриваемая относится к разряду вычислительных с использованием баз данных. В состав Delphi входит высокоэффективный компилятор с языка Object Pascal, основанный на концепции объектно-ориентированного программирования. Данный компилятор генерирует оптимизированный код, позволяющий увеличить скорость выполнения программ, что немаловажно для данного программного продукта. Delphi создает действительно откомпилированные программы, готовые для исполнения. Кроме того, для увеличения быстродействия программы и уменьшения объема занимаемой памяти используется возможность работы с динамическими структурами данных;

- постановка задачи исключает необходимость доступа к аппаратным средствам ЭВМ, поэтому отсутствует надобность выбора языка низкого уровня для написания программы или ее частей;

- создание приложений “Клиент - Сервер”. В настоящее время широко используются многозвенные информационные системы. Delphi предоставляет широкие возможности для создания приложений, поддерживающих трехзвенную систему, компонентами которой являются “тонкий” клиент, сервер приложений и сервер баз данных.

Таким образом, среда программирования Delphi является оптимальным выбором для решения поставленной задачи, так как:

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

- обладает широкими средствами визуального построения интерфейса;

- обладает обширными средствами поддержки баз данных.

Microsoft SQL Server представляет собой СУБД, обеспечивающую создание ин­формационных систем с архитектурой “клиент-сервер”, в которой он играет роль сервера баз данных. SQL Server поддерживает: тиражирование данных, параллельную обработку, создание и обработку больших баз данных, отличается простотой управления и ис­пользования.

Эта СУБД обеспечивает высокую степень защиты данных, как от случайных потерь, так и от несанкционированного доступа, обладает развитыми средствами обработки данных и хорошим быстродействием. SQL-Server предназначен для хранения большого объема данных.

SQL Server добавляет к сетевым компонентам специальные сервисы, такие как OLE DB (Object Linking and Embedding-Database - связывание и внедрение объектов базы данных) и ODBC (Open Database Connectivity - совместимость от­крытых баз данных). С их помощью обеспечивается совместимость различных клиентских приложений при работе с сервером.

2.2 Схема алгоритма

Рисунок 2.1 - Схема алгоритма главного окна системы

2.3 Описание программы

Программа Programm.exe имеет модульную структуру. При ее запуске выполняется проект Project1.dpr, который состоит из тринадцати модулей программы, описаных в таблице 2.3.1.. Модульная схема приведена в приложении Д.

Таблица 2.3.1 - Описание модулей

Процедуры

Назначение

1

2

Модуль form1.pas - панель входа

TForm1.BitBtn1Click

Вход в систему

TForm1.BitBtn2Click

«О системе»

TForm1.BitBtn3Click

Выход

Модуль form3. pas -панель авторизации

TForm3.BitBtn1Click

Вход в систему

TForm3.FormShow

Очищение поля ввода пароля

Модуль form4. pas - главная панель

TForm4.FormShow

Показ окна с функциями для разных пользователей

TForm4.N1Click

Показ окна «Пользователи»

TForm4.N2Click

Показ окна «Мастера»

TForm4.N3Click

Показ окна «Клиенты»

TForm4.N4Click

Показ окна «О системе»

TForm4.N5Click

Выход на панель входа

TForm4.BitBtn1Click

Создание отчета в MS Word

Модуль form5. pas - окно «Пользователи»

TForm5.N1Click

Показ окна «О системе»

TForm5.N2Click

Выход на панель входа

Модуль form6.pas - окно «Мастера»

Tform6.N1Click

Показ окна «О системе»

Tform6.N2Click

Выход на панель входа

Модуль form7.pas - окно «Мастера»

Tform7.N1Click

Показ окна «О системе»

Tform7.N2Click

Выход на панель входа

Модуль form8.pas - окно «О системе»

TForm8.BitBtn1Click

Выход на панель входа

2.4 Протокол тестирования программного продукта

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

Таблица 2.4.1 - Сообщения пользователю

Сообщение

Причина

Действия

1

2

3

«Выберите пользователя!»

Не выбран пользователь

Нажать кнопку «ОК» и выбрать пользователя

«Введите пароль!»

Не введен пароль

Нажать кнопку «ОК» и ввести пароль

«Неверный пароль!»

Пароль введен не верноподключение к базе данных

Нажать кнопку «ОК» и повторить набор пароля

При тестировании программного продукта на данных контрольного примера обработка данных (т.е. изменение, удаление, вывода выходных документов) осуществляется корректно.

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

2.5 Руководство пользователя

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

Первая форма - форма входа в систему (рисунок 2.5.1).

Рисунок 2.5.1 - Вход в систему

При нажатии на кнопку «О системе» открывается одноименное окно (рисунок 2.5.2).

Рисунок 2.5.2 - Окно о системе

Для закрытия окна нужно нажать кнопку «Выход». Снова появляется форма входа в систему. Для того чтобы войти в систему, необходимо нажать одноименную кнопку. Появляется окно авторизации в системе (рисунок 2.5.3).

Рисунок 2.5.3 - Авторизация в системе

Существует три типа учетных записей: мастер, менеджер и администратор системы. Войдем в систему через администратора. Перед нами появляется главное окно системы (рисунок 2.5.4).

Рисунок 2.5.4 - Главное окно системы

На главном окне расположены вкладки «Пользователи», «Мастера», «Клиенты», «О системе», «Выход».

Пункт «Пользователи» на главном окне системы (рисунок 2.5.4) открывает одноименное окно. В данном окне имеется возможность добавления, редактирования и удаления данных(рисунок 2.5.5).

Рисунок 2.5.5 - Окно "Пользователи"

Пункт «Выход» соответственно производит выход на главное окно системы.

Вкладка «Мастера» на главном окне системы (рисунок 2.5.4). В окне «Мастера» возможны добавление, редактирование, удаление иинформации по мастерам (рисунок 2.5.6).

Рисунок 2.5.6 - Окно "Мастера"

Вкладка «Клиенты» на главном окне системы (рисунок 2.5.4) вызывает одноименное окно (рисунок 2.5.7) .

Рисунок 2.5.7 - Окно "Клиенты"

В данном окне возможно формирование отчета.

Вкладка «О системе» на главном окне системы (рисунок 2.5.4) соотвествует окну «О системе» (рисунок 2.5.2).

Заключение

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

Программное обеспечение написано на языке Object Pascal с использованием среды разработки Delphi 7. Результаты выводятся в MS Word. Код программы представлен в приложении А.

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

Список использованых источников

1 Российская Федерация. Законы. О персональных данных [Текст]: федер. закон [принят Гос. Думой 8 июля 2006 г., одобр. Советом Федерации 14 июля 2006 г. от 27.07. 2006 N 152-ФЗ (ред. от 21.07.2014) ]// Информационно-правовая система КонсультантПлюс.

2 Российская Федерация. Законы. Об информации, информационных технологиях и о защите информации [Текст]: федеральный закон [принят Гос. Думой 8 июля 2006 г., от 27.07.2006 N 149-ФЗ (ред. от 13.07.2015) ] // Информационно-правовая система КонсультантПлюс.

3 ГОСТ 19.001-77. ЕСПД. Единая система программной документации Общие положения. [Текст]. - Введ. 1980 - 01 - 01. - М.: Стандартинформ, 2010.

4 ГОСТ 19.003-80. ЕСПД. Единая система программной документации. Схемы алгоритмов и программ. [Текст]. - Введ. 1981 - 01 - 07. - М.: Стандартинформ, 2010.

5 ГОСТ 19.104-78. ЕСПД. Единая система программной документации. Основные надписи. ( с изменением № 1) [Текст]. - Введ. 1980 -01 - 01. - М.: Стандартинформ, 2010 .

6 ГОСТ 19.401. - 78. Текст программы. Требования к содержанию и оформлению. Единая система программной документации [Текст]. - Введ. 1980 - 01 - 01. - М.: Стандартинформ, 2010.

7 ГОСТ 19.402 - 78. Описание программы. Единая система программной документации [Текст]. - Введ. 1980 - 01 - 01. - М.: Стандартинформ, 2010 .

8 ГОСТ 19.404 - 79. Пояснительная записка. Требования к содержанию и оформлению. Единая система документации [Текст]. - Введ. 1981 - 01 - 01. - М.: Стандартинформ, 2010.

9 ГОСТ 19.701 - 90 ( ИСО 5807 - 85 ). Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения. Единая система программной документации [Текст]. - Введ. 1992 - 01 - 01. - М.: Стандартинформ, 2010.

10 Вендров А. М., Case-технологии. Современные методы и средства проектирования информационных систем [Текст] / А. М. Вендров. - М.: Финансы и статистика, 2004. - 235 с.

11 Горев А., Эффективная работа с СУБД. [Текст] / А., Горев , Р. Ахаян , С. Макашарипов . - СПб.: Питер, 2007. - 700 с.

12 Грабер М., Введение в SQL. [Текст]: пер. с англ. / М. Грабер - М.: "ЛОРИ", 2006. - 418с;

13 Дейт К. Дж., Введение в системы баз данных [Текст]: пер. с англ./ Дейт К. Дж. - 6-е изд. - СПб.: Издательский дом "Вильямс", 2000. - 482с;

14 Карпова, И.П. Базы данных. Учебное пособие. Курс лекций и материалы для практических занятий [Текст] / И.П. Карпова.. - СПб.: Питер, 2013. -- 240 с.

15 Кочеткова, А. И. Основы управления в условиях хаоса (неопределенности). Часть 1 [Электронный ресурс] / А. И. Кочеткова. - М.: ИНФРА-М, Znanium.com, 2014. - 484 с. - ISBN 978-5-16-101634-3 (online).

16 Культин Н.Б Основы программирования в Delphi 7 [Текст] / Н.Б Культин. -- СПб.: БХВ-Петербург, 2007 г. -- 608 с.: ил.

17 Маклаков С. В., BPWin и ERWin. CASE-средства разработки информационных систем [Текст] / С. В., Маклаков - М.:Диалог-МИФИ, 2006. - 256с;

18 . Фаронов В.В. Программирование баз данных в Dephi 7. Учебный курс [Текст] / В.В.Фаронов. - СПб.: Питер, 2006 г. - 459с.: ил.

19 . Хомоненко А.Д., Гофман В.Э. Работа с БД в Dephi [Текст] / А.Д. Хомоненко. - СПб.: «БХВ-Петербург», 2009. - 1230с.

20 . Википедия: свободная энциклопедия // Режим доступа: https:// ru.wikipedia.org/wiki/, свободный.

Приложение А

Форма выходного документа

id

Мастер

Клиент

Дата/Время

1

Исхакова

Петров

24.02.2017 10:00:00

Приложение Б

Исходный код программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit3, Unit8;

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Form3.Show;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

Form8.Show;

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

close;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, Buttons, ExtCtrls, Unit2, DBCtrls;

type

TForm3 = class(TForm)

LabeledEdit2: TLabeledEdit;

BitBtn1: TBitBtn;

DBLookupComboBox1: TDBLookupComboBox;

Label1: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit4;

{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

if DBLookupComboBox1.Text='' then ShowMessage('Выберите пользователя.')

else if LabeledEdit2.Text='' then begin

ShowMessage('Введите пароль!');

LabeledEdit2.SetFocus;

end

else if LabeledEdit2.Text=DataModule2.Users.FieldByName('Пароль').AsString then begin

Form4.Show;

Hide;

end else begin

ShowMessage('Неверный пароль!');

end;

end;

procedure TForm3.FormShow(Sender: TObject);

begin

LabeledEdit2.Clear;

end;

end.

unit Unit4;

interface

uses

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

Dialogs, Unit2, DB, Grids, DBGrids, Menus, ExtCtrls, DBCtrls, StdCtrls,

Buttons, MyWord;

type

TForm4 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

N4: TMenuItem;

N5: TMenuItem;

BitBtn1: TBitBtn;

procedure FormShow(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit5, Unit6, Unit7, Unit8;

{$R *.dfm}

procedure TForm4.FormShow(Sender: TObject);

begin

if DataModule2.Users.FieldByName('Должность').AsString='Мастер' then begin

N1.Visible:=False;

N2.Visible:=False;

N3.Visible:=False;

end;

begin

if DataModule2.Users.FieldByName('Должность').AsString='Менеджер' then begin

N1.Visible:=False;

end;

end;

end;

procedure TForm4.N1Click(Sender: TObject);

begin

Form5.Show;

end;

procedure TForm4.N2Click(Sender: TObject);

begin

Form6.Show;

end;

procedure TForm4.N3Click(Sender: TObject);

begin

Form7.Show;

end;

procedure TForm4.N4Click(Sender: TObject);

begin

Form8.Show;

end;

procedure TForm4.N5Click(Sender: TObject);

begin

close;

end;

procedure TForm4.BitBtn1Click(Sender: TObject);

var

table:integer;

begin

if CreateWord then begin

VisibleWord(false);

AddDoc;

DataModule2.Works.DisableControls;

WordTableAddFromDBGrid(DBGrid1,true,table);

VisibleWord(true);

DataModule2.Works.EnableControls;

end;

end;

end.

unit Unit5;

interface

uses

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

Dialogs, Unit2, Menus, ExtCtrls, DBCtrls, Grids, DBGrids;

type

TForm5 = class(TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit7, Unit8;

{$R *.dfm}

procedure TForm5.N1Click(Sender: TObject);

begin

Form8.Show;

end;

procedure TForm5.N2Click(Sender: TObject);

begin

close;

end;

end.

unit Unit6;

interface

uses

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

Dialogs, Unit2, Grids, DBGrids, ExtCtrls, DBCtrls, Menus;

type

TForm6 = class(TForm)

MainMenu1: TMainMenu;

N3: TMenuItem;

N4: TMenuItem;

DBNavigator1: TDBNavigator;

DBGrid1: TDBGrid;

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

uses Unit8;

{$R *.dfm}

procedure TForm6.N3Click(Sender: TObject);

begin

Form8.Show;

end;

procedure TForm6.N4Click(Sender: TObject);

begin

close;

end;

end.

unit Unit7;

interface

uses

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

Dialogs, Unit2, ExtCtrls, DBCtrls, Grids, DBGrids, Menus;

type

TForm7 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

uses Unit8;

{$R *.dfm}

procedure TForm7.N1Click(Sender: TObject);

begin

form8.Show;

end;

procedure TForm7.N2Click(Sender: TObject);

begin

close;

end;

end.

unit Unit8;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm8 = class(TForm)

BitBtn1: TBitBtn;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

{$R *.dfm}

procedure TForm8.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

unit MyWord;

interface

uses Grids,SysUtils,DBGrids;

type

WdFonts=integer;

const

{ wdStyleNormal = $FFFFFFFF;

wdStyleBodyText = $FFFFFFBD;

wdStyleHeading1 = $FFFFFFFE;

wdStyleHeading2 = $FFFFFFFD;

wdStyleHeading3 = $FFFFFFFC; }

wdStyleNormal = -1;

wdStyleBodyText = -1;

wdStyleHeading1 = -2;

wdStyleHeading2 = -3;

wdStyleHeading3 = -4;

type

WdUnits=integer;

const

wdPage =$00000000;

wdCharacter =$00000001;

wdWord = $00000002;

wdSentence = $00000003;

wdParagraph = $00000004;

wdLine = $00000005;

wdStory = $00000006;

wdScreen = $00000007;

wdSection = $00000008;

wdColumn = $00000009;

wdRow = $0000000A;

wdWindow = $0000000B;

wdCell = $0000000C;

wdCharacterFormatting = $0000000D;

wdParagraphFormatting = $0000000E;

wdTable = $0000000F;

wdItem = $00000010;

wdAutoFitFixed =0;

wdAutoFitContent =1;

wdAutoFitWindow =2;

wdAdjustNone=0;

wdOrientPortrait=0;

wdOrientLandScape=1;

wdAlignParagraphCenter=1;

wdAlignParagraphLeft=0;

wdAlignParagraphRight=2;

wdMove=0;

wdExtend=1;

wdBorderTop = $FFFFFFFF;

wdBorderLeft = $FFFFFFFE;

wdBorderBottom = $FFFFFFFD;

wdBorderRight = $FFFFFFFC;

wdBorderHorizontal = $FFFFFFFB;

wdBorderVertical = $FFFFFFFA;

wdLineStyleNone=0;

wdDialogFileSaveAs = $00000054;

wdDialogFileSummaryInfo = $00000056;

wdDialogToolsTemplates = $00000057;

wdDialogFilePrint = $00000058;

wdDialogFilePrintSetup = $00000061;

wdDialogFileFind = $00000063;

wdDialogFormatAddrFonts = $00000067;

wdDialogEditPasteSpecial = $0000006F;

wdDialogEditFind = $00000070;

wdDialogEditReplace = $00000075;

Function CreateWord:boolean;

Function VisibleWord(visible:boolean):boolean;

Function AddDoc:boolean;

Function AddDocFile(FileName:string):boolean;

Function OpenDoc(file_:string):boolean;

Function SaveDocAs(file_:string):boolean;

Function CloseDoc:boolean;

Function CloseWord:boolean;

Function InsertBreak(WdBreakType:WdUnits):boolean;

Function InsertParagraphAfter:boolean;

Function InsertParagraphAfterTable(table:integer):boolean;

Function MoveInDoc(UnitType:WdUnits;Count:integer):boolean;

Function PageCount:integer;

Function WordCount:integer;

Function StartOfDoc:boolean;

Function EndOfDoc:boolean;

Function TypeTextDoc(text_:string):boolean;

Function SetTextToDoc(text_:string ;InsertAfter_:boolean):boolean;

Function GetDocToText(var text:string; wordNum:integer):boolean;

Function FindTextDoc(text_:string):boolean;

Function PasteTextDoc(text_:string):boolean;

Function FindAndPasteTextDoc(findtext_,pastetext_:string):boolean;

Function FindAndInsert(FindText,ReplacementText:string):boolean;

Function DialogWord(Dialog:Wdunits):boolean;

Function SetFont(FontName:WdFonts):boolean;

//Table-------

Function CreateTable(NumRows, NumColumns:integer;var index:integer):boolean;

Procedure GetWordTablesCellValue(Table,Row,Column:integer;var S:string );

Procedure SetWordTablesCellValue(Table,Row,Column:integer;S:string);

procedure GetTableInStringGrid(Table:integer;var StringGrid:TStringGrid);

procedure GetStringGridInTable(StringGrid:TStringGrid;var Table:integer);

procedure GetStringGridInTable2(StringGrid:TStringGrid;var Table:integer;ColArr:array of integer);

procedure WordTableAddFromDBGrid(DBGrid: TDBGrid;CollSize:boolean;var Table:integer);

Function SetSizeTable(Table:integer;RowsHeight, ColumnsWidth:real):boolean;

Function GetSizeTable(Table:integer;var RowsHeight,ColumnsWidth:real):boolean;

Function SetHeightRowTable(Table,Row:integer;RowHeight:real):boolean;

Function GetHeightRowTable(Table,Row:integer;var RowHeight:real):boolean;

Function SetWidthColumnTable(Table,Column:integer;ColumnWidth:real):boolean;

Function GetWidthColumnTable(Table,Column:integer;var ColumnWidth:real):boolean;

Function SetTextToTable(Table:integer;Row,Column:integer;text:string):boolean;

Procedure GetTextFromTable(Table:integer;Row,Column:integer;var text:string);

Function CopyHereRawFromTable(table,Row1,Row2:integer):boolean;

Function SetLineStyleBorderTable(Table:integer;Row,Column,wdBorderType,wdBorderStyle:WdUnits):boolean;

Function SetMergeCellsTable(Table:integer;Row1,Column1,Row2,Column2:integer):boolean;

procedure TableAutoFit(Table:integer);

Procedure MakeNewLineInTable(Table,AfterRow,NewRowCount:integer);

Procedure DeleteRowInTable(Table,Row:integer);

//Table-------

procedure InsertPicture(FileName:string);

implementation

uses ComObj;

var W:variant;

Function CreateWord:boolean;

begin

CreateWord:=true;

try

W:=CreateOleObject('Word.Application');

W.Options.CheckGrammarAsYouType:=False;

W.Options.CheckSpellingAsYouType:=False;

except

CreateWord:=false;

end;

End;

Function VisibleWord(visible:boolean):boolean;

begin

VisibleWord:=true;

try

W.visible:= visible;

except

VisibleWord:=false;

end;

End;

Function AddDoc:boolean;

Var Doc_:variant;

i:integer;

begin

AddDoc:=true;

try

Doc_:=W.Documents;

Doc_.Add;

except

AddDoc:=false;

end;

End;

Function AddDocFile(FileName:string):boolean;

Var Doc_:variant;

begin;

AddDocFile:=true;

try

Doc_:=W.Documents;

Doc_.Add(FileName);

except

AddDocfile:=false;

end;

end;

Function InsertBreak(WdBreakType:WdUnits):boolean;

begin

W.Selection.InsertBreak(WdBreakType);

end;

Function InsertParagraphAfter:boolean;

begin

W.Selection.InsertParagraphAfter;

W.Selection.InsertParagraphAfter;

W.Selection.Move(wdParagraph,1);

end;

Function InsertParagraphAfterTable(table:integer):boolean;

begin

W.Selection.Start:=W.ActiveDocument.Tables.Item(Table).Range.End;

W.Selection.End:=W.ActiveDocument.Tables.Item(Table).Range.End;

W.Selection.InsertParagraphAfter;

end;

Function MoveInDoc(UnitType:WdUnits;Count:integer):boolean;

begin

W.Selection.Move(UnitType,Count);

end;

Function PageCount:integer;

begin

result:=W.ActiveDocument.ComputeStatistics(2);

end;

Function WordCount:integer;

begin

result:=W.ActiveDocument.Words.Count;

end;

Function SetTextToDoc(text_:string ;InsertAfter_:boolean):boolean;

var Rng_:variant;

begin

SetTextToDoc:=true;

try

Rng_:=W.ActiveDocument.Range;

if InsertAfter_ then Rng_.InsertAfter(text_) else Rng_.InsertBefore(text_);

except

SetTextToDoc:=false;

end;

End;

Function GetDocToText(var text:string; wordNum:integer):boolean;

var Rng_:variant;

begin

GetDocToText:=true;

try

text:=W.ActiveDocument.Words.Item(wordNum).Text

except

GetDocToText:=false;

end;

End;

Function SaveDocAs(file_:string):boolean;

begin

SaveDocAs:=true;

try

W.ActiveDocument.SaveAs(file_);

except

SaveDocAs:=false;

end;

End;

Function CloseDoc:boolean;

begin

CloseDoc:=true;

try

W.ActiveDocument.Close;

except

CloseDoc:=false;

end;

End;

Function CloseWord:boolean;

begin

CloseWord:=true;

try

W.Quit;

except

CloseWord:=false;

end;

End;

Function OpenDoc(file_:string):boolean;

Var Doc_:variant;

begin

OpenDoc:=true;

try

Doc_:=W.Documents;

Doc_.Open(file_);

W.ActiveDocument.ShowSpellingErrors:=false;

except

OpenDoc:=false;

end;

End;

Function StartOfDoc:boolean;

begin

StartOfDoc:=true;

try

W.Selection.End:=0;

W.Selection.Start:=0;

except

StartOfDoc:=false;

end;

End;

Function EndOfDoc:boolean;

begin

EndOfDoc:=true;

try

W.Selection.End:=W.ActiveDocument.Characters.Count;

W.Selection.Start:=W.ActiveDocument.Characters.Count;

except

EndOfDoc:=false;

end;

End;

Function FindTextDoc(text_:string):boolean;

begin

FindTextDoc:=true;

Try

W.Selection.Find.Forward:=true;

W.Selection.Find.Text:=text_;

FindTextDoc := W.Selection.Find.Execute;

except

FindTextDoc:=false;

end;

End;

Function PasteTextDoc(text_:string):boolean;

begin

PasteTextDoc:=true;

Try

W.Selection.Delete;

W.Selection.InsertAfter (text_);

except

PasteTextDoc:=false;

end;

End;

Function TypeTextDoc(text_:string):boolean;

begin

TypeTextDoc:=true;

Try

W.Selection.Delete;

W.Selection.TypeText(text_);

except

TypeTextDoc:=false;

end;

End;

Function FindAndPasteTextDoc(findtext_,pastetext_:string):boolean;

begin

FindAndPasteTextDoc:=true;

try

W.Selection.Find.Forward:=true;

W.Selection.Find.Text:= findtext_;

if W.Selection.Find.Execute then begin

W.Selection.Delete;

W.Selection.InsertAfter (pastetext_);

end else FindAndPasteTextDoc:=false;

except

FindAndPasteTextDoc:=false;

end;

End;

Function FindAndInsert(FindText,ReplacementText:string):boolean;

const wdReplaceAll=2;

begin

W. Selection.Find.Text:=FindText;

W.Selection.Find.Replacement.Text:=ReplacementText;

FindAndInsert:=W.Selection.Find.Execute(Replace:=wdReplaceAll);

end;

Function DialogWord(Dialog:Wdunits):boolean;

begin

DialogWord:=true;

try

W.Dialogs.Item(Dialog).Show;

except

DialogWord:=false;

end;

End;

Function SetFont(FontName:WdFonts):boolean;

begin

W.Selection.Style:=(FontName);

end;

Function CreateTable(NumRows, NumColumns:integer;var index:integer):boolean;

var Range:variant;

begin

CreateTable:=true;

try

EndOfDoc;

W.ActiveDocument.Tables.Add(W.Selection.Range, NumRows:=NumRows, NumColumns:=NumColumns);

index:=W.ActiveDocument.Tables.Count;

W.ActiveDocument.Tables.Item(index).Borders.Enable:=true;

W.ActiveDocument.Range.InsertAfter(' ');

except

CreateTable:=false;

end;

End;

Procedure GetWordTablesCellValue(Table,Row,Column:integer;var S:string);

begin

S:=W.ActiveDocument.Tables.Item(Table).Cell(Row,Column).Range.Text;

S:=StringReplace(S, #$D,'',[rfReplaceAll]);

S:=StringReplace(S, #$7,'',[rfReplaceAll]);

end;

Procedure SetWordTablesCellValue(Table,Row,Column:integer;S:string);

begin

W.ActiveDocument.Tables.Item(Table).Cell(Row,Column).Range.Text:=S;

end;

procedure GetTableInStringGrid(Table:integer;var StringGrid:TStringGrid);

var

S:string;

i,j,icols,irows:integer;

begin

try

irows:=W.ActiveDocument.Tables.Item(Table).Rows.Count;

icols:=W.ActiveDocument.Tables.Item(Table).Columns.Count;

StringGrid.RowCount:=irows;

StringGrid.ColCount:=icols;

for i:=1 to irows do

begin

for j:=1 to icols do

begin

GetWordTablesCellValue(Table,i,j,S);

StringGrid.Cells[j-1,i-1]:=S;

end;

end;

except

end;

end;

procedure GetStringGridInTable(StringGrid:TStringGrid;var Table:integer);

var

S:string;

icols,irows,iGridRows,jGridCols:integer;

begin

try

iCols:=StringGrid.ColCount;

iRows:=StringGrid.RowCount;

CreateTable(iRows,iCols,Table);

for iGridRows := 1 to iRows do

for jGridCols := 1 to iCols do

W.ActiveDocument.Tables.Item(Table).Cell(iGridRows, jGridCols).Range.Text:=

StringGrid.Cells[jGridCols - 1, iGridRows - 1];

W.ActiveDocument.Range.InsertAfter(' ');

Table:=W.ActiveDocument.Tables.Count;

W.ActiveDocument.Tables.Item(Table).AutoFitBehavior(wdAutoFitContent);

InsertParagraphAfterTable(Table);

except

end;

end;

procedure GetStringGridInTable2(StringGrid:TStringGrid;var Table:integer;ColArr:array of integer);

var

S:string;

icols,irows,iGridRows,jGridCols:integer;

begin

try

iCols:=Length(ColArr);

iRows:=StringGrid.RowCount;

CreateTable(iRows,iCols,Table);

for iGridRows := 1 to iRows do

for jGridCols := Low(ColArr) to High(ColArr) do

W.ActiveDocument.Tables.Item(Table).Cell(iGridRows, jGridCols+1).Range.Text:=

StringGrid.Cells[ColArr[jGridCols], iGridRows - 1];

W.ActiveDocument.Range.InsertAfter(' ');

Table:=W.ActiveDocument.Tables.Count;

W.ActiveDocument.Tables.Item(Table).AutoFitBehavior(wdAutoFitContent);

InsertParagraphAfterTable(Table);

except

end;

end;

procedure WordTableAddFromDBGrid(DBGrid: TDBGrid;CollSize:boolean;var Table:integer);

var i, j,Col,Row,ColWidth: Integer;

S:string;

begin

Col:=DBGrid.Columns.Count;

Row:=DBGrid.DataSource.DataSet.RecordCount+1;

//SetTextToDoc(DBGrid.Columns.Items[0].Title.Caption,true);

CreateTable(Row,Col,Table);

if CollSize then ColWidth:=DBGrid.Columns.Items[0].Width;

//W.Selection.Tables.Item(Table).Columns.Item(1).SetWidth(ColumnWidth:=ColWidth,RulerStyle:=wdAdjustNone);

For j:=0 To Col-1 Do

begin

S:=DBGrid.Columns.Items[j].Title.Caption;

SetWordTablesCellValue(Table,1,j+1,S);

if CollSize then ColWidth:=DBGrid.Columns.Items[j].Width;

//W.Selection.Tables.Item(Table).Columns.Item(j+1).

// SetWidth(ColumnWidth:=ColWidth,RulerStyle:=wdAdjustNone);

end;

DBGrid.DataSource.DataSet.First;

For i:=1 To Row-1 Do

begin

For j:=0 To Col-1 Do

SetWordTablesCellValue(Table,i+1,j+1,DBGrid.Columns.Items[j].Field.AsString);

DBGrid.DataSource.DataSet.Next;

end;

DBGrid.DataSource.DataSet.First;

W.ActiveDocument.Tables.Item(Table).AutoFitBehavior(wdAutoFitContent);

end;

Function SetSizeTable(Table:integer;RowsHeight, ColumnsWidth:real):boolean;

begin

SetSizeTable:=true;

try

W.ActiveDocument.Tables.Item(Table).Columns.Width:=ColumnsWidth;

W.ActiveDocument.Tables.Item(Table).Rows.Height:=RowsHeight;

except

SetSizeTable:=false;

end;

End;

Function GetSizeTable(Table:integer;var RowsHeight,ColumnsWidth:real):boolean;

begin

GetSizeTable:=true;

try

ColumnsWidth:=W.ActiveDocument.Tables.Item(Table).Columns.Width;

RowsHeight:=W.ActiveDocument.Tables.Item(Table).Rows.Height;

except

GetSizeTable:=false;

end;

End;

Function SetHeightRowTable(Table,Row:integer;RowHeight:real):boolean;

begin

SetHeightRowTable:=true;

try

W.ActiveDocument.Tables.Item(Table).Rows.item(Row).Height:=RowHeight;

except

SetHeightRowTable:=false;

end;

End;

Function GetHeightRowTable(Table,Row:integer;var RowHeight:real):boolean;

begin

GetHeightRowTable:=true;

try

RowHeight:=W.ActiveDocument.Tables.Item(Table).Rows.item(Row).Height;

except

GetHeightRowTable:=false;

end;

End;

Function SetWidthColumnTable(Table,Column:integer;ColumnWidth:real):boolean;

begin

SetWidthColumnTable:=true;

try

W.ActiveDocument.Tables.Item(Table).Columns.Item(Column).Width:=ColumnWidth;

except

SetWidthColumnTable:=false;

end;

End;

Function GetWidthColumnTable(Table,Column:integer;var ColumnWidth:real):boolean;

begin

GetWidthColumnTable:=true;

try

ColumnWidth:=W.ActiveDocument.Tables.Item(Table).Columns.Item(Column).Width;

except

GetWidthColumnTable:=false;

end;

End;

Function SetTextToTable(Table:integer;Row,Column:integer;text:string):boolean;

begin

SetTextToTable:=true;

try

W.ActiveDocument.Tables.Item(Table).Columns.Item(Column).Cells.Item(Row).Range.Text:=text;

except

SetTextToTable:=false;

end;

End;

Procedure GetTextFromTable(Table:integer;Row,Column:integer;var text:string);

begin

try

text:=W.ActiveDocument.Tables.Item(Table).Columns.Item(Column).Cells.Item(Row).Range.Text;

except

end;

End;

Function SetLineStyleBorderTable(Table:integer;Row,Column,wdBorderType,wdBorderStyle:wdUnits):boolean;

begin

SetLineStyleBorderTable:=true;

try

W.ActiveDocument.Tables.Item(Table).Columns.Item(Column).Cells.Item(Row).Borders.Item(wdBorderType).LineStyle:=wdBorderStyle;

except

SetLineStyleBorderTable:=false;

end;

End;

Function SetMergeCellsTable(Table:integer;Row1,Column1,Row2,Column2:integer):boolean;

var cel_:variant;

begin

SetMergeCellsTable:=true;

try

cel_:=W.ActiveDocument.Tables.Item(Table).Cell(Row2,Column2);

W.ActiveDocument.Tables.Item(Table).Cell(Row1,Column1).Merge(cel_);

except

SetMergeCellsTable:=false;

end;

End;

Function CopyHereRawFromTable(table,Row1,Row2:integer):boolean;

var

Here:integer;

begin

Here:=W.Selection.Start;

W.Selection.Start:=W.ActiveDocument.Tables.Item(Table).Rows.Item(Row1).Range.start;

W.Selection.End:=W.ActiveDocument.Tables.Item(Table).Rows.Item(Row2).Range.end;

W.Selection.Copy;

W.Selection.Start:=Here;

W.Selection.PasteAndFormat (0);

end;

procedure TableAutoFit(Table:integer);

begin

W.ActiveDocument.Tables.Item(Table).AutoFitBehavior(wdAutoFitContent);

end;

Procedure MakeNewLineInTable(Table,AfterRow,NewRowCount:integer);

begin

try

W.ActiveDocument.Tables.Item(Table).Rows.Item(AfterRow).Select;

W.Selection.InsertRowsBelow(NewRowCount);

except

end;

End;

Procedure DeleteRowInTable(Table,Row:integer);

begin

try

W.ActiveDocument.Tables.Item(Table).Rows.Item(Row).Select;

W.Selection.Rows.Delete;

except

end;

End;

procedure InsertPicture(FileName:string);

begin

W.Selection.InlineShapes.AddPicture(FileName);

W.ActiveDocument.Range.InsertParagraphAfter;

end;

end.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.