CSSE1001留学生讲解、辅导Programming Python讲解

- 首页 >> Python编程


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.


站长地图