Описание базы данных
Прежде чем приступать к разработке программы, необходимо спроектировать базу данных, в которой будут находиться наши данные. БД, переведенная в формат MS Access, называется EducationCenter. В учебном центре обучаются клиенты (слушатели) на разных направлениях (администрирование, программирование, графика, офисные курсы и т. д.), и у каждого направления есть свои курсы. Офис-менеджер регистрирует клиентов в базе данных и добавляет их в группы. Группы могут иметь статус набираемых, обучаемых и закончивших обучение. Итоговые суммы доходов и расходов помещаются в отдельную таблицу. База данных также содержит информацию о сотрудниках.
База данных EducationCenter находится в каталоге (Code\Glava11\ EducationCenter).
В таблицах 11.1–11.14 приводится описание таблиц в БД и структура каждой таблицы.
Таблица
11.1.
Описание таблиц
№ |
Таблица |
Описание |
1 |
Clients |
Данные клиентов |
2 |
Course |
Описание курсов в учебном центре |
3 |
Data |
Таблица итоговых сумм (прихода и расхода) за день |
4 |
Directions |
Описание направлений курсов |
5 |
Employees |
Данные о сотрудниках учебного центра |
6 |
Expenses |
Денежные расходы |
7 |
Group_clients |
Промежуточная таблица для групп и клиентов |
8 |
Groups |
Данные о группах |
9 |
GroupStatus |
Состояния групп |
10 |
Income
|
Денежные приходы |
11 |
Payment_type |
Виды оплат |
12 |
PlanRealization |
Разницы между суммой прихода и реализованной суммой |
13 |
RealizedTable |
Реализованные деньги клиентов |
Структура таблиц
Таблица
11.2.
Clients
Поле |
Тип данных |
Описание |
ClientID |
Счетчик |
Номер клиента |
Fname |
Текстовый |
Имя |
Lname |
Текстовый |
Фамилия |
FathName |
Текстовый |
Отчество |
LinkData |
Текстовый |
Контактные данные |
Recorddate |
Дата/Время |
Дата записи |
Note |
Текстовый |
Заметки |
PaymentType |
Текстовый |
Вид оплаты |
IsRinged |
Логический |
Был ли оповещен клиент по телефону |
Таблица
11.3.
Course
Поле |
Тип данных |
Описание |
CourseID |
Счетчик |
Номер курса |
CourseName |
Текстовый |
Название курса |
PriceText |
Текстовый |
Цена в виде текста |
DirectionID |
Числовой |
Номер направления |
PriceNumber |
Числовой |
Цена курса |
Note |
Текстовый |
Заметки по курсу |
Таблица
11.4.
Data
Поле |
Тип данных |
Описание |
DataID |
Счетчик |
Номер |
CurrentDate |
Дата/Время |
Текущая дата |
amountYesterday |
Денежный |
Всего вчера |
AmountToday |
Денежный |
Всего сегодня |
IncomeToday |
Денежный |
Приход на сегодня |
expanseToday |
Денежный |
Расход на сегодня |
Note |
Текстовый |
Заметки |
Таблица
11.5.
Directions
Поле |
Тип данных |
Описание |
DirectionID |
Счетчик |
Номер направления |
DirectName |
Текстовый |
Наименование направления |
Note |
Текстовый |
Заметки |
Таблица
11.6.
Employees
Поле |
Тип данных |
Описание |
EmployeeID |
Счетчик |
Номер сотрудника |
LastName |
Текстовый |
Фамилия |
FirstName |
Текстовый |
Имя |
FatherName |
Текстовый |
Отчество |
LinkData |
Текстовый |
Контактные данные |
BirthDay |
Дата/Время |
Дата рождения |
DirectionID |
Числовой |
Номер направления |
Address |
Текстовый |
Адрес |
Notes |
Текстовый |
Заметки |
Таблица
11.7.
Expenses
Поле |
Тип данных |
Описание |
ExpenseID |
Счетчик |
Номер расхода |
DataID |
Числовой |
Номер даты |
Note |
Текстовый |
Заметки |
Summa |
Денежный |
Сумма прихода |
ClientID |
Числовой |
Номер клиента |
EmployeeID |
Числовой |
Номер сотрудника |
payment_typeID |
Числовой |
Номер вида оплаты |
Таблица
11.8.
Group_clients
Поле |
Тип данных |
Описание |
GroupClientID |
Счетчик |
Номер |
GroupID
|
Числовой |
Номер группы |
ClientID |
Числовой |
Номер клиента |
IsPaid |
Логический |
Оплатил |
Notes |
Текстовый |
Заметки |
Таблица
11.9.
Groups
Поле |
Тип данных |
Описание |
GroupID
|
Счетчик |
Номер группы |
BeginDate |
Дата/время |
Дата начала обучения |
EndDate |
Дата/время |
Дата конца обучения |
BeginTime |
Дата/время |
Время начала обучения |
EndTime |
Дата/время |
Время конца обучения |
ClientsCount |
Числовой |
Кол-во клиентов в группе |
ClassNumber |
Числовой |
Номер класса |
CourseID |
Числовой |
Номер курса |
EmployeeID |
Числовой |
Номер преподователя в группе |
Note |
Текстовый |
Заметки |
StatusID |
Числовой |
Номер статуса группы |
Таблица
11.10.
GroupStatus
Поле |
Тип данных |
Описание |
StatusID |
Счетчик |
Номер статуса |
StatusName |
Текстовый |
Наименование |
Таблица
11.11.
Income
Поле |
Тип данных |
Описание |
IncomeID |
Счетчик |
Номер прихода |
IsRealized |
Логический |
Сумма реализована |
DataID |
Числовой |
Номер даты |
Summa |
Денежный |
Сумма прихода |
payment_typeID |
Числовой |
Номер вида оплаты |
Note |
Текстовый |
Заметки |
ClientID |
Числовой |
Номер клиента |
Таблица
11.12.
Payment_type
Поле |
Тип данных |
Описание |
payment_typeID |
Счетчик |
Номер вида оплаты |
payment_typeName |
Текстовый |
Вид оплаты |
Note |
Текстовый |
Заметки |
Таблица
11.13.
PlanRealization
Поле |
Тип данных |
Описание |
ID |
Счетчик |
Номер записи |
IncomeID |
Числовой |
Номер прихода |
SummaPlan |
Денежный |
Запланнированная сумма |
SummaRealization
|
Денежный |
Реализованная сумма |
IsRealized |
Логический |
Реализовано |
DateRealization |
Дата/время |
Дата реализации |
Cause |
Текстовый |
Причина реализации |
Таблица
11.14.
RealizedTable
Поле |
Тип данных |
Описание |
ID |
Счетчик |
Номер записи |
RealizedSumm |
Денежный |
Сумма реализации |
RealizingDate |
Дата/время |
Дата реализации |
Note |
Текстовый |
Заметки |
ClientID |
Числовой |
Номер клиента |
Схема связи таблиц в БД
Схема связей таблиц приводится на рис. 11.25. Лучше всего открыть файл базы данных и изучить связи в окне схемы баз данных MS Access.
Разработка приложения
Перейдем теперь непосредственно к приложению. В таблицах 11.15 и 11.16 приводится описание классов, используемых во всем приложении.
Таблица
11.15.
Список классов, управляющих формами
Имя класса |
Описание класса |
frmManager |
Управляет главной формой |
frmAuthorization |
Форма авторизации |
frmDirection |
Форма направления |
frmCourse |
Форма курса |
frmGroup |
Форма группы |
frmClient |
Форма клиента |
frmSearchClient |
Форма поиска клиента |
frmEmployee |
Форма сотрудников |
frmPaymentType |
Форма оплат |
Таблица
11.16.
Список дополнительных классов
Имя класса |
Описание класса |
ManagerTreeNode |
Абстрактный класс узла дерева в проводнике |
ClientTreeNode |
Класс клиента в проводнике |
GroupTreeNode |
Класс группы в проводнике |
CourseTreeNode |
Класс курса в проводнике |
DirectionTreeNode |
Класс направления в проводнике |
CustomListItem |
Класс, представляющий item в ListView проводника |