Автоматизация учета коллекционных монет

  • Вид работы:
    Отчет по практике
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    878,21 Кб
  • Опубликовано:
    2012-07-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Автоматизация учета коллекционных монет

Государственное бюджетное образовательное учреждение среднего профессионального образования

Тольяттинский политехнический техникум

(ГГОУ СПО ТПТ)

Учебно-производственное отделение № 4

Специальность 230105

«Программное обеспечение вычислительной техники и автоматизированных систем»



Отчет по учебной практике по дисциплине: «Технология разработки программных продуктов» на тему: «Автоматизация учета коллекционных монет»

Студент группы В-31

С.В. Кокалин

Руководитель практики

Н.П. Савельева







Тольятти, 2012

Государственное бюджетное образовательное учреждение среднего профессионального образования

Тольяттинский политехнический техникум

(ГГОУ СПО ТПТ)

УТВЕРЖДАЮ:

Методист УПО № 4_____________ Л. Г. Светличная  “ 31 ” мая 2012 г.

ЗАДАНИЕ НА УЧЕБНУЮ ПРАКТИКУ

Студенту        Кокалину Сергею Владимировичу

Тема:

Автоматизация учета коллекционных монет

Краткое описание:

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

Содержание отчета по практике

1.   Постановка задачи. Функции, выполняемые программой. Описание входных и выходных данных

2.   Контрольный пример

3.   Проектирование базы данных

4.   Результаты тестирования программы, анализ полученных результатов.

5.   Список используемых источников.

6.   Приложение. Тексты программ.

Руководитель практики ______________________ (Н.П. Савельева)

РЕФЕРАТ

Отчет по учебной практике:  58 c., 52 рис., 1 табл., 3 источник, 3 приложения

учет МОНЕТ и КОЛЛЕКЦИОНЕРОВ в КЛУБЕ, расчет ВОЗРАСТА КАЖДОЙ МОНЕТЫ, ПОИСК ПО МОНЕТАМ, ПОИСК ПО КОЛЛЕКЦИЯМ, ПОИСК ПО КОЛЛЕКЦИОНЕРАМ, ПОИСК САМОЙ ДОРОГОЙ МОНЕТЫ, реляционная база данных,система управления базами данных

Приложение _Collection предназначено для ведения учета коллекционных монет, коллекционеров и их коллекций. Использование программы позволит производить учёт, накопление и корректировку коллекций. Хранение данных о коллекционных монетах в виде реляционной базы данных позволит быстро осуществлять просмотр и поиск нужной информации, а при необходимости формирование отчетов для вывода на печать.

Содержание

Введение

1. Общий раздел

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

.2 Проектирование структуры базы данных

.3 Технология обработки данных

.4 Разработка данных контрольного примера

2. Специальный раздел

2.1 Структура данных

.2 Описание объектов приложения

.3 Инструкции по работе с программой

2.3.1 Техническое обеспечение задачи

.3.2 Порядок установки и запуска программы

.3.3 Ввод и изменение исходных данных

.3.4 Получение выходных документов

2.4 Тестирование программы

Заключение

Список используемых источников

Приложение А Данные контрольного примера

Приложение Б Результаты тестирования программы

Приложение В Тексты программ, форм, отчетов, меню

Введение

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

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

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

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

Таким образом, необходимо автоматизировать учет коллекционных монет, а именно, спроектировать структуру реляционной базы данных средствами СУБД Microsoft Access и разработать приложение с удобным пользовательским интерфейсом для ввода, редактирования, обработки и вывода данных о монетах и их коллекционеров средствами системы Delphi.

1. Общий раздел

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

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

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

-        Учет, накопление и корректировку данных о монетах;

-        Учет, накопление и корректировку данных о коллекционерах и их коллекциях;

-        Расчёт возраста монеты;

-        Формирование полного списка монет в коллекциях;

-        Формирование списка монет, указанного коллекционера;

-        Формирование списка владельцев указанной монеты;

-        Формирование списка самых дорогих монет среди указанной валюты;

-        Анализ популярности монет;

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

-        Монета может выпускаться только один раз;

-        Коллекция может состоять из разных монет;

-        Монеты могут находиться в разных коллекциях;

-        Год выпуска монеты имеет формат ГГГГ;

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

В результате решения задачи необходимо получить выходные документы, описанные в таблице 1.1.

Таблица 1.1 - Перечень и описание выходной информации

Наименование выходной информации

Идентификатор выходной информации

Форма представления

Сроки выдачи

Получатель информации

1

2

3

4

5

Полный список монет в коллекциях

Вх-001

Документ

По требованию

Председатель, участник клуба

Список монет коллекционера

Вх-002

Документ

По требованию

Председатель, участник клуба

Список коллекционеров монеты

Вх-003

Документ

По требованию

Председатель, участник клуба

Список самых дорогих монет среди валюты

Вх-004

Документ

По требованию

Председатель, участник клуба

Общее количество монет

Вх-005

Документ

По требованию

Председатель


Формы выходных документов представлены на рисунках 1.1-1.5

Вх-001 Наименование клуба ___________________ Председатель________________ Полный список монет в коллекциях


Монета

Год выпуска

Цена

Тираж

Возраст монеты

Коллекционер

Телефон

Адрес












Найдено монет в коллекциях____________

Рисунок 1.1 - Форма выходного документа «Полный список монет в коллекциях»

Вх-002 Наименование клуба ___________________ Председатель________________ Список монет коллекционера Коллекционер___________________

 Валюта Номинал Количество Цена Возраст монеты       

Найдено монет в коллекциях____________

Рисунок 1.2 - Форма выходного документа «Список монет коллекционера»

Вх-003 Наименование клуба ___________________ Владелец__________________ Список коллекционеров Монета___________________

 Коллекционер Телефон Адрес Количество      

Найдено коллекционеров____________

Рисунок 1.3 - Форма выходного документа «Список владельцев монеты»

Вх-004 Наименование клуба ___________________ Владелец__________________ Список самых дорогих монет среди валюты Валюта___________________

 Монета Цена Коллекционер Адрес      

Найдено монет____________

Рисунок 1.4 - Форма выходного документа «Список самых дорогих монет»

Вх-005 Наименование клуба ___________________ Владелец__________________ Общее количество коллекционных монет

 Монета Количество    

Общее количество монет____________

Рисунок 1.5 - Форма выходного документа «Общее количество коллекционных монет»

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

Входная информация для решения задачи делится на нормативно-справочную, условно-постоянную, оперативную информацию и запросные формы.

Перечень и описание входной информации представлен в таблице 1.2.

Таблица 1.2 - Перечень и описание входной информации

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

Вид информации

Идентификатор

Форма представления

1

2

3

4

Монета

УПИ

В-001

Документ

Описание коллекции

ОУИ

В-002

Документ

Поиск монет коллекционера

Запросная форма

З-001

Видеограмма

Поиск коллекционеров монеты

Запросная форма

З-002

Видеограмма

Поиск самой дорогой монеты среди валюты

Запросная форма

З-003

Видеограмма


Формы выходных документов представлены на рисунках 1.6-1.10

В-001 Монета ________

Валюта____________ Описание__________ __________________ __________________ __________________

Номинал_____________ Год выпуска__________ Тираж_______________ Цена_________________

Рисунок 1.6 - Форма входного документа «Описание Монет»

В-002 Коллекционер

Номер коллекционера___

Фамилия__________ Имя ____________ Отчество____________

Адрес__________ Телефон_________

Описание коллекции Монета Количество  _______________________ _______________________ 

Рисунок 1.7 - Форма входного документа «Коллекция»

З-001 Поиск монет коллекционера Коллекционер_________

Рисунок 1.8 - Запросная форма «Поиск монет коллекционера»

З-002 Поиск коллекционеров монеты Монета______________

Рисунок 1.9 - Запросная форма «Поиск коллекционеров монеты»

З-003 Поиск самой дорогой монеты среди валюты Валюта______________

Рисунок 1.10 - Запросная форма «Поиск самой дорогой монеты среди валюты»

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

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

Таблица 1.3 - Перечень и описание реквизитов входной и выходной информации

Наименование реквизита

Идентификатор реквизита

Идентификатор документа

Характеристика реквизита

1

2

3

4

Монета

Монета

Вх-001, Вх-003, Вх-004, Вх-005,В-001,В-002, З-002

А(30)

Год выпуска

Год

Вх-001, В-001

9(4)

Цена

Цена

Вх-001, Вх-002, Вх-004, В-001

9(8)

Тираж

Тираж

Вх-001,В-001

9(8)

Возраст

Возраст

Вх-001, Вх-002

9(4)

Коллекционер

Коллекционер

Вх-001, Вх-003, Вх-004, З-001

А(50)

Телефон

Телефон

Вх-001, Вх-003, В-002

А(10)

Адрес

Адрес

Вх-001, Вх-003, Вх-004, В-002

А(100)

Валюта

Валюта

Вх-002, Вх-004, В-001, З-003

А(30)

Номинал

Номинал

Вх-002, В-001

9(10).9(2)

Количество

Кол

Вх-002, Вх-003, Вх-005, В-002

9(4)

Описание

Описание

В-001

А(255)

Номер коллекционера

Код_коллекционера

В-002

9(6)

ФИО

Фамилия, Имя, Отчество

В-001

А(30)


1.5 Математическое описание задачи

Для расчёта возраста используется формула 1.1

(1.1)

1.6 Проектирование структуры базы данных

На основе анализа исходной информации предметной области проведена группировка реквизитов и выделение информационных объектов задачи с учётом требований нормализации отношений для построения реляционной модели данных. Связи между выявленными информационными объектами определяются реальными отношениями между парами объектов. При их определении учитывались сведения из описания предметной области. В таблице 1.4 представлено описание связей между информационными объектами задачи.

Таблица 1.4 - Описание связей между информационными объектами

Главный объект

Подчинённый объект

Тип отношений

Ключи связи

1

2

3

4

Валюта

Монета

1:М

Код_валюты

Монета

Коллекция

1:М

Код_монеты

Коллекционер

Коллекция

1:М

Код_коллекционера


Графическое изображение информационно-логической модели в канонической форме, наглядно показывающей иерархические отношения подчинённости информационных объектов, приведено на рисунке 1.11

Рисунок 1.11 - Информационно-логическая модель данных

На рисунке 1.12 представлена Структура реляционной базы данных

Рисунок 1.12 - Логическая структура базы данных

1.7 Технология обработки данных

Решение задачи необходимо проводить по следующим этапам:

.        Ввод данных о валютах через экранную форму с возможностью корректировки данных;

.        Ввод данных о коллекционерах через экранную форму с возможностью корректировки данных;

.        Ввод данных о монетах через экранную форму с возможностью корректировки данных;

.        Ввод данных о коллекциях через экранную форму с возможностью корректировки данных;

-        Формирование полного списка монет в коллекциях;

-        Формирование списка монет, указанного коллекционера;

-        Формирование списка владельцев указанной монеты;

-        Формирование списка самых дорогих монет среди указанной валюты;

-        Анализ популярности монет;

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



1.8 Разработка данных контрольного примера

Для последующего тестирования программы был разработан контрольный пример средствами MS EXCEL. Данные контрольного примера представлены в приложение А.

2. Специальный раздел

.1 Структура данных

Для хранения данных о клубе коллекционеров средствами СУБД Access была создана база данных, содержащая 4 таблиц, для каждой из которых был определен первичный ключ и вспомогательные индексы. Кроме того, для хранения данных о клубе нумизматов было создана вспомогательная таблица. Описание базы данных и таблиц представлено на рисунках 2.1-2.5

Рисунок 2.1 - Структура таблицы Коллекция

Рисунок 2.2 - Структура таблицы Коллекционер

Рисунок 2.3 - Структура таблицы Монета

Рисунок 2.4 - Структура таблицы Валюта

Рисунок 2.5 - Схема данных

2.2 Описание объектов приложения

Для обработки данных о клуба коллекционеров средствами СУБД FoxPro были созданы программы, формы ввода данных и критериев поиска, отчеты для печати, меню. Описание всех объектов приложения представлено в таблице 2.1 и на рисунке 2.6. На рисунке 2.7 представлена связь объектов приложения в меню.

Таблица 2.1 - Описание объектов приложения

Имя

Тип

Назначение

1

2

3

Dm_collection

Модуль данных

Доступ к информации из БД и связи с отчетами

Fm_ob_avtore

Форма

Просмотр информации об авторе

Fm_collections

Форма

Просмотр и редактирование данных о коллекционерах и их коллекциях

Fm_valuta

Форма

Просмотр и редактирование данных о монетах

Fm_o_prog

Форма

Просмотр информации о программе

Fm_poisk1

Форма

Fm_poisk3

Форма

Поиск владельцев заданной монеты

Fm_poisk4

Форма

Поиск самых дорогих монет среди валюты

Fm_cleardata

Форма

Очистка баз данных

Fm_settings

Форма

Просмотр и редактирование данных о владельце клуба и его названии

Fm_main

Форма

Главная форма. Начальные установки и запуск меню

R_poisk1

Отчёт

Монеты коллекционера

R_poisk2_00

Отчёт

Полный список данных

R_poisk2_10

Отчёт

Полный список данных с итоговой группировкой по коллекционеру

R_poisk2_11

Отчёт

Полный список данных с подробной группировкой по коллекционеру

R_poisk2_21

Отчёт

Полный список данных с итоговой группировкой по монетам

R_poisk2_22

Отчёт

Полный список данных с подробной группировкой по монетам

R_poisk3

Отчёт

Коллекционеры монеты

R_poisk4

Отчёт

Самая дорогая монета среди валюты и её владельцы

Help1

Справка

Фаил помощи


 

Рисунок 2.6 - Объекты приложения и отчёта

2.3 Инструкции по работе с программой

.3.1 Техническое обеспечение задачи

Для корректного функционирования программы необходимо иметь компьютер с следующими характеристиками:

         процессор не менее 500 МГЦ

         ОЗУ не менее 256 Мб

         свободного места на диске не менее 30 Мб

         принтер

         операционная система Windows XP, Vista, Windows 7

         программы MS Access 2010

2.3.2 Порядок установки и запуска программы

Для установки программы нужно скопировать и запустить файл установки setup_collection.exe, 1мб и указать путь установки программы.(рисунок …)

Рисунок - Вид окна установки программы

После установки в заданной папке будут содержаться следующие файлы:

-......................... _Collection.exe (2мб) - файл запуска программы

-        Db.accdb (2мб) - фаил хранит базу данных

-        Reports.rav - (500кб) - фаил хранящий отчёты

-        Help1.chm - (300кб) - справочный фаил

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

Для получения справки о программе нажмите на пункт меню «Справка» или нажмите клавишу F1 на клавиатуре. Программа выдаст справку

2.3.3 Ввод и изменение исходных данных

Перед началом работы можно провести очистку данных. Надо перейти в пункт основного меню «Данные» и выбрать пункт «Очистка данных». На форме, определить данные для удаления и нажать кнопку «Удалить»

Для ввода и редактирования справочных данных надо перейти в пункт меню “Справочники” и открыть форму «Валюта»

Данные представлены в виде таблицы, для перемещения по которой можно использовать полосу прокрутки, а также стрелки в нижней и верхней панели навигатора. Кроме кнопок перемещения навигатор имеет кнопку добавления новой записи, удаления, редактирование выбранной записи, сохранение изменений , отказ от изменений и обновление данных. Закрытие формы выполняется кнопками окна Х в верхней правой части и кнопкой «Выход». При вводе и редактировании данных автоматически рассчитывается возраст монеты.

Рисунок … Вид кнопок навигации

Рисунок … Вид кнопки добавления записи

Рисунок … Вид кнопки сохранения изменений

Рисунок … Вид кнопки удаления записи

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

2.3.4..... Получение выходных документов

Для получения других выходных документов выберите в главном меню пункт «Отчётность», а затем необходимый документ

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

Для печати найденных данных с помощью кнопки «Печать» отчет отображается в окне предварительного просмотра.

2.4 Тестирование программы

Тестирование программы проводилось по данным контрольного примера, и результаты представлены в Приложении Б. Оно показало, что программа работает стабильно, так как данные контрольного примера совпадают с результатами тестирования.

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

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

Для обеспечения безопасности данных при попытке удаления выдается запрос на подтверждение, представленное на рисунке

Доступ в поля с наименованием «Код» запрещён, т.к. программа сама проставит коды.

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

На остальных запросных формах проверки аналогичны.

Заключение

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

Была спроектирована реляционная база данных и приложение для ее обработки реализации в СУБД MS Access.

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

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

К недостаткам программы можно отнести:

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

-        Неудобная справочная система

         Отсутствие контроля при удалении полей

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

Список используемых источников

1 Иванова Г.С. Технология программирования: Учебник для вузов.-М.: Изд-во МГТУ им. Н.Э. Баумана, 2002.-320с.:ил.

Вендров А.М. Практикум по проектированию программного обеспечения экономических информационных систем. - М.: Финансы и статистика, 2002.

М. Фленов. Библия Delphi, издательство: БХВ-Петербург, ISBN 5-94157-456-8; 2005

#"564416.files/image020.jpg">

Страница «Полный список»


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


ПРИЛОЖЕНИЕ Б

Результаты тестирования программы




программа база данное


ПРИЛОЖЕНИЕ В

Текст программ, форм, меню и отчетов

main;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, jpeg, ExtCtrls, Menus, dm , ob_avtore, Buttons,, ToolWin, ActnMan, ActnCtrls, ComCtrls, ShellAPI;_main = class(TForm): TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TOpenDialog;: TImage;: TBitBtn;: TLabel;: TMenuItem;: TImageList;: TToolBar;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TOpenDialog;FormActivate(Sender: TObject);N4Click(Sender: TObject);N15Click(Sender: TObject);FormCreate(Sender: TObject);FormCloseQuery(Sender: TObject; var CanClose: Boolean);N1Click(Sender: TObject);N14Click(Sender: TObject);BitBtn1Click(Sender: TObject);N24Click(Sender: TObject);N31Click(Sender: TObject);N22Click(Sender: TObject);N41Click(Sender: TObject);N2Click(Sender: TObject);N42Click(Sender: TObject);N25Click(Sender: TObject);N34Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_main: Tfm_main;:integer;:string;:array[0..254] of char;valuta, moneta, collections, poisk1, poisk3, poisk4, poisk2, settings,, avtor;

//uses Unit1;

{$R *.dfm}Tfm_main.BitBtn1Click(Sender: TObject);;;Tfm_main.FormActivate(Sender: TObject);filename,prov,ds:string;dm_collection.Connectionbd.Connected = false thenopendialog.Execute = true then:=opendialog.FileName;:='Provider=Microsoft.ACE.OLEDB.12.0;Password="";User ID=Admin;';:='Data Source='+filename;_collection.Connectionbd.ConnectionString:=prov+ds;;_collection.Connectionbd.Connected:=true;_collection.t_valuta.Active:=true;_collection.t_moneta.active:=true;_collection.t_kollektioner.active:=true;_collection.t_collection.Active:=true;_collection.t_monetaval.Active:=true;_collection.t_settings.Active:=true;('Неверная база данных. Пожалуйста выберите другую.');;(dm_collection.t_settings.active=True) or (opendialog.Execute = false);

{flag:=1;; };;Tfm_main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);flag = 0 thenMessageDlg('Подтвердите завершение работы с программой',mtInformation,[mbYes,mbNo],0)=mrYesCanClose:=trueCanClose:=false;Tfm_main.FormCreate(Sender: TObject);_collection.Connectionbd.Connected:=false;;Tfm_main.N14Click(Sender: TObject);_poisk1.showmodal;;Tfm_main.N15Click(Sender: TObject);_ob_avtore.ShowModal;;Tfm_main.N22Click(Sender: TObject);_poisk2.showmodal;;Tfm_main.N24Click(Sender: TObject);_poisk3.showmodal;;Tfm_main.N25Click(Sender: TObject);_o_prog.ShowModal;;Tfm_main.N31Click(Sender: TObject);_poisk4.showmodal;;Tfm_main.N34Click(Sender: TObject);(fm_main.Handle,nil,PChar(ExtractFilePath(Application.ExeName)+'help1.chm'),nil,nil,SW_RESTORE);;Tfm_main.N4Click(Sender: TObject);_valuta.ShowModal;;Tfm_main.N1Click(Sender: TObject);_collection.showmodal;;Tfm_main.N41Click(Sender: TObject);_settings.showmodal;;Tfm_main.N2Click(Sender: TObject);_cleardate.showmodal;;Tfm_main.N42Click(Sender: TObject);.Close;;.ob_avtore;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, jpeg, ExtCtrls, Buttons;_ob_avtore = class(TForm): TLabel;: TImage;: TBitBtn;BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_ob_avtore: Tfm_ob_avtore;main;

{$R *.dfm}Tfm_ob_avtore.BitBtn1Click(Sender: TObject);_ob_avtore.Close;;.

unit dm;, Messages,SysUtils, Classes, DB, ADODB, Variants, Graphics, Controls, Forms,, StdCtrls, jpeg, ExtCtrls, Menus, RpCon, RpConDS, RpDefine,, RpBase, RpSystem;_collection = class(TDataModule): TADOConnection;_valuta: TADOTable;_valuta: TDataSource;_moneta: TADOTable;_moneta: TDataSource;_kollektioner: TADOTable;_kollektioner: TDataSource;_collection: TADOTable;_collection: TDataSource;: TADOQuery;_valutakod_valuta: TIntegerField;_valutavaluta: TWideStringField;_monetakod_moneta: TIntegerField;_monetakod_valuta: TIntegerField;_monetanominal: TFloatField;_monetagod: TIntegerField;_monetatirazh: TIntegerField;_monetaopisanie: TWideStringField;_monetaprice: TIntegerField;_kollektionerkod_kollek: TIntegerField;_kollektionerfam: TWideStringField;_kollektionerimy: TWideStringField;_kollektionerotch: TWideStringField;_kollektionertelefon: TWideStringField;_kollektioneradres: TWideStringField;_collectionkod_kollek: TIntegerField;_collectionkod_moneta: TIntegerField;_collectionkol: TIntegerField;_monetavozrast: TIntegerField;_monetaval: TADOTable;_monetaval: TDataSource;_monetavalkod_moneta: TIntegerField;_monetavalkod_valuta: TIntegerField;_monetavalnominal: TFloatField;_monetavalgod: TIntegerField;_monetavaltirazh: TIntegerField;_monetavalopisanie: TWideStringField;_monetavalprice: TIntegerField;_monetavalvozrast: TIntegerField;_monetavalmoneta: TStringField;_monetaname: TStringField;_collectionmo: TStringField;_monetamoneta: TStringField;_kollektionerfio: TStringField;_q: TDataSource;_calc: TADOQuery;_q_calc: TDataSource;_dop: TADOQuery;: TRvProject;: TRvSystem;_poisk1: TRvDataSetConnection;_poisk3: TRvDataSetConnection;_poisk4: TRvDataSetConnection;_poisk2_00: TRvDataSetConnection;_poisk2_10: TRvDataSetConnection;_poisk2_11: TRvDataSetConnection;_poisk2_20: TRvDataSetConnection;_poisk2_21: TRvDataSetConnection;_settings: TDataSource;_settings: TADOTable;_settings: TRvDataSetConnection;t_valutaBeforeDelete(DataSet: TDataSet);t_monetaCalcFields(DataSet: TDataSet);t_monetavalCalcFields(DataSet: TDataSet);t_kollektionerBeforeDelete(DataSet: TDataSet);t_monetaBeforeDelete(DataSet: TDataSet);t_kollektionerCalcFields(DataSet: TDataSet);t_collectionAfterInsert(DataSet: TDataSet);t_collectionBeforeInsert(DataSet: TDataSet);t_collectionAfterPost(DataSet: TDataSet);t_collectionAfterDelete(DataSet: TDataSet);t_valutaBeforeInsert(DataSet: TDataSet);t_valutaAfterInsert(DataSet: TDataSet);t_monetaAfterInsert(DataSet: TDataSet);t_monetaBeforeInsert(DataSet: TDataSet);t_monetavalBeforeInsert(DataSet: TDataSet);t_monetavalAfterInsert(DataSet: TDataSet);t_kollektionerBeforeInsert(DataSet: TDataSet);t_kollektionerAfterInsert(DataSet: TDataSet);

{ Private declarations }

{ Public declarations };_collection: Tdm_collection;_val,kod_kollek,kod_moneta,i:integer;valuta,collections;

{$R *.dfm}Tdm_collection.t_collectionAfterDelete(DataSet: TDataSet);kol:integer;fm_collection.dbedit2.text<>'' then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего монет у коллекционера:'+inttostr(kol);;;Tdm_collection.t_collectionAfterInsert(DataSet: TDataSet);kol:integer;fm_collection.dbedit2.text<>'' then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего монет у коллекционера:'+inttostr(kol);;;Tdm_collection.t_collectionAfterPost(DataSet: TDataSet);kol:integer;fm_collection.dbedit2.text<>'' then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего монет у коллекционера:'+inttostr(kol);;;Tdm_collection.t_collectionBeforeInsert(DataSet: TDataSet);kol:integer;fm_collection.dbedit2.text<>'' then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE kod_kollek='+fm_collection.dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_collection.txt_itog.Caption:='Всего монет у коллекционера:'+inttostr(kol);;;Tdm_collection.t_kollektionerAfterInsert(DataSet: TDataSet);_kollektionerkod_kollek.Value:=kod_kollek;;Tdm_collection.t_kollektionerBeforeDelete(DataSet: TDataSet);i,prov:integer;:=t_kollektionerkod_kollek.Value;.SQL.Text:='SELECT * FROM t_collection WHERE kod_kollek='+inttostr(prov);.Open;q.RecordCount>0 thenmessagedlg ('В таблице коллекций у данного коллекционера имеются монеты. Удалить коллекционера и его коллекцию? ', mtConfirmation, [mbyes,mbno],0) = mrno Then;;messagedlg (' Удалить коллекционера ? ', mtConfirmation, [mbyes,mbno],0) = mrno then;;;Tdm_collection.t_kollektionerBeforeInsert(DataSet: TDataSet);:=1;_kollektioner.First;i=t_kollektionerkod_kollek.value do:=i+1;_kollektioner.Next;;_kollek:=i;;Tdm_collection.t_kollektionerCalcFields(DataSet: TDataSet);_kollektionerfio.value := t_kollektionerfam.value+' '+t_kollektionerimy.value+' '+t_kollektionerotch.value;;Tdm_collection.t_monetaAfterInsert(DataSet: TDataSet);_monetakod_moneta.value:=kod_moneta;;Tdm_collection.t_monetaBeforeDelete(DataSet: TDataSet);i,prov:integer;messagedlg (' Удалить монету? ', mtConfirmation, [mbyes,mbno],0) = mrno then:=t_monetakod_moneta.Value;.SQL.Text:='SELECT * FROM t_collection WHERE kod_moneta='+inttostr(prov);.Open;q.RecordCount>0 then

// messagedlg('Удаление невозможно. Данная монета состоит в коллекциях.');;;;Tdm_collection.t_monetaBeforeInsert(DataSet: TDataSet);:=1;_moneta.First;i=t_monetakod_moneta.value do:=i+1;_moneta.Next;;_moneta:=i;;Tdm_collection.t_monetaCalcFields(DataSet: TDataSet);Year, Month, Day: word;(now(),year,month,day);_monetavozrast.value:=year - t_monetagod.value;_monetamoneta.value:=trim(t_monetaname.value)+' '+trim(varToStr(t_monetanominal.Value));;Tdm_collection.t_monetavalAfterInsert(DataSet: TDataSet);_monetavalkod_moneta.value:=kod_moneta;;Tdm_collection.t_monetavalBeforeInsert(DataSet: TDataSet);kol,i:integer;.SQL.Text:='SELECT * FROM t_moneta';.Open;:=1;I := 1 to q.RecordCount do.SQL.Text:='SELECT * FROM t_moneta WHERE kod_moneta='+inttostr(i);.Open;q.RecordCount = 0 then_moneta:=i;;;;_moneta:=i;;Tdm_collection.t_monetavalCalcFields(DataSet: TDataSet);Year, Month, Day: word;(now(),year,month,day);_monetavalvozrast.value:=year - t_monetavalgod.value;

//t_monetavalmoneta.Value:=trim(t_monetavalname.value)+' '+trim(varToStr(t_monetavalnominal.value));;Tdm_collection.t_valutaBeforeDelete(DataSet: TDataSet);i,prov:integer;:=t_valutakod_valuta.Value;.SQL.Text:='SELECT * FROM t_moneta WHERE kod_valuta='+inttostr(prov);.Open;q.RecordCount>0 thenmessagedlg ('В таблице монета имеются монеты этой валюты. Удалить валюту и монеты? ', mtConfirmation, [mbyes,mbno],0) = mrno Then;;messagedlg (' Удалить валюту ? ', mtConfirmation, [mbyes,mbno],0) = mrno then;;;Tdm_collection.t_valutaBeforeInsert(DataSet: TDataSet);:=1;_valuta.First;i=t_valutakod_valuta.value do:=i+1;_valuta.Next;;_val:=i;;Tdm_collection.t_valutaAfterInsert(DataSet: TDataSet);_valutakod_valuta.Value:=kod_val;;.valuta;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, DBGrids, dm, StdCtrls, ExtCtrls, DBCtrls, Buttons;_valuta = class(TForm): TDBGrid;: TDBNavigator;: TBitBtn;: TDBGrid;: TDBNavigator;: TLabel;btn_backClick(Sender: TObject);BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_valuta: Tfm_valuta;main;

{$R *.dfm}Tfm_valuta.BitBtn1Click(Sender: TObject);.Close;;Tfm_valuta.btn_backClick(Sender: TObject);_valuta.close;;.collections;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, dm, Mask, DBCtrls, ExtCtrls, Grids, DBGrids;_collection = class(TForm): TBitBtn;: TDBNavigator;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TDBGrid;: TDBNavigator;_itog: TLabel;: TLabel;BitBtn1Click(Sender: TObject);DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);FormActivate(Sender: TObject);

{ Private declarations }

{ Public declarations };_collection: Tfm_collection;

{$R *.dfm}Tfm_collection.BitBtn1Click(Sender: TObject);.Close;;Tfm_collection.DBNavigator1Click(Sender: TObject;: TNavigateBtn);kol:integer;dbedit1.text<>'' then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE kod_kollek='+dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_itog.Caption:='Всего монет у коллекционера:'+inttostr(kol);;;Tfm_collection.FormActivate(Sender: TObject);kol:integer;dbedit1.text<>'' then_collection.q.SQL.text:='SELECT * FROM t_collection WHERE kod_kollek='+dbedit1.text;_collection.q.Open;:=dm_collection.q.recordcount;_itog.Caption:='Всего монет у коллекционера:'+inttostr(kol);;;.poisk1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, dm, StdCtrls, DBCtrls, Buttons, Grids, DBGrids, ExtCtrls;_poisk1 = class(TForm): TLabel;: TBitBtn;_koll: TDBLookupListBox;_find: TBitBtn;_print: TBitBtn;: TDBGrid;_kol: TLabel;_summa: TLabel;_cancel: TBitBtn;: TLabel;_sort: TRadioGroup;BitBtn1Click(Sender: TObject);btn_findClick(Sender: TObject);FormCreate(Sender: TObject);Btn_cancelClick(Sender: TObject);rg_sortClick(Sender: TObject);btn_printClick(Sender: TObject);zag();FormActivate(Sender: TObject);FormDeactivate(Sender: TObject);

{ Private declarations }

{ Public declarations };_poisk1: Tfm_poisk1;:string;main;

{$R *.dfm}Tfm_poisk1.zag();.DBGrid1.Columns[0].Title.Caption:='Валюта';.DBGrid1.Columns[0].Width:=150;.DBGrid1.columns[0].Alignment:=tacenter;.DBGrid1.Columns[1].Title.Caption:='Номинал';.DBGrid1.Columns[1].Width:=50;.DBGrid1.columns[1].Alignment:=tacenter;.DBGrid1.Columns[2].Title.Caption:='Количество';.DBGrid1.Columns[2].Width:=70;.DBGrid1.columns[2].Alignment:=tacenter;.DBGrid1.Columns[3].Title.Caption:='Цена';.DBGrid1.Columns[3].Width:=50;.DBGrid1.columns[3].Alignment:=tacenter;.DBGrid1.Columns[4].Title.Caption:='Возраст';.DBGrid1.Columns[4].Width:=50;.DBGrid1.columns[4].Alignment:=tacenter;;Tfm_poisk1.BitBtn1Click(Sender: TObject);.close;;Tfm_poisk1.btn_findClick(Sender: TObject);:='SELECT t_valuta.valuta, t_moneta.nominal, t_collection.kol , t_moneta.price ,'+

' Year(Date())- god AS vozrast FROM t_valuta INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection ON t_kollekti'+

'oner.kod_kollek = t_collection.kod_kollek) ON t_moneta.kod_moneta = t_collection.kod_moneta) ON t_va'+

'luta.kod_valuta = t_moneta.kod_valuta';lb_koll.KeyValue<=0 then // Если не выбран коллекционер('Вы не выбрали коллекционера',mtInformation,[mbOk],0):=global+' WHERE t_collection.kod_kollek='+inttostr(lb_koll.KeyValue);_collection.Q.SQL.Text:=global;_collection.Q.Open;;dm_collection.Q.RecordCount=0 then//Если не найдены данные('Монет у коллекционера не найдено',mtInformation,[mbOk],0);// Если найдено_print.enabled:=true;_kol.Caption:='Количество типов монет:'+inttostr(dm_collection.Q.RecordCount);_collection.Q_calc.SQL.text:='SELECT sum(kol) as summa FROM t_collection WHERE kod_kollek='+inttostr(lb_koll.KeyValue);_collection.q_calc.Open;_summa.caption:='Всего монет:'+dm_collection.Q_calc.FieldByName('summa').AsString;;;;Tfm_poisk1.Btn_cancelClick(Sender: TObject);:='SELECT t_valuta.valuta , t_moneta.nominal , t_collection.kol , t_moneta.price ,'+

' Year(Date())- god AS vozrast FROM t_valuta INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection ON t_kollekti'+

'oner.kod_kollek = t_collection.kod_kollek) ON t_moneta.kod_moneta = t_collection.kod_moneta) ON t_va'+

'luta.kod_valuta = t_moneta.kod_valuta';_collection.Q.SQL.Text:=global;_collection.Q.Open;_kol.Caption:='';_summa.Caption:='';_print.Enabled:=false;_sort.ItemIndex:=-1;_koll.KeyValue:=-1;;;Tfm_poisk1.FormActivate(Sender: TObject);:='SELECT t_valuta.valuta , t_moneta.nominal , t_collection.kol , t_moneta.price ,'+

' Year(Date())- god AS vozrast FROM t_valuta INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection ON t_kollekti'+

'oner.kod_kollek = t_collection.kod_kollek) ON t_moneta.kod_moneta = t_collection.kod_moneta) ON t_va'+

'luta.kod_valuta = t_moneta.kod_valuta';_collection.Q.SQL.Text:=global;_collection.Q.Open;;_print.Enabled:=false;_sort.ItemIndex:=-1;_koll.KeyValue:=-1;;Tfm_poisk1.FormCreate(Sender: TObject);_print.Enabled:=false;

{ };Tfm_poisk1.rg_sortClick(Sender: TObject);sort:string;rg_sort.ItemIndex of

: sort:=' ORDER BY t_valuta.valuta ASC';

: sort:=' ORDER BY t_moneta.nominal ASC';

: sort:=' ORDER BY t_collection.kol ASC';

: sort:=' ORDER BY t_moneta.price ASC';

: sort:=' ORDER BY Year(Date())- god ASC';;_collection.Q.SQL.Text:=global+sort;_collection.Q.Open;;;Tfm_poisk1.btn_printClick(Sender: TObject);txt,filename:string;;:=lb_koll.SelectedItem;_collection.Reports.SetParam('poisk1',txt);_collection.Reports.ExecuteReport('r_poisk1');('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;Tfm_poisk1.FormDeactivate(Sender: TObject);_collection.Q.SQL.Text:=global;_collection.Q.Open;;;.poisk3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, dm, DBCtrls, StdCtrls, Grids, DBGrids, Buttons, ExtCtrls;_poisk3 = class(TForm): TLabel;_mon: TDBLookupListBox;: TLabel;_find: TBitBtn;_print: TBitBtn;_cancel: TBitBtn;: TDBGrid;_kol: TLabel;_sort: TRadioGroup;: TBitBtn;btn_findClick(Sender: TObject);FormActivate(Sender: TObject);Btn_cancelClick(Sender: TObject);rg_sortClick(Sender: TObject);BitBtn1Click(Sender: TObject);zag();btn_printClick(Sender: TObject);

{ Private declarations }

{ Public declarations };_poisk3: Tfm_poisk3;:string;main;

{$R *.dfm}Tfm_poisk3.zag();.DBGrid1.Columns[0].Title.Caption:='Фамилия';.DBGrid1.Columns[0].Width:=100;.DBGrid1.columns[0].Alignment:=tacenter;.DBGrid1.Columns[1].Title.Caption:='Имя';.DBGrid1.Columns[1].Width:=100;.DBGrid1.columns[1].Alignment:=tacenter;.DBGrid1.Columns[2].Title.Caption:='Отчество';.DBGrid1.Columns[2].Width:=100;.DBGrid1.columns[2].Alignment:=tacenter;.DBGrid1.Columns[3].Title.Caption:='Телфон';.DBGrid1.Columns[3].Width:=100;.DBGrid1.columns[3].Alignment:=tacenter;.DBGrid1.Columns[4].Title.Caption:='Адрес';.DBGrid1.Columns[4].Width:=100;.DBGrid1.columns[4].Alignment:=tacenter;.DBGrid1.Columns[5].Title.Caption:='Количество';.DBGrid1.Columns[5].Width:=100;.DBGrid1.columns[5].Alignment:=tacenter;;Tfm_poisk3.Btn_cancelClick(Sender: TObject);:='SELECT t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch, t_kollektioner.telefon, '+

't_kollektioner.adres, t_collection.kol '+

'FROM t_kollektioner INNER JOIN t_collection ON t_kollektioner.kod_kollek = t_collection.kod_kollek';_collection.Q.SQL.Text:=global;_collection.q.open;_kol.Caption:='';_print.Enabled:=false;_mon.KeyValue:=-1;_sort.ItemIndex:=-1;();;Tfm_poisk3.btn_findClick(Sender: TObject);sort:string;lb_mon.KeyValue<=0 then // Если не выбран коллекционер('Вы не выбрали монету',mtInformation,[mbOk],0);:='SELECT t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch, t_kollektioner.telefon, '+

't_kollektioner.adres, t_collection.kol '+

'FROM t_kollektioner INNER JOIN t_collection ON t_kollektioner.kod_kollek = t_collection.kod_kollek';_collection.Q.SQL.Text:=global;:=global+' WHERE t_collection.kod_moneta='+inttostr(lb_mon.KeyValue);rg_sort.ItemIndex of

: sort:='';

: sort:=' ORDER BY t_kollektioner.fam ASC ';

: sort:=' ORDER BY t_kollektioner.telefon ASC ';

: sort:=' ORDER BY t_kollektioner.adres ASC ';

: sort:=' ORDER BY t_collection.kol ASC ';;_collection.Q.SQL.Text:=global+sort;_collection.Q.Open;();dm_collection.Q.RecordCount=0 then//Если не найдены данные('У данной монеты нет коллекционеров',mtInformation,[mbOk],0);// Если найдено_print.Enabled:=true;_kol.Caption:='Количество коллекционеров:'+inttostr(dm_collection.Q.RecordCount);;;;Tfm_poisk3.FormActivate(Sender: TObject);:='SELECT t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch, t_kollektioner.telefon, '+

't_kollektioner.adres, t_collection.kol '+

'FROM t_kollektioner INNER JOIN t_collection ON t_kollektioner.kod_kollek = t_collection.kod_kollek';_collection.Q.SQL.Text:=global;_collection.q.open;();_kol.Caption:='';_print.Enabled:=false;;Tfm_poisk3.rg_sortClick(Sender: TObject);sort:string;_collection.Q.SQL.Text:=global;rg_sort.ItemIndex of

: sort:=' ORDER BY t_kollektioner.fam ASC ';

: sort:=' ORDER BY t_kollektioner.telefon ASC ';

: sort:=' ORDER BY t_kollektioner.adres ASC ';

: sort:=' ORDER BY t_collection.kol ASC ';;_collection.Q.SQL.Text:=global+sort;_collection.Q.Open;();;Tfm_poisk3.BitBtn1Click(Sender: TObject);.Close;;Tfm_poisk3.btn_printClick(Sender: TObject);txt,filename:string;:=lb_mon.SelectedItem;_collection.Reports.SetParam('poisk3',txt);_collection.Reports.ExecuteReport('r_poisk3');('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;.poisk4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DBCtrls, Grids, DBGrids, StdCtrls, dm, Buttons;_poisk4 = class(TForm): TLabel;: TDBGrid;: TDBGrid;_val: TDBLookupListBox;: TLabel;: TLabel;: TBitBtn;_print: TBitBtn;lb_valClick(Sender: TObject);FormActivate(Sender: TObject);BitBtn1Click(Sender: TObject);zag();zag2();btn_printClick(Sender: TObject);

{ Private declarations }

{ Public declarations };_poisk4: Tfm_poisk4;:string;main;

{$R *.dfm}Tfm_poisk4.zag();i:integer;.DBGrid2.Columns[0].Title.Caption:='Валюта';.DBGrid2.Columns[0].Width:=150;.DBGrid2.columns[0].Alignment:=tacenter;.DBGrid2.Columns[1].Title.Caption:='Номинал';.DBGrid2.Columns[1].Width:=50;.DBGrid2.columns[1].Alignment:=tacenter;.DBGrid2.Columns[2].Title.Caption:='Цена';.DBGrid2.Columns[2].Width:=50;.DBGrid2.columns[2].Alignment:=tacenter;.DBGrid2.Columns[3].Title.Caption:='Фамилия';.DBGrid2.Columns[3].Width:=100;.DBGrid2.columns[3].Alignment:=tacenter;.DBGrid2.Columns[4].Title.Caption:='Имя';.DBGrid2.Columns[4].Width:=100;.DBGrid2.columns[4].Alignment:=tacenter;.DBGrid2.Columns[5].Title.Caption:='Отчество';.DBGrid2.Columns[5].Width:=100;.DBGrid2.columns[5].Alignment:=tacenter;.DBGrid2.Columns[6].Title.Caption:='Адрес';.DBGrid2.Columns[6].Width:=100;.DBGrid2.columns[6].Alignment:=tacenter;;Tfm_poisk4.zag2();i:integer;.DBGrid1.Columns[0].Title.Caption:='Валюта';.DBGrid1.Columns[0].Width:=150;.DBGrid1.columns[0].Alignment:=tacenter;.DBGrid1.Columns[1].Title.Caption:='Номинал';.DBGrid1.Columns[1].Width:=50;.DBGrid1.columns[1].Alignment:=tacenter;.DBGrid1.Columns[2].Title.Caption:='Цена';.DBGrid1.Columns[2].Width:=50;.DBGrid1.columns[2].Alignment:=tacenter;.DBGrid1.Columns[3].Title.Caption:='Фамилия';.DBGrid1.Columns[3].Width:=100;.DBGrid1.columns[3].Alignment:=tacenter;.DBGrid1.Columns[4].Title.Caption:='Имя';.DBGrid1.Columns[4].Width:=100;.DBGrid1.columns[4].Alignment:=tacenter;.DBGrid1.Columns[5].Title.Caption:='Отчество';.DBGrid1.Columns[5].Width:=100;.DBGrid1.columns[5].Alignment:=tacenter;.DBGrid1.Columns[6].Title.Caption:='Адрес';.DBGrid1.Columns[6].Width:=100;.DBGrid1.columns[6].Alignment:=tacenter;;Tfm_poisk4.btn_printClick(Sender: TObject);txt,filename:string;:=lb_val.SelectedItem;_collection.Reports.SetParam('poisk4',txt);_collection.Reports.ExecuteReport('r_poisk4');('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;Tfm_poisk4.FormActivate(Sender: TObject);sql:string;_print.Enabled:=false;:='SELECT t_valuta.valuta, t_moneta.nominal, t_moneta.price, t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch, t_kollektioner.adres '+

'FROM t_valuta INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection ON t_kollektioner.kod_kollek = t_collection.kod_kollek)'+

' ON t_moneta.kod_moneta = t_collection.kod_moneta) ON t_valuta.kod_valuta = t_moneta.kod_valuta ORDER BY t_moneta.price DESC';_collection.Q.SQL.Text:=sql;_collection.q.Open;;;Tfm_poisk4.lb_valClick(Sender: TObject);kol:integer;:='SELECT t_valuta.valuta, t_moneta.nominal, t_moneta.price,'+

' t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch, t_kollektioner.adres '+

' FROM t_valuta INNER JOIN (t_moneta INNER JOIN (t_kollektioner INNER JOIN t_collection '+

' ON t_kollektioner.kod_kollek = t_collection.kod_kollek)'+

' ON t_moneta.kod_moneta = t_collection.kod_moneta) ON t_valuta.kod_valuta = t_moneta.kod_valuta'+

' WHERE t_moneta.price=(SELECT Max(price) '+

' FROM t_moneta '+

' WHERE kod_valuta='+inttostr(lb_val.KeyValue)+') ORDER BY t_moneta.price DESC';_collection.Q_calc.SQL.Text:=global;_collection.Q_calc.Open;;:=dm_collection.q_calc.RecordCount;kol>0 then.Caption:='Количество найденных монет:'+inttostr(kol);.Visible:=true;_print.Enabled:=true;.Caption:='Монет не найдено';.Visible:=true;;;Tfm_poisk4.BitBtn1Click(Sender: TObject);.Close;;.poisk2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids,dm;_poisk2 = class(TForm): TDBGrid;_group: TRadioGroup;_vid: TRadioGroup;: TBitBtn;: TBitBtn;: TLabel;: TLabel;: TLabel;FormActivate(Sender: TObject);rg_groupClick(Sender: TObject);BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);zag();FormCreate(Sender: TObject);

{ Private declarations }

{ Public declarations };_poisk2: Tfm_poisk2;,sql,sql2:string;:boolean;main;

{$R *.dfm}Tfm_poisk2.zag();.DBGrid2.Columns[0].Title.Caption:='Фамилия';.DBGrid2.Columns[1].Title.Caption:='Имя';.DBGrid2.Columns[2].Title.Caption:='Отчество';.DBGrid2.Columns[3].Title.Caption:='Валюта';.DBGrid2.Columns[4].Title.Caption:='Номинал';.DBGrid2.Columns[5].Title.Caption:='Количество';;Tfm_poisk2.BitBtn2Click(Sender: TObject);txt,filename:string;rg_group.ItemIndex of

:rg_vid.ItemIndex of

:_collection.Reports.ExecuteReport('r_poisk2_00'); // запуск без группировки, итоговый('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;

:_collection.Reports.ExecuteReport('r_poisk2_00'); // запуск без группировки, подробный('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;;;

:rg_vid.ItemIndex of

:_collection.Reports.ExecuteReport('r_poisk2_10'); // запуск по коллекционеру, итоговый('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;

:_collection.q_calc.SQL.Text:='SELECT t_kollektioner.fam, t_moneta.nominal, t_valuta.valuta, '+

' t_collection.kol, t_moneta.god, t_moneta.tirazh, t_moneta.opisanie, t_moneta.price, t_kollektioner.imy, '+

' t_kollektioner.otch, t_kollektioner.telefon, t_kollektioner.adres, '+

' Year(Date())- god as vozrast FROM (t_valuta INNER JOIN t_moneta ON t_valuta.kod_valuta = t_moneta.kod_valuta) INNER JOIN (t_kollektioner '+

' INNER JOIN t_collection ON t_kollektioner.kod_kollek = t_collection.kod_kollek) ON t_moneta.kod_moneta = '+

' t_collection.kod_moneta ORDER BY t_kollektioner.kod_kollek';_collection.q_calc.Open;_collection.Reports.ExecuteReport('r_poisk2_11'); // запуск по коллекционеру, подробный('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;;;

:rg_vid.ItemIndex of

:_collection.Reports.ExecuteReport('r_poisk2_20'); // запуск по монете, итоговый('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;

:_collection.q_calc.SQL.Text:='SELECT t_moneta.kod_moneta, t_valuta.kod_valuta AS t_valuta_kod_valuta,'+

' t_valuta.valuta, t_moneta.kod_moneta AS t_moneta_kod_moneta, t_moneta.kod_valuta AS'+

' t_moneta_kod_valuta, t_moneta.nominal, t_moneta.god, t_moneta.tirazh, t_moneta.opisanie,'+

' t_moneta.price, t_kollektioner.kod_kollek AS t_kollektioner_kod_kollek, t_kollektioner.fam,'+

' t_kollektioner.imy, t_kollektioner.otch, t_kollektioner.telefon, t_kollektioner.adres,'+

' t_collection.kod_kollek AS t_collection_kod_kollek, t_collection.kod_moneta AS t_collection_kod_moneta,'+

' t_collection.kol FROM (t_valuta INNER JOIN t_moneta ON t_valuta.[kod_valuta] = t_moneta.[kod_valuta])'+

' INNER JOIN (t_kollektioner INNER JOIN t_collection ON t_kollektioner.[kod_kollek] = t_collection.[kod_kollek])'+

' ON t_moneta.[kod_moneta] = t_collection.[kod_moneta] GROUP BY t_valuta.kod_valuta, t_valuta.valuta,'+

' t_moneta.kod_moneta, t_moneta.kod_valuta, t_moneta.nominal, t_moneta.god, t_moneta.tirazh,'+

' t_moneta.opisanie, t_moneta.price, t_kollektioner.kod_kollek, t_kollektioner.fam, t_kollektioner.imy,'+

' t_kollektioner.otch, t_kollektioner.telefon, t_kollektioner.adres, t_collection.kod_kollek,'+

' t_collection.kod_moneta, t_collection.kol'+

' ORDER BY t_moneta.kod_moneta ASC';_collection.q_calc.Open;_collection.Reports.ExecuteReport('r_poisk2_21'); // запуск по монете, подробный('Неправильный фаил отчётов. Пожалуйста укажите путь к корректному фаилу.',mtInformation,[mbOk],0);fm_main.opendialogrep.Execute = true then:=fm_main.opendialogrep.FileName;_collection.reports.ProjectFile:=filename;;(dm_collection.reports.projectfile=ExtractFilePath(Application.ExeName)+'Reports.rav') or (fm_main.OpenDialogRep.Execute = false);;;;;;Tfm_poisk2.FormActivate(Sender: TObject);flag=true then:=false;_group.ItemIndex:=0;:='SELECT fam ,imy ,otch , valuta, nominal , kol '+

' FROM t_collection, t_valuta, t_kollektioner, t_moneta'+

' WHERE (t_valuta.kod_valuta=t_moneta.kod_valuta) and (t_moneta.kod_moneta=t_collection.kod_moneta) and'+

' (t_kollektioner.kod_kollek=t_collection.kod_kollek) ORDER BY fam';_collection.q.SQL.Text:=global;_collection.Q.open;;;;Tfm_poisk2.rg_groupClick(Sender: TObject);rg_group.ItemIndex of

::='SELECT fam ,imy ,otch , valuta , nominal , kol '+

' FROM t_collection, t_valuta, t_kollektioner, t_moneta'+

' WHERE (t_valuta.kod_valuta=t_moneta.kod_valuta) and (t_moneta.kod_moneta=t_collection.kod_moneta) and'+

' (t_kollektioner.kod_kollek=t_collection.kod_kollek) ORDER BY fam';_collection.Q.SQL.Text:=global;_collection.Q.Open;;;

::='SELECT fam , imy , otch , Sum(t_collection.kol) ,'+

' Sum(t_moneta.price*t_collection.kol) FROM t_moneta INNER JOIN (t_kollektioner'+

' INNER JOIN t_collection ON t_kollektioner.kod_kollek = t_collection.kod_kollek) ON t_moneta.kod_moneta ='+

' t_collection.kod_moneta GROUP BY t_kollektioner.fam, t_kollektioner.imy, t_kollektioner.otch';_collection.Q.SQL.Text:=global;_collection.Q.Open;.Columns[0].Title.Caption:='Фамилия';.Columns[1].Title.Caption:='Имя';.Columns[2].Title.Caption:='Отчество';.Columns[3].Title.Caption:='Всего монет';.Columns[4].Title.Caption:='Общая стоймость';;

::='SELECT valuta , nominal , Sum(t_collection.kol) '+

' FROM t_valuta INNER JOIN (t_moneta INNER JOIN t_collection ON t_moneta.kod_moneta = '+

' t_collection.kod_moneta) ON t_valuta.kod_valuta = t_moneta.kod_valuta'+

' GROUP BY t_valuta.valuta, t_moneta.nominal';_collection.Q.SQL.Text:=global;_collection.Q.Open;.Columns[0].Title.Caption:='Валюта';.Columns[1].Title.Caption:='Номинал';.Columns[2].Title.Caption:='Сумма монет';;;;Tfm_poisk2.BitBtn1Click(Sender: TObject);.Close;;Tfm_poisk2.FormCreate(Sender: TObject);:=true;;.

unit settings;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, dm, Mask, DBCtrls, Buttons, ExtCtrls;

type_settings = class(TForm)

Label1: TLabel;: TLabel;: TBitBtn;

DBEdit1: TDBEdit;: TDBEdit;: TDBNavigator;: TLabel;BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_settings: Tfm_settings;

{$R *.dfm}Tfm_settings.BitBtn1Click(Sender: TObject);.close;;.

unit cleardata;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, ExtCtrls,dm;_cleardate = class(TForm): TLabel;: TLabel;: TPanel;: TCheckBox;: TPanel;: TCheckBox;: TCheckBox;: TCheckBox;: TCheckBox;: TBitBtn;: TBitBtn;: TLabel;BitBtn1Click(Sender: TObject);CheckBox5Click(Sender: TObject);CheckBox1Click(Sender: TObject);CheckBox2Click(Sender: TObject);CheckBox3Click(Sender: TObject);BitBtn2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_cleardate: Tfm_cleardate;

{$R *.dfm}Tfm_cleardate.BitBtn1Click(Sender: TObject);.Close;;Tfm_cleardate.CheckBox5Click(Sender: TObject);checkbox5.Checked=true then.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;;;Tfm_cleardate.CheckBox1Click(Sender: TObject);checkbox1.Checked=true then.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=true;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;;;Tfm_cleardate.CheckBox2Click(Sender: TObject);CheckBox2.Checked=true then.Checked:=true.Checked:=false;;Tfm_cleardate.CheckBox3Click(Sender: TObject);checkbox3.Checked=true then.Checked:=true.Checked:=false;;Tfm_cleardate.BitBtn2Click(Sender: TObject);(checkbox1.Checked=true) or (checkbox5.Checked=true) thenmessagedlg('Вы действительно хотите удалить все записи из базы данных?',mtConfirmation,[mbYes,mbNo],0)=mrYes then_collection.Q.SQL.text:='DELETE FROM t_valuta';_collection.q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM t_kollektioner';_collection.q.ExecSQL;_collection.q.sql.text:='DELETE FROM t_collection';_collection.q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM t_moneta';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('База данных очищена',mtInformation,[mbOk],0);;;checkbox2.Checked=true thenmessagedlg('Вы действительно хотите удалить коллекционеров и их коллекции?',mtConfirmation,[mbYes,mbNo],0)=mrYes then_collection.q.SQL.Text:='DELETE FROM t_kollektioner';_collection.Q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM t_collection';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('Коллекционеры и их коллекции удалены',mtInformation,[mbOk],0);;;checkbox3.Checked=true thenmessagedlg('Вы действительно хотите удалить монеты и коллекции?',mtConfirmation,[mbYes,mbNo],0)=mrYes then_collection.q.SQL.Text:='DELETE FROM t_moneta';_collection.Q.ExecSQL;_collection.Q.SQL.Text:='DELETE FROM t_collection;';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('Монеты и коллекции удалены',mtInformation,[mbOk],0);;;checkbox4.Checked=true thenmessagedlg('Вы действительно хотите удалить коллекции?',mtConfirmation,[mbYes,mbNo],0)=mrYes then_collection.q.SQL.Text:='DELETE FROM t_collection';_collection.Q.ExecSQL;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;.Checked:=false;('Kоллекции удалены',mtInformation,[mbOk],0);;;;

end.avtor;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, StdCtrls, jpeg, Buttons;_o_prog = class(TForm): TImage;: TLabel;: TPanel;: TLabel;: TBitBtn;BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_o_prog: Tfm_o_prog;

{$R *.dfm}Tfm_o_prog.BitBtn1Click(Sender: TObject);.close;;.

Похожие работы на - Автоматизация учета коллекционных монет

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!