You are required to design and implement online food delivery system by using Java RMI technology. This includes writing both the server and the client program(s). Client programs can use either a command line interface or a graphical user interface. The program must have the following characteristics or features:
1) A new user must be able to register a new account to the online food delivery system. The user must be able to register by using his/her username and password. If the username exists in the system, the user will be notified to enter a different username.
2) After the user has registered to the online food delivery system, the user should be permitted to log in with username and password he/she registered earlier.
3) When log in, the user should be able deposit money (add money to his/her account) and the online food delivery system should update the cash balance of the user. At any point of time, the user should as well be able to inquire current balance of his/her account from online food delivery system.
4) The user should be able to request a list of available food menu from online food delivery system. The system should return a list of available food menu to the user as following:
a) Order: Pizza
Total: RM48 2.
b) Order: Satay
(You may make your own illustrations of the menu list above. To store the food menu detail, you might use Hash Table or any other Java collection or external database as you preferred).
5) Based on a list food menu given, the user must be able to purchase food by choosing from the list above. Upon confirmation, the user cash balance from his/her account must be deducted from the food price. It must not be possible to purchase the food if the cash is not enough from the user account. If the server crashes during purchasing transaction, what would happen? How would your RMI program handle this problem?
6) Finally, given two users in the system ex: usernames A and B, User A should be able to transfer cash voucher from his/her account to other user's B account.
7) Implement secure communication between session with the user and the food online system
(i) When user purchases food and
(ii) When the user performs cash transfer
8) What happen if multiple users use the online food system at the same time? What if/she purchases the same food item from the online system at the same time? What issues you might face? How can we solve the issues? Implement your program to solve the potential issues. Point out exactly in the report of the code segment that you have written to solve the issues and please provide detailed explanations.