Page 1 & 2 describe the problem. Pages 3-5 is an example of what is being asked for
Prepare a design for a Java program that would solve a significant business problem. Three business case examples are provided with the assignment (See Page 3), but you are strongly encouraged to use your own real-world business case. To limit the problem to a reasonable scope, assume the system vwill be used in a small business environment. For full points, your solution must include all five of these sections. Please clearly identify the sectionsin your document: (1) Problem Description: Describe the salient features and main components of the business problem. Document the sources you used to obtain the problem examples or business case information. (2) Interpretation: Does the business problem make sense? Did you notice any unmentioned requirements that should be addressed by a solution? If you have experience relating to the business problem, can you identify anything that should be resolved differently than stated in the business case? (3) Classes: Detail the specific classes that would be required for the problem solution. Use the concepts from Chapter 8's first two sections to determine what classes are best suited to the problem-as noted in Chapter 8, classes typically are related to specific "nouns" in the problem description. (4) Class Methods: For each of the classes from section (2), describe in detail (but do not implement) the methods that would be required in each class. Explain the purpose and the action for each method. Remember that methods are typically "verbs" or "actions" related to the problem and its solution. (5) Summary: Explain why your classes and methods completely solve the business problem outlined in section 1 and discuss whether your assumptions and alternatives are suitable, appropriate and completely solve the problem. Problem Statement A small bank has been chartered and needs a system to maintain its list of around 100 customers and the customer's bank accounts (each customer typically has a checking account and a savings account, but can have additional checking and/or savings accounts). Accounts can be checking (no interest is paid), or savings (interest is paid monthly). The bank's tellers need to be able to access a customer's list of accounts, and then do operations including deposit, withdraw, and check balances The bank's manager needs to be able to apply interest monthly to each savings account. The bank's manager also needs to be able to get the total balance of the accounts, to find the customers whose accounts have the highest balances to be able to send the customer special offers to thank them for their business, and find accounts with balances under $100 to apply a monthly service charge. Interpretation The bank's business case apparently addresses only deposit accounts (checking and savings). Banks also make loans, and a full solution would address making loans and tracking loan payments. However, that would significantly expand the scope of the problem and is not addressed in this design. Classes Likely classes needed to implement this solution BankAccount stuff about an account (more details required) BankAccounts- maintain a collection (probably an ArrayList) of accounts Bank-to contain information about all the accounts and customers Customer - stuff about a customer (more details required) Customers - maintain a collection (probably an ArrayLists) of customers BankTeller- user interface for the bank tellers (access customer's accounts deposit and withdraw funds) BankManager- user interface for the bank manager - find accounts with large balances, apply interest to savings accounts, and apply monthly service charge to accounts under the $100 minimum balance Class Methods BankAccount Deposit-add funds Withdraw-remove funds from the account, or throw an InsufficientFundsException if the account does not have enough money. getAccountNumber-get the account number. getBalance-get the account's balance. getCustomer-get the customer to which the account belongs addinterest-for savings account, apply the specified interest rate. applySeviceCharge-for accounts with balance under $100, apply a service charge. BankAccounts Find- find an account by account number. addAccount- add an account to the collection. removeAccount - remove an account from the collection. Bank findAccounts find the accounts for a customer readAccounts- read the account information from a file and store in the BankAccounts collection. readCustomers-read the customer information from a file and store in the Customers collection. saveAccounts-save the account information to a file. saveCustomers - save the customer information to a file Customer getName get the customer's name. getAddress get the customer's address. setName-set the customer's name. setAddress- set the customer's address Customers FindByCustomerNumber-find a customer by number. FindByCustomerName - find a customer by name. addCustomer-add an account to the collection. removeCustomer - remove an account from the collection. BankTeller teller-menu for the teller to access a customer and the customer's accounts. Provides access to create a new customer, create a new account for a customer, deposit or withdraw funds for an account, and get the customer's account balances. BankManager manager-menu for the manager to find accounts with large balances, apply interest to savings accounts, and apply monthly service charge to accounts under the $100 minimum balance BankProgram main - login the user and. depending on the user's type, run the BankTeller's teller method for teller users, or the BankManager manager method for manager users. InsufficientFundException getMessage -to get the description for the exception. printstackTrace-to print where the exception occurred in the program. Summary The Bank. Customer, Customers, BankAccount, and BankAccounts classes will provide the necessary functionality to operate the bank. The BankTeller and BankManager classes will provide the different functions needed for the two different types of users identified in the problem statement. The BankProgram class will provide a way to run the program and access the accounts depending on the type of user. This design does not keep a list of the transactions, though. That is something that would be necessary in an actual bank management program to enable auditing Finally, as noted in the Interpretation section, a full bank management system would also manage loan accounts