
Создание вспомогательных процедур
Процедура сохранения данных в оперативной памяти
Для минимизации числа обращений к магнитному диску во время выполнения программы данные временно хранятся в специальных структурированных массива, причем обновление этих массивов происходит во время переключения таблиц для сохранения данных из таблицы в массив используется процедура 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 |