Автор работы: Пользователь скрыл имя, 29 Декабря 2010 в 04:20, курсовая работа
Функциональный подход реализует принцип движения «от задач» и применяется, когда определен комплекс задач, для обслуживания которых создается информационная система. В этом случае можно выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.
В предметном подходе объекты предметной области определяются с таким расчетом, чтобы их можно было использовать при решении множества разнообразных, заранее не определенных задач.
txtM3.Visible = False
txtM4.Text = ""
txtM4.Visible = False
txtM5.Text = ""
txtM5.Visible = False
' производится чтение записи и заполнение элементов
' формы, соответствующих полям записи
R.ReadFromFile(f1, Ind(i))
txtFIO.Text = R.FIO
ComPol.SelectedIndex = R.Pol
txtKurs.Text = CStr(R.Kurs)
txtGroup.Text = CStr(R.Group)
txtKol.Text = CStr(R.Kol)
ComSpec.SelectedIndex = FindSpecIndex(R.Spec)
txtDR.Value = R.DataR
If R.Kol > 0 Then
txtM1.Visible = True
txtM1.Text = CStr(R.M(0))
End If
If R.Kol > 1 Then
txtM2.Visible = True
txtM2.Text = CStr(R.M(1))
End If
If R.Kol > 2 Then
txtM3.Visible = True
txtM3.Text = CStr(R.M(2))
End If
If R.Kol > 3 Then
txtM4.Visible = True
txtM4.Text = CStr(R.M(3))
End If
If R.Kol > 4 Then
txtM5.Visible = True
txtM5.Text = CStr(R.M(4))
End If
' вывод номера записи и отметки об ее удалении
lblZap.Text = CStr(i) + "из" + CStr(N)
Check1.Visible = True
Check1.Checked = Del(Ind(i))
' значение полосы прокрутки полагается равным
' номеру записи
vscrZap.Value = i
End If
End Sub
10.2.2. Процедуры обработки событий
Для работы пользователя с файлом справочником на форму были помещены кнопки cmdAddSpec, cmdEditSpec и cmdDelSpec, соответственно, для добавления, изменения и удаления записей в файле справочнике. Опишем процедуры обработки событий нажатия на эти кнопки.
Процедура
обработки события для
Private Sub cmdAddSpec_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles cmdAddSpec.Click
Dim TempStr As String
Dim Sp As TSpec = New TSpec()
Dim tempIndex As Integer
' текущая форма становится неактивной
Me.Enabled = False
' до тех пор пока пользователь не введет число, происходит
' запрос учетного номера новой специальности
TempStr = InputBox("Введите учетный номер специальности", _
Do While Not (IsNumeric(TempStr))
If (TempStr = "") Then
Me.Enabled = True
Exit Sub
End If
MsgBox("Ошибка ввода", vbOKOnly + vbExclamation, _
"Ошибка")
TempStr = InputBox("Введите учетный номер" + _
" специальности", "Ввод данных")
Loop
' учетный номер записывается в структуру Sp
Sp.Code = CByte(TempStr)
' запрос кода специальности
TempStr = InputBox("Введите код сциальности (6 цифр)", _
"Ввод данных")
' код записывается в структуру Sp
Sp.Number = TempStr
' запрос названия новой специальности
TempStr = InputBox("Введите название специальности", _
"Ввод данных")
' название записывается в структуру Sp
Sp.Name = TempStr
' проверяется попытка повторного использования учетного
' номера специальности в файле справочнике
tempIndex = FindSpecIndex(Sp.Code)
' если такой номер уже есть,
If 0 <> tempIndex Then
' то выводится сообщение о возможности изменения данных
If (vbYes = MsgBox("Такой учетный номер уже есть! " _
+ " Перезаписать?", vbYesNo + vbExclamation, _
"Предупреждение")) Then
' изменение данных записи
Sp.writeToFile(F1_sp, tempIndex)
End If
Else
' добавление новой записи в справочник
Sp.writeToFile(F1_sp, NSpec + 1)
End If
' вызов пользовательской процедуры загрузки записей
' справочника в элемент ComSpec
Call LoadSprav()
' текущая форма становится активной
Me.Enabled = True
End Sub
Процедура обработки события изменения записи в файле-справочнике.
Private Sub cmdEditSpec_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdEditSpec.Click
Dim Sp As TSpec = New TSpec()
Dim i As Integer
' текущая форма становится неактивной
Me.Enabled = False
' чтение текущей записи из файла-справочника
i = ComSpec.SelectedIndex
Sp.ReadFromFile(F1_sp, i)
' запрос на изменение кода специальности
If (vbNo = MsgBox("Код специальности оставить без" + _
" изменения?", vbYesNo + vbExclamation, "Вопрос:")) Then
Sp.Number = InputBox("Введите новый код " + _
"специальности (6 цифр)", "Ввод данных")
End If
' запрос на изменение кода специальности
If (vbNo = MsgBox("Название специальности оставить " + _
"без изменения?", vbYesNo + vbExclamation, _
"Вопрос:")) Then
Sp.Name = InputBox("Введите новое название " + _
"специальности", "Ввод данных")
End If
' запись обновленных данных
Sp.writeToFile(F1_sp, i)
' вызов пользовательской процедуры загрузки записей
' справочника в элемент ComSpec
Call LoadSprav()
' текущая форма становится активной
Me.Enabled = True
End Sub
Процедура обработки события удаления записи из файла-справочника.
Private Sub cmdDelSpec_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdDelSpec.Click
Dim i As Integer
Dim j As Integer
Dim ListIndex As Integer
Dim Sp As TSpec = New TSpec()
Dim R As TStud = New TStud()
Dim TempFile As FileStream
' текущая форма становится неактивной
Me.Enabled = False
' сообщение о возможности удаления записей
' из основного файла
If (vbNo = MsgBox("Внимание!!! Все данные, " + _
"содержащие удаляемую информацию будут уничтожены!" + _
" Продолжить?", vbYesNo + vbExclamation, _
"Предупреждение:")) Then
' если была нажата кнопка «Нет», то выход из процедуры
' и текущая форма становится неактивной
Me.Enabled = True
Exit Sub
End If
' отметка на удаление всех записей основного файла базы,
' в которых содержится информация об удаляемой спец-ности
ListIndex = ComSpec.SelectedIndex
If ListIndex <> 0 Then
Sp.ReadFromFile(F1_sp, ListIndex)
For i = 1 To N
R.ReadFromFile(f1, i)
If R.Spec = Sp.Code Then
Del(i) = 1
End If
Next i
End If
' запись во временный файл всех данных, за исключением
' данных об удаляемой специальности
TempFile = New FileStream (PathTemp, FileMode.Create)
j = 1
For i = 1 To NSpec
Sp.ReadFromFile(F1_sp, i)
If i <> ListIndex Then
Sp.writeToFile(TempFile, j)
j = j + 1
End If
Next i
F1_sp.Close()
TempFile.Close()
' перезапись измененного файла-справочника
Kill(PathSpec)
Rename(PathTemp, PathSpec)
' загрузка обновленного файла-справочника
F1_sp = New FileStream(PathSpec, FileMode.Open)
' вызов пользовательской процедуры загрузки записей
' справочника в элемент ComSpec
Call LoadSprav()
' текущая форма становится активной
Me.Enabled = True
' вызов процедуры удаления отмеченных записей
' основного файла данных
cmdPack_Click(sender, e)
End Sub
В этом месте снова запустите проект для проверки взаимодействия основного файла базы данных с файлом-справочником, но сохранять записи также пока невозможно, так как не реализована кнопка «Добавить». Не забывайте регулярно сохранять проект.
Процедура обработки события нажатия на кнопку «Добавить» обеспечивает добавление записи в файл базы данных и подготовку к вводу полей новой записи.
Private Sub cmdAdd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdAdd.Click
Dim R As TStud = New TStud()
Dim Sp As TSpec = New TSpec()
' заполнение полей записи
R.FIO = txtFIO.Text
R.Kurs = CByte(txtKurs.Text)
R.Group = CByte(txtGroup.Text)
R.Kol = CByte(txtKol.Text)