Автор работы: Пользователь скрыл имя, 29 Декабря 2010 в 04:20, курсовая работа
Функциональный подход реализует принцип движения «от задач» и применяется, когда определен комплекс задач, для обслуживания которых создается информационная система. В этом случае можно выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.
В предметном подходе объекты предметной области определяются с таким расчетом, чтобы их можно было использовать при решении множества разнообразных, заранее не определенных задач.
With OpenFileDialog1
.FileName = ""
.Filter = "Все файлы (*.*)|*.*|" + _
"текстовые файлы(*.txt)|*.txt|" + _
"файлы исх. данных(*.dan)|*.dan|" + _
"файлы результата (*.rez)|*.rez"
.FilterIndex = 3
.ShowDialog()
Decl.Path = .FileName
If Decl.Path <> "" Then
PathSpec = Mid(Decl.Path, 1, Len(Decl.Path) - 4) + _
".
End If
End With
' если имя файла не пусто
If Decl.Path <> "" Then
' файл открывается
f1 = New FileStream(Decl.Path, FileMode.Open)
' определяется количество записей базы данных
N = f1.Length \ R.len
' аналогично открываем файл справочник для
' специальности
F1_sp = New FileStream(PathSpec, FileMode.Open)
NSpec = F1_sp.Length \ Sp.len
Pos = 1
frmInputEdit.Text = "Файл: " + Decl.Path
' все пункты меню становятся активными
mnuView.Enabled = True
mnuSort.Enabled = True
mnuSearch.Enabled = True
mnuQuery.Enabled = True
mnuFileSaveItem.Enabled = True
mnuFileSaveAsItem.Enabled = True
mnuFileCloseItem.Enabled = True
mnuFileDeleteItem.Enabled = True
End If
' инициализация индексного массива Ind, который будет
' использоваться для сортировки данных, и массива Del
' для пометки удаляемых записей
For i = 1 To Nmax
Ind(i) = i
Del(i) = 0
Next i
End Sub
При выборе пункта меню «Файл à Открыть» появится диалоговое окно, в котором пользователь может выбрать файл, который нужно открыть. Полное имя файла будет записано в переменную Path модуля Declar и в том случае, если путь существует, производится чтение из выбранного файла. Файл-справочник для специальности имеет то же самое имя, что и основной файл. Отличие состоит только в расширениях этих файлов. Кроме этого, все пункты пользовательского меню становятся доступными. Для того чтобы просмотреть содержимое файла базы данных, нужно в строке меню выбрать пункт меню «Просмотр» и в нем один из возможных вариантов просмотра.
11.2. Просмотр файла базы данных
Файл базы данных можно просмотреть, используя форму frmInputEdit. Для этого необходимо написать еще одну пользовательскую процедуру для данной формы (не забудьте для этого перейти в окно кода формы frmInputEdit). Это процедура с именем View_Form, которая должна загрузить данные и вывести первую запись в уже известном нам виде на форме frmInputEdit. Ниже приведен код этой процедуры.
Public Sub view_form()
Dim R As TStud = New TStud()
' загрузка формы frmInputEdit
frmMenu.Enabled = False
Me.Enabled = True
Me.Show()
' загрузка Файла-справочника по специальности, выполнение
' пользовательской процедуры
Call LoadSprav()
' определение количества записей в основном файле базы
N = f1.Length \ R.len
' если записей нет, то вызов процедуры для заполнения
' новой записи
If N = 0 Then
Call ShowNewZap()
cmdAdd.Enabled = True
Else
' иначе производится загрузка и вывод первой записи
Pos = 1
vscrZap.Value = Pos
Call ShowZap(Pos)
' кнопки перемещения по записям становятся активными
cmdTop.Enabled = True
cmdBottom.Enabled = True
cmdForward.Enabled = True
cmdBackUp.Enabled = True
' кнопки «Изменить» и «Обновить» становятся активными
cmdEdit.Enabled = True
cmdPack.Enabled = True
' кнопка «Добавить» становится неактивной
cmdAdd.Enabled = False
' фокус передается на кнопку «Выход»
cmdExit.Focus()
End If
End Sub
В данной процедуре открытый файл проверяется на пустоту и если он пуст (т.е. файл существует, но в нем нет ни одной записи данных), то вызывается процедура создания нового файла-базы данных (процедура ShowNewZap). Если файл не является пустым, то вызывается процедура ShowZap для вывода в форму первой записи, а так же делаются активными кнопки, позволяющие перемещаться по записям базы данных.
Для просмотра файла базы данных с использованием формы frmInputEdit необходимо в форме frmMenu написать процедуру обработки события выбора команды меню «Просмотр à Форма», которая содержит вызов пользовательской процедуры View_Form, принадлежащей форме frmInputEdit:
Private Sub mnuViewFormItem_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles mnuViewFormItem.Click
‘ вызов процедуры загрузки формы
frmInputEdit.View_Form
End Sub
При просмотре данных в виде формы экранная форма содержит данные одной записи файла базы данных. Но иногда необходимо иметь возможность просмотреть данные файла в виде таблицы, в столбцах которой выводятся значения полей записей файла.
Для вывода данных в виде таблицы добавим в проект еще одну форму, дадим этой форме имя frmTableReadOnly и поместим на нее элемент для отображения данных в виде таблицы (DataGridView), переименуем этот элемент, задав его имя, GridView1.
Процедура обработки события выбора пункта меню «Просмотр à Таблица» имеет вид:
Private Sub mnuViewTableItem_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles mnuViewTableItem.Click
Dim i As Integer
Dim j As Integer
Dim R As TStud = New TStud()
Dim sp As TSpec = New TSpec()
With frmTableReadOnly.GridView1
' установка количества строк таблицы и ширины столбцов
.ColumnCount = 12
' запись названий столбцов в таблицу
.Columns(0).Name = "Номер"
.Columns(1).Name = "Курс"
.Columns(2).Name = "Группа"
.Columns(3).Name = "Специальность"
.Columns(4).Name = "ФИО"
.Columns(5).Name = "Пол"
.Columns(6).Name = "Кол-во оценок"
For j = 1 To 5
.Columns(j + 6).Name = "Оц.№ " + CStr(j)
Next j
' чтение очередной записи и загрузка ее полей
' в таблицу
For i = 1 To N
R.ReadFromFile(f1, Ind(i))
' чтение специальности по ее коду
j = frmInputEdit.FindSpecIndex(R.
sp.ReadFromFile(F1_sp, j)
' загрузка новой строки в таблицу
Dim row As String() = New String() _
{CStr(i), R.Kurs, R.Group, _
Trim(sp.Number) + " - " + Trim(sp.Name), Trim(R.FIO), _
R.Pol, R.Kol, R.M(0), R.M(1), R.M(2), R.M(3), R.M(4)}
.Rows.Add(row)
Next i
End With
' изменение заголовка формы
frmTableReadOnly.Text = "Просмотр файла: " + Decl.Path
' загрузка формы frmTableReadOnly
frmTableReadOnly.Show()
End Sub
На этом месте рекомендуется протестировать создаваемый проект. Особое внимание следует уделить корректности чтения записей из файла и вывода их в таблицу и элементы формы.
11.3. Изменение и удаление записей в файле базы данных
Эти действия предусмотрены в форме для ввода и редактирования (форма frmInputEdit) и для их выполнения используются кнопки «Изменить» (cmdEdit) и «Обновить» (cmdPack).
Для
корректировки содержимого
Private Sub cmdEdit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdEdit.Click
Dim R As TStud = New TStud()
' производится заполнение всех полей записи,
' включая измененные
R.FIO = txtFIO.Text
R.Kurs = CByte(txtKurs.Text)
R.Group = CByte(txtGroup.Text)
R.Kol = CByte(txtKol.Text)
R.Pol = ComPol.SelectedIndex
R.Spec = FindSpecCode(ComSpec.
R.DataR = txtDR.Value
R.M(0) = CByte(txtM1.Text)
R.M(1) = CByte(txtM2.Text)
If R.Kol > 2 Then
If txtM3.Text <> "" Then
R.M(2) = CByte(txtM3.Text)
Else
MsgBox("Оценка №3 должна являться цифрой!", vbOKOnly + _
vbExclamation, "Ошибка")
Exit Sub
End If
End If
If R.Kol > 3 Then
If txtM4.Text <> "" Then
R.M(3) = CByte(txtM4.Text)
Else
MsgBox("Оценка №4 должна являться цифрой!", vbOKOnly + _
vbExclamation, "Ошибка")
Exit Sub
End If
End If
If R.Kol > 4 Then
If txtM5.Text <> "" Then
R.M(4) = CByte(txtM5.Text)
Else
MsgBox("Оценка №5 должна являться цифрой!", vbOKOnly + _
vbExclamation, "Ошибка")
Exit Sub
End If
End If
' запись вносится в файл на то место,
' на котором находилась старая запись
R.writeToFile(f1, Pos)
MsgBox("Изменение выполнено успешно!")
End Sub
С файлом исходных данных связан массив Del, который по умолчанию заполнен нулями. Удаляемым записям соответствует значение, равное единице. Для того чтобы удалить некоторые записи, необходимо отметить их на форме frmInputEdit, используя флажок-переключатель Check1, затем нажать на кнопку «Обновить». Для элемента Check1 и кнопки «Обновить» процедуры обработки события Click – щелчка левой кнопки мыши на этих объектах имеют вид:
Private Sub Check1_CheckedChanged(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles Check1.CheckedChanged
' отмечается на удаление запись с номером Pos