Доработать систему обработки данных однотабличной базы - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите с дописать модуль
Листинг программы
  1. Unit DataBase;
  2. Interface
  3. const
  4. MAXNUMBER=11;
  5. MAXNAME=25;
  6. Type
  7. TSysDate=class
  8. //тип номера зачетной книжки
  9. TNumber : String[MAXNUMBER];
  10. // тип данных фамилии студента
  11. TLastName : String[MAXNAME];
  12. // тип данных имени студента
  13. TFirstName : String[MAXNAME];
  14. //процедуры инициализации
  15. Procedure InitTable;
  16. //процедура загруски базы из файла
  17. Procedure LoadFromFile;
  18. //процедура ввода из командной строки
  19. Procedure LoadFromCmd;
  20. //процедура вывода данных на консоль
  21. Procedure WriteToCmd;
  22. //процедура выгрузки
  23. Procedure WritetoFile;
  24. // процедура сортировки данных по номеру зачетной книжки
  25. Procedure ShortingMAXNUMBER;
  26. //процедура сортировки данных по фамилии студента
  27. Procedure ShortingLastName;
  28. //процедура сортировки данных по имени студента
  29. Procedure ShortingFirstName;
  30. // процедура добавления новой записи
  31. Procedure NewRecord;
  32. //– процедура установки метки для удаления записи по фамилии
  33. Procedure LabelForDelLastName;
  34. //процедура упаковки таблицы: удаление помеченных записей
  35. Procedure DeleteLabel;
  36. //функция меню
  37. //Function Menu
  38. end;
  39. //тип номера зачетной книжки
  40. TNumber = String[MAXNUMBER];
  41. // тип данных фамилии студента
  42. TLastName = String[MAXNAME];
  43. // тип данных имени студента
  44. TFirstName = String[MAXNAME];
  45. TRecord = record
  46. // номер зачетной книжки
  47. strNumber : TNumber;
  48. // фамилия студента
  49. strLastName : TLastName;
  50. // имя студента
  51. strFirstName: TFirstName;
  52. // оценка студента по предмету
  53. iAssessment : Byte;
  54. // поле метки для удаления записи
  55. iDeleteLabel: Byte;
  56. end;
  57. Implementation
  58. //----------------------------------------------------------------------------—
  59. { Procedure TSysDate.InitTable;
  60. const
  61. MAX=100;
  62. var
  63. ARecords: Array[1..MAX] of TRecord;
  64. begin
  65. for i:=1 to ARecords[i] do begin
  66. ARecords[i]:=0;
  67. end;
  68. end;}
  69. //---------------------------------------------------------------------------—
  70. Procedure TSysDate.LoadFromFile;
  71. Const
  72. MaxRec = 100;
  73. Var
  74. ARecords: Array[1..MaxRec] of TRecord;
  75. F: File of TRecord;
  76. i: integer;
  77. begin
  78. Assign(F, 'Student.dat');
  79. Reset(F);
  80. i := 0;
  81. while not Eof(F) do begin
  82. Inc(i);
  83. Read(F, ARecords[i]);
  84. end;
  85. end;
  86. //---------------------------------------------------------------------------—
  87. Procedure TSysDate.LoadFromCmd;
  88. var
  89. ARecords: TRecord;
  90. n: byte;
  91. i: integer;
  92. begin
  93. Write ('Введите количество учащихся');ReadLn (n);
  94. for n:=1 to n do begin
  95. Write('Введите фамилию ');Readln(ARecords.strLastName);
  96. Write('Введите имя ');Readln(ARecords.strFirstName);
  97. Write('Введите номер зачетной книжки ');Readln(ARecords.strNumber);
  98. Write('Введите оценку ');Readln(ARecords.iAssessment);
  99. inc(i);
  100. end;
  101. end;
  102. //----------------------------------------------------------------------------—
  103. Procedure TSysDate.WriteToCmd;
  104. var
  105. ARecords:TRecord;
  106. begin
  107. for iDeleteLebel:=1 to iDeleteLebel do
  108. Write(ARecords.strLastName,' ',ARecords.strFirstName,' ',ARecords.strNumber,' ',ARecords.iAssessment);
  109. end;
  110. //----------------------------------------------------------------------------—
  111. Procedure TSysDate.WritetoFile;
  112. var
  113. T:TRecord;
  114. begin
  115. LoadFromFile;
  116. rewrite(output,'output.txt');
  117. end;
  118. //----------------------------------------------------------------------------—
  119. Procedure TSysDate.ShortingMAXNUMBER;
  120. var
  121. n:iDeleteLebel;
  122. begin
  123. end;
  124. //----------------------------------------------------------------------------—
  125. Procedure TsysDate.ShortingLastName;
  126. var
  127. ARecords: TRecord;
  128. i:integer;
  129. begin
  130. i:=iDeleteLebel;
  131. for i:=1 to i do begin
  132. Readln(ARecords.strLastName);
– процедура сортировки данных по номеру зачетной книжки; – процедура сортировки данных по фамилии студента; – процедура сортировки данных по имени студента; – процедура добавления новой записи в таблицу; – процедура установки метки для удаления записи по фамилии; – процедура упаковки таблицы: удаление помеченных записей; – функция формирования меню для вызова различных действий; – конструктор для приведения системы в исходное состояние.

Решение задачи: «Доработать систему обработки данных однотабличной базы»

textual
Листинг программы
  1. uses Crt;
  2.  
  3. Const
  4.     MaxRec = 4;
  5. Type
  6.     String11 = String[11];
  7.     String25 = String[25];
  8.     TStudent = record
  9.      Number: String11;
  10.      FirstName,
  11.      MiddleName,
  12.      LastName: String25;
  13.     end;
  14.     TSortField = (sfNumber, sfFirstName, sfMiddleName);
  15.     TCourse = object
  16.      Count: Integer;
  17.      Students: Array[1..MaxRec] of TStudent;
  18.      constructor Init;
  19.      procedure Add(Number: String11; FirstName, MiddleName, LastName: String25);
  20.      procedure Del(Number: String11);
  21.      procedure Sort(SortField: TSortField);
  22.      procedure Print(Title: String);
  23.      procedure Save;
  24.      procedure Load;
  25.     end;
  26.  
  27.     constructor TCourse.Init;
  28.     begin
  29.      Self.Count := 0;
  30.     end;
  31.  
  32.     procedure TCourse.Add(Number: String11; FirstName, MiddleName, LastName: String25);
  33.     begin
  34.      if Count + 1 > MaxRec then Exit;
  35.      Inc(Count);
  36.      Students[Count].Number := Number;
  37.      Students[Count].FirstName := FirstName;
  38.      Students[Count].MiddleName := MiddleName;
  39.      Students[Count].LastName := LastName;
  40.     end;
  41.  
  42.     procedure TCourse.Del(Number: String11);
  43.     var i,j: Integer;
  44.     begin
  45.      for i := 1 to Count
  46.      do if Students[i].Number = Number
  47.         then begin
  48.              for j := i to Count - 1
  49.              do Students[j] := Students[j+1];
  50.              Dec(Count);
  51.              end;
  52.     end;
  53.  
  54.     procedure TCourse.Sort(SortField: TSortField);
  55.      procedure Exchange(var Rec1, Rec2: TStudent);
  56.      var Tmp: TStudent;
  57.      begin
  58.       Tmp := Rec1;
  59.       Rec1 := Rec2;
  60.       Rec2 := Tmp;
  61.      end;
  62.     var i,j: Integer;
  63.     begin
  64.      for i := 1 to Count
  65.      do for j := i+1 to Count
  66.         do case SortField
  67.            of sfNumber:
  68.               if Students[j].Number < Students[i].Number
  69.               then Exchange(Students[j], Students[i]);
  70.               sfFirstName:
  71.               if Students[j].FirstName < Students[i].FirstName
  72.               then Exchange(Students[j], Students[i]);
  73.               sfMiddleName:
  74.               if Students[j].MiddleName < Students[i].MiddleName
  75.               then Exchange(Students[j], Students[i]);
  76.            end;
  77.     end;
  78.  
  79.     procedure TCourse.Print(Title: String);
  80.     var i: Integer;
  81.     begin
  82.      WriteLn(Title);
  83.      for i := 1 to Count
  84.      do with Students[i]
  85.         do WriteLn(Number,' ',FirstName,' ',MiddleName,' ',LastName);
  86.     end;
  87.  
  88.     procedure TCourse.Save;
  89.     var
  90.        F: File of TStudent;
  91.        i: Integer;
  92.     begin
  93.      Assign(F, 'Student.dat');
  94.      Rewrite(F);
  95.      for i := 1 to Count
  96.      do Write(F, Students[i]);
  97.      Close(F);
  98.     end;
  99.  
  100.     procedure TCourse.Load;
  101.     var
  102.        F: File of TStudent;
  103.        i: Integer;
  104.        Rec: TStudent;
  105.     begin
  106.      Init;
  107.      Assign(F, 'Student.dat');
  108.      Reset(F);
  109.      while not Eof(F)
  110.      do begin
  111.         Read(F, Rec);
  112.         Add(Rec.Number,Rec.FirstName,Rec.MiddleName,Rec.LastName);
  113.         end;
  114.      Close(F);
  115.     end;
  116.  
  117. var
  118.    Course: TCourse;
  119. begin
  120.  ClrScr;
  121.  Course.Init;
  122.  Course.Add('1','Иванов','Иван','Иванович');
  123.  Course.Add('2','Петров','Петр','Петрович');
  124.  Course.Add('3','Сидоров','Сидор','Сидорович');
  125.  Course.Add('4','Иванов','Петр','Сидорович');
  126.  Course.Print('Вывод списка студентов и сохранение в файл');
  127.  Course.Save;
  128.  
  129.  Course.Sort(sfMiddleName);
  130.  Course.Print('Сортировка по имени');
  131.  Course.Sort(sfNumber);
  132.  Course.Print('Сортировка по номеру');
  133.  Course.Sort(sfFirstName);
  134.  Course.Print('Сортировка по фамилии');
  135.  
  136.  Course.Init;
  137.  Course.Print('Очистка списка');
  138.  Course.Load;
  139.  Course.Print('Восстановление из файла и отображение списка');
  140. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы