共计 4781 个字符,预计需要花费 12 分钟才能阅读完成。
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 richard.thomas@uq.edu.au 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.
具体内容可加 v 沟通:WHJ980416