[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 240
  • Last Modified:

search a record and display result.

HERE IS THE PROCEDURE I NEED HELP WITH.

[1] I NEED TO ASK FOR A CUSTOMER NUMBER AND THEN SEARCH  THE FILE CUSFILE,CUSTOMER.DAT     WHERE THE INFO IS STORED THEn DISPLAY APPROPRIATE INFO i.e. name address. . then store it to orderfile.

[2] THE CUSFILE,CUSTOMER.DAT WERE MADE USING THE SAME FORMAT AS THIS, I CAN SCROLL THROUGH THE RECORDS BUT CAN'T PICK OUT INDIVIDUAL ONES IN A SEARCH.


        PROCEDURE Order;

        type
         ORDER    = record
                           GETDATE  ;
         CUST_NUM         :INTEGER;                    
         CUST_NAME        : string[20];
         CUST_address     : string[40];
         COSTUME_NUMBER   :INTEGER;
         COSTUME_DESC     :STRING;
         QUANTITY         :INTEGER;
         LOH              :STRING;
         RETURNDATE       :STRING;
         DELIVERY         :CHAR;

               end;

var
   ORDERFILE : file of ORDER;
   c : char;
   X : ORDER;

   n : integer;
begin




   assign(ORDERFILE,'ORDER.DAT');           { Associate it }
   {$I-}
      reset(ORDERFILE);           { First, open it }
   {$I+}

   n:=IOResult;
   if n<>0 then           { If it's doesn't exist then }
   begin
      {$I-}
         rewrite(ORDERFILE);      { Create it    }
      {$I+}
      n:=IOResult;
      if n<>0 then
      begin
         writeln('Error creating file !'); halt;
      end;
   end
   else
   begin                  { If it exists then }
      n:=filesize(ORDERFILE);     { Calculate total record }
      seek(ORDERFILE,N);          { Move file pointer PAST the last record }
   end;

   repeat

      writeln('File position : ',filepos(ORDERFILE));
      WRITELN;
      WRITELN;
      write('DATE IS              = '); readln(X.DATE);     { Input data }
      write('CUSTOMER NUMBER      = '); readln(number);
      ???

      write('CUSTOMER NAME IS     = '); readln(X.CUST_NAME);
      write('CUSTOMER ADRESS IS   = '); readln(x.cust_address);
      write('ENTER COSTUME NUMBER = '); READLN(x.COSTUME_NUMBER);
      WRITE('COSTME DESC IS       = '); READLN(X.COSTUME_DESC);
      WRITE('ENTER QUANTITY       = '); READLN (X.QUANTITY);
      WRITE('LOH                  = '); READLN(X.LOH);
      WRITE('RETURN DATE          = '); READLN(X.RETURNDATE);
      WRITE('DELIVERY Y OR N      = '); READLN(X.DELIVERY);



      write(ORDERFILE,X);                 { Write data to file }

      write('Input data again (Y/N) ?');
      repeat
         c:=upcase(readkey);      { Ask user : Input again or not }
      until c in ['Y','N'];
      writeln(c);
   until c='N';

   close(ORDERFILE);
end;

END.
0
elniniokev
Asked:
elniniokev
  • 5
1 Solution
 
bakry99Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.
0
 
bakry99Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.
0
 
bakry99Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.
0
Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

 
bakry99Commented:
Hi try this

function Search(Index: integer; var Result: Order): boolean;
{Search a record by Index(Cust_Num) if found then function return true and info in the "Result" , if not found then return False}
var
  Temp: Order;
  Found: Boolean;
begin
  reset(orderfile);
  Found := False;
  while (not eof(OrderFile))and(not Found) do
    begin
       read(orderfile,Temp);
       if index = Temp.Cust_Num then
       begin            
          Found := True;
          Result := Temp;      
       end;  
    end;
   Search := Found;
   Close(OrderFile);
end;{Of function}


{and you may call it like this}
var
 x: Order;
 n: integer;
begin
Write('Input Customer Number to Search for: ');
readln(n);
if Search(n, x) then
 Begin
   {Write the field of x}
 end
else
  Writeln('search record not found');
end.
0
 
bakry99Commented:
Sorry i submited it more than one time but the internet here is not work better
:).
0
 
sumant032199Commented:
Have a look at this code.
program customer100;
uses crt;

type customer = record
         name : string[15];
         number : integer;
         { as many more you want}
     end;
     custfile = file of customer;

var custrecord : custfile;
    cust1 : customer;
    n : integer;

procedure lastwait;
begin
     writeln;
     write('Press any key to continue....');
     readkey;
end;

procedure  create_customer_database;
var   A_file : file of customer;
      cust : customer;
      c : char;
begin
      assign(A_file,'CUSTOMER.DAT');
      reset(A_file);
      seek(A_file,filesize(A_file));
      writeln;
      write('Enter Customers'' database: ');
      repeat
            writeln;
            write('Enter name: ');
            read(cust.name);
            write('Enter number: ');
            readln(cust.number);
            write(A_file,cust);

            writeln;
            write('Enter more (y/n)? ');
            c:=readkey;
      until c in ['n','N'];
      close(A_file);
end;
procedure search_and_store(n : integer);
var storefile,searchfile : file of customer;
    cust2 : customer;
begin
    writeln;
    assign(searchfile,'CUSTOMER.DAT');
    reset(searchfile);

    write('Searching information...');
    while not eof(searchfile) do
    begin
        read(searchfile,cust2);
        if cust2.number = n then
        begin
           writeln('Search complete and successful.');
           break;
        end
        else
        begin
             write('.');
        end;
    end;
    close(searchfile);
    writeln;
    if cust2.number <> n then writeln('Search complete but no match found.')
    else
    begin
         writeln('Search Results: ');
         writeln('Name of customer: ',cust2.name);
         writeln('Number of customer: ',cust2.number);

         assign(storefile,'ORDER.DAT');
         reset(storefile);
         seek(storefile,filesize(storefile));

         write(storefile,cust2);
    end;
end;

begin
    create_customer_database; { in CUSTOMER.DAT file }
    writeln;
    write('Enter customer number: ');
    read(n);
    search_and_store(n);      { in ORDER.DAT file }






    lastwait;
end.
0
 
dbruntonCommented:
{

ERE IS THE PROCEDURE I NEED HELP WITH.

[1] I NEED TO ASK FOR A CUSTOMER NUMBER AND THEN SEARCH  THE FILE
CUSFILE, CUSTOMER.DAT     WHERE THE INFO IS STORED THE DISPLAY APPROPRIATE INFO i.e.
name address. . then store it to orderfile.

[2] THE CUSFILE,CUSTOMER.DAT WERE MADE USING THE SAME FORMAT AS THIS, I CAN
SCROLL THROUGH THE RECORDS BUT CAN'T PICK OUT INDIVIDUAL ONES IN A SEARCH.


The coding here needs tidying up.  Run it and try it.  
}

program doit;
uses crt;

type
  ORDERTYPE    = record
    DATE : string[20];
    CUST_NUM         :INTEGER;
    CUST_NAME        : string[20];
    CUST_address     : string[40];
    COSTUME_NUMBER   :INTEGER;
    COSTUME_DESC     :STRING;
    QUANTITY         :INTEGER;
    LOH              :STRING;
    RETURNDATE       :STRING;
    DELIVERY         :CHAR;
end;

var
  ORDERFILE : file of ORDERTYPE;
  c : char;
  X : ORDERTYPE;
  n : integer;
  cusno : integer;
  recordfound : integer;

PROCEDURE Order;
begin
  assign(ORDERFILE, 'ORDER.DAT');           { Associate it }
  {$I-}
  reset(ORDERFILE);           { First, open it }
  {$I+}
  n := IOResult;
  if n <> 0 then           { If it's doesn't exist then }
    begin
    {$I-}
      rewrite(ORDERFILE);      { Create it    }
     {$I+}
      n := IOResult;
      if n <> 0 then
        begin
          writeln('Error creating file !'); halt;
        end;
    end
  else
    begin                  { If it exists then }
      n := filesize(ORDERFILE);     { Calculate total record }
      seek(ORDERFILE,N);          { Move file pointer PAST the last record }
    end;
  repeat
    writeln('File position : ',filepos(ORDERFILE));
    WRITELN;
    WRITELN;
    write('DATE IS              = '); readln(X.DATE);     { Input data }
    write('CUSTOMER NUMBER      = '); readln(X.CUST_num);
    write('CUSTOMER NAME IS     = '); readln(X.CUST_NAME);
    write('CUSTOMER ADRESS IS   = '); readln(x.cust_address);
    write('ENTER COSTUME NUMBER = '); READLN(x.COSTUME_NUMBER);
    WRITE('COSTME DESC IS       = '); READLN(X.COSTUME_DESC);
    WRITE('ENTER QUANTITY       = '); READLN (X.QUANTITY);
    WRITE('LOH                  = '); READLN(X.LOH);
    WRITE('RETURN DATE          = '); READLN(X.RETURNDATE);
    WRITE('DELIVERY Y OR N      = '); READLN(X.DELIVERY);
    write(ORDERFILE, X);                 { Write data to file }
    write('Input data again (Y/N) ?');
    repeat
      c:=upcase(readkey);      { Ask user : Input again or not }
    until c in ['Y','N'];
    writeln(c);
  until c='N';
  close(ORDERFILE);
end;

procedure show;
begin
  reset(orderfile);
  while not eof(orderfile) do
  begin
    read(orderfile, x);
    writeln(x.date);
    writeln(x.cust_num);
    writeln(x.cust_name);
    writeln(x.cust_address);
  end;
end;

procedure searchforcusno(no : integer);
var
  whichrecord : integer;
begin
  reset(orderfile);
  recordfound := 0;
  whichrecord := 0;
  while not eof(orderfile) do
  begin
    read(orderfile, x);
    if x.cust_num = no then
      recordfound := whichrecord;
    inc(whichrecord);
  end;
end;

procedure findandshowrecord(no : integer);
var
  recordno : integer;
begin
  reset(orderfile);
  recordno := 0;
  while not eof(orderfile) do
  begin
    read(orderfile, x);
    if recordno = no then
      writeln(x.cust_num);
    inc(recordno);
  end;
end;

begin
  Order;
  show;
  writeln('What customer number do you want?');
  readln(cusno);
  searchforcusno(cusno);
  if recordfound <> 0 then
    findandshowrecord(recordfound);
END.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now