(*----------------------------*) (* Name : Your Name *) (* Exam Yr : 2012/13 *) (* School : PCC *) (*----------------------------*) (*..............................PROGRAM DEFINITION ........................*) (*Description goes here.... *) program sba_2012; uses crt; type mas_record = record id:integer; name:string; s_id:integer; payment:integer; end; mas_file = file of mas_record; var mas:mas_file; sec_1,sec_2,sec_3,sec_4,sec_5:integer; s1_pay,s2_pay,s3_pay,s4_pay,s5_pay:integer; one_rec:mas_record; (*---------------------------------------*) (* This procedure is responsible for *) (* setting to zero some of the variables *) (* used in the program. *) (*---------------------------------------*) procedure initialise; begin sec_1:=0;sec_2:=0;sec_3:=0;sec_4:=0;sec_5:=0; s1_pay:=0;s2_pay:=0;s3_pay:=0;s4_pay:=0;s5_pay:=0; end; procedure clear_file; begin assign(mas,'f:\pascal\mas.pas'); rewrite(mas); close(mas); gotoxy(20,12);write('Please Wait...Contents of file being erased....'); delay(1000); end; (*---------------------------------------*) (* This procedure is responsible for *) (* finding the no. of persons and total *) (* payment in each section. *) (*---------------------------------------*) procedure determine_section; begin with one_rec do case payment of 160: begin inc(sec_1);s1_pay:=s1_pay + 160;s_id:= 1; end; 220: begin inc(sec_2);s2_pay:=s2_pay + 220;s_id:= 2; end; 280: begin inc(sec_3);s3_pay:=s3_pay + 280;s_id:= 3; end; 350: begin inc(sec_4);s4_pay:=s4_pay + 350;s_id:= 4; end; 425: begin inc(sec_5);s5_pay:=s5_pay + 425;s_id:= 5; end; end; end; (*---------------------------------------*) (* This procedure is responsible for *) (* prompting a name and payment for each *) (* masquerader and adding it to a file *) (* N.B record files as used to ensure *) (* added data is accessible even when the*) (* program is shut down and restarted. *) (*---------------------------------------*) procedure make_payment; var size:integer; begin with one_rec do begin clrscr;gotoxy(20,9); textcolor(white); write('Please enter name of masquerader -> ');readln(name); repeat gotoxy(20,11); writeln('Payment Options -$160,$220,$280,$350,$425'); gotoxy(20,13); write('Please enter payment ($) -> '); readln(payment); until (payment = 160) or (payment = 220) or (payment = 280) or (payment = 350) or (payment = 425); determine_section; end; assign(mas,'f:\pascal\mas.pas'); reset(mas);size:=filesize(mas); seek(mas,size); write(mas,one_rec); close(mas); end; (*-------------------------------------------*) (* This procedure is responsible for listing *) (* the name and section of each masquerader *) (*-------------------------------------------*) procedure name_and_section; var i,size:integer; begin assign(mas,'f:\pascal\mas.pas'); reset(mas);size:=filesize(mas); clrscr; gotoxy(25,11);textcolor(lightred); write('-------------------------------------'); gotoxy(25,12); write(' Name section'); gotoxy(25,13); write('-------------------------------------'); textcolor(white); for i:= 1 to size do begin read(mas,one_rec); gotoxy(25,13+ i); write(one_rec.name); gotoxy(53,13+i); write(one_rec.s_id); end; close(mas); readln; end; (*-------------------------------------------*) (* This procedure is responsible for listing *) (* for the different sections the number of *) (* masqueraders as well as the total payment *) (* made. *) (*-------------------------------------------*) procedure section_summary; var size,i:integer; begin assign(mas,'f:\pascal\mas.pas'); reset(mas);size:=filesize(mas); initialise; for i:= 1 to size do begin read(mas,one_rec); determine_section; end; gotoxy(20,11);textcolor(lightred); write('------------------------------------------------------'); gotoxy(20,12); write('Section # No. Registered Payment Collected'); gotoxy(20,13); write('-------------------------------------------------------'); textcolor(white);gotoxy(20,14); write(' 1 ',sec_1,' ',s1_pay);gotoxy(20,15); write(' 2 ',sec_2,' ',s2_pay);gotoxy(20,16); write(' 3 ',sec_3,' ',s3_pay);gotoxy(20,17); write(' 4 ',sec_4,' ',s4_pay);gotoxy(20,18); write(' 5 ',sec_5,' ',s5_pay);gotoxy(20,19); readln; end; procedure do_menu; var leave:boolean;option:integer; begin leave:=false; repeat clrscr; gotoxy(20,3); writeln('Trini Style 2011.......Version 1.0'); gotoxy(20,5); writeln(' 1. Make a Payment ');gotoxy(20,6); writeln(' 2. List Name and Section ');gotoxy(20,7); writeln(' 3. List Summary by Setion ');gotoxy(20,8); writeln(' 4. Clear Files ');gotoxy(20,9); writeln(' 5. Exit');gotoxy(20,10); gotoxy(20,11); textcolor(yellow); write('Please select an option (1-5) : ');readln(option); case option of 1: make_payment; 2: name_and_section; 3: section_summary; 4: clear_file; 5:leave:= true; end; until (leave = true); end; begin {......................main program ...................} clrscr; initialise; do_menu; end. {........................main program ...................}