📄 recordexample3.pas
字号:
program RecordExample(input,output);Const FIRST_NAME_MAX = 30; LAST_NAME_MAX = 30; MAX_STUDENTS = 100;Type First_Name_Type = array[1..FIRST_NAME_MAX] of char; Last_Name_Type = array[1..LAST_NAME_MAX] of char; Student_Record_Type = Record Fname : First_Name_Type; Lname : Last_Name_Type; Id : integer; Gpa : real; end; Student_Collection_Type = array[1..MAX_STUDENTS] of Student_Record_Type;var Debug : boolean;procedure Display_Record(Student : Student_Record_type; recordno : integer);Begin with Student do Begin writeln('----------------------------'); writeln(' Record# ',recordno); writeln('----------------------------'); writeln('First Name: ':15, Fname); writeln('Last Name: ':15, Lname); writeln('Id: ':15, Id); writeln('GPA: ':15, Gpa:0:2); writeln; End;End;procedure Initialize_Collection(var Students : Student_Collection_Type);Begin var i : integer; for i := 1 to MAX_STUDENTS do with Students[i] do Begin Fname := 'XXXXXXXXX'; Lname := 'YYYYYYYYY'; Id := 999999; Gpa := 9.9; end;End;Procedure Display_Collection(var Students : Student_Collection_Type; n : integer);Begin var i : integer; for i:=1 to n do Display_Record(Students[i],i);end;procedure Read_Collection(var database : Student_Collection_Type; var record_count : integer);Begin var data_file : Text; record_count:=0; reset(data_file,"students.dat"); while not EOF(data_file) do Begin {*************** Read one record *************} record_count:=record_count + 1; if debug then writeln('Reading record....',record_count); with database[record_count] do Begin Readln(data_file,fname); Readln(data_file,lname); Readln(data_file,Id); Readln(data_file,Gpa); Readln(data_file); end; end; close(data_file);End;procedure Search_GPA(var database:Student_Collection_Type; total_records : integer; key_GPA : real);Begin var i : integer; var found : integer; found :=0; for i:=1 to total_records do begin if (database[i].Gpa>=key_GPA) then begin Display_Record(database[i],i); found:=found+1; {break;} {**** Add when you only want to extract one record ***} end; end; if found=0 then writeln('No record found...') else writeln(found, " records found...");End;begin var A : Student_Collection_Type; var i : integer; var n : integer; debug:=true; if debug then writeln('Initializing...'); Initialize_Collection(A); if debug then writeln('Reading from file...'); Read_Collection(A,n); if debug then writeln('Now Displaying'); Display_Collection(A,n); writeln; writeln("*****************************"); writeln(" Displaying GPA >= 3.3"); writeln("*****************************"); search_GPA(A,n,3.3);end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -