Доработать систему обработки данных однотабличной базы - 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.

Объяснение кода листинга программы

  1. В коде объявлены переменные и структуры данных, такие как MaxRec, String11, String25, TStudent, TSortField, TCourse, i, j, Rec.
  2. Используется функция Assign для задания имени файла, в который будет сохраняться информация о студентах.
  3. Используется функция Rewrite для перезаписи информации в файле.
  4. Используется функция Close для закрытия файла после записи в него информации.
  5. Используется функция Read для чтения информации из файла.
  6. Используется функция Add для добавления нового студента в список.
  7. Используется функция Del для удаления студента из списка.
  8. Используется функция Sort для сортировки списка студентов по определенному полю.
  9. Используется функция Print для вывода информации о студентах на экран.
  10. Используется функция Save для сохранения информации о студентах в файл.
  11. Используется функция Load для загрузки информации о студентах из файла.
  12. Создается объект TCourse и инициализируется.
  13. Добавляются студенты в список.
  14. Выводится список студентов и сохраняется в файл.
  15. Производится сортировка списка студентов по среднему имени.
  16. Выводится список студентов после сортировки.
  17. Производится сортировка списка студентов по номеру.
  18. Выводится список студентов после сортировки.
  19. Производится сортировка списка студентов по фамилии.
  20. Выводится список студентов после сортировки.
  21. Инициализируется список студентов.
  22. Выводится список студентов.
  23. Загружается информация о студентах из файла.
  24. Выводится информация о студентах после загрузки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы