Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема 7. Разработка базы данных

Поиск

Практическая работа № 7.1

1. Программа создает базу данных по учету кадров предприятия. Заполнение базы данных осуществляется с помощью команды запись из меню файл, это же меню содержит команды просмотр и выход. Команда просмотр предназначена для пролистывания содержимого базы данных. Содержимое базы данных и количество записей в ней отображается в главном окне приложения. Меню правка содержит команды изменить и удалить, предназначенные для редактирования содержимого базы данных. Приложение также содержит справочное окно и инструкцию для пользователя.

Для создания и работы с базой данных необходимо использование специальных средств, имеющихся в Visual Basic 6.0 и называемых Data Manager. Эти средства создают объект Data, а также другие объекты, ассоциируемые с базой данных, для работы с ней. Но для простых случаев использование этих средств может оказаться более громоздким, чем создание базы данных с помощью структурного типа данных или массива.

Для создания структуры базы данных в простой программе можно описать некоторый структурный тип, который будет иметь все необходимые поля таблицы базы данных. Затем должен быть описан одномерный массив этого типа. А также создана заготовка базы данных и другие объекты для работы с ней, которые могут быть выполнены с помощью общих средств языка Visual Basic 6.0 (операторов присваивания, объектов текстового поля и др.). Т.к. база данных должна быть доступна для многих событийных процедур, разных форм, в т.ч. и для главной формы, то описание структуры, типа и массива этого типа необходимо поместить в раздел general declarations. Это стандартный модуль файла с расширением *.bas, который добавляется к проекту командой Add Module из меню Project.

2. Открыть новый проект. Внешний вид главной формы показан на рис. 71. Задать свойство name формы – glav. Установить необходимые значения основных свойств формы по образцу. Создать на форме операционное меню приложения согласно рис. 71. (См. пр. р. № 5.1) Свойства name выпадающих меню указаны на рис. 71 в рамках меню. Установить на форме 7 меток и 1 список. Свойства name указаны на рисунке рядом с объектами.

3. Добавить к проекту модуль командой Add Module из меню Project. Задать свойство name модуля – basa (рис. 72). При описании структуры типа базы данных, необходимо чтобы в ней были указаны поля, которые соответствуют графам таблицы базы данных (см. табл. 3):

Табл. 3

Графы таблицы Свойство name поля Тип Описание
фамилия famnum Текстовый String*10
должность dolnum Текстовый String*15
оклад oklnum Текстовый String*10

Записать в раздел general declarations модуля basa приложения «УЧЕТ КАДРОВ»:

Type kadrrec

famnum As String*10

dolnum As String*15

oklnum As String*10

End Type

Затем описать в этом же разделе модуля массив базы данных:

Public basa(1 To 10) As kadrrec ‘ база данных не более 10 записей

4. Для работы с базой данных потребуются различные текущие признаки, которые будут характеризовать текущее состояние базы данных. Эти признаки обычно присваивают глобальным целым переменным и описывают там же, где и структура, тип и массив базы данных. Добавить в модуль описания этих переменных:

Public currec As Integer ‘ текущая запись

Public recquant As Integer ‘ количество записей в базе

5. Список в главном окне приложения может показывать всю базу данных, но при этом может и не показывать все ее поля. Список необходимых для показа полей определяется программистом исходя из требований, предъявляемых к приложению. Для того, чтобы в списке в главном окне программы данные полей располагались в виде «правильных» столбцов, необходимо установить для этого списка непропорциональный шрифт, например: Courier или Courier New, в котором на каждый символ отводится одинаковое по ширине место.

Открыть главную форму проекта. Установить для объекта список свойство FontCourier или Courier New, размер шрифта следует подобрать самостоятельно исходя из размеров объекта список.

5. Открыть окно редактора кодов программы для команды меню файл и записать следующий программный код:

Private Sub fm1_Click(Index As Integer)

Select Case Index

Case 1

glav.Enabled=False

Sod.Show

Case 2

glav.Enabled=False

Zapys.Show

Case 3

End

End Select

End Sub

6. Добавить к проекту форму. Задать свойство name формы – zapys. Внешний вид формы показан на рис. 73. Оформить форму по образцу, установить необходимые значения свойств объектов формы согласно рис. 73.

7. Команда запись из меню файл проекта «УЧЕТ КАДРОВ» должна добавлять новую запись в конец базы данных, т.е. в очередной элемент массива, данные этой новой записи, которые вводятся в окне названой команды. Кроме этого, эта команда должна добавлять часть или все введенные данные к списку в главном окне приложения, который специально предназначен для просмотра базы. Имена текстовых полей в окне команды запись не должны (!) совпадать с именами полей базы данных, описанных оператором type.

Кнопки ЗАПИСАТЬ и ЗАКРЫТЬ выполняют почти одинаковые действия: кнопка ЗАПИСАТЬ – добавляет данные в базу данных, а кнопка ЗАКРЫТЬ – добавляет данные и закрывает окно. Таким образом, в событийных процедурах этих 2–х кнопок должен быть практически одинаковый текст. Для того, чтобы не дублировать этот текст в 2–х событийных процедурах, он оформляется в виде одной структурной единицы программы: процедуры addrecinput. При этом в указанных событийных процедурах для кнопок имеются лишь строки вызова этой общей процедуры. Общая процедура записывается в модуль проекта.

Открыть окно редактора кодов для кнопок ЗАПИСАТЬ и ЗАКРЫТЬ и ввести следующий программный код:

Private Sub zap_Click()

nomer.Caption=recquant+1

Call addrecinput

End Sub

Private Sub zakr_Click()

nomer.Caption=recquant+1

Call addrecinput

Unload zapys

glav.Enabled=True

Glav.SetFocus

End Sub

8. Открыть окно редактора кодов модуля basa и записать описание процедуры:

Public Sub addrecinput()

Dim strvar As String

recquant=Val(glav.vsego.Caption)+1

If recquant<>11 Then

zapys.nomer.Caption=recquant

basa(recquant).famnum=zapys.fam.Text

strvar=basa(recquant).famnum & ""

basa(recquant).dolnum=zapys.dol.Text

strvar=strvar+basa(recquant).dolnum & ""

basa(recquant).oklnum=zapys.okl.Text

strvar=strvar+basa(recquant).oklnum

Glav.spisok.AddItem strvar

zapys.fam.Text=""

zapys.dol.Text=""

zapys.okl.Text=""

Zapys.fam.SetFocus

glav.vsego.Caption=recquant

Else

MsgBox "база заполнена", 16, "нет места"

Unload zapys

glav.Enabled=True

Glav.SetFocus

Exit Sub

End If

End Sub

9. Вернуться в форму Запись. Записать программные коды для событий: загрузка формы и изменение состояния объекта fam (текстовое поле):

Private Sub fam_Change()

nomer.Caption=recquant+1

End Sub

Private Sub Form_Load()

recquant=Val(glav.vsego.Caption)

End Sub

10. Вернуться в главную форму проекта. Команда удалить из меню правка должна удалять текущую запись базы данных. Для того, чтобы запись стала текущей, нужно выделить ее (щелкнуть по ней мышью) в списке в главном окне программы. При щелчке номер строки передается в свойство ListIndex списка. Команда удалить должна также удалять запись из базы данных, а все последующие записи после удаляемой переписывать на позицию выше. Будьте внимательны! Записи в базе данных нумеруются от 0 до 9, но пользователю на экране отображается нумерация от 1 до 10. Следует этот момент учитывать при реализации событийных процедур для команд запись и удалить, а также при написании других кодов программы, где предполагается вывод содержимого базы данных на экран.

Открыть окно редактора кодов для команды операционного меню правка и записать следующий программный код:

Private Sub pm1_Click(Index As Integer)

Dim i As Integer

Select Case Index

Case 1

glav.Enabled=False

Izmen.Show

Case 2 ‘ процедура команды «удалить»

If recquant=0 Then

MsgBox "база пуста", 16, "удаление невозможно"

Exit Sub

End If

glav.Enabled=True

Glav.SetFocus

If recquant<>0 Then

For i=currec+1 To recquant+1

basa.basa(i-1)=basa.basa(i)

basa.basa(i).famnum=" "

basa.basa(i).dolnum=" "

basa.basa(i).oklnum=" "

Next i

Spisok.RemoveItem currec-1

recquant=Val(vsego.Caption)-1

vsego.Caption=recquant

currec.Caption=" "

End If

End Select

End Sub

Записать программные коды для событий: загрузка формы и щелчок по строке в объекте spisok (ListBox)

Private Sub Form_Load()

recquant=Val(vsego.Caption)

End Sub

Private Sub spisok_Click()

currec=spisok.ListIndex+1

currec.Caption=currec

End Sub

11. Добавить к проекту форму. Задать свойство name формы – izmen. Внешний вид формы показан на рис. 74. Оформить форму по образцу, установить необходимые значения свойств объектов формы согласно рис. 74.

Команда изменить показывает окно с теми данными базы, которые надо изменить. Таким образом, данные должны быть показаны в текстовых полях. После изменения новые данные должны попасть на то же место в базе данных и на ту же строку в список в главном окне приложения, но не в конец(!) списка и/или базы данных.

Открыть окно редактора и записать следующие программные коды для объектов формы izmen:

Private Sub pred_Click()

Dim a As Integer

a=recquant-1

If a<=0 Then

MsgBox "вы просмотрели базу до начала", 48, "СТОП"

Exit Sub

End If

recquant=recquant-1

izmen.fam.Text=basa.basa(recquant).famnum

izmen.dol.Text=basa.basa(recquant).dolnum

izmen.okl.Text=basa.basa(recquant).oklnum

izmen.nomer.Caption=recquant

End Sub

Private Sub sled_Click()

Dim a As Integer

a=recquant+1

If a>=11 Then

MsgBox "вы просмотрели базу до конца", 48, "СТОП"

Exit Sub

End If

recquant=recquant+1

izmen.fam.Text=basa.basa(recquant).famnum

izmen.dol.Text=basa.basa(recquant).dolnum

izmen.okl.Text=basa.basa(recquant).oklnum

izmen.nomer.Caption=recquant

End Sub

Private Sub zakr_Click()

Unload izmen

glav.Enabled=True

Glav.SetFocus

End Sub

12. Поскольку действия, выполняемые кнопкой ОК практически аналогичны действиям, выполняемым кнопкой записать в окне запись, то добавим в модуль проекта еще одну процедуру izmrecinput:

Public Sub izmrecinput ()

Dim strvar As String

recquant=izmen.nomer.Caption



Поделиться:


Последнее изменение этой страницы: 2016-12-10; просмотров: 417; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.119.247 (0.007 с.)