ВолжскийУниверситет имени В.Н. ТатищеваФакультет«Информатики и телекоммуникаций»Кафедра«Информатика и системы управления»
Курсовая работа
по дисциплине
«Базы данных изнаний»
на тему:
«Автоматизацияработы фирмы
по продажеквартир»
Выполнил студент группы ИТ-204
Семёнов Е.А.
Проверил
Краснов С.В.
Тольятти
2002 г.
СОДЕРЖАНИЕВведение
1. Теоретическая часть
1.1 Предметная область автоматизации
1.1.1 Описание предметной области и функциирешаемой задачи
1.2 Постановка задачи
1.2.1 Организационно-экономическая сущностьзадачи
1.2.2 Документы предметной области, содержащиеинформацию, необходимую для решения задачи
1.2.3 Структурный анализ с помощью диаграммпотоков данных
1.2.4 Структурный анализ с помощью диаграмм«сущность-связь»
2. Реализация информационной системы средствамиобъектно-ориентированного языка Delphi
2.1 Аппаратная часть задачи
2.2 Обоснование выбора среды разработки и стиля программирования
2.3 Создание таблиц баз данных
2.4 Форма 1(меню программы)
2.4.1 Форма 3(изменение базы данных посотрудникам )
2.5. Форма 2(сотрудники)
2.6. Форма 4(форма по работе с клиентами)
2.6.1 Форма 5(чек)
2.6.2 Форма 7(изменение базы данных по квартирампродавцов)
2.7 Форма6(отчёт)
ЗаключениеСписок используемой литературы
Приложение А
Приложение Б
ВВЕДЕНИЕ
Задачанакопления, обработки и распространения (обмена) информации стояла передчеловечеством на всех этапах его развития. В течение долгого времени основнымиинструментами для ее решения были мозг, язык и слух человека. Первоекардинальное изменение произошло с приходом письменности, а затем изобретениемкнигопечатания. Поскольку в эпоху книгопечатания основным носителем информации сталабумага, то технологию накопления и распространения информации естественноназывать “бумажной информатикой”.
Положениев корне изменилось с появлением электронных вычислительных машин (ЭВМ). ПервыеЭВМ использовались как большие автоматические арифмометры. Принципиально новыйшаг был совершен, когда от применения ЭВМ для решения отдельных задач перешли ких использованию для комплексной автоматизации тех или иных законченныхучастков деятельности человека по переработке информации.
Однимиз первых примеров подобного системного применения ЭВМ в мировой практике былитак называемые административные системы обработки данных: автоматизациябанковских операций, бухгалтерского учета, резервирования и оформления билетови т.п. Решающее значение для эффективности систем подобного рода имеет тообстоятельство, что они опираются на автоматизированные информационные базы.Это означает, что в памяти ЭВМ постоянно сохраняется информация, нужная длярешения тех задач, на которые рассчитана система. Она и составляет содержимоеинформационной базы соответствующей системы.
Прирешении очередной задачи система нуждается во вводе только небольшой порциидополнительной информации, — остальное берется из информационной базы. Каждаяпорция вновь вводимой информации изменяет информационную базу системы. Эта база(информационная, или база данных) находится, таким образом, в состояниинепрерывного обновления, отражая все изменения, происходящие в реальномобъекте, с которым имеет дело система.
Сложившийсяв прошлом подход к проектированию систем сбора и накопления информации и ееэффективного использования для всевозможных целей состоял в автоматизацииотдельных процессов в рамках фрагментов предметной области, или как говорят, всоздании множества локальных приложений. В силу значительной независимостиприложений одни и те же данные многократно представлялись в памяти ЭВМ, а ихсоответствие действительным значениям обеспечивалось периодическим применениемпроцедур обновления. При изменении каких-либо сведений приходилось корректироватьот нескольких до сотен и даже тысяч записей.
Припереходе от автоматизации отдельных процессов предметной области к созданиюавтоматизированных информационных систем требуется не только взаимоувязкаприложений, но и качественно новый подход к организации данных. Этот подходсостоит в использовании единого хранилища – базы данных. Отдельные пользователиперестают быть владельцами тех или иных данных. Все данные накапливаются ихранятся централизованно. В памяти ЭВМ создается динамически обновляемая модельпредметной области.
За последние годы вобласти систем баз данных были проведены исключительно продуктивныеисследования. Полученные результаты можно считать очень важным достижениеминформатики. Базы данных стали основой информационных систем и в корне изменилиметоды работы многих организаций. Например появились системы весьма мощные иинтуитивно понятные. Преимуществом компьютерной обработки перед ручной работойявляется скорость обработки данных, удобное представление данных,автоматическое заполнение некоторых данных, богатые возможности по обработкеданных, например, оператор легко может вычислить, какие квартиры есть вналичии, просмотреть отчёт о сделках, и т.д. В моём случае для автоматизациибыл выбран объект фирма занимающаяся риэлторской деятельностью. Он содержитмножество повторяющихся действий по оформлению документов, в основном приработе с клиентами. Проблема в том, что всё это делается в ручную, поэтомуимеет смысл автоматизировать хотя бы часть работы таким образом, чтобысотрудник мог без особых усилий оформлять заказы, предъявлять клиенту накладнуюсо стоимостью оказанной услуги и необходимую информацию и т.д. Основная работабудет выполнятся программой, а также она позволит лучше и быстрее обрабатыватьинформацию. К тому же автоматизация сервисных служб, повышает уровень сервиса,а значит популярность фирмы. Подводя итог, можно сказать, что выбор темы поавтоматизации данной фирмы основывается на достаточно низком уровне сервиса иналичии большого объема ручной работы. В настоящее время серьезные фирмыиспользуют компьютеры в своей работе. Информативность и скорость, постояннорастущие возможности это преимущества автоматизации. В добавок, если связатьсвою базу данных с INTERNETOM, поискнужных данных будет намного быстрее чем ездить по фирмам и собирать данные, аэто принципиально иной подход к обслуживанию клиентов. Автоматизаций в этойобласти великое множество, но в моей курсовой работе делается упор наавтоматизацию работы с клиентами.
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Предметная областьавтоматизации
1.1.1 Описаниепредметной области и функции решаемой задачи
Рассмотрим некоторыеаспекты решаемой задачи по автоматизации.
В работе фирмы можновыделить следующие пункты:
1. Учёт и запись сотрудников
2. Запись заказа клиента
3. Выполнение заказа
4. Предоставление клиенту необходимыхдокументов
5. Ведение отчётной деятельности
Высокий уровень сервисапредполагает:
1. Оперативность при оформлении заказови выдаче документов ( информационного чека и т.д.)
2. Учет клиентов, ведение статистики попосещаемости
3. Учет квартир, их быстрый поиск потребованию клиентом
4. Некоторые другие возможности пообработке информации для удобного поиска нужной квартиры Особенности поставленнойзадачи:
1. Функцию заполнения дат при чекацелесообразнее переложить на программу с учетом обычных временных затрат навыполнение тех или иных видов услуг(можно корректировать самому понеобходимости)
2. После того как клиент получаетинформационный чек, вся информация о нем должна быть удалена
3. Соблюдаются правила оформления чеков.Эта функция возложена на программу
1.2 Постановка задачи
1.2.1Организационно-экономическая сущность задачи
Рассмотрим организациювыполняемых функций в задаче.
Главнаяработа заключается в оформлении заказов и выдаче соответствующих документов сучётом правил оформления документов. В соответствии с этим строится интерфейспрограммы, позволяющий оператору быстро вводить необходимые данные и сохранятьих в базе данных. Если учитывать тот факт, что некоторые данные заполняютсяавтоматически и при этом проверяется соответствие данных, вдобавок, данныеотображаются в удобном формате, можно говорить об экономии временных ресурсов.К тому же документы в любой момент могут быть просмотрены и изменены понеобходимости. Вся информация компактно храниться на магнитном носителе, а этозначит что необходимость ведения ненужной бумажной документации отпадает.Интерфейс программы также предусматривает облегчение процесса оформлениязаказа, поэтому эта функция обособлена. Все возможности программы доступныоператору почти на любом этапе работы. Оператор также имеет доступ к любойинформации. Предполагается предоставление различных статистик оператору позапросу. С учетом этого разработаны стандартные запросы к базе данных. Учитываявозможности языка SQL и то, что запросы также могутбыть сохранены на магнитном носителе, можно повысить оперативность иинформативность программы. Работа с информацией обособлена от работы склиентами, но тем не менее может быть быстро получена за счет наличия функцийпоиска. Изменение информации по сотрудникам и базы данных продавцов доступнодля опытных пользователей, но не рекомендуется. В целом решается задачаэкономии временных ресурсов и задача информативности.
1.2.2 Документыпредметной области, содержащие информацию, необходимую для решения задачи
Приоформлении заказа оператору потребуются паспортные данные, точнее фамилия, имяклиента, а также номер телефона. Остальная информация(адрес проживания и заказпо квартире) вводится со слов клиента. Накладные и документы по оценкестоимости квартир не используются в данном курсовом проекте из-за сложностиреализации задачи, вдобавок менталитет сотрудников фирмы таков что не позволяетэтим заниматься. Перечень квартир предоставляемых продавцами содержит индефикационныйномер квартиры, адрес, оценочную стоимость, операцию с данной квартирой(продажаили обмен), различные данные по квартире(тип планировки, владелец и др.). Вконце работы фирма предоставляет клиенту информационный чек, в которомсодержатся данные по выполненному заказу и данные по оплате услуги фирмы.Подводя итог, можно сказать, что для разработки программы потребуются документыиз риэлторской фирмы, по отчётности, по клиентам, примерный образецинформационного чека. Остальную информацию, в частности бланки документов иописание их назначения можно найти в справочной системе «Гарант» и в сводекодексов и законов РФ, поставляемые на компакт-дисках. В этих системах можнонайти правила работы с клиентами, установленные законом, в том числегарантийные обязательства.
1.2.3 Структурныйанализ с помощью диаграмм потоков данных
При проектированииавтоматизированной системы необходимо описать разработку и внедрение всегокомплекса проблем, которые необходимо решить, а также показать какие функциисистемы должны быть автоматизированы, определением точек интерфейсачеловек-машина и того, как взаимодействует система со своим окружением. Инымисловами, этап проектирования системы является главным для созданиявысококачественных систем. Системное проектирование – это дисциплина,определяющая подсистемы, компоненты и способы их соединения, задающаяограничения, при которых система должна функционировать, выбирающая наиболееэффективное сочетание людей, машин и программного обеспечения для реализациисистемы. SADT – одна из известных системпроектирования. SADT –аббревиатура слов Structured Analysis and Design Technique (Технология структурнрго анализа ипроектирования)–это графическое обозначение и подход к написанию систем.
Для структурного анализас помощью диаграмм потоков данных было использовано три уровня SADT – диаграммы.
На нулевом уровне SADT – диаграммы (см. приложение)показана главная функция – оказание бытовых услуг в фирме. Выполнение этойфункции возможно благодаря входным данным, к которым относятся заказ (заявка),рыночная информация, информация от клиентов. Выполнение основной функциивозложено на оператора и компьютер (механизм исполнения), управляющие потокиконтролируют процесс выполнения функции. К управляющим потокам относятсязаконы, налоги, рыночные условия, требования клиентов. Личную карточку заводятсотрудники отдела кадров. К выходным потокам относятся выручка (прибыль),документы .
На первом уровне SADT – диаграммы (см. приложение)детализируется главная функция. На этом уровне отражены главные функции фирмы:поиск квартиры, покупка и регистрация, продажа и учёт. Все эти подфункции сточки зрения потоков данных связаны между собой.
На втором уровне SADT – диаграммы (см. приложение)детализируется подфункция «Продажа и учёт». Данная подфункция включает в себя:оформление, продажа, учёт.
1.2.4 Структурныйанализ с помощью диаграмм «сущность-связь»
В автоматизируемой подфункции «продажа и учёт» можно выделить несколькосущностей, вытекающих из используемых документов и процесса бытового обслуживанияв фирме. Главной сущностью является «Фирма» с первичным ключом(расчётный_счёт), внешним ключом для неё является (имя) сущности «Покупатель» спервичным ключом(имя), который делает заказ(обращается). «Фирма»запрашивает(обращается) к «Продавец» с первичным ключом(расчётный_счет),поэтому внешними ключами у него будут(расчётный_счёт сущности «Фирма») и (имясущности «Покупатель»). «Продавец» предлагает «Квартиры» с первичным ключом(инд_номер), внешними ключами у «Квартиры» будут ключи «Продавец». У сущности«Квартиры_фирмы» с первичным ключом(инд_ном) внешними ключами будут ключисущностей «Покупатель» и «Фирма». У сущности «Чек» внешние ключи ключисущностей «Покупатель» и «Фирма». Для «Чек» с первичным ключом(имя_покупателя)внешними ключами будут ключи сущности «Фирма».
2.РЕАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ СРЕДСТВАМИ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ЯЗЫКА DELPHI
2.1Аппаратная часть задачи
Программатестировалась на компьютере следующей конфигурации:
- процессор Pentiun 233;
- 64 Мб оперативной памяти;
- 500 Мб свободного пространства на жестком диске;
- видеорежим 800 на 600 точек (минимальное допустимое), 16 бит на цвет;
- манипулятор «мышь»;
- операционная система Windows 98 SE;
Дляфункционирования программы необходимо наличие следующих файлов:
1. project2.exe (исполнимый модульпрограммы);
2. chekinf.db (сущность «чек»);
3. kv.db (сущность «квартиры»);
4. svoi_kv.db(сущность «квартиры_фирмы»);
5. otchet.db (сущность «отчет»);
6. pokup.db (сущность «покупатель»);
7. prod.db (сущность «продавец»);
8. sort.db;
9. другиефайлы, с названиями, соответствующими названиям сущностей;
2.2Обоснование выбора среды разработки и стиля программирования
В качествестиля программирования, выбран объектно-ориентированный язык, основанный на Object Pascal.В качестве среды программирования – интегрированная среда разработки Delphi 5, которая является одной из лучших ИСР для быстрогосоздания приложений благодаря библиотеке VCL(библиотека визуальных компонентов). Из всех известных средств разработки программныхпродуктов, Delphi является одним из самых лучших последующим причинам:
1) пакет Delphi совместно с включёнными в него дополнительнымипрограммами предоставляет разработчику большой объём возможностей по созданиюпрограмм, предназначенных для работы с базами данных. Borland Database Engine (BDE) является мировымстандартом ядра для СУБД;
2) в пакете Delphi есть возможность вывода информации из баз данных напринтер с использованием генератора отчётов;
3) в Delphi реализован язык SQL, который используетсяпри работе с базами данных;
4) в Delphi есть возможность подключения дополнительных модулейразличного назначения. Это позволяет создавать нестандартные компоненты,изменять существующие. Благодаря этому, улучшается восприятие пользователем данногопрограммного продукта;
5) несомненнымплюсом является технология автодополнения кода и всплывающих подсказок, быстроеобнаружение идентификаторов в подключенных модулях;
6) компилятор Delphi является одним из самых быстрых, он драматическиснижает временные затраты на перекомпиляцию проектов, что очень полезно настадии отладки приложения;
7) такиемодули, как Object Inspector (Инспектор объектов) и менеджер проектов, являютсянезаменимыми инструментами инструментами по настройке интерфейса разрабатываемогоприложения, значительно экономящими время разработки программы на начальномэтапе.
Визуальнаябиблиотека компонентов (VCL) содержит исходные текстыстандартных компонентов Delphi, что предоставляетразработчику широкие возможности по изучению и изменению кода. Кроме того этабиблиотека используется также в других ИСР выпущенных Borland(Inprise). Delphi оправдываетназвание среды быстрой разработки приложений (RAD),многие функции реализуются прозрачно для программиста, например, чаще всегопрограммист не заботится о написании кода для создания форм в приложении, дляих прорисовки и т.д. Часто можно разработать полноценную программу, не написавпри этом ни строчки кода.
Структурированныйподход при написании кода лучшим образом отвечает запросам программиста, таккак при этом намного проще разобраться в исходном коде программы, отлаживатьпрограмму и вносить изменения. Буквально двойным щелчком на компоненте можнозадавать стандартные процедуры обработки.
2.3Создание таблиц базы данных
Для осуществленияпоставленной задачи выбраны реляционные базы данных. Их создание осуществлялосьв специальном приложении Delphi, которое называется Database Desktop,таблицы написаны в Paradox 7.0. При проектированииполей таблиц учитывались бланки документов (квитанций, талона, паспорта).
Структуранеобходимых таблиц представлена наглядно в таблицах 1,2,3,4,5,6,7.
Таблица 1.Логическая структура таблицы «Чек».Обозначение Наименование Ключ Тип данных Длина Точность Ras_schet Расч_счёт * Числовой Data_pol Дата_получения Дата Stoimost_kv Стоимость квартиры Числовой Adress_kv Адресс квартиры Строковый 10 Adress_prod Адресс продавца Строковой 10
Таблица 2.Логическая структура таблицы «Квартиры».Обозначение Наименование Ключ Тип данных Длина Точность Inomer
Индефикационный номер
квартиры * Числовой Oper Операция Строковый 10 Tipplan Тип планировки Строковый 10 Rayon Район Строковый 10 Adress Адресс Строковый 10 Obpl Общая площадь Числовой Plkux Площадь кухни Числовой Sostkv Состояние квартиры Строковый 10 Kolroom Количество комнат Числовой Sityname Город Строковый 10 Zena Цена Числовой Dopsv Дополнительные сведения Строковый 10 Vlad Владелец Внеш. Строковый 10
Таблица 3.Логическая структура таблицы «Отчёт».Обозначение Наименование Ключ Тип данных Длина Точность Name_pokyp Имя покупателя * Строковый 10 Date Дата Дата Stoimost_kv
Стоимость
квартиры Числовой Inomer_kv
Индефикационный номер
квартиры Числовой Name_prod Имя продавца Строковый 15
Таблица 4.Логическая структура таблицы «Покупатель».Обозначение Наименование Ключ Тип данных Длина Точность Name Имя * Строковый 10 Surname Фамилия Строковый 10 Adress Адресс Строковый 10 Telefhone Телефон Числовой RayonKv Требуемый район квартиры Строковый 10 Tipplan Требуемый тип планировки квартиры Строковый 10
Таблица 5.Логическая структура таблицы «Продавец».Обозначение Наименование Ключ Тип данных Длина Точность Vlad Владелец * Строковый 10 Rschet Расчётный счёт Числовой Adress Адресс Строковый 10 Telephone Телефон Числовой
Таблица 6.Логическая структура таблицы «Квартиры фирмы».Обозначение Наименование Ключ Тип данных Длина Точность Inomer
Индефикацион
ный номер
квартиры * Числовой Oper Операция Строковый 10 Tipplan Тип планировки Строковый 10 Rayon Район Строковый 10 Adress Адресс Строковый 10 Obpl Общая площадь Числовой Plkux Площадь кухни Числовой Sostkv Состояние квартиры Строковый 10 Kolroom Количество комнат Числовой Sityname Город Строковый 10 Zena Цена Числовой Dopsv Дополнительные сведения Строковый 10 Vlad Владелец Строковый 10 Adress_prod Адресс продавца Строковый 10
Таблица 7.Логическая структура таблицы «Сотрудники».Обозначение Наименование Ключ Тип данных Длина Точность Firstname Имя * Строковый 10 Secondname Фамилия Строковый 10 Otchestvo Отчество Строковый 10 Npassporta Номер паспорта Числовой Adress Адресс Строковый 10 Phone Телефон Числовой Obrazov Образование Строковый 10 Opwork Опыт работы DataBorn Дата рождения Дата Family Семейное положение Строковый 10 Dolgnost Должность Строковый 10 Oklad Оклад Числовой DataPostWork Дата поступления на работу Дата
2.4 Форма 1(меню программы и принятие заказа)
Форма представляет собой рабочее менюпрограммы и информацию о покупателях. Информация о покупателях включает в себякак информацию о самих покупателях так и их заказ на квартиру(район гденаходится квартира и тип её планировки). Добавление данных осуществляется припомощи кнопок и , кнопка добавляетв список пустую строку для заполнения, нажатием мы сохраниминформацию. Кнопка удалить служит для удаления записи, достаточно выбрать изсписка запись и нажать кнопку.
Меню формы состоит из двух разделов и .
Первый содержит подпункты ,для выхода из программы, , появляется список цветов при нажатии нацвет, цвет фона программы изменится на требуемый, , выбрав этотпункт главная форма изменится, на ней появится изображение и информация пофирме, представляющая собой расчётный счёт фирмы и стоимость услуги(стоимостьпродаваемой фирмой квартиры увеличивается на 5% из за издержек работы), щёлкнувлевой кнопкой на форме информация исчезнет и снова появится информация оклиентах.
Второй раздел меню включает в себяподразделы: , и , при выборепункта главная форма закроется и появится форма 2 для работыс базами данных по сотрудникам, выбрав закроется главная формаи появится форма для работы с квартирами и заказом форма 4, при выборепоследнего пункта главная форма исчезнет и появится форма 6 вкоторой отображается информация о сделках.
2.5 Форма 2(сотрудники)
Эта форма представляет собой базу данныхпо сотрудникам. Данные о них отображаются в отдельных ячейках. Ниже расположен для перехода по записям, также с помощью него можно изменитьданные по нужному сотруднику, если в процессе добавления сотрудника быладопущена ошибка для этого достаточно нажать ‘▲’, после изменения данныхнужно либо согласиться, либо нет нажав соответственно ‘v’ или ‘x’.Для необходимости быстро найти нужную информацию по сотруднику есть возможностьбыстрого поиска. Она представлена окошком для ввода данных и выбор поиска по‘фамилии’ или ‘должности’,
достаточно выбрать любой из этих пунктови начать вводить данные(по мере того как их вводят(по мере схожести данных)будет появляться нужная информация).
Также эта форма содержит кнопку, после её нажатия эта форма свернётся ипоявится форма 3 для изменения базы данных по сотрудникам.
Длявозврата на основную форму есть кнопка .
2.5.1Форма 3(изменение базы данных по сотрудникам)
Как виднона рисунке ниже здесь также данные отображаются в ячейках.
Также вэти ячейки заносим данные о сотруднике для добавления их в базу данных.
Длядобавления сотрудника есть две кнопки: добавить>, принажатии которой добавляются пустые поля для заполнения,ок>,при нажатии которой информация введённая в ячейки добавляется в базусотрудников и эта база сохраняется.
Чтобыудалить нужного сотрудника сначала надо его найти, для этого предусмотренбыстрый поиск. Поиск представлен ячейкой для ввода данных и выбором для поискапо: фамилии>, и номеру_паспорта>.
Для поискадостаточно выбрать пункт и начать вводить данные в ячейку(по мере того как ихвводят(по мере схожести данных) будет появляться нужная информация). После тогокак нужный сотрудник найден достаточно нажать кнопку удалить и вся информация осотруднике будет удалена.
Длявозврата в предыдущую форму нужно нажать кнопку .
2.6Форма 4(работа с заказом)
Эторабочая форма. Здесь идёт выполнение заказа клиента. Опишем работу даннойформы.
Форма какбы разделена на две части: на первой осуществляется поиск квартир предлагаемыхпродавцами. Стоит отметить что поиск весьма разнообразен:
- Для того чтобы показать квартиры от определённого продавца предусмотренаячейка, которая связана с базой продавцов. В ячейке организована функция,которая позволяет при выборе значения изменять список предлагаемых квартир.
- Удобен поиск по заказу клиента, достаточно выбрать клиента(покупателя)сразу отобразиться его заказ в ячейках выше(если после осуществления поиска, небудет найдена нужная квартира, то можно выбирать различные типы и районыквартир, после чего снова осуществлять поиск). Правее представлены операции сквартирами. Для поиска достаточно выбрать покупателя, операцию(по обмену поискосуществлён, но эта операция здесь не обязательна так как эта фирма по продажеквартир, но если эту программу расширить до работы риэлторской фирмы, этаоперация необходима. Обмен здесь нужен лишь для того, чтобы не удалять квартирыс этой операцией из списка ), тип планировки и район (можно указать или нетпоставив галочку) и нажать кнопку .
- Также удобен поиск по цене, ведь после поиска заказанной квартирыпоявится список квартир, а клиенту нужна квартира подешевле. Для поискавыбираем поиск:
от,это поиск от указанной цены и выше, при этом не нужная ячейка до исчезнет;
до,это поиск до указанной цены, ненужная ячейка от будет убрана;
от идо, это поиск квартир со стоимостью в пределе от и до;
послевыбора поиска в ячейку заносим требуемые данные и нажимаем кнопку.
Посленахождения нужной квартиры среди предлагаемых продавцами, нажимаем кнопку, квартира и все данные о ней будут добавлены в список квартирфирмы расположенный ниже, при чём стоимость квартиры будет теперь на 5%больше(как указано в информации о фирме). Для простоты перехода здесь естьнавигатор.
Для тогочтобы продать квартиру достаточно выбрать квартиру из списка квартир фирмы инажать кнопку , однако если вдруг не указан покупатель, то операцияпродажи не удастся, курсор перейдёт в ячейку покупатель и будет ждать выборапокупателя. После того как покупатель выбран выберите квартиру и снова нажмитекнопку . После нажатия эта форма закроется и появится форма5(чек). Ещё одна главная особенность заключается в том что после нажатия накнопку , то есть после выполнения заказа, вся информация овыбранном клиенте удаляется.
Еслинеобходимо добавить квартиру в список предлагаемых продавцами достаточно нажатькнопку ниже списка квартир предлагаемыхпродавцами(помимо квартиры там можно добавить и продавца).
Как виднона рисунке вся информация о квартирах не видна пользователю в силу большогоколичества данных для этого внизу списка есть полоса прокрутки.
Если требуетсявернуться на главную форму нужно нажать кнопку .
2.6.1Форма 5(чек)
На этойформе представлен чек об оплате. Поля чека заполняются автоматически после тогокак на предыдущей форме была заключена сделка продажа(нажатие кнопки). Значение поля расчётный счёт фирмы берётся из информации обфирме. Дата — сегодняшняя дата. Остальные три значения полей ‘стоимость_кв’,’адрес_кв’ и ’адрес_продавца’ берутся в соответствии с данными выбранными напредыдущей форме.
Еслинеобходимо чек об оплате можно распечатать, для этого достаточно нажать кнопку.
Чтобывернуться на предыдущую форму нужно нажать кнопку .Важной особенностью здесь также является то, что при нажатии на клавишу автоматически генерируется отчёт.
2.6.2Форма 7(добавление квартир предлагаемых продавцами)
Эта формане являлась бы обязательной если бы была связь с базой данных по квартирам винтернете, которая постоянно обновляется. Но от меня выполнение такой задачи нетребовалось, поэтому для увеличения и обновления данных о продавцах и квартирахя создал данную форму.
Так какбаза по квартирам находится в подчинении у базы по продавцам, то для того чтобыдобавить квартиру, необходимо сначала выбрать нужного продавца. Для просмотрапродавцов предусмотрен ‘навигатор’, благодаря которому также можно добавлятьнового продавца. Для быстрого поиска продавца предусмотрен специальный поиск. Поискпредставлен ячейкой для ввода данных и выбором для поиска владельца по: имени>,.
Для поискадостаточно выбрать пункт и начать вводить данные в ячейку(по мере того как ихвводят(по мере схожести данных) будет появляться нужная информация).
После тогокак выбран нужный продавец можно:
- передвигаться по записям с помощью навигатора;
- редактировать записи по квартире(достаточно изменить записи в ячейках инажать ‘V’ в навигаторе для отмены изменений нажать‘Х’);
- добавлять новую квартиру выбрав‘+‘ в навигаторе;
- удалять запись нажав ‘-’;
Для тогочтобы вернуться на предыдущую форму нажать кнопку .
2.7Форма 6(отчёт)
Это формапредставляет собой таблицу с записями о деятельности фирмы. Для простотыперехода по записям здесь также предусмотрен навигатор,
С помощьюнего удобнее осуществить удаление ненужной записи в отчёте.
Главное вэтом отчёте то, что он автоматизирован, то есть записи заносятся сюдаавтоматически по мере работы. Генерация идёт после того как в форме 5(чек) мынажали , часть записей идёт из чека(то есть после осуществлениясделки), часть ,в соответствии, из формы 4.
Длявозврата в главное меню нужно нажать кнопку .
ЗАКЛЮЧЕНИЕ
В данной курсовой работебыла достигнута частичная автоматизация работы фирмы по продаже квартир.Принцип работы программы довольно прост, любой кто хоть раз держал ‘мышку’ вруке способен понять её работу.
С точки зрения практического применения программный продукт не являетсяполноценным, хотя некоторые модули могут быть использованы для разработкипригодного к реальным условиям приложения. Целью проекта является демонстрациявозможностей автоматизации в сфере бытового обслуживания, а также демонстрацияудобства и простоты работы. Благодаря программе отпадает необходимость ведениямногих документов, вдобавок исключаются ошибки человека(так называемыйчеловеческий фактор).
Очень удобно в программе автоматическое заполнениечеков и отчётов ведь это как правило довольно неинтересный и скучный процесс,одно дело когда надо заполнить несколько документов, другое когда сотни и дажетысячи и вот здесь велика человеческая ошибка.
Много внимания возможностямязыка SQL, предоставляющего средства дляобработки данных. Запросы дают разнообразные возможности поиска необходимыхданных. находить разного рода информацию по клиентам, сотрудникам. Также SQL запросы помогают отсеивать данные понеобходимым параметрам, отсеивать можно до тех пор пока не останется нужная наминформация. Данное приложение может быть адаптировано к любой службезанимающихся работой с квартирами или недвижимостью, учитывая схожестьорганизации основных функций и решаемых задач. Ко всему прочему программу легкорасширить например до работы риэлторской фирмы, которая предоставляет различныеуслуги в виде: оценки квартир, обмен квартир и имеющей другие функции.
Внедрение проекта позволит в значительной мереускорить обмен информацией в фирме, снизить затраты рабочего времени надействия, напрямую не относящиеся к должностным обязанностям. При использованиидля защиты информации и разграничения доступа средств операционной системы идополнительных программно-аппаратных средств планируется в значительной мереповысить уровень безопасности информации, так как резко сокращается числолюдей, способных нанести ущерб информации.
Таким образом, реализация проектапозволит значительно уменьшить затраты рабочего времени на организационныевопросы, а, следовательно, повысить производительность труда и экономическуюэффективность проводимых работ.
СПИСОКИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Архангельский А.Я. Программирование В Delphi 5 – М.:
ЗАО «Издательство Бином», 2000г. – 1072 с.: ил.
2. Базы данных. Проектирование, реализацияи сопровождение. Теория и практика. Второе издание исправленное и дополненное.Авторы Томас Конноли и Каролин Бегг.
3. Встроенное справочное руководство Borland Delphi 5.
4. Интернет-сайт www.citforum.ru ftp-архив.
5. Документы конференции по Delphi.
Приложение А
Project2
program Project2;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Form6},
Unit7 in 'Unit7.pas' {Form7};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm7, Form7);
Application.Run;
end.
Unit1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Controls, Forms, Dialogs,
Menus, Db, Grids, DBGrids, DBTables, ColorGrd,ExtCtrls, StdCtrls, jpeg,
Buttons;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
DataSource1: TDataSource;
Table1: TTable;
Table1FirstName: TStringField;
Table1SecondName: TStringField;
Table1Otchestvo: TStringField;
Table1Npassporta: TFloatField;
Table1Adress: TStringField;
Table1Phone: TFloatField;
Table1Obrazov: TStringField;
Table1OpWork: TFloatField;
Table1DataBorn: TDateField;
Table1Family: TStringField;
Table1Dolgnost: TStringField;
Table1Oklad: TFloatField;
Table1DataPostWork: TDateField;
N6: TMenuItem;
ColorGrid1: TColorGrid;
DataSource4: TDataSource;
Table4: TTable;
DBGrid4: TDBGrid;
Table4Name: TStringField;
Table4Surname: TStringField;
Table4Adress: TStringField;
Table4Telefhone: TFloatField;
Table4RayonKv: TStringField;
Table4Tipplan: TStringField;
DataSource2: TDataSource;
Table2: TTable;
DataSource3: TDataSource;
Table3: TTable;
Table3Vlad: TStringField;
Table3Rschet: TFloatField;
Table3Adress: TStringField;
Table3Telephone: TFloatField;
Table2Inomer: TFloatField;
Table2Oper: TStringField;
Table2Tipplan: TStringField;
Table2Rayon: TStringField;
Table2Adress: TStringField;
Table2Obpl: TFloatField;
Table2Plkux: TFloatField;
Table2Sostkv: TStringField;
Table2Kolroom: TFloatField;
Table2Sityname: TStringField;
Table2Zena: TFloatField;
Table2Dopsv: TStringField;
Table2Vlad: TStringField;
N7: TMenuItem;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
N8: TMenuItem;
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
Label3: TLabel;
Label4: TLabel;
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ColorGrid1Change(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
pole:shortstring;
implementation
uses Unit2, Unit4, Unit3, Unit5, Unit6, Unit7;
{$R *.DFM}
procedure TForm1.N3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Form1.table1.flushbuffers;
Form1.table2.flushbuffers;
Form1.Hide;
Form2.Show;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Form1.table2.flushbuffers;
Form1.hide;
Form4.show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with table4 do begin
first;
insert;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
table4.Edit;
if messagedlg('Удалить', mtconfirmation, [mbyes,mbno],0)=mryes
then table4.delete;
end;
procedure TForm1.ColorGrid1Change(Sender: TObject);
begin
form1.Color:=ColorGrid1.ForeGroundColor;
form2.Color:=ColorGrid1.ForeGroundColor;
form3.Color:=ColorGrid1.ForeGroundColor;
form4.Color:=ColorGrid1.ForeGroundColor;
form5.Color:=ColorGrid1.ForeGroundColor;
form6.Color:=ColorGrid1.ForeGroundColor;
form7.Color:=ColorGrid1.ForeGroundColor;
colorgrid1.visible:=false;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
colorgrid1.visible:=true;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
table4.flushbuffers;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
image1.visible:=true;
label1.visible:=true;
label2.visible:=true;
label4.visible:=true;
label3.visible:=false;
dbgrid4.Visible:=false;
BitBtn1.visible:=false;
button1.visible:=false;
button2.visible:=false;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
image1.visible:=false;
label1.visible:=false;
label2.visible:=false;
label4.visible:=false;
label3.visible:=true;
dbgrid4.Visible:=true;
BitBtn1.visible:=true;
button1.visible:=true;
button2.visible:= true;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
form1.hide;
form6.show;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
table4.flushbuffers;
end;
end.
Unit2
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, ExtCtrls;
type
TForm2 = class(TForm)
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label10: TLabel;
DBEdit10: TDBEdit;
Label11: TLabel;
DBEdit11: TDBEdit;
Label12: TLabel;
DBEdit12: TDBEdit;
Label13: TLabel;
DBEdit13: TDBEdit;
Label1: TLabel;
DBNavigator1: TDBNavigator;
Label14: TLabel;
Label15: TLabel;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label16: TLabel;
RadioGroup1: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit3;
{$R *.DFM}
procedure TForm2.Button1Click(Sender: TObject);
begin
form2.hide;
form3.show;
Form1.Table1.Last;
Form1.Table1.Insert;
try
except
form3.dbedit1.setfocus;
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
form2.Hide;
form1.show;
end;
procedure TForm2.Edit1Change(Sender: TObject);
begin
if Edit1.Text'' then
begin
case RadioGroup1.ItemIndex of
0: begin
form1.Table1.Locate('secondname',Edit1.Text,[]);
end;
1: begin
form1.table1.locate('dolgnost',edit1.text,[]);
end;
end;
end;
end;
end.
Unit3
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, ExtCtrls, Buttons;
type
TForm3 = class(TForm)
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label10: TLabel;
DBEdit10: TDBEdit;
Label11: TLabel;
DBEdit11: TDBEdit;
Label12: TLabel;
DBEdit12: TDBEdit;
Label13: TLabel;
DBEdit13: TDBEdit;
Label1: TLabel;
Button2: TButton;
Label15: TLabel;
RadioGroup1: TRadioGroup;
Edit1: TEdit;
Label14: TLabel;
Button1: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1, Unit2;
{$R *.DFM}
procedure TForm3.Button1Click(Sender: TObject);
begin
form1.table1.Edit;
if messagedlg('Удалить', mtconfirmation, [mbyes,mbno],0)=mryes
then form1.table1.delete;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
Form1.Table1.Last;
Form1.Table1.Insert;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
form3.hide;
form2.show;
end;
procedure TForm3.Edit1Change(Sender: TObject);
begin
if Edit1.Text'' then
begin
case RadioGroup1.ItemIndex of
0: begin
form1.Table1.Locate('secondname',Edit1.Text,[]);
end;
1: begin
form1.table1.locate('dolgnost',edit1.text,[]);
end;
2: begin
form1.table1.locate('npassporta',edit1.text,[]);
end;
end;
end;
end;
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
form1.Table1.FlushBuffers;
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
form3.Hide;
form2.show;
end;
end.
Unit4
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, ExtCtrls, DBCGrids, Db,DBTables, TeEngine,
Series, TeeProcs, Chart, DBChart, mxstore, mxDB,Grids, mxgrid, mxtables,
mxgraph, DBGrids, Spin, DBLookup, ColorGrd, ComCtrls,Tabnotbk;
type
TForm4 = class(TForm)
GroupBox1: TGroupBox;
DataSource1: TDataSource;
rayon: TCheckBox;
tipplan: TCheckBox;
DBGrid1: TDBGrid;
Button5: TButton;
Button2: TButton;
RadioGroup1: TRadioGroup;
Label1: TLabel;
DBLookupCombo1: TDBLookupCombo;
Query1: TQuery;
DataSource2: TDataSource;
Query2: TQuery;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Button3: TButton;
Label2: TLabel;
DBLookupCombo2: TDBLookupCombo;
Label3: TLabel;
Button1: TButton;
GroupBox2: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Label4: TLabel;
Label5: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Button4: TButton;
DataSource3: TDataSource;
Query3: TQuery;
Query3BDEDesigner: TStringField;
Query3BDEDesigner2: TStringField;
Query3_: TFloatField;
Query3BDEDesigner3: TStringField;
Query3_2: TStringField;
Query3BDEDesigner4: TStringField;
Query3BDEDesigner5: TStringField;
Query3_3: TFloatField;
Query3_4: TFloatField;
Query3_5: TStringField;
Query3_6: TFloatField;
Query3BDEDesigner6: TStringField;
Query3BDEDesigner7: TFloatField;
Query3_7: TStringField;
Query3_1: TStringField;
DataSource4: TDataSource;
Query4: TQuery;
DataSource5: TDataSource;
Query5: TQuery;
DBGrid2: TDBGrid;
Label6: TLabel;
DataSource6: TDataSource;
Table1: TTable;
DBNavigator1: TDBNavigator;
Button6: TButton;
Query1BDEDesigner: TStringField;
Query1BDEDesigner2: TStringField;
Query1_: TFloatField;
Query1BDEDesigner3: TStringField;
Query1_2: TStringField;
Query1BDEDesigner4: TStringField;
Query1BDEDesigner5: TStringField;
Query1_3: TFloatField;
Query1_4: TFloatField;
Query1_5: TStringField;
Query1_6: TFloatField;
Query1BDEDesigner6: TStringField;
Query1BDEDesigner7: TFloatField;
Query1_7: TStringField;
Table1Inomer: TFloatField;
Table1Oper: TStringField;
Table1Tipplan: TStringField;
Table1Rayon: TStringField;
Table1Adress: TStringField;
Table1Obpl: TFloatField;
Table1Plkux: TFloatField;
Table1Sostkv: TStringField;
Table1Kolroom: TFloatField;
Table1Sityname: TStringField;
Table1Adress_prod: TStringField;
Table1Dopsv: TStringField;
Table1Vlad: TStringField;
Table1Zena: TFloatField;
procedure Button1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure DBLookupCombo1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure DBLookupCombo2Change(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1, Unit5, Unit6, Unit7;
{$R *.DFM}
procedure TForm4.Button1Click(Sender: TObject);
begin
form4.hide;
form7.show;
end;
procedure TForm4.Button5Click(Sender: TObject);
begin
form4.hide;
form1.show;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
dbgrid1.DataSource:=DataSource1;
with Query1 do
begin
close;
with radioGroup1 do begin
case ItemIndex of
0:ParamByName('op').AsString:='продажа';
1:ParamByName('op').AsString:='обмен';
2:ParamByName('op').AsString:='%';
end;
end;{with}
if rayon.Checked then begin
if Combobox1.Text''then
ParamByName('ra').AsString:=Combobox1.Text
end
else ParamByName('ra').AsString:='%';
if tipPlan.Checked then begin
if Combobox2.Text''then
paramByName('tp').AsString:=Combobox2.Text
end
else ParamByName('tp').AsString:='%';
Open;
end;
end;
procedure TForm4.DBLookupCombo1Change(Sender:TObject);
begin
dbgrid1.DataSource:=DataSource2;
with query2 do begin
close;
parambyname('vl').asString:=DBLookupCombo1.text;
open;
end;
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
if DBLookupCombo2.value'' then
begin
form4.hide;
form5.show;
form5.table1.edit;
form5.table1.fieldbyname('ras_schet').value:=form1.label2.caption;
form5.table1.fieldbyname('date_pol').value:=form5.DateTimePicker1.date;
form5.table1.fieldbyname('adress_kv').value:=form4.table1.Fieldbyname('adress').value;
form5.table1.fieldbyname('adress_prod').value:=form4.table1.Fieldbyname('adress_prod').value;
form5.table1.fieldbyname('stoimost_kv').value:=form4.table1.Fieldbyname('zena').value;
end
else dblookupcombo2.setfocus;
end;
procedure TForm4.DBLookupCombo2Change(Sender:TObject);
begin
with form1.table4 do begin
form1.table4.locate('name',string(form4.DBLookupCombo2),[]);
form4.Combobox1.text:=form1.table4.fieldbyname('rayonkv').asstring;
form4.Combobox2.text:=form1.table4.fieldbyname('tipplan').asstring;
end;
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
dbgrid1.DataSource:=DataSource3;
if RadioButton1.checked then
begin
with query3 do
begin
close;
parambyname('par1').asinteger:=strtoint(edit1.text);
open;
end
end
else
if RadioButton2.checked then begin
dbgrid1.DataSource:=DataSource4;
with query4 do begin
close;
parambyname('par1').asinteger:=strtoint(edit2.text);
open;
end
end
else
if RadioButton3.checked then begin
dbgrid1.DataSource:=DataSource5;
with query5 do begin
close;
parambyname('par1').asinteger:=strtoint(edit1.text);
parambyname('par2').asinteger:=strtoint(edit2.text);
open;
end;
end;
end;
procedure TForm4.RadioButton1Click(Sender: TObject);
begin
edit1.visible:=true;
label4.visible:=true;
edit2.visible:=false;
label5.visible:=false;
end;
procedure TForm4.RadioButton2Click(Sender: TObject);
begin
edit1.visible:=false;
label4.visible:=false;
edit2.visible:=true;
label5.visible:=true;
end;
procedure TForm4.RadioButton3Click(Sender: TObject);
begin
edit1.visible:=true;;
label4.visible:=true;
edit2.visible:=true;
label5.visible:=true;
end;
procedure TForm4.Button6Click(Sender: TObject);
begin
form4.table1.Edit;
if messagedlg('Вы уверены', mtconfirmation, [mbyes,mbno],0)=mryes
then begin
with form4.table1 do begin
first;
insert;
form4.table1.fieldbyname('inomer').value:=form4.query1.fieldbyname('инд_номер').value;
form4.table1.fieldbyname('oper').value:=form4.query1.fieldbyname('операция').value;
form4.table1.fieldbyname('tipplan').value:=form4.query1.fieldbyname('тип_планировки').value;
form4.table1.fieldbyname('rayon').value:=form4.query1.fieldbyname('район').value;
form4.table1.fieldbyname('adress').value:=form4.query1.fieldbyname('адресс').value;
form4.table1.fieldbyname('obpl').value:=form4.query1.fieldbyname('общ_площадь').value;
form4.table1.fieldbyname('plkux').value:=form4.query1.fieldbyname('пл_кухни').value;
form4.table1.fieldbyname('sostkv').value:=form4.query1.fieldbyname('сост_кв').value;
form4.table1.fieldbyname('kolroom').value:=form4.query1.fieldbyname('кол-во_комнат').value;
form4.table1.fieldbyname('sityname').value:=form4.query1.fieldbyname('город').value;
form4.table1.fieldbyname('dopsv').value:=form4.query1.fieldbyname('дополн_свед').value;
form4.table1.fieldbyname('vlad').value:=form4.query1.fieldbyname('владелец').value;
form4.table1.fieldbyname('adress_prod').value:=form4.query1.fieldbyname('адресспродавца').value;
form4.table1.fieldbyname('zena').value:=form4.query1.fieldbyname('цена').value*1.05;
end;
end;
end;
end.
Unit5
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Controls, Forms, Dialogs,
StdCtrls, Db, Grids, DBGrids, DBTables, ComCtrls,Buttons;
type
TForm5 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
DateTimePicker1: TDateTimePicker;
BitBtn1: TBitBtn;
Table1Ras_schet: TFloatField;
Table1Date_pol: TDateField;
Table1Stoimost_kv: TFloatField;
Table1Adress_kv: TStringField;
Table1Adress_prod: TStringField;
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit4, Unit6, Unit1;
{$R *.DFM}
procedure TForm5.Button1Click(Sender: TObject);
begin
if messagedlg('Вы уверены', mtconfirmation, [mbyes,mbno],0)=mryes
then form5.print;
end;
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
form5.hide;
form4.show;
form5.table1.flushbuffers;
with form6.table1 do begin
last;
insert;
form6.table1.edit;
form6.table1.fieldbyname('name_pokyp').value:=form4.DBLookupCombo2.value;
form6.table1.fieldbyname('date').value:=form5.DateTimePicker1.date;
form6.table1.fieldbyname('stoimost_kv').value:=form5.table1.fieldbyname('stoimost_kv').value;
form6.table1.fieldbyname('inomer_kv').value:=form4.table1.fieldbyname('inomer').value;
form6.table1.fieldbyname('name_prod').value:=form4.table1.fieldbyname('vlad').value;
end;
form6.table1.flushbuffers;
form1.table4.locate('name',form4.DBLookupCombo2.value,[]);
form1.table4.delete;
form4.table1.delete;
end;
end.
Unit6
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Controls, Forms, Dialogs,
Db, Grids, DBGrids, DBTables, StdCtrls, ExtCtrls,DBCtrls;
type
TForm6 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
Button1: TButton;
DBNavigator1: TDBNavigator;
Table1Name_pokyp: TStringField;
Table1Date: TDateField;
Table1Stoimost_kv: TFloatField;
Table1Inomer_kv: TFloatField;
Table1Name_prod: TStringField;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses Unit1;
{$R *.DFM}
procedure TForm6.Button1Click(Sender: TObject);
begin
form6.hide;
form1.show;
end;
end.
Unit7
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Controls, Forms, Dialogs,
StdCtrls, Buttons, DBLookup, ExtCtrls, DBCtrls, Mask;
type
TForm7 = class(TForm)
BitBtn1: TBitBtn;
GroupBox1: TGroupBox;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
DBNavigator1: TDBNavigator;
GroupBox2: TGroupBox;
Label1: TLabel;
DBEdit5: TDBEdit;
Label5: TLabel;
DBEdit6: TDBEdit;
Label6: TLabel;
DBEdit7: TDBEdit;
Label7: TLabel;
DBEdit8: TDBEdit;
Label8: TLabel;
DBEdit9: TDBEdit;
Label9: TLabel;
DBEdit10: TDBEdit;
Label10: TLabel;
DBEdit11: TDBEdit;
Label11: TLabel;
DBEdit12: TDBEdit;
Label12: TLabel;
DBEdit13: TDBEdit;
Label13: TLabel;
DBEdit14: TDBEdit;
Label14: TLabel;
DBEdit15: TDBEdit;
Label15: TLabel;
DBEdit16: TDBEdit;
Label16: TLabel;
DBEdit17: TDBEdit;
DBNavigator2: TDBNavigator;
RadioGroup1: TRadioGroup;
Edit1: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
uses Unit1, Unit4;
{$R *.DFM}
procedure TForm7.BitBtn1Click(Sender: TObject);
begin
form7.hide;
form4.show;
end;
procedure TForm7.Button1Click(Sender: TObject);
begin
form1.table3.flushbuffers;
form1.table2.flushbuffers;
end;
procedure TForm7.Edit1Change(Sender: TObject);
begin
if Edit1.Text'' then
begin
case RadioGroup1.ItemIndex of
0: begin
form1.Table3.Locate('vlad',Edit1.Text,[]);
end;
1: begin
form1.table3.locate('rschet',edit1.text,[]);
end;
end;
end;
end;
end.
Приложение Б
/>/>
/>
/>