The input for this program has two sources: the inventory information is input f
ID: 3653456 • Letter: T
Question
The input for this program has two sources: the inventory information is input from a text file, and the customer transactions are input from the keyboard.
1. The information about each product carried by the store is listed on a single line in the inventory file "Invent.dat", in the following format:
<product number> <description> <price> <tax>
where <product number> is a five-digit positive (nonzero) integer, <description> is a string of at most 12 characters with no embedded blanks, <price> is a real number, and <tax> is a character ('T' if the product is taxable; 'N' if it is not taxable). The data in the inventory file is ordered from smallest to largest product number.
2. The customer transactions are input from the keyboard, in the following format:
<product number> <times>
where <product number> is as described above, and <times> is an integer in the range 1 to 100, indicating the quantity of this product desired. A zero input for <product number> indicates the end of the customer's order. (The store will soon be using a scanner to input the product number, but for now it is typed in by the cashier.)
The program outputs should be written to a text file called "Receipts.out."
1. The inventory information is echo printed to the output file.
2. The cash register receipt for each customer is written to the output file. The receipts should be nicely formatted, with the product description (not the product number), number of items, item price, and total price for each product printed on a single line. At the end of each customer's order, the subtotal for all items, amount of tax on taxable items, and total bill should be printed, clearly labeled. (The tax rate is 7.5% for taxable items.)
1. The program first reads in all of the inventory information from file "Invent.in." echo printing the information to the output file.
2. The program then prompts the cashier to begin inputting the order for the first customer.
3. This customer's order is processed, and the receipt is printed to the output file.
4. After each customer's order is processed, the program should ask the cashier if another customer is to be processed. If the answer is 'Y', the program sets up to process the next customer; if the answer is 'N', the program terminates with a friendly message.
The following input errors are possible and should be handled by an exception class:
1. Duplicate <product number> in inventory file. Write an error message to the output file and skip the second entry.
2. <Product number> not in inventory file. Write an error message on the receipt, ignore that product number, and continue with the next item.
3. <Times> not in the specified range. Write an error message to the output file, ignore that line, and continue with the next item.
From File "Invent.in":
11012 gallon-milk 1.99 N
11014 butter 2.59 N
11110 pie-shells 0.99 N
20115 laundry-soap 3.60 T
30005 homestyle-br 0.99 N
From keyboard (one customer):
11110 2
40012 3
20115 1
0
To "Receipts.out" file:
------------------------------------------------------
SEP 10, 1998 6:00 pm (* date and time optional *)
Customer 1
pie-shells 2 @ 0.99 1.98
*** item 40012 not in inventory ***
laundry-soap 1 @ 3.60 3.60 TX
Subtotal 5.58
Tax 0.27
Total 5.85
The inventory information can be stored in an array of product records. Assume that the maximum number of products is 50, for purposes of writing this program. You should specify this data structure as an ADT, as described in the chapter; define and implement a set of operations to encapsulate it. The ADT should be tested using a test driver.
Explanation / Answer
Here are the 3 files: class implementation is here: inventory.h - http://pastebin.com/fc0a8a9f static variable initialization is here: inventory.cpp - http://pastebin.com/f524b2dc7 Here is the program, using the CInventory class pos.cpp - http://pastebin.com/f212538b0 You need to have an input file called inventory.dat A file called receipt.dat will be created (everytime new, when you restart the program) Three input errors are taken care off: 1. duplicate entry in inventory.dat 2. quantity less then 1 (0 terminates the program) 3. input item not found receipt.dat could be looking like this: Jan 30, 2010 06:56 Customer 1 ======================================… 1 is not in inventory 1 is not in inventory 11012 QUANTITY less than 1 20115 has duplicate inventory # gallon-milk 3 @ 1.99 N 5.97 butter 5 @ 2.59 N 12.95 general-purp 10 @ 5.99 T 59.90 laundry-soap 3 @ 3.60 T 10.80 homestyle-br 2 @ 0.99 N 1.98 --------------------------------------… Sub Total: 91.60 Taxes : 5.30 --------------------------------------… Total : 96.90 ======================================… Have fun
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.