КП программаня инженерия. Разработка программы для учета расхода горючего по автомобилям
Скачать 0.52 Mb.
|
МЕТОДЫ И АЛГОРИТМЫ РЕШЕНИЯ ЗАДАЧМетод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту. Имеются несколько основных компонент (классов), которые используются для доступа к БД. Эти классы делятся на две группы: невизуальные: DataSet, DataTable, DataView, DataColumn, DataRow, TableAdapter, BindingSource визуальные: DataGridView, TextBox, ComboBox, Label Первая группа включает невизуальные классы, которые используются для управления базами данных, таблицами и связей между базой данных и формой. Эта группа сосредотачивается вокруг компонент типа DataSet, TableAdapter и BindingSource. В Панели Элементов они расположены на странице «Данные». Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа DataGridView, ComboBox, TextBox, Label. В Панели Элементов они расположены на странице «Стандартные Элементы Управления». Для связи DataGridView и других визуальных элементов формы с источниками данных используются два компонента — это компонент BindingSource и компонент TableAdapter. Первый из них инкапсулирует источник данных для визуальных элементов формы, а второй обеспечивает связь с источником данных. Помещая эти компоненты на форму, необходимо изменить модификатор доступа на public. Оба компонента позволяют упростить процесс привязки элементов управления к базовым источникам данных и способствуют уменьшению объема программного кода. Вместе с тем они требуют достаточно сложной настройки и имеют ограниченные возможности управления данными. Компонент BindingSource обеспечивает возможность универсальной привязки всех визуальных элементов управления формы к источникам данных. Если тип данных, содержащихся в источнике, реализует интерфейс NotifyPropertyChanged, то это позволяет компоненту BindingSource автоматически обнаруживать изменения в источнике данных. Все запросы к пользователю в программе реализованы с помощью пунктов меню. В таблице 8 отображено назначение обработчиков событий. Таблица 8 ‑ Назначение обработчиков событий
Для реализации запросов применялись следующие компоненты: DataGridView,Button, BindingSource, DataSet, генерируемые объекты для БД. Запрос «Расчет разницы расходования горючего» (текст на языке SQL): SELECT Автомобиль.Марка_автомобиля, Бензин.Марка_горючего, Расход.Расход_по_норме, Бензин.Цена, Расход.Расход_фактический, [Расход_фактический]-[Расход_по_норме] AS Разница_л, Sum(([Расход_фактический]-[Расход_по_норме])*[Цена]) AS Разница_руб FROM Бензин INNER JOIN (Автомобиль INNER JOIN Расход ON Автомобиль.Номер_автомобиля = Расход.Номер_автомобиля) ON Бензин.Номер_горючего = Расход.Номер_горючего GROUP BY Автомобиль.Марка_автомобиля, Бензин.Марка_горючего, Расход.Расход_по_норме, Бензин.Цена, Расход.Расход_фактический, [Расход_фактический]-[Расход_по_норме]; Отчёт реализован с помощью компонента reportViewer. Самый простой способ внедрения функциональных возможностей создания отчетов в приложения Windows Forms – добавить элемент управления ReportViewer в форму приложения. Этот элемент управления непосредственно наделяет приложение возможностями просмотра и обработки отчетов и предоставляет встроенный конструктор отчетов, позволяющий составлять отчеты, используя данные из любого объекта данных ADO.NET. Полнофункциональный API обеспечивает программный доступ к элементу управления и отчетам, позволяя настраивать функциональность, доступную во время выполнения. ReportViewer – это отдельный, свободно распространяемый элемент управления данными, предоставляющий встроенные возможности обработки и просмотра отчетов. Имеет смысл использовать элемент управления ReportViewer, если требуются следующие функциональные возможности: – привязка данных к таблицам данных ADO.NET. Можно создавать отчеты, использующие экземпляры объектов DataTable; – свободно распространяемые элементы управления, которые можно включить в приложение; – функциональные возможности времени выполнения, такие как навигация по страницам, печать, поиск и форматы экспорта. Поддержку этих операций обеспечивает панель инструментов ReportViewer Источником данных для него служит запрос, созданный в нашей базе данных. Так же в отчете производится группировка данных с подсчетом итогов. Запрос для отчета 1 «Отчет о расходовании горючего с группировкой по автомобилям» (текст на языке SQL): SELECT Автомобиль.Марка_автомобиля, Sum([Расход_по_норме]*[Цена]) AS Итого_по_нормативу, Sum([Расход_фактический]*[Цена]) AS Итого_факту FROM Бензин INNER JOIN (Автомобиль INNER JOIN Расход ON Автомобиль.Номер_автомобиля = Расход.Номер_автомобиля) ON Бензин.Номер_горючего = Расход.Номер_горючего GROUP BY Автомобиль.Марка_автомобиля; Запрос для отчета 2 «Отчет о расходовании горючего с группировкой по месяцам» (текст на языке SQL): SELECT MonthName(Month(Расход![Дата_расхода])) AS Выражение1, Sum([Расход_по_норме]*[Цена]) AS Итого_по_нормативу, Sum([Расход_фактический]*[Цена]) AS Итого_факту FROM Бензин INNER JOIN (Автомобиль INNER JOIN Расход ON Автомобиль.Номер_автомобиля = Расход.Номер_автомобиля) ON Бензин.Номер_горючего = Расход.Номер_горючего GROUP BY MonthName(Month(Расход![Дата_расхода])); |