- •"Создание и обработка Баз данных средствами субд Access"
- •Оглавление:
- •Детализированное задание на курсовой проект:
- •Вариант исходных данных в соответствии с заданием на курсовой проект:
- •1. Распечатка исходных таблиц.
- •2. Формирование и выдача справок :
- •3. Создание документа : Сведения
- •Введение
- •Структура разработанной базы данных (состав таблиц исходных данных)
- •Макеты представления разработанных справок и документов:
- •Распечатку разработанных форм проекта с указанием свойств управляющих элементов:
- •Алгоритм вывода записей из таблицы Child.
- •Процедуры (программные коды) решения задач:
- •Результаты выполнения программ (программных кодов) в соответствии с исходными данными:
- •Заключение.
- •Список литературы
Структура разработанной базы данных (состав таблиц исходных данных)
Рис.1. Создание таблицы «Child»
Рис.2. Создание таблицы «Parent»
Макеты представления разработанных справок и документов:
Справка
№1. Список учеников 10-11 классов со
слабым физическим развитием
Фамилия Пол
Класс
Средняя оценка
Физическое
развитие
|
.
Фамилия
ученика
Фамилия
одного из
Родителей Должность
Заработная
плата
плата
Количество
детей
Семейный
бюджет
Справка №2. Список учеников и родителей многодетных семей (3 и более детей).
|
Справка 3. Список учеников 9-х классов из многодетных семей (3 и более детей), имеющих средний балл, больший 4,2. Список упорядочить по убыванию количества детей и баллов.
|
Распечатку разработанных форм проекта с указанием свойств управляющих элементов:
Интерфейс программы состоит из:
Меню (рис.3. Создание Меню пользователя)
Рис.3.
Таблицы (Рис.4), где:
А – Объект Adodc (Microsoft ADO Data Control 6.0), предназначенный для соединения с БД и с таблицей Access.
В – Объекты MS FlexGrid.
А В
Рис.4.
Алгоритм вывода записей из таблицы Child.
Процедуры (программные коды) решения задач:
'Загрузка формы и соединение с базой
Private Sub Form_Load()
dbChild.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Spisok.mdb;Persist Security Info=False"
dbParent.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Spisok.mdb;Persist Security Info=False"
End Sub
' Вывод данных по ученикам
Private Sub Mchild_Click()
Dim I%, J%, K%, M% 'переменные для организации цикла
dbChild.Caption = "Ученики"
dbChild.RecordSource = "SELECT *FROM Child" 'SQL-запрос к таблице
dbChild.Refresh 'выполнить запрос
dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child
K = dbChild.Recordset.RecordCount 'количество записей таблицы Child
M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child
ChildGrid.Rows = K + 1: ChildGrid.Cols = M
ChildGrid.TextMatrix(0, 0) = "ID"
ChildGrid.TextMatrix(0, 1) = "Фамилия"
ChildGrid.TextMatrix(0, 2) = "Пол"
ChildGrid.TextMatrix(0, 3) = "Класс"
ChildGrid.TextMatrix(0, 4) = "Средняя оценка"
ChildGrid.TextMatrix(0, 5) = "Физическое развитие"
For I = 1 To K 'по записям таблицы Child
For J = 1 To M 'по полям текущей записи
ChildGrid.TextMatrix(I, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки
Next J
dbChild.Recordset.MoveNext 'переход к следующей записи
Next I
End Sub
' Итоговый документ об учениках 10 классов
Private Sub MDoc_Click(Index As Integer)
Dim I%, J%, K%, M%, N%
Dim Sumpay As Currency ' душевой доход
dbChild.Caption = "Итоговый документ об учениках 10 классов"
'SQL-запрос к таблице Child
dbChild.RecordSource = "SELECT ID, fio_child, sex, class, mid_ocenka, fiz_dev FROM Child "
dbChild.Refresh
dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child sum_pay
K = dbChild.Recordset.RecordCount 'количество записей таблицы Child
M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child
'SQL-запрос к таблице Parent
dbParent.RecordSource = "SELECT id, fio_child, child_count, sum_pay FROM Parent "
dbParent.Refresh
dbParent.Recordset.MoveFirst 'переход на первую запись таблицы dbParent
ChildGrid.Rows = 2: ChildGrid.Cols = 2
ChildGrid.Rows = K + 1: ChildGrid.Cols = M + 1
ChildGrid.TextMatrix(0, 0) = "ID"
ChildGrid.TextMatrix(0, 1) = "Фамилия"
ChildGrid.TextMatrix(0, 2) = "Пол"
ChildGrid.TextMatrix(0, 3) = "Класс"
ChildGrid.TextMatrix(0, 4) = "Средняя оценка"
ChildGrid.TextMatrix(0, 5) = "Физ. развитие"
ChildGrid.TextMatrix(0, 6) = "Душевой доход"
M = 1 ' счетчик показываемых записей
For I = 1 To K 'по записям таблицы Child
If dbChild.Recordset.Fields(3).Value = 10 Then
'Поиск записи в таблице Parent
dbParent.Recordset.MoveFirst
For N = 1 To dbParent.Recordset.RecordCount
If dbChild.Recordset.Fields(1).Value = dbParent.Recordset.Fields(1).Value Then
Sumpay = dbParent.Recordset.Fields(3).Value / (dbParent.Recordset.Fields(2).Value + 2)
End If
dbParent.Recordset.MoveNext
Next N
For J = 1 To 6 'по полям текущей записи
ChildGrid.TextMatrix(M, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки
Next J
ChildGrid.TextMatrix(M, 6) = Str(Sumpay)
M = M + 1
End If
dbChild.Recordset.MoveNext 'переход к следующей записи
Next I
End Sub
'Процедура входа из программы
Private Sub MExit_Click()
End
End Sub
'Вывод данных по родителям
Private Sub Mparent_Click()
Dim I%, J%, K%, M%
dbParent.Caption = "Семья"
dbParent.RecordSource = "SELECT *FROM parent" 'SQL-запрос к таблице
dbParent.Refresh
dbParent.Recordset.MoveFirst 'переход на первую запись таблицы Parent
K = dbParent.Recordset.RecordCount 'количество записей таблицы Parent
M = dbParent.Recordset.Fields.Count 'количество полей таблицы Parent
ParentGrid.Rows = K + 1: ParentGrid.Cols = M
ParentGrid.TextMatrix(0, 0) = "ID"
ParentGrid.TextMatrix(0, 1) = "ФИО ученика"
ParentGrid.TextMatrix(0, 2) = "ФИО родителя"
ParentGrid.TextMatrix(0, 3) = "Должность"
ParentGrid.TextMatrix(0, 4) = "Зарплата"
ParentGrid.TextMatrix(0, 5) = "Кол. детей"
ParentGrid.TextMatrix(0, 6) = "Сем. бюджет"
For I = 1 To K 'по записям таблицы Parent
For J = 1 To M 'по полям текущей записи
ParentGrid.TextMatrix(I, J - 1) = dbParent.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки
Next J
dbParent.Recordset.MoveNext 'переход к следующей записи
Next I
End Sub
'Справка 2 Список многодетных семей
Private Sub MSp2_Click()
Dim I%, J%, K%, M%
dbParent.Caption = "Многодетные семьи"
'SQL-запрос к таблице
dbParent.RecordSource = "SELECT ID, fio_child, fio_parent, child_count FROM parent where " & _
"child_count>=3 ORDER BY fio_child"
dbParent.Refresh
dbParent.Recordset.MoveFirst 'переход на первую запись таблицы Parent
K = dbParent.Recordset.RecordCount 'количество записей таблицы Parent
M = dbParent.Recordset.Fields.Count 'количество полей таблицы Parent
ParentGrid.Rows = K + 1: ParentGrid.Cols = M
ParentGrid.TextMatrix(0, 0) = "ID"
ParentGrid.TextMatrix(0, 1) = "ФИО ученика"
ParentGrid.TextMatrix(0, 2) = "ФИО родителя"
ParentGrid.TextMatrix(0, 3) = "Кол. детей"
For I = 1 To K 'по записям таблицы Parent
For J = 1 To M 'по полям текущей записи
ParentGrid.TextMatrix(I, J - 1) = dbParent.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки
Next J
dbParent.Recordset.MoveNext 'переход к следующей записи
Next I
End Sub
'Справка 3 Список учеников 9-х классов из многодетных семей
Private Sub MSp3_Click()
Dim I%, J%, K%, M%, N%, L%
dbChild.Caption = "Cписок учеников 9-х классов из многодетных семей"
ChildGrid.Rows = 2: ChildGrid.Cols = 2
'SQL-запрос к таблице
dbChild.RecordSource = "SELECT ID, fio_child, class, mid_ocenka " & _
" FROM Child " & _
" WHERE " & _
" mid_ocenka > 4.2 " & _
" AND class =9 ORDER BY mid_ocenka DESC"
dbChild.Refresh
dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child
K = dbChild.Recordset.RecordCount 'количество записей таблицы Child
M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child
'SQL-запрос к таблице
dbParent.RecordSource = " SELECT id, fio_child, child_count " & _
" FROM Parent " & _
" WHERE " & _
" child_count >=3 " & _
" ORDER BY child_count DESC"
dbParent.Refresh
dbParent.Recordset.MoveFirst 'переход на первую запись таблицы Child
ChildGrid.Rows = K + 1: ChildGrid.Cols = M + 1
ChildGrid.TextMatrix(0, 0) = "ID"
ChildGrid.TextMatrix(0, 1) = "Фамилия"
ChildGrid.TextMatrix(0, 2) = "Класс"
ChildGrid.TextMatrix(0, 3) = "Средняя оценка"
ChildGrid.TextMatrix(0, 4) = "Кол. в семье детей"
L = 1
For I = 1 To K 'по записям таблицы Child
'Поиск записи в таблице Parent
dbParent.Recordset.MoveFirst
For N = 1 To dbParent.Recordset.RecordCount
If (dbChild.Recordset.Fields(1).Value = dbParent.Recordset.Fields(1).Value) Then
For J = 1 To M 'по полям текущей записи
ChildGrid.TextMatrix(L, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки
Next J
ChildGrid.TextMatrix(L, 4) = Str(dbParent.Recordset.Fields(2).Value)
L = L + 1
End If
dbParent.Recordset.MoveNext
Next N
dbChild.Recordset.MoveNext 'переход к следующей записи
Next I
End Sub
'Справка1 Запрос по ученикам со слабым физ. развитием
Private Sub Mspr1_Click()
Dim I%, J%, K%, M%
dbChild.Caption = "Ученики со слабым здоровьем"
'SQL-запрос к таблице
dbChild.RecordSource = "SELECT *FROM Child WHERE fiz_dev = '" & _
"удовлетворительное' and class >=10 ORDER BY class, fio_child"
dbChild.Refresh
dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child
K = dbChild.Recordset.RecordCount 'количество записей таблицы Child
M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child
ChildGrid.Rows = K + 1: ChildGrid.Cols = M
ChildGrid.TextMatrix(0, 0) = "ID"
ChildGrid.TextMatrix(0, 1) = "Фамилия"
ChildGrid.TextMatrix(0, 2) = "Пол"
ChildGrid.TextMatrix(0, 3) = "Класс"
ChildGrid.TextMatrix(0, 4) = "Средняя оценка"
ChildGrid.TextMatrix(0, 5) = "Физическое развитие"
For I = 1 To K 'по записям таблицы Child
For J = 1 To M 'по полям текущей записи
ChildGrid.TextMatrix(I, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки
Next J
dbChild.Recordset.MoveNext 'переход к следующей записи
Next I
End Sub