The project is “Restaurant Billing System” software for monitoring and controlling the transactions in a Restaurant. Restaurant Billing System is a windows application designed to help users maintain & organize Restaurant.The system processes transactions and stores the resulting data. Reports will be generated from these data which help the manager to make appropriate business decisions for the restaurant.
This is designed especially for a restaurant which wants to attend to their customers in a very well manner. This system has the capability to take the orders from the customers. First login to the system then use the feature of Restaurant Billing Project to take the orders from the customers and store the transaction details.
Login
Home Page
Main.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane prefHeight="500.0" prefWidth="650.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/11.0.1" fx:controller="application.MainController">
<children>
<Button layoutX="266.0" layoutY="307.0" mnemonicParsing="false" onAction="#login" prefHeight="33.0" prefWidth="79.0" text="login" />
<TextField fx:id="userName" layoutX="231.0" layoutY="187.0" prefHeight="33.0" prefWidth="149.0" promptText="userName" />
<PasswordField fx:id="password" layoutX="231.0" layoutY="238.0" prefHeight="33.0" prefWidth="149.0" promptText="password" />
<Label layoutX="37.0" layoutY="41.0" prefHeight="41.0" prefWidth="303.0" text="Welcome in Restaurant Billing System" textFill="#1b6ff5">
<font>
<Font size="18.0" />
</font>
</Label>
<Button layoutX="527.0" layoutY="45.0" mnemonicParsing="false" onAction="#exit" prefHeight="33.0" prefWidth="79.0" text="Exit" textFill="RED" />
<Label fx:id="errorMessage" layoutX="231.0" layoutY="282.0" prefHeight="17.0" prefWidth="149.0" textFill="#da0909" />
</children>
</AnchorPane>
MainController.java
package application;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class MainController {
@FXML
private TextField userName;
@FXML
private TextField password;
@FXML
private Label errorMessage;
public void login(ActionEvent event) throws Exception{
if(userName.getText().equals("user") && password.getText().equals("123456")){
errorMessage.setText(null);
Stage primaryStage= new Stage();
Parent root =FXMLLoader.load(getClass().getResource("/application/Home.fxml"));
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}else{
errorMessage.setText("userName and password is wrong");
}
}
public void exit(ActionEvent event){
Platform.exit();
System.exit(0);
}
}
Home.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.Cursor?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.text.Font?>
<AnchorPane nodeOrientation="LEFT_TO_RIGHT" prefHeight="600.0" prefWidth="650.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.HomeController">
<children>
<BorderPane prefHeight="88.0" prefWidth="682.0">
<top>
<Label prefHeight="43.0" prefWidth="682.0" text=" Welcome in Restaurent Management System" BorderPane.alignment="CENTER">
<font>
<Font size="20.0" />
</font>
</Label>
</top>
<center>
<MenuBar nodeOrientation="LEFT_TO_RIGHT" prefHeight="46.0" prefWidth="672.0" BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="Home" />
<Menu mnemonicParsing="false" text="Edit">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Close">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
<BorderPane.margin>
<Insets />
</BorderPane.margin>
<cursor>
<Cursor fx:constant="TEXT" />
</cursor>
</MenuBar>
</center>
</BorderPane>
<BorderPane layoutX="-1.0" layoutY="88.0" prefHeight="44.0" prefWidth="682.0">
<top>
<Label prefHeight="42.0" prefWidth="97.0" text="Order" BorderPane.alignment="CENTER_LEFT">
<BorderPane.margin>
<Insets />
</BorderPane.margin>
<padding>
<Insets left="20.0" />
</padding>
<font>
<Font size="20.0" />
</font>
</Label>
</top>
</BorderPane>
<Label layoutX="15.0" layoutY="142.0" prefHeight="36.0" prefWidth="77.0" text="Table No." />
<Label layoutX="14.0" layoutY="184.0" prefHeight="36.0" prefWidth="51.0" text="Date" />
<Label layoutX="14.0" layoutY="220.0" prefHeight="36.0" prefWidth="51.0" text="Time" />
<Label layoutX="355.0" layoutY="145.0" prefHeight="36.0" prefWidth="61.0" text="Order Id" />
<Label layoutX="355.0" layoutY="185.0" prefHeight="36.0" prefWidth="61.0" text="Total" />
<TableView fx:id="table" layoutX="14.0" layoutY="267.0" prefHeight="200.0" prefWidth="360.0">
<columns>
<TableColumn fx:id="itemName" prefWidth="183.0" text="Item" />
<TableColumn fx:id="quantity1" prefWidth="87.0" text="Quantity" />
<TableColumn fx:id="price" prefWidth="89.0" text="Total" />
</columns>
</TableView>
<Label layoutX="403.0" layoutY="275.0" prefHeight="36.0" prefWidth="61.0" text="Add Item" />
<Label layoutX="403.0" layoutY="357.0" prefHeight="36.0" prefWidth="61.0" text="Quantity" />
<Button layoutX="459.0" layoutY="420.0" mnemonicParsing="false" onAction="#add" prefHeight="36.0" prefWidth="121.0" text="Add" />
<Button layoutX="78.0" layoutY="510.0" mnemonicParsing="false" onAction="#remove" prefHeight="36.0" prefWidth="129.0" text="Remove Item" />
<Button layoutX="377.0" layoutY="509.0" mnemonicParsing="false" prefHeight="36.0" prefWidth="121.0" text="View Details" />
<Label fx:id="tabelNo" layoutX="156.0" layoutY="145.0" prefHeight="36.0" prefWidth="77.0" />
<Label fx:id="orderId" layoutX="471.0" layoutY="145.0" prefHeight="36.0" prefWidth="77.0" />
<Label fx:id="date" layoutX="156.0" layoutY="185.0" prefHeight="36.0" prefWidth="77.0" />
<Label fx:id="time" layoutX="156.0" layoutY="220.0" prefHeight="36.0" prefWidth="77.0" />
<Label fx:id="total" layoutX="471.0" layoutY="193.0" prefHeight="36.0" prefWidth="77.0" />
<ComboBox fx:id="comboBox" layoutX="498.0" layoutY="282.0" prefHeight="36.0" prefWidth="150.0" promptText="selectName" />
<ComboBox fx:id="quantity" layoutX="498.0" layoutY="357.0" prefHeight="36.0" prefWidth="150.0" promptText="selectQuantity" />
</children>
</AnchorPane>
HomeController
package application;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
public class HomeController implements Initializable {
@FXML
public ComboBox<String> comboBox;
public ComboBox<String> quantity;
ObservableList<String> list=FXCollections.observableArrayList("paneer","paratha","veg chaumine");
ObservableList<String> quantityList=FXCollections.observableArrayList("1","2","3","4","5","6","7");
@FXML
private Label tabelNo;
@FXML
private Label orderId;
@FXML
private Label date;
@FXML
private Label time;
@FXML
private Label total;
TableView<FileData> record=new TableView<FileData>();
@FXML
private TableView<FileData> table;
@FXML
private TableColumn<FileData, String> itemName;
@FXML
private TableColumn<FileData, Integer> quantity1;
@FXML
private TableColumn<FileData, Integer> price;
@Override
public void initialize(URL location, ResourceBundle resources) {
comboBox.setItems(list);
quantity.setItems(quantityList);
LocalDate localDate=LocalDate.now();
String cdate=DateTimeFormatter.ofPattern("yyy/MM/dd").format(localDate)+"";
System.out.println(cdate);
total.setText(Integer.toString(10));
time.setText(java.time.LocalTime.now()+"");
DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
Date dateobj = new Date();
System.out.println(df.format(dateobj));
date.setText(dateobj+"");
tabelNo.setText(1+"");
orderId.setText(10+"");
}
public void add(ActionEvent event){
int quantity_no=Integer.parseInt(quantity.getValue());
String item=comboBox.getValue();
itemName.setCellValueFactory(new PropertyValueFactory<FileData, String>("itemName"));
quantity1.setCellValueFactory(new PropertyValueFactory<FileData, Integer>("quantity"));
price.setCellValueFactory(new PropertyValueFactory<FileData, Integer>("price"));
ObservableList<FileData> data = FXCollections.observableArrayList(
new FileData(item,quantity_no,120*quantity_no)
);
table.getItems().addAll(data);
int sum=0;
for(FileData record:table.getItems()){
sum=sum+record.getPrice();
}
total.setText(sum+"");
}
public void remove(ActionEvent event){
FileData data=table.getSelectionModel().getSelectedItem();
table.getItems().remove(data);
int sum=0;
for(FileData record:table.getItems()){
sum=sum+record.getPrice();
}
total.setText(sum+"");
}
}
FileData.java
FileData.java
package application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
public class FileData {
private SimpleStringProperty itemName;
private SimpleIntegerProperty quantity;
private SimpleIntegerProperty price;
public FileData() {
super();
}
public FileData(String itemName, int quantity, int price) {
super();
this.itemName = new SimpleStringProperty(itemName);
this.quantity = new SimpleIntegerProperty(quantity);
this.price = new SimpleIntegerProperty(price);
}
public String getItemName() {
return itemName.get();
}
public int getQuantity() {
return quantity.get();
}
public int getPrice() {
return price.get();
}
}
Main.java
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Parent root =FXMLLoader.load(getClass().getResource("/application/Main.fxml"));
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Comments