-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreadme.txt
More file actions
57 lines (44 loc) · 3.41 KB
/
readme.txt
File metadata and controls
57 lines (44 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
ThoughtWorks Sales Taxes Problem
Assumptions: 1. All text file inputs will be of the same format as those provided in the example --> ["quantity","item type","at","price]
2. All outputs should be written in the same format as those provided in the example
3. Since all the examples given are for product quantities = 1, it is assumed that if an input is given with quantities
greater than 1, the price of the item should be stated per "1 quantity" of that item
4. All imported goods subject to import duty will contain the word imported in their description
To run: Eclipse was used to create this project, and thus to run, unzip the project folder and run in Eclipse.
NOTE**: Please note, I do not have a formal background in computer science/computer engineering and thus have not been formally taught
some of the major concepts such as TDD/unit testing, and as such, I have not implemented it in this problem due to learning time
constraints.
Application Structure:
MainProgram.java: Program starts in main() method of MainProgram class.
input1.txt, input2.txt and input3.txt are the three example
text files provided as inputs. The receipt/output can be found for
any of these files by un-commenting their respective input lines at the beginning
of MainProgram.
MainProgram then calls on ParseTxtFileInput.java and invokes the method
parseInputFile();
Once the ArrayList of Products is returned to the main program, the tax, and total
price of each item (/product) is found by invoking methods of the IndividualItemTax.java class
Product.java Creates Product objects containing the following fields:
Product Type (String)
Product Quantity (int)
Product Price (float)
Product is Imported (boolean - (if true, subject to import duty tax))
Product is Exempt (boolean - (if true, it does not have basic sales tax))
ListofExemptGoods.java: Contains a method, getExemptGoods() which returns an ArrayList of Strings containing
keywords that specify certain goods that should be exempt from basic sales tax
(such as food, books, medical products). This is kept as a separate class to make it
easy for the user to add/edit the list of exempt goods.
ParseTxtFileInput.java: ParseTxtFileInput contains a method parseInputFile(), which returns an ArrayList
of type <Product>, based on the input text file. BufferedReader(file) is used to
read the text file line by line. Each line of the text file is stored into an array
of strings split using white space delimiters. New Product objects are then created for
each line in the text file (specifying quantity, product type, price, whether or not it
is exempt from basic tax and whether or not it is imported).
IndividualItemTax.java: Constants specific to the problem are set at the top of this class, such as the basic sales
tax rate of 10%, the import duty of 5%, and the tax rounding of 0.05 (for 2 decimal places).
This class contains 3 methods:
itemTax(): calculates the tax of each item
priceWithTax(): calculates the price including tax of each item
itemOutputString(): formulates the string which will be used as output for the receipt of each item
GenerateReceipt.java: Using the receipt items string, sales tax float and total float as inputs,
the receipt is printed (following the same output indicated in the problem statement)