You will use your search tree ADT,and possibly some of the other ADTs created over the semester to create a rudimentary point of sale system that maintains inventory state. The system will allow a customer to add items to their order, removing items from the overall inventory and print reports.
When you have finished doing this assignment you should be able to:
Before you attempt this assignment please ensure that you have a good understanding of the concepts listed below. Consult the review section or reference section of the course if you need a refresher on any of these concepts.
Write a program that acts as a point of sale system (POS) for a small game store. The POS system is used to manage the store inventory and to generate invoices for customers. The user searchers for the item that the customer is purchasing and the number of items purchased is added to the customers invoice, and the inventory is updated to reflect the sale. A customer can purchase multiples of an item and may purchase more than one type of item in a single transaction. When all the items have been added to the customers invoice the invoice is printed to screen and remains there until the user indicates that the system should begin a new sale.
Your POS system may be a command line/text interface or you can use ncurses to make the interface. Regardless of the choice of interface, your system should be usable and should not crash if the user provides unexpected or incorrect input. You dont have to guard against control-characters, but other types of incorrect input should not crash the system.
You must use your search tree ADT in the searching component of this assignment, but you may need to use other structures as well. You may also use any of the previous ADTs that you have developed for this course for other portions of the assignment.
The POS system must provide the following capabilities:
You may add any of the following additions to the POS system:
The initial inventory of the POS system is given in the CSV file that accompanies this document. The data has been assembled from lists of popular games and several sites that randomly generate specific types of data. The data is fictitious for the most part.
The first row of the CSV file is the labels for the column and is not to be used as data. The taxable column in the data indicates whether an item is taxable or not. 1 is used to indicate that an item is taxable, 0 to indicate that it is not taxable.
Some of the items in the inventory belong to multiple genre categories. The different categories are separated with vertical pipes. For example, the game Assassins Creed belongs to four different genres. The genre entry for it in the CSV file looks like this:
Historical fiction|Stealth|Action|Adventure
Each time your program starts it should load this starting inventory with the quantities shown in this CSV. You do not have to persistently store changes to the inventory unless that is the addition you choose to implement.