Help needed for product search using text file or Library

Hi All,

First of all let me thank econjack. Because of his help only i got the below code working fine.This code works fine up to 40 products,after 40 products i am getting the following message.

Sketch uses 9,874 bytes (30%) of program storage space. Maximum is 32,256 bytes.
Global variables use 1,561 bytes (76%) of dynamic memory, leaving 487 bytes for local variables. Maximum is 2,048 bytes.
Low memory available, stability problems may occur..

I know the memory space is very small to achieve the task..My question is can i keep the product in text file and search or separate library file has to created for this product.I have 1500 +products.I don't have SD card shield.Can some one give me example for either one.

#include <LiquidCrystal.h>
#include "Keypad.h"
#include "Wire.h" // for I2C LCD
#include <avr/pgmspace.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const byte numRows = 4;
const byte numCols = 4;
char customKey;
int total = 0;
int sum;
int i;
int aa;
int a1 = 0;
int a2;
int i1 = 0, j1, lcd_count, key_id = 0, flag, entry = 0;
int tot = 0;
char buffer[2];
char key;
long first = 0;
long second = 0;
char tempkeypress;
#define ledPin 13
char inBuff[20];
char keys[numRows][numCols] = {
  {'1', '2', '3', '+'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '=', 'D'}
};
byte rowPins[numRows] = {2, 3, 11, 12}; //connect to the row pinouts of the keypad
byte colPins[numCols] = {A2, A3, A4, A5}; //connect to the column pinouts of the keypad
Keypad myKeypad = Keypad(makeKeymap(keys), rowPins, colPins, numRows, numCols);
int count = 0;
int count1 = 0;
void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("     SRIGCS");
  lcd.setCursor(0, 1);
  lcd.print("     CHENNAI");
  delay(2000);
  lcd.clear();
}
void loop() {
  customKey = myKeypad.getKey();
  switch (customKey)
  {
    case '0' ... '9': // This keeps collecting the first value until a operator is pressed "+-*/"
      lcd.setCursor(14, 0);
      first = first * 10 + (customKey - '0');
      lcd.print(first);
      break;
    case '+':
      first = (total != 0 ? total : first);
      lcd.setCursor(8, 0);
      second = SecondNumber(); // get the collected the second number
      total = first + second;
      first = 0, second = 0; // reset values back to zero for next use
      break;
    case 'B':
      guru3();
      break;
    case 'D':
      lcd.clear();
       break;

    case 'C':
      total = 0;
      lcd.setCursor(0, 0);
      lcd.print("                ");
      first = 0;
      lcd.setCursor(5, 1);
      lcd.print(a1);
      a1 = sum + a1;
      lcd.setCursor(12, 1);
      lcd.print(a1);
      break;
  }
}
long SecondNumber()
{
  while ( 1 )
  {
    customKey = myKeypad.getKey();
    if (customKey >= '0' && customKey <= '9')
    {
      second = second * 10 + (customKey - '0');
      lcd.setCursor(0, 2);
      lcd.print(second);
    }
    if (customKey == 'B') break; //return second;
  }
  return second;
}
void guru3() {
  const char *Stt[] PROGMEM = {"Wheat(Ashir)", "Amultigrain", "Maitha(Ashir)", "Pillsbury(Ashir)", "Anil", "AnilMaitha", "Anil", "Rava", "NagaRava", "Pillsbury Atta", "RiceFlakes", "Wheat", "Atta(AP)", "Rava", "Arrow Root Powder", "Bengal Gram Flour", "BombayRava", "Maida Flour", "Rice Flour", "Samba Rava", "SoyaFlour", "Cerelac 1", "Cerelac 4", "Cerelac 4(Fr)", "Cerelac 2(M)", "Cerelac 2", "Cerelac2(ml)", "Cerelac 2(H)", "Cerelac3(veg)", "Cerelac 1(veg)", "Cerelac 2(mf)", "Huggies", "Johnson BShampoo ", "Johnson Baby", "Johnson Bcream", "Johnson Boil", "Johnson oil ", "Johnson Bpowder", "Lactogen 1", "Lactogen 2", "Lactogen 2 ", "Lactogen 3 ", "Pampers( La) ", "Pampers(M)", "Pampers (XL)", "Pampers(M)", "Snuggy", "Woodwards ", "Biscuits", "Aliva Snacks ", "Banana chips ", "Bingo chips ", "Britania Good Day", "Choco Chips", "Britannia 50-50 ", "Britannia 50-50 MC", "Britannia Bbon ", "Britannia Cookies", "Britannia Cookies( BE)"};
  const float prices[] PROGMEM = {25.00, 25.00, 50.00, 5.00, 77.00, 79.0, 81.00, 83.00, 85.00, 7.00, 9.00, 91.00, 93.00, 95.00, 97.00, 99.00, 101.00, 103.00, 105.00, 107.00, 109.00, 111.00, 113.00, 115.00};
  int qty = 1;
  for (int i = 0; i < total; i++) {
    lcd.setCursor(0, 0);
    lcd.print(Stt[i]);
    lcd.print(" ");
    lcd.setCursor(10, 0);
    lcd.print(prices[i]);
    //========================
    lcd.setCursor(8, 0);
    lcd.print(qty);
    //=====================
    lcd.setCursor(0, 1);
    sum = qty * prices[i] ;
    lcd.print(sum);

  }
}
void guru3() {
  const char *Stt[] PROGMEM = {"Wheat(Ashir)", "Amultigrain", "Maitha(Ashir)", "Pillsbury(Ashir)", "Anil", "AnilMaitha", "Anil", "Rava", "NagaRava", "Pillsbury Atta", "RiceFlakes", "Wheat", "Atta(AP)", "Rava", "Arrow Root Powder", "Bengal Gram Flour", "BombayRava", "Maida Flour", "Rice Flour", "Samba Rava", "SoyaFlour", "Cerelac 1", "Cerelac 4", "Cerelac 4(Fr)", "Cerelac 2(M)", "Cerelac 2", "Cerelac2(ml)", "Cerelac 2(H)", "Cerelac3(veg)", "Cerelac 1(veg)", "Cerelac 2(mf)", "Huggies", "Johnson BShampoo ", "Johnson Baby", "Johnson Bcream", "Johnson Boil", "Johnson oil ", "Johnson Bpowder", "Lactogen 1", "Lactogen 2", "Lactogen 2 ", "Lactogen 3 ", "Pampers( La) ", "Pampers(M)", "Pampers (XL)", "Pampers(M)", "Snuggy", "Woodwards ", "Biscuits", "Aliva Snacks ", "Banana chips ", "Bingo chips ", "Britania Good Day", "Choco Chips", "Britannia 50-50 ", "Britannia 50-50 MC", "Britannia Bbon ", "Britannia Cookies", "Britannia Cookies( BE)"};
  const float prices[] PROGMEM = {25.00, 25.00, 50.00, 5.00, 77.00, 79.0, 81.00, 83.00, 85.00, 7.00, 9.00, 91.00, 93.00, 95.00, 97.00, 99.00, 101.00, 103.00, 105.00, 107.00, 109.00, 111.00, 113.00, 115.00};

PROGMEM variables (constants) cannot be local.