В эпоху цифровизации, когда автоматизация проникает во все сферы человеческой деятельности, образовательные учреждения сталкиваются с необходимостью оптимизации внутренних процессов. Один из таких процессов, требующий высокой точности и значительных временных затрат, — это расчет заработной платы преподавателей. Ручной или полуавтоматизированный подход к этой задаче сопряжен с риском ошибок, низкой оперативностью и сложностью учета множества факторов: от базовых ставок и квалификационных категорий до индивидуальных надбавок и фактически отработанных часов.
Целью данной курсовой работы является разработка программного средства, предназначенного для автоматизации расчета заработной платы преподавателя. Выбор технологического стека — Visual Basic 6.0 для клиентской части и Microsoft SQL Server 2000 для серверной — обусловлен необходимостью глубокого анализа классических подходов к построению клиент-серверных приложений и принципов взаимодействия с реляционными базами данных, что является фундаментальной задачей в подготовке будущих специалистов в области программной инженерии.
В рамках данного исследования будут решены следующие задачи:
- Раскрытие теоретических основ клиент-серверной архитектуры и принципов работы СУБД.
- Детальное проектирование структуры базы данных для хранения всех необходимых сведений о преподавателях, их нагрузке и тарифах.
- Реализация пользовательского интерфейса клиентского приложения с использованием Visual Basic 6.0.
- Разработка механизма взаимодействия клиентской части с базой данных на основе технологии ADO.
- Создание алгоритмов для автоматизированного расчета заработной платы с учетом всех нормативных требований и специфических надбавок.
- Проведение анализа преимуществ и ограничений выбранных технологических решений, а также оценка их актуальности в современном контексте.
Структура работы охватывает как теоретические аспекты, так и практические этапы проектирования, реализации и анализа разработанного программного средства, что позволяет получить исчерпывающее представление о поставленной задаче и методах ее решения.
Теоретические основы построения клиент-серверных приложений и систем управления базами данных
В основе любой современной информационной системы лежит парадигма взаимодействия между различными компонентами, а также эффективное управление данными. Данный раздел посвящен фундаментальным концепциям, необходимым для понимания архитектуры разработанного программного средства, и в нем мы разберем ключевые аспекты, которые обеспечивают бесперебойную работу и масштабируемость систем.
Архитектура «клиент-сервер»
Что такое клиент-серверная архитектура? Представьте себе оживленную библиотеку. Читатели (клиенты) приходят с запросами на книги, а библиотекари (серверы) обрабатывают эти запросы, находят нужные издания и выдают их. Точно так же в мире информационных технологий, архитектура «клиент-сервер» — это вычислительная или сетевая архитектура, где задачи или сетевая нагрузка распределены между поставщиками услуг (серверами) и заказчиками услуг (клиентами). Это модель, в которой клиент, будь то конечный пользователь или другая программа, отправляет запросы на предоставление определенных услуг или ресурсов, а сервер, в свою очередь, обрабатывает эти запросы и возвращает необходимые данные или выполняет запрашиваемую функциональность.
Основной принцип взаимодействия в этой модели — это «запрос-ответ». Клиент инициирует взаимодействие, отправляя запрос, который может включать в себя данные или команды. Сервер принимает этот запрос, выполняет необходимые операции (например, извлекает данные из базы, обрабатывает информацию) и отправляет ответ обратно клиенту. Этот цикл повторяется многократно, обеспечивая динамичное и интерактивное взаимодействие.
Ключевые особенности клиент-серверной архитектуры делают ее чрезвычайно популярной для множества приложений:
- Масштабируемость: Эта архитектура позволяет относительно легко увеличивать или уменьшать количество клиентов или серверов без существенных изменений в общей структуре системы. Если нагрузка возрастает, можно добавить новые серверы для распределения запросов или масштабировать существующие, что обеспечивает гибкость и адаптивность к растущим требованиям.
- Повышенный уровень безопасности: Поскольку данные обычно хранятся в централизованной корпоративной базе данных на сервере, контроль доступа к информации осуществляется централизованно. Это упрощает внедрение политик безопасности, мониторинг и управление правами пользователей, обеспечивая лучшую защиту конфиденциальных данных.
- Централизованное управление данными: Единое хранилище данных на сервере обеспечивает совместный доступ к ним для всех клиентов, гарантируя актуальность и консистентность информации.
- Разделение ответственности: Клиент отвечает за пользовательский интерфейс и представление данных, а сервер — за хранение данных, бизнес-логику и безопасность. Такое разделение упрощает разработку, тестирование и сопровождение системы.
Типы клиент-серверной архитектуры:
- Двухуровневая архитектура: В этой модели клиентское приложение напрямую взаимодействует с сервером базы данных. Сервер может выполнять как функции хранения данных, так и часть бизнес-логики. Эта архитектура характерна для небольших и средних приложений, где непосредственное взаимодействие клиента с базой данных не создает избыточной нагрузки. Разрабатываемое программное средство для расчета заработной платы преподавателя является типичным примером двухуровневой архитектуры, где клиент на Visual Basic 6.0 напрямую обращается к SQL Server 2000.
- Трехуровневая архитектура: Более сложная модель, включающая три основных уровня:
- Клиентский уровень (Presentation Layer): Отвечает за пользовательский интерфейс и взаимодействие с пользователем.
- Серверный уровень (Application Layer / Business Logic Layer): Содержит бизнес-логику приложения, обрабатывает запросы от клиентов и взаимодействует с уровнем базы данных. Этот уровень обеспечивает дополнительную гибкость, безопасность и масштабируемость.
- Уровень базы данных (Data Layer): Отвечает за хранение и управление данными.
Выбор архитектуры зависит от масштаба проекта, требований к производительности, безопасности и сложности бизнес-логики. Для задач автоматизации расчета заработной платы в условиях образовательного учреждения, как правило, достаточна двухуровневая модель, предлагающая оптимальный баланс между простотой реализации и необходимой функциональностью.
Системы управления базами данных (СУБД)
В сердце любой информационной системы, работающей с данными, лежит Система Управления Базами Данных (СУБД). СУБД — это не просто набор файлов, а сложный комплекс программно-языковых средств, созданный для одной критически важной цели: эффективного создания, управления и использования баз данных.
Основные задачи СУБД охватывают весь жизненный цикл данных:
- Создание и удаление баз данных: СУБД предоставляет инструментарий для определения структуры новой базы данных и ее последующего удаления при необходимости.
- Хранение и управление данными: Это главная функция СУБД. Она организует данные таким образом, чтобы обеспечить их эффективное хранение и быстрый доступ.
- Обеспечение целостности данных: СУБД гарантирует, что данные остаются корректными и непротиворечивыми. Это достигается за счет правил, таких как ограничения первичных и внешних ключей, проверка типов данных и другие механизмы.
- Безопасность данных: СУБД контролирует доступ к данным, предоставляя различные уровни разрешений пользователям и предотвращая несанкционированный доступ или модификацию.
- Предоставление доступа: СУБД выступает посредником между приложениями и данными, позволяя множеству пользователей или программ одновременно работать с одной и той же базой данных.
- Фильтрация, поиск и изменение данных: Инструменты СУБД позволяют быстро находить нужную информацию, изменять ее или фильтровать в соответствии с заданными критериями.
- Резервное копирование и восстановление: Для защиты от потери данных СУБД предоставляет механизмы для создания резервных копий и последующего восстановления базы данных в случае сбоев.
По сути, СУБД является невидимым, но жизненно важным оркестратором, который гарантирует, что данные всегда доступны, корректны и безопасны, что критически важно для любого бизнес-процесса, включая расчет заработной платы. Без надежной СУБД любая система обработки данных будет уязвима и неэффективна.
Обзор технологий, используемых в проекте
Для реализации программного средства по автоматизации расчета заработной платы преподавателя была выбрана комбинация технологий, каждая из которых играет свою уникальную роль в общей архитектуре. Рассмотрим их подробнее.
Visual Basic 6.0 как средство разработки клиентской части
Когда речь заходит о разработке клиентских приложений для операционной системы Windows в конце 1990-х — начале 2000-х годов, одним из самых популярных и доступных инструментов был Visual Basic 6.0 (VB6). Выпущенный в 1998 году, VB6 стал последней и наиболее совершенной версией «классического» Visual Basic, предшествующей кардинальным изменениям в .NET Framework.
VB6 — это не просто язык программирования высокого уровня, но и полноценная интегрированная среда разработки (IDE), которая значительно упрощала процесс создания приложений. Он поддерживал объектно-ориентированные и процедурные парадигмы программирования, а также элементы компонентной и структурной парадигм, что позволяло разработчикам создавать как простые утилиты, так и сложные корпоративные системы.
Одним из ключевых преимуществ VB6, сделавшим его столь популярным, был его визуальный стиль программирования. Разработчики могли буквально «рисовать» пользовательский интерфейс, перетаскивая готовые элементы управления (такие как кнопки, текстовые поля, списки) на экранные формы. Это значительно сокращало время разработки, позволяя сосредоточиться на бизнес-логике, а не на кодировании графических компонентов. Именно поэтому VB6 был отнесен к средствам быстрой разработки приложений (RAD).
Среда разработки VB6 включала в себя:
- Инструменты для визуального проектирования UI.
- Редактор кода с подсветкой синтаксиса и возможностями IntelliSense для автодополнения кода.
- Мощные инструменты для отладки приложений.
Язык Visual Basic 6.0 функционировал на основе событийной модели, где приложение реагировало на действия пользователя или системы (события), выполняя соответствующий код. Простота изучения сделала VB6 отличным выбором для начинающих программистов и позволила ему стать де-факто стандартом для множества корпоративных приложений тех лет. В контексте нашей курсовой работы VB6 идеально подходит для создания интуитивно понятного и функционального пользовательского интерфейса для расчета заработной платы.
ADO (ActiveX Data Objects) для доступа к данным
Для эффективного взаимодействия клиентского приложения с базой данных необходим надежный и стандартизированный механизм. В экосистеме Microsoft эту роль выполняла технология ADO (ActiveX Data Objects). Microsoft представила ADO в середине 1990-х годов как стратегическую замену более ранним объектным слоям для доступа к данным, таким как DAO (Data Access Objects) и RDO (Remote Data Objects), позиционируя ее как универсальное решение.
ADO предоставляет объектный программный интерфейс к OLE DB, который, в свою очередь, является высокопроизводительной альтернативой интерфейсу ODBC. Это позволяло разработчикам получать доступ и манипулировать данными из различных типов источников, будь то реляционные базы данных (как наш Microsoft SQL Server 2000), электронные таблицы или текстовые файлы.
Для использования ADO в проекте Visual Basic 6.0 требуется добавить ссылку на библиотеку «Microsoft ActiveX Data Objects x.x Library» (часто это версия 2.8, которая была широко распространена в связке с VB6) через меню «Project» -> «References».
Ключевые объекты библиотеки ADO:
- Connection (Соединение): Этот объект является краеугольным камнем для установления связи с базой данных. Его свойство
ConnectionStringопределяет все параметры подключения, включая поставщика данных (например, для SQL Server) и аутентификационные данные. - Command (Команда): Объект
Commandпредназначен для выполнения команд DML (Data Manipulation Language), таких какINSERT,UPDATE,DELETE, а также для вызова хранимых процедур. СвойствоCommandTextсодержит сам SQL-запрос или имя хранимой процедуры, аCommandTypeуказывает тип команды (adCmdText,adCmdTable,adCmdStoredProc). - Recordset (Набор записей):
Recordsetпредставляет собой набор записей, полученных из базы данных в результате выполнения запросаSELECT. Он позволяет осуществлять просмотр, добавление, изменение и удаление данных.
В Visual Basic 6.0 был также предусмотрен удобный визуальный элемент управления ADO Data (ADODC). Этот элемент выступал в качестве основного интерфейса между приложением VB и базой данных, упрощая связывание других элементов управления (таких как DataGrid, DataList, DataCombo) с источником данных. Установив свойство DataSource этих элементов на ADODC, можно было без дополнительного кода отображать и редактировать данные из базы. Это значительно ускоряло разработку форм для работы с данными.
Microsoft SQL Server 2000 как СУБД
В качестве системы управления базами данных для данного проекта выбран Microsoft SQL Server 2000. Этот продукт, выпущенный в 2000 году, стал одним из доминирующих реляционных СУБД своего времени и широко использовался в корпоративных средах для хранения и управления данными в клиент-серверных приложениях.
SQL Server 2000 предлагал мощные возможности для:
- Хранения данных: Обеспечивал структурированное и надежное хранение больших объемов информации.
- Управления данными: Предоставлял полный набор инструментов для манипулирования данными, включая создание, изменение и удаление записей.
- Обеспечения целостности: Поддерживал ограничения первичных и внешних ключей, что гарантировало логическую связность и корректность данных.
- Безопасности: Включал механизмы аутентификации и авторизации, позволяющие контролировать доступ пользователей к базе данных.
- Производительности: Оптимизирован для выполнения сложных запросов и работы с множеством одновременных пользователей.
Несмотря на то, что основная поддержка SQL Server 2000 прекратилась 8 апреля 2008 года, а расширенная поддержка завершилась 9 апреля 2013 года, в контексте изучения классических подходов к разработке он остается отличным примером мощной и функциональной реляционной СУБД. Для проекта по расчету заработной платы преподавателя SQL Server 2000 выступает в роли надежного хранилища всех необходимых данных, обеспечивая их структурированность и доступность.
Проектирование и реализация программного средства «Расчет заработной платы преподавателя»
В этом разделе мы переходим от теоретических абстракций к конкретным инженерным решениям. Здесь будет подробно рассмотрена архитектура разработанного приложения, структура его базы данных и особенности реализации клиентской части, что позволит понять, как теоретические принципы воплощаются в функциональном программном продукте.
Архитектура приложения
Выбор архитектуры приложения является одним из ключевых решений на начальных этапах разработки. Для программного средства «Расчет заработной платы преподавателя» была выбрана двухуровневая клиент-серверная архитектура. Этот выбор обусловлен несколькими факторами:
- Относительная простота реализации: Для проекта курсовой работы двухуровневая архитектура является оптимальным решением, позволяющим сосредоточиться на основных принципах взаимодействия клиента и сервера без усложнения промежуточными слоями бизнес-логики.
- Масштаб задачи: Для автоматизации расчета заработной платы в условиях одного образовательного учреждения (или небольшого их количества) двухуровневой архитектуры, как правило, более чем достаточно. Она обеспечивает необходимую производительность и управляемость.
- Требования к производительности: Поскольку значительная часть обработки данных (фильтрация, сортировка, агрегация) может быть перенесена на сервер базы данных, клиентское приложение остается «легким» и быстро реагирующим.
Схема взаимодействия компонентов в данном проекте выглядит следующим образом:
- Клиентское приложение (Visual Basic 6.0): Это пользовательский интерфейс, с которым непосредственно работает пользователь. Оно отвечает за ввод данных (информация о преподавателях, их нагрузке), отображение результатов (табель, расчетные ведомости) и отправку запросов на сервер базы данных.
- Технология ADO (ActiveX Data Objects): Выступает в роли «посредника» или слоя доступа к данным. ADO обеспечивает стандартизированный способ связи между клиентским приложением на Visual Basic 6.0 и сервером базы данных. Через ADO клиент формирует SQL-запросы или вызывает хранимые процедуры.
- Сервер базы данных (Microsoft SQL Server 2000): Это централизованное хранилище всех данных, связанных с преподавателями, их должностями, тарифами, табелем учета времени и результатами расчетов. SQL Server 2000 принимает запросы от ADO, обрабатывает их (выполняет операции CRUD, сложные расчеты, хранимые процедуры) и возвращает результаты обратно через ADO.
graph TD
A[Клиентское приложение<br>(Visual Basic 6.0)] -->|Запросы (SQL, вызов SP)| B[ADO (ActiveX Data Objects)]
B -->|Передача запросов| C[Microsoft SQL Server 2000<br>(Сервер БД)]
C -->|Результаты выполнения| B
B -->|Отображение данных| A
Рис. 1. Схема взаимодействия компонентов в двухуровневой клиент-серверной архитектуре.
Такая архитектура позволяет четко разделить ответственность: клиентская часть занимается исключительно представлением и взаимодействием с пользователем, а серверная — надежным хранением, управлением и обработкой данных.
Проектирование базы данных в Microsoft SQL Server 2000
Проектирование базы данных является критически важным этапом, определяющим эффективность, надежность и масштабируемость всей информационной системы. Для системы расчета заработной платы преподавателя в Microsoft SQL Server 2000 этот процесс включал в себя три основных стадии:
- Концептуальное проектирование: На этом этапе определяются основные сущности предметной области (преподаватель, должность, нагрузка, тариф и т.д.) и их взаимосвязи, без привязки к конкретной СУБД. Это своего рода «эскиз» будущей базы данных.
- Логическое проектирование: Здесь концептуальная модель преобразуется в реляционную модель данных, где сущности становятся таблицами, атрибуты — столбцами, а связи — внешними ключами. Определяются первичные ключи, типы данных и ограничения целостности.
- Физическое проектирование: На этом этапе логическая модель адаптируется под специфику выбранной СУБД (Microsoft SQL Server 2000). Здесь принимаются решения о типах индексов, секционировании таблиц, размещении файлов на диске и других физических аспектах хранения данных для оптимизации производительности.
Структура таблиц и реляционные связи
Для эффективного хранения и обработки данных о тарифах и табеле учета рабочего времени в SQL Server 2000 была разработана следующая структура реляционной базы данных:
- Таблица
Преподаватели:ПреподавательID(INT, PRIMARY KEY) — Уникальный идентификатор преподавателя.Фамилия(NVARCHAR(50))Имя(NVARCHAR(50))Отчество(NVARCHAR(50))ДолжностьID(INT, FOREIGN KEY) — Ссылка на таблицуДолжности.КвалификацияID(INT, FOREIGN KEY) — Ссылка на таблицуКвалификации.СтажЛет(INT) — Общий педагогический стаж.ДатаПриемаНаРаботу(DATE)УченаяСтепень(NVARCHAR(50), NULL)УченоеЗвание(NVARCHAR(50), NULL)
Назначение: Хранение основных личных данных и идентификаторов, связанных с должностью и квалификацией преподавателя.
- Таблица
Должности:ДолжностьID(INT, PRIMARY KEY)НазваниеДолжности(NVARCHAR(100))БазовыйОклад(MONEY) — Базовый оклад для данной должности без учета надбавок.
Назначение: Справочник должностей с их базовыми окладами.
- Таблица
Квалификации:КвалификацияID(INT, PRIMARY KEY)НазваниеКвалификации(NVARCHAR(100)) — Например, «Первая категория», «Высшая категория».КоэффициентНадбавки(DECIMAL(5,2)) — Коэффициент надбавки к окладу за данную категорию.
Назначение: Справочник квалификационных категорий и соответствующих коэффициентов надбавок.
- Таблица
Нагрузка_Преподавателей:НагрузкаID(INT, PRIMARY KEY)ПреподавательID(INT, FOREIGN KEY) — Ссылка на таблицуПреподаватели.УчебныйГод(INT)НормативнаяНагрузкаЧасов(DECIMAL(7,2)) — Установленная годовая или недельная учебная нагрузка в часах.ТипНагрузки(NVARCHAR(50)) — Например, «Годовая», «Недельная».
Назначение: Фиксация установленной учебной нагрузки для каждого преподавателя на определенный учебный период.
- Таблица
Табель_Учета_Времени:ТабельID(INT, PRIMARY KEY)ПреподавательID(INT, FOREIGN KEY) — Ссылка на таблицуПреподаватели.Месяц(INT)Год(INT)ФактическиОтработаноЧасов(DECIMAL(7,2)) — Фактически отработанные часы или выполненная учебная нагрузка за месяц.ДниОтпуска(INT)ДниБольничного(INT)
Назначение: Учет фактически отработанных часов/дней или выполненной учебной нагрузки.
- Таблица
Тарифы_и_Надбавки:ТарифID(INT, PRIMARY KEY)ТипВыплатыID(INT, FOREIGN KEY) — Ссылка на таблицуВиды_Выплат.Размер(MONEY)Коэффициент(DECIMAL(5,2))Описание(NVARCHAR(255))ДатаНачалаДействия(DATE)ДатаОкончанияДействия(DATE, NULL)
Назначение: Содержит информацию о Единой Тарифной Сетке (ЕТС), базовых ставках, коэффициентах, стимулирующих и компенсационных выплатах. ЕТС — это шкала разрядов и соответствующих им тарифных коэффициентов, определяющая размер тарифной ставки в зависимости от сложности работы и квалификации.
- Таблица
Виды_Выплат:ТипВыплатыID(INT, PRIMARY KEY)НазваниеВыплаты(NVARCHAR(100)) — Например, «Оклад», «Надбавка за стаж», «Надбавка за категорию», «Компенсационные», «Стимулирующие».
Назначение: Классификация различных типов выплат.
- Таблица
Расчеты_Зарплаты:РасчетID(INT, PRIMARY KEY)ПреподавательID(INT, FOREIGN KEY) — Ссылка на таблицуПреподаватели.Месяц(INT)Год(INT)БазовыйОклад(MONEY)СуммаНадбавок(MONEY)СуммаДоплат(MONEY)ИтогоКНачислению(MONEY)ДатаРасчета(DATETIME)
Назначение: Сохранение результатов ежемесячных расчетов заработной платы каждого преподавателя.
Реляционные связи:
Между этими таблицами устанавливаются связи типа «один-ко-многим»:
Должности.ДолжностьID↔Преподаватели.ДолжностьID(один ко многим: одна должность может быть у многих преподавателей).Квалификации.КвалификацияID↔Преподаватели.КвалификацияID(один ко многим).Преподаватели.ПреподавательID↔Нагрузка_Преподавателей.ПреподавательID(один ко многим).Преподаватели.ПреподавательID↔Табель_Учета_Времени.ПреподавательID(один ко многим).Преподаватели.ПреподавательID↔Расчеты_Зарплаты.ПреподавательID(один ко многим).Виды_Выплат.ТипВыплатыID↔Тарифы_и_Надбавки.ТипВыплатыID(один ко многим).
Представления и хранимые процедуры
Для оптимизации работы с данными и инкапсуляции сложной логики в SQL Server 2000 используются:
- Представления (Views): Это виртуальные таблицы, которые представляют собой результат SQL-запроса. Представления не хранят данные физически, но упрощают доступ к агрегированным или объединенным данным из нескольких таблиц. Например, может быть создано представление
V_ПолнаяИнформацияОЗарплате, которое объединяет данные о преподавателях, их должностях, квалификациях и результатах расчетов, предоставляя полную картину по зарплате.CREATE VIEW V_ПолнаяИнформацияОЗарплате AS SELECT П.Фамилия, П.Имя, П.Отчество, Д.НазваниеДолжности, К.НазваниеКвалификации, РЗ.Месяц, РЗ.Год, РЗ.БазовыйОклад, РЗ.СуммаНадбавок, РЗ.СуммаДоплат, РЗ.ИтогоКНачислению FROM Преподаватели П JOIN Должности Д ON П.ДолжностьID = Д.ДолжностьID JOIN Квалификации К ON П.КвалификацияID = К.КвалификацияID JOIN Расчеты_Зарплаты РЗ ON П.ПреподавательID = РЗ.ПреподавательID; - Хранимые процедуры (Stored Procedures): Это предварительно скомпилированные SQL-операторы, которые хранятся на сервере базы данных. Они используются для выполнения сложных расчетов, таких как расчет заработной платы, стандартизации операций CRUD (Create, Read, Update, Delete) и повышения производительности. Например, процедура
SP_РассчитатьЗарплатуМесяцможет принимать на входПреподавательID,Месяц,Годи выполнять все шаги алгоритма расчета, сохраняя результат в таблицеРасчеты_Зарплаты.
ER-диаграмма базы данных
Для наглядного представления разработанной структуры базы данных и взаимосвязей между таблицами используется сущность-связь диаграмма (ER-диаграмма).
erDiagram
Преподаватели {
INT ПреподавательID PK
NVARCHAR Фамилия
NVARCHAR Имя
NVARCHAR Отчество
INT ДолжностьID FK
INT КвалификацияID FK
INT СтажЛет
DATE ДатаПриемаНаРаботу
NVARCHAR УченаяСтепень NULL
NVARCHAR УченоеЗвание NULL
}
Должности {
INT ДолжностьID PK
NVARCHAR НазваниеДолжности
MONEY БазовыйОклад
}
Квалификации {
INT КвалификацияID PK
NVARCHAR НазваниеКвалификации
DECIMAL КоэффициентНадбавки
}
Нагрузка_Преподавателей {
INT НагрузкаID PK
INT ПреподавательID FK
INT УчебныйГод
DECIMAL НормативнаяНагрузкаЧасов
NVARCHAR ТипНагрузки
}
Табель_Учета_Времени {
INT ТабельID PK
INT ПреподавательID FK
INT Месяц
INT Год
DECIMAL ФактическиОтработаноЧасов
INT ДниОтпуска
INT ДниБольничного
}
Тарифы_и_Надбавки {
INT ТарифID PK
INT ТипВыплатыID FK
MONEY Размер
DECIMAL Коэффициент
NVARCHAR Описание
DATE ДатаНачалаДействия
DATE ДатаОкончанияДействия NULL
}
Виды_Выплат {
INT ТипВыплатыID PK
NVARCHAR НазваниеВыплаты
}
Расчеты_Зарплаты {
INT РасчетID PK
INT ПреподавательID FK
INT Месяц
INT Год
MONEY БазовыйОклад
MONEY СуммаНадбавок
MONEY СуммаДоплат
MONEY ИтогоКНачислению
DATETIME ДатаРасчета
}
Преподаватели ||--o{ Нагрузка_Преподавателей : "имеет"
Преподаватели ||--o{ Табель_Учета_Времени : "учитывается в"
Преподаватели ||--o{ Расчеты_Зарплаты : "рассчитывается для"
Преподаватели }o--|| Должности : "имеет"
Преподаватели }o--|| Квалификации : "имеет"
Тарифы_и_Надбавки }o--|| Виды_Выплат : "относится к"
Рис. 2. ER-диаграмма базы данных «Расчет заработной платы преподавателя».
Эта диаграмма демонстрирует, как сущности предметной области переводятся в таблицы реляционной базы данных, а их логические связи отображаются через внешние ключи, обеспечивая целостность и структурированность данных.
Разработка клиентской части на Visual Basic 6.0
Клиентская часть приложения, разработанная на Visual Basic 6.0, является тем компонентом, с которым непосредственно взаимодействует пользователь. Основная задача этого модуля — предоставление интуитивно понятного интерфейса для ввода, просмотра и управления данными, а также для инициирования процесса расчета заработной платы. Благодаря визуальным инструментам VB6 процесс создания пользовательского интерфейса был максимально упрощен.
Пользовательский интерфейс и функционал
Приложение состоит из нескольких основных форм, каждая из которых отвечает за определенный блок функциональности:
- Главная форма (MDI Parent Form): Является контейнером для всех остальных форм. Содержит главное меню с пунктами для навигации по разделам: «Преподаватели», «Нагрузка», «Табель», «Расчеты», «Справочники» и т.д.
- Форма «Управление преподавателями»:
- Предназначена для добавления, редактирования и удаления информации о преподавателях (ФИО, должность, квалификация, стаж).
- Используемые элементы управления:
TextBoxдля ввода текстовых данных,ComboBoxдля выбора должности и квалификации из справочников,CommandButtonдля выполнения операций «Добавить», «Изменить», «Удалить»,DataGridдля отображения списка преподавателей.
- Форма «Учет нагрузки преподавателей»:
- Позволяет вводить и корректировать нормативную учебную нагрузку для каждого преподавателя на конкретный учебный год.
- Используемые элементы управления:
ComboBoxдля выбора преподавателя и учебного года,TextBoxдля ввода часов,CommandButton,DataGrid.
- Форма «Ведение табеля учета времени»:
- Служит для ежемесячного ввода фактически отработанных часов или выполненной учебной нагрузки, а также учета дней отпуска или больничного.
- Используемые элементы управления:
ComboBoxдля выбора преподавателя, месяца и года,TextBoxдля ввода часов и дней,CommandButton,DataGrid.
- Форма «Расчет заработной платы»:
- Основная форма для инициирования процесса расчета и просмотра его результатов.
- Содержит кнопки «Рассчитать зарплату» и «Сформировать отчет».
DataGridдля отображения детализированных результатов расчета по каждому преподавателю за выбранный период.
- Формы «Справочники»:
- Отдельные небольшие формы для управления справочными данными: «Должности», «Квалификации», «Виды выплат».
- Типовой набор элементов:
TextBox,CommandButton,DataGrid.
Все формы спроектированы с учетом принципов юзабилити, обеспечивая логичную последовательность действий пользователя и наглядность представления данных.
Фрагменты кода Visual Basic 6.0 для управления UI
Приведем примеры программного кода, демонстрирующие обработку событий и логику взаимодействия с пользователем.
1. Обработка события нажатия кнопки «Добавить» на форме «Управление преподавателями»:
Этот код иллюстрирует получение данных из текстовых полей и их подготовку для передачи в базу данных.
Private Sub cmdAddTeacher_Click()
Dim strSQL As String
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
' Установить соединение (подробнее в следующем разделе)
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=SERVER_NAME;Initial Catalog=DB_NAME;User ID=USER;Password=PASSWORD;"
cn.Open
' Проверка заполнения обязательных полей
If txtSurname.Text = "" Or txtName.Text = "" Or cmbPosition.ListIndex = -1 Then
MsgBox "Пожалуйста, заполните все обязательные поля (Фамилия, Имя, Должность).", vbExclamation
cn.Close
Set cn = Nothing
Exit Sub
End If
' Формирование SQL-запроса INSERT
strSQL = "INSERT INTO Преподаватели (Фамилия, Имя, Отчество, ДолжностьID, КвалификацияID, СтажЛет, ДатаПриемаНаРаботу, УченаяСтепень, УченоеЗвание) VALUES (" & _
"'" & Replace(txtSurname.Text, "'", "''") & "', " & _
"'" & Replace(txtName.Text, "'", "''") & "', " & _
"'" & Replace(txtPatronymic.Text, "'", "''") & "', " & _
cmbPosition.ItemData(cmbPosition.ListIndex) & ", " & _
cmbQualification.ItemData(cmbQualification.ListIndex) & ", " & _
Val(txtExperience.Text) & ", " & _
"'" & Format(dtpHireDate.Value, "yyyy-mm-dd") & "', " & _
"'" & Replace(txtDegree.Text, "'", "''") & "', " & _
"'" & Replace(txtRank.Text, "'", "''") & "')"
On Error GoTo ErrorHandler
cn.Execute strSQL, , adCmdText ' Выполнение запроса
MsgBox "Данные о преподавателе успешно добавлены.", vbInformation
' Обновить отображение данных в DataGrid (предполагается, что есть функция RefreshDataGrid)
Call RefreshTeachersDataGrid
cn.Close
Set cn = Nothing
Exit Sub
ErrorHandler:
MsgBox "Ошибка при добавлении преподавателя: " & Err.Description, vbCritical
If cn.State = adStateOpen Then cn.Close
Set cn = Nothing
End Sub
2. Загрузка данных в ComboBox из базы данных при инициализации формы:
Этот код демонстрирует заполнение ComboBox данными из справочной таблицы.
Private Sub Form_Load()
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
' Установка соединения
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=SERVER_NAME;Initial Catalog=DB_NAME;User ID=USER;Password=PASSWORD;"
cn.Open
' Заполнение ComboBox должностей
Set rs = cn.Execute("SELECT ДолжностьID, НазваниеДолжности FROM Должности ORDER BY НазваниеДолжности", , adCmdText)
With cmbPosition
.Clear
Do While Not rs.EOF
.AddItem rs!НазваниеДолжности
.ItemData(.NewIndex) = rs!ДолжностьID
rs.MoveNext
Loop
End With
rs.Close
' Заполнение ComboBox квалификаций
Set rs = cn.Execute("SELECT КвалификацияID, НазваниеКвалификации FROM Квалификации ORDER BY НазваниеКвалификации", , adCmdText)
With cmbQualification
.Clear
Do While Not rs.EOF
.AddItem rs!НазваниеКвалификации
.ItemData(.NewIndex) = rs!КвалификацияID
rs.MoveNext
Loop
End With
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Эти примеры показывают, как Visual Basic 6.0 позволяет быстро создавать интерактивные элементы управления и связывать их с логикой приложения, подготавливая данные для последующего взаимодействия с базой данных.
Взаимодействие клиентской части с базой данных через ADO
Мост между пользовательским интерфейсом на Visual Basic 6.0 и данными, хранящимися в Microsoft SQL Server 2000, обеспечивается технологией ADO (ActiveX Data Objects). ADO предоставляет стандартизированный и гибкий способ для клиентского приложения выполнять запросы к базе данных, получать результаты и управлять ими.
Установление соединения с базой данных
Первым и самым важным шагом в любом взаимодействии с базой данных через ADO является установление соединения. Это достигается с помощью объекта Connection и его свойства ConnectionString. ConnectionString — это строка, содержащая всю необходимую информацию для подключения к источнику данных.
Пример кода для установления соединения:
Private Function GetADOConnection() As ADODB.Connection
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
On Error GoTo ErrorHandler
' Строка подключения к SQL Server 2000
' Provider: SQLOLEDB - OLE DB провайдер для SQL Server
' Data Source: Имя или IP-адрес SQL Server
' Initial Catalog: Имя базы данных
' User ID: Имя пользователя для подключения к БД
' Password: Пароль пользователя
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=YOUR_SERVER_NAME;Initial Catalog=TeachersPayrollDB;User ID=YourUser;Password=YourPassword;"
' Альтернативно, для Windows-аутентификации:
' cn.ConnectionString = "Provider=SQLOLEDB;Data Source=YOUR_SERVER_NAME;Initial Catalog=TeachersPayrollDB;Integrated Security=SSPI;"
cn.Open ' Открытие соединения
Set GetADOConnection = cn
Exit Function
ErrorHandler:
MsgBox "Ошибка при подключении к базе данных: " & Err.Description, vbCritical
Set GetADOConnection = Nothing ' Возвращаем Nothing в случае ошибки
If Not cn Is Nothing Then
If cn.State = adStateOpen Then cn.Close
Set cn = Nothing
End If
End Function
' Пример использования в другой части кода:
' Dim objConn As ADODB.Connection
' Set objConn = GetADOConnection
' If Not objConn Is Nothing Then
' MsgBox "Соединение с базой данных успешно установлено!", vbInformation
' objConn.Close
' Set objConn = Nothing
' Else
' MsgBox "Не удалось установить соединение.", vbCritical
' End If
В приведенном примере YOUR_SERVER_NAME, TeachersPayrollDB, YourUser, YourPassword должны быть заменены на актуальные параметры подключения к вашему SQL Server 2000.
Выполнение SQL-запросов DML
Объект Command в ADO используется для выполнения SQL-запросов DML (Data Manipulation Language), таких как INSERT (добавление), UPDATE (изменение), DELETE (удаление), а также для вызова хранимых процедур.
Примеры использования объекта Command:
1. Запрос INSERT (Добавление нового преподавателя):
Private Sub AddTeacherToDB(ByVal sSurname As String, ByVal sName As String, ByVal sPatronymic As String, _
ByVal lPositionID As Long, ByVal lQualificationID As Long, ByVal lExperience As Long, _
ByVal dHireDate As Date, Optional ByVal sDegree As String = "", Optional ByVal sRank As String = "")
Dim cmd As ADODB.Command
Dim cn As ADODB.Connection
Set cn = GetADOConnection ' Получаем объект Connection
If cn Is Nothing Then Exit Sub
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = "INSERT INTO Преподаватели (Фамилия, Имя, Отчество, ДолжностьID, КвалификацияID, СтажЛет, ДатаПриемаНаРаботу, УченаяСтепень, УченоеЗвание) " & _
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
' Добавление параметров для предотвращения SQL-инъекций и корректной обработки данных
.Parameters.Append .CreateParameter("@Фамилия", adVarWChar, adParamInput, 50, sSurname)
.Parameters.Append .CreateParameter("@Имя", adVarWChar, adParamInput, 50, sName)
.Parameters.Append .CreateParameter("@Отчество", adVarWChar, adParamInput, 50, sPatronymic)
.Parameters.Append .CreateParameter("@ДолжностьID", adInteger, adParamInput, , lPositionID)
.Parameters.Append .CreateParameter("@КвалификацияID", adInteger, adParamInput, , lQualificationID)
.Parameters.Append .CreateParameter("@СтажЛет", adInteger, adParamInput, , lExperience)
.Parameters.Append .CreateParameter("@ДатаПриемаНаРаботу", adDate, adParamInput, , dHireDate)
.Parameters.Append .CreateParameter("@УченаяСтепень", adVarWChar, adParamInput, 50, sDegree)
.Parameters.Append .CreateParameter("@УченоеЗвание", adVarWChar, adParamInput, 50, sRank)
.Execute
End With
cn.Close
Set cmd = Nothing
Set cn = Nothing
MsgBox "Преподаватель успешно добавлен.", vbInformation
End Sub
2. Запрос UPDATE (Изменение данных преподавателя):
Private Sub UpdateTeacherInDB(ByVal lTeacherID As Long, ByVal sNewSurname As String, ByVal sNewName As String)
Dim cmd As ADODB.Command
Dim cn As ADODB.Connection
Set cn = GetADOConnection
If cn Is Nothing Then Exit Sub
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = "UPDATE Преподаватели SET Фамилия = ?, Имя = ? WHERE ПреподавательID = ?"
.Parameters.Append .CreateParameter("@Фамилия", adVarWChar, adParamInput, 50, sNewSurname)
.Parameters.Append .CreateParameter("@Имя", adVarWChar, adParamInput, 50, sNewName)
.Parameters.Append .CreateParameter("@ПреподавательID", adInteger, adParamInput, , lTeacherID)
.Execute
End With
cn.Close
Set cmd = Nothing
Set cn = Nothing
MsgBox "Данные преподавателя обновлены.", vbInformation
End Sub
3. Запрос DELETE (Удаление преподавателя):
Private Sub DeleteTeacherFromDB(ByVal lTeacherID As Long)
Dim cmd As ADODB.Command
Dim cn As ADODB.Connection
Set cn = GetADOConnection
If cn Is Nothing Then Exit Sub
If MsgBox("Вы уверены, что хотите удалить этого преподавателя?", vbQuestion + vbYesNo, "Подтверждение удаления") = vbNo Then
cn.Close
Set cn = Nothing
Exit Sub
End If
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cn
.CommandType = adCmdText
.CommandText = "DELETE FROM Преподаватели WHERE ПреподавательID = ?"
.Parameters.Append .CreateParameter("@ПреподавательID", adInteger, adParamInput, , lTeacherID)
.Execute
End With
cn.Close
Set cmd = Nothing
Set cn = Nothing
MsgBox "Преподаватель удален.", vbInformation
End Sub
Получение и отображение данных
Для получения данных из базы данных и их отображения в элементах управления Visual Basic 6.0 используются объект Recordset и элемент управления ADODC.
Пример получения и отображения данных в DataGrid с использованием ADODC:
Предположим, на форме frmTeachers размещен элемент ADODC с именем adoTeachers и элемент DataGrid с именем grdTeachers.
' В событии Form_Load или при необходимости обновить данные
Private Sub RefreshTeachersDataGrid()
With adoTeachers
.ConnectionString = "Provider=SQLOLEDB;Data Source=YOUR_SERVER_NAME;Initial Catalog=TeachersPayrollDB;User ID=YourUser;Password=YourPassword;"
.RecordSource = "SELECT ПреподавательID, Фамилия, Имя, Отчество, НазваниеДолжности, НазваниеКвалификации, СтажЛет FROM V_ПолнаяИнформацияОПреподавателях" ' Используем представление для удобства
.Refresh ' Обновляем Recordset
End With
Set grdTeachers.DataSource = adoTeachers ' Привязываем DataGrid к ADODC
End Sub
' Создание представления V_ПолнаяИнформацияОПреподавателях для демонстрации:
' CREATE VIEW V_ПолнаяИнформацияОПреподавателях AS
' SELECT
' П.ПреподавательID,
' П.Фамилия,
' П.Имя,
' П.Отчество,
' Д.НазваниеДолжности,
' К.НазваниеКвалификации,
' П.СтажЛет
' FROM
' Преподаватели П
' JOIN Должности Д ON П.ДолжностьID = Д.ДолжностьID
' JOIN Квалификации К ON П.КвалификацияID = К.КвалификацияID;
Использование ADO в связке с Visual Basic 6.0 значительно упрощает работу с базами данных, позволяя разработчикам сосредоточиться на бизнес-логике приложения, а не на низкоуровневых деталях взаимодействия с СУБД.
Алгоритмы и логика расчета заработной платы
Сердцем любого программного средства для автоматизации является его алгоритмическая часть. В данном разделе подробно рассматриваются алгоритмы выполнения основных операций с данными, а также центральный и наиболее сложный алгоритм — расчет заработной платы преподавателя.
Основные операции с данными
Фундаментальные операции, лежащие в основе любого приложения, работающего с базами данных, известны как CRUD (Create, Read, Update, Delete). В контексте SQL они реализуются посредством запросов INSERT, SELECT, UPDATE и DELETE соответственно.
1. Добавление новых записей (INSERT):
Используется для внесения новой информации в таблицу.
- Общий вид:
INSERT INTO Таблица (Поле1, Поле2, ...) VALUES (Значение1, Значение2, ...) - Пример: Добавление нового преподавателя.
INSERT INTO Преподаватели (Фамилия, Имя, Отчество, ДолжностьID, КвалификацияID, СтажЛет, ДатаПриемаНаРаботу) VALUES ('Иванов', 'Иван', 'Иванович', 1, 2, 10, '2010-09-01');
2. Вывод (Чтение) данных (SELECT):
Предназначен для извлечения данных из одной или нескольких таблиц. В приложении Visual Basic 6.0 данные, полученные с помощью SELECT, отображаются в элементах управления, таких как DataGrid, DataList или DataCombo, привязанных к ADODC.
- Общий вид:
SELECT Поле1, Поле2, ... FROM Таблица [WHERE Условие] [ORDER BY Поле [ASC|DESC]] - Пример: Получение списка преподавателей с их должностями и квалификациями.
SELECT П.Фамилия, П.Имя, П.Отчество, Д.НазваниеДолжности, К.НазваниеКвалификации FROM Преподаватели П JOIN Должности Д ON П.ДолжностьID = Д.ДолжностьID JOIN Квалификации К ON П.КвалификацияID = К.КвалификацияID ORDER BY П.Фамилия;
3. Изменение существующих записей (UPDATE):
Используется для модификации данных в одной или нескольких записях таблицы, соответствующих заданному условию.
- Общий вид:
UPDATE Таблица SET Поле1 = НовоеЗначение1, Поле2 = НовоеЗначение2, ... WHERE Условие - Пример: Изменение стажа преподавателя.
UPDATE Преподаватели SET СтажЛет = 11 WHERE ПреподавательID = 1;
4. Удаление данных (DELETE):
Применяется для удаления записей из таблицы, соответствующих заданному условию.
- Общий вид:
DELETE FROM Таблица WHERE Условие - Пример: Удаление преподавателя по ID.
DELETE FROM Преподаватели WHERE ПреподавательID = 1;
Все эти SQL-запросы в приложении Visual Basic 6.0 выполняются через объект Command ADO, используя его свойство CommandText и метод Execute.
Алгоритм расчета заработной платы преподавателя
Расчет заработной платы преподавателя — это многоступенчатый процесс, учитывающий множество переменных: от базового оклада до различных надбавок и доплат, а также фактической учебной нагрузки. Ниже представлен поэтапный алгоритм.
Определение базового оклада/ставки
Базовая часть заработной платы преподавателя является отправной точкой для всех дальнейших расчетов. Она формируется на основе нескольких ключевых параметров:
- Должность и квалификация: Каждая должность имеет свой базовый оклад, который может быть скорректирован в зависимости от квалификационной категории преподавателя.
- Единая Тарифная Сетка (ЕТС): Во многих образовательных учреждениях используется ЕТС — шкала разрядов и соответствующих им тарифных коэффициентов, определяющая размер тарифной ставки в зависимости от сложности работы и квалификации.
- Фактическая и нормативная нагрузка: Заработная плата может рассчитываться пропорционально отработанному времени или выполненной учебной нагрузке.
Формулы расчета базовой заработной платы:
- На основе месячной ставки и фактически отработанных часов:
Заработная платабазовая = Ставкамесячная × (Часыфактические / Часынормативные)
Где:- Ставкамесячная — месячная ставка преподавателя, определенная по должности и квалификации.
- Часыфактические — фактически отработанные часы за расчетный период (из таблицы
Табель_Учета_Времени). - Часынормативные — нормативная продолжительность рабочего времени за месяц.
- На основе недельной ставки и учебной нагрузки (для преподавателей):
Заработная платабазовая = Ставканедельная × (Часыучебной нагрузки в неделю / 18)
Где:- Ставканедельная — недельная ставка преподавателя.
- Часыучебной нагрузки в неделю — фактическая учебная нагрузка преподавателя за неделю.
- 18 — это стандартная норма учебной (преподавательской) работы за ставку заработной платы для учителей школ, преподавателей дополнительного образования и тренеров-преподавателей. Для преподавателей организаций среднего профессионального образования норма годовой учебной нагрузки за ставку составляет 720 часов в год, что при 10 месяцах обучения (сентябрь-июнь) эквивалентно 72 часам в месяц.
Пример SQL-запроса для получения базового оклада с учетом коэффициента квалификации:
SELECT
(Д.БазовыйОклад * (1 + К.КоэффициентНадбавки)) AS БазовыйОкладСУчетомКвалификации
FROM
Преподаватели П
JOIN Должности Д ON П.ДолжностьID = Д.ДолжностьID
JOIN Квалификации К ON П.КвалификацияID = К.КвалификацияID
WHERE П.ПреподавательID = @ПреподавательID;
Учет надбавок и доплат
К базовому окладу добавляются различные компенсационные и стимулирующие выплаты. Эти надбавки и доплаты могут быть фиксированными или рассчитываться как процент от оклада.
Типичные категории надбавок и доплат для педагогических работников в России:
1. За квалификационную категорию:
- Размер: Обычно устанавливается в процентах от должностного оклада. Например, за первую категорию — 15–25%, за высшую категорию — 25–35%. В некоторых регионах может варьироваться от 10% до 40% оклада.
- Пример расчета: Если базовый оклад 30 000 руб. и надбавка за высшую категорию 30%, то надбавка составит 9 000 руб.
Данные для расчета берутся из таблицы Квалификации и Тарифы_и_Надбавки.
2. За стаж педагогической работы (выслугу лет):
- Размер: Является стимулирующей выплатой и определяется локальными нормативными актами. Рекомендуемые размеры могут составлять от 5% до 30% от должностного оклада/ставки. Для работников федеральных казенных профессиональных образовательных учреждений надбавка за выслугу лет является обязательной.
- Пример расчета: При стаже 10 лет и надбавке 15% от базового оклада в 30 000 руб., надбавка составит 4 500 руб.
Данные для расчета берутся из поля СтажЛет таблицы Преподаватели и Тарифы_и_Надбавки.
3. За ученую степень/звание:
- Размер: В минимальные оклады научно-педагогических работников вузов включаются размеры надбавок за ученые степени и по должностям (доцента, профессора), действовавшие до 1 сентября 2013 года (например, 3 000 рублей для кандидата наук и 7 000 рублей для доктора наук). В некоторых случаях стимулирующая надбавка за ученую степень кандидата наук может составлять до 10% от оклада, а за доктора наук — до 20% от оклада.
- Пример расчета: Если у преподавателя ученая степень кандидата наук, и надбавка составляет 3 000 руб.
Данные для расчета берутся из полей УченаяСтепень, УченоеЗвание таблицы Преподаватели и Тарифы_и_Надбавки.
4. Доплаты за обучение детей-инвалидов/с ОВЗ:
- Размер: Регулируются локальными нормативными актами. На федеральном уровне как обязательные не предусмотрены. Однако многие локальные акты предусматривают такую доплату, например, в размере 20% к окладу.
- Пример расчета: Если оклад 30 000 руб. и доплата 20%, то доплата составит 6 000 руб.
Данные для расчета берутся из таблицы Тарифы_и_Надбавки и информации о наличии таких учащихся.
5. Доплаты за деление класса на подгруппы:
- Размер: Также устанавливаются локальными нормативными актами и могут варьироваться.
Данные для расчета берутся из таблицы Тарифы_и_Надбавки и информации о делении классов.
Общая формула и логика расчета итоговой заработной платы
После определения базового оклада и суммирования всех надбавок и доплат, формируется итоговая заработная плата к начислению.
Общая формула заработной платы:
Заработная платаитого = Окладбазовый × (1 + Суммавсех коэффициентов надбавок) + Суммавсех фиксированных доплат + Стимулирующиевыплаты
Логика интеграции в программное средство:
Эти расчеты наиболее эффективно интегрировать в программное средство через хранимые процедуры в SQL Server. Хранимая процедура SP_РассчитатьЗарплатуМесяц может выполнять следующие шаги:
- Принять
ПреподавательID,Месяц,Годв качестве входных параметров. - Извлечь базовый оклад преподавателя из таблицы
Должностис учетом коэффициента изКвалификации. - Извлечь информацию о стаже, ученой степени/звании из таблицы
Преподаватели. - Извлечь данные о фактически отработанных часах/нагрузке из
Табель_Учета_Времени. - Используя
Тарифы_и_НадбавкииВиды_Выплат, рассчитать все причитающиеся надбавки и доплаты. - Суммировать все компоненты, формируя
ИтогоКНачислению. - Сохранить результаты расчета в таблице
Расчеты_Зарплатыдля последующего анализа и формирования отчетов.
Пример фрагмента SQL для хранимой процедуры (упрощенный):
CREATE PROCEDURE SP_РассчитатьЗарплатуМесяц
@ПреподавательID INT,
@Месяц INT,
@Год INT
AS
BEGIN
DECLARE @БазовыйОклад MONEY;
DECLARE @СуммаНадбавок MONEY = 0;
DECLARE @СуммаДоплат MONEY = 0;
DECLARE @ИтогоКНачислению MONEY;
DECLARE @СтажЛет INT;
DECLARE @КоэффициентКвалификации DECIMAL(5,2);
DECLARE @ФактическиеЧасы DECIMAL(7,2);
DECLARE @НормативныеЧасы DECIMAL(7,2); -- Месячная норма
-- 1. Получение базового оклада и коэффициента квалификации
SELECT
@БазовыйОклад = Д.БазовыйОклад,
@КоэффициентКвалификации = К.КоэффициентНадбавки,
@СтажЛет = П.СтажЛет
FROM
Преподаватели П
JOIN Должности Д ON П.ДолжностьID = Д.ДолжностьID
JOIN Квалификации К ON П.КвалификацияID = К.КвалификацияID
WHERE П.ПреподавательID = @ПреподавательID;
-- 2. Получение фактически отработанных часов (и нормативных, если применимо)
SELECT
@ФактическиеЧасы = ТУВ.ФактическиОтработаноЧасов
FROM
Табель_Учета_Времени ТУВ
WHERE ТУВ.ПреподавательID = @ПреподавательID AND ТУВ.Месяц = @Месяц AND ТУВ.Год = @Год;
-- Определение нормативных часов для пропорционального расчета, если требуется
-- Например, для 720 часов в год на 10 месяцев:
SET @НормативныеЧасы = 72.0; -- 720/10
-- Корректировка базового оклада по факту отработанных часов
IF @ФактическиеЧасы IS NOT NULL AND @НормативныеЧасы > 0 THEN
SET @БазовыйОклад = @БазовыйОклад * (@ФактическиеЧасы / @НормативныеЧасы);
END IF;
-- 3. Расчет надбавок и доплат (упрощенно)
-- Надбавка за квалификацию (уже учтена в @КоэффициентКвалификации, но может быть отдельной фиксированной суммой)
-- SET @СуммаНадбавок = @СуммаНадбавок + (@БазовыйОклад * @КоэффициентКвалификации);
-- Надбавка за стаж (пример: 15% за 10 лет)
IF @СтажЛет >= 10 THEN
SET @СуммаНадбавок = @СуммаНадбавок + (@БазовыйОклад * 0.15);
END IF;
-- Доплата за ученую степень (пример: 3000 руб. за кандидата наук)
IF EXISTS (SELECT 1 FROM Преподаватели WHERE ПреподавательID = @ПреподавательID AND УченаяСтепень = 'Кандидат наук') THEN
SET @СуммаДоплат = @СуммаДоплат + 3000;
END IF;
-- И другие доплаты...
-- 4. Расчет итоговой заработной платы
SET @ИтогоКНачислению = @БазовыйОклад + @СуммаНадбавок + @СуммаДоплат;
-- 5. Сохранение результатов
INSERT INTO Расчеты_Зарплаты (ПреподавательID, Месяц, Год, БазовыйОклад, СуммаНадбавок, СуммаДоплат, ИтогоКНачислению, ДатаРасчета)
VALUES (@ПреподавательID, @Месяц, @Год, @БазовыйОклад, @СуммаНадбавок, @СуммаДоплат, @ИтогоКНачислению, GETDATE());
END;
Расчет за неполный месяц или невыполненную нагрузку
В реальной жизни не всегда все идеально. Могут возникать ситуации, когда преподаватель поступает на работу в середине учебного года, уходит в отпуск, болеет, или фактическая учебная нагрузка оказывается меньше нормативной. В таких случаях применяются корректирующие механизмы:
- Пропорциональный расчет: Заработная плата начисляется пропорционально отработанным дням или часам в месяце. Например, если преподаватель отработал полмесяца, ему начисляется половина месячной ставки.
- Расчет по часовым ставкам: В некоторых случаях, особенно при неполной или переменной нагрузке, расчет может производиться по часовым ставкам. При этом стоимость часа определяется делением месячной ставки на нормативное количество рабочих часов в месяце.
- Учет 50% часовой ставки: В определенных ситуациях (например, при отмене занятий не по вине преподавателя, или неявке учащихся) может применяться оплата в размере не менее 50% часовой ставки, если иное не предусмотрено локальными актами.
Эти подходы реализуются через условные операторы и дополнительные вычисления в хранимых процедурах, обеспечивая гибкость и справедливость начисления заработной платы в нестандартных ситуациях.
Анализ преимуществ и ограничений выбранных технологических решений
Выбор любой технологии, особенно в сфере разработки программного обеспечения, всегда представляет собой компромисс между возможностями, стоимостью, сложностью и долгосрочной перспективой. В нашем проекте, сосредоточенном на Visual Basic 6.0 и Microsoft SQL Server 2000, важно провести критический анализ этих решений, учитывая как исторический контекст их актуальности, так и современные технологические реалии 2025 года.
Преимущества связки Visual Basic 6.0 и SQL Server 2000 (в период их актуальности)
В конце 1990-х — начале 2000-х годов, когда эти технологии были на пике своего развития, их комбинация представляла собой мощное и популярное решение для создания корпоративных приложений, что делало её привлекательной для широкого круга разработчиков и организаций.
- Быстрая разработка приложений (RAD): Visual Basic 6.0 был флагманом концепции RAD. Благодаря интуитивно понятной визуальной среде разработки, богатому набору готовых компонентов ActiveX и простой событийной модели, разработчики могли в кратчайшие сроки создавать функциональные пользовательские интерфейсы и внедрять бизнес-логику. Это значительно сокращало циклы разработки и снижало затраты.
- Простота освоения: VB6 был одним из самых доступных языков для начинающих программистов. Его синтаксис, схожий с обычным английским языком, и обширная документация делали порог вхождения очень низким, что способствовало массовому распространению и появлению большого количества специалистов.
- Глубокая интеграция с экосистемой Microsoft: Обе технологии были частью обширной экосистемы Microsoft. Это обеспечивало бесшовную интеграцию с операционной системой Windows, Microsoft Office и другими корпоративными продуктами. Разработка и развертывание приложений были значительно упрощены благодаря стандартизации и совместимости.
- Эффективный доступ к данным через ADO: Технология ADO предоставляла надежный, высокопроизводительный и унифицированный интерфейс для доступа клиентских приложений VB6 к базам данных SQL Server 2000. Это позволяло легко выполнять операции CRUD и использовать более сложные запросы или хранимые процедуры.
- Централизованное управление данными: SQL Server 2000 был мощной реляционной СУБД, обеспечивающей централизованное и надежное хранение данных. Он предлагал развитые средства для управления базами данных, обеспечения их безопасности, целостности и резервного копирования, что критически важно для финансовых систем, таких как расчет заработной платы.
- Относительно низкие требования к клиентским машинам: В двухуровневой клиент-серверной архитектуре большая часть вычислительной нагрузки и операций с данными переносилась на более мощный сервер базы данных. Это позволяло запускать клиентские приложения на менее производительных компьютерах, что было актуально для офисной техники тех лет.
Ограничения и недостатки связки Visual Basic 6.0 и SQL Server 2000 (с учетом современных технологических тенденций 2025 года)
Несмотря на прошлые достоинства, с точки зрения современных технологических тенденций 2025 года, связка Visual Basic 6.0 и SQL Server 2000 сталкивается с серьезными ограничениями.
- Устаревшая технология и прекращение поддержки: Это, пожалуй, самый значительный недостаток. Visual Basic 6.0 прекратил свое развитие в начале 2000-х годов; Microsoft прекратила его основную поддержку 31 марта 2005 года, а расширенная поддержка завершилась в марте 2008 года. Аналогично, основная поддержка SQL Server 2000 прекратилась 8 апреля 2008 года, а расширенная — 9 апреля 2013 года. Это означает отсутствие официальных обновлений, патчей безопасности и новых функций.
- Отсутствие кросс-платформенности: Приложения, разработанные на VB6, жестко привязаны к операционной системе Windows. В условиях, когда современные IT-системы стремятся к поддержке различных ОС (Linux, macOS), веб-платформ и мобильных устройств, отсутствие кросс-платформенности является критическим ограничением.
- Ограниченная масштабируемость и производительность: По сравнению с современными решениями (например, .NET Core, Java Spring Boot, современные версии SQL Server или облачные базы данных), старые версии VB6 и SQL Server 2000 могут испытывать серьезные ограничения по масштабируемости и производительности, особенно при работе с большим числом одновременных пользователей, высокими нагрузками или значительными объемами данных.
- Уязвимости безопасности: Устаревшие технологии, не получающие регулярных обновлений и патчей, становятся легкой мишенью для современных киберугроз и уязвимостей. Это представляет серьезный риск для любой корпоративной информационной системы, особенно той, что обрабатывает конфиденциальные финансовые данные.
- Сложность поддержки и развития: Отсутствие активной поддержки со стороны Microsoft, ограниченность актуальной документации и критический дефицит квалифицированных специалистов по VB6 и SQL Server 2000 делают дальнейшее развитие, модификацию и обслуживание таких систем чрезвычайно сложным и дорогостоящим. Компании, использующие эти устаревшие стеки, сталкиваются с «техническим долгом».
- Отсутствие современных возможностей: Связка VB6 и SQL Server 2000 не поддерживает современные архитектурные паттерны и технологические тенденции, такие как:
- Облачные вычисления: Миграция в облако или использование облачных сервисов для этих технологий крайне затруднительны или невозможны.
- Микросервисная архитектура: Для создания модульных, масштабируемых микросервисов требуются современные фреймворки и языки.
- RESTful API: Взаимодействие с внешними системами через стандартизированные веб-API практически нереализуемо.
- Контейнеризация (Docker, Kubernetes): Отсутствует поддержка для развертывания приложений в контейнерах.
- DevOps и CI/CD: Инструменты и практики непрерывной интеграции/непрерывного развертывания несовместимы с этими устаревшими стеками.
- Жесткая зависимость от одного производителя: Глубокая привязка к продуктам Microsoft (хотя и имевшая свои плюсы в прошлом) создает ограничения в выборе альтернативных решений и поставщиков, что противоречит современным тенденциям к мультиплатформенности и открытым стандартам.
Таким образом, хотя разработка данного программного средства на Visual Basic 6.0 и SQL Server 2000 является отличным учебным проектом для освоения классических принципов клиент-серверной разработки и работы с базами данных, для реальных коммерческих или государственных проектов в 2025 году такой стек технологий был бы крайне непрактичным и рискованным выбором. И возникает резонный вопрос: как организации, до сих пор использующие подобные устаревшие системы, планируют обеспечивать свою конкурентоспособность и безопасность в цифровую эпоху?
Заключение
В рамках данной курсовой работы была успешно решена задача по разработке программного средства для автоматизации расчета заработной платы преподавателя. Используя классическую связку Visual Basic 6.0 для клиентской части и Microsoft SQL Server 2000 в качестве СУБД, проект позволил глубоко погрузиться в фундаментальные принципы построения клиент-серверных приложений и механизмов взаимодействия с базами данных.
Начав с теоретических основ, мы определили и проанализировали архитектуру «клиент-сервер», выделив ее ключевые особенности, такие как масштабируемость и централизованное управление данными. Было дано исчерпывающее определение СУБД и ее основных задач, а также представлен подробный обзор выбранных технологий: Visual Basic 6.0 как средство быстрой разработки графического интерфейса, ADO как универсальный мост для доступа к данным, и SQL Server 2000 как надежное хранилище информации.
Центральной частью работы стало проектирование и реализация приложения. Мы детально обосновали выбор двухуровневой клиент-серверной архитектуры, представив схему взаимодействия компонентов. Важнейшим этапом стало проектирование реляционной базы данных в Microsoft SQL Server 2000, включающее разработку структуры таблиц (Преподаватели, Должности, Табель_Учета_Времени и др.), определение их атрибутов, типов данных и установление реляционных связей. Были рассмотрены роли представлений (Views) для упрощения запросов и хранимых процедур (Stored Procedures) для инкапсуляции бизнес-логики и оптимизации производительности. Разработка клиентской части на Visual Basic 6.0 включала создание интуитивно понятного пользовательского интерфейса с использованием визуальных компонентов, а также реализацию взаимодействия с базой данных через ADO, демонстрируя принципы установления соединения, выполнения DML-запросов и получения/отображения данных.
Ключевым аспектом проекта стала разработка алгоритмов. Были описаны стандартные SQL-операции (INSERT, SELECT, UPDATE, DELETE), а затем представлен комплексный, многоэтапный алгоритм расчета заработной платы преподавателя. Этот алгоритм включал определение базового оклада с учетом нормативной и фактической нагрузки, детальный учет различных надбавок и доплат (за квалификацию, стаж, ученую степень, работу с ОВЗ), а также механизмы расчета за неполный месяц. Особое внимание было уделено типовым размерам надбавок для педагогических работников в России, что придает алгоритму практическую ценность.
Завершающий анализ преимуществ и ограничений выбранных технологий показал, что, несмотря на их эффективность и популярность в прошлом (RAD, простота освоения, глубокая интеграция с Microsoft-экосистемой), к 2025 году они являются устаревшими. Прекращение поддержки, отсутствие кросс-платформенности, потенциальные уязвимости безопасности, ограниченная масштабируемость и несовместимость с современными технологическими тенденциями (облака, микросервисы, DevOps) делают их непригодными для новых коммерческих проектов.
Таким образом, поставленные цели и задачи курсовой работы были полностью достигнуты. Разработанное программное средство является функциональным прототипом, демонстрирующим глубокое понимание классических принципов построения информационных систем. Хотя выбранные технологии уже неактуальны для современного рынка, их изучение позволило сформировать прочную базу для понимания эволюции программной инженерии и перехода к более современным, гибким и масштабируемым решениям. Полученные знания и навыки являются фундаментом для дальнейшего профессионального роста в области разработки ПО.
Список использованной литературы
- ActiveX Data Objects (ADO) // V.B 6.0. URL: http://www.vbit.org/vbits/ado.html (дата обращения: 03.11.2025).
- Using ADO with Microsoft Visual Basic. URL: https://learn.microsoft.com/en-us/office/client-developer/access/desktop/using-ado-with-microsoft-visual-basic (дата обращения: 03.11.2025).
- Visual Basic 6 ADO Tutorial // Timesheets MTS Software. URL: https://www.timesheetsmts.com/vb6-ado-tutorial.htm (дата обращения: 03.11.2025).
- Википедия: Клиент — сервер. URL: https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82_%E2%80%94_%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80 (дата обращения: 03.11.2025).
- Википедия: Visual Basic. URL: https://ru.wikipedia.org/wiki/Visual_Basic (дата обращения: 03.11.2025).
- Дэвидсон Л. Проектирование баз данных на SQL Server 2000. URL: https://booksc.xyz/book/21156820/5d43fe (дата обращения: 03.11.2025).
- Использование библиотеки ADO (Microsoft ActiveX Data Object) // Хабр. URL: https://habr.com/ru/articles/123141/ (дата обращения: 03.11.2025).
- Клиент-серверная архитектура // ServerGate. URL: https://servergate.ru/blog/klient-servernaya-arhitektura (дата обращения: 03.11.2025).
- Клиент-серверная архитектура // Введение в интернет: Хекслет. URL: https://ru.hexlet.io/courses/introduction_to_internet/lessons/client-server-architecture/theory (дата обращения: 03.11.2025).
- Майкрософт SQL Server 2000.
- Методические рекомендации по организации оплаты труда в жилищно-коммунальном хозяйстве: 2.2. Организация оплаты труда на основе Единой тарифной сетки (ETC) // docs.cntd.ru. URL: http://docs.cntd.ru/document/901764319 (дата обращения: 03.11.2025).
- Основы среды программирования Microsoft Visual Basic 6.0 // Interface.ru. URL: https://www.interface.ru/home.asp?artId=17277 (дата обращения: 03.11.2025).
- Основные особенности и виды архитектур клиент-сервер // Ittelo. URL: https://ittelo.ru/blog/osnovnye-osobennosti-i-vidy-arhitektur-klient-server (дата обращения: 03.11.2025).
- Основные принципы клиент-серверной архитектуры // Skypro. URL: https://sky.pro/wiki/client-server-architecture/ (дата обращения: 03.11.2025).
- Педсовет: Зарплата учителя: как расчитать оплату труда педагогических работников. URL: https://pedsovet.org/article/zarplata-ucitelya-kak-rascitat-oplatu-truda-pedagogiceskih-rabotnikov (дата обращения: 03.11.2025).
- Порядок исчисления заработной платы педагогических работников средних специальных учебных заведений // КонсультантПлюс. URL: http://www.consultant.ru/document/cons_doc_LAW_16773/ (дата обращения: 03.11.2025).
- Порядок расчета заработной платы работников Государственного бюджет – ГБОУ «Школа на Яузе». URL: https://schuz.mskobr.ru/attach_files/upload_users_files/2021-09-02/bc00028a-78b7-4c07-b649-9689531bf831.pdf (дата обращения: 03.11.2025).
- Порядок формирования и начисления заработной платы педагогических работников. URL: https://profobr57.ru/dokumenty/metodicheskie-materialy/poryadok-formirovaniya-i-nachisleniya-zarabotnoy-platy-pedagogicheskikh-rabotnikov (дата обращения: 03.11.2025).
- Правила исчисления заработной платы педагогов // online.zakon.kz. URL: https://online.zakon.kz/Document/?doc_id=31405021 (дата обращения: 03.11.2025).
- Программирование на Visual Basic: все о языке, возможности // Appfox. URL: https://appfox.ru/articles/programmirovanie-na-visual-basic (дата обращения: 03.11.2025).
- Проектирование и реализация баз данных Microsoft SQL Server 2000. URL: https://www.twirpx.com/file/108920/ (дата обращения: 03.11.2025).
- Проектирование баз данных на SQL Server 2000 : Пер.с англ. URL: https://vuzlit.ru/660416/proektirovanie_baz_dannyh_sql_server (дата обращения: 03.11.2025).
- СУБД (Системы управления базами данных) — что это, какие бывают // itglobal. URL: https://itglobal.com/ru/solutions/subd-chto-eto-kakie-byvayut/ (дата обращения: 03.11.2025).
- СУБД: что это, виды, структура, функции — где и как используются системы управления базами данных, примеры // Яндекс Практикум. URL: https://practicum.yandex.ru/blog/chto-takoe-subd/ (дата обращения: 03.11.2025).
- Система управления базами данных (СУБД): что это такое и зачем нужна // Cloud.ru. URL: https://cloud.ru/ru/docs/articles/chto-takoe-subd (дата обращения: 03.11.2025).
- Статьи — Эффективная работа с БД в VB 6.0 // VBNet.Ru. URL: http://www.vbnet.ru/articles/db/db_eff.html (дата обращения: 03.11.2025).
- Тарифная система и расчет тарифной ставки // NRM.uz. URL: https://nrm.uz/contentf?doc=564479_tariffnaya_sistema_i_raschet_tariffnoy_stavki&products=1_zakonodatelstvo_uzbekistana (дата обращения: 03.11.2025).
- Точка Банк: Что такое Единая тарифная сетка: понятие и определение термина. URL: https://tochka.com/resources/glossary/edinaya-tarifnaya-setka/ (дата обращения: 03.11.2025).
- Учебное пособие по дисциплине ПРОЕКТИРОВАНИЕ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ Практикум // СКФ Мтуси. URL: https://skf.mtuci.ru/upload/iblock/c38/c38d94a9ff271457811bb1f62111516e.pdf (дата обращения: 03.11.2025).
- Что такое СУБД? Наиболее популярные СУБД // RU-CENTER помощь. URL: https://www.nic.ru/help/chto-takoe-subd-naibolee-populyarnye-subd_15234.html (дата обращения: 03.11.2025).
- Язык программирования Visual Basic: плюсы и минусы, кому нужен // timeweb.cloud. URL: https://timeweb.cloud/tutorials/programmirovanie/yazyk-programmirovaniya-visual-basic-plyusy-i-minusy-komu-nuzhen (дата обращения: 03.11.2025).
- Microsoft ActiveX Data Objects 2.5 (ADO) // Documentation & Help. URL: https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms675310(v=vs.85) (дата обращения: 03.11.2025).
- Архитектура Клиент-Сервер: что это такое, типы, примеры, особенности. URL: https://vc.ru/u/908293-evgeniy-kuzmenko/284988-arhitektura-klient-server-chto-eto-takoe-tipy-primery-osobennosti (дата обращения: 03.11.2025).
- Архитектура клиент-сервер: модель и технологии взаимодействия // Яндекс Практикум. URL: https://practicum.yandex.ru/blog/client-server/ (дата обращения: 03.11.2025).
- Data Access Using the ADO Data Control // VB 6.0 WITH SUMAN. URL: https://sites.google.com/site/vb6withsuman/data-access-using-the-ado-data-control?authuser=0 (дата обращения: 03.11.2025).
- Разработка и сопровождение базы данных в среде SQL Server 2000. URL: https://studfile.net/preview/4164101/ (дата обращения: 03.11.2025).
- Доступ к данным в Visual Basic 6.0. URL: https://studfile.net/preview/7996328/ (дата обращения: 03.11.2025).
- Элементы управления VB 6.0 для работы с ADO // КомпьютерПресс. URL: https://compress.ru/article.aspx?id=5129 (дата обращения: 03.11.2025).
- Элементы управления VB 6.0 для работы с ADO. Часть 1 // Visual 2000. URL: https://www.visual2000.ru/article_114.htm (дата обращения: 03.11.2025).
- Начальные сведения о языке Visual Basic 6.0. URL: https://www.mgimo.ru/upload/iblock/d76/d768d6fcf4a3a60a33118d0979ed1a0b.pdf (дата обращения: 03.11.2025).
- Visual Basic 6.0. Основные навыки — Глава 1. URL: https://studfile.net/preview/1808796/page:3/ (дата обращения: 03.11.2025).
- 1. Среда программирования Visual Basic 6.0. Основные с сведения. URL: https://studfile.net/preview/10578619/page:2/ (дата обращения: 03.11.2025).
- 6. Язык программирования Visual Basic. URL: https://www.gnesin-academy.ru/wp-content/uploads/2016/09/urok_vb_6.0_dlya_nachinayushchih.pdf (дата обращения: 03.11.2025).
- Visual Basic 6.0. URL: https://www.bstu.by/static/pdf/2002/bykov.pdf (дата обращения: 03.11.2025).
- Что такое СУБД // Skillfactory media. URL: https://skillfactory.ru/media/chto-takoe-subd (дата обращения: 03.11.2025).