Автоматизация оздоровительного комплекса
Описание среды программирования. Требования к техническому и программному обеспечению. Методика разработки программы учета на малом предприятии, алгоритмизация задачи, пользователи системы. Обеспечение целостности информации предприятия в базе данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 21.02.2016 |
Размер файла | 553,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Дипломный проект
Автоматизация оздоровительного комплекса
Содержание
Введение
1. Постановка задачи
2. Формализация
3. Описание среды программирования
3.1 Требования к техническому обеспечению
3.2 Требования к программному обеспечению
4. Методика разработки программы
4.1 Алгоритмизация задачи
4.1.1 Описание алгоритма
4.1.2 Структурная схема
4.2 Программирование
5. Экономическая часть
Заключение
Литература
Приложение
Введение
Настоящее техническое задание распространяется на разработку программы учета на малом предприятии. Программа предназначена для учета клиентов, быстрого обслуживания, а также получения статистики по проделанным операциям и вывода ее на принтер.
Предлагаемая программа должна быть проста в освоении и будет рассчитана не только на профессионалов, но и на рядовых пользователей, работающих под Windows. Удобный интуитивно понятный интерфейс в сочетании с мощной системой вспомогательных рисунков и всплывающих подсказок позволят работать с программой без предварительной подготовки.
1. Постановка задачи
программирование алгоритмизация пользователь
Основное назначение программы заключается в обеспечение учета клиентов в оздоровительном комплексе. Пользователями системы могут быть администраторы клуба, треннера, менеджеры фирм.
К входной информации относится:
данные о клиентах;
данные;
справочник категорий услуг;
справочник услуг;
данные о услугах;
наличие и процент НДС;
параметры скидок по дисконтным картам.
К выходной информации относятся:
документ «Накладная»;
документ «Счет»;
остатки на складе;
история операций;
статистика БД;
отчет по продажам за месяц;
отчет по продажам клиенту.
Программа должна обеспечить выполнение следующих функций:
- Создание файла клиенты.
- Корректировка базы клиентов.
- Удаление элементов базы.
- Добавление новых элементов.
- Замена данных (название, валюта, количество).
- Возможность формирования и обработки нескольких баз.
- Вывод на печать информации о клиентах.
К программе предъявляются следующие требования к надежности:
- Предусмотреть контроль вводимой информации.
- Запретить некорректные действия пользователя.
- Обеспечить целостность информации в базе данных.
2. Формализация
Выделим сущности.
Администраторы
Кабинеты
Карты
Карты клиентов
Клиенты
Дата
Товары
Наименование услуг
Дисконтные карты
Сгенерируем предварительные отношения согласно правилам, а так же наполним их дополнительными атрибутами.
Администраторы (Код, Название, Пароль)
Кабинеты (Код, Номер кабинета, размерность, цена, Код категории(FK))
Карты (Код карты, Номер карты Цена за единицу, количество)
Остатки на складе (Код, Код товара (FK), количество)
Заказ (Номер заказа, Дата заказа, Код операции(FK), Сумма, Расчет в валюте, Процент НДС, Итого сумма, Примечание, Код поставщика(FK), Код клиента(FK))
Клиенты/Поставщики (Код, Фио или название, ИНН, Номер диск карты, Адрес, телефон, Флаг клиент/поставщик)
Типы операций(Код, Название, Знак операции)
Скидки по дисконту (Сумма, Скидка)
Дисконтные карты (Номер, Сумма на счету)
На рисунке 1 представлена логическая схема БД.
Рисунок 1. Логическая схема БД
Затем проектируем формы документов и отчеты, а также запросы для них, уточняем измерения и ресурсы для регистров оперативного учета или данные для бухгалтерских проводок.
На заключительном этапе создаются различные пользовательские меню, журналы документов, интерфейс всего проекта, определяются права пользователей. В процессе отладки и доработки, возможен возврат на любой этап процесса разработки.
В следующих разделах пояснительной записки все объекты задачи рассматриваются более подробно.
3. Описание среды программирования
В качестве среды для разработки нашего приложения была выбрана среда Borland Delphi 7.0, реализующая современные подходы к программированию: объектно-ориентированный подход и визуальные средства быстрой разработки приложений (RAD-Rapid Application Development).
Среда Delphi 7.0 позволяет создавать приложения для работы в Windows 95, 98, 2000, МЕ, ХР. Версия Delphi 7.0 - превосходный инструмент, с помощью которого и начинающий пользователь, и программист-профессионал могут создавать одинаково профессионально выглядящий интерфейс пользователя к прикладным программам самых различных классов.
Delphi поддерживает основные принципы объектно-ориентированного программирования инкапсуляцию, полиморфизм и множественное наследование. Визуальное наследование форм воплощает важнейший аспект объектно-ориентированного программирования в удобном для пользования инструменте визуального проектирования. Характеристики новой формы приложения могут быть унаследованы от любой другой существующей формы, что обеспечивает централизованную репродукцию изменений пользовательского интерфейса, облегчает контроль за кодом и уменьшает временные затраты на введение новых качественных атрибутов.
Delphi 7.0 поддерживает связь с различными базами данных: dBASE, Paradox, Oracle, InterBase, Access, FoxPro.
Благодаря средствам управления проектами, двусторонней интеграции приложения и синхронизации между средствами визуального и текстового редактирования, а также встроенному отладчику (с ассемблерным окном прокрутки, пошаговым исполнением, точками останова, трассировкой) Delphi 7.0 корпорации Borland предоставляет собой впечатляющую среду разработки, которая, видимо, выдержит конкурентную борьбу с такими мощными продуктами как Developer Studio фирмы Microsoft.
3.1 Требования к техническому обеспечению
Минимальные системные требования для MS Access 2000:
Intel Pentium 300
Windows 95/98/2000/XP/NT
128 Мб оперативной памяти
100 Мб дискового пространства
Ввод информации предусмотрен с помощью:
Клавиатуры;
Мыши.
3.2 Требования к программному обеспечению
Для работы программы необходимо, чтобы на компьютере были установлены:
операционная система Microsoft Windows 98/2000/XP;
установлен microsoft access 2000;
Borland Delphi 7.0
4. Методика разработки программы
Для достижения максимального удобства при работе с программой пользователь должен взаимодействовать только с теми элементами программы, которые необходимы ему в данный момент времени, и тем более пользователь не должен работать непосредственно с теми элементами, которые представляют собой саму структуру программы и обеспечивают её работоспособность.
Далее полностью приведена структура данной базы, состоящая из справочников, документов, а так же её описание, описание форм и отчетов, необходимых пользователю.
Данная программа проста в освоении и рассчитана не только на профессионалов, но и на рядовых пользователей, работающих под Windows. Удобный интуитивно понятный интерфейс в сочетании с мощной системой вспомогательных рисунков и всплывающих подсказок позволят работать с программой без предварительной подготовки.
В отличие от дорогих и сложных программ складского учета типа "1С-Склад" и ей подобных, программа " АСУ СКЛАД" хорошо подходит для представителей малого и среднего бизнеса, так как будет включать все, что им необходимо, но не перегружена избыточными возможностями. Использование технологии создания программы в визуальных средах программирования сделает ее интерфейс универсальным и совместимым с операционными системами Windows 95/98/2000/XP.
4.1 Алгоритмизация задачи
4.1.1 Описание алгоритма
После запуска программы открывается главное окно, представленное на рисунке 2.
Рисунок 2. Главное окно программы
Главное окно состоит из следующих составных частей:
- главное меню программы содержит пункты, выполняющие все функции системы;
- панель инструментов содержит кнопки, дублирующие основные пункты главного меню;
- таблица клиентов - содержит список клиентов;
- поле дополнительной информации содержит текстовую дополнительную информацию по выбранной в таблице записи;
- строка состояния содержит контекстную помощь по выбранному пользователем органу управления.
В таблице 1 находится описание пунктов главного меню.
Таблица 1
Пункт меню |
Описание |
|
Система / Выход |
Выход из программы |
|
Безопасность / Регистрация |
Регистрирует пользователя в программе |
|
Безопасность / Администраторы |
Выводит на экран пользователей программы |
|
Безопасность / Настройки пользователя |
Позволяет изменить логин и пароль пользователя |
|
Карты / Справочник «типы карт» |
Классификация дисконтных карт |
|
Карты / услуги по типу карт |
Предоставляемые услуги по картам |
|
Карты / Карты |
Позволяет просмотреть у какого клиента какая карта |
|
Данные / Клиенты |
Список зарегистрированных клиентов |
|
Данные / Справочник «кабинеты» |
Окно просмотра тренажеров |
|
Данные / Справочник «услуги» |
Окно просмотра услуг |
|
Данные / справочник «сотрудники» |
Просмотр персоонала |
|
Данные / специальности сотрудников |
Список услуг и работающих там сотрудников |
|
Данные / Сотрудники по кабинетам |
«расписание сотрудников» |
|
Данные / справочник «материалы» |
Список предлогаемого товара |
|
Данные/справочник «специальности» |
Просмотр специальностей |
|
Действие / Новое посещение |
Открывает диалог выбора клиента и время посещения |
|
Действие / Регистрация посещения |
Открывает форму, в которой можно выбрать клиента, добавить нового, и задать время прихода |
|
Анализ / Статистика доходов по месяцам |
Открывает окно доходов |
|
Анализ / Диаграмма привлеченных |
Открывает диаграмма о привлеченных клиентах |
|
Анализ/ Диаграмма по инструкторам |
Открывает диаграмму инструкторов |
|
Анализ/ Статистика клиентов |
Появляется диаграмма по статистике |
|
Анализ/дни рождения |
Показывает дни рождения |
|
Анализ/давно не приходившие |
Открывается окно о клиентах которые давно не приходили |
|
Помощь/ О программе |
О программе |
4.1.2 Структурная схема
4.2 Программирование
В соответствии со схемой, приведенной выше в пункте 4.1.2. «Структурная схема», в представленной программе разработаны программные модули на встроенном языке «Borland Delphi 7.0». Тексты программных модулей и запросов приведены в пункте V. «Приложение».
На рисунке 3 представлено окно "Клиенты"
Рисунок 3. Клиенты системы
На рисунке 4 представлено окно со списком услуг. Здесь находятся все зарегистрированные в системе услуги.
Нажатие кнопки "Word" выведет отчет о услугах. Также информацию можно послать по почте и экспортировать в файл.
Рисунок 4. Список услуг
На рисунке 5 показан справочник "сотрудники". Здесь указана вся необходимая информация о сотрудниках.
Рисунок 5. Остатки на складе
На рисунке 6 показан вид окна с отчетом материалов. Здесь в левой части экрана находится таблица, содержащая список товаров. Так же можно вывести отчет в документ Word, отправить по почте и экспортировать в файл.
Рисунок 6. Справочник «Материалы»
Программа позволяет формировать следующие отчеты:
Администраторы.
Типы карт.
Услуги по типц карты.
Карты.
Данные о клиентах.
Кабинеты.
Услуги.
Сотрудники.
5. Экономическая часть
Экономический эффект заключается в экономии рабочего времени сотрудника за счет внедрения программного продукта «Автоматизация оздоровительного центра». При расчёте экономии с необходимостью учитываются следующие виды работ:
составление записей в журнале посещения;
поиск и составление информации о предъявителях заявок и их исполнителях;
составление отчетных документов;
редактирование данных.
Для целесообразности внедрения данного программного продукта необходимо подсчитать годовой экономический эффект от внедрения этого программного продукта.
Расчет затрат на разработку.
Распределение трудоемкости по стадиям разработки:
Таблица 2
Этап разработки |
Содержание работ |
Трудоёмкость, час. |
|
Постановка задачи |
Предпроектное обследование. Разработка, согласование и утверждение технико-экономического обоснования. |
10 |
|
Технический проект |
Уточнение структуры и формы представления входных и выходных данных. Разработка алгоритма решения задачи. Разработка структуры программы. Разработка плана мероприятий по разработке и внедрению ПП. Разработка пояснительной записки. Согласование и утверждение технического проекта. |
55 |
|
Рабочий проект |
Написание программы на языке программирования. Первичная отладка программы. Тестирование. Разработка, согласование и утверждение порядка и методики испытаний. Корректировка программы. |
85 |
|
Документооборот |
Разработка программной документации. Подготовка к сдаче программы и программной документации |
30 |
|
ИТОГО: |
180часов |
||
Расчет затрат разработчика программного продукта:
Коэффициент сложности задачи с - характеризует относительную сложность программы по отношению к так называемой типовой задаче, сложность которой принята равной единице (величина с лежит в пределах от 0,5 до 1,5). Для моего программного продукта сложность задачи берем 1,1; т.к. данный программный продукт не является сложным.
c = 1,1 - (коэффициент сложности программы)
Коэффициент коррекции программы p - увеличение объема работ за счет внесения изменений в алгоритм или программу по результатам уточнения постановок (величина р лежит в пределах от 0,1 до 0,5). Оптимальным в данном проекте является среднее значение коэффициента коррекции, соответствующие p =0,4, что объясняется неоднократными доработками и корректировками программы, связанные с неточным описанием программы со стороны заказчика.
p = 0,4 - коэффициент коррекции программы в ходе разработки.
Коэффициент увеличения затрат труда b, вследствие недостаточного описания задачи, в зависимости от сложности задачи принимается от 1 до 1,5. В связи с тем, что данная задача, потребовала уточнения и больших доработок, примем b = 1,4.
Коэффициент квалификации разработчика k определяется в зависимости от стажа работы и составляет:
для работающих до двух лет - 0,8;
от трех лет до пяти лет - 1,0;
от пяти до восьми - 1,2;
более восьми лет -1,5.
Поскольку стажа работы по специальности у меня нет, возьмем k= 0,8.
Оклад программиста фирмы равен 15000 рублей (З/П). С учётом использования коэффициентов заработной платы основная заработная плата разработчика программного продукта составит:
З/П осн. = оклад *c*(p+1)*b*k = 15000 руб. * 1,1 * (1 + 0,4)*1,4*0,8 =25872 руб. в месяц.
За время разработки программного продукта дополнительная заработная плата не выплачивалась.
Страховые взносы берутся в размере 34% от основной и дополнительной заработной платы:
ФО=З/п осн *34%=25872*34%=8796,48р. в месяц.
Итоговая заработная плата за весь период разработки программного продукта (180-10 = 170 ч.) составит:
З/П общ = З/П осн + страховые взносы*170 / 176ч = 25872 + 8796,48 * 170 / 176 = 34265,35 за весь период разработки программного продукта.
Величина Оплаты труда сотрудника составит:
ЗП сум. = З/П осн+ Страховые взносы = 25872 + 8796,48 = 34734,78 руб.
Содержание и эксплуатация вычислительной техники
Свт = См-ч * Число часов отладки
где См-ч - стоимость машино-часа.
Для расчета часов отладки суммируем время 3 последних глав таблицы 1: технический проект + рабочий проект + документация и внедрение.
Число часов отладки = 55час. + 85 час. + 30 час. = 170 час.
Стоимость машино-часа рассчитывается, как сумма составляющих:
(Ст-ть_эл_эн_в_год+Аморт в_год+Затраты_на_ремонт_за_год)/Фвт
где Фвт - действительный фонд времени работы вычислительного комплекса.
Стоимость 1 КВТ/час электроэнергии составляет: 5 руб.
Один компьютер потребляет в среднем 300 Вт в час.
За год оплата за электроэнергию, потребляемую одной ЭВМ, составляет:
8 ч. * 22 дня * 12 мес. * 0,3 КВт/ч. *5,5руб. = 3484,8 руб.
Программный продукт разрабатывался на компьютере, который является собственностью ОФ ГОУ “Математический колледж”. Т.к. до этого он уже использовался по назначению в течение более 4-х лет, мы не будем производить расчет амортизации, т.к. срок полезного использования компьютера составляет 4 года.
ПК был приобретен в декабре месяце 2007 года. Стоимость компьютера составляет 21500 руб.
Стоимость ремонта ЭВМ= 21500 * 5% = 1075 руб.
В год компьютер работает 2112 часов, на его ремонт уходит 5% времени, значит, окончательное время работы компьютера 2006 часов в год.
Стоимость машинного часа равна:
(3168 + 1075) / 2006 = 2,12руб.
Содержание и эксплуатация вычислительного комплекса на время разработки программного продукта составляет:
170 час. * 2,12 руб. = 3604руб.
Легальная версия MS Office уже была установлена на компьютере, следовательно, дополнительные затраты на программное обеспечение не требуются.
Затраты на разработку программного продукта приведены в таблице 3.
Таблица 3
№ |
Наименование расходов |
Затраты, руб. |
|
1 |
Общая заработная плата |
34265,35 руб. |
|
2 |
Страховые взносы |
8796,48 руб. |
|
3 |
Содержание и эксплуатация вычислительного комплекса. |
3604 руб. |
|
4 |
Программное обеспечение |
0 руб. |
|
ИТОГО: |
49665,83 руб. |
Экономический эффект
Задача: узнать годовую экономию затрат; период окупаемости продукта.
Рассчитаем экономический эффект, получаемый за счет экономии рабочего времени сотрудника на введение необходимых данных после внедрения программного продукта.
Для ведения расчетов введем следующие обозначения:
Т1- время, затрачиваемое сотрудниками на поиск и составление информации до внедрения программного продукта;
Т2- время, затрачиваемое на поиск и составление после внедрения программного продукта.
До внедрения программы на то чтобы найти нужную информацию о предъявителе заявки, составить запись на прием, в день сотрудник в среднем тратил около 30 мин:
Т1 = 30 мин.
Количество выполняемых операций сотрудником отдела информационных технологий равно 10.
После внедрения программы время сократится, и будет составлять 20 мин. за счет автоматизации поиска необходимой информации о предъявителе заявки и записи всей необходимой информации в журнал заявок:
Т2 = 20мин.
Нас интересует, сколько времени выигрывает отдел информационных технологий, используя данное приложение.
Т=Т1-Т2=10 минут =0,166
Теперь рассчитаем стоимость работы сотрудника автоматизируемого рабочего места. В месяц сотрудник работает (8 часов*22 рабочих дня) 176 часов.
Размер оклада сотрудника составляет 15000 рублей.
Стоимость 1 часа (Р), рассчитывается следующим образом:
Р=15000 / 176 = 85,27 руб.
Учтем страховые взносы, которые берем в размере 34% = 0,34
Рфо = (15000*0,34 )/ 176=28,97
Рсумм = Р + Рфо = 85,27 + 28,97 = 114,24руб./час
Эту сумму сотрудник зарабатывает в 1 час работы.
Расчет годового экономического эффекта.
Перемножим выигранное время, количество операций, количество рабочих дней в месяце и на количество рабочих месяцев
?Тгод = (0,166*10)*22*12 = 438,24 часа.
Рассчитаем, сколько составит годовая экономия при внедрении программного продукта:
Годовая экономия средств =?Тгод* Рсумм = 438,24*114,24=50064,5 руб/год
Экономический эффект составляет величину, равную годовой экономии средств за вычетом затрат.
Экономический эффект = 50064,5 - 49665,9 = 1501,7руб/год
Теперь посчитаем, через какой промежуток времени окупится программный продукт:
Т= затраты/годовая экономия средств =49665,9 /50064,5 = 0,992 года
Данный программный продукт окупится менее чем за год. Это нормальный срок окупаемости для автоматизации учёта заявок и контроля выполнения работ отделом информационных технологий.
Заключение
В данной дипломной работе была разработана конфигурация на платформе «Borland Delphi 7.0» и «MS Access», которая автоматизирует процесс учета клиентов и позволяет сэкономить рабочее время сотрудника организации. Написанная программа полностью соответствует поставленной задаче.
Программный продукт позволяет осуществлять поиск информации по различным критериям, редактировать и вводить данные, а так же выводить на печать необходимую документацию.
Была произведена экономическая оценка эффективности от внедрения программного продукта, которая показала, что проект экономически целесообразен и может быть одобрен на внедрение в организацию.
Разработанный программный продукт окупится менее, чем за 4 месяца, что является приемлемым в качестве срока окупаемости затрат по автоматизации рабочего процесса.
Литература
1. Лэнгсам Й., Огенстайн М., Тененбаум А. Структуры данных для персональных ЭВМ. - М.: Мир, 2010.
2. Дайитбегов Д.М., Черноусов Е.А. Основы алгоритмизации и алгоритмические языки (второе издание). - М.: Финансы и статистика, 2012.
3. В.Гофман, А.Хомоненко Delphi 5. Наиболее полное руководство. СПб, БХВ, 2009.
4. В.В.Фаронов Delphi 5. Руководство программиста. - М., «Нолидж», 2011.
5. Йодан Э. Структурное проектирование и конструирование программ. - Мир, 1979.
6. А.Я. Архангельский Delphi 5. - М., ЗАО «Издательство «Бином», 2001.
7. А.Я. Архангельский Delphi 5. Справочное пособие. - М., ЗАО «Издательство «Бином», 2001.
8. С. Бобровский Delphi 5. Учебный курс. - СПб, Изд. «Питер», 2000.
9. Роб Баас, Марк Фервай, Хайдемария Гюнтер Delphi 5. Киев, БХВ-«Ирина» 2010.
10. Фаронов В.В. Turbo Pascal 7.0. Учебное пособие. М., Нолидж, 1998.
11. Фаронов В.В.Delphi 5. Учебный курс. М., Нолидж, 2000.
12. WWW.READUS.RU.
13. WWW.Delphikingdom.ru.
Приложение
Листинг
Параметр |
Значение |
|
Имя файла |
client.pas |
|
Имя модуля |
client |
|
Количество строк |
156 |
|
Количество символов |
3803 |
|
Размер файла |
4,02 Кб |
|
Количество комментариев |
14 |
|
Процент закоментированности |
10,02 % |
Модуль: client.pas
Всего строк: 156
unit client;
interface
uses
Windows, Messages, Classes, SysUtils, Graphics, Controls, StdCtrls, Forms,
Dialogs, DBCtrls, DB, DBGrids, DBTables, Grids, ExtCtrls, ADODB, Mask,
Buttons, ExtDlgs,jpeg;
type
TFrmClient = class(TForm)
DBGrid1: TDBGrid;
DBNavigator: TDBNavigator;
Panel1: TPanel;
DataSource1: TDataSource;
Panel2: TPanel;
Panel3: TPanel;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
Label7: TLabel;
BtnOpenPicture: TSpeedButton;
SpeedButton1: TSpeedButton;
Image1: TImage;
Label8: TLabel;
BtnSel: TBitBtn;
OpenPictureDialog: TOpenDialog;
Label9: TLabel;
LabelNo: TLabel;
Label10: TLabel;
DBEdit8: TDBEdit;
Label11: TLabel;
DBEdit9: TDBEdit;
Label12: TLabel;
DBEdit10: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBEdit11: TDBEdit;
BtnRep: TSpeedButton;
BtnSendToMail: TSpeedButton;
BtnExport: TSpeedButton;
Label13: TLabel;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure BtnOpenPictureClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure BtnRepClick(Sender: TObject);
procedure BtnSendToMailClick(Sender: TObject);
procedure BtnExportClick(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{private declarations }
public
{public declarations}
end;
var
FrmClient: TFrmClient;
implementation
uses SqlAdoTools,main,dat,msword,rusdlg,sg2word,sg2mail,sg2csv;
{$R *.DFM}
procedure TFrmClient.FormCreate(Sender: TObject);
var i:integer;
begin
DataSource1.DataSet.Open;
dbgrid1.ReadOnly:=not admin;
for i:=0 to ComponentCount-1 do
if components[i] is tDBEdit then
tDBEdit(components[i]).ReadOnly:=not admin;
end;
procedure TFrmClient.DataSource1DataChange(Sender: TObject; Field: TField);
begin
if fileexists(dm.QryClientphotoFile.Value) then //если есть файл с фоткой
begin
image1.Picture.LoadFromFile(dm.QryClientphotoFile.Value); //загрузить ее
image1.Show;
LabelNo.Hide;
end
else
begin
image1.Hide;
LabelNo.Show;
// image1.Canvas.FillRect(rect(0,0,100,100)); //иначе стереть
// image1.Canvas.TextOut(10,45,'Отстутствует'); //и вывести это
end;
end;
procedure TFrmClient.BtnOpenPictureClick(Sender: TObject);
begin
if not OpenPictureDialog.Execute then exit;
dm.QryClient.Edit;
dm.QryClientphotoFile.Value:=OpenPictureDialog.FileName;
DataSource1DataChange(nil,nil);
end;
procedure TFrmClient.SpeedButton1Click(Sender: TObject);
begin
dm.QryClient.Edit;
dm.QryClientphotoFile.Clear;
DataSource1DataChange(nil,nil);
end;
procedure TFrmClient.BtnRepClick(Sender: TObject);
var word:TMSWord;
begin
word:=TMSWord.Create; //создать класс TMSWord
if not word.Open then //открыть связь с Ole объектом
begin
Error('Не могу открыть msWord');
exit;
end;
word.New; //новый документ
word.InsertCenterText(caption+#13); //вставить заголовок документа
DataSetToWordTable(dbGrid1,DataSource1.DataSet,word,true); //вставить таблицу
word.Show; //показать Word
word.Free; //Освободить память
end;
procedure TFrmClient.BtnSendToMailClick(Sender: TObject);
begin
DataSetToMail(caption,dbGrid1,DataSource1.DataSet,true);
end;
procedure TFrmClient.BtnExportClick(Sender: TObject);
begin
DataSetToCSV(caption,dbGrid1,DataSource1.DataSet,true);
end;
procedure TFrmClient.Edit1Change(Sender: TObject);
begin
if dm.QryClient.Locate('SurName',Edit1.Text,[loCaseInsensitive, loPartialKey]) then
Edit1.Font.Color := clWindowText
else
Edit1.Font.Color := clRed;
end;
end.
Параметр |
Значение |
|
Имя файла |
sg2mail.pas |
|
Имя модуля |
sg2mail |
|
Количество строк |
98 |
|
Количество символов |
1934 |
|
Размер файла |
2,08 Кб |
|
Количество комментариев |
3 |
|
Процент закоментированности |
2,28 % |
Модуль: sg2mail.pas
Всего строк: 98
unit sg2mail;
interface
uses grids,db,classes,sysutils,dbgrids,mapi,rusdlg;
procedure DataSetToMail(topic:string;grid:tDBGrid;ds:tDataSet;HasNumb:boolean=false);
implementation
procedure sendtomail(topic,text:string);
var
MapiMessage: TMapiMessage;
MError: Cardinal;
rec{,r}:TMapiRecipDesc;
begin
with rec do
begin
lpszName:='';
lpszAddress:='';//1@1.ru';
ulRecipClass := MAPI_TO;
ulEIDSize:=0;
lpEntryID:=nil;
end;
with MapiMessage do
begin
ulReserved := 0;
lpszSubject := pchar(topic);
lpszNoteText := pchar(text);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 1;
lpRecips := @rec;
nFileCount := 0;
lpFiles := nil;
end; // MAPI_E_AMBIGUOUS_RECIPIENT
MError := MapiSendMail(0, 0, MapiMessage,
MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
if MError <> 0 then Error('Не вышло');
end;
procedure DataSetToMail(topic:string;grid:tDBGrid;ds:tDataSet;HasNumb:boolean=false);
var wrd:array of string;
i,j,cnt,add,counter:integer;
l,res:tStringList;
str:string;
procedure ArrToStr(a:array of string);
var i:integer;
begin
str:=a[0];
for i:=1 to length(a)-1 do
str:=str+#9+a[i];
res.Add(str);
end;
begin
l:=tStringList.create;
res:=tStringList.create;
cnt:=grid.Columns.Count;
add:=0;
if HasNumb then add:=1;
SetLength(wrd,cnt+add);
if HasNumb then
begin
wrd[0]:='№ п.п.';
l.Add('#');
end;
for i:=0 to cnt-1 do
begin
wrd[i+add]:=grid.Columns[i].Title.Caption;
l.Add(grid.Columns[i].FieldName);
end;
ArrToStr(wrd);
with ds do
begin
first;
counter:=1;
while not eof do
begin
wrd[0]:=IntToStr(counter);
for i:=add to l.Count-1 do
begin
wrd[i]:=fieldbyname(l[i]).AsString;
end;
inc(counter);
ArrToStr(wrd);
next;
end;
end;
sendtomail(topic,res.text);
res.Free;
l.Free;
end;
end.
Параметр |
Значение |
|
Имя файла |
stat2.pas |
|
Имя модуля |
stat2 |
|
Количество строк |
41 |
|
Количество символов |
749 |
|
Размер файла |
831 б |
|
Количество комментариев |
3 |
|
Процент закоментированности |
7,21 % |
Модуль: stat2.pas
Всего строк: 41
unit stat2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
type
TFrmStat2 = class(TForm)
ch: TChart;
Series1: TPieSeries;
procedure FormCreate(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
FrmStat2: TFrmStat2;
implementation
uses dat,sqladotools;
{$R *.dfm}
procedure TFrmStat2.FormCreate(Sender: TObject);
begin
ch.Series[0].Clear;
with MakeCursor('select a.name, count(b.client_id) from admins a, client b where a.id=b.admin_id group by a.name') do
begin
while not eof do
begin
ch.Series[0].Add(Fields[1].AsInteger,Fields[0].AsString);
Next;
end;
Free;
end;
end;
end.
Параметр |
Значение |
|
Имя файла |
login.pas |
|
Имя модуля |
login |
|
Количество строк |
76 |
|
Количество символов |
1345 |
|
Размер файла |
1,46 Кб |
|
Количество комментариев |
3 |
|
Процент закоментированности |
4,01 % |
Модуль: login.pas
Всего строк: 76
unit login;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFrmLogin = class(TForm)
GroupBox1: TGroupBox;
Combo: TComboBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
ep: TEdit;
private
{Private declarations}
public
{Public declarations}
end;
var
FrmLogin: TFrmLogin;
function DoLogin:boolean;
implementation
uses dat,sqladotools, DB;
{$R *.dfm}
function DoLogin:boolean;
var i:integer;
begin
adminid:=-1;
Application.CreateForm(TFrmLogin, FrmLogin);
with MakeCursor('select * from admins order by 2') do
begin
while not eof do
begin
FrmLogin.combo.Items.AddObject(Fields[1].AsString,pointer(Fields[0].AsInteger));
next;
end;
free;
end;
if FrmLogin.combo.Items.Count>0 then FrmLogin.combo.ItemIndex:=0;
repeat
if FrmLogin.ShowModal<>mrOk then
begin
result:=false;
FrmLogin.free;
exit;
end;
adminid:=integer(FrmLogin.Combo.Items.Objects[FrmLogin.Combo.itemIndex]);
with MakeCursor(format('select * from admins where id=%d and Password="%s"',
[adminid,FrmLogin.ep.text])) do
begin
if not IsEmpty then
begin
user := fields[1].AsString;
passw :=FrmLogin.ep.text;
FrmLogin.free;
result:=true;
exit;
end;
adminid:=-1;
free;
end;
until adminid<>-1;
end;
end.
Параметр |
Значение |
|
Имя файла |
about.pas |
|
Имя модуля |
about |
|
Количество строк |
28 |
|
Количество символов |
391 |
|
Размер файла |
447 б |
|
Количество комментариев |
3 |
|
Процент закоментированности |
13,81 % |
Модуль: about.pas
Всего строк: 28
unit about;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
type
TOKBottomDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
private
{Private declarations}
public
{Public declarations}
end;
var
OKBottomDlg: TOKBottomDlg;
implementation
{$R *.dfm}
end.
Параметр |
Значение |
|
Имя файла |
klAdmins.pas |
|
Имя модуля |
klAdmins |
|
Количество строк |
124 |
|
Количество символов |
3415 |
|
Размер файла |
3,58 Кб |
|
Количество комментариев |
33 |
|
Процент закоментированности |
22,31 % |
Модуль: klAdmins.pas
Всего строк: 124
unit klAdmins;
{Форма работы со справочником "Admins"}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ComCtrls, ExtCtrls, DBCtrls, Buttons,
StdCtrls;
type
TFrmKlAdmins = class(TForm)
StatusBar: TStatusBar;
DsLoc: TDataSource;
grid: TDBGrid;
Panel1: TPanel;
PanelOk: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BtnRep: TSpeedButton;
BtnClose: TSpeedButton;
DBNavigator1: TDBNavigator;
BtnSendToMail: TSpeedButton;
BtnExport: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure DsLocDataChange(Sender: TObject; Field: TField);
procedure BtnCloseClick(Sender: TObject);
procedure BtnRepClick(Sender: TObject);
procedure BtnSendToMailClick(Sender: TObject);
procedure BtnExportClick(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
FrmKlAdmins: TFrmKlAdmins;
procedure RunFrmKlAdmins; // процедура запуска справочника
function SelectFrmKlAdmins(var id:integer; title : string=''):boolean; // запуск выбора записи
implementation
uses dat,msword,sg2word,rusdlg,sg2mail,sg2csv;
{$R *.dfm}
procedure RunFrmKlAdmins; // процедура запуска справочника
begin
Application.CreateForm(TFrmKlAdmins, FrmKlAdmins); // создать форму справочника
FrmKlAdmins.ShowModal; // показать модально
FrmKlAdmins.Free; // освободить память
end;
function SelectFrmKlAdmins(var id:integer; title : string):boolean;
begin
Application.CreateForm(TFrmKlAdmins, FrmKlAdmins); // создать форму справочника
dm.TblADMINS .Locate('id',id,[]); //поиск старого значение
if title<>'' then FrmKlAdmins.Caption := FrmKlAdmins.Caption +' : '+title; //установить заголовок
result:=FrmKlAdmins.ShowModal=mrOk; // результат = результат модального запуска
if result then // если Ок
id :=dm.TblADMINS . FieldByName('id').AsInteger; // сохранить новое значение
FrmKlAdmins.Free; // освободить память
end;
// По созданию формы
procedure TFrmKlAdmins.FormCreate(Sender: TObject);
begin
DsLoc.DataSet.Open; // открыть источник данных
end;
// Изменение в данных
procedure TFrmKlAdmins.DsLocDataChange(Sender: TObject; Field: TField);
begin
// надпись внизу формы
StatusBar.SimpleText := format('Всего %d запись(сей)',[DsLoc.DataSet.RecordCount]);
end;
// нажатие кнопки "закрыть"
procedure TFrmKlAdmins.BtnCloseClick(Sender: TObject);
begin
close; // закрыть форму
end;
// вывод в Word
procedure TFrmKlAdmins.BtnRepClick(Sender: TObject);
var word:TMSWord;
begin
word:=TMSWord.Create; //создать класс TMSWord
if not word.Open then //открыть связь с Ole объектом
begin
Error('Не могу открыть msWord');
exit;
end;
word.New; //новый документ
word.InsertCenterText(caption+#13); //вставить заголовок документа
DataSetToWordTable(Grid,DsLoc.DataSet,word,true); //вставить таблицу
word.Show; //показать Word
word.Free; //Освободить память
end;
// отправить по почте
procedure TFrmKlAdmins.BtnSendToMailClick(Sender: TObject);
begin
DataSetToMail(caption,grid,dsloc.DataSet,true);
end;
// вывод в Excel
procedure TFrmKlAdmins.BtnExportClick(Sender: TObject);
begin
DataSetToCSV(caption,grid,dsloc.DataSet,true);
end;
end.
Параметр |
Значение |
|
Имя файла |
dat.pas |
|
Имя модуля |
dat |
|
Количество строк |
470 |
|
Количество символов |
14274 |
|
Размер файла |
14,86 Кб |
|
Количество комментариев |
16 |
|
Процент закоментированности |
3,14 % |
Модуль: dat.pas
Всего строк: 470
unit dat;
interface
uses
SysUtils, Classes, DB, ADODB,inifiles, Dialogs;
type
Tdm = class(TDataModule)
QryClient: TADOQuery;
QryClientClient_ID: TSmallintField;
QryClientSurname: TWideStringField;
QryClientName: TWideStringField;
QryClientPatronymic: TWideStringField;
QryClientSity: TWideStringField;
TblSpecName: TStringField;
TblSpecid: TAutoIncField;
TblSpec: TADOtable;
TblUsedMatcnt: TFloatField;
TblUsedMatmat_idName: TStringField;
TblUsedMatmat_id: TIntegerField;
TblUsedMatdata_id: TIntegerField;
TblUsedMat: TADOtable;
TbldataData_end: TDateTimeField;
TbldataData_start: TDateTimeField;
TbldataService_IDName: TStringField;
TbldataService_ID: TIntegerField;
TbldataClient_IDName: TStringField;
TbldataClient_ID: TIntegerField;
Tbldataid: TAutoIncField;
Tbldata: TADOtable;
TblMaterialsName: TStringField;
TblMaterialsid: TAutoIncField;
TblMaterials: TADOtable;
TblWorkTimeTime_end: TIntegerField;
TblWorkTimeTime_begin: TIntegerField;
TblWorkTimedayName: TStringField;
TblWorkTimeday: TIntegerField;
TblWorkTimeid: TAutoIncField;
TblWorkTimeCabinet_IDName: TStringField;
TblWorkTimeCabinet_ID: TIntegerField;
TblWorkTimeSpeciality_IDName: TStringField;
TblWorkTimeSpeciality_ID: TIntegerField;
TblWorkTime: TADOtable;
TblServiseOnCardCnt: TIntegerField;
TblServiseOnCardServiceName: TStringField;
TblServiseOnCardService: TIntegerField;
TblServiseOnCardfortypeName: TStringField;
TblServiseOnCardfortype: TIntegerField;
TblServiseOnCardid: TAutoIncField;
TblServiseOnCard: TADOtable;
TblService_SpecialitySpeciality_IDName: TStringField;
TblService_SpecialityService_IDName: TStringField;
TblService_SpecialityService_ID: TIntegerField;
TblService_Speciality : TADOtable;
TblViewSotrFioFIO: TStringField;
TblViewSotrFioSpeciality_ID: TAutoIncField;
TblViewSotrFio: TADOtable;
TblSpecialityStreet: TStringField;
TblSpecialityKvartira: TIntegerField;
TblSpecialityKorpus: TStringField;
TblSpecialitytelethon: TStringField;
TblSpecialitySpeciality: TStringField;
TblSpecialityPensNum: TStringField;
TblSpecialityPatronymic: TStringField;
TblSpecialityName: TStringField;
TblSpecialitySurname: TStringField;
TblSpecialitySpeciality_ID: TAutoIncField;
TblSpeciality: TADOtable;
TblServiceLengthMin: TIntegerField;
TblServiceOneTimePeople: TIntegerField;
TblServiceName_service: TStringField;
TblServiceID: TAutoIncField;
TblService: TADOtable;
TblAdminspassword: TStringField;
TblAdminsName: TStringField;
TblAdminsid: TAutoIncField;
TblAdmins : TADOtable;
TblCabinetSpecification: TStringField;
TblCabinetFloor: TIntegerField;
TblCabinetBilding: TStringField;
TblCabinetNumber: TIntegerField;
TblCabinetCabinet_ID: TAutoIncField;
TblCabinet: TADOtable;
TblViewTypesName: TStringField;
TblViewTypesid: TAutoIncField;
TblViewTypes : TADOtable;
Tblcardsdtend: TDateTimeField;
Tblcardsdtstart: TDateTimeField;
TblcardstypeName: TStringField;
Tblcardstype: TIntegerField;
TblcardsclientName: TStringField;
Tblcardsnum: TIntegerField;
Tblcardscard_id: TAutoIncField;
Tblcards: TADOtable;
TblCardTypesdiscount: TFloatField;
TblCardTypesName: TStringField;
TblCardTypesid: TAutoIncField;
TblCardTypes: TADOtable;
TblWeekDaysName: TStringField;
TblWeekDaysid: TIntegerField;
TblWeekDays: TADOtable;
TblTimeForCardstohour: TIntegerField;
TblTimeForCardsfromhour: TIntegerField;
TblTimeForCardsday: TIntegerField;
TblTimeForCardsfortype: TIntegerField;
TblTimeForCardsid: TAutoIncField;
TblTimeForCards : TADOtable;
QryClientStreet: TWideStringField;
QryClientDom: TSmallintField;
QryClientKorpus: TWideStringField;
QryClientKvartira: TSmallintField;
QryClientHistory: TWideStringField;
ADOSpec: TADOQuery;
ADOSpecSpeciality_ID: TSmallintField;
ADOSpecSurname: TWideStringField;
ADOSpecName: TWideStringField;
ADOSpecPatronymic: TWideStringField;
ADOSpecSpeciality: TWideStringField;
ADOSpecNumber_year: TSmallintField;
ADOSpectelethon: TWideStringField;
ADOSpecDom: TSmallintField;
ADOSpecKorpus: TWideStringField;
ADOSpecKvartira: TSmallintField;
ADOSpecStreet: TWideStringField;
Database: TADOConnection;
OpenDialog: TOpenDialog;
QryClientphotoFile: TWideStringField;
TblTimeForCardsField: TStringField;
TblCardTypescost: TBCDField;
TblCardTypesDayLimited: TBooleanField;
TblCardTypesDayLimit: TIntegerField;
TblClientsFio: TADOTable;
TblViewTypesDayLimit: TIntegerField;
TblcardsDayLimit: TIntegerField;
TblViewTypesDayLimited: TBooleanField;
TblcardsDayLimited: TBooleanField;
Tblcardsclient: TSmallintField;
Tblcardslocked: TBooleanField;
QryClientPaspSer: TSmallintField;
QryClientPaspNum: TIntegerField;
ADOSpecPaspSer: TSmallintField;
ADOSpecPaspNum: TIntegerField;
QryClientPensNum: TWideStringField;
QryClientOgr: TBooleanField;
QryClientOgrText: TWideStringField;
ADOSpecPensNum: TWideStringField;
TblCardTypesAbonType: TBooleanField;
Tblcardsadmin: TIntegerField;
QryClientadmin_id: TIntegerField;
TblService_SpecialitySpeciality_ID: TIntegerField;
Tblcardsend: TBooleanField;
TbldataServiceCost: TFloatField;
Tbldatasost: TWordField;
TblUsedMatCost: TCurrencyField;
TblMaterialsCost: TBCDField;
TblServiceCost: TBCDField;
TbldataMatCost: TBCDField;
TbldataCost: TBCDField;
TblSpecialityPaspSer: TSmallintField;
TblSpecialityPaspNum: TIntegerField;
TblSpecialityDom: TSmallintField;
TblSpecialityNumber_year: TSmallintField;
TblSpecialitySpecId: TIntegerField;
TblSpecialityNameSpec: TStringField;
TblClientsFioClient_ID: TAutoIncField;
TblClientsFioFIO: TWideStringField;
procedure QryClientNewRecord(DataSet: TDataSet);
procedure ADOSpecNewRecord(DataSet: TDataSet);
procedure DataModuleCreate(Sender: TObject);
procedure TblTimeForCardsNewRecord(DataSet: TDataSet);
procedure TblCardTypesNewRecord(DataSet: TDataSet);
procedure TblCardTypesdiscountGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure TblCardTypesdiscountSetText(Sender: TField;
const Text: String);
procedure TblCardTypesDayLimitedGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
procedure TblCardTypesDayLimitedSetText(Sender: TField;
const Text: String);
procedure TblCardTypesDayLimitGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure TblCardTypesDayLimitSetText(Sender: TField;
const Text: String);
procedure TblcardslockedGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure TblcardslockedSetText(Sender: TField; const Text: String);
procedure TblcardsNewRecord(DataSet: TDataSet);
procedure TblAdminspasswordGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure TblUsedMatNewRecord(DataSet: TDataSet);
private
{Private declarations}
public
function Skidka(clientid,servid:integer; var tp,inf:string;var card:integer):double;
procedure ClearCardHistory(id:integer);
procedure FixedPos(cardid,servid:Integer);
procedure ProcessEndTimeCards;
{Public declarations}
end;
var
dm: Tdm;
Admin:boolean=true;
adminid:integer=1;
user,passw:string;
implementation
uses sqlAdoTools,rusdlg;
{$R *.dfm}
procedure Tdm.ProcessEndTimeCards;
begin
// with MakeCursor('select * from cards a, cardtypes b where a.type=b.id') do
with MakeCursor('select * from cards ') do
begin
while not eof do
begin
if not FieldByName('dtend').IsNull and (FieldByName('dtend').AsDateTime<Date) then
begin
RunSql('UPDATE cards SET cards.[end] = 1 WHERE cards.card_id= %d',[FieldByName('card_id').AsInteger]);
end;
Next;
end;
Free;
end;
end;
procedure Tdm.ClearCardHistory(id:integer);
begin
RunSQL('Delete from UsedService where card_id=%d',[id]);
end;
procedure Tdm.FixedPos(cardid,servid:Integer);
begin
if calculateint('select count(*) from UsedService where card_id=%d and Service=%d',[cardid,servid]) =0 then
RunSql('insert into UsedService (Card_id,Service,cnt) values (%d,%d,1)',[cardid,servid])
else
RunSql('update UsedService set cnt=cnt+1 where Card_id=%d and Service=%d',[cardid,servid]);
end;
function Tdm.Skidka(clientid,servid:integer; var tp,inf:string;var card:integer):double;
var i,j,day,db,de,allcnt,ucnt:integer;
dend:tDateTime;
disc:double;
loc,abon:boolean;
begin
result:=0;
inf:=''; tp:='Нет карты';
card:=-1;
i:=CalculateInt('select card_id from cards where client = %d',[clientid]);
if i=0 then exit;
card:=i;
with MakeCursor('select a.dtend,b.discount,b.id, a.locked, b.name as tp , b.AbonType from cards a, cardtypes b where b.id=a.type and card_id='+IntToStr(i)) do
begin
dend:=FieldByName('dtend').AsDateTime;
disc:=FieldByName('discount').AsFloat;
j:=FieldByName('id').AsInteger;
loc:=FieldByName('locked').AsBoolean;
abon:=FieldByName('abontype').AsBoolean;
tp:='№'+IntToStr(i)+' '+FieldByName('tp').AsString;
free;
end;
if loc then begin inf:='Карта блокирована'; exit; end;
if abon then
begin
allcnt := calculateInt('select cnt from ServiseOnCard where fortype=%d and Service=%d',[j,servid]);
if allcnt=0 then
begin
inf:='Скидка на эту услугу не предусмотрена';
Exit;
end;
ucnt := calculateInt('select cnt from UsedService where card_id=%d and Service=%d',[i,servid]);
if ucnt>=allcnt then begin inf:='Все оплаченные разы уже использованы'; exit; end;
inf := Format('По карте использовано %d из %d',[ucnt,allcnt]);
Result:=1;
Exit;
end;
if (dend<date) and (dend>0) then begin inf:='У карты истек срок действия'; exit; end;
day:=DayOfWeek(Date);
if day = 1 then day:=7 else dec(day);
db:=-1;
with MakeCursor(format('select fromhour,tohour from TimeForCards where fortype=%d and day=%d',[j,day])) do
begin
if not IsEmpty then
begin
db:=FieldByName('fromhour').AsInteger;
de:=FieldByName('tohour').AsInteger;
end;
free;
end;
if db=-1 then begin inf:='Для типа карт не определено время действия'; exit; end;;
if (time<EncodeTime(db,0,0,0)) or (time>EncodeTime(de,0,0,0)) then begin
inf:='Данный тип карты в это время не работает'; exit; end;
result:=disc;
inf:='Карта активна';
end;
procedure Tdm.QryClientNewRecord(DataSet: TDataSet);
begin
QryClientadmin_id.Value := adminid;
end;
procedure Tdm.ADOSpecNewRecord(DataSet: TDataSet);
begin
ADOSpecSpeciality_ID.Value := GetId('Speciality_ID','Speciality');
end;
procedure Tdm.DataModuleCreate(Sender: TObject);
var ini:tIniFile; //объект INI-файл
s:string;
begin
Database.Close;
ini:=tIniFile.Create(ChangeFileExt(paramstr(0),'.ini')); //создаем
s:=ini.ReadString('main','db','db2.mdb'); //чтение строки пути к данным
// while true do
if not FileExists(s) then //если файла данных нет
begin
if not OpenDialog.Execute then //показать диалог открытия файла
begin
rusdlg.Error('Программа заканчивает свою работу'); //если отмена, то выход
halt;
end;
//Затем сохраняем строку в ini-файл
s:=OpenDialog.FileName;
ini.WriteString('main','db',OpenDialog.FileName);
end;
//строим строку подключения
Database.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+s+';Persist Security Info=False';
ini.Free; //освобождение памяти.
randomize;// инициализация генератора случайных чисел
//открывается база из текущей директории
Database.Open;
dbCon:=Database;
ProcessEndTimeCards;
end;
procedure Tdm.TblTimeForCardsNewRecord(DataSet: TDataSet);
begin
TblTimeForCardsday.Value:=1;
TblTimeForCardsfromhour.Value:=0;
TblTimeForCardstohour.Value:=23;
TblTimeForCardsfortype.Value := TblTimeForCards.Tag;
end;
procedure Tdm.TblCardTypesNewRecord(DataSet: TDataSet);
begin
TblCardTypesdiscount.Value:=0.05;
TblCardTypescost.Value:=0;
TblCardTypesDayLimited.Value:=true;
TblCardTypesDayLimit.Value:=31;
TblCardTypesAbonType.Value:=true;
end;
procedure Tdm.TblCardTypesdiscountGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
If sender.IsNull then exit;
if TblCardTypesAbonType.Value then text:='-' else
Text:=format('%1.2f%%',[sender.asfloat*100]);
end;
procedure Tdm.TblCardTypesdiscountSetText(Sender: TField;
const Text: String);
var f:double;
s:string;
begin
if text='' then begin sender.cl...
Подобные документы
Разработка конфигурации программы в среде "1С:Предприятие 7.7" для учета клиентов. Автоматизация процедуры учета заработной платы. Описание среды программирования, требования к техническому и программному обеспечению. Методика разработки проекта.
дипломная работа [349,2 K], добавлен 17.07.2014Задачи автоматизированного учета компьютерной техники на предприятии ГУ НПО Тайфун. Описание среды программирования, требования к техническому и программному обеспечению. Описание алгоритма, структурная схема. Аномалии и защитное программирование.
дипломная работа [1,1 M], добавлен 30.06.2014Формализация и стандартизация данных, необходимых для разработки веб-сайта. Описание среды программирования. Требования к техническому обеспечению. Алгоритмизация данных и защитное программирование. Анализ результатов решения и инструкция пользователю.
дипломная работа [3,7 M], добавлен 30.06.2014Общая характеристика и основные требования к техническому и программному обеспечению, методика проектирования и алгоритмизация поставленной задачи. Принципы тестирования и отладка разработанного приложения по автоматизации учета налоговых проверок.
курсовая работа [3,0 M], добавлен 18.07.2014Требования к программному продукту: базе данных и интерфейсу. Анализ входной, выходной и постоянной информации. Выбор и обоснование выбора среды разработки, программной реализации, описание внутренней среды. Логическая и физическая модель данных.
курсовая работа [2,1 M], добавлен 04.05.2014Создание автоматизированного учета клиентов в туристическом агентстве "Отпуск". Вывод данных о клиентах и заключенных с ними договорах. Требования к программному и техническому обеспечению. Описание алгоритма и структурная схема. Тестирование и отладка.
курсовая работа [2,2 M], добавлен 25.06.2014Комплексная автоматизация хозяйственной, организационной и финансовой деятельности предприятия. Требования к программному средству. Обоснование выбранной среды программирования. Информационное обеспечение системы. Описание алгоритма решения задачи.
дипломная работа [1,2 M], добавлен 18.06.2012Принципы учета движения готовой продукции на складе. Проектирование логической и физической модели данных. Выбор среды разработки, операционной системы, требования к аппаратному и программному обеспечению. Разработка программы учета готовой продукции.
дипломная работа [926,6 K], добавлен 09.07.2012Разработка программного обеспечения, позволяющего вести автоматизированный учет продукции на складе. Требования к техническому и программному обеспечению. Методика разработки проекта, описание алгоритма, структурная схема, тестирование и отладка.
дипломная работа [1,5 M], добавлен 19.07.2014Разработка программного приложения по автоматизированному учету поступающего довольствия. Описание среды программирования. Тестирование и отладка приложения. Анализ результатов решения. Инструкция пользователю. Требования к техническому обеспечению.
дипломная работа [946,0 K], добавлен 18.07.2014Требования к программному продукту, к задачам и функциям, выполняемым программой, к техническому, программному и организационному обеспечению. Стадии и этапы разработки программного продукта. Простота навигации по программе, присутствие строки подсказки.
курсовая работа [236,7 K], добавлен 09.03.2009Основные требования к разработке интернет-сайта фирмы ООО "Экаунт-Бизнес" с целью привлечения новых потенциальных клиентов. Описание среды программирования. Требования к техническому и программному обеспечению. Аномалии и защитное программирование.
курсовая работа [2,0 M], добавлен 30.06.2014Информационная модель системы. Требования к техническому, программному обеспечению и интерфейсам информационной системы. Инсталляция и запуск программного продукта. Руководство пользователя системы с правами дознавателя. Макеты входных документов.
дипломная работа [1,1 M], добавлен 18.01.2013Описание платформы NET Framework. База данных Microsoft Access. Разработка Windows приложения. Модель программирования Windows Forms. Функциональное назначение программы. Входные и выходные данные. Требования к техническому и программному обеспечению.
курсовая работа [2,2 M], добавлен 15.03.2015Минимальные системные требования к техническому и программному обеспечению для применения базы данных. Структура базы данных, создание таблиц (сотрудники, контакты, контракты, клиенты), запросов и форм. Описание действий при работе с базой данных.
практическая работа [1,0 M], добавлен 13.02.2011Программы системы "1С: Предприятие". Разработка, издание и поддержка компьютерных программ делового и домашнего назначения. Требования к техническому и программному обеспечению и к интерфейсам операционной системы. Средства разработки презентации.
курсовая работа [2,6 M], добавлен 08.03.2015Разработка программы для вычисления производительности труда рабочих цеха. Описание среды и языка программирования. Требования к программному и аппаратному обеспечению. Математическая модель решения задачи. Методы тестирования. Техника безопасности.
курсовая работа [2,6 M], добавлен 29.03.2013Реализация программ для работы с большим объемом информации, записанной в файлах. Набор инструментальных и алгоритмических средств для разработки программы. Структура данных, описание основных модулей. Требования к программному и аппаратному обеспечению.
курсовая работа [712,0 K], добавлен 13.08.2012Требования к программному и аппаратному обеспечению. Построение фрагментов модели данных, их формирование в основном окне программы управления. Результат настройки контроля целостности. Снятие блокировки рабочей станции. Проверка работы приложения.
контрольная работа [5,2 M], добавлен 02.12.2014Требования и структура систем обработки экономической информации. Технология обработки информации и обслуживание системы, защита информации. Процесс создания запросов, форм, отчетов, макросов и модулей. Средства организации баз данных и работы с ними.
курсовая работа [2,7 M], добавлен 25.04.2012