Доработать систему обработки данных однотабличной базы - 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 и инициализируется.
- Добавляются студенты в список.
- Выводится список студентов и сохраняется в файл.
- Производится сортировка списка студентов по среднему имени.
- Выводится список студентов после сортировки.
- Производится сортировка списка студентов по номеру.
- Выводится список студентов после сортировки.
- Производится сортировка списка студентов по фамилии.
- Выводится список студентов после сортировки.
- Инициализируется список студентов.
- Выводится список студентов.
- Загружается информация о студентах из файла.
- Выводится информация о студентах после загрузки.