- May 15, 2020
CSSE1001 Supplementary Programming Exercise Create a simple banking application with a graphical user interface (GUI) for a banking system. The GUI is to be written from the perspective that the user is an employee of the bank (e.g. a teller). A bank has private customers who can have regular transaction bank accounts. The bank also has business customers who can have business bank accounts. The bank needs to keep track of customers via their name, address, phone numbers, email address and id. The bank also needs to know the registered and trading names of business customers, as well as the details of the contact person for a business customer. Private customers may have joint transaction accounts (i.e. two or more customers share access to a single transaction account.) There are three types of transaction accounts: Savings, Bonus Savings and Overdraft. All accounts maintain record of their current balance and their interest rate. The interest rate is the same for all accounts of a particular type (i.e. all savings accounts will have the same interest rate). It is possible to query an account for its current balance as well as perform debit and credit operations on the account. Accounts can also calculate interest due to the account and update their balance. Savings accounts cannot have a negative balance. When a customer debits their account a fee of $1 is charged to their account, on top of the amount debited. Bonus savings accounts also cannot have a negative balance. There is no fee for debiting a bonus savings account, but if the account is debited within a month then no interest is earnt on the account. The bonus savings account will need to manage this behaviour. There will need to be a method that resets this debit counter to zero. When calculating interest a bonus savings account will earn an extra 1%. Overdraft accounts may have a negative balance, up to a specified limit. Each customer may have a different limit. There are no fees for debiting an overdraft account. If the account balance is negative, calculate interest will deduct the calculated interest amount from the account, otherwise it will add the interest to the account. The interest rate charged when the balance is negative may be different to the interest rate paid to the account when it is in credit. A business bank account has the same rules as an overdraft account, except that there is a fee for each type of withdrawal transaction. Transferring money between accounts is charged $1. Withdrawing cash from an ATM is charged $2. Withdrawing cash from a bank teller is charged $5. Writing a cheque is charged $10. The application needs to allow the user to create both private and business customers with their appropriate details. Business customers need to have at least one contact person, who would also be a customer of the bank. When accounts are created, they need to be assigned one or more customers as the account owners. Accounts must be given an initial balance when created. The application needs to allow the user to select a customer by their id and see all their accounts. This view should show each account’s balance and overdraft limit, if the account has one. The user can select one of the accounts to either deposit money into the account or withdraw money from the account. When withdrawing money from an account the application needs to display a message to the user to inform them if they are unable to withdraw money due to having insufficient funds in the account balance. The GUI also needs to inform the user if they are overdrawing an account. All the customer and account data needs to be saved to a file between executions of the program. This should be a file in the same directory as the program executable. The data from the file should be loaded when the program starts and saved before the program exits. You may also add features to save or reload the data from a menu. The program needs to be well documented with comments that describe each class and method, and any complex logic in the code. The program is to be submitted by email to [email protected] by 6pm on Friday, October 11, 2019. Late submissions will not be marked. The submission should be a ZIP file that contains your source code and sample data file. An interview may be required as part of the assessment process. Interviews will be conducted at the Saint Lucia campus in the week of October 14 to 18. You must implement this program in Python, using the TkInter library for the GUI. Your submission must demonstrate sound knowledge of object-oriented principles and good programming practice. You need to demonstrate that you have met all the learning objectives for CSSE1001. You will not be given a mark for this exercise, only whether it is achieves a passing result or not. The program must achieve all the criteria listed below. Criteria The program correctly implements the logic described above and has very few, minor logical errors. Algorithmic logic is appropriate and not more complicated than required. Code is well structured, well commented, easy to read, and clearly expresses its logic. All functions, methods and classes have correct and informative docstrings. Classes provide a good clear structure for the design. Each class encapsulates a single conceptual idea. Dependencies between classes are as minimal as is possible. Inheritance and polymorphism have been used to provide a design structure that makes it easy to add new features to the program. Program design clearly separates the underlying logic from the user interface (e.g. using an MVC design structure). GUI components from the TkInter library are used appropriately to provide the user interface.