Доработать систему обработки данных однотабличной базы - Turbo Pascal
Формулировка задачи:
Помогите с дописать модуль
– процедура сортировки данных по номеру зачетной книжки;
– процедура сортировки данных по фамилии студента;
– процедура сортировки данных по имени студента;
– процедура добавления новой записи в таблицу;
– процедура установки метки для удаления записи по фамилии;
– процедура упаковки таблицы: удаление помеченных записей;
– функция формирования меню для вызова различных действий;
– конструктор для приведения системы в исходное состояние.
Решение задачи: «Доработать систему обработки данных однотабличной базы»
textual
Листинг программы
uses Crt; Const MaxRec = 4; Type String11 = String[11]; String25 = String[25]; TStudent = record Number: String11; FirstName, MiddleName, LastName: String25; end; TSortField = (sfNumber, sfFirstName, sfMiddleName); TCourse = object Count: Integer; Students: Array[1..MaxRec] of TStudent; constructor Init; procedure Add(Number: String11; FirstName, MiddleName, LastName: String25); procedure Del(Number: String11); procedure Sort(SortField: TSortField); procedure Print(Title: String); procedure Save; procedure Load; end; constructor TCourse.Init; begin Self.Count := 0; end; procedure TCourse.Add(Number: String11; FirstName, MiddleName, LastName: String25); begin if Count + 1 > MaxRec then Exit; Inc(Count); Students[Count].Number := Number; Students[Count].FirstName := FirstName; Students[Count].MiddleName := MiddleName; Students[Count].LastName := LastName; end; procedure TCourse.Del(Number: String11); var i,j: Integer; begin for i := 1 to Count do if Students[i].Number = Number then begin for j := i to Count - 1 do Students[j] := Students[j+1]; Dec(Count); end; end; procedure TCourse.Sort(SortField: TSortField); procedure Exchange(var Rec1, Rec2: TStudent); var Tmp: TStudent; begin Tmp := Rec1; Rec1 := Rec2; Rec2 := Tmp; end; var i,j: Integer; begin for i := 1 to Count do for j := i+1 to Count do case SortField of sfNumber: if Students[j].Number < Students[i].Number then Exchange(Students[j], Students[i]); sfFirstName: if Students[j].FirstName < Students[i].FirstName then Exchange(Students[j], Students[i]); sfMiddleName: if Students[j].MiddleName < Students[i].MiddleName then Exchange(Students[j], Students[i]); end; end; procedure TCourse.Print(Title: String); var i: Integer; begin WriteLn(Title); for i := 1 to Count do with Students[i] do WriteLn(Number,' ',FirstName,' ',MiddleName,' ',LastName); end; procedure TCourse.Save; var F: File of TStudent; i: Integer; begin Assign(F, 'Student.dat'); Rewrite(F); for i := 1 to Count do Write(F, Students[i]); Close(F); end; procedure TCourse.Load; var F: File of TStudent; i: Integer; Rec: TStudent; begin Init; Assign(F, 'Student.dat'); Reset(F); while not Eof(F) do begin Read(F, Rec); Add(Rec.Number,Rec.FirstName,Rec.MiddleName,Rec.LastName); end; Close(F); end; var Course: TCourse; begin ClrScr; Course.Init; Course.Add('1','Иванов','Иван','Иванович'); Course.Add('2','Петров','Петр','Петрович'); Course.Add('3','Сидоров','Сидор','Сидорович'); Course.Add('4','Иванов','Петр','Сидорович'); Course.Print('Вывод списка студентов и сохранение в файл'); Course.Save; Course.Sort(sfMiddleName); Course.Print('Сортировка по имени'); Course.Sort(sfNumber); Course.Print('Сортировка по номеру'); Course.Sort(sfFirstName); Course.Print('Сортировка по фамилии'); Course.Init; Course.Print('Очистка списка'); Course.Load; Course.Print('Восстановление из файла и отображение списка'); end.
Объяснение кода листинга программы
- В коде объявлены переменные и структуры данных, такие как MaxRec, String11, String25, TStudent, TSortField, TCourse, i, j, Rec.
- Используется функция Assign для задания имени файла, в который будет сохраняться информация о студентах.
- Используется функция Rewrite для перезаписи информации в файле.
- Используется функция Close для закрытия файла после записи в него информации.
- Используется функция Read для чтения информации из файла.
- Используется функция Add для добавления нового студента в список.
- Используется функция Del для удаления студента из списка.
- Используется функция Sort для сортировки списка студентов по определенному полю.
- Используется функция Print для вывода информации о студентах на экран.
- Используется функция Save для сохранения информации о студентах в файл.
- Используется функция Load для загрузки информации о студентах из файла.
- Создается объект TCourse и инициализируется.
- Добавляются студенты в список.
- Выводится список студентов и сохраняется в файл.
- Производится сортировка списка студентов по среднему имени.
- Выводится список студентов после сортировки.
- Производится сортировка списка студентов по номеру.
- Выводится список студентов после сортировки.
- Производится сортировка списка студентов по фамилии.
- Выводится список студентов после сортировки.
- Инициализируется список студентов.
- Выводится список студентов.
- Загружается информация о студентах из файла.
- Выводится информация о студентах после загрузки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д