Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп подготовка - ВБ - вар 4 - курсовик - оконч...doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
751.1 Кб
Скачать
  1. Создание вспомогательных процедур

Процедура сохранения данных в оперативной памяти

Для минимизации числа обращений к магнитному диску во время выполнения программы данные временно хранятся в специальных структурированных массива, причем обновление этих массивов происходит во время переключения таблиц для сохранения данных из таблицы в массив используется процедура Save Data принимающая в качестве аргумента индекс сохраняемой таблицы 1 – таблица «Ученики» 2 - таблица «Семья», прочие значения игнорируются

Алгоритм

Код

Sub SaveData(ATab As Integer)

Select Case ATab

Case 1

UCHCount = mainGrid.Rows - 1

For i = 0 To mainGrid.Rows - 2

Ucheniki(i).FamiliaU = mainGrid.TextMatrix(i + 1, 0)

Ucheniki(i).PolU = mainGrid.TextMatrix(i + 1, 1)

Ucheniki(i).ClassU = mainGrid.TextMatrix(i + 1, 2)

Ucheniki(i).SrOcenkaU = mainGrid.TextMatrix(i + 1, 3)

Ucheniki(i).FizRazvitieU = mainGrid.TextMatrix(i + 1, 4)

Next

Case 2

SMCount = mainGrid.Rows - 1

For i = 0 To mainGrid.Rows - 2

Semia(i).FamiliaUch.S = mainGrid.TextMatrix(i + 1, 0)

Semia(i).FamiliaRod.S = mainGrid.TextMatrix(i + 1, 1)

Semia(i).DolzhnostS = mainGrid.TextMatrix(i + 1, 2)

Semia(i).ZarplataS = mainGrid.TextMatrix(i + 1, 3)

Semia(i).KolDeteyS = mainGrid.TextMatrix(i + 1, 4)

Semia(i).SemBudgetS = mainGrid.TextMatrix(i + 1, 5)

Next

End Select

End Sub

Процедура чтения данных из оперативной памяти

После сохранения данных из старой таблицы необходимо сформировать новую и загрузить в нее данные, формирование таблицы происходит в теле процедур выбора таблицы, а заполнение – с помощью процедуры Load Data принимающей в качестве аргумента индекc сохраняемой таблицы 1 – таблица «Ученики» 2-таблица «Семья», прочие значения игнорируются 3,4,5 -таблицы «Справка» 1,2,3 соответственно 6 – таблица «Сведения об учениках…»

Алгоритм

Код

Sub LoadData(ATab As Integer)

Select Case ATab

Case 1

For i = 0 To UCHCount - 1

mainGrid.TextMatrix(i + 1, 0) = Ucheniki(i).FamiliaU

mainGrid.TextMatrix(i + 1, 1) = Ucheniki(i).PolU

mainGrid.TextMatrix(i + 1, 2) = Ucheniki(i).ClassU

mainGrid.TextMatrix(i + 1, 3) = Ucheniki(i).SrOcenkaU

mainGrid.TextMatrix(i + 1, 4) = Ucheniki(i).FizRazvitieU

Next

Case 2

For i = 0 To SMCount - 1

mainGrid.TextMatrix(i + 1, 0) = Semia(i).FamiliaUch.S

mainGrid.TextMatrix(i + 1, 1) = Semia(i).FamiliaRod.S

mainGrid.TextMatrix(i + 1, 2) = Semia(i).DolzhnostS

mainGrid.TextMatrix(i + 1, 3) = Semia(i).ZarPlataS

mainGrid.TextMatrix(i + 1, 4) = Semia(i).KolDeteyS

mainGrid.TextMatrix(i + 1, 5) = Semia(i).SemBudzgetS

Next

Case 3

For i = 0 To SPR1Count - 1

mainGrid.TextMatrix(i + 1, 0) = Spravka1(i).Familia.U

mainGrid.TextMatrix(i + 1, 1) = Spravka1(i).PolU

mainGrid.TextMatrix(i + 1, 2) = Spravka1(i).ClassU

If mainGrid.TextMatrix(i + 1, 2) = “ Then

Spravka1(i).ClassU<10

Else

Spravka1(i).ClassU= mainGrid.TextMatrix(i + 1, 2)

End If

Next

mainGrid.TextMatrix(i + 1, 3) = Spravka1(i).FizRazvitieU

If mainGrid.TextMatrix(i + 1, 3) = “ Then

Spravka1(i).FizRazvitieU horoshee

Else

Spravka1(i).FizRazvitieU= mainGrid.TextMatrix(i + 1, 3)

End If

Next

Case 4

For i = 0 To SPR2Count - 1

mainGrid.TextMatrix(i + 1, 0) = Spravka2(i).FamiliaUchS

mainGrid.TextMatrix(i + 1, 1) = Spravka2(i).FamiliaRodS

mainGrid.TextMatrix(i + 1, 2) = Spravka2(i).KolDeteyS

If mainGrid.TextMatrix(i + 1, 2) = “ Then

Spravka2(i).KolDeteyS < 3

Else

Spravka2(i).KolDeteyS = mainGrid.TextMatrix(i + 1, 2)

End If

Next

Case 5

For i = 0 To SPR3Count - 1

mainGrid.TextMatrix(i + 1, 0) = Spravka3(i).FamiliaUchS

mainGrid.TextMatrix(i + 1, 1) = Spravka3(i).FamiliaRodS

mainGrid.TextMatrix(i + 1, 2) = Spravka3(i).ClassU

If mainGrid.TextMatrix(i + 1, 2) = “ Then

Spravka3(i).ClassU <9>

Else

Spravka3(i).ClassU = mainGrid.TextMatrix(i + 1, 2)

End If

Next

mainGrid.TextMatrix(i + 1, 3) = Spravka3(i).SrOcenkaU

If mainGrid.TextMatrix(i + 1, 3) = “ Then

Spravka3(i).SrOcenka.U <4,2

Else

Spravka3(i).SrOcenka.U= mainGrid.TextMatrix(i + 1, 3)

End If

Next

mainGrid.TextMatrix(i + 1, 2) = Spravka3(i).KolDeteyS

If mainGrid.TextMatrix(i + 1, 2) = “ Then

Spravka3(i).KolDeteyS

Else

Spravka3(i).KolDeteyS= mainGrid.TextMatrix(i + 1, 2)

End If

Next

Case 6

For i = 0 To SVDCount - 1

mainGrid.TextMatrix(i + 1, 0) = Svedenia(i).FamiliaU

mainGrid.TextMatrix(i + 1, 1) = Svedenia(i).PolU

mainGrid.TextMatrix(i + 1, 2) = Svedenia(i).ClassU

If mainGrid.TextMatrix(i + 1, 2) = “Then

Svedenia(i).ClassU <10>

Else

Svedenia(i).ClassU= mainGrid.TextMatrix(i + 1, 2)

End If

Next

mainGrid.TextMatrix(i + 1, 3) = Svedenia(i).SrOcenkaU

mainGrid.TextMatrix(i + 1, 4) = Svedenia(i).FizRazvitieU

mainGrid.TextMatrix(i + 1, 5) = Svedenia(i).DushDohodS

If mainGrid.TextMatrix(i + 1, 5) = “ Then

Svedenia(i).DushDohodS =SemBudzhet/ (KolDetey + KolRoditeley) >2000

Else

Svedenia(i).DushDohodS= mainGrid.TextMatrix(i + 1, 5)

End If

Next

End Select

End Sub

Процедура сохранения данных в файлы

Эта процедура выполняется по завершении работы с программой

Алгоритм

Код

Sub SaveDataToFile()

Open "UCH.tbd" For Random As #1 Len = 32

For i = 0 To UCHCount - 1

Put #1, i + 1, Ucheniki(i)

Next i

Close #1

Open "SM.tbd" For Random As #1 Len = 22

For i = 0 To SMCount - 1

Put #1, i + 1, Familia(i)

Next i

Close #1

Open "SVD.txt" For Output As #1

Print #1, "Фамилия ученика", "Пол", "Класс", "Средний балл", "Физическое развитие", "Душевой доход",

For i = 0 To SVDCount - 1

Print #1, SpisUcheniki(i).FamiliU, SpisUcheniki(i).PolU, SpisUcheniki(i).ClassU, SpisUcheniki(i).Sred.OcenkaU, SpisUcheniki(i).FizRazvitieU, SpisUcheniki(i).DushDohodS

Next i

Close #1

End Sub

Процедура чтения данных из файлов

Данная процедура выполняется при загрузке приложения и производит считывание ранее сохраненных данных из файлов БД.

Алгоритм

Код

Sub LoadDataFromFile()

Open "UCH.tbd" For Random As #1 Len = 32

i = 0

Do While Not EOF(1)

Get #1, i + 1, Ucheniki(i)

i = i + 1

Loop

Close #1

UCHCount = i - 1

i = 0

Open "SM.tbd" For Random As #1 Len = 22

Do While Not EOF(1)

Get #1, i + 1, Famili(i)

i = i + 1

Loop

Close #1

SMCount = i - 1

End Sub