Автор работы: Пользователь скрыл имя, 29 Декабря 2010 в 04:20, курсовая работа
Функциональный подход реализует принцип движения «от задач» и применяется, когда определен комплекс задач, для обслуживания которых создается информационная система. В этом случае можно выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.
В предметном подходе объекты предметной области определяются с таким расчетом, чтобы их можно было использовать при решении множества разнообразных, заранее не определенных задач.
Для ввода значений полей новой записи файла данных должна быть активизирована форма, подготовленная для ввода данных, т.е. в ней некоторые поля должны быть очищены, а некоторые должны быть заполнены значениями по умолчанию. Из кнопок, обеспечивающих перемещение, активной должна быть только кнопка «Добавить». Все эти действия предусмотрены в пользовательской процедуре ShowNewZap. Опишем код этой процедуры.
Public Sub ShowNewZap()
' загружаем Файл-справочник специальности, выполняя
' пользовательскую процедуру
Call LoadSprav()
' полоса прокрутки становится неактивной
vscrZap.Enabled = False
' кнопка «Добавить» становится активной
cmdAdd.Enabled = True
' кнопки «Вперед», «Конец», «Изменить» и «Обновить»
' становятся неактивными
cmdForward.Enabled = False
cmdBottom.Enabled = False
cmdPack.Enabled = False
cmdEdit.Enabled = False
' начальное заполнение элементов,
' соответствующих полям записей
txtFIO.Text = ""
txtKurs.Value = 1
txtGroup.Value = 1
txtKol.Value = 2
ComPol.Text = ComPol.Items(1)
ComSpec.SelectedIndex = 0
txtDR.Value = Now
' в начале предоставлена возможность ввода двух оценок
' пользователь может увеличить их количество до пяти
txtM1.Visible = True
txtM2.Visible = True
txtM3.Visible = False
txtM4.Visible = False
txtM5.Visible = False
' очистка значений элементов txtM,
' которые могли остаться после ввода предыдущей записи
txtM1.Text = ""
txtM2.Text = ""
txtM3.Text = ""
txtM4.Text = ""
txtM5.Text = ""
lblZap.Text = "Новая запись"
txtFIO.Focus()
Check1.Visible = False
End Sub
После ввода всех значений новой записи, для внесения ее в базу данных нужно нажать на кнопку «Добавить».
После окончания ввода данных необходимо закрыть форму frmInputEdit. При этом все введенные данные должны сохраниться, поэтому при закрытии формы необходимо запросить у пользователя имя файла, в который должно производиться сохранение. Но поскольку эту форму можно закрыть несколькими способами (например, нажав на кнопку «Выход» или кнопку в правом верхнем углу формы), поэтому необходимо обработать все события, обеспечивающие закрытие формы. А поскольку выходу из формы соответствует одна и та же последовательность действий, то оформим ее в виде пользовательской процедуры ExitFromInputEdit.
Sub ExitFromInputEdit()
Dim PathOld As String
Dim PathOldSpec As String
' если путь к основному файлу равен "c:\untitled.dan", т.е.
' форма открыта в режиме создания,
frmMenu.Text = frmMenu.Text + " В.А."
If LCase(Decl.Path) = PathUntitled Then
' то выводится запрос пользователю о сохранении базы
Button = MsgBox("Сохранить файл?", vbQuestion +_
If Button = vbYes Then
' если пользователь подтверждает сохранение, то
' следует запрос имени файла, в который будет
' сохранена база данных
PathOld = Decl.Path
PathSpec = Mid(Decl.Path, 1, Len(Decl.Path) - 4) + _
".
PathOldSpec = PathSpec
With frmMenu.SaveFileDialog1
.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) _
+ ".spe"
End If
End With
' если путь не пуст, т.е. пользователь указал
' имя нового файла,
If Decl.Path <> "" Then
' то файлы закрывается и переименовываются
CloseAllFiles()
If Not (Dir(Decl.Path) = "") Then
Kill(Decl.Path)
Kill(PathSpec)
End If
Rename(PathOld, Decl.Path)
Rename(PathOldSpec, Decl.PathSpec)
' затем открываются файлы с
' новыми именами
f1 = New FileStream(Decl.Path, FileMode.OpenOrCreate)
F1_sp = New FileStream(Decl.PathSpec, _
' изменение заголовка формы
Me.Text = "Файл: " + Decl.Path
' все пункты меню становятся активными
frmMenu.mnuView.Enabled = True
frmMenu.mnuQuery.Enabled = True
frmMenu.mnuSort.Enabled = True
frmMenu.mnuFileSaveItem.
frmMenu.mnuFileSaveAsItem.
frmMenu.mnuFileCloseItem.
frmMenu.mnuFileDeleteItem.
frmMenu.mnuSearch.Enabled = True
' форма закрывается
Me.Hide()
' форма frmMenu становится активной
frmMenu.Show()
frmMenu.Enabled = True
frmMenu.Focus()
Else
' иначе считается, что нажата кнопка
' «Отмена»
Decl.Path = PathOld
PathSpec = PathOldSpec
Button = vbCancel
End If
Else
' если пользователь на вопрос о сохранении
' файла нажал кнопку «Нет»
If Button = vbNo Then
Pos = 0
N = 0
' файлы закрываются и удаляются
CloseAllFiles()
Kill(Decl.Path)
Kill(PathSpec)
' пункты меню, которые были неактивными в
' начале работы программы,
' становятся неактивными
frmMenu.mnuFileSaveItem.
frmMenu.mnuFileSaveAsItem.
frmMenu.mnuFileCloseItem.
frmMenu.mnuFileDeleteItem.
frmMenu.mnuView.Enabled = False
frmMenu.mnuSort.Enabled = False
frmMenu.mnuQuery.Enabled = False
frmMenu.mnuSearch.Enabled = False
' форма закрывается
Me.Hide()
' форма frmMenu становится активной
frmMenu.Show()
frmMenu.Enabled = True
frmMenu.Focus()
End If
End If
Else
' в случае если форма была открыта в режиме просмотра,
' она закрывается
Me.Hide()
' форма frmMenu становится активной
frmMenu.Show()
frmMenu.Enabled = True
frmMenu.Focus()
End If
End Sub
Теперь, опишем процедуры обработки событий нажатия на кнопку «Выход» или кнопку в правом верхнем углу формы.
Обработка события закрытия формы по нажатию кнопки «Выход»:
Private Sub cmdExit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdExit.Click
‘ вызов процедуры закрытия формы
ExitFromInputEdit()
End Sub
Обработка события закрытия формы по нажатию кнопки :
Private Sub frmInputEdit_FormClosing(ByVal sender As _
System.Object,
ByVal e As System.Windows.Forms.
MyBase.FormClosing
Call ExitFromInputEdit()
‘ в том случае, если нажата кнопка «Отмена», то с формы
' выход не происходит
If Button = vbCancel Then e.Cancel = True
End Sub
Хотя подготовлено еще не все программное обеспечение формы, можно запустить проект, но пока не сохранять данные, так как наверняка будут сделаны ошибки, которые необходимо исправить.
Для работы с данными, а именно для вывода в форму полей очередной просматриваемой записи, предусмотрена процедура ShowZap. Она выполняет загрузку элементов формы значениями полей текущей записи (записи с номером i). Ниже приводится код этой процедуры, параметром ее является номер записи в файле.
Public Sub ShowZap(ByVal i As Integer)
Dim R As TStud = New TStud()
' номер записи не должен быть нулем!
If i <> 0 Then
' максимальное значение полосы прокрутки равно
' количеству записей
vscrZap.Maximum = N + 1
vscrZap.Enabled = True
Check1.Checked = False
txtM1.Text = ""
txtM1.Visible = False
txtM2.Text = ""
txtM2.Visible = False
txtM3.Text = ""