Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М.у. л.р. Программирование на VB 2005.docx
Скачиваний:
29
Добавлен:
09.11.2018
Размер:
1.76 Mб
Скачать

Лабораторная работа №3 Создание и обработка файлов Цель лабораторной работы:

- разработка пользовательского интерфейса приложения

- программирование создания и просмотра файла произвольного доступа

Задание:

1) На основе данных, вводимых в форму (рис.3.1), создать файл прямого доступа, содержащий сведения о студентах.

2) Вывести данные из файла в форму (рис.3.2)

3) Объединить выполнение пунктов заданий 1) и 2) с помощью кнопочного меню (рис 3.3) в одно приложение.

4) Самостоятельно дополнить приложение созданием второго файла, содержащим результаты сдачи сессии каждым из студентов, и процедурой совместной обработки двух файлов.

5) Используя лекционный материал, создать вложенное меню для выполнения всех процедур приложения.

Рис 3.1. Форма для ввода в файл сведений о студенте.

Рис.3.2. Форма для просмотра сведений о студенте.

Рис 3.3. Кнопочное меню приложения Университет.

Выполнение лабораторной работы

  1. Выполнить запуск Visual Basic 2005.

  2. Создать новый проект с именем University.

  3. Изменить имя формы (свойство Name) на FormStudent, изменить имя окна формы (свойство Text) на Студент. Задать положение формы на экране – в центре экрана (StartPositionCenterScreen), размер (Size) – 480 (With)х300(Height), самостоятельно выбрать фон формы (BackColor), стиль обрамления (FormBorderStyle).

  4. Выполнить размещение в форме Студент элементов управления.

    1. Разместить элемент управления TextBox для ввода фамилии студента. Отрегулировать размеры и положение текстового поля в форме в соответствии с рис. 3.1. Присвоить элементу имя txtFIO (свойство Name), значение свойства Text удалить. Создать надпись к элементу txtFIO. Для этого над элементом txtFIO разместить элемент Label. Присвоить элементу имя lblFIO, свойству Text – значение Фамилия И.О.

    2. Разместить элемент управления TextBox для отображения номера зачетной книжки студента. В соответствии с рис. 3.1 отрегулировать размеры и положение текстового поля в форме. Присвоить элементу имя txtNomSt, значение свойства Text удалить. Значение номера зачетной книжки будет формироваться программно. Сделать поле не редактируемым, выбрав для свойства Locked значение True. Над элементом txtNomSt разместить элемент Label. Присвоить ему имя lblNomSt, свойству Text – значение Номер зачетной книжки.

    3. Разместить элемент управления TextBox для ввода адреса студента, отрегулировать размеры и положение текстового поля в форме в соответствии с рис. 3.1. Присвоить элементу имя txtAdr, значение свойства Text удалить. Над элементом txtAdr разместить элемент управления Label. Присвоить ему имя lblAdr, свойству Text – значение Адрес.

    4. Разместить элемент управления TextBox для ввода номера группы, отрегулировать размеры и положение текстового поля в форме в соответствии с рис. 3.1. Присвоить элементу имя txtNomGr, значение свойства Text удалить. Над элементом txtNomGr разместить элемент Label. Присвоить элементу имя lblNomGr, свойству Text – значение Номер группы.

Задать подсказки, появляющиеся при установке указателя мыши на элемент управления. Для этого выберите элемент управления ToolTip, после того, как указатель мыши изменился, щёлкните в любом месте по конструируемой форме. На экране появится жёлтая область, в которой появится элемент ToolTip1. Вы только что создали объект, с помощью которого будите добавлять подсказки. Выделите этот объект щелчком мыши и измените его имя с ToolTip1 на ToolTipStudent – значение свойства Name. Следует иметь отметить, что для добавления подсказок используется один и тот же объект, т.е. для каждого элемента управления не надо создавать отдельный объект. Для добавления подсказки следует отредактировать значение свойства ToolTip on ToolTipStudent в соответствии с таблицей 3.1.

Таблица 3.1

Значения свойства ToolTip on ToolTipStudent

Имя элемента управления

Значение свойства ToolTip on ToolTipStudent

txtFIO

Введите фамилию и инициалы

txtAdr

Город, улица, номер дома и квартиры

txtNomGr

Номер группы должен содержать не более четырёх цифр

    1. Разместить элемент управления ListBox для выбора специальности студента из списка специальностей. Отрегулировать размеры и положение списка в форме в соответствии с рис. 3.1. Присвоить элементу имя lstSp. Над элементом lstSp разместить элемент Label. Присвоить ему имя lblSp, свойству Text – значение Специальность.

    2. Сформировать список значений элемента lstSp. Для добавления элементов в список воспользоваться свойством Items элемента lstSp. Значением свойства Items должен быть список значений – названия специальностей: организация и технология защиты информации, информационные системы и технологии, маркетинг, прикладная информатика в экономике, прикладная математика в экономике, коммерция, управление качеством. Для ввода значения следует открыть диалоговое окно добавления элементов списка, щёлкнув по кнопке . В появившемся диалоговом окне ввести список значений. Чтобы упорядочить элементы списка по алфавиту, для свойства Sorted выбрать значение True. Выполнить запуск проекта и проверить работу элемента lstSp. Вернуться в режим отладки (кнопка End).

    3. Добавить в форму элемент управление GroupBox (рамка). Отрегулировать его размеры и положение в форме в соответствии с рисунком 3.1. Присвоить элементу имя frmDr, свойству Text – значение Дата рождения. Назначение элемента frmDr объединить элементы управления, с помощью которых вводятся день, месяц и год рождения студента.

    4. Добавить в форму элементы управления для ввода дня даты рождения студента. Чтобы создать подпись к полю ввода дня следует разместить внутри рамки (элемент frmDr) элемент Label. Присвоить элементу имя lblDay, свойству Text – значение День. В соответствии с рис. 3.1 изменить размеры и положение. Рядом с элементом lblDay разместить элемент управления NumericUpDown.

    5. Элемент NumericUpDown является стандартным элементом управления Microsoft Windows. Разместить элемент управления NumericUpDown в элементе frmDr. Следующим свойствам элемента задать значения: свойству Name - UpDownDay, свойству Minimum1, свойству Maximum31, свойству Increment1. Проверить работу элемента.

    6. В рамке (frmDr) разместить элемент управления ComboBox (поле со списком). Отрегулировать размеры и положение списка в форме в соответствии с рис. 3.1. Присвоить элементу имя cmbMonth. Значение свойства Text удалить. Рядом с элементом разместить Label. Надписи присвоить имя lblMonth, свойству Text – значение Месяц.

    7. Сформировать список значений элемента cmbMonth для выбора месяца рождения студента. Для добавления элементов в список воспользоваться функцией Add. В окне редактора кода из списка Object выбрать объект FormStudent Events, из списка Procedure – событие Load. Добавить в процедуру Form_Load() следующие строки:

cmbMonth.Items().Add("январь")

cmbMonth.Items().Add("февраль")

cmbMonth.Items().Add("март")

cmbMonth.Items().Add("апрель")

cmbMonth.Items().Add("май")

cmbMonth.Items().Add("июнь")

cmbMonth.Items().Add("июль")

cmbMonth.Items().Add("август")

cmbMonth.Items().Add("сентябрь")

cmbMonth.Items().Add("октябрь")

cmbMonth.Items().Add("ноябрь")

cmbMonth.Items().Add("декабрь")

    1. Повторить действия п. 4.8, 4.9 и самостоятельно разместить в рамке элементы управления для формирования значения года рождения студента и задать значения их свойствам. Элементу Label присвоить значение lblYear, свойству TextГод, элементу NumericUpDownUpDownYear.

    2. Разместить в форме группу элементов для выбора значения – пол студента. Добавить элемент GroupBox (NamefrmPol, TextПол). В рамку добавить два элемента управления переключатель RadioButton, с помощью которых будет выбираться пол студента. Отрегулировать их размеры. Выделить элементы RadioButton и выровнять с помощью команд пункта меню Format\Align. Первому переключателю присвоить имя Opt1, свойству Text – значение м, второму переключателю - имя Opt2, свойству Text – значение ж. Установить значение свойства Checked для переключателей. У переключателя Opt1 свойство Checked должно иметь значение True, а у переключателя Opt2 False.

    3. Разместить элемент управления CheckBox (флажок) для ввода значения - вид обучения. Отрегулировать размеры и положение элемента, присвоить ему имя Check1, свойству Text элемента задать значение Обучение коммерческое, для свойства CheckState выбрать значение Checked.

    4. Разместить в форме элемент Button, присвоить элементу имя cmdSave, свойству Text – значение Запись. Отрегулировать размеры и положение элемента.

  1. Выделить элементы lblFio, lblNomSt, lblAdr, lblSp, lblNomGr, frmDr, frmPol (щелкнуть по первому элементу, а затем, удерживая клавишу Shift, выделить другие объекты) и задать значения свойствам Font и ForeColor для выбранной группы элементов.

  2. Разработать процедуру добавления в файл произвольного доступа с именем Student.dat сведений о студентах. Сведения о студенте вводятся с помощью формы Студент. Для этого необходимо выполнить следующие действия.

    1. Добавить в проект стандартный модуль с описанием пользовательского типа RecordStud и объявлением переменных RecStud и nRecStud. Тип RecordStud описывает данные, которые будут храниться в записи файла. Переменная RecStud предназначена для хранения сведений записываемых в файл или считанных из него. Переменная nRecStud определяет номер текущей записи файла. Для добавления стандартного модуля в проект, следует выбрать из меню Project команду Add Module. В окне Add New Item выбрать шаблон Module, нажать Add. В окне редактора кода отредактировать текст модуля следующим образом:

Structure RecordStud

Dim NomSt As Integer

<VBFixedString(20), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices. _

UnmanagedType.ByValTStr, SizeConst:=20)> Public FIO As String

<VBFixedString(40), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices. _

UnmanagedType.ByValTStr, SizeConst:=10)> Public Adr As String

<VBFixedString(1), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices. _

UnmanagedType.ByValTStr, SizeConst:=10)> Public Pol As String

Dim DataR As Date

Dim NomGr As Integer

<VBFixedString(30), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices. _

UnmanagedType.ByValTStr, SizeConst:=10)> Public Sp As String

Dim VidOpl As Boolean

End Structure

Module Module1

Public RecStud As RecordStud

Public nRecStud As Integer

End Module

    1. В окне проекта выбрать форму FormStudent и открыть окно редактора кодов с модулем формы.

    2. В процедуру FormStudent_Load() добавить строки:

FileOpen(1, "Student.dat", OpenMode.Random, _

OpenAccess.Default, OpenShare.Default, Len(RecStud))

nRecStud = LOF(1) / Len(RecStud) + 1

txtNomSt.Text = nRecStud

    1. В модуль формы добавить процедуру SaveRecordStud. Так как эта процедура не связана с событиями имеющихся объектов, то её придётся добавлять вручную. Создайте каркас процедуры, добавив в класс формы следующий код:

Private Sub SaveRecordStud()

End Sub

Отредактируйте код процедуры следующим образом:

Private Sub SaveRecordStud()

RecStud.NomSt = nRecStud

RecStud.FIO = txtFIO.Text

RecStud.Adr = txtAdr.Text

If Opt1.Checked = True Then

RecStud.Pol = "м"

ElseIf Opt2.Checked = True Then

RecStud.Pol = "ж"

End If

Dim mes As String, way As String, god As String

mes = LTrim(Str(cmbMonth.SelectedIndex + 1))

way = LTrim(Str(UpDownDay.Value))

god = LTrim(Str(UpDownYear.Value))

RecStud.DataR = CDate(way + "." + mes + "." + god)

RecStud.NomGr = txtNomGr.Text

RecStud.Sp = lstSP.SelectedItem

If Check1.Checked = True Then

RecStud.VidOpl = True

Else

RecStud.VidOpl = False

End If

FilePut(1, RecStud, CInt(nRecStud))

nRecStud = nRecStud + 1

txtNomSt.Text = nRecStud

txtFIO.Text = ""

txtAdr.Text = ""

txtNomGr.Text = ""

UpDownDay.Value = 1

UpDownYear.Value = 1985

Opt1.Checked = True

Opt2.Checked = False

Check1.Checked = True

cmbMonth.Text = ""

End Sub

    1. С событием Click командной кнопки CmdSave связать процедуру, вызывающую процедуру SaveRecordStud. Текст процедуры:

Private Sub cmdSave_Click(ByVal sender As System._

Object, ByVal e As System.EventArgs) Handles cmdSave.Click

SaveRecordStud()

End Sub

  1. Выполнить закрытие файла Student.dat при закрытии формы FormStudent. С событием Closing объекта FormStudent Events связать процедуру:

Private Sub FormStudent_Closing(ByVal sender As Object, ByVal _

e As System.ComponentModel.CancelEventArgs) Handles _

MyBase.Closing

FileClose(1)

End Sub

  1. Сохранить проект.

  2. Создать новую форму (Name - FormMenu, Text - Университет) командой меню Project команда Add Windows Form и разместить в ней управляющие элементы в соответствии с рис 3.3. Кнопке Создание присвоить имя cmdCr, кнопке ПросмотрcmdLst.

  3. Сделать форму главной, открывающейся первой после запуска приложения. Для этого в окне проекта выбрать строку проекта и из контекстного меню выбрать команду Properties. В диалоговом окне в категории Application выбрать из списка Startup Form значение FormMenu.

  4. Связать с событием Click кнопки cmdCr процедуру открытия формы FormStudent:

Private Sub cmdCr_Click(ByVal sender As System.Object,_

ByVal e As System.EventArgs) Handles cmdCr.Click

Dim form1 As FormStudent = New FormStudent

form1.Show()

End Sub

  1. Проверить работу приложения Университет по созданию файла Student.dat.

  2. Создать новую форму (Name - FormStudLst, Text Сведения о студентах) и разместить в ней следующие элементы управления, выбрав для них размеры и установив их положение в соответствии с рис. 3.3:

  • поле txtFIO1 для вывода фамилии;

  • поле txtAdr1 для вывода адреса студента;

  • поле txtDr1 для вывода даты рождения;

  • поле txtPol1 для вывода пола студента;

  • поле txtNomSt1 для вывода номера зачетной книжки;

  • поле txtNomGr1 для вывода номера группы;

  • поле txtSp1 для вывода названия специальности;

  • переключатель Check_1 для отображения вида обучения;

  • кнопку CmdUp для вывода сведений о студенте из следующей записи файла;

  • кнопку CmdDown для вывода сведений о студенте из предыдущей записи файла;

  • надписи к полям: lblFIO1, lblAdr1, lblDr1, lblPol1, lblNomSt1, lblNomGr1, lblSp1.

  1. С событием Load объекта FormStudLst Events связать следующую процедуру:

Private Sub FormStudLst_Load(ByVal sender As _

System.Object, ByVal e As System.EventArgs) Handles _

MyBase.Load

FileOpen(1, "Student.dat", OpenMode.Random, _

OpenAccess.Default, OpenShare.Default, Len(RecStud))

nRecStud = 1

ReadRecordStud()

End Sub

  1. В модуль формы добавить процедуру ReadRecordStud:

Private Sub ReadRecordStud()

FileGet(1, RecStud, nRecStud)

txtFIO1.Text = RecStud.FIO

txtAdr1.Text = RecStud.Adr

txtNomSt1.Text = RecStud.NomSt

txtPol1.Text = RecStud.Pol

txtDr1.Text = RecStud.DataR

txtNomGr1.Text = RecStud.NomGr

txtSp1.Text = RecStud.Sp

If RecStud.VidOpl = True Then

Check_1.Checked = True

Else

Check_1.Checked = False

End If

End Sub

  1. С событием Click кнопки cmdUp связать процедуру:

Private Sub CmdUp_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles CmdUp.Click

If nRecStud < LOF(1) / Len(RecStud) Then

nRecStud = nRecStud + 1

ReadRecordStud()

Else

MsgBox("Конец файла")

End If

End Sub

  1. С событием Click кнопки cmdDown связать процедуру:

Private Sub CmdDown_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles CmdDown.Click

If nRecStud > 1 Then

nRecStud = nRecStud - 1

ReadRecordStud()

Else

MsgBox("Начало файла")

End If

End Sub

  1. С событием Closing объекта FormStudLst Events связать процедуру.

Private Sub FormStudLst_Closing(ByVal sender As Object,_

ByVal e As System.ComponentModel.CancelEventArgs) _

Handles MyBase.Closing

FileClose(1)

End Sub

End Class

  1. Активизировать форму FormMenu и связать с событием Click кнопки cmdLst процедуру открытия формы FormStudLst:

Private Sub cmdLst_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles cmdLst.Click

Dim form2 As FormStudLst = New FormStudLst

form2.Show()

End Sub

  1. Сохранить проект.

  2. Проверить работу приложения Университет на контрольном примере.