ПРОГРАММНОЕ СРЕДСТВО ДЛЯ РАСЧЕТА РАСХОДА ЛЕГКОВЫХ АВТОМОБИЛЕЙ

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,44 Мб
  • Опубликовано:
    2013-05-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

ПРОГРАММНОЕ СРЕДСТВО ДЛЯ РАСЧЕТА РАСХОДА ЛЕГКОВЫХ АВТОМОБИЛЕЙ

Частное учреждение образования

«ТЕХНИКУМ БИЗНЕСА И ПРАВА»







пРОГРАММНОЕ СРЕДСТВО ДЛЯ расчета расхода

легковых автомобилей

Пояснительная записка

к курсовому проекту по предмету

“Основы алгоритмизации и программирование”

КП  Т.999033.401

Руководитель проекта                               ( Н.И. Савченкова                  )

Учащийся                                                   ( В.В. Матюшко                     )

2013 Содержание

 

Введение. 3

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

1.1       Организационная сущность задачи. 5

1.2       Информационная модель. 5

1.3       Входные данные. 6

1.4       Постоянная информация. 6

1.5       Выходные данные. 6

2 Вычислительная система. 7

2.1       Используемые технические средства. 7

2.2       Инструменты разработки. 7

3 Проектирование задачи. 8

3.1       Объектно-ориентированный анализ. 8

3.2       Концептуальный прототип. 9

3.3       Функции: логическая и физическая организация и элементы управления. 12

4 Описание программного средства. 13

4.1       Общие сведения. 13

4.2       Функциональное назначение. 13

5 Методика испытаний. 14

5.1       Технические требования. 14

5.2       Порядок проведения испытаний. 14

5.2.1 Функциональное тестирование. 14

5.2.2 Полное тестирование. 15

6 Применение. 26

6.1       Назначение программы.. 26

6.2       Условия применения. 26

6.3       Справочная система. 26

Заключение. 28

Литература. 29

Приложение А.. 30

Приложение Б. 43


 

Введение




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

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

Для достижения цели курсового проекта нужно решить следующие задачи:

– выполнить объектно-ориентированный анализ и проектирование системы, результатом которой будет модель системы;

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

– по модели выполнить проектирование задачи;

– разработать программный продукт;

– описать созданный программный продукт;

– выбрать методику испытаний;

– описать процесс тестирования;

– привести примеры области применения.

Решение поставленных задач отражено в пояснительной записке.

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

В первом разделе «Постановка задачи» описывается исследование предметной области, определение круга задач, перечисляются основные функции программы.

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

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

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

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

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

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

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

1.1   Организационная сущность задачи



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

1.2   Информационная модель



Согласно общим требованиям стандартный графический интерфейс разрабатываемого приложения должен:

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

– сохранять  стандартное  назначение  и  местоположение  на  экране  графическихобъектов, работающих в среде Windows.

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

Состав для диалоговых систем представляет собой:

– главное меню в виде закладок, где пользователю предлагается выбор функцийиз фиксированного перечня программы для работы с ней:«Автомобили организации», «Водители», «Путевые листы», «Отчет о расходе топлива по автомобилям за период». Каждая из закладок отвечает за работу с той или иной информацией. На каждой из закладок пользователь может вводить или удалять данные. На закладке «Отчет о расходе топлива по автомобилям за период» пользователю предлагается указать период и запустить обработку и формирование отчета о расходе топлива;

– действия запрос-ответ, где при удалении у пользователя спрашивается подтверждение его действия.

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

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

1.3   Входные данные



Входными данными являются:

 Таблица 1 – Входные данные

Функция

Входные данные

Добавление нового автомобиля в список

Марка автомобиля

Регистрационный номер автомобиля

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

Вид топлива автомобиля (выбирается из списка видов топлива)

Добавление нового вида топлива

Наименование вида топлива

Добавление вида нормы расхода топлива на автомобиль

Дата вступления в силу вида нормы расхода

Название вида нормы расхода (выбирается из списка видов норм расхода)

Значение нормы расхода (л/100 км.)

Добавление нового вида нормы расхода

Наименование вида нормы расхода

Добавление водителя

ФИО водителя

Добавление путевого листа

Номер путевого листа

Водитель (выбирается из списка водителей системы)

Автомобиль (выбирается из списка автомобилей системы)

Дата начала

Дата окончания

Добавление информации в содержимое путевого листа

Дата

Вид нормы расхода на автомобиль (выбирается из списка действующих норм на указанную дату)

Расстояние

Функции удаления

Указанная информация к удалению (запись)

Подтверждение удаления


1.4   Постоянная информация



Постоянной информацией в данном проекте является имя файла БД MS ACCESS - autos.mdb, файл которой должен находится в одном каталоге с файлом разрабатываемой программы Autos.exe.

1.5   Выходные данные



Выходными данными являются текстовый файл report.txt, содержащие в себе информацию о расходе топлива. Например:

Расход топлива за период: 01.01.2013 - 27.03.2013

    1. Lexus LX 470 г.н.0004 ВМ-2 ДТ - 112,25

Итого по видам топлива:

    1. ДТ - 112,25

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

2 Вычислительная система


2.1   Используемые технические средства



Конфигурация компьютера, на котором будет разрабатываться программное приложение:процессор AthlonPalomino 2100+; оперативная память DDR 400 512 Мб;жёсткий диск HDD Seagate 80Gb 4 Мб.

2.2   Инструменты разработки



Инструментами разработки будут являться:

-  операционная система Windows XP Professional;

-  среда программирования BorlandDelphi7.0;

-  язык программирования ObjectPascal.

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

Для разработки данного программного приложения была использована операционная система MicrosoftWindows XP Professional. Данная операционная система является оптимальным решением для предприятия любого размера. Данная версия операционной системы Windows сочетает в себе преимущества Windows 2000 Professional (например, средства безопасности, управляемость и надежность) с лучшими качествами Windows 98 и Windows ME (поддержка Plug&Play, простой пользовательский интерфейс и передовые службы поддержки). Это делает Windows XP Professional наиболее подходящей операционной системой для настольных компьютеров, применяемых в корпоративной среде. Независимо от того, где устанавливается Windows XP Professional – на одном компьютере или в масштабе локальной сети, – эта система повышает вычислительные возможности предприятия, одновременно сокращая совокупную стоимость программного обеспечения всех настольных компьютеров.

Для реализации программы была выбрана среда программированияDelphi, а именно пакет BorlandDelphiEnterpriseVersion 7.0. BorlandDelphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.

Язык программирования ObjectPascal является последней версией семейства языков Pascal, реализующей принципы объектно-ориентированного программирования. Этот язык является основой системы визуального программирования Delphi. Наиболее существенным отличием от традиционного языка Pascal является наличие достаточно сложных структур данных (классы) и возможность средствами Pascal обращаться к функциям Windows API для создания полноценных Windows-приложений. ObjectPascal позволяет использовать множество самых разнообразных типов и структур данных. Все типы данных можно разбить на три группы: простые (базовые), структурированные и пользовательские типы, которые создаются на основе базовых и объединяют несколько переменных разных типов в одной структуре данных.

3 Проектирование задачи


3.1   Объектно-ориентированный анализ



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

В проектируемой системе используются стандартные классы TForm,TPageControl, TTabSheet,  TDBGrid, TBitBtn, TDateTimePicker, TLabel, TDBEdit, TDBLookupComboBox, TSpeedButton, и т.п. подобные классы.

  Таблица 2 – Используемые компоненты

Класс компонента

Назначение

TForm

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

TLabel

Компоненты класса TLabel предназначены для размещения на форме различного рода текстовых надписей.

TDBEdit

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

TPageControl

Компонент TPageControl представляет собой контейнер для хранения компонентов класса TTabSheet и представления их в виде закладок

TTabSheet

Компонент класса TTabSheet представляет собой закладку (область или контейнер) для хранения других компонентов и группировки их по логической принадлежности

TBitBtn

Компонент класса TBitBtn представляет собой кнопку с возможностью помимно надписи на ней размещения еще и изображения

TDBGrid

Компонент класса TDBGrid представляет собой таблицу с заголовками для отображения набора данных (результата запроса к БД)

TDateTimePicker

Компонент класса TDateTimePicker представляет собой поле длявода даты или выбора ее из календаря

TDBLookupComboBox

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

TSpeedButton

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





3.2   Концептуальный прототип



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

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

Приведем описание вкладок, используемых на главной форме. Можно представить их в виде таблиц. Например,

Таблица 3 – Элементы управления и визуализации

Размещение

Элемент экрана

Класс

Действие

Форма программы, вкладка«Автомобили организации»

DBGrid1– таблица для отображения списка автомобилей

TDBGrid

Выводит список автомобилей

BitBtn1 - кнопка добавления новой записи об автомобиле

TBitBtn

Отображается окно ввода данных о новом автомобиле и добавление записи

BitBtn2 – кнопка удаления текущей записи об автомобиле

TBitBtn

Отображается подтверждение на удаление, и при подтверждении – удаление записи и обновление таблицы DBGrid1

BitBtn3 – кнопка для отображение списка норм расхода топлива для указанного автомобиля

TBitBtn

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

Форма программы, вкладка «Водители»

DBGrid2– таблица для отображения списка водителей

TDBGrid

Выводит список водителей

BitBtn4 - кнопка добавления новой записи оводителе

TBitBtn

Отображается окно ввода ФИО водителя и добавление записи

BitBtn5 – кнопка удаления текущей записи о водителе

TBitBtn

Отображается подтверждение на удаление, и при подтверждении – удаление записи и обновление таблицы DBGrid2




 Продолжение таблицы 3

Форма программы, вкладка «Путевые листы»

DBGrid3– таблица для отображения списка путевых листов

TDBGrid

Выводит список путевых листов

BitBtn6 - кнопка добавления новой записи

TBitBtn

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

BitBtn7 – кнопка удаления текущей записи

TBitBtn

Отображается подтверждение на удаление, и при подтверждении – удаление записи и обновление таблицы DBGrid3

BitBtn8 – кнопка для отображение содержимого путевого листа

TBitBtn

Отображается окно для ввода новых или удаления имеющихся записей о содержимом путевого листа

Форма программы, вкладка «Отчет о расходе топлива по автомобилям за период»

DateTimePicker1 – воле ввода даты начала требуемого периода

ТDateTimePicker


DateTimePicker2 – воле ввода даты окончания требуемого периода

ТDateTimePicker


BitBtn9 – кнопка запуска формирования отчета

TBitBtn

Формирование отчета по расходу топлива в текстовый фай report.txt и открытие его после формирования в блокноте


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

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

Таблица 4 – Структура таблицы «Autos» - список автомобилей

Имя поля

Тип поля

Назначение

Id_Auto

Счетчик

Однозначно идентифицирует запись в таблице, первичный ключ

Marka

Текстовый

Марка авто

Number

Текстовый

Регистрационный номер

Start_Statement

Длинное целое

Показания пробега

Id_vid_toplivo

Длинное целое

ID вида топлива



Таблица 5 – Структура таблицы «toplivo» - список видов топлива

Имя поля

Тип поля

Назначение

Id_vid_toplivo

Счетчик

Однозначно идентифицирует запись в таблице, первичный ключ

Naim_toplivo

Текстовый

Название топлива


Таблица 6 – Структура таблицы «Norms»

Имя поля

Тип поля

Назначение

Id_norma

Счетчик

Однозначно идентифицирует запись в таблице, первичный ключ

ID_Auto

Длинное целое

Номер записи (первичного ключа) об автомобиле

Start_date

Дата/время

Дата вступления в силу нормы

Rasxod_na_100

Длинное целое

Показания расхода л/100 км.

Id_vid_norma

Длинное целое

ID вида нормы


Таблица 7 – Структура таблицы «vid_norma» - список видов норм

Имя поля

Тип поля

Назначение

Id_vid_norma

Счетчик

Однозначно идентифицирует запись в таблице, первичный ключ

vid_norma

Текстовый

Название вида


Таблица 8 – Структура таблицы «Voditel» - список водителей

Имя поля

Тип поля

Назначение

Id_voditel

Счетчик

Однозначно идентифицирует запись в таблице, первичный ключ

FIO

Текстовый

ФИО водителя


Таблица 9 – Структура таблицы «Put_lists» - список путевых листов

Имя поля

Тип поля

Назначение

Id_Put_list

Счетчик

Однозначно идентифицирует запись в таблице, первичный ключ

Number

Длинное целое

Номер путевого листа

Id_voditel

Длинное целое

ID водителя

Id_Auto

Длинное целое

ID авто

Data_start

Дата/время

Дата начала

Data_end

Дата/время

Дата окончания



Таблица 10 – Структура таблицы «Put_list_content» - содержимое путевого листа

Имя поля

Тип поля

Назначение

Id

Счетчик

Однозначно идентифицирует запись в таблице, первичный ключ

Id_Put_list

Длинное целое

ID путевого листа

Id_norma

Длинное целое

IDнормы расхода на авто

Distance

Длинное целое

Расстояние

Data

Дата/время

Дата

 


3.3   Функции: логическая и физическая организация и элементы управления



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

В программном приложении «Autos.exe» для обработки событий на главной форме используются следующие методы:

–procedureTFormMain.FormShow– процедура обработки первого показа окна, осуществляет соединение с БД и открытие необходимых наборов данных;

–procedure TFormMain.BitBtn1Click – процедура вызова модального окна создания новой записи об авто, и при положительном результате модального вызова – создание новой записи об автомобиле в БД;

–procedureTFormMain.BitBtn2Click – обработка удаления записи об автомобиле. При наличии записей об авто в БД выдает запрос на подтверждение удаления, и при подтверждении удаляет запись об авто из БД;

– procedureTFormMain.BitBtn3Click– отображает модальное окно, содержащее список норм расхода для указанного авто. На форме можно добавлять и удалять необходимые нормы;

–procedure TFormMain.BitBtn4Click – обработка добавления водителя. Запрашивает ФИО и при правильном указании – добавление записи о водителе в БД.

–procedure TFormMain.BitBtn5Click - обработка удаления записи о водителе. При наличии записей в БД выдает запрос на подтверждение удаления, и при подтверждении удаляет запись из БД;

–procedureTFormMain.BitBtn7Click- обработка удаления записи о путевомлисте. При наличии записей в БД выдает запрос на подтверждение удаления, и при подтверждении удаляет запись из БД;

–procedure TFormMain.BitBtn6Click – процедура вызова модального окна создания новой записи о путевом листе, и при положительном результате модального вызова – создание новой записи БД;

–procedure TFormMain.BitBtn8Click - отображает модальное окно, содержащее список, представляющий содержимое путевого листа. На форме можно добавлять и удалять необходимое содержимое;

–procedure TFormMain.BitBtn9Click – осуществляет вычисление норм расхода на заданный период. Сохранение результатов в текстовый файл report.txt и вывод его на просмотр.

4 Описание программного средства


4.1   Общие сведения



Для того чтобы начать работу с программой, нужно запустить файл «Autos.exe». Его объем составляет 890 килобайт. Все действия пользователя осуществляются при помощи файла клавиатуры и мыши. Программный продукт функционирует в среде Windows.После запуска программы, пользователю отображено главное окно программы.

В ходе работы программа использует файлMSACCESS«autos.mdb», расположенный в директории, в которых хранится сам файл программы.

Файл «autos.mdb» представляет собой БД в таблицах которой хранятся вводимые пользователем данные.

4.2   Функциональное назначение



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

Средства защиты, разграничения доступа к данным и сетевая поддержка не предусмотрены.

5 Методика испытаний


5.1   Технические требования



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

Таблица 11 – Минимальные системные требования

Элементы конфигурации

Описание характеристик

Процессор

AMD/Intel 200ГГц

Оперативная память

5Мб

Видео адаптер

16Мб

Дисковой накопитель

2Мб

Клавиатура

Совместимая с персональным компьютером

Мышь

Совместимая с персональным компьютером

Блок питания

200Вт

Монитор

15"

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

Windows 98\2000\XP\7

 


5.2   Порядок проведения испытаний


5.2.1 Функциональное тестирование



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

Протестируем функцию создания записи о новом автомобиле:

Перейти на вкладку «Автомобили организации»:

Рисунок 1 – Вкладка «Автомобили организации»

Нажать кнопку «Добавить автомобиль»;

В появившемся диалоговом окне ввести данные и нажать сохранить:

Рисунок 2 – Окно для ввода новой информации об авто

В результате будет добавлена запись о новом авто:

Рисунок 3 – Результат добавления новой записи об автомобиле

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

5.2.2 Полное тестирование



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

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

Последовательность действий по процессу полного тестирования приведена в таблице 12

Таблица 12 – Алгоритм полного тестирования

Этап тестирования

Ожидаемый результат

Иллюстрация полученного результата

Запуск приложения «Autos.exe»

Активирование главной формы на вкладке «Автомобили организации», открытие БД, отображение списка авто в БД:

Добавление новой записи об автомобиле:

1.Нажатие кнопки «Добавить автомобиль»

Активизация формы для ввода информации об автомобиле «Введите информацию»

2.Ввод неполной информации об авто


3.Попытка сохранения

Сообщение о некорректности вводимых данных

4.Ввод корректных данных



Продолжение таблицы 12

5.Попытка сохранения

Сохранение успешное, запись добавлена

Удаление записи об автомобиле:

1. Выделение необходимой записи и нажатие на кнопку «Удалить автомобиль»

Подтверждение на  удаление

2.1 Отмена подтверждения

Запись не удалена и осталась в списке

2.2 Подтверждение

Запись удалена

Просмотр норм расхода на авто:

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

Активизация формы содержащей нормы расхода текущего авто


Продолжение таблицы 12

Удаление нормы:

1. Выделение необходимой записи и нажатие на кнопку «Удалить»

Подтверждение на  удаление

2.1 Отмена подтверждения

Запись не удалена и осталась в списке

2.2 Подтверждение

Запись удалена

Добавление нормы расхода:

Нажатие на кнопку «Добавить»

Активизация формы для ввода информации об автомобиле «Введите информацию»

1. Ввод неполной или некорректной информаци



Продолжение таблицы 12

2. Попытка сохранения

Сообщение об ошибке

3.1 Ввод корректной информации и сохранение

Сохранение и отображение в списке:

3.2.1 Добавление нового вида названия нормы:

Нажатием на кнопку «+» , расположенную возле списка норм

Запрос названия

3.2.2 Отмена либо подтверждение без указания названия или названия в виде набора пробелов

Закрытие окна и отсутствие результата

Да


Продолжение таблицы 12

3.2.3 Ввод нового названия нормы и подтверждение

Норма добавилась в выпадающий список

Отображение списка водителей:

Переключение на закладку «Водители»

Отображение на закладке списка водителей БД

Удаление водителя:

1. Выделение водителя из списка

2. Нажатие на кнопку «Удалить»

Запрос подтверждения

3.1 Отмена подтверждения

Водитель остался в списке

Да


Продолжение таблицы 12

3.2 Подтверждение удаления

Водитель был удален из БД и исчез из списка

Добавление водителя:

1. Нажатие на кнопку «Добавить …»

Запрос ФИО водителя

2.1 Указание ФИО и подтверждение

Водитель добавлен

2.2 Отмена либо подтверждение без указания названия или названия в виде набора пробелов

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

Да


Продолжение таблицы 12

Отображение списка путевых листов:

Переключение на закладку «Путевые листы»

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

Удаление водителя:

1. Выделение листа из списка

2. Нажатие на кнопку «Удалить…»

Запрос подтверждения

3.1 Отмена подтверждения

Путевой лист остался в списке

Да

3.2 Подтверждение удаления

Водитель был удален из БД и исчез из списка

Да

Добавление путевого листа:

Путем нажатия на кнопку «Добавить…»

Отображение формы для заполнения информации о путевом

2. Ввод некорректных или неполных данных и попытка сохранения

Отображение сообщения об ошибке


Продолжение таблицы 12

3. Ввод полных корректных данных и сохранение

Путевой создан и появился в списке

Редактирование содержимого путевого листа

Нажать на кнопку «Содержимое»

Отображение формы содержимого путевого листа

 Удаление записи из содержимого:

1. Выделение записи

2. Нажатие на кнопку «Удалить»

Запрос подтверждение

3.1 Отмена

Запись не удалена

Да

3.2 Подтверждение

Запись удалена


Продолжение таблицы 12

Добавление записи содержимого путевого листа

Нажатие на кнопку добавить

Активация формы для новой записи

1.Указание неполных или некорректных данных и попытка сохранения

Сообщение об ошибке

2. Указание корректных данных и попытка сохранения

Запись добавлена

Формирование отчета о расходе:

1. Переход на вкладку «Отчет о расходе»

2. Указание периода

3. Нажатие на кнопку «Сформировать …»

Отчет сформирован и открыт



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

6 Применение


6.1   Назначение программы



Разработанный программный продукт «Autos.exe», предназначен для автоматизации процесса расчета расхода топлива легковых автомобилей по данным путевых листов и норм расхода.

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

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

6.2   Условия применения



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

Требования к конфигурации  компьютера,  на  котором  будет  использоваться  программное приложение:

– процессор AMD/Intel 200 ГГц:

– оперативная память 5 Мб;

– жёсткий диск 2 Мб;

– монитор 15";

– клавиатура, совместимая с ПК;

– мышь, совместимая с ПК;

– операционная система Windows 98\2000\XP\7.

6.3   Справочная система


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

На рисунке 4 представлен вид справочного файла:

                 

Рисунок 4 – Справочный файлHelp.doc

Заключение

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

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

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

- разработана выходная форма отчета;

- данные отчета сохраняются в виде файла.

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

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

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

Программный продукт получит практическое внедрение или использование напредприятии РУП «Витебский ДСК» завод КПД.

Литература

1   Багласова Т.Г. Методические указания по оформлению курсовых и дипломных работ. -Мн.: ТБП, 2006

2   Грибанов В.П. и др. Основы алгоритмизации и программирование. – М.: Бином, 1999

3   Культин Н.Б. Программирование в TurboPascal и Delphi.  2-ое изд. переработанное и дополненное.–С-Пб: БХВ-Петербург, 2008

4   Леонтьев В.П. Новейшая энциклопедия персонального компьютера. – М.: ОЛМА-ПРЕСС, 2002

5   Фаронов В.В. Delphi. Программирование на языке высокого уровня. –С-Пб: Питер, 2005

6   ГОСТ 2.106-96. ЕСКД. Текстовые документы

7   ГОСТ 19.401-2000. ЕСПД. Текст программы

8   ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и систем

Приложение А

(обязательное)

Текст программы

unitUnitMain;

interface

uses

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

  Dialogs, UnitData, ExtCtrls, DBCtrls, Grids, DBGrids, ComCtrls, StdCtrls,

  Buttons, UnitAddAuto, UnitNorms, UnitAddList, UnitPutListContent, Math;

type

TFormMain = class(TForm)

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    TabSheet2: TTabSheet;

    TabSheet3: TTabSheet;

    DBGrid1: TDBGrid;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    DBGrid2: TDBGrid;

    BitBtn4: TBitBtn;

    BitBtn5: TBitBtn;

    DBGrid3: TDBGrid;

    BitBtn6: TBitBtn;

    BitBtn7: TBitBtn;

    BitBtn8: TBitBtn;

    TabSheet4: TTabSheet;

    DateTimePicker1: TDateTimePicker;

    Label1: TLabel;

    DateTimePicker2: TDateTimePicker;

    Label2: TLabel;

    BitBtn9: TBitBtn;

procedureFormShow(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn7Click(Sender: TObject);

procedure BitBtn6Click(Sender: TObject);

procedure BitBtn8Click(Sender: TObject);

procedure BitBtn9Click(Sender: TObject);

procedureWMNCLButtonDown(varMsg : TWMNCLButtonDown); message WM_NCLBUTTONDOWN;

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormMain: TFormMain;

implementation

{$R *.dfm}

procedureTFormMain.FormShow(Sender: TObject);

begin

DataM.ADOConnection.Open;

DataM.ADOTableAutos.Open;

DataM.ADOTableVoditel.Open;

DataM.ADOTableToplivo.Open;

DataM.ADOTableVidNorma.Open;

DataM.ADOTableput_list_all.Open;

end;

procedure TFormMain.BitBtn1Click(Sender: TObject);

begin

DataM.ADOTableAutos.Insert;

ifFormAddAuto.ShowModal=mrOk then

begin

DataM.ADOTableAutos.Post;

DataM.ADOTableAutos.Close;

DataM.ADOTableAutos.Open;

end

else

begin

DataM.ADOTableAutos.Cancel;

end;

end;

procedure TFormMain.BitBtn2Click(Sender: TObject);

begin

if (DataM.ADOTableAutos.RecordCount>0) then

if (MessageDlg('ДействительноудалитьавтоизБД?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then

begin

DataM.ADOQuery.Close;

DataM.ADOQuery.SQL.Text:='DELETE FROM AUTOS WHERE ID_AUTO='+DataM.ADOTableAutosId_Auto.asString;

DataM.ADOQuery.ExecSQL;

DataM.ADOQuery.Close;

DataM.ADOTableAutos.Close;

DataM.ADOTableAutos.Open;

DataM.ADOTableput_list_all.Close;

DataM.ADOTableput_list_all.Open;

end;

end;

procedure TFormMain.BitBtn3Click(Sender: TObject);

begin

if (DataM.ADOTableAutos.RecordCount>0) then

begin

FormNorms.Caption:='Нормырасходанаавто "'+DataM.ADOTableAutosMarka.Value+' г.н. '+DataM.ADOTableAutosNumber.Value+'"';

DataM.ADOTableNorms.Open;

FormNorms.ShowModal;

DataM.ADOTableNorms.Close;

end;

end;

procedure TFormMain.BitBtn5Click(Sender: TObject);

begin

if (DataM.ADOTableVoditel.RecordCount>0) then

if (MessageDlg('ДействительноудалитьводителяизБД?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then

begin

DataM.ADOTableVoditel.Delete;

end;

end;

procedure TFormMain.BitBtn4Click(Sender: TObject);

var

fio:String;

begin

fio:=InputBox('УкажитеФИОводителя','ФИО:','');

if (trim(fio)<>'') then

begin

DataM.ADOTableVoditel.Insert;

DataM.ADOTableVoditelFIO.Value:=fio;

DataM.ADOTableVoditel.Post;

end;

end;

procedure TFormMain.BitBtn7Click(Sender: TObject);

begin

if (DataM.ADOTableput_list_all.RecordCount>0) then

if (MessageDlg('ДействительноудалитьпутевойлистизБД?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then

begin

DataM.ADOQuery.Close;

DataM.ADOQuery.SQL.Text:='DELETE FROM PUT_LISTS WHERE ID_PUT_LIST='+DataM.ADOTableput_list_allId_Put_list.asString;

DataM.ADOQuery.ExecSQL;

DataM.ADOQuery.Close;

DataM.ADOTableput_list_all.Close;

DataM.ADOTableput_list_all.open;

end;

end;

procedure TFormMain.BitBtn6Click(Sender: TObject);

begin

DataM.ADOTableput_list_all.Insert;

DataM.ADOTableput_list_allData_start.Value:=Date;

DataM.ADOTableput_list_allData_end.Value:=Date;

 FormAddList.DateTimePicker2.Date:=Date;

ifFormAddList.ShowModal=mrOk then

begin

DataM.ADOTableput_list_all.Post;

DataM.ADOTableput_list_all.Close;

DataM.ADOTableput_list_all.open;

end

else

begin

DataM.ADOTableput_list_all.Cancel;

end;

end;

procedure TFormMain.BitBtn8Click(Sender: TObject);

begin

if (DataM.ADOTableput_list_all.RecordCount>0) then

begin

FormPutListsContent.Caption:='Содержимоепутевоголиста №'+DataM.ADOTableput_list_allNumber.AsString+' для '+DataM.ADOTableput_list_allauto.AsString;

DataM.ADOTablePut_list_content.Open;

FormPutListsContent.ShowModal;

DataM.ADOTablePut_list_content.Close;

end;

end;

procedure TFormMain.BitBtn9Click(Sender: TObject);

var

f:TextFile;

i:Integer;

begin

DataM.ADOStoredProcReport.Close;

DataM.ADOStoredProcReport.Parameters.FindParam('data_start_param').Value:=StrToDate(DateToStr(DateTimePicker1.Date));

DataM.ADOStoredProcReport.Parameters.FindParam('data_end_param').Value:=StrToDate(DateToStr(DateTimePicker2.Date));

DataM.ADOStoredProcReport.open;

DataM.ADOStoredProcAllToplivo.Close;

DataM.ADOStoredProcAllToplivo.Parameters.FindParam('data_start_param').Value:=StrToDate(DateToStr(DateTimePicker1.Date));

DataM.ADOStoredProcAllToplivo.Parameters.FindParam('data_end_param').Value:=StrToDate(DateToStr(DateTimePicker2.Date));

DataM.ADOStoredProcAllToplivo.open;

AssignFile(f,'report.txt');

Rewrite(f);

writeln(f,'Расходтопливазапериод: ',DateToStr(DateTimePicker1.Date),' - ',DateToStr(DateTimePicker2.Date));

i:=1;

if (DataM.ADOStoredProcReport.RecordCount>0) then

begin

DataM.ADOStoredProcReport.RecNo:=1;

while (not DataM.ADOStoredProcReport.Eof) do

begin

writeln(f,'    ',i,'. ',DataM.ADOStoredProcReportMarka.asString,' г.н.', DataM.ADOStoredProcReportNumber.AsString,' ',    DataM.ADOStoredProcReportNaim_toplivo.Asstring,' - ', floatToStr(RoundTo(DataM.ADOStoredProcReportrasxod.Value,-2)));

DataM.ADOStoredProcReport.Next;

inc(i);

end;

   i:=1;

writeln(f,'Итого по видам топлива:');

DataM.ADOStoredProcAllToplivo.RecNo:=1;

while (not DataM.ADOStoredProcAllToplivo.Eof) do

begin

writeln(f,'    ',i,'. ',   DataM.ADOStoredProcAllToplivoNaim_toplivo.AsString,' - ', floatToStr(RoundTo(DataM.ADOStoredProcAllToplivoall_rasxod.Value,-2)));

DataM.ADOStoredProcAllToplivo.Next;

inc(i);

end;

end;

CloseFile(f);

DataM.ADOStoredProcReport.Close;

DataM.ADOStoredProcAllToplivo.Close;

WinExec('notepad.exe report.txt',1);

end;

procedureTFormMain.WMNCLButtonDown(varMsg: TWMNCLButtonDown);

begin

ifMsg.HitTest=HTHELP then

showMessage('fsdfsfsd');

else

inherited;

end;

end.

unitUnitNorms;

interface

uses

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

  Dialogs, UnitData, Grids, DBGrids, StdCtrls, Buttons, UnitAddNorma;

type

TFormNorms = class(TForm)

    DBGrid1: TDBGrid;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormNorms: TFormNorms;

implementation

uses DB;

{$R *.dfm}

procedure TFormNorms.BitBtn2Click(Sender: TObject);

begin

if (DataM.ADOTableNorms.RecordCount>0) then

if (MessageDlg('ДействительноудалитьнормудляавтоизБД?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then

begin

DataM.ADOQuery.Close;

DataM.ADOQuery.SQL.Text:='DELETE FROM NORMS WHERE ID_NORMA='+DataM.ADOTableNormsId_norma.asString;

DataM.ADOQuery.ExecSQL;

DataM.ADOQuery.Close;

DataM.ADOTableNorms.Close;

DataM.ADOTableNorms.Open;

end;

end;

procedure TFormNorms.BitBtn1Click(Sender: TObject);

begin

DataM.ADOTableNorms.Insert;

 DataM.ADOTableNormsID_Auto.Value:=DataM.ADOTableAutosId_Auto.Value;

DataM.ADOTableNormsStart_date.Value:=Date;

 FormAddNorma.DateTimePicker1.Date:=Date;

ifFormAddNorma.ShowModal=mrOk then

begin

DataM.ADOTableNorms.Post;

end

else

begin

DataM.ADOTableNorms.Cancel;

end;

DataM.ADOTableNorms.Close;

DataM.ADOTableNorms.Open;

end;

end.

unitUnitPutListContent;

interface

uses

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

  Dialogs, StdCtrls, Buttons, UnitData, Grids, DBGrids, UnitAddPutListContent;

type

TFormPutListsContent = class(TForm)

    BitBtn2: TBitBtn;

    BitBtn1: TBitBtn;

    DBGrid1: TDBGrid;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormPutListsContent: TFormPutListsContent;

implementation

uses DB;

{$R *.dfm}

procedure TFormPutListsContent.BitBtn1Click(Sender: TObject);

begin

DataM.ADOTablePut_list_content.Insert;

 DataM.ADOTablePut_list_contentId_put_list.Value:=DataM.ADOTableput_list_allId_Put_list.Value;

DataM.ADOTablePut_list_contentData.Value:=Date;

DataM.ADONormsForAutoByDate.Parameters.FindParam('id_auto_param').Value:=DataM.ADOTableput_list_allId_Auto.Value;

DataM.ADONormsForAutoByDate.Parameters.FindParam('date_param').Value:=DataM.ADOTablePut_list_contentData.Value;

DataM.ADONormsForAutoByDate.Open;

 FormAddPutListContent.DateTimePicker1.Date:=Date;

ifFormAddPutListContent.ShowModal=mrOk then

begin

DataM.ADOTablePut_list_content.Post;

end

else

begin

DataM.ADOTablePut_list_content.Cancel;

end;

DataM.ADOTablePut_list_content.Close;

DataM.ADOTablePut_list_content.Open;

end;

procedure TFormPutListsContent.BitBtn2Click(Sender: TObject);

begin

if (DataM.ADOTablePut_list_content.RecordCount>0) then

if (MessageDlg('Действительноудалитьзаписьизпутевоголиста?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then

begin

DataM.ADOQuery.Close;

DataM.ADOQuery.SQL.Text:='DELETE FROM Put_list_content WHERE ID='+DataM.ADOTablePut_list_contentId.AsString;

DataM.ADOQuery.ExecSQL;

DataM.ADOQuery.Close;

DataM.ADOTablePut_list_content.Close;

DataM.ADOTablePut_list_content.open;

end;

end;

end.

unitUnitAddAuto;

interface

uses

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

  Dialogs, UnitData, StdCtrls, Buttons, Mask, DBCtrls;

type

TFormAddAuto = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    DBEdit1: TDBEdit;

    DBEdit2: TDBEdit;

    DBEdit3: TDBEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    Label4: TLabel;

    DBLookupComboBox1: TDBLookupComboBox;

    SpeedButton1: TSpeedButton;

procedure BitBtn1Click(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormAddAuto: TFormAddAuto;

implementation

{$R *.dfm}

procedure TFormAddAuto.BitBtn1Click(Sender: TObject);

begin

if (trim(DataM.ADOTableAutosMarka.Value)='') then

begin

ShowMessage('Укажитемаркуавто!!!');

ModalResult:=mrNone;

exit;

end;

if (trim(DataM.ADOTableAutosNumber.Value)='') then

begin

ShowMessage('Укажите регистрационный номер авто!!!');

ModalResult:=mrNone;

exit;

end;

if (trim(DBEdit3.Text)='') then

begin

ShowMessage('Укажитепробег!!!');

ModalResult:=mrNone;

exit;

end;

if (DataM.ADOTableAutosStart_Statement.Value<0) then

begin

ShowMessage('Пробег не может быть отрицательным!!!');

ModalResult:=mrNone;

end;

if (trim(DBLookupComboBox1.Text)='') then

begin

ShowMessage('Укажитевидтоплива!!!');

ModalResult:=mrNone;

end;

end;

procedure TFormAddAuto.SpeedButton1Click(Sender: TObject);

var

toplivo:String;

begin

toplivo:=InputBox('Укажитеназваниетоплива','Топливо:','');

if (trim(toplivo)<>'') then

begin

DataM.ADOTableToplivo.Insert;

DataM.ADOTableToplivoNaim_toplivo.Value:=toplivo;

DataM.ADOTableToplivo.Post;

end;

end;

end.

unitUnitAddList;

interface

uses

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

  Dialogs, StdCtrls, Buttons, UnitData, ComCtrls, Mask, DBCtrls;

type

TFormAddList = class(TForm)

    Label1: TLabel;

    DBEdit1: TDBEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    DateTimePicker1: TDateTimePicker;

    DBEdit4: TDBEdit;

    Label4: TLabel;

    Label2: TLabel;

    DBEdit2: TDBEdit;

    DateTimePicker2: TDateTimePicker;

    Label3: TLabel;

    Label5: TLabel;

    DBLookupComboBox1: TDBLookupComboBox;

    DBLookupComboBox2: TDBLookupComboBox;

procedure DateTimePicker1Change(Sender: TObject);

procedure DateTimePicker2Change(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormAddList: TFormAddList;

implementation

{$R *.dfm}

procedure TFormAddList.DateTimePicker1Change(Sender: TObject);

begin

 DataM.ADOTableput_list_allData_start.Value:=StrToDate(DateToStr(DateTimePicker1.Date));

end;

procedure TFormAddList.DateTimePicker2Change(Sender: TObject);

begin

 DataM.ADOTableput_list_allData_end.Value:=StrToDate(DateToStr(DateTimePicker2.Date));

end;

procedure TFormAddList.BitBtn1Click(Sender: TObject);

begin

if (trim(DBEdit4.Text)='') then

begin

ShowMessage('Укажите номер путевого листа!!!');

ModalResult:=mrNone;

exit;

end;

if (trim(DBLookupComboBox1.Text)='') then

begin

ShowMessage('Укажитеводителя!!!');

ModalResult:=mrNone;

exit;

end;

if (trim(DBLookupComboBox2.Text)='') then

begin

ShowMessage('Укажитеавтомобиль!!!');

ModalResult:=mrNone;

exit;

end;

end;

end.

unitUnitAddNorma;

interface

uses

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

  Dialogs, StdCtrls, Buttons, Mask, DBCtrls, Unitdata, ComCtrls;

type

TFormAddNorma = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    DBEdit1: TDBEdit;

    DBEdit3: TDBEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    DateTimePicker1: TDateTimePicker;

    DBLookupComboBox1: TDBLookupComboBox;

    SpeedButton1: TSpeedButton;

procedure BitBtn1Click(Sender: TObject);

procedure DateTimePicker1Change(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormAddNorma: TFormAddNorma;

implementation

{$R *.dfm}

procedure TFormAddNorma.BitBtn1Click(Sender: TObject);

begin

if (trim(DBEdit1.Text)='') then

begin

ShowMessage('Укажите дату вступления в силу нормы!!!');

exit;

end;

if (trim(DBLookupComboBox1.Text)='') then

begin

ShowMessage('Укажите наименование нормы!!!');

ModalResult:=mrNone;

exit;

end;

if (trim(DBEdit3.Text)='') then

begin

ShowMessage('Укажите норму расхода!!!');

ModalResult:=mrNone;

exit;

end;

if (DataM.ADOTableNormsRasxod_na_100.Value<0) then

begin

ShowMessage('Норма расхода не может быть отрицательной!!!');

ModalResult:=mrNone;

end;

end;

procedure TFormAddNorma.DateTimePicker1Change(Sender: TObject);

begin

 DataM.ADOTableNormsStart_date.Value:=StrToDate(DateToStr(DateTimePicker1.Date));

end;

procedure TFormAddNorma.SpeedButton1Click(Sender: TObject);

var

norma:String;

begin

norma:=InputBox('Укажитеназваниевиданормы','Виднормы:','');

if (trim(norma)<>'') then

begin

DataM.ADOTableVidNorma.Insert;

DataM.ADOTableVidNormavid_norma.Value:=norma;

DataM.ADOTableVidNorma.Post;

end;

end;

end.

unitUnitAddPutListContent;

interface

uses

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

  Dialogs, UnitData, DBCtrls, ComCtrls, StdCtrls, Buttons, Mask;

type

TFormAddPutListContent = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    DBEdit1: TDBEdit;

    DBEdit3: TDBEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    DateTimePicker1: TDateTimePicker;

    DBLookupComboBox1: TDBLookupComboBox;

procedure BitBtn1Click(Sender: TObject);

procedure DateTimePicker1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormAddPutListContent: TFormAddPutListContent;

implementation

{$R *.dfm}

procedure TFormAddPutListContent.BitBtn1Click(Sender: TObject);

begin

if (trim(DBEdit1.Text)='') then

begin

ShowMessage('Укажитедату!!!');

ModalResult:=mrNone;

exit;

end;

if (trim(DBLookupComboBox1.Text)='') then

begin

ShowMessage('Укажите наименование нормы!!!');

ModalResult:=mrNone;

exit;

end;

if (trim(DBEdit3.Text)='') then

begin

ShowMessage('Укажитерасстояние!!!');

ModalResult:=mrNone;

exit;

end;

if (DataM.ADOTablePut_list_contentDistance.Value<0) then

begin

ShowMessage('Расстояние не может быть отрицательным!!!');

ModalResult:=mrNone;

end;

end;

procedure TFormAddPutListContent.DateTimePicker1Change(Sender: TObject);

begin

 DataM.ADOTablePut_list_contentData.Value:=StrToDate(DateToStr(DateTimePicker1.Date));

DataM.ADONormsForAutoByDate.Close;

DataM.ADONormsForAutoByDate.Parameters.FindParam('date_param').Value:=DataM.ADOTablePut_list_contentData.Value;

DataM.ADONormsForAutoByDate.Open;

end;

end.

unitUnitData;

interface

uses

SysUtils, Classes, DB, ADODB, MATH;

type

TDataM = class(TDataModule)

ADOConnection: TADOConnection;

ADOTableAutos: TADOTable;

ADOTableAutosId_Auto: TAutoIncField;

ADOTableAutosMarka: TWideStringField;

ADOTableAutosNumber: TWideStringField;

ADOTableAutosStart_Statement: TIntegerField;

DataSourceAutos: TDataSource;

ADOTableNorms: TADOTable;

ADOTableNormsId_norma: TAutoIncField;

ADOTableNormsID_Auto: TIntegerField;

ADOTableNormsStart_date: TDateTimeField;

ADOTableNormsNaim_norma: TWideStringField;

    ADOTableNormsRasxod_na_100: TFloatField;

DataSourceNorms: TDataSource;

ADOTableVoditel: TADOTable;

ADOTableVoditelId_voditel: TAutoIncField;

ADOTableVoditelFIO: TWideStringField;

DataSourceVoditel: TDataSource;

ADOTableput_list_all: TADOTable;

ADOTableput_list_allId_Put_list: TAutoIncField;

ADOTableput_list_allNumber: TIntegerField;

ADOTableput_list_allId_voditel: TIntegerField;

ADOTableput_list_allId_Auto: TIntegerField;

ADOTableput_list_allData_start: TDateTimeField;

ADOTableput_list_allData_end: TDateTimeField;

ADOTableput_list_allFIO: TWideStringField;

ADOTableput_list_allauto: TWideStringField;

DataSourceput_list_all: TDataSource;

ADOTableAutosAutoFull: TStringField;

ADOQuery: TADOQuery;

ADOTableAutosId_vid_toplivo: TIntegerField;

ADOTableAutosNaim_toplivo: TWideStringField;

ADOTableToplivo: TADOTable;

DataSourcetoplivo: TDataSource;

ADOTableToplivoId_vid_toplivo: TAutoIncField;

ADOTableToplivoNaim_toplivo: TWideStringField;

ADOTableVidNorma: TADOTable;

DataSourceVidNorma: TDataSource;

ADOTableVidNormaId_vid_norma: TAutoIncField;

ADOTableVidNormavid_norma: TWideStringField;

ADOTableNormsId_vid_norma: TIntegerField;

ADOTablePut_list_content: TADOTable;

DataSourcePut_list_content: TDataSource;

ADOTablePut_list_contentId: TAutoIncField;

ADOTablePut_list_contentId_put_list: TIntegerField;

ADOTablePut_list_contentData: TDateTimeField;

ADOTablePut_list_contentId_norma: TIntegerField;

ADOTablePut_list_contentDistance: TFloatField;

ADOTablePut_list_contentvid_norma: TWideStringField;

ADONormsForAutoByDate: TADOStoredProc;

ADONormsForAutoByDateId_norma: TAutoIncField;

ADONormsForAutoByDatevid_norma: TWideStringField;

ADONormsForAutoByDatedata: TDateTimeField;

DataSourceNormsForAuto: TDataSource;

ADOStoredProcReport: TADOStoredProc;

ADOStoredProcReportAll_distance: TFloatField;

ADOStoredProcReportId_Auto: TAutoIncField;

ADOStoredProcReportMarka: TWideStringField;

ADOStoredProcReportNumber: TWideStringField;

ADOStoredProcReportNaim_toplivo: TWideStringField;

ADOStoredProcReportrasxod: TFloatField;

ADOStoredProcAllToplivo: TADOStoredProc;

ADOStoredProcAllToplivoNaim_toplivo: TWideStringField;

ADOStoredProcAllToplivoall_rasxod: TFloatField;

procedure ADOTableNormsRasxod_na_100GetText(Sender: TField;

var Text: String; DisplayText: Boolean);

procedureADOTableAutosCalcFields(DataSet: TDataSet);

procedureADOTablePut_list_contentDistanceGetText(Sender: TField;

var Text: String; DisplayText: Boolean);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DataM: TDataM;

implementation

{$R *.dfm}

procedure TDataM.ADOTableNormsRasxod_na_100GetText(Sender: TField;

var Text: String; DisplayText: Boolean);

begin

  Text:=FloatToStr(roundTo(Sender.AsFloat,-2));

end;

procedureTDataM.ADOTableAutosCalcFields(DataSet: TDataSet);

begin

ADOTableAutosAutoFull.Value:=ADOTableAutosMarka.Value+' г.н.'+ADOTableAutosNumber.Value;

end;

procedureTDataM.ADOTablePut_list_contentDistanceGetText(Sender: TField;

var Text: String; DisplayText: Boolean);

begin

   Text:=FloatToStr(roundTo(Sender.AsFloat,-2));

end;

end.

Приложение Б

(справочное)

 

Схема работы

Рисунок Б.1 – Схема работы алгоритма «Добавление записей»

Похожие работы на - ПРОГРАММНОЕ СРЕДСТВО ДЛЯ РАСЧЕТА РАСХОДА ЛЕГКОВЫХ АВТОМОБИЛЕЙ

 

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