INFO1110 / COMP9001
INFO1110 / COMP9001 Assignment 1
Deadline: 23rd Sept 2019, 11:59pm AEST (Week 8, Monday)
Weighting: 10% of the final assessment mark
You will write a program that allows the user to manage their finances. The program will be able
to record the user’s incomes and expenses, display how their balance has changed, etc. It will also
need to be able to handle regular incomes and expenses; for example, the user will be able to
specify that they have a $100 income every Sunday, or that they spend $40.50 every Thursday.
Your program will be written in Python 3. The only modules you may import are sys and the
function.py file which you will write yourself.
You will submit your code on the assignment page on Ed. To make a submission, you will need to
press the “Mark” button. You may submit as many times as you wish without penalty - we will
mark the last submission that you make. After each submission, the marking system will
automatically check your code against the public test cases.
Please ensure you carefully follow the assignment specification. Your program output must
exactly match the output shown in the examples.
Warning: Any attempts to deceive or disrupt the marking system will result in an immediate zero
for the entire assignment. Negative marks can be assigned if you do not properly follow the
assignment specifications, or your code is unnecessarily or deliberately obfuscated.
Help and feedback
You are encouraged to ask questions about the assignment during the Helpdesk and on the Ed
discussion board; however, remember that you should not be posting any assignment code
publicly, as this would constitute academic dishonesty.
Starting the Program
The program will be given 1 extra command line argument when it is run:
$ python3 tracker.py (filename)
This (filename)will specify a file with information about regular incomes and expenses; see the
section on Regular Transactions for more information (it is recommended that you implement
this feature last).
After handling this file, the program will ask the user for their starting balance, like so:
Starting balance: $
The user will then fill out this field with their initial balance, for example:
Starting balance: $4.11
—If the starting value cannot be converted to a float, the program should print Error:
Cannot convert to float! and quit immediately
Starting balance: $cat
Error: Cannot convert to float!
—If the starting value is negative or zero, the program should print Error: Must start with
positive balance! and quit immediately.
Starting balance: $-5
Error: Must start with positive balance!
Once we have the regular payments and initial balance set up, we’re good to go! The program
should now continually ask for input, like so:
Depending on what the user enters, the program will record new transactions, show some
statistics, etc. For example, if the user types transaction …
Enter command: transaction
…then the transaction operation (explained below) should execute. The program should
continue asking for more inputs indefinitely, and execute the appropriate code each time.