Project Report
P
roject Title: ASL - Restaurant Management System
Group no: 06
Group Members:
Arman Mokammel (ID: 2232450642)
Soraiyah Samantha (ID: 2231590642)
Sabrina Sabnam Farhana (ID: 2231425642)
Introduction:
Our project aims to create a software system that will be used by restaurants to manage their entire
operations. It will be an all-in-one solution.
It is capable of storing records of employees, customers, orders, etc as well as the POS terminal system for
taking orders. It has a login system with different tiers of accounts. Each tiers have their specific level of
access. The tiers are as follows:
SuperAdmin Has access to all features of the software.
Admin Does not have access to changing account and employee information.
Order – Can only access the order system. Logging into this account will directly take the user to the
order screen.
Some parts of UI is shown below:
Main UI After Login
Customer Tab For editing customer info
Order Screen For taking orders
Each tab contains a JTable for displaying info along with a custom column where there will be a green edit
button and a red delete button. There is also a button at the top right to add new entries, which will open a
JDialog to provide details for the new entry just like this:
After clicking the submit button, each entry goes through a data validation process and makes sure that the
data entered by the operator is not erroneous and goes by the rules set by the respective data fields. If
there is no error, the data field will be highlighted to green, else if will be red and display an error message
stating the exact error and also putting the cursor directly on the erroneous data field automatically.
An operator/user can change can change his own account details through the Profile button regardless of
the access level, with the exception of Order accounts. The Profile button opens up a JDialog just like this:
The Sale History button opens up a new window which is the which show all the previous orders along with
the option to view their receipts. The window looks like this:
There is a search feature that uses order number to filter out results.
The Order button opens up a new window which is the order screen which looks like this:
It consists of 5 sections:
Section A : It contains information such as branch, current order number (which is automatically
generated), and order type. It also has some buttons to logout, view keyboard shortcuts, sale history
& view suspended orders.
Section B : It is used to link a customer to the order or create and link a new customer to the
order. Clicking the view customers button will show:
Customers can also be searched using their phone numbers. After linking a customer, it will display
the info similar to this:
It shows the Customer name, id and the discount percentage or value, if there is any.
Section C : It contains the information of all selected items with its details such as ItemId, Item
Name, Price, Discounted Price, Quantity, and Total. It also provides an edit button to edit the
quantity after the item is added.
Section D : This section is divided into two parts:
o Categories: It contains a list of all the category names of items. Whenever a category is
clicked, all the items under this category is displayed in the Items section.
o Items: It contains the names of all the items which is under the category selected in the
Categories section. When an item is clicked it ask for quantity and then adds it to the
Selected Items which is Section C.
Section – E : It is also divided into two parts. The first part on the left displays the various types of
amounts such as total, discount, subtotal, amount paid and due. The second part on the right is
used to add payments to the order. The payment types are all customizable. Each payment type
can be selected and once amount is written can be added to the order using the Add payment
button. There is a special payment option called Voucher. Once selected, the operator must type
the voucher code which is set in the Voucher tab in the Main UI after login. While typing, it will show
a list of matching discount voucher codes. Once the right one is found and selected, It will provide
additional discount to the order in the form of payment.
It al
so contains three more buttons:
o Cancel To cancel the order and clear the screen
o Hold To suspend the order and add to the suspended orders list which can be access
ed
by the Suspended Orders button in Section – A.
o Finish To complete the order and generate a receipt, display it in front of the operator
and
save to a pdf file.
Ther
e are keyboard shortcuts implemented in the order system for faster interaction with the UI. The
keyboard shortcuts are as follows:
ESC for Logout
Ctrl+1 for Order History
Ctrl+2 for Suspended Orders
Alt+1 for View Customers
Alt+2 for New Customer
Alt+3 for Add Payment
Alt+4 for Finish
Alt+5 for Hold
Alt+6 for Cancel
The l
ist of packages and their respective classes are as follows:
default package
o Main.java (Arman Mokammel)
Custom Cell
o TableEditRemove_Editor.java (Arman Mokammel)
o TableEditRemove_Renderer.java (Arman Mokammel)
o TableRemove_Editor.java (Arman Mokammel)
o TableRemove_Renderer.java (Arman Mokammel)
Custom Components
o EditRemove_Pane.java (Arman Mokammel)
o ItemCategoryButton.java (Arman Mokammel)
o JButtonT1.java (Arman Mokammel)
o MenuButton.java (Arman Mokammel)
o JPanelX.java (Soraiyah Samantha)
o SearchableComboBox.java (Arman Mokammel)
o Settings_Button.java (Arman Mokammel)
o WrapLayout.java (Arman Mokammel)
Data
o Account.java (Sabrina Sabnam Farhana)
o Customer.java (Soraiyah Samantha)
o Discount_Voucher.java (Sabrina Sabnam Farhana)
o Employee.java (Soraiyah Samantha)
o MenuItem.java (Soraiyah Samantha)
o Order.java (Arman Mokammel)
o OrderController.java (Arman Mokammel)
o OrderMenuItem.java (Arman Mokammel)
o Payment.java (Sabrina Sabnam Farhana)
DataEditorUI
o AccountEditor_Dialog.java (Sabrina Sabnam Farhana)
o CustomerEditor_Dialog.java (Arman Mokammel & Soraiyah Samantha)
o EmployeeEditor_Dialog.java (Soraiyah Samantha)
o MenuItemEditor_Dialog.java (Soraiyah Samantha)
o Profile_Screen.java (Arman Mokammel)
o VoucherEditor_Dialog.java (Sabrina Sabnam Farhana)
Enum
o AccountType.java (Sabrina Sabnam Farhana)
o DiscountType.java (Sabrina Sabnam Farhana)
o InputType.java (Sabrina Sabnam Farhana)
E
xception
o InputException.java (Sabrina Sabnam Farhana)
SettingsPanels
o ItemSettings.java (Arman Mokammel)
o PaymentMethods.java (Arman Mokammel)
UI
o C
ustomerWindow.java (Arman Mokammel)
o Login_Screen.java (Arman Mokammel)
o MainWindow.java (Arman Mokammel)
o OrderSystem (Sub-Package)
Panel_A.java (Arman Mokammel)
Panel_B.java (Arman Mokammel)
Panel_C.java (Arman Mokammel)
Panel_D.java (Arman Mokammel)
Panel_E.java (Arman Mokammel)
o Order_Screen.java (Arman Mokammel)
o Panels (Sub-Package)
Account_Panel.java (Sabrina Sabnam Farhana)
Customer_Panel.java (Soraiyah Samantha)
Employee_Panel.java (Soraiyah Samantha)
Item_Panel.java (Soraiyah Samantha)
Voucher_Panel.java (Sabrina Sabnam Farhana)
Welcome_Panel.java (Arman Mokammel)
o SaleHistory_Window.java (Arman Mokammel)
o Settings_Screen.java (Arman Mokammel)
o SuspendedOrders_Screen.java (Arman Mokammel)
Utilities
o Utility.java (Arman Mokammel)
o Receipt.java (Arman Mokammel)
O
ur project uses the Java Swing framework for our UI. We have extensively used JFrame for our major
windows, JDialog for our sub-windows (to edit details etc.), JButton, JTextField, JComboBox, JTable (for
displaying information in tabular form) and JScrollPane (for making our table and contents of some panels
to be scrollable). We also made some custom components that derive from the base Swing Components.
Some of those are :
JButtonT1 Custom JButton with an image and scale effect.
SearchableComboBox Custom ComboBox with it contents searchable while typing into it.
EditRemove_Pane Custom Panel which contains edit and remove buttons for use in our tables t
o
edi
t or remove entry.
WrapLayout This layout is similar to FlowLayout but more flexible and adapts automatically to its
container size and positions elements accordingly.
We i
ncluded several files which all end with the extension “.ASL” to identify as files used by the program to
store data. The files used are as follows:
Accounts.ASLTo store data of all user/operator accounts.
Customers.ASLTo store data of all customers.
Data.ASLTo store our last order number and the total number of orders taken in the current day.
Discount-Vouchers.ASLTo store data about all the discount vouchers.
Employees.ASLTo store data of all employees.
Item-Categories.ASLTo store data of all Item Categories.
Menu-Items.ASLTo store data of all Items and linked to Categories.
Payment-Methods.ASLTo store data of all the payments methods used by the order system.
.tx
t files To store data about all orders in digital form.
.pdf files To store receipts of completed orders.
Ther
e were several difficulties that we faced during the course of our project. Most of them were because of
the Swing framework and glitches in the UI that were fixed after extensive debugging. There were also
issues regarding data input validation but we fixed it by introducing check functions and a custom exception
and using it across all our data input forms. It was extremely challenging to integrate the searchablecombox
feature and integrating it to our project. We also found it difficult to keep records of custom categories and
linking them with custom items as it required a linkedlist inside a hashmap and so on. Again, debugging
and checking values of variables at runtime solved most of our problems. The IDE played an important role
in helping us debugging efficiently. The only bugs that can be critical at times are the rounding error that
occur in the order system. This is a bug that has to be fixed before this project can be launched
Future Plan: Our project currently lacks database support and so data is not synced with other computers.
This is not ideal for any software of such scale. We intend to add this support before launching. We aim this
project to make it extremely easy for restaurants to manage their entire operations at scale and also intend
to add more features such as finance, supplies, etc to the software. This would ensure more diverse
management and will allow restaurants to keep track of more aspects of their operations centrally.
We c
onclude with thanks to all our team members who worked (maybe) tirelessly to put together the
software piece by piece. Thanks to Soraiyah Samantha for working on the data input windows and systems
and also thanks to Sabrina Sabnam Farhana for helping to design the UI across our entire software.
Thanks to Arman Mokammel too I guess 󹧗󹨁󹨃󹨄󹨅󹨂.