Автор работы: Пользователь скрыл имя, 29 Декабря 2010 в 04:20, курсовая работа
Функциональный подход реализует принцип движения «от задач» и применяется, когда определен комплекс задач, для обслуживания которых создается информационная система. В этом случае можно выделить минимальный необходимый набор объектов предметной области, которые должны быть описаны.
В предметном подходе объекты предметной области определяются с таким расчетом, чтобы их можно было использовать при решении множества разнообразных, заранее не определенных задач.
‘ запрос имени файла базы данных
With OpenFileDialog1
.filename = ""
.Filter = "Все файлы (*.*)|*.*|" + _
"текстовые файлы(*.txt)|*.txt|" + _
"файлы исх. данных(*.dan)|*.dan|" + _
"файлы результата (*.rez)|*.rez"
.FilterIndex = 3
‘ метод, используемый для открытия файла
.ShowDalog()
Decl.Path = .filename
End With
В приведенном выше коде используются следующие свойства окна диалога: Filter – для списка возможных типов файлов, показываемых в поле ввода со списком для типа файла; FilterIndex – для вывода в окне для типа файла того типа, который в списке Filter имеет номер, задаваемый свойством FilterIndex. Имя выбранного файла помещается в окно для имени файла, а полное имя файла становится значением свойства FileName. Чтобы не использовать длинные имена, полное имя файла записывается в переменную Path модуля Declar.
При открытии файла появится диалоговое окно (рисунок 6), в котором необходимо выбрать файл, который нужно открыть.
Рисунок 6. Диалоговое окно открытия файла
9.2. Создание файлов базы данных
Создание файлов базы данных выполняется при выборе команды меню «Файл à Создать». Данной команде соответствует процедура обработки события mnuFileNewItem_Click, которая с помощью метода Show должна выводить на экран ту форму, при помощи которой будет производиться ввод новых и редактирование существующих записей данных.
Вначале, для простоты работы с загрузкой новых записей базы данных, основной рабочий файл с данными будем создавать в корневом каталоге какого-либо диска, например, диска «c:» с полным именем «c:\untitled.dan», а после выхода из формы для ввода и редактирования пользователю будет предложено сохранить данные в некотором файле. Для этих целей используем элемент управления «SaveFileDialog1» главной формы frmMenu. При этом фактически будет происходить переименование файла «c:\untitled.dan» и присвоение ему имени, введенного пользователем в окне диалога.
Запишем процедуру обработки события выбора команды меню «Файл à Создать».
Private Sub mnuFileNewItem_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles mnuFileNewItem.Click
Dim i As Integer
‘ закрываются все открытые до этого времени файлы
Decl.CloseAllFiles()
' открывается основной файл "c:\untitled.dan"
Decl.Path = PathUntitled
f1 = New FileStream(Decl.Path, FileMode.Create)
' и файл-справочник "c:\untitled.spe"
PathSpec = Mid(Decl.Path, 1, Len(Decl.Path) - 4) +".spe"
F1_sp = New FileStream(Decl.PathSpec, FileMode.Create)
' количество записей в основной таблице базы данных
' равно нулю
N = 0
' инициализация индексного массива Ind, который будет
' использоваться для сортировки данных, и массива Del
' для пометки удаляемых записей
For i = 1 To Nmax
Ind(i) = i
Del(i) = 0
Next i
' основная форма становится неактивной
Me.Enabled = False
' загрузка формы для ввода записей файла frmInputEdit
frmInputEdit.Text = "Файл: " + Decl.Path
frmInputEdit.Show()
frmInputEdit.ShowNewZap() ' пользовательская процедура
' ввода новой записи
End Sub
Поскольку, в данном коде программы участвует новая форма для ввода и редактирования данных, то необходимо добавить ее в проект, выполнив команду «Project/Add Windows Form», и дать новой форме имя frmInputEdit.
Теперь наш проект содержит две формы и нужно указать, какая из них является главной, т.е. запускается первой. Для этого нужно выполнить команду «Project/*имя проекта* Properties…» и в открывшемся диалоговом окне в поле ввода со списком StartUp Form выбрать в качестве стартового объекта форму frmMenu.
Несмотря на то, что форма для ввода не содержит пока никаких элементов управления, запустите проект для проверки процедуры создания файлов и взаимодействия форм. Не забывайте регулярно сохранять проект.
10.1. Проектирование макета формы для ввода и редактирования данных
Для ввода и редактирования информации о студентах, сохраняемых в виде записей в файле данных, используется форма, которой дано имя frmInputEdit, она является подчиненной формой для главной формы с меню. Макет формы frmInputEdit показан на рисунке 7. При помощи выносок указаны имена помещенных на форму элементов управления – компонентов (объектов) формы.
Остановимся на тех элементах управления, которые используются на макете данной формы.
Надписи (тип Label) – это объекты с именами, имеющими префикс lbl, используются как подписи элементов формы. Из этих подписей ясно, какие элементы для каких полей данных используются.
Текстовые поля (тип TextBox) – это объекты с именами, имеющими префикс txt: txtFIO – для поля «Фамилия И.О.»; txtM1, txtM2, txtM3, txtM4, txtM5 – группа объектов, которая используется для ввода оценок.
Командные кнопки (тип Button) – это объекты с префиксами cmd, нажатие на кнопку (событие Click), как правило, вызывает определенное действие, связанное с кнопкой.
Элементы управления DateTimePicker, позволяющие достаточно удобно вводить даты: txtDR – для поля «Дата рождения».
Рисунок 7. Форма для ввода и редактирования записей файла данных
Комбинированные поля (тип ComboBox) – они сочетают возможности текстового поля и списка, который может быть раскрывающимся; этот тип элемента управления используется для значения поля «Пол» (ComPol), список значений этого поля задается свойством Items. Свойства элемента «ComPol» зададим следующим образом:
Items = “мужской”
“женский”
Sorted = True
Для заполнения поля «Специальность» (ComSpec) используются данные из файла-справочника, список значений для этого поля формируется во время выполнения программы (код будет приведен ниже).
Флажок (тип CheckBox) – используется для того, чтобы отметить записи, которые будут удалены из файла: Check1.
Элемент управления NumericUpDown, который исполняет роль счетчика: txtKurs – для поля «Курс»; txtGroup – для поля «Группа»; txtKol – для поля «Количество оценок».
Элемент «NumericUpDown» используется для изменения, как в сторону увеличения, так и в сторону уменьшения с заданным шагом, в нашем случае равным 1 (свойство «increment») значений полей «Курс», «Группа» и «Количество оценок». Свойства «minimum» и «maximum» задают нижнюю и верхнюю границы изменения счетчика соответственно.
Для перемещения по записям файла кроме командных кнопок используется также вертикальная полоса прокрутки, которая имеет имя «vscrZap», значения некоторых ее свойств определены следующим образом:
minimum = 1
maxmum = 100
SmallChange = 1
LargeChange = 2
Value = 1
В поле «специальность» при заполнении и просмотре записей основного файла базы данных должны подставляться данные из файла-справочника, для чего были составлены процедуры и функции, приведенные в следующем разделе.
В этом месте необходимо нанести на форму все элементы управления, задать из свойства и протестировать форму в автономном режиме, чтобы сравнить результат проектирования с приведенным образцом. Для автономного тестирования сделайте стартовым объектом форму frmInputEdit.
10.2. Программное обеспечение формы для ввода и редактирования
Программное обеспечение формы – это процедуры обработки событий, связанные с элементами управления формы, и пользовательские процедуры и функции, которые непосредственно с элементами не связаны.
10.2.1. Пользовательские процедуры и функции
Сначала опишем пользовательские процедуры и функции для работы с файлом-справочником. С их помощью выполняется связывание основного файла базы данных с файлом-справочником для поля «специальность».
Пользовательская процедура LoadSprav формирует список, который будет показан в поле ввода комбинированного списка ComSpec, т.е. во время выполнения программы формируется значение свойства Items элемента ComSpec, в список Items загружаются все записи файла-справочника.
Private Sub LoadSprav()
Dim Sp As TSpec = New TSpec()
Dim i As Integer
' очищаем список элемента ComSpec и добавляем в него
' пустую строку
ComSpec.Items.Clear()
ComSpec.Items.Add(" ")
' определяем количество записей в справочнике
Decl.NSpec = F1_sp.Length \ Sp.len
' если есть хотя бы одна запись,
If NSpec <> 0 Then
' то поочередно считываем их из файла и
' добавляем в список элемента ComSpec
For i = 1 To NSpec
Sp.ReadFromFile(F1_sp, i)
ComSpec.Items.Add(Trim(Sp.
" - " + Trim(Sp.Name))
Next i
End If
End Sub
Пользовательская функция FindSpecCode, возвращает учетный номер специальности, находящейся в справочнике на указанной позиции, передаваемой в качестве параметра.
Private Function FindSpecCode(ByVal number As Integer) As _
Dim Sp As TSpec = New TSpec()
Sp.ReadFromFile(F1_sp, number)
FindSpecCode = Sp.code
End Function
Пользовательская функция FindSpecIndex получает на вход учетный номер специальности и возвращает номер записи в файле-справочнике, соответствующие этой специальности.
Public Function FindSpecIndex(ByVal code As Integer) _
As Integer
Dim Sp As TSpec = New TSpec()
Dim i As Integer
Dim temp As Integer
' определяется количество записей в справочнике
NSpec = F1_sp.Length \ Sp.len
temp = 0
For i = 1 To NSpec
' поочередно считываются записи из файла
Sp.ReadFromFile(F1_sp, i)
' и если учетный номер записи совпадает,
If (Sp.Code = code) Then
' то запоминается номер его позиции
temp = i
' и осуществляется выход из цикла проверки
Exit For
End If
Next
' возвращается запомненный
FindSpecIndex = temp
End Function
Описав все эти процедуры и функции, мы обеспечили взаимодействие данных основного файла с данными в файле-справочнике, т.е. обеспечили связь между файлами.