The "store" program for my QBASIC class. Should be easily adapted to GWBASIC, just throw in some line numbers and such.

The main feature is the dynamic item list.
init:
datastart:
DATA "Beef Jerky",2.95
DATA "Dr. Pepper",.65
DATA "Windex",4.5
DATA "Spam",3.95
DATA "Energy drink",.99
DATA "Sack-O-Meats",.99
DATA "Mystery Box",2.45
DATA "Nintendo GameCube",149.99
DATA "END",0
maxitems% = 0
countitems:
READ a$, a#
IF a$ <> "END" THEN
maxitems% = maxitems% + 1
GOTO countitems
END IF
DIM itemname$(maxitems%), itemcost#(maxitems%), itemcount%(maxitems%)
RESTORE datastart
FOR i% = 0 TO maxitems% - 1
READ a$, a#
itemname$(i%) = a$
itemcost#(i%) = a#
itemcount%(i%) = 0
NEXT i%
main:
CLS
LOCATE 1, 1: COLOR 14: PRINT "_Items in stock_ _Cost_ _In cart_": COLOR 7
subtotal# = 0
FOR i% = 0 TO maxitems% - 1
LOCATE 2 + i%, 1: PRINT USING "##"; i%; : PRINT "

"; itemname$(i%)
LOCATE 2 + i%, 25: PRINT USING "$$##.##"; itemcost#(i%)
LOCATE 2 + i%, 39: PRINT itemcount%(i%)
subtotal# = subtotal# + (itemcost#(i%) * itemcount%(i%))
NEXT i%
LOCATE maxitems% + 3, 25: COLOR 14: PRINT "subtotal:": COLOR 7
LOCATE maxitems% + 3, 35: PRINT USING "$$###.##"; subtotal#
LOCATE maxitems% + 4, 24: COLOR 14: PRINT "6.25% tax:": COLOR 7
LOCATE maxitems% + 4, 35: PRINT USING "$$###.##"; subtotal# * .0625
LOCATE maxitems% + 5, 28: COLOR 14: PRINT "total:": COLOR 7
LOCATE maxitems% + 5, 35: PRINT USING "$$###.##"; subtotal# * 1.0625
LOCATE maxitems% + 7, 1
PRINT "To add items, type the item number and then quantity, separated by commas (type 99,99 to check out)"
INPUT additem%, addcount%
IF additem% = 99 AND addcount% = 99 THEN GOTO checkout
IF additem% < 0 OR additem% > maxitems% - 1 THEN GOTO main
IF itemcount%(additem%) + addcount% < 0 THEN GOTO main
itemcount%(additem%) = itemcount%(additem%) + addcount%
GOTO main
checkout:
PRINT USING "Customer owes $$###.##"; subtotal# * 1.0625
INPUT "How much has the customer paid"; tender#
PRINT USING "The customer is owed $$###.##"; tender# - (subtotal# * 1.0625)