Создание и обработка файлов
Задание:
1) На основе данных, вводимых в форму (рис.3.1), создать файл прямого доступа, содержащий сведения о студентах.
2) Вывести данные из файла в форму (рис.3.2)
3) Объединить выполнение пунктов заданий 1) и 2) с помощью кнопочного меню (рис 3.3) в одно приложение.
4) Самостоятельно дополнить приложение созданием второго файла, содержащим результаты сдачи сессии каждым из студентов, и процедурой совместной обработки двух файлов.
5) Используя лекционный материал, создать вложенное меню для выполнения всех процедур приложения.
Рис 3.1. Форма для ввода в файл сведений о студенте.
Рис.3.2. Форма для просмотра сведений о студенте.
Рис 3.3. Кнопочное меню приложения Университет.
Выполнение лабораторной работы
1. Выполнитьзапуск Visual Basic 6.
2. Создать новый проект. Изменить имя проекта Project1 (свойство Name) на Университет.
3. Сохранить проект в личной папке. Форму сохранить с именем FormStudent, проект – с именем University.
4. Изменить имя формы (свойство Name) на FormStudent, изменить имя окна формы (свойство Caption) на Студент. Задать положение формы на экране – в центре экрана (StartUpPosition 2 - CenterScreen), размер – 6500 (With) х5500 (Height), самостоятельно выбрать фон формы, стиль обрамления.
5. Выполнить размещение в форме Студент элементов управления.
5.1. Разместить элемент управления TextBox для ввода фамилии студента. Отрегулировать размеры и положение текстового поля в форме в соответствии с рис. 3.1. Присвоить элементу имя txtFIO (свойство Name), значение свойства Text удалить. Задать подсказку «Фамилия и инициалы студента», появляющуюся при установке указателя мыши на элемент txtFIO (свойство ToolTipText). Создать надпись к элементу txtFIO. Для этого над элементом txtFIO разместить элемент Label. Присвоить элементу имя lblFIO, свойству Caption – значение Фамилия И.О.
5.2. Разместить элемент управления TextBox для отображения номера зачетной книжки студента. В соответствии с рис. 3.1 отрегулировать размеры и положение текстового поля в форме. Присвоить элементу имя txtNomSt, значение свойства Text удалить. Значение номера зачетной книжки будет формироваться программно. Сделать поле не редактируемым, выбрав для свойства Locked значение True. Над элементом txtNomSt разместить элемент Label. Присвоить ему имя lblNomSt, свойству Caption – значение Номер зачетной книжки.
5.3. Разместить элемент управления TextBox для ввода адреса студента, отрегулировать размеры и положение текстового поля в форме в соответствии с рис. 3.1. Присвоить элементу имя txtAdr, значение свойства Text удалить и задать подсказку «Город, улица, номер дома и квартиры», появляющуюся при установке указателя мыши на элемент txtAdr. Над элементом txtAdr разместить элемент Label. Присвоить ему имя lblAdr, свойству Caption – значение Адрес.
5.4. Разместить элемент управления TextBox для ввода номера группы, отрегулировать размеры и положение текстового поля в форме в соответствии с рис. 3.1. Присвоить элементу имя txtNomGr, значение свойства Text удалить. Задать подсказку «Номер группы должен содержать не более четырёх цифр», появляющуюся при установке указателя мыши на элемент txtNomGr. Над элементом txtNomGr разместить элемент Label. Присвоить элементу имя lblNomGr, свойству Caption – значение Номер группы.
5.5. Разместить элемент управления ListBox для выбора специальности студента из списка специальностей. Отрегулировать размеры и положение списка в форме в соответствии с рис. 3.1. Присвоить элементу имя lstSp. Над элементом lstSp разместить элемент Label. Присвоить ему имя lblSp, свойству Caption – значение Специальность.
5.6. Сформировать список значений элемента lstSp. Для добавления элементов в список воспользоваться свойством List элемента lstSp. Значением свойства List должен быть список значений – названия специальностей: маркетинг, коммерция, прикладная информатика, управление качеством, менеджмент организации. Для ввода значения следует раскрыть список (кнопка ) в столбце значений в строке свойства List и затем добавить названия специальностей, располагая их в столбец. Чтобы упорядочить элементы списка по алфавиту, для свойства Sorted выбрать значение True. Выполнить запуск проекта и проверить работу элемента lstSp. Вернуться в режим отладки (кнопка End).
5.7. Добавить в форму элемент управление Frame (рамка). Отрегулировать его размеры и положение в форме в соответствии с рисунком 3.1. Присвоить элементу имя frmDr, свойству Caption – значение Дата рождения. Назначение элемента frmDr объединить элементы управления, с помощью которых вводятся день, месяц и год рождения студента.
5.8. Добавить в форму элементы управления для ввода дня даты рождения студента. Чтобы создать подпись к полю ввода дня следует разместить внутри рамки (элемент frmDr) элемент Label. Присвоить элементу имя lblDay, свойству Caption – значение День. В соответствии с рис. 3.1 изменить размеры и положение. Рядом с элементом lblDay разместить элемент управления TextBox. Отрегулировать размеры и положение текстового поля в форме, присвоить имя txtDay, значение свойства Text удалить. Значение элемента txtDay будем формировать с помощью элемента UpDown.
5.9. Элемент UpDown является стандартным элементом управления Micrisoft Windows. Для добавления этого элемента в блок инструментов (панель элементов управления) выбрать команду Project\Components. На вкладке Controls выбрать группу элементов Microsoft Windows Controls-2 6.0, нажать OK. Разместить элемент управления UpDown в элементе frmDr. Следующим свойствам элемента задать значения: свойству Name - UpDownDay, свойству BuddyControl – txtDay, свойству Alignment – 1-cc2Alignment, свойству Min – 1, свойству Max – 31, свойству Increment – 1, свойству Wrap – False, свойству SyncBuddy – True. Проверить работу элемента.
5.10. В рамке (frmDr) разместить элемент управления ComboBox (поле со списком). Отрегулировать размеры и положение списка в форме в соответствии с рис. 3.1. Присвоить элементу имя cmbBox. Значение свойства Text удалить. Рядом с элементом разместить Label. Надписи присвоить имя lblMonth, свойству Caption – значение Месяц.
5.11. Сформировать список значений элемента cmbMonth для выбора месяца рождения студента. Для добавления элементов в список воспользоваться методом AddItem. В окне проводника проекта (Project), щелкнуть по кнопке View Code. В окне редактора кода из списка Object выбрать объект Form, из списка Procedure – событие Load. Добавить в процедуру Form_Load() следующие строки:
cmbMonth.AddItem "январь"
cmbMonth.AddItem "февраль"
cmbMonth.AddItem "март"
cmbMonth.AddItem "апрель"
cmbMonth.AddItem "май"
cmbMonth.AddItem "июнь"
cmbMonth.AddItem "июль"
cmbMonth.AddItem "август"
cmbMonth.AddItem "сентябрь"
cmbMonth.AddItem "октябрь"
cmbMonth.AddItem "ноябрь"
cmbMonth.AddItem "декабрь"
5.12. Повторить действия п. 5.8,5.9 и самостоятельно разместить в рамке элементы управления для формирования значения года рождения студента и задать значения их свойствам. Элементу Label присвоить значение lblYear, элементу TextBox – txtYear, элементу UpDown – UpDownYear.
5.13. Разместить в форме группу элементов для выбора значения – пол студента. Добавить элемент Frame (Name - frmPol, Caption - Пол). В рамку добавить два элемента управления переключатель OptionButton, с помощью которых будет выбираться пол студента. Отрегулировать их размеры. Выделить элементы OptionButton и выровнять с помощью команд пункта меню Format\Align. Первому переключателю присвоить имя Opt1, свойству Caption – значение м, второму переключателю - имя Opt2, свойству Caption – значение ж. Установить значение свойства Value для переключателей. У переключателя Opt1 свойство Value должно иметь значение True, а у переключателя Opt2 – False.
5.14. Разместить элемент управления ChecBox (флажок) для ввода значения - вид обучения. Отрегулировать размеры и положение элемента, присвоить ему имя Check1, свойству Caption элемента задать значение Обучения коммерческое, для свойства Value выбрать значение 1-Checked.
5.15. Разместить в форме элемент CommandButton, присвоить элементу имя cmdSave, свойству Caption – значение Запись. Отрегулировать размеры и положение элемента.
6. Выделить элементы lblFio, lblNomSt, lblAdr, lblSp, lblNomGr, frmDr, frmPol (щелкнуть по первому элементу, а затем, удерживая клавишу Shift, выделить другие объекты) и задать значения свойствам Font и FontColor для выбранной группы элементов.
7. Разработать процедуру добавления в файл произвольного доступа с именем Student.dat сведений о студентах. Сведения о студенте вводятся с помощью формы Студент. Для этого необходимо выполнить следующие действия.
7.1. Добавить в проект стандартный модуль с описанием пользовательского типа RecordStud и объявлением переменных RecStud и nRecStud. Тип RecordStud описывает данные, которые будут храниться в записи файла. Переменная RecStud предназначена для хранения сведений записываемых в файл или считанных из него. Переменная nRecStud определяет номер текущей записи файла. Для добавления стандартного модуля в проект, следует в окне проекта выбрать в структуре проект Университет и из контекстного меню команду Add\Module. В окне Add Module на вкладке New выбрать шаблон Module, нажать OK. В окне редактора кода с заголовком Университет – Module1 в секции General ввести следующий текст:
Type RecordStud
NomSt As Integer
Fio As String * 20
Adr As String * 40
Pol As String * 1
DataR As Date
NomGr As Integer
Sp As String * 30
VidOpl As Boolean
End Type
Public RecStud As RecordStud
Public nRecStud As Integer
7.2. В окне проекта выбрать форму FormStudent и открыть окно редактора кодов с модулем формы.
7.3. В процедуру Form_Load() добавить строки:
Open "<путь к личной папке>\Student.dat" For Random As #1 Len = _ Len(RecStud)
nRecStud = LOF(1) / Len(RecStud) + 1
txtNomSt.Text = nRecStud
7.4. В модуль формы добавить процедуру SaveRecordStud. Так как эта процедура не связана с событиями имеющихся объектов, то для ее добавления в модуль выбрать команду Tools\Add Procedure. В окне команды ввести в поле Name имя процедуры SaveRecordStud, в группе Type выбрать тип процедуры Sub (подпрограмма), в группе Scope выбрать область действия Private (локальная), нажать OK. Ввести текст процедуры:
Private Sub SaveRecordStud()
RecStud.NomSt = nRecStud
RecStud.Fio = txtFIO.Text
RecStud.Adr = txtAdr.Text
If Opt1 = True Then
RecStud.Pol = "м"
ElseIf Opt2 = True Then
RecStud.Pol = "ж"
End If
mes = LTrim(Str(cmbMonth.ListIndex + 1))
way = LTrim(Str(UpDownDay.Value))
god = LTrim(Right(Str(UpDownYear.Value), 2))
RecStud.DataR = CDate(way + "." + mes + "." + god)
RecStud.NomGr = txtNomGr.Text
RecStud.Sp = lstSp.Text
If Check1.Value = 1 Then
RecStud.VidOpl = True
Else
RecStud.VidOpl = False
End If
Put #1, nRecStud, RecStud
nRecStud = nRecStud + 1
txtNomSt.Text = nRecStud
txtFIO.Text = ""
txtAdr.Text = ""
txtNomGr.Text = ""
UpDownDay.Value = 1
UpDownYear.Value = 1970
Opt1.Value = True
Opt2.Value = False
Check1.Value = 1
cmbMonth.Text = ""
End Sub
7.5. С событием Click командной кнопки CmdSave связать процедуру, вызывающую процедуру SaveRecordStud. Текст процедуры:
Private Sub CmdSave_Click()
SaveRecordStud
End Sub
8. Выполнить закрытие файла Student.dat при закрытии формы FormStudent. С событием Unload объекта Form связать процедуру:
Private Sub _Unload(Cancel As Integer)
Close #1
End Sub
9. Сохранить проект.
10. Создать новую форму (Name - FormMenu, Caption - Университет) командой контекстного меню Add\Form и разместить в ней управляющие элементы в соответствии с рис 3.2. Кнопке Создание присвоить имя cmdCr, кнопке Просмотр – cmdLst.
11. Сделать форму главной, открывающейся первой после запуска приложения. Для этого в окне проекта выбрать строку проекта и из контекстного меню выбрать команду Университет Properties. В окне команды на вкладке General выбрать из списка Startup Object значение FormMenu, нажать OK.
12. Связать с событием Click кнопки cmdCr процедуру отрытия формы FormStudent:
Private Sub cmdCr_Click()
FormStudent.Show
End Sub
13. Проверить работу приложения Университет по созданию файла Student.dat.
14. Создать новую форму (Name - FormStudLst, Caption – Сведения о студентах) и разместить в ней следующие элементы управления, выбрав для них размеры и установив их положение в соответствии с рис. 3.3:
· поле txtFIO1 для вывода фамилии;
· поле txtAdr1для вывода фамилии студента;
· поле txtDr1 для вывода даты рождения;
· поле txtPol1для вывода пола студента;
· поле txtNomSt1для вывода номера зачетной книжки;
· поле txtNomGr1 для вывода номера группы;
· поле txtSp1 для вывода названия специальности;
· переключатель Check _1 для отображения вида обучения;
· кнопку CmdUp для вывода сведений о студенте из предыдущей записи файла;
· кнопку CmdDown для вывода сведений о студенте из следующей записи файла;
· надписи к полям: lblFIO1, lblAdr1, lblDr1, lblPol1, lblNomSt1, lblNomGr1, lblSp1.
15. С событием Load объекта Form связать следующую процедуру:
Private Sub Form_Load()
Open "<путь к личной папке>\Student.dat" For Random _
As #1 Len = Len(RecStud)
nRecStud = 1
ReadRecordStud
End Sub
16. В модуль формы добавить процедуру ReadRecordStqd:
Private Sub ReadRecordStqd()
Get #1, nRecStud, RecStud
txtFIO1.Text = RecStu`.Fio
txtAdr1.Text = RecStu`.Adr
txtNomSt1.Text = RecStu`.NomSt
txtPol1 = RecStu`.Pol
txtDr1 = RecStu`.DataR
txtNomGr1.Text = RecStu`.NomGr
txtSp1.Text = RecStu`.Sp
If RecStu`.VidOpl = True Then
Check_1.Value = 1
Else
Check_1.Value = 0
End If
End Sub
17. С событием Click кнопки cmdUp связать процедуру:
Private Sub CmdUp_Click()
If nRecStud > 1 Then
nRecStud = nRecStud - 1
ReadRecordStud
Else
MsgBox "Начало файла"
End If
End Sub
18. С событием Click кнопки cmdDown связать процедуру:
Private Sub CmdDown_Click()
If nRecStud < LOF(1) / Len(RecStud) Then
nRecStud = nRecStud + 1
ReadRecordStud
Else
MsgBox "Конец файла"
End If
End Sub
19. С событием Unload объекта Form связать процедуру.
Private Sub _Unload(Cancel As Integer)
Close #1
End Sub
20. Активизировать форму FormMenu и связать с событием Click кнопки cmdLst процедуру отрытия формы FormStudLst:
Private Sub cmdLst_Click()
FormStudLst.Show
End Sub
21. Сохранить проект.
22. Проверить работу приложения Университет на контрольном примере.