You're definitely on the right track.
Here is how I would break the project down initially:
First, you need to define a generic bankAccount object. This definition should include both how you describe the object (its attributes) and how the object acts (its methods).
Lets start with the list of attributes you've provided and I'll give you my opinion.
These are the variables that I would use in the object:
balance -- I've renamed this because you are only interested in the current balance. Previous balances will be stored in your history file.
I would not define curDate in the object because the date and the object are independent. Any time you need the date, you can pull it from the system.
Similarly, these two (amtDeposit, amtWithdrawl) are not needed. They are specific to individual transactions and should be recorded as such.
Additional variables / attributes:
ownerName - string to hold the name of the account holder
otherUsers - an array of strings that hold the names of other people with access.
You could create a User object instead, with all the user info (address, phone number, age, accounts to which they have access) but this may add complexity that you don't need.
setXXXX ... these are generic get and set methods. They return the value of the current balance, ownerName, etc.. Every mutable attribute needs get and set methods to ensure that the object is always responsible for its own maintenance.
All the things that make a chequing account different from a saving account are defined in the inherited classes. So a savings account will have an interest rate while a chequing account may override the setBalance() method to include a date (so you can write post-dated cheques and have your account updated appropriately on the day the cheque is to be cashed).
I hope that helps .. I feel I've been rambling a bit.