Доработать систему обработки данных однотабличной базы - Turbo Pascal
Формулировка задачи:
Помогите с дописать модуль
– процедура сортировки данных по номеру зачетной книжки;
– процедура сортировки данных по фамилии студента;
– процедура сортировки данных по имени студента;
– процедура добавления новой записи в таблицу;
– процедура установки метки для удаления записи по фамилии;
– процедура упаковки таблицы: удаление помеченных записей;
– функция формирования меню для вызова различных действий;
– конструктор для приведения системы в исходное состояние.
Листинг программы
- Unit DataBase;
- Interface
- const
- MAXNUMBER=11;
- MAXNAME=25;
- Type
- TSysDate=class
- //тип номера зачетной книжки
- TNumber : String[MAXNUMBER];
- // тип данных фамилии студента
- TLastName : String[MAXNAME];
- // тип данных имени студента
- TFirstName : String[MAXNAME];
- //процедуры инициализации
- Procedure InitTable;
- //процедура загруски базы из файла
- Procedure LoadFromFile;
- //процедура ввода из командной строки
- Procedure LoadFromCmd;
- //процедура вывода данных на консоль
- Procedure WriteToCmd;
- //процедура выгрузки
- Procedure WritetoFile;
- // процедура сортировки данных по номеру зачетной книжки
- Procedure ShortingMAXNUMBER;
- //процедура сортировки данных по фамилии студента
- Procedure ShortingLastName;
- //процедура сортировки данных по имени студента
- Procedure ShortingFirstName;
- // процедура добавления новой записи
- Procedure NewRecord;
- //– процедура установки метки для удаления записи по фамилии
- Procedure LabelForDelLastName;
- //процедура упаковки таблицы: удаление помеченных записей
- Procedure DeleteLabel;
- //функция меню
- //Function Menu
- end;
- //тип номера зачетной книжки
- TNumber = String[MAXNUMBER];
- // тип данных фамилии студента
- TLastName = String[MAXNAME];
- // тип данных имени студента
- TFirstName = String[MAXNAME];
- TRecord = record
- // номер зачетной книжки
- strNumber : TNumber;
- // фамилия студента
- strLastName : TLastName;
- // имя студента
- strFirstName: TFirstName;
- // оценка студента по предмету
- iAssessment : Byte;
- // поле метки для удаления записи
- iDeleteLabel: Byte;
- end;
- Implementation
- //----------------------------------------------------------------------------—
- { Procedure TSysDate.InitTable;
- const
- MAX=100;
- var
- ARecords: Array[1..MAX] of TRecord;
- begin
- for i:=1 to ARecords[i] do begin
- ARecords[i]:=0;
- end;
- end;}
- //---------------------------------------------------------------------------—
- Procedure TSysDate.LoadFromFile;
- Const
- MaxRec = 100;
- Var
- ARecords: Array[1..MaxRec] of TRecord;
- F: File of TRecord;
- i: integer;
- begin
- Assign(F, 'Student.dat');
- Reset(F);
- i := 0;
- while not Eof(F) do begin
- Inc(i);
- Read(F, ARecords[i]);
- end;
- end;
- //---------------------------------------------------------------------------—
- Procedure TSysDate.LoadFromCmd;
- var
- ARecords: TRecord;
- n: byte;
- i: integer;
- begin
- Write ('Введите количество учащихся');ReadLn (n);
- for n:=1 to n do begin
- Write('Введите фамилию ');Readln(ARecords.strLastName);
- Write('Введите имя ');Readln(ARecords.strFirstName);
- Write('Введите номер зачетной книжки ');Readln(ARecords.strNumber);
- Write('Введите оценку ');Readln(ARecords.iAssessment);
- inc(i);
- end;
- end;
- //----------------------------------------------------------------------------—
- Procedure TSysDate.WriteToCmd;
- var
- ARecords:TRecord;
- begin
- for iDeleteLebel:=1 to iDeleteLebel do
- Write(ARecords.strLastName,' ',ARecords.strFirstName,' ',ARecords.strNumber,' ',ARecords.iAssessment);
- end;
- //----------------------------------------------------------------------------—
- Procedure TSysDate.WritetoFile;
- var
- T:TRecord;
- begin
- LoadFromFile;
- rewrite(output,'output.txt');
- end;
- //----------------------------------------------------------------------------—
- Procedure TSysDate.ShortingMAXNUMBER;
- var
- n:iDeleteLebel;
- begin
- end;
- //----------------------------------------------------------------------------—
- Procedure TsysDate.ShortingLastName;
- var
- ARecords: TRecord;
- i:integer;
- begin
- i:=iDeleteLebel;
- for i:=1 to i do begin
- Readln(ARecords.strLastName);
Решение задачи: «Доработать систему обработки данных однотабличной базы»
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 и инициализируется.
- Добавляются студенты в список.
- Выводится список студентов и сохраняется в файл.
- Производится сортировка списка студентов по среднему имени.
- Выводится список студентов после сортировки.
- Производится сортировка списка студентов по номеру.
- Выводится список студентов после сортировки.
- Производится сортировка списка студентов по фамилии.
- Выводится список студентов после сортировки.
- Инициализируется список студентов.
- Выводится список студентов.
- Загружается информация о студентах из файла.
- Выводится информация о студентах после загрузки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д