КУРСОВОЙ ПРОЕКТ
Автоматизация деятельности расчетного отдела высшего учебного заведения
Аннотация
В настоящем курсовом проекте рассмотрен процесс разработки базы данных, которая позволяет автоматизировать деятельность расчетного отдела высшего учебного заведения. База данных хранит всю информацию по сотруднику на протяжении всего периода его работы, а также данные по результатам начислений, удержаний и сумм к выплате каждому сотруднику. БД, разработанная с помощью СУБД Interbase 6.0, позволяет проводить расчеты заработной платы сотрудника ВУЗа с учетом уральского коэффициента и удержаний различного рода - подоходный налог, пенсионный фонд, профсоюзный взнос. БД предоставляет работнику расчетного отдела ВУЗа просматривать информацию об окладах, соответствующих разряду, о сотрудниках с минимальной заработной платой в текущем месяце и о подразделении с сотрудниками, заработавших в текущем месяце больше всех. Все выше перечисленные функции доступны в приложении информационной системы, реализованной в среде Borland Delphi 7. Разработанная база данных позволит избежать ошибок при вводе данных и проведении операций расчетного характера. Целью курсового проекта следует считать разработку БД, удовлетворяющей выше названным условиям, и приложения для комфортной работы с ней.
Аbstract
This course project examined the process of developing a database that allows you to automate the activities of accounting department of higher education. The database stores all the information on the employee throughout the period of its operation, as well as data on the results of charges, deductions and payables kazhdomusotrudniku. Database developed through the DBMS Interbase 6.0, allows calculations university employee wages subject to withholding and the Ural coefficient of various kinds - income tax, pension fund, union fee. DB provides accounting department employee of the university to view the information about the salaries corresponding to the category, employee of the minimum wage in the current month and a subdivision with employees who have earned in the current month, most of all. All the above features are available in the application of the information system as implemented in Borland Delphi 7. Developed a database to avoid data entry errors and settlement operations of character. The aim of the course project should be considered to develop the database that satisfies the above mentioned conditions and applications for comfortable work with her.
Содержание
Введение.................................................................................................................... 5
1 Формализация задачи............................................................................................. 6
- 1 Словесное описание предметной области.......................................................... 6
- 2 Описание иерархии функций.............................................................................. 5
- 3 Выбор СУБД....................................................................................................... 7
2 Проектирование и создание БД.............................................................................. 8
- 1 Информационная модель ПО.............................................................................. 8
- 1. 1 ER – диаграмма............................................................................................... 8
- 1. 2 Перекрестная проверка модели данных и модели функций........................... 9
- 1. 3 Документирование ER – диаграммы............................................................. 10
- 2 Логическая модель БД...................................................................................... 14
- 2. 1 Схема БД, приведенная к 3НФ...................................................................... 14
- 2. 2 Графическое представление связей между таблицами................................. 14
- 3 Физическая модель БД...................................................................................... 15
- 3. 1 Техническое описание таблиц...................................................................... 15
- 3. 2 Тексты SQL-скриптов для создания объектов БД......................................... 17
3 Описание приложения.......................................................................................... 22
- 1 Описание технологии обработки данных......................................................... 22
3.2 Описание программ........................................................................................... 22
Заключение.............................................................................................................. 24
Список использованной литературы....................................................................... 25
Приложение А Исходные тексты программ............................................................ 26
Приложение Б Экранные формы............................................................................. 43
Введение
В современном обществе применение достижений информационных технологий следует считать повсеместным. Различного рода электронно-вычислительные устройства и гаджеты используются как для решения рядовых, даже бытовых задач, так и в качестве помощника в серьезном коммерческом деле.
ИТ являются необходимым сегодня подспорьем и в сфере образования и в сфере экономики. Обеспечение эффективной работы бухгалтера расчетного отдела Высшего учебного заведения сегодня также возможно с применением мощной базы данных и вычислительного аппарата.
Цель настоящего курсового проекта - это разработка эффективной и удобной БД, а также приложения информационной системы, автоматизирующей учет и расчет заработной платы сотрудников ВУЗа с учетом начислений и удержаний различного рода, для более комфортной работы с ней.
Для достижения поставленной цели необходимо сделать формализованное описание предметной области, создать структуру разрабатываемой базы данных, сформировать инфологическую, даталогическую и физическую модели базы данных, составить иерархию функций, написать программы и сделать выводы.
Под базой данных понимается некоторая унифицированная совокупность данных. В общем смысле термин база данных - это совокупность данных, организованных в соответствии с концептуальной структурой, описывающей характеристики этих данных и взаимоотношения между ними.
Применение БД необходимо для автоматизации деятельности бухгалтера-работника расчетного отдела ВУЗа в сфере учета сведений о сотрудниках, присвоении должностей и изменении в этой связи начисления заработной платы. БД также позволяет реализовывать операции расчетного характера- выплата и списание профсоюзных взносов, выплат в пенсионный фонд и так далее.
Задача базы данных состоит в хранении всех представляющих интерес данных об одном или нескольких сотрудниках различных подразделений, причем таким способом, который заведомо исключает ненужную избыточность. Создание баз данных преследует две основные цели: понизить избыточность данных и повысить их надежность.
1 Формализация задачи
1.1 Словесное описание предметной области
Расчетный отдел ВУЗа осуществляет расчет заработной платы преподавателей. Для преподавателя определена должность и разряд в соответствии с единой тарифной сеткой. Каждый разряд имеет свой оклад, причем определенной должности соответствует определенный разряд (ассистент – 11, преподаватель – 12 и т.д.). Заработок за месяц рассчитывается так: оклад делится на количество рабочих дней в месяце и умножается на количество фактически отработанных сотрудником дней. Также сотрудник имеет доплату – так называемый уральский коэффициент в размере 15 процентов от оклада. Удержания – 13 процентов подоходный налог, 1 процент – пенсионный фонд, 1 процент – профсоюзный взнос, если сотрудник член профсоюза. Необходимо вести расчет заработной платы и накапливать информацию по сотруднику на протяжении всего периода его работы. Необходимо за каждый месяц рассчитывать и хранить сколько всего начислено, удержано и к выплате. Расчет больничных и отпускных дней не вести.
Необходимо реализовать следующие запросы:
- Список окладов, соответствующих разрядам на текущую дату(разрядов 18).
- Список сотрудников, имеющих минимальную ЗП за текущий месяц – дата, список сотрудников - ФИО, должность сотрудника, сумма к выдаче.
- Подразделение, сотрудники которого заработали в текущем месяце больше всех.
1.2 Описание иерархии функций
Иерархия функций предметной области показана на рисунке 1.
Рисунок 1 – Иерархия функций ведения БД
1.3 Выбор СУБД
В рамках данного курсового проекта база данных будет создана с использованием СУБД Interbase 6.0. СУБД Interbase 6.0 является одной из самых популярных в мире систем управления базами данных с открытым исходным кодом. Interbase - реляционная система управления базами данных, разрабатывающаяся компанией Embarcadero. Выбор был остановлен именно на данной СУБД ввиду ее невысокой стоимости, поддержки стандартов SQL, возможности реализации прав доступа пользователям и отсутствием необходимости установки сервера на конечном компьютере. Система управления базами данных Interbase 6.0 позволяет создавать локальные базы данных, что необходимо для установления эффективного взаимодействия работников расчетного отдела ВУЗа.
2 Проектирование и создание БД
2.1 Информационная модель предметной области
2.1.1 ER – диаграмма
В ER-диаграмме сочетаются функциональный и информационный подходы, что позволяет представлять как совокупность выполняемых функций, так и отношения между элементами системы, задаваемые структурами данных. При этом графическая форма позволяет отобразить в компактном виде (за счет наглядных условных обозначений) типологию и свойства сущностей и связей, а формализмы, положенные в основу ER-диаграмм, позволяют использовать на следующем шаге проектирования логической структуры базы данных строгий аппарат нормализации.
Каждый тип сущности в ER-диаграммах представляется в виде прямоугольника с закруглёнными углами, содержащего имя сущности. В качестве имени обычно используются существительные (или обороты существительного) в единственном числе. Атрибуты служат для уточнения, идентификации, характеристики или выражения состояния сущности. Атрибуты пишутся в прямоугольнике сущности, к которой относятся, ниже названия.
Связь - это графически изображаемая ассоциация, устанавливаемая между сущностями. Каждый тип связи на ER-диаграмме отображается в виде сплошных или пунктирных линий. В первом случае связь обязательная, а во втором не обязательная.
Тип связи, например «1» или «М» будет указываться в виде прямой с одной стороны и разветвляющейся прямой («воронья лапа») с другой стороны, что показывает связь «М». ER-диаграмма для БД, хранящей информацию о деятельности расчетного отдела ВУЗа, показана на рисунке 2.
На данной диаграмме выделены такие сущности, как: «Подразделение», «Сотрудник», относящийся к конкретному подразделению, «Журнал рабочего времени» каждого сотрудника, «Расчет заработной платы» - сущность, позволяющая производить непосредственно расчетные операции на основе начислений и удержаний различного рода, «Должность», позволяющая определить разряд и оклад сотрудника, и сущность-пересечение «Сотрудник-Должность». Также на рисунке показаны связи между сущностями, с помощью которых можно судить о том какая сущность и каким образом относится к другой сущности.
Рисунок 2 – ЕR-диаграмма предметной области
2.1.2 Перекрестная проверка модели данных и модели функций
В таблице 1 представлена перекрестная проверка модели предметной области.
Таблица 2 - Перекрестная проверка модели предметной области и функций
Функции |
Классы объектов |
|||||
Сотрудник |
Подраз-деление |
Должность |
Журнал рабочего времени |
Расчет заработной платы |
Сотрудник-должность |
|
Ф1 |
I |
|
|
|
|
|
Ф2 |
R |
|
|
|
|
|
Ф3 |
U |
|
|
|
|
|
Ф4 |
|
I |
|
|
|
|
Ф5 |
|
R |
|
|
|
|
Ф6 |
|
U |
|
|
|
|
Ф7 |
|
|
I |
|
|
|
Ф8 |
|
|
R |
|
|
|
Ф9 |
|
|
U |
|
|
|
Ф10 |
|
|
|
I |
|
|
Ф11 |
|
|
|
R |
|
|
Ф12 |
|
|
|
U |
|
|
Ф13 |
|
|
|
|
I |
|
Ф14 |
|
|
|
|
R |
|
Ф15 |
|
|
|
|
U |
|
Ф16 |
|
|
|
|
|
I |
Ф17 |
|
|
|
|
|
R |
Ф18 |
|
|
|
|
|
U |
Ф19 |
|
|
R |
|
|
R |
Ф20 |
R |
|
|
|
R |
|
Ф21 |
|
R |
|
|
R |
|
В таблице 1 использованы следующие сокращения функций:
Ф1 – Добавление сотрудника;
Ф2 – Просмотр сведений о сотруднике;
Ф3 – Обновление сведений о сотруднике;
Ф4 – Добавление подразделения;
Ф5 – Просмотр сведений о подразделении;
Ф6 – Обновление сведений о подразделении;
Ф7 – Добавление должности;
Ф8 – Просмотр сведений о должности;
Ф9 – Обновление сведений о должности;
Ф10 – Добавление данных в журнал рабочего времени;
Ф11 – Просмотр сведений журнала рабочего времени;
Ф12 – Обновление сведений в журнале рабочего времени;
Ф13 – Добавление данных для расчета заработной платы;
Ф14 – Просмотр данных для расчета заработной платы;
Ф15 – Обновление данных для расчета заработной платы;
Ф16 – Добавление сведений сотрудник-должность;
Ф17 – Просмотр сведений сотрудник-должность;
Ф18 – Обновление сведений сотрудник-должность;
Ф19 – Просмотр списка окладов, соответствующих разрядам на текущую дату;
Ф 20 - Просмотр списка сотрудников, имеющих минимальную заработную плату за текущий месяц – дата, список сотрудников - ФИО, должность сотрудника, сумма к выдаче;
Ф 21 - Просмотр подразделения, сотрудники которого заработали в текущем месяце больше всех.
Так как в таблице не существует ни пустых строк, ни пустых столбцов, это означает, что модель данных соответствует модели функций, т.е. для каждой функции в модели данных имеются необходимые сущности, с другой стороны каждая сущность информационной модели используется хотя бы в одной функции.
2.1.3 Документирование ER – диаграммы
В таблице 2 представлено описание сущностей предметной области.
Таблица 2 – Описание сущностей
Имя сущности |
Пояснение |
Особенности использования |
Подразделение |
Описывает подразделения ВУЗа |
В подразделение могут входить несколько сотрудников |
Сотрудник |
Описывает сотрудников ВУЗа |
Может являться членом профсоюза |
Должность |
Описывает должности сотрудников ВУЗа |
Позволяет определить разряд и оклад сотрудника ВУЗа |
Журнал рабочего времени |
Описывает рабочий график каждого сотрудника |
Учитывает число рабочих дней и число отработанных дней, которые участвуют в расчете з/п сотрудника |
Расчет заработной платы |
Описывает данные, необходимые для расчет заработной платы сотрудника ВУЗа |
Учитываются все начислений и удержания |
Сотрудник-должность |
Сущность пересечения |
В таблице 3 представлено описание доменов используемых при работе с БД
Таблица 3 – Описание доменов
Имя домена |
Характеристика домена |
Логические ограничения |
Kod |
Целое от 1 до 999 |
>0 |
Char55 |
Символьный |
- |
Char56 |
Символьный |
- |
F |
Вещественное от 1 до 999.99 |
>0 |
В таблицах 4-9 представлено описание атрибутов сущностей
Таблица 4 – Сущность «Подразделение»
Свойство |
Пояснение |
Физические характеристики |
Опциональность |
Логические огра- ничения |
|||
Код |
Уникальный инде-тификатор |
Обязательный |
|||||
Название |
|
Символьный |
Обязательный |
- |
|||
Таблица 5 – Сущность «Сотрудник»
Свойство |
Пояснение |
Физические характеристики |
Опциональность |
Логические ограничения |
Код |
Уникальный индетификатор |
|
Обязательный |
|
Фамилия |
|
Символьный |
Обязательный |
- |
Имя |
|
Символьный |
Обязательный |
- |
Отчество |
|
Символьный |
Обязательный |
- |
Членство в профсоюзе |
|
Целое от 1 до 9999 |
Обязательный |
- |
Пол |
|
Символьный |
Обязательный |
- |
День рождения |
|
Дата |
Обязательный |
- |
Адрес |
|
Символьный |
Обязательный |
- |
Таблица 6 – Сущность «Должность»
Свойство |
Пояснение |
Физические харак-теристики |
Опциональность |
Логические ограничения |
Код |
Уникальный индетификатор |
|
|
|
Название |
|
Символьный |
Обязательный |
- |
Разряд |
|
Целое |
Обязательный |
>0 |
Оклад |
|
Вещественное |
Обязательный |
- |
Таблица 7 – Сущность «Журнал рабочего времени»
Свойство |
Пояснение |
Физические характеристики |
Опциональность |
Логические ограничения |
Год |
Уникальный инде- тификатор |
Целое |
Обязательный |
Год расчета з/п должен быть <= текущего году |
Месяц |
Уникальный инде- тификатор |
Целое |
Обязательный |
Месяц расчета з/п должен быть <= текущего года |
Число рабочих дней |
Целое |
Обязательный |
Число должно быть<=числу дней текущего месяца |
|
Число отработанных дней |
Целое |
Обязательный |
Число должно быть<=числу дней текущего месяца |
Таблица 8 – Сущность «Расчет заработной платы»
Свойство |
Пояснение |
Физические характеристики |
Опциональность |
Логические ограничения |
Дата |
Уникальный индетификатор |
Дата |
Обязательный |
|
Уральский коэффициент |
|
Вещественное от 1 до 9999 |
Обязательный |
- |
Начислено |
|
Вещественное от 1 до 9999 |
Обязательный |
- |
Подоходный налог |
|
Вещественное от 1 до 9999 |
Обязательный |
- |
Пенсионный фонд |
|
Вещественное от 1 до 9999 |
Обязательный |
- |
Проф- союзный взнос |
|
Вещественное от 1 до 9999 |
Обязательный |
- |
Выплата |
|
Вещественное от 1 до 9999 |
Обязательный |
- |
Таблица 9 – Сущность «Сотрудник-должность»
Свойство |
Пояснение |
Физические характеристики |
Опциональность |
Логические ограничения |
Дата |
Уникальный индетификатор |
Дата |
Обязательный |
|
Таблица 10 – Описание связей между сущностями
Сущность 1 |
Сущность 2 |
Имя связи |
Опциональность |
Кардинальность |
Подразделение |
Сотрудник |
Включает |
Может быть |
1:М |
Сотрудник |
Подраз- деление |
Входит |
Должен быть |
М:1 |
Журнал рабочего времени |
Сотрудник |
Описывает |
Может быть |
1:М |
Сотрудник |
Журнал рабочего времени |
Имеет |
Должен быть |
М:1 |
Расчет з/п |
Сотрудник |
Проводится |
Может быть |
1:М |
Сотрудник |
Расчет з/п |
Имеет |
Должен быть |
М:1 |
Должность |
Должность-сотрудник |
Присвоена |
Может быть |
1:М |
Должность-сотрудник |
Должность |
Имеется |
Должен быть |
М:1 |
Сотрудник |
Должность-сотрудник |
Присваивается |
Может быть |
1:М |
Должность-сотрудник |
Сотрудник |
Имеется |
Должен быть |
М:1 |
2.2 Логическая модель БД
2.2.1 Датологическая модель БД строится с учетом той модели данных, которую поддерживает выбранная СУБД, в нашем случае это InterBase. Для реляционной модели данных существует достаточно однозначный алгоритм преобразования ER – диаграммы в набор схем отношений, который состоит в следующем:
- каждая сущность становится отношением;
- атрибуты сущности становятся атрибутами отношения;
- разрешение связей.
Даталогическая модель БД представлена в приложении Б настоящего курсового проекта.
2.2.2 Схема базы данных приведённая к третьей нормальной форме.
Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме и между его элементами нет транзитивных зависимостей.
Для данной предметной области:
Подразделение (код, название).
Сотрудник (код, фамилия, имя, отчество, адрес,пол, день рождения, членство профсоюза, код подразделения).
Должность (код, название, разряд, оклад).
Журнал рабочего времени (код сотрудника, год, месяц, число рабочих дней, число отработанных дней).
Расчет заработной платы (дата, Код сотрудника, уральский коэффициент, начислено, подоходный налог, пенсионный фонд, профсоюзный взнос, выплата).
Сотрудник-должность (дата, код сотрудника, номер должности).
2.2.3 Графическое представление связей между таблицами
На рисунке 3 представлена даталогическая модель базы данных.
Рисунок 3 – Даталогическая модель базы данных
2.3 Физическая модель БД
2.3.1 Техническое описание таблиц
В таблицах 11-18 приведено техническое описание реляционных таблиц
Таблица 11 - Описание доменов
Имя домена |
Характеристика домена |
Логические ограничения |
Kod |
Integer not null |
>0 |
Char55 |
Char |
<=30 |
Char56 |
Char |
<=20 |
stoim |
Float |
>0 |
Таблица 12 - "Dolzhnost"
Имя поля |
Тип |
Обязательность |
Тип ключа |
Логическое ограничение |
Kod |
домен «kod» |
- |
ПК |
- |
nazvanie |
домен «Char55» |
not null |
- |
- |
razryad |
integer |
not null |
- |
- |
oklad |
домен «F» |
not null |
- |
- |
Таблица 13 – «Podrazdelenie»
Имя поля |
Тип |
Обязательность |
Тип ключа |
Логическое ограничение |
Kod |
домен «kod» |
- |
ПК |
- |
nazvaniye |
домен «Char55» |
not null |
- |
- |
Таблица 14 – «Sotrudnik»
Имя поля |
Тип |
Обязательность |
Тип ключа |
Логическое ограничение |
Kod |
домен «kod» |
- |
ПК |
- |
family |
домен «Char55» |
not null |
- |
- |
name |
домен «Char55» |
not null |
- |
- |
otchestvo |
домен «Char55» |
not null |
- |
- |
chlen_profsoyuza |
integer |
not null |
- |
|
kod_podrazd |
домен «kod» |
ВК |
||
pol |
Char |
not null |
- |
|
date_rozhdeniya |
Date |
not null |
>текущей |
|
adres |
домен «Char55» |
not null |
Таблица 15 – "Zhournal_rabochego_vremeni"
Имя поля |
Тип |
Обязательность |
Тип ключа |
Логическое ограничение |
kod_sotrudnika |
домен «kod» |
- |
ПК1,ВК1 |
- |
year |
integer |
- |
ПК2 |
- |
mounth |
integer |
- |
ПК3 |
- |
chislo_rabochih_dney |
integer |
not null |
- |
- |
chislo_otrabotannyh_dney |
integer |
not null |
- |
- |
Таблица 16 –"Sotrudnik-Dolzhnost"
Имя поля |
Тип |
Обязательность |
Тип ключа |
Логическое ограничение |
Date |
Date |
- |
ПК1 |
- |
kod_sotrudnika |
домен «kod» |
- |
ПК2,ВК1 |
- |
nomer_dolzhnosti |
домен «kod» |
- |
ПК3,ВК2 |
- |
Таблица 17 - "Rachet_zarplaty"
Имя поля |
Тип |
Обязательность |
Тип ключа |
Логическое ограничение |
Date |
Date |
- |
ПК1 |
- |
kod_sotrudnika |
домен «kod» |
- |
ПК2,ВК |
- |
uralskiy_koefficient |
домен «F» |
not null |
- |
- |
nachisleno |
домен «F» |
not null |
- |
- |
podohodnyi nalog |
домен «F» |
not null |
- |
- |
pensionnyi fond |
домен «F» |
not null |
- |
- |
profsoyuznyi vznos |
домен «F» |
not null |
- |
- |
vyplata |
домен «F» |
not null |
- |
- |
Таблица 18 - Стратегии обеспечения ссылочной целостности
Таблица |
Стратегия при обновлении |
Стратегия при удалении |
Dolzhnost |
Cascade |
Restrict |
Podrazdelenie |
Cascade |
Restrict |
Sotrudnik |
Cascade |
Restrict |
Zhournal_rabochego_vremeni |
Cascade |
Restrict |
Sotrudnik-Dolzhnost |
Cascade |
Restrict |
Rachet_zarplaty |
Cascade |
Restrict |
2.3.2 Тексты SQL-скриптов для создания объектов БД
Для создания базы данных использовался язык описания данных SQL. Тексты SQL-скриптов, для создания базы данных:
Создаем домены
Create domain "kod" as integer check(value>0) not null;
Create domain "Char55" as char(30) not null;
Create domain "Char56" as char(20) not null;
Create domain "F" as float not null;
Создаем таблицу «Должность»
Create table "Dolzhnost"
(
"kod" "kod" primary key,
"nazvanie" "Char55",
"razryad" integer,
"oklad" "F"
);
Создаем таблицу «Подразделение»
Create table "Podrazdelenie"
(
"kod" "kod" primary key,
"nazvanie" "Char55"
);
Создаем таблицу «Сотрудник»
Create table "Sotrudnik"
(
"kod" "kod" primary key,
"family" "Char55",
"name" "Char55",
"otchestvo" "Char55",
"kod_podrazd" "kod",
"chlen_profsoyuza" integer,
"pol" char(1),
"date_rozhdeniya" date,
"adres" "Char55",
foreign key ("kod_podrazd") references "Podrazdelenie" ("kod") on update cascade
);
***************Часть текста удалена**********************
Триггер для таблицы «Должность»– генерация ключа
SET TERM ^ ;
CREATE TRIGGER "Dolzhnost_ins" FOR "Dolzhnost"
ACTIVE BEFORE INSERT POSITION 0
as
begin
new."kod"=GEN_ID("GEN_Dolzhnost",1);
END
^
SET TERM ;^
Запрос.
Список сотрудников, имеющих минимальную ЗП за текущий месяц – дата, список сотрудников - ФИО, должность сотрудника, сумма к выдаче.
select s."family",s."name",s."otchestvo"
from "Sotrudnik" s,"Rachet_zarplaty" r
where s."kod"=r."kod_sotrudnika" and r."date" between :dat1 and :dat2 and r."vyplata"=
(select min(rt."vyplata")
from "Rachet_zarplaty" rt,"Sotrudnik" st
where st."kod"=rt."kod_sotrudnika" and rt."date" between :dat1 and :dat2
group by st."family",st."name",st."otchestvo")
3 Описание приложения
3.1 Описание технологии обработки данных
Для работы с БД была выбрана технология «клиент-сервер». В рамках этой технологии существует два программных процесса: клиентский и серверный. Клиентский процесс запрашивает у серверного те или иные ресурсы, а серверный процесс эти ресурсы предоставляет, при этом совсем не обязательно, чтобы программные файлы этих процессов располагались на одном компьютере. Принцип работы технологии «клиент-сервер»: клиент формирует и отсылает запрос серверу, на котором размещена БД. Сервер выполняет запрос и выдает клиенту в качестве результатов требуемые данные, а не отсылает ему файл с данными как это делается в технологии «файл-сервер».
Клиент-серверная архитектура имеет ряд преимущест перед файл-серверной архитектурой:
- невысокая загруженность сетевого траффика;
- низкие требования к ресурсам клиента (тонкий клиент);
- повышается общая производительность системы, т.к. центральные процессы клиентав и сервера функционируют параллельно.
Так как в основе организации обмена данными между клиентом и сервером лежит язык SQL , то такую программу еще называют SQL-сервером, а БД – базой данных SQL. В данном случае SQL-сервером является Interbase 6.0.
3.2 Описание программ
Программное средство разработано на языке высокого уровня Delphi в среде разработки Borland Delphi 7.
Программное средство обеспечивает ввод и коректировку данных, хранящихся в таблицах, просмотр информации, хранящейся в базе данных. Так же обеспечивается проверка на корректность вводимой пользователем информации и обеспечение ссылочной целостности данных.
Все экранные формы, реализованные в приложении, имеют содержательные заголовки, выполнены в едином стиле и цветовой гамме, содержат подсказки пользователям.
В программе реализована обработка информации, полученной из базы данных. В частности вывод списка окладов, соответствующих разряду, списка сотрудников с минимальной заработной платы, подразделения, сотрудники которого заработали в текущем месяце больше всех.
Экранные формы разработанного программного средства представлены в приложении Б настоящего курсового проекта.
Заключение
В данном курсовом проекте с использованием СУБД Interbase 6.0 была разработана база данных учета и хранения информации расчетного отдела Высшего учебного заведения. БД позволяет реализовать расчет заработной платы сотрудника ВУЗа с учетом всех видов удержаний и начислений.
Таким образом, в процессе проектирования базы данных, можно прийти к выводу, что правильная организация хранения и представления данных является неотъемлемой частью для успешного функционирования базы данных. Огромную роль в построении базы данных играют такие полезные функции, как создание запросов, которые позволяют делать выборку необходимых полей из большой совокупности данных, а также производить арифметические и логические операции над этими полями.
Требования к проекту были выполнены. Требования включают в себя: создание структуры и архитектуры новой базы данных; определение и обработка характеристик ее компонентов. Итогом выполнения задания является создание проекта БД, автоматизирующей деятельность расчетного отдела высшего учебного заведения. В состав выполненных работ входят: формализованное описание предметной области, сформированная структура разрабатываемой базы данных; инфологическая, даталогическая, физическая модель базы данных, программа, представляющая приложение, облегчающее работу с БД работников расчетного отдела.
Список использованной литературы
- Волкова, Т.В. Проектирование и создание БД / Т.В. Волкова. М–во образования и науки РФ, Гос. образоват. учреждение высш. проф. образования "ОГУ". – Оренбург: ГОУ ОГУ. – 2006. – 140 с.
- Кириллов В.В. Структурированный язык запросов (SQL). – СПб.: ИТМО, 2005. – 80 с.
- Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. – М.: Финансы и статистика, 2000. – 351 с.
- А. Ковязин, С.Востриков. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil. Изд. КУДИЦ-Образ, Санкт-Питербург. 2005. – 496 с.
- Delphi 7. Основы программирования. Решение типовых задач. Самоучитель: Л. М. Климова — Москва, КУДИЦ-Образ, 2006 г.- 480 с.
Приложение А
(обязательное)
Исходные тексты программ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, IBCustomDataSet, IBTable, IBDatabase, IBQuery;
type
TForm1 = class(TForm)
ibdtbs1: TIBDatabase;
ibtrnsctn1: TIBTransaction;
ibtbl1: TIBTable;
ds1: TDataSource;
ibtbl2: TIBTable;
ibtbl3: TIBTable;
ibtbl4: TIBTable;
ibtbl5: TIBTable;
ibtbl6: TIBTable;
ds2: TDataSource;
ds3: TDataSource;
ds4: TDataSource;
ds5: TDataSource;
ds6: TDataSource;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
ibqry1: TIBQuery;
procedure btn4Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
**************************Часть текста удалена***************************
procedure TForm3.btn3Click(Sender: TObject);
begin
if (ibqry1.FieldCount>0)and(dblkcbb1.KeyValue<>null) then
begin
try
ibqry1.Close;
ibqry1.SQL.Clear;
ibqry1.SQL.Add('delete from "Sotrudnik-Dolzhnost" where "date"=:dat and "nomer_dolzhnosti"=:nd');
ibqry1.ParamByName('dat').AsDate:=dtp1.Date;
ibqry1.ParamByName('nd').Value:=dblkcbb1.KeyValue;
ibqry1.ExecSQL;
Finally
End;
ibqry1.SQL.Clear;
ibqry1.SQL.Add('select s.*,d.* from "Sotrudnik-Dolzhnost" s,"Sotrudnik" d where s."kod_sotrudnika"=d."kod" and s."nomer_dolzhnosti"=:k');
ibqry1.ParamByName('k').Value:=dblkcbb1.KeyValue;
ibqry1.Open;
dblkcbb2.KeyValue:=null;
dtp1.Date:=StrToDate('1.1.1900');
end;
end;
procedure TForm3.dbgrd4CellClick(Column: TColumn);
begin
if ibqry1.FieldCount>0 then
begin
dtp1.Date:=ibqry1.FieldByName('date').AsDateTime;
dblkcbb2.KeyValue:=ibqry1.FieldByName('kod_sotrudnika').Value;
end;
end;
procedure TForm3.dblkcbbkod_sotrudnikaClick(Sender: TObject);
begin
ibqry2.SQL.Clear;
ibqry2.SQL.Add('select z.* from "Zhournal_rabochego_vremeni" z where z."kod_sotrudnika"=:p');
ibqry2.ParamByName('p').Value:=dblkcbbkod_sotrudnika.KeyValue;
ibqry2.Open;
edt1.Text:='';
edt2.Text:='';
edt3.Text:='';
edt4.Text:='';
end;
procedure TForm3.dbgrd1CellClick(Column: TColumn);
begin
if ibqry2.FieldCount>0 then
begin
edt1.Text:=ibqry2.FieldByName('year').AsString;
edt2.Text:=ibqry2.FieldByName('mounth').AsString;
edt3.Text:=ibqry2.FieldByName('chislo_rabochih_dney').AsString;
edt4.Text:=ibqry2.FieldByName('chislo_otrabotannyh_dney').AsString;
end;
end;
procedure TForm3.btn4Click(Sender: TObject);
begin
if (dblkcbbkod_sotrudnika.KeyValue<>null)and(edt1.Text<>'')and(edt2.Text<>'')and(edt3.Text<>'')and(edt4.Text<>'') then
begin
try
ibqry2.SQL.Clear;
ibqry2.SQL.Add('insert into "Zhournal_rabochego_vremeni"("kod_sotrudnika","year","mounth","chislo_rabochih_dney","chislo_otrabotannyh_dney") values(:ks,:y,:m,:chr,:cho)');
ibqry2.ParamByName('ks').Value:=dblkcbbkod_sotrudnika.KeyValue;
ibqry2.ParamByName('y').AsInteger:=StrToInt(edt1.Text);
ibqry2.ParamByName('m').AsInteger:=StrToInt(edt2.Text);
ibqry2.ParamByName('chr').AsInteger:=StrToInt(edt3.Text);
ibqry2.ParamByName('cho').AsInteger:=StrToInt(edt4.Text);
ibqry2.ExecSQL;
Finally
End;
ibqry2.SQL.Clear;
ibqry2.SQL.Add('select z.* from "Zhournal_rabochego_vremeni" z where z."kod_sotrudnika"=:p');
ibqry2.ParamByName('p').Value:=dblkcbbkod_sotrudnika.KeyValue;
ibqry2.Open;
edt1.Text:='';
edt2.Text:='';
edt3.Text:='';
edt4.Text:='';
end;
end;
procedure TForm3.btn5Click(Sender: TObject);
begin
if (dblkcbbkod_sotrudnika.KeyValue<>null)and(edt1.Text<>'')and(edt2.Text<>'')and(edt3.Text<>'')and(edt4.Text<>'') then
begin
try
ibqry2.SQL.Clear;
ibqry2.SQL.Add('update "Zhournal_rabochego_vremeni" set "chislo_rabochih_dney"=:chr,"chislo_otrabotannyh_dney"=:cho where "kod_sotrudnika"=:ks and "year"=:y and "mounth"=:m');
ibqry2.ParamByName('ks').Value:=dblkcbbkod_sotrudnika.KeyValue;
ibqry2.ParamByName('y').AsInteger:=StrToInt(edt1.Text);
ibqry2.ParamByName('m').AsInteger:=StrToInt(edt2.Text);
ibqry2.ParamByName('chr').AsInteger:=StrToInt(edt3.Text);
ibqry2.ParamByName('cho').AsInteger:=StrToInt(edt4.Text);
ibqry2.ExecSQL;
Finally
End;
ibqry2.SQL.Clear;
ibqry2.SQL.Add('select z.* from "Zhournal_rabochego_vremeni" z where z."kod_sotrudnika"=:p');
ibqry2.ParamByName('p').Value:=dblkcbbkod_sotrudnika.KeyValue;
ibqry2.Open;
edt1.Text:='';
edt2.Text:='';
edt3.Text:='';
edt4.Text:='';
end;
end;
procedure TForm3.dblkcbbkod_podrazdClick(Sender: TObject);
begin
ibqry3.SQL.Clear;
ibqry3.SQL.Add('select s.*,p.* from "Sotrudnik" s,"Podrazdelenie" p where s."kod_podrazd"=p."kod" and s."kod_podrazd"=:p');
ibqry3.ParamByName('p').Value:=dblkcbbkod_podrazd.KeyValue;
ibqry3.Open;
edt5.Text:='';
edt6.Text:='';
edt7.Text:='';
edt8.Text:='';
edt9.Text:='';
cbb1.ItemIndex:=-1;
cbb2.ItemIndex:=-1;
kodpodr:=0;
end;
procedure TForm3.dbgrd3CellClick(Column: TColumn);
begin
if ibqry3.FieldCount>0 then
begin
edt5.Text:=ibqry3.FieldByName('family').AsString;
edt6.Text:=ibqry3.FieldByName('name').AsString;
edt7.Text:=ibqry3.FieldByName('otchestvo').AsString;
edt8.Text:=ibqry3.FieldByName('date_rozhdeniya').AsString;
edt9.Text:=ibqry3.FieldByName('adres').AsString;
cbb1.ItemIndex:=ibqry3.FieldByName('chlen_profsoyuza').AsInteger;
if ibqry3.FieldByName('pol').AsString='м' then
cbb2.ItemIndex:=0
else
cbb2.ItemIndex:=1;
kodpodr:=ibqry3.FieldByName('kod').Asinteger;
end;
end;
procedure TForm3.btn7Click(Sender: TObject);
begin
if (dblkcbbkod_podrazd.KeyValue<>null)and(edt5.Text<>'')and(edt6.Text<>'')and(edt7.Text<>'')and(edt8.Text<>'')and(edt9.Text<>'')and(cbb1.ItemIndex<>-1)and(cbb2.ItemIndex<>-1) then
begin
try
ibqry3.SQL.Clear;
ibqry3.SQL.Add('insert into "Sotrudnik"("kod","family","name","otchestvo","kod_podrazd","chlen_profsoyuza","pol","date_rozhdeniya","adres") values(GEN_ID("GEN_Sotrudnik",1),:f,:n,:o,:kp,:cp,:p,:dr,:a)');
ibqry3.ParamByName('f').AsString:=edt5.Text;
ibqry3.ParamByName('n').AsString:=edt6.Text;
ibqry3.ParamByName('o').AsString:=edt7.Text;
ibqry3.ParamByName('dr').AsString:=edt8.Text;
ibqry3.ParamByName('a').AsString:=edt9.Text;
ibqry3.ParamByName('kp').Value:=dblkcbbkod_podrazd.KeyValue;
if cbb1.ItemIndex=0 then
ibqry3.ParamByName('p').AsString:='м'
else
ibqry3.ParamByName('p').AsString:='ж';
ibqry3.ParamByName('cp').AsInteger:=cbb1.ItemIndex;
ibqry3.ExecSQL;
Finally
End;
ibqry3.SQL.Clear;
ibqry3.SQL.Add('select s.*,p.* from "Sotrudnik" s,"Podrazdelenie" p where s."kod_podrazd"=p."kod" and s."kod_podrazd"=:p');
ibqry3.ParamByName('p').Value:=dblkcbbkod_podrazd.KeyValue;
ibqry3.Open;
edt5.Text:='';
edt6.Text:='';
edt7.Text:='';
edt8.Text:='';
edt9.Text:='';
cbb1.ItemIndex:=-1;
cbb2.ItemIndex:=-1;
kodpodr:=0;
end;
end;
procedure TForm3.btn8Click(Sender: TObject);
begin
if (kodpodr<>0)and(dblkcbbkod_podrazd.KeyValue<>null)and(edt5.Text<>'')and(edt6.Text<>'')and(edt7.Text<>'')and(edt8.Text<>'')and(edt9.Text<>'')and(cbb1.ItemIndex<>-1)and(cbb2.ItemIndex<>-1) then
begin
try
ibqry3.SQL.Clear;
ibqry3.SQL.Add('update "Sotrudnik" set "family"=:f,"name"=:n,"otchestvo"=:o,"kod_podrazd"=:kp,"chlen_profsoyuza"=:cp,"pol"=:p,"date_rozhdeniya"=:dr,"adres"=:a where "kod"=:k');
ibqry3.ParamByName('f').AsString:=edt5.Text;
ibqry3.ParamByName('n').AsString:=edt6.Text;
ibqry3.ParamByName('o').AsString:=edt7.Text;
ibqry3.ParamByName('dr').AsString:=edt8.Text;
ibqry3.ParamByName('a').AsString:=edt9.Text;
ibqry3.ParamByName('kp').Value:=dblkcbbkod_podrazd.KeyValue;
if cbb1.ItemIndex=0 then
ibqry3.ParamByName('p').AsString:='м'
else
ibqry3.ParamByName('p').AsString:='ж';
ibqry3.ParamByName('cp').AsInteger:=cbb1.ItemIndex;
ibqry3.ParamByName('k').AsInteger:=kodpodr;
ibqry3.ExecSQL;
Finally
End;
ibqry3.SQL.Clear;
ibqry3.SQL.Add('select s.*,p.* from "Sotrudnik" s,"Podrazdelenie" p where s."kod_podrazd"=p."kod" and s."kod_podrazd"=:p');
ibqry3.ParamByName('p').Value:=dblkcbbkod_podrazd.KeyValue;
ibqry3.Open;
edt5.Text:='';
edt6.Text:='';
edt7.Text:='';
edt8.Text:='';
edt9.Text:='';
cbb1.ItemIndex:=-1;
cbb2.ItemIndex:=-1;
kodpodr:=0;
end;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
kodpodr:=0;
end;
procedure TForm3.btn6Click(Sender: TObject);
begin
if (dblkcbbkod_sotrudnika.KeyValue<>null)and(edt1.Text<>'')and(edt2.Text<>'') then
begin
try
ibqry2.Close;
ibqry2.SQL.Clear;
ibqry2.SQL.Add('delete from "Zhournal_rabochego_vremeni" where "kod_sotrudnika"=:p and "year"=:y and "mounth"=:m');
ibqry2.ParamByName('p').Value:=dblkcbbkod_sotrudnika.KeyValue;
ibqry2.ParamByName('y').AsInteger:=StrToInt(edt1.Text);
ibqry2.ParamByName('m').AsInteger:=StrToInt(edt2.Text);
ibqry2.ExecSQL;
Finally
End;
ibqry2.SQL.Clear;
ibqry2.SQL.Add('select z.* from "Zhournal_rabochego_vremeni" z where z."kod_sotrudnika"=:p');
ibqry2.ParamByName('p').Value:=dblkcbbkod_sotrudnika.KeyValue;
ibqry2.Open;
edt1.Text:='';
edt2.Text:='';
edt3.Text:='';
edt4.Text:='';
end;
end;
procedure TForm3.btn9Click(Sender: TObject);
begin
if (kodpodr<>0) then
begin
try
ibqry3.Close;
ibqry3.SQL.Clear;
ibqry3.SQL.Add('delete from "Sotrudnik" where "kod"=:k');
ibqry3.ParamByName('k').AsInteger:=kodpodr;
ibqry3.ExecSQL;
Finally
End;
ibqry3.SQL.Clear;
ibqry3.SQL.Add('select s.*,p.* from "Sotrudnik" s,"Podrazdelenie" p where s."kod_podrazd"=p."kod" and s."kod_podrazd"=:p');
ibqry3.ParamByName('p').Value:=dblkcbbkod_podrazd.KeyValue;
ibqry3.Open;
edt5.Text:='';
edt6.Text:='';
edt7.Text:='';
edt8.Text:='';
edt9.Text:='';
cbb1.ItemIndex:=-1;
cbb2.ItemIndex:=-1;
kodpodr:=0;
end;
end;
procedure TForm3.btn10Click(Sender: TObject);
begin
edt14.Text:=FloatToStr(StrToInt(edt12.Text)*0.01);
edt13.Text:=FloatToStr(StrToInt(edt12.Text)*0.13);
edt11.Text:=FloatToStr(StrToInt(edt12.Text)*0.15);
if chp=0 then
begin
edt15.Text:=FloatToStr(StrToInt(edt12.Text)*0.01);
edt16.Text:=FloatToStr(StrToInt(edt12.Text)*1.01);
end
else
begin
edt15.Text:='0';
edt16.Text:=edt12.Text;
end;
end;
procedure TForm3.dblkcbbkod_sotrudnika1Click(Sender: TObject);
begin
ibqry4.SQL.Clear;
ibqry4.SQL.Add('select "chlen_profsoyuza" from "Sotrudnik" where "kod"=:p');
ibqry4.ParamByName('p').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.Open;
chp:=ibqry4.fieldbyname('chlen_profsoyuza').AsInteger;
ibqry4.SQL.Clear;
ibqry4.SQL.Add('select * from "Rachet_zarplaty" where "kod_sotrudnika"=:k');
ibqry4.ParamByName('k').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.Open;
dtp2.Date:=StrToDate('1.1.1900');
edt12.Text:='';
edt14.Text:='';
edt13.Text:='';
edt11.Text:='';
edt15.Text:='';
edt16.Text:='';
end;
procedure TForm3.dbgrd2CellClick(Column: TColumn);
begin
if ibqry4.FieldCount>0 then
begin
dtp2.Date:=ibqry4.FieldByName('date').AsDateTime;
edt12.Text:=ibqry4.FieldByName('nachisleno').AsString;
edt14.Text:=ibqry4.FieldByName('pensionnyi fond').AsString;
edt13.Text:=ibqry4.FieldByName('podohodnyi nalog').AsString;
edt11.Text:=ibqry4.FieldByName('uralskiy_koefficient').AsString;
edt15.Text:=ibqry4.FieldByName('profsoyuznyi vznos').AsString;
edt16.Text:=ibqry4.FieldByName('vyplata').AsString;
end;
end;
procedure TForm3.btn11Click(Sender: TObject);
begin
if (dblkcbbkod_sotrudnika1.KeyValue<>null)and(edt11.Text<>'')and(edt12.Text<>'')and(edt13.Text<>'')and(edt14.Text<>'')and(edt15.Text<>'')and(edt16.Text<>'') then
begin
try
ibqry4.SQL.Clear;
ibqry4.SQL.Add('insert into "Rachet_zarplaty"("date","kod_sotrudnika","uralskiy_koefficient","nachisleno","podohodnyi nalog","pensionnyi fond","profsoyuznyi vznos","vyplata") values(:dat,:ks,:uk,:n,:pn,:pf,:pv,:v)');
ibqry4.ParamByName('dat').asdate:=dtp2.Date;
ibqry4.ParamByName('ks').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.ParamByName('uk').AsFloat:=StrToFloat(edt11.text);
ibqry4.ParamByName('n').AsFloat:=StrToFloat(edt12.text);
ibqry4.ParamByName('pn').AsFloat:=StrToFloat(edt13.text);
ibqry4.ParamByName('pf').AsFloat:=StrToFloat(edt14.text);
ibqry4.ParamByName('pv').AsFloat:=StrToFloat(edt15.text);
ibqry4.ParamByName('v').AsFloat:=StrToFloat(edt16.text);
ibqry4.ExecSQL;
Finally
End;
ibqry4.SQL.Clear;
ibqry4.SQL.Add('select * from "Rachet_zarplaty" where "kod_sotrudnika"=:k');
ibqry4.ParamByName('k').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.Open;
dtp2.Date:=StrToDate('1.1.1900');
edt12.Text:='';
edt14.Text:='';
edt13.Text:='';
edt11.Text:='';
edt15.Text:='';
edt16.Text:='';
end;
end;
procedure TForm3.btn12Click(Sender: TObject);
begin
if (dblkcbbkod_sotrudnika1.KeyValue<>null)and(edt11.Text<>'')and(edt12.Text<>'')and(edt13.Text<>'')and(edt14.Text<>'')and(edt15.Text<>'')and(edt16.Text<>'') then
begin
try
ibqry4.SQL.Clear;
ibqry4.SQL.Add('update "Rachet_zarplaty" set "uralskiy_koefficient"=:uk,"nachisleno"=:n,"podohodnyi nalog"=:pn,"pensionnyi fond"=:pf,"profsoyuznyi vznos"=:pv,"vyplata"=:v where "date"=:dat and "kod_sotrudnika"=:ks');
ibqry4.ParamByName('dat').asdate:=dtp2.Date;
ibqry4.ParamByName('ks').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.ParamByName('uk').AsFloat:=StrToFloat(edt11.text);
ibqry4.ParamByName('n').AsFloat:=StrToFloat(edt12.text);
ibqry4.ParamByName('pn').AsFloat:=StrToFloat(edt13.text);
ibqry4.ParamByName('pf').AsFloat:=StrToFloat(edt14.text);
ibqry4.ParamByName('pv').AsFloat:=StrToFloat(edt15.text);
ibqry4.ParamByName('v').AsFloat:=StrToFloat(edt16.text);
ibqry4.ExecSQL;
Finally
End;
ibqry4.SQL.Clear;
ibqry4.SQL.Add('select * from "Rachet_zarplaty" where "kod_sotrudnika"=:k');
ibqry4.ParamByName('k').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.Open;
dtp2.Date:=StrToDate('1.1.1900');
edt12.Text:='';
edt14.Text:='';
edt13.Text:='';
edt11.Text:='';
edt15.Text:='';
edt16.Text:='';
end;
end;
procedure TForm3.btn13Click(Sender: TObject);
begin
if (ibqry4.FieldCount>0)and(dblkcbbkod_sotrudnika1.KeyValue<>null) then
begin
try
ibqry4.Close;
ibqry4.SQL.Clear;
ibqry4.SQL.Add('delete from "Rachet_zarplaty" where "date"=:dat and "kod_sotrudnika"=:ks');
ibqry4.ParamByName('dat').AsDate:=dtp2.Date;
ibqry4.ParamByName('ks').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.ExecSQL;
Finally
End;
ibqry4.SQL.Clear;
ibqry4.SQL.Add('select * from "Rachet_zarplaty" where "kod_sotrudnika"=:k');
ibqry4.ParamByName('k').Value:=dblkcbbkod_sotrudnika1.KeyValue;
ibqry4.Open;
dtp2.Date:=StrToDate('1.1.1900');
edt12.Text:='';
edt14.Text:='';
edt13.Text:='';
edt11.Text:='';
edt15.Text:='';
edt16.Text:='';
end;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm4 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
end.
Приложение Б
(справочное)
Экранные формы
Рисунок Б.1 – Основная форма приложения
Рисунок Б.2 – Вкладка «Справочники» основной формы
Рисунок Б.3 – Вкладка «Сотрудник-должность» основной формы
Рисунок Б.4 – Реализация запроса. Определить количество работников на заданный месяц
Скачать: