Автор работы: Пользователь скрыл имя, 18 Марта 2013 в 15:38, курсовая работа
В данной работе изложены 6 заданий.
Название работы: Задание 1.
Тема задания: “Разветвляющиеся вычислительные процессы”.
Цель задания: Освоение методов программирования решения задач, требующих выполнения разных участков алгоритма в зависимости от истинности или ложности некоторого условия. Ознакомление с логическим типом данных, операциями отношений, логическими функциями и формами условного оператора и оператора выбора.
Добавляем к проекту с помощью пункта “Проект” главного меню стандартный модуль. Его имя нужно установить отличающимся от имени модуля, созданного при выполнении Задания 5. В созданный модуль записываем процедуру, обеспечивающую подключение созданной БД к нашему проекту:
Public Sub Connect(db$, tb$, cn As Object, rs As Object)
cn.ConnectionString = "Driver=Microsoft Access Driver (*.mdb)"
cn.Open ("Provider=Microsoft.Jet.
CurDir & "\" & db & ".mdb")
rs.ActiveConnection = cn
rs.CursorType = adOpenDynamic
rs.LockType = adLockPessimistic
rs.Open tb
End Sub
Эту процедуру можно рассматривать в качестве стандартной и ничего в ней изменять не следует.
Теперь выполняем команду: “Проект \ Информация …”, в открывшемся окне находим строку “ Microsoft ActiveX Data Objects 2.0 Library” и щелкаем на значке квадратика в начале этой строки. Этим мы подключили к нашему проекту библиотеку, содержащую нужные нам объекты ActiveX. Для завершения операции щелкаем в окне кнопку Ok.
В разделе General формы объявляем общедоступные переменные:
Public cn As New ADODB.Connection, rs As New ADODB.Recordset
Public st$, kolzap%
Переходим к программированию пунктов созданного нами пользовательского меню. Каждый из этих пунктов аналогичен командной кнопке. Поэтому для каждого из них можно создать процедуру обработки его события Click. Для задачи образца Задания № 6 эти процедуры будут следующими:
Процедуры рабочей формы:
Процедура вывода на экран таблицы “Сессия”:
Private Sub mnuSessia_Click()
Dim i%, cn1 As New ADODB.Connection, rs1 As New ADODB.Recordset
Label1.Visible = False: Text1.Visible = False
' Подключаем объекты ADO к БД
Call Connect("Institut", "Сессия", cn1, rs1)
' Определяем количество записей в таблице "Сессия"
kolzap = 0
Do While Not rs1.EOF
rs1.MoveNext
kolzap = kolzap + 1
Loop
' Задаем параметры элемента MSFlexGrid
flg.Cols = rs1.Fields.Count: flg.Rows = kolzap + 1
For i = 0 To rs1.Fields.Count - 1
flg.ColWidth(i) = flg.Width / (rs1.Fields.Count + 1)
Next i
' Задаем заголовки столбцов
flg.FormatString = "^ № п/п |^ Шифр |^ Курс |^ Группа " & _
"|< ФИО |^ Оц 1 |^ Оц 2 |^ Оц 3 |^ Оц 4 "
' Заносим в MSFlexGrid данные из таблицы "Сессия"
rs1.MoveFirst
For i = 1 To kolzap
flg.TextMatrix(i, 0) = i
flg.TextMatrix(i, 1) = rs1.Fields(0)
flg.TextMatrix(i, 2) = rs1.Fields(1)
flg.TextMatrix(i, 3) = rs1.Fields(2)
flg.TextMatrix(i, 4) = rs1.Fields(3)
flg.TextMatrix(i, 5) = rs1.Fields(4)
flg.TextMatrix(i, 6) = rs1.Fields(5)
flg.TextMatrix(i, 7) = rs1.Fields(6)
flg.TextMatrix(i, 8) = rs1.Fields(7)
rs1.MoveNext
Next i
' Закрываем подключение ADO к БД и освобождаем
' занимаемую объектами ADO память
rs1.Close
Set rs1 = Nothing
cn1.Close
Set cn1 = Nothing
End Sub
Вид формы с выводом данных таблицы ”Сессия” БД.
Процедура вывода на экран таблицы “Специальность”:
Private Sub mnuSpecialnost_Click()
Dim i%, cn2 As New ADODB.Connection, rs2 As New ADODB.Recordset
Label1.Visible = False
Text1.Visible = False
' Подключаем объекты ADO к БД
Call Connect("Institut", "Специальность", cn2, rs2)
' Определяем количество записей в таблице "Специальность"
kolzap = 0
Do While Not rs2.EOF
rs2.MoveNext
kolzap = kolzap + 1
Loop
' Задаем параметры элемента MSFlexGrid
flg.Cols = rs2.Fields.Count: flg.Rows = kolzap + 1
For i = 0 To rs2.Fields.Count - 1
flg.ColWidth(i) = flg.Width / (rs2.Fields.Count + 1)
Next i
' Задаем заголовки столбцов
flg.FormatString = "^ № п/п |^ Шифр |< Название |^Потребность"
' Заносим в MSFlexGrid данные из таблицы "Специальность"
rs2.MoveFirst
For i = 1 To kolzap
flg.TextMatrix(i, 0) = i
flg.TextMatrix(i, 1) = rs2.Fields(0)
flg.TextMatrix(i, 2) = rs2.Fields(1)
flg.TextMatrix(i, 3) = rs2.Fields(2)
rs2.MoveNext
Next i
' Закрываем подключение ADO к БД и освобождаем
' занимаемую объектами ADO память
rs2.Close
Set rs2 = Nothing
cn2.Close
Set cn2 = Nothing
End Sub
Вид формы с выводом данных таблицы ”Специальность” БД.
Процедуры решения задачи:
Private Sub mnuSpravka1_Click()
Dim sr!(), i%, j%, k%, osr!, max%, sum
Label1.Visible = True: Text1.Visible = True
' Создаем объекты Connection и RecordSet для таблицы "Сессия"
Dim cn1 As New ADODB.Connection, rs1 As New ADODB.Recordset
' Создаем объекты Connection и RecordSet для таблицы "Специальность"
Dim cn2 As New ADODB.Connection, rs2 As New ADODB.Recordset
' Подключаем объекты ADO к БД
Call Connect("Institut", "Специальность", cn2, rs2)
' Подсчитываем кол-во записей в таблице
max = 0
kolzap = 0
Do While Not rs2.EOF
If max < rs2.Fields(2) Then max = rs2.Fields(2)
rs2.MoveNext
kolzap = kolzap + 1
Loop
ReDim sr(1 To kolzap)
' Задаем параметры элемента MSFlexGrid
flg.Clear
flg.Cols = rs2.Fields.Count: flg.Rows = kolzap + 1
For i = 0 To rs2.Fields.Count - 1
flg.ColWidth(i) = flg.Width / (rs2.Fields.Count + 1)
Next i
' Задаем заголовки столбцов
flg.FormatString = "^ № п/п |^ Шифр |< Название |^Потребность |^ Кол-во "
rs2.MoveFirst
k = 0
For i = 1 To kolzap
If max = rs2.Fields(2) Then
k = k + 1
flg.TextMatrix(k, 0) = i
flg.TextMatrix(k, 1) = rs2.Fields(0)
flg.TextMatrix(k, 2) = rs2.Fields(1)
flg.TextMatrix(k, 3) = rs2.Fields(2)
End If
rs2.MoveNext
Next i
' Подключаем объекты ADO к БД
Call Connect("Institut", "Сессия", cn1, rs1)
' Определяем количество записей в таблице "Сессия"
kolzap = 0
Do While Not rs1.EOF
If rs1.Fields(1) = 1 And rs1.Fields(0) = flg.TextMatrix(k, 1) Then
sum = sum + 1
End If
rs1.MoveNext
kolzap = kolzap + 1
Loop
flg.TextMatrix(k, 4) = sum
'
' Окончательно закрываем
'
rs1.Close
Set rs1 = Nothing
cn1.Close
Set cn1 = Nothing
rs2.Close
Set rs2 = Nothing
cn2.Close
Set cn2 = Nothing
End Sub
Вид формы с выводом ”Справка1”.
Private Sub mnuSpravka2_Click()
Dim sr!(), i%, j%, k%, osr!, max%, sum, shifr
Label1.Visible = True: Text1.Visible = True
' Создаем объекты Connection и RecordSet для таблицы "Сессия"
Dim cn1 As New ADODB.Connection, rs1 As New ADODB.Recordset
' Создаем объекты Connection и RecordSet для таблицы "Специальность"
Dim cn2 As New ADODB.Connection, rs2 As New ADODB.Recordset
' Подключаем объекты ADO к БД
Call Connect("Institut", "Специальность", cn2, rs2)
' Подсчитываем кол-во записей в таблице
sh = InputBox("Введите специальность")
Do While Not rs2.EOF
If sh = rs2.Fields(1) Then shifr = rs2.Fields(0)
rs2.MoveNext
Loop
' ReDim sr(1 To kolzap)
' Подключаем объекты ADO к БД
Call Connect("Institut", "Сессия", cn1, rs1)
' Определяем количество записей в таблице "Сессия"
kolzap = 0
Do While Not rs1.EOF
rs1.MoveNext
kolzap = kolzap + 1
Loop
' Задаем параметры элемента MSFlexGrid
flg.Clear
flg.Cols = rs1.Fields.Count: flg.Rows = kolzap + 1
For i = 0 To rs1.Fields.Count - 1
flg.ColWidth(i) = flg.Width / (rs1.Fields.Count + 1)
Next i
' Задаем заголовки столбцов элем
flg.FormatString = "^ № п/п |^ Курс |^ Группа " & _
"|< ФИО |^ Оц 1 |^ Оц 2 |^ Оц 3 |^ Оц 4 "
k = 0
rs1.MoveFirst
For i = 1 To kolzap
If rs1.Fields(0) = shifr Then
k = k + 1
flg.TextMatrix(k, 0) = k
flg.TextMatrix(k, 1) = rs1.Fields(1)
flg.TextMatrix(k, 2) = rs1.Fields(2)
flg.TextMatrix(k, 3) = rs1.Fields(3)
flg.TextMatrix(k, 4) = rs1.Fields(4)
flg.TextMatrix(k, 5) = rs1.Fields(5)
flg.TextMatrix(k, 6) = rs1.Fields(6)
flg.TextMatrix(k, 7) = rs1.Fields(7)
End If
rs1.MoveNext
Next i
' Окончательно закрываем подключение объектов ADO к БД.
rs1.Close
Set rs1 = Nothing
cn1.Close
Set cn1 = Nothing
rs2.Close
Set rs2 = Nothing
cn2.Close
Set cn2 = Nothing
End Sub
Вид формы с выводом ”Справка2”.
Private Sub mnuSpravka3_Click()
Dim sr!(), i%, j%, k%, osr!, max%, sum%, shifr, mas%()
Label1.Visible = True: Text1.Visible = True
' Создаем объекты Connection и RecordSet для таблицы "Сессия"
Dim cn1 As New ADODB.Connection, rs1 As New ADODB.Recordset
' Создаем объекты Connection и RecordSet для таблицы "Специальность"
Dim cn2 As New ADODB.Connection, rs2 As New ADODB.Recordset
' Подключаем объекты ADO к БД
Call Connect("Institut", "Специальность", cn2, rs2)
' Подсчитываем кол-во записей в таблице
kolzap = 0
Do While Not rs2.EOF
rs2.MoveNext
kolzap = kolzap + 1
Loop
ReDim mas%(1 To kolzap, 4)
' Задаем параметры элемента MSFlexGrid
flg.Clear
flg.Cols = rs2.Fields.Count: flg.Rows = kolzap + 1
For i = 0 To rs1.Fields.Count - 1
flg.ColWidth(i) = flg.Width / (rs2.Fields.Count + 1)
Next i
' Задаем заголовки столбцов элемента MSFlexGrid
flg.FormatString = "^ № п/п |^ Шифр |<Специальность|^% двоек |" & _
"^% троек |^% четверок|^% пятерок"
rs2.MoveFirst
For i = 1 To kolzap
flg.TextMatrix(i, 0) = i
flg.TextMatrix(i, 1) = rs2.Fields(0)
flg.TextMatrix(i, 2) = rs2.Fields(1)
rs2.MoveNext
Next i
' Подключаем объекты ADO к БД
Call Connect("Institut", "Сессия", cn1, rs1)
' Определяем количество записей в таблице "Сессия"
rs1.MoveFirst
Do While Not rs1.EOF
For i = 1 To kolzap
If rs1.Fields(0) = flg.TextMatrix(i, 1) Then
For j = 1 To 4
Select Case rs1.Fields(3 + j)
Case 2
mas(i, 1) = mas(i, 1) + 1
flg.TextMatrix(i, 3) = mas(i, 1)
Case 3
mas(i, 2) = mas(i, 2) + 1
flg.TextMatrix(i, 4) = mas(i, 2)
Case 4
mas(i, 3) = mas(i, 3) + 1
flg.TextMatrix(i, 5) = mas(i, 3)
Case 5
mas(i, 4) = mas(i, 4) + 1
flg.TextMatrix(i, 6) = mas(i, 4)
End Select
Next j
End If
Next i
rs1.MoveNext
Loop
'
For i = 1 To kolzap
sum = 0
For j = 1 To 4
sum = sum + mas(i, j)
Next j
For j = 1 To 4
flg.TextMatrix(i, 2 + j) = mas(i, j) / sum * 100
Next j
Next i
' Окончательно
закрываем подключение
rs1.Close
Set rs1 = Nothing
cn1.Close
Set cn1 = Nothing
rs2.Close
Set rs2 = Nothing
cn2.Close
Set cn2 = Nothing
End Sub
Вид формы с выводом ”Справка1”.
Private Sub mnuDokum_Click()
Dim i%, cn1 As New ADODB.Connection, rs1 As New ADODB.Recordset
Dim sr!, sum%
Label1.Visible = False: Text1.Visible = False
' Подключаем объекты ADO к БД
Call Connect("Institut", "Сессия", cn1, rs1)
' Определяем количество записей в таблице "Сессия"
kolzap = 0
Do While Not rs1.EOF
rs1.MoveNext
kolzap = kolzap + 1
Loop
' Задаем параметры элемента MSFlexGrid
flg.Cols = rs1.Fields.Count: flg.Rows = kolzap + 1
For i = 0 To rs1.Fields.Count - 1
flg.ColWidth(i) = flg.Width / (rs1.Fields.Count + 1)
Next i
' Задаем заголовки столбцов
flg.FormatString = "^ № п/п |^Спеыиальность|^ Курс |^ Группа " & _
"|< ФИО |^ Ср.балл "
' Заносим в MSFlexGrid данные из таблицы "Сессия"
rs1.MoveFirst
For i = 1 To kolzap
flg.TextMatrix(i, 0) = i
flg.TextMatrix(i, 1) = rs1.Fields(0)
flg.TextMatrix(i, 2) = rs1.Fields(1)
flg.TextMatrix(i, 3) = rs1.Fields(2)
flg.TextMatrix(i, 4) = rs1.Fields(3)
sum = 0
For j = 1 To 4
sum = sum + rs1.Fields(3 + j)
Next j
sr = sum / 4
flg.TextMatrix(i, 5) = sr
rs1.MoveNext
Next i
' Закрываем подключение ADO к БД и освобождаем
' занимаемую объектами ADO память
rs1.Close
Set rs1 = Nothing
cn1.Close
Set cn1 = Nothing
End Sub
Вид формы с выводом ”Документ”.
Процедура завершения работы приложения:
Private Sub mnuExit_Click()
End
End Sub
Как обычно добавляем к проекту форму-заставку frmZ6z. Процедура для ее командной кнопки должна иметь вид:
Private Sub Command1_Click()
frmZ6z.Hide
frmQuest.Show
End Sub