Prepare a design for a Java program that would solve a significant business prob
ID: 3788274 • Letter: P
Question
Prepare a design for a Java program that would solve a significant business problem. To limit the problem to a reasonable scope, assume the system will be used in a small business environment (less than 50 employees). I have provided simple business case examples but you are welcome to use a real-world business case as a basis for your evaluation.
Research and evaluate the essential requirements and usage of such a system, and create a design for a Java program that would solve the problem. Roughly three or four pages are common for this design document.
For full points, your solution must include all five of these sections. Please clearly identify the sections in your document:
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.
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?
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. For example, our accounts receivable programs used in homeworks have a CustomerAccount class, which is an obvious noun relating to a customer account in accounts receivable.
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. For example, our CustomerAccount class contains the methods “purchase”, “payment”, and “getAccountBalance”.
Summary: Explain why your classes and methods completely solve the business problem outlined in step 1, and discuss whether your assumptions and alternatives are suitable, appropriate and completely solve the problem.
Your assignment will be graded using the College of Business’s Critical Thinking Rubric involving these four aspects:
1. Problem Identification: Correctness of description of problem & completeness of context surrounding the problem
2. Information Collection and Interpretation: Completeness of relevant information & credibility of information
3. Solution Development: Information is correctly interpreted & analyzed, assumptions are stated, and alternative solutions are discussed
4. Recommendation: The recommendation, justification, and limitations are clearly discussed and summarized.
Here's the business case sample:
Hotel Management Hotel is a small hotel that needs to replace their paper property management record keeping system and track their occupancy rate. In the past, their paper-based system has proven unsatisfactory due to its failure to track reservations, and it has been difficult for staff to correctly monitor occupancy and prepare rooms for incoming customers. The hotel has four types of rooms: 20 double queen-bed rooms at $129.99/night, 20 single king-bed rooms at $139.99/night, and 10 kitchenette suite rooms at $159.99/night, and 2 luxury suite rooms at $199.99/night. Customers can reserve rooms for one or more night’s stays. The system should be able to find whether a required type of room is available for all the required nights, and if so, reserve the room for the customer for the requested period of time. When a customer checks out of his/her room, the system must add any incidental charges (such as guest bar charges or pay-per-view video charges) and provide a bill showing the nights stayed, incidental charges, sales & lodging taxes, and the total cost. The system needs to provide a daily report showing the occupancy rate (percentage of number of rooms occupied), the amount earned for that day, and the rooms that need to be made ready for occupancy the next day.
Sample Design:
(Please note: This is intended to an example of the format that is useful for this document. The problem description, description of each class, and method descriptions are terse – your paper should more fully describe each section.)
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.
BankProgram – main method – allows a teller or manager to login and use the program
InsufficientFundsException – to report an attempt to withdraw too much money from an account
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.
ddAccount – 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.
Explanation / Answer
Problem Statement:
A Hotel has been chartered and needs a system to maintain rooms and their occupancy with customers . The customers information , Payments record. The hotel manager needs to be able to access the information and provide a daily report .
Interpretation :
The Hotel business case addresses the customers check in and check out, the bills they pay , and the occupancy rate of each day.
Classes :
Rooms : The types and rates of room are described
Reservation : The Reservation class provides the information of room reservation
Customer : The class customer provides all the details about him.
Payment : The payment class maintains the information about all the payments made by customers
TotalCharges :The class TotalCharges provides all the information about the hotel bills
Bill : The class bill gives the information about the charge payed by the customer.
DailyReport : The class DailyReport gives all the details about the hotel management of the day.
HotelManager : HotelManager class maintains all the room rates and their availibility.
HotelProgram :The main method maintains the manager login and use of program.
InsufficientInformationException : Gives the error report if any information provided is missing or incorrect
Class Methods :
Customer :
Name- Name of customer , Address - Permanent Address of the customer , Contact - Contact number , Gender - Gender of customer , DOB- Date of birth , Nationality - Nationality of the customer.
Rooms :
Type - The types of rooms available with the hotel , Rates - The rate of room for each night based on its type , Status - Occupied or not occupied status of room, UnitNo- The number of each type of rooms available , RoomInfo- Updates the room information , CheckAvailibity - Checks for room availibilty .
Reservation :
ReservationId : A particular id for each room reservation , CheckIn - Date of check in by customer , CheckOut- Date of check out by customer , CancelResevation - Cancels a reservation by customer , UnitNo- The number of each type of rooms reserved by customer.
Payment :
Date - Date of payment , Amount - Amount of money payed by customer , PayeeName - Name of the person who pays the bill , Mode - Mode of payment .
TotalCharges :
IncidentalCharges - The charges like guest bar charges , SalesLodgingTax - Tax on sales and lodging , TotalCost - Total cost to be payed by the customer.
Bill :
DaysofStay - The number of nights stayed by customer , TotalCost - TotaCost to be payed by the customer.
DailyReport :
OccupancyRate - The present rate of occupancy at the hotel , AmountEarned - The amount earned by the hotel for the day , NumberofUnoccupiedRooms - The method gives the information about the number of rooms to be made ready to next day , Date - Date of the present day
HotelManager :
MaintainAvailibility : Maintains the rooms availibilty record , MaintainRoomRate - Maintains the rates for each of the rooms .
HotelProgram :
main - Login to the system and Maintains the Hotels program and runs the HotelManager ,
InsufficientInformationException:
getMessage – to get the description for the exception.
printStackTrace – to print where the exception occurred in the program.
Summary :
The Rooms, Customer , Payment , TotalCharges, Bills, Reservation classes provide necessary functionality to program ,The HotelManager, DailyReport classes provide functions given by problem statement . The HotelProgram class will provide a way to run the program and access the Rooms depending on the Customer .